Hi Jack, Kyle,
This is moving at a glacial pace, but I'd love to see this merged --- there's clearly a lot of interest in this from the community if not within this mailing list (ob-async which is more limited has 250 stars on GitHub). Jack, do you think you might be able to make these tweaks so I can implore the maintainers to "just merge this"? :P Kyle, if Jack doesn't get back to us do you think we could just make those changes and merge the patch as-is at some point? Or merge it and then add a commit making these fixes? -- Timothy. Kyle Meyer <k...@kyleam.com> writes: > Jack Kamm writes: > >> I also have an async implementation for ob-R that's ready after this is >> merged :) > > It's a bit disappointing that only one babel user has tested this out > and provided feedback, but please feel free to merge this whenever you > think it's ready. > > I'm very happy to leave the babel details to you, but here are minor > comments from a quick read-through looking for things that will likely > be changed/cleaned up (either in the Org repo or the Emacs repo) if left > as is. > >> Subject: [PATCH] ob-comint.el, ob-python.el: Async session evaluation > [...] >> +;; Async evaluation > > For a heading comment, please use at least three semicolons. > > (info "(elisp)Comment Tips") > >> + >> +(defvar-local org-babel-comint-async-indicator nil >> + "Regular expression that `org-babel-comint-async-filter' scans for. >> +It should have 2 parenthesized expressions, >> +e.g. \"org_babel_async_\\(start\\|end\\|file\\)_\\(.*\\)\". The >> +first parenthesized expression determines whether the token is >> +delimiting a result block, or whether the result is in a file. If >> +delimiting a block, the second expression gives a UUID for the >> +location to insert the result. Otherwise, the result is in a tmp >> +file, and the second expression gives the file name.") >> + >> +(defvar-local org-babel-comint-async-buffers nil >> + "List of org-mode buffers to check for Babel async output results.") > > s/org-mode/Org mode/ here and other spots, following > doc/Documentation_Standards.org and tree-wide cleanups like de24694f0 > (Turn org-mode into Org or Org mode, 2016-08-23). > > Also, you're missing two spaces between some sentences. > >> +(defmacro org-babel-comint-async-delete-dangling-and-eval >> + (session-buffer &rest body) >> + "Remove dangling text in SESSION-BUFFER and evaluate BODY. >> +This is analogous to `org-babel-comint-with-output', but meant >> +for asynchronous output, and much shorter because inserting the >> +result is delegated to `org-babel-comint-async-filter'." >> + (declare (indent 1)) >> + `(org-babel-comint-in-buffer ,session-buffer >> + (goto-char (process-mark (get-buffer-process (current-buffer)))) >> + (delete-region (point) (point-max)) >> + ,@body)) >> +(def-edebug-spec org-babel-comint-async-with-output (sexp body)) > > Please move this edebug spec to the `declare' form (see 7dd1cfb6c, > 2021-02-12). > >> diff --git a/testing/lisp/test-ob-python.el b/testing/lisp/test-ob-python.el >> index a2cc7b79c..0267678cd 100644 >> --- a/testing/lisp/test-ob-python.el >> +++ b/testing/lisp/test-ob-python.el >> @@ -207,6 +207,67 @@ (ert-deftest test-ob-python/session-value-sleep () >> #+end_src" >> (org-babel-execute-src-block))))) >> >> +(ert-deftest test-ob-python/async-simple-session-output () >> + (let ((org-babel-temporary-directory "/tmp") > > Prefer `temporary-file-directory' to hard coding "/tmp". > > Thanks.