* [BABEL] Seemless editing of Babel Blocks @ 2010-07-20 12:10 Jambunathan K 2010-07-20 22:58 ` Eric Schulte 0 siblings, 1 reply; 14+ messages in thread From: Jambunathan K @ 2010-07-20 12:10 UTC (permalink / raw) To: emacs-orgmode I am presenting a code snippet that would make editing of babel blocks quite seemless. The editor parallels (inline!) editing of table blocks. A suitable variation thereof could be considered for inclusion in the core distribution. Few other suggestions: 1. While invoking babel editor, offer babel guard lines as comment blocks in the native mode. 2. On saving code blocks, do the reverse. For example, in case of emacs-lisp #+begin_src emacs_lisp: (message "Hello World") #+end_src could be offered as: ;; begin_src emacs_lisp: (message "Hello World") ;; end_src One could then add say a ':tangle ...' directive and have it persisted as #+begin_src emacs_lisp: :tangle HelloWorld.el (message "Hello World") #+end_src 2. Is it possible to do org-edit-src-exit with more 'natural' keybinding like C-x C-w or C-x C-s. Furthermore, C-x C-w could fix up '#+srcname: ' directive as well. ;; CODE SNIPPET ;; make org-cycle look for babel blocks ((org-at-babel-p) (call-interactively 'org-edit-special)) ;; A semicolon followed by <TAB> would invoke the babel editor. ;; A tab within the babel block would invoke the babel editor. (defconst org-babel-invoke-editor-regexp "^[ \t]*\\(;\\)" "Detect beginning of babel src code") (defun org-at-babel-p () "" (beginning-of-line 1) (cond ((looking-at org-babel-invoke-editor-regexp) (unless (org-babel-where-is-src-block-head) (insert "#+begin_src emacs-lisp :\n\n") (insert "#+end_src") (kill-line) (forward-line -1) t) ) ((org-babel-where-is-src-block-head) t) (t nil) ) ) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] Seemless editing of Babel Blocks 2010-07-20 12:10 [BABEL] Seemless editing of Babel Blocks Jambunathan K @ 2010-07-20 22:58 ` Eric Schulte 2010-08-16 8:38 ` Jambunathan K 0 siblings, 1 reply; 14+ messages in thread From: Eric Schulte @ 2010-07-20 22:58 UTC (permalink / raw) To: Jambunathan K; +Cc: emacs-orgmode Hi Jambunathan, I like the idea of displaying the begin/end_src lines as commented sections in the org-edit-special code buffer, and then potentially using them to change the values of the begin/end_src lines in the original org-mode buffer after exiting the src-edit buffer. It would be very cool to be able to edit header arguments while editing source code. It may be hard to implement, but could be worth the effort. I'm afraid I don't see how the code snippet you pasted below could be applied, could you reformat it as a patch to Org-mode with usage instructions? As for different key-bindings for exiting src edit buffers, you could certainly setup your own in your personal configuration using the org-src-mode-hook. Thanks for the neat idea -- Eric Jambunathan K <kjambunathan@gmail.com> writes: > I am presenting a code snippet that would make editing of babel blocks > quite seemless. The editor parallels (inline!) editing of table > blocks. A suitable variation thereof could be considered for inclusion > in the core distribution. > > Few other suggestions: > 1. While invoking babel editor, offer babel guard lines as comment > blocks in the native mode. > > 2. On saving code blocks, do the reverse. > > For example, in case of emacs-lisp > > #+begin_src emacs_lisp: > (message "Hello World") > #+end_src > > could be offered as: > > ;; begin_src emacs_lisp: > (message "Hello World") > ;; end_src > > One could then add say a ':tangle ...' directive and have it persisted > as > > #+begin_src emacs_lisp: :tangle HelloWorld.el > (message "Hello World") > #+end_src > > 2. Is it possible to do org-edit-src-exit with more 'natural' > keybinding like C-x C-w or C-x C-s. Furthermore, C-x C-w could fix > up '#+srcname: ' directive as well. > > > ;; CODE SNIPPET > > ;; make org-cycle look for babel blocks > ((org-at-babel-p) > (call-interactively 'org-edit-special)) > > ;; A semicolon followed by <TAB> would invoke the babel editor. > ;; A tab within the babel block would invoke the babel editor. > > (defconst org-babel-invoke-editor-regexp "^[ \t]*\\(;\\)" > "Detect beginning of babel src code") > > (defun org-at-babel-p () > "" > (beginning-of-line 1) > > (cond > ((looking-at org-babel-invoke-editor-regexp) > (unless (org-babel-where-is-src-block-head) > (insert "#+begin_src emacs-lisp :\n\n") > > (insert "#+end_src") > (kill-line) > (forward-line -1) > t) > ) > > ((org-babel-where-is-src-block-head) t) > (t nil) > ) > ) > I have no idea how/where the above could be applied. > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] Seemless editing of Babel Blocks 2010-07-20 22:58 ` Eric Schulte @ 2010-08-16 8:38 ` Jambunathan K 2010-08-16 9:20 ` [BABEL] [PROPOSAL] " Jambunathan K 0 siblings, 1 reply; 14+ messages in thread From: Jambunathan K @ 2010-08-16 8:38 UTC (permalink / raw) To: Eric Schulte; +Cc: emacs-orgmode Eric Apologize for duplicate post. Ccing the mailing list this time. Eric> Hi Jambunathan, I like the idea of displaying the Eric> begin/end_src lines as commented sections in the Eric> org-edit-special code buffer, and then potentially using them Eric> to change the values of the begin/end_src lines in the Eric> original org-mode buffer after exiting the src-edit buffer. Eric> It would be very cool to be able to edit header arguments Eric> while editing source code. It may be hard to implement, but Eric> could be worth the effort. Based on my experimentation, offering of #+begin_src and #+end_src lines (or for that matter 'surrounding context' - leading and trailing) is not problematic as such. What really gets in the way (in the sense of being irksome to implement) is the preserving and restoring of indentations while moving between the org and org-src buffers. I am giving up my efforts on this proposal. 1 Original Proposal ~~~~~~~~~~~~~~~~~~~~ What is this in org-buffer (defun hello () "" (message "Hello World") ) gets offered as ;; #+begin_src emacs-lisp (defun hello () "" (message "Hello World") ) ;; #+end_src in org-src buffer. All that babel has to do is to run 'comment-region' and 'uncomment-region' on leading and trailing contexts before moving into and out-of org-src buffers. (un)comment-region makes sure that this could be done in a target language agnostic way. Furthermore, the way emacs fills out comment blocks (while editing them) would retain the org-like structure of the surrounding context. Jambunathan K. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-08-16 8:38 ` Jambunathan K @ 2010-08-16 9:20 ` Jambunathan K 2010-09-02 23:41 ` Dan Davison 0 siblings, 1 reply; 14+ messages in thread From: Jambunathan K @ 2010-08-16 9:20 UTC (permalink / raw) To: Eric Schulte; +Cc: emacs-orgmode 1 Preface ~~~~~~~~~~ Continuing on my earlier note "Offer surrounding context in org-src buffers", I have another idea. The idea is a bit fanciful and questionable. I also have a prototype code that is quite gross. (Don't say that I haven't warned) 2 Motivation ~~~~~~~~~~~~~ The primary motivation is that I find transitioning from and to an org-src buffer a bit of a psychological drag. It would be good if I don't leave the current buffer as such and still be able to edit babel blocks. 3 Setting the context ~~~~~~~~~~~~~~~~~~~~~~ I believe when I am doing literate programming, I am likely to work in phases. Note: I haven't done literate programming in even lighter sense of the word. My understanding down below could be naive and may not be as nuanced as that of a practitioner. 3.1 Phase-1 ============ Fix up the overall design/structure. Here I am likely to work with a text file (orgmode buffer in our case). 3.2 Phase-2: ============= Churn out code by filling out top-level blocks identified in Phase-1. Here I am likely to work with a code file (org-src buffer in our case). 3.3 Phase-3 ============ Compile, Test and Fix. Here I am likely to switch quite frequently between the org and org-src blocks. I believe good amount of time would be spent in Phase-3. It is in this phase that offering of 'surrounding context' becomes crucial in org-src buffers. (Here is an item to the WISH list) 4 Crux of the idea ~~~~~~~~~~~~~~~~~~~ Think of an org buffer as a chain of alternating src and non-src blocks. org-buffer = [non-src, src]+ More specifically, when there is a mix of say python and emacs-lisp blocks and if I have my emacs-lisp goggles on, I could subsume python blocks as non-src blocks. Offer a command say 'org-to-org-src-view' which when invoked switches the org-mode buffer to target language mode and comments out all the non-src blocks. Offer a reverse command 'org-src-to-org-view' that switches the buffer to org-mode and uncomments the non-src blocks. This way I never leave the buffer and I don't have to contend anymore with pop-ups (and importantly syncing of parent and daughter buffers). Yet I have 'all' the contexts available for my viewing and editing pleasure. 5 Gross code ~~~~~~~~~~~~~ diff --git a/lisp/ob.el b/lisp/ob.el index b5b9d8f..613139e 100644 --- a/lisp/ob.el +++ b/lisp/ob.el @@ -662,19 +662,52 @@ portions of results lines." (lambda () (org-add-hook 'change-major-mode-hook 'org-babel-show-result-all 'append 'local))) -(defmacro org-babel-map-src-blocks (file &rest body) + +(defun org-to-org-src-view () + "" + (interactive) + + (emacs-lisp-mode) + (org-babel-map-src-blocks (buffer-file-name) + ( + (comment-region beg-org end-org) + ) + ) + ) + +(defmacro org-babel-map-src-blocks (file body1 &rest body) "Evaluate BODY forms on each source-block in FILE." (declare (indent 1)) `(let ((visited-p (get-file-buffer (expand-file-name ,file))) - to-be-removed) + to-be-removed + (beg-org (make-marker)) + (end-org (make-marker)) + (beg-babel (make-marker)) + (end-babel (make-marker)) + ) + (save-window-excursion (find-file ,file) (setq to-be-removed (current-buffer)) + + (move-marker end-babel (point-min)) (goto-char (point-min)) + (while (re-search-forward org-babel-src-block-regexp nil t) - (goto-char (match-beginning 0)) - (save-match-data ,@body) - (goto-char (match-end 0)))) + + (move-marker beg-org end-babel) + (move-marker end-org (match-beginning 0)) + (move-marker beg-babel (match-beginning 0)) + (move-marker end-babel (match-end 0)) + + (goto-char beg-org) + ,@body1 + + (goto-char beg-babel) + ,@body + + + (goto-char end-babel))) (unless visited-p (kill-buffer to-be-removed)))) 6 Illustration ~~~~~~~~~~~~~~~ For the sake of illustration, consider an org-mode buffer like this. * Heading0 ** Heading00 Print Heading00. #+begin_src emacs-lisp (message "Heading00") #+end_src ** Heading01 Print Heading01. #+begin_src emacs-lisp (message "Heading01") #+end_src org-to-org-src-view on this buffer puts it in emacs-lisp mode with the following content. ;; * Heading0 ;; ** Heading00 ;; Print Heading00. #+begin_src emacs-lisp (message "Heading00") #+end_src ;; ** Heading01 ;; Print Heading01. #+begin_src emacs-lisp (message "Heading01") #+end_src For the sake of brevity, I have left out the commenting of meta-lines in the prototype code. Thanks for your consideration, Jambunathan K. ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-08-16 9:20 ` [BABEL] [PROPOSAL] " Jambunathan K @ 2010-09-02 23:41 ` Dan Davison 2010-09-02 23:50 ` Erik Iverson ` (2 more replies) 0 siblings, 3 replies; 14+ messages in thread From: Dan Davison @ 2010-09-02 23:41 UTC (permalink / raw) To: Jambunathan K; +Cc: emacs-orgmode Hi Jambunathan, > The primary motivation is that I find transitioning from and to an > org-src buffer a bit of a psychological drag. It would be good if I > don't leave the current buffer as such and still be able to edit > babel blocks. [...] > 4 Crux of the idea > ~~~~~~~~~~~~~~~~~~~ [...] > Offer a command say 'org-to-org-src-view' which when invoked > switches the org-mode buffer to target language mode and comments > out all the non-src blocks. > > Offer a reverse command 'org-src-to-org-view' that switches the > buffer to org-mode and uncomments the non-src blocks. My vote is that this proposal is too drastic. > This way I never leave the buffer and I don't have to contend > anymore with pop-ups > Have you investigated the different settings of the `org-src-window-setup' variable? > (and importantly syncing of parent and daughter > buffers). Could you expand on that a little bit? What syncing problems are you having? > Yet I have 'all' the contexts available for my viewing and > editing pleasure. There have been some recent changes with the aim of making code blocks more pleasant to use in Org, such as fontification and making TAB and other major-mode commands available in the Org buffer (with a current master branch, see the variable `org-src-tab-acts-natively' and `org-babel-do-key-sequence-in-edit-buffer' which is bound to key bindings C-c C-v x and C-c C-v C-x) If you really want to use language major mode commands without leaving the Org buffer, I suggest investigating Lennart Borgman's nxhtml package[1]. This features a function `org-mumamo-mode' which automatically switches Org code blocks into native major modes. I have encountered one bug whch makes R code blocks hard to use, but the author is responding to them at the bug tracker[2], so I think we should help out by reporting any bugs there. Here's my config for nxhtml/mumamo (the third line is just personal taste): --8<---------------cut here---------------start------------->8--- (load "/usr/local/src/emacs/nxhtml/autostart.el") (require 'mumamo) (add-hook 'org-mumamo-mode-hook (lambda () (mumamo-no-chunk-coloring +1))) --8<---------------cut here---------------end--------------->8--- Dan Footnotes: [1] http://www.emacswiki.org/emacs/NxhtmlMode [2] https://bugs.launchpad.net/nxhtml > 5 Gross code > ~~~~~~~~~~~~~ > > > diff --git a/lisp/ob.el b/lisp/ob.el > index b5b9d8f..613139e 100644 > --- a/lisp/ob.el > +++ b/lisp/ob.el > @@ -662,19 +662,52 @@ portions of results lines." > (lambda () (org-add-hook 'change-major-mode-hook > 'org-babel-show-result-all 'append 'local))) > > -(defmacro org-babel-map-src-blocks (file &rest body) > + > +(defun org-to-org-src-view () > + "" > + (interactive) > + > + (emacs-lisp-mode) > + (org-babel-map-src-blocks (buffer-file-name) > + ( > + (comment-region beg-org end-org) > + ) > + ) > + ) > + > +(defmacro org-babel-map-src-blocks (file body1 &rest body) > "Evaluate BODY forms on each source-block in FILE." > (declare (indent 1)) > `(let ((visited-p (get-file-buffer (expand-file-name ,file))) > - to-be-removed) > + to-be-removed > + (beg-org (make-marker)) > + (end-org (make-marker)) > + (beg-babel (make-marker)) > + (end-babel (make-marker)) > + ) > + > (save-window-excursion > (find-file ,file) > (setq to-be-removed (current-buffer)) > + > + (move-marker end-babel (point-min)) > (goto-char (point-min)) > + > (while (re-search-forward org-babel-src-block-regexp nil t) > - (goto-char (match-beginning 0)) > - (save-match-data ,@body) > - (goto-char (match-end 0)))) > + > + (move-marker beg-org end-babel) > + (move-marker end-org (match-beginning 0)) > + (move-marker beg-babel (match-beginning 0)) > + (move-marker end-babel (match-end 0)) > + > + (goto-char beg-org) > + ,@body1 > + > + (goto-char beg-babel) > + ,@body > + > + > + (goto-char end-babel))) > (unless visited-p > (kill-buffer to-be-removed)))) > > 6 Illustration > ~~~~~~~~~~~~~~~ > > For the sake of illustration, consider an org-mode buffer like this. > > > * Heading0 > ** Heading00 > Print Heading00. > > #+begin_src emacs-lisp > (message "Heading00") > #+end_src > > ** Heading01 > > Print Heading01. > #+begin_src emacs-lisp > (message "Heading01") > #+end_src > > org-to-org-src-view on this buffer puts it in emacs-lisp mode with > the following content. > > ;; * Heading0 > ;; ** Heading00 > ;; Print Heading00. > > #+begin_src emacs-lisp > (message "Heading00") > #+end_src > > ;; ** Heading01 > > ;; Print Heading01. > #+begin_src emacs-lisp > (message "Heading01") > #+end_src > > For the sake of brevity, I have left out the commenting of > meta-lines in the prototype code. > > Thanks for your consideration, > Jambunathan K. > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-02 23:41 ` Dan Davison @ 2010-09-02 23:50 ` Erik Iverson 2010-09-03 19:08 ` Tom Short 2010-09-04 8:58 ` Jambunathan K 2 siblings, 0 replies; 14+ messages in thread From: Erik Iverson @ 2010-09-02 23:50 UTC (permalink / raw) To: Dan Davison; +Cc: emacs-orgmode, Jambunathan K > > If you really want to use language major mode commands without leaving > the Org buffer, I suggest investigating Lennart Borgman's nxhtml > package[1]. This features a function `org-mumamo-mode' which > automatically switches Org code blocks into native major modes. I have > encountered one bug whch makes R code blocks hard to use, but the author > is responding to them at the bug tracker[2], I too found nxhtml locking up when using R. It that gets fixed, it could be a nice package to use with org-mode when editing source code. However, I think with the improvements just committed today that you mention, that source code editing got a whole lot better without switching to the indirect buffer using C-c '. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-02 23:41 ` Dan Davison 2010-09-02 23:50 ` Erik Iverson @ 2010-09-03 19:08 ` Tom Short 2010-09-03 20:45 ` Dan Davison 2010-09-04 8:58 ` Jambunathan K 2 siblings, 1 reply; 14+ messages in thread From: Tom Short @ 2010-09-03 19:08 UTC (permalink / raw) To: Dan Davison; +Cc: emacs-orgmode On Thu, Sep 2, 2010 at 7:41 PM, Dan Davison <davison@stats.ox.ac.uk> wrote: > There have been some recent changes with the aim of making code blocks > more pleasant to use in Org, such as fontification and making TAB and > other major-mode commands available in the Org buffer (with a current > master branch, see the variable `org-src-tab-acts-natively' and > `org-babel-do-key-sequence-in-edit-buffer' which is bound to key > bindings C-c C-v x and C-c C-v C-x) I really like the fontification and the tab-acts-natively. Would it be hard to extend that to a few more keys? Here's a first try for a nice key to have in R source blocks ("_"): (add-hook 'org-mode-hook (lambda () (define-key org-mode-map "_" '(lambda () (interactive) (org-babel-do-key-sequence-in-edit-buffer (kbd "_"))))) That works in R (and other) blocks, but doesn't work outside that. Any hints to get me a little further? - Tom ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-03 19:08 ` Tom Short @ 2010-09-03 20:45 ` Dan Davison 0 siblings, 0 replies; 14+ messages in thread From: Dan Davison @ 2010-09-03 20:45 UTC (permalink / raw) To: Tom Short; +Cc: emacs-orgmode Tom Short <tshort.epri@gmail.com> writes: > On Thu, Sep 2, 2010 at 7:41 PM, Dan Davison <davison@stats.ox.ac.uk> wrote: >> There have been some recent changes with the aim of making code blocks >> more pleasant to use in Org, such as fontification and making TAB and >> other major-mode commands available in the Org buffer (with a current >> master branch, see the variable `org-src-tab-acts-natively' and >> `org-babel-do-key-sequence-in-edit-buffer' which is bound to key >> bindings C-c C-v x and C-c C-v C-x) > > I really like the fontification and the tab-acts-natively. Would it be > hard to extend > that to a few more keys? Here's a first try for a nice key to have in > R source blocks > ("_"): > > (add-hook 'org-mode-hook > (lambda () > (define-key org-mode-map "_" > '(lambda () (interactive) > (org-babel-do-key-sequence-in-edit-buffer (kbd "_"))))) > > That works in R (and other) blocks, but doesn't work outside that. Any hints to > get me a little further? Hey Tom, Good idea. I'll definitely use that. `org-babel-do-key-sequence-in-edit-buffer' returns nil only if it is not in a code block[1], so we could use this in your code above: (or (org-babel-do-key-sequence-in-edit-buffer (kbd "_")) (org-self-insert-command 1)) Dan > > - Tom > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode Footnotes: [1] To be more exact, it returns nil if org-edit-src-code doesn't generate an edit buffer. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-02 23:41 ` Dan Davison 2010-09-02 23:50 ` Erik Iverson 2010-09-03 19:08 ` Tom Short @ 2010-09-04 8:58 ` Jambunathan K 2010-09-04 15:04 ` Eric Schulte 2 siblings, 1 reply; 14+ messages in thread From: Jambunathan K @ 2010-09-04 8:58 UTC (permalink / raw) To: Dan Davison; +Cc: emacs-orgmode >> Offer a command say 'org-to-org-src-view' which when invoked >> switches the org-mode buffer to target language mode and comments >> out all the non-src blocks. >> >> Offer a reverse command 'org-src-to-org-view' that switches the >> buffer to org-mode and uncomments the non-src blocks. Dan> My vote is that this proposal is too drastic. What I am proposing is tangling albeit in a loose sense of the word. Would it sound as drastic if one were to divorce the consideration of how often this operation gets performed - one time only or very often - during the lifetime of the org file. How about providing user-accessible tapping points within 'org-babel-map-src-blocks' (or a variation thereof) that would enable me have a custom command in my .emacs. For the sake of record, my suggestion is very closely related to what is discussed here. http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html Thanks, Jambunathan K. > 5 Gross code > ~~~~~~~~~~~~~ > > > diff --git a/lisp/ob.el b/lisp/ob.el > index b5b9d8f..613139e 100644 > --- a/lisp/ob.el > +++ b/lisp/ob.el > @@ -662,19 +662,52 @@ portions of results lines." > (lambda () (org-add-hook 'change-major-mode-hook > 'org-babel-show-result-all 'append 'local))) > > -(defmacro org-babel-map-src-blocks (file &rest body) > + > +(defun org-to-org-src-view () > + "" > + (interactive) > + > + (emacs-lisp-mode) > + (org-babel-map-src-blocks (buffer-file-name) > + ( > + (comment-region beg-org end-org) > + ) > + ) > + ) > + > +(defmacro org-babel-map-src-blocks (file body1 &rest body) > "Evaluate BODY forms on each source-block in FILE." > (declare (indent 1)) > `(let ((visited-p (get-file-buffer (expand-file-name ,file))) > - to-be-removed) > + to-be-removed > + (beg-org (make-marker)) > + (end-org (make-marker)) > + (beg-babel (make-marker)) > + (end-babel (make-marker)) > + ) > + > (save-window-excursion > (find-file ,file) > (setq to-be-removed (current-buffer)) > + > + (move-marker end-babel (point-min)) > (goto-char (point-min)) > + > (while (re-search-forward org-babel-src-block-regexp nil t) > - (goto-char (match-beginning 0)) > - (save-match-data ,@body) > - (goto-char (match-end 0)))) > + > + (move-marker beg-org end-babel) > + (move-marker end-org (match-beginning 0)) > + (move-marker beg-babel (match-beginning 0)) > + (move-marker end-babel (match-end 0)) > + > + (goto-char beg-org) > + ,@body1 > + > + (goto-char beg-babel) > + ,@body > + > + > + (goto-char end-babel))) > (unless visited-p > (kill-buffer to-be-removed)))) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-04 8:58 ` Jambunathan K @ 2010-09-04 15:04 ` Eric Schulte 2010-09-05 9:55 ` Jambunathan K 0 siblings, 1 reply; 14+ messages in thread From: Eric Schulte @ 2010-09-04 15:04 UTC (permalink / raw) To: Jambunathan K; +Cc: Dan Davison, emacs-orgmode Hi Jambunathan, Jambunathan K <kjambunathan@gmail.com> writes: > >> Offer a command say 'org-to-org-src-view' which when invoked > >> switches the org-mode buffer to target language mode and comments > >> out all the non-src blocks. > >> > >> Offer a reverse command 'org-src-to-org-view' that switches the > >> buffer to org-mode and uncomments the non-src blocks. > > Dan> My vote is that this proposal is too drastic. > > What I am proposing is tangling albeit in a loose sense of the word. > > Would it sound as drastic if one were to divorce the consideration of > how often this operation gets performed - one time only or very often - > during the lifetime of the org file. > > How about providing user-accessible tapping points within > 'org-babel-map-src-blocks' (or a variation thereof) that would enable me > have a custom command in my .emacs. > > For the sake of record, my suggestion is very closely related to what is > discussed here. > > http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html > I've just pushed up an implementation of the functionality described at the link above, see [1] for examples and details. Is this sufficient to satisfy the need you were addressing? If not how could it be improved? Thanks -- Eric > > Thanks, > Jambunathan K. > Footnotes: [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-04 15:04 ` Eric Schulte @ 2010-09-05 9:55 ` Jambunathan K 2010-09-05 15:58 ` Dan Davison 2010-09-05 20:22 ` Eric Schulte 0 siblings, 2 replies; 14+ messages in thread From: Jambunathan K @ 2010-09-05 9:55 UTC (permalink / raw) To: Eric Schulte; +Cc: Dan Davison, emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1528 bytes --] Eric > > I've just pushed up an implementation of the functionality described at > the link above, see [1] for examples and details. > > Footnotes: > [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html > I have pulled your changes and examined it. Some commets: Comment #1: Org Manual > Org Manual - Section 14.8.2.7 comments > org - Include text from the original org-mode file which preceded the > code block as a comment which precedes the tangled code. I suggest the following wording - "Include text from the org-mode file as a comment. The text is picked from the leading context of the tangled code and is limited by the nearest headline or source block as the case may be." Comment #2: Perceived gaps In my original case, 1. Tangling happens in-place. The source and target buffers are one and the same only their major made changes. i.e., it is destructive. Think of 'replace-region' ... 2. There is no lossage. I can tangle to elisp-mode and untangle it to org-mode without any round-trip losses. With your changes, the following are lost - the 'trailing' text and the 'stars' in the headline. That said, I have upgraded my request to a generic API (see attachment) and I am not too particular about my original use-case (which I agree as 'contrived', 'drastic' and 'one-off') Jambunathan K. Attachments: This for the benefit of the list. I had accidentally unicast the reply. My recent transition to gnus has made me very clumsy. [-- Attachment #2: Type: text/plain, Size: 3056 bytes --] From: Jambunathan K <kjambunathan@gmail.com> To: "Eric Schulte" <schulte.eric@gmail.com> Subject: Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks References: <4C459236.3@gmail.com> <87k4opu5fk.fsf@gmail.com> <81hbivx88y.fsf@gmail.com> <8139ueykvc.fsf_-_@gmail.com> <878w3j1zos.fsf@stats.ox.ac.uk> <81k4n13mww.fsf@gmail.com> <87r5h9czxf.fsf@gmail.com> X-Draft-From: ("nntp+news.gmane.org:gmane.emacs.orgmode" 29790) Date: Sun, 05 Sep 2010 14:28:16 +0530 In-Reply-To: <87r5h9czxf.fsf@gmail.com> (Eric Schulte's message of "Sat, 04 Sep 2010 09:04:03 -0600") Message-ID: <81d3ssva6v.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (windows-nt) --text follows this line-- jambu> How about providing user-accessible tapping points within jambu> 'org-babel-map-src-blocks' (or a variation thereof) that would jambu> enable me have a custom command in my .emacs. jambu> jambu> For the sake of record, my suggestion is very closely related to jambu> what is discussed here. jambu> jambu> http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html Eric> I've just pushed up an implementation of the functionality Eric> described at the link above, see [1] for examples and details. Eric> Eric> Is this sufficient to satisfy the need you were addressing? If Eric> not how could it be improved? Eric> Footnotes: Eric> [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html I am making a request for an API from BABEL core which roughly parallels org's org-map-entries. Using this API a user should be able to 'traverse' babel and non-babel blocks within a given scope (region, buffer), examine the local state (say a tag or a user-defined property on a subtree), provide a verdict on it's inclusion (yes I want it, no skip it) or possibly return a transformed custom content (as a list). 'org-babel-map-src-blocks' has the skeletal structure for this API. All it needs is some minimal tinkering to take on a more user-pluggable form. The proposed API would make UseCase-1 and UseCase-2 possible. UseCase-1: http://article.gmane.org/gmane.emacs.orgmode/28823 Section-6 provides an illustration. Section-5 helps one visualize the essentials of the propsed API. a) org-to-org-src-view => potential consumer of the proposed API. b) beg-org, end-org, beg-babel, end-babel => strategic 'points' of user-interest. c) body, body1 => Hooks for user UseCase-2: Tangling with custom pragmas. http://article.gmane.org/gmane.emacs.orgmode/29805 Additional Note: Thinking out loud here (aka contrived, over-the-top requirement). A user might want to override the in-buffer babel-control parameters while tangling or execution. Think of this scenario, I would like to tangle but with comments and line nos as a one-off (say for circulating to my colleagues). The in-buffer 'static/default' settings suppresses comments. I couldn't be bothered to edit the in-buffer settings just for this one-off case. Is there a possible way I can achieve this? Jambunathan K. [-- Attachment #3: Type: text/plain, Size: 201 bytes --] _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-05 9:55 ` Jambunathan K @ 2010-09-05 15:58 ` Dan Davison 2010-09-05 19:12 ` Eric Schulte 2010-09-05 20:22 ` Eric Schulte 1 sibling, 1 reply; 14+ messages in thread From: Dan Davison @ 2010-09-05 15:58 UTC (permalink / raw) To: Jambunathan K; +Cc: emacs-orgmode Jambunathan K <kjambunathan@gmail.com> writes: > > jambu> How about providing user-accessible tapping points within > jambu> 'org-babel-map-src-blocks' (or a variation thereof) that would > jambu> enable me have a custom command in my .emacs. > jambu> > jambu> For the sake of record, my suggestion is very closely related to > jambu> what is discussed here. > jambu> > jambu> http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html > > Eric> I've just pushed up an implementation of the functionality > Eric> described at the link above, see [1] for examples and details. > Eric> > Eric> Is this sufficient to satisfy the need you were addressing? If > Eric> not how could it be improved? > > Eric> Footnotes: > Eric> [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html > > I am making a request for an API from BABEL core which roughly parallels > org's org-map-entries. > > Using this API a user should be able to 'traverse' babel and non-babel > blocks within a given scope (region, buffer), examine the local state > (say a tag or a user-defined property on a subtree), provide a verdict > on it's inclusion (yes I want it, no skip it) or possibly return a > transformed custom content (as a list). > > 'org-babel-map-src-blocks' has the skeletal structure for this API. All > it needs is some minimal tinkering to take on a more user-pluggable > form. > The proposed API would make UseCase-1 and UseCase-2 possible. > > UseCase-1: > http://article.gmane.org/gmane.emacs.orgmode/28823 > > Section-6 provides an illustration. > Section-5 helps one visualize the essentials of the propsed API. > > a) org-to-org-src-view => potential consumer of the proposed API. > b) beg-org, end-org, beg-babel, end-babel => strategic 'points' of > user-interest. > c) body, body1 => Hooks for user Hi Jambunathan, I assume that beg-babel and end-babel are the start and end of the current code block. What exactly are beg-org and end-org here? > > UseCase-2: Tangling with custom pragmas. > http://article.gmane.org/gmane.emacs.orgmode/29805 > > Additional Note: Thinking out loud here (aka contrived, over-the-top > requirement). > > A user might want to override the in-buffer babel-control parameters > while tangling or execution. > > Think of this scenario, I would like to tangle but with comments and > line nos as a one-off (say for circulating to my colleagues). The > in-buffer 'static/default' settings suppresses comments. I couldn't be > bothered to edit the in-buffer settings just for this one-off case. Is > there a possible way I can achieve this? Many of the core org-babel functions accept an optional argument named `info'. This is a data structure which contains all the relevant settings: language, the body, the header args, etc. If this argument is provided, then no attempt is made to obtain the settings from the buffer. So the way to do this is to construct your own info data structure and then pass it to the org-babel function you are using (e.g. org-babel-execute-src-block). Typically, the info structure is created from the buffer using org-babel-get-src-block-info. See the docstring of that function for a definition of the data structure. As an example of on-the-fly construction of an info data structure (and thus a "virtual" code block that doesn't exist in any buffer), see the way Eric implemented #+lob calls in `org-babel-lob-execute' (it's quite clever). Also note in those functions that there is a useful function `org-babel-merge-params': In org-babel code, "params" generally means an association list of header argument (argument, value) pairs. `org-babel-merge-params' allows you to construct the params alist from a variety of different sources (the buffer settings, and your own settings): later arguments have priority over earlier ones. Grepping for org-babel-merge-params in the code shows some examples of using it to construct the "params" part of the "info" structure, e.g.: ob-ref.el:162: (setq params (org-babel-merge-params params args '((:results . "silent")))) ob-table.el:119: (org-babel-merge-params '((:results . "silent")) params)))) Based on a very quick look, it seems that tangle is gloing to be slightly different from execute. For tangle, you might want to use a let-binding to bind a temporary value of org-babel-default-header-args, constructed using org-babel-merge-params as on line 146 of ob-tangle.el. Dan > > Jambunathan K. > > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-05 15:58 ` Dan Davison @ 2010-09-05 19:12 ` Eric Schulte 0 siblings, 0 replies; 14+ messages in thread From: Eric Schulte @ 2010-09-05 19:12 UTC (permalink / raw) To: Dan Davison; +Cc: emacs-orgmode, Jambunathan K Hi, Dan Davison <davison@stats.ox.ac.uk> writes: > Jambunathan K <kjambunathan@gmail.com> writes: > >> >> jambu> How about providing user-accessible tapping points within >> jambu> 'org-babel-map-src-blocks' (or a variation thereof) that would >> jambu> enable me have a custom command in my .emacs. >> jambu> >> jambu> For the sake of record, my suggestion is very closely related to >> jambu> what is discussed here. >> jambu> >> jambu> http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html >> >> Eric> I've just pushed up an implementation of the functionality >> Eric> described at the link above, see [1] for examples and details. >> Eric> >> Eric> Is this sufficient to satisfy the need you were addressing? If >> Eric> not how could it be improved? >> >> Eric> Footnotes: >> Eric> [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html >> >> I am making a request for an API from BABEL core which roughly parallels >> org's org-map-entries. >> >> Using this API a user should be able to 'traverse' babel and non-babel >> blocks within a given scope (region, buffer), examine the local state >> (say a tag or a user-defined property on a subtree), provide a verdict >> on it's inclusion (yes I want it, no skip it) or possibly return a >> transformed custom content (as a list). >> >> 'org-babel-map-src-blocks' has the skeletal structure for this API. All >> it needs is some minimal tinkering to take on a more user-pluggable >> form. > >> The proposed API would make UseCase-1 and UseCase-2 possible. >> >> UseCase-1: >> http://article.gmane.org/gmane.emacs.orgmode/28823 >> >> Section-6 provides an illustration. >> Section-5 helps one visualize the essentials of the propsed API. >> >> a) org-to-org-src-view => potential consumer of the proposed API. >> b) beg-org, end-org, beg-babel, end-babel => strategic 'points' of >> user-interest. I'll make a guess here that beg/end-org and the beginning and end of the code block, and beg/end-babel are the beginning and end of the code block? This seems reasonable, and it's a minor change to let-bind all of the relevant match-data points (like those 4 mentioned above) to temporary variables which would then make them available to users of ob-map-src-blocks. I've just pushed up an enhanced ob-map-src-blocks which implements the above. I'll include the new docstring below [1] >> >> c) body, body1 => Hooks for user > I don't know what you mean by hooks for the user. When would these hooks be run? > > Hi Jambunathan, > > I assume that beg-babel and end-babel are the start and end of the > current code block. What exactly are beg-org and end-org here? > >> >> UseCase-2: Tangling with custom pragmas. >> http://article.gmane.org/gmane.emacs.orgmode/29805 >> >> Additional Note: Thinking out loud here (aka contrived, over-the-top >> requirement). >> >> A user might want to override the in-buffer babel-control parameters >> while tangling or execution. >> >> Think of this scenario, I would like to tangle but with comments and >> line nos as a one-off (say for circulating to my colleagues). The >> in-buffer 'static/default' settings suppresses comments. I couldn't be >> bothered to edit the in-buffer settings just for this one-off case. Is >> there a possible way I can achieve this? > > Many of the core org-babel functions accept an optional argument named > `info'. This is a data structure which contains all the relevant > settings: language, the body, the header args, etc. If this argument is > provided, then no attempt is made to obtain the settings from the > buffer. So the way to do this is to construct your own info data > structure and then pass it to the org-babel function you are using > (e.g. org-babel-execute-src-block). > > Typically, the info structure is created from the buffer using > org-babel-get-src-block-info. See the docstring of that function for a > definition of the data structure. > > As an example of on-the-fly construction of an info data structure (and > thus a "virtual" code block that doesn't exist in any buffer), see the > way Eric implemented #+lob calls in `org-babel-lob-execute' (it's quite > clever). > > Also note in those functions that there is a useful function > `org-babel-merge-params': In org-babel code, "params" generally means an > association list of header argument (argument, value) > pairs. `org-babel-merge-params' allows you to construct the params alist > from a variety of different sources (the buffer settings, and your own > settings): later arguments have priority over earlier ones. Grepping for > org-babel-merge-params in the code shows some examples of using it to > construct the "params" part of the "info" structure, e.g.: > > ob-ref.el:162: (setq params (org-babel-merge-params params args '((:results . "silent")))) > ob-table.el:119: (org-babel-merge-params '((:results . "silent")) params)))) > > > Based on a very quick look, it seems that tangle is gloing to be > slightly different from execute. For tangle, you might want to use a > let-binding to bind a temporary value of org-babel-default-header-args, > constructed using org-babel-merge-params as on line 146 of ob-tangle.el. > > Dan > I would just add to Dan's suggestions that it may be nice to expose a function which allows the user to control the params string on an evaluation by evaluation through an interface which tab-completes header arguments. This shouldn't be difficult if done using the org-babel-header-arg-names and org-babel-header-arg-names:lang variables. Cheers -- Eric > > > >> >> Jambunathan K. >> >> >> >> _______________________________________________ >> Emacs-orgmode mailing list >> Please use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode Footnotes: [1] ,---- | org-babel-map-src-blocks is a Lisp macro in `ob.el'. | | (org-babel-map-src-blocks FILE &rest BODY) | | Evaluate BODY forms on each source-block in FILE. | If FILE is nil evaluate BODY forms on source blocks in current | buffer. During evaluation of BODY the following local variables | are set relative to the currently matched code block. | | full-block ------- string holding the entirety of the code block | beg-block -------- point at the beginning of the code block | end-block -------- point at the end of the matched code block | lang ------------- string holding the language of the code block | beg-lang --------- point at the beginning of the lang | end-lang --------- point at the end of the lang | switches --------- string holding the switches | beg-switches ----- point at the beginning of the switches | end-switches ----- point at the end of the switches | header-args ------ string holding the header-args | beg-header-args -- point at the beginning of the header-args | end-header-args -- point at the end of the header-args | body ------------- string holding the body of the code block | beg-body --------- point at the beginning of the body | end-body --------- point at the end of the body `---- ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks 2010-09-05 9:55 ` Jambunathan K 2010-09-05 15:58 ` Dan Davison @ 2010-09-05 20:22 ` Eric Schulte 1 sibling, 0 replies; 14+ messages in thread From: Eric Schulte @ 2010-09-05 20:22 UTC (permalink / raw) To: Jambunathan K; +Cc: Dan Davison, emacs-orgmode Hi Jambunathan, Jambunathan K <kjambunathan@gmail.com> writes: > Eric > >> >> I've just pushed up an implementation of the functionality described at >> the link above, see [1] for examples and details. >> > >> Footnotes: >> [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html >> > > I have pulled your changes and examined it. Some commets: > > Comment #1: Org Manual > >> Org Manual - Section 14.8.2.7 comments > >> org - Include text from the original org-mode file which preceded the >> code block as a comment which precedes the tangled code. > > I suggest the following wording - > > "Include text from the org-mode file as a comment. > > The text is picked from the leading context of the tangled code and is > limited by the nearest headline or source block as the case may be." > Thanks, I've made this change in the manual. > > Comment #2: Perceived gaps > > In my original case, > > 1. Tangling happens in-place. > > The source and target buffers are one and the same only their major > made changes. i.e., it is destructive. Think of 'replace-region' ... > > 2. There is no lossage. > > I can tangle to elisp-mode and untangle it to org-mode without any > round-trip losses. > > With your changes, the following are lost - the 'trailing' text and > the 'stars' in the headline. > > > That said, I have upgraded my request to a generic API (see attachment) > and I am not too particular about my original use-case (which I agree as > 'contrived', 'drastic' and 'one-off') > Great. I've acted on your API request so hopefully that will supersede the need for more drastic tangling extensions. Thanks -- Eric > > Jambunathan K. > > Attachments: This for the benefit of the list. > > I had accidentally unicast the reply. My recent transition to gnus has > made me very clumsy. > > From: Jambunathan K <kjambunathan@gmail.com> > To: "Eric Schulte" <schulte.eric@gmail.com> > Subject: Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks > References: <4C459236.3@gmail.com> <87k4opu5fk.fsf@gmail.com> > <81hbivx88y.fsf@gmail.com> <8139ueykvc.fsf_-_@gmail.com> > <878w3j1zos.fsf@stats.ox.ac.uk> <81k4n13mww.fsf@gmail.com> > <87r5h9czxf.fsf@gmail.com> > X-Draft-From: ("nntp+news.gmane.org:gmane.emacs.orgmode" 29790) > Date: Sun, 05 Sep 2010 14:28:16 +0530 > In-Reply-To: <87r5h9czxf.fsf@gmail.com> (Eric Schulte's message of "Sat, 04 > Sep 2010 09:04:03 -0600") > Message-ID: <81d3ssva6v.fsf@gmail.com> > User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (windows-nt) > --text follows this line-- > > jambu> How about providing user-accessible tapping points within > jambu> 'org-babel-map-src-blocks' (or a variation thereof) that would > jambu> enable me have a custom command in my .emacs. > jambu> > jambu> For the sake of record, my suggestion is very closely related to > jambu> what is discussed here. > jambu> > jambu> http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html > > Eric> I've just pushed up an implementation of the functionality > Eric> described at the link above, see [1] for examples and details. > Eric> > Eric> Is this sufficient to satisfy the need you were addressing? If > Eric> not how could it be improved? > > Eric> Footnotes: > Eric> [1] http://eschulte.github.com/babel-dev/DONE-tangle-entire-org-mode-file-in-comments.html > > I am making a request for an API from BABEL core which roughly parallels > org's org-map-entries. > > Using this API a user should be able to 'traverse' babel and non-babel > blocks within a given scope (region, buffer), examine the local state > (say a tag or a user-defined property on a subtree), provide a verdict > on it's inclusion (yes I want it, no skip it) or possibly return a > transformed custom content (as a list). > > 'org-babel-map-src-blocks' has the skeletal structure for this API. All > it needs is some minimal tinkering to take on a more user-pluggable > form. > > The proposed API would make UseCase-1 and UseCase-2 possible. > > UseCase-1: > http://article.gmane.org/gmane.emacs.orgmode/28823 > > Section-6 provides an illustration. > Section-5 helps one visualize the essentials of the propsed API. > > a) org-to-org-src-view => potential consumer of the proposed API. > b) beg-org, end-org, beg-babel, end-babel => strategic 'points' of > user-interest. > c) body, body1 => Hooks for user > > UseCase-2: Tangling with custom pragmas. > http://article.gmane.org/gmane.emacs.orgmode/29805 > > Additional Note: Thinking out loud here (aka contrived, over-the-top > requirement). > > A user might want to override the in-buffer babel-control parameters > while tangling or execution. > > Think of this scenario, I would like to tangle but with comments and > line nos as a one-off (say for circulating to my colleagues). The > in-buffer 'static/default' settings suppresses comments. I couldn't be > bothered to edit the in-buffer settings just for this one-off case. Is > there a possible way I can achieve this? > > Jambunathan K. ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2010-09-05 21:17 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-20 12:10 [BABEL] Seemless editing of Babel Blocks Jambunathan K 2010-07-20 22:58 ` Eric Schulte 2010-08-16 8:38 ` Jambunathan K 2010-08-16 9:20 ` [BABEL] [PROPOSAL] " Jambunathan K 2010-09-02 23:41 ` Dan Davison 2010-09-02 23:50 ` Erik Iverson 2010-09-03 19:08 ` Tom Short 2010-09-03 20:45 ` Dan Davison 2010-09-04 8:58 ` Jambunathan K 2010-09-04 15:04 ` Eric Schulte 2010-09-05 9:55 ` Jambunathan K 2010-09-05 15:58 ` Dan Davison 2010-09-05 19:12 ` Eric Schulte 2010-09-05 20:22 ` Eric Schulte
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).