Dan Davison <davi...@stats.ox.ac.uk> writes: > Following on from the recent improvements to the *Org Edit Src Example* > buffer, I have one more proposal: I have remapped C-x C-s so that it > saves the code in the org buffer, rather than offering to save the Edit > buffer itself (as it used to be with the indirect edit buffer). I find > this essential, although I recognise that remapping C-x C-s is a rather > radical thing to do to an emacs buffer. > > I am using the simple-minded approach below; it seems to work fine (I
Hmm, well I had used that for at least a week before posting, but I have now noticed a problem. It's a bit of a corner case. If you create extra blank lines at the end of the source code edit buffer and leave point down there, then do org-edit-src-exit, now back in the org buffer point is outside the source code block. In that case, the code that I just posted doesn't work. I suggest that org-edit-src-exit should in this situation place point at the end of the source code block, for example like this: diff --git a/lisp/org.el b/lisp/org.el index 659dfad..be459b5 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -6757,7 +6757,9 @@ the language, a switch telling of the content should be in a single line." code) (goto-char (point-min)) (if (looking-at "[ \t\n]*\n") (replace-match "")) - (if (re-search-forward "\n[ \t\n]*\\'" nil t) (replace-match "")) + (when (re-search-forward "\n[ \t\n]*\\'" nil t) + (replace-match "") + (setq line (min line (org-current-line)))) (when (org-bound-and-true-p org-edit-src-force-single-line) (goto-char (point-min)) (while (re-search-forward "\n" nil t) Dan > don't even notice a flicker -- should I be surprised at that?), but if > someone can suggest an improved implementation I'd be happy to learn how > it should be done (perhaps there are buffer variables other than point > and mark that I should restore? Is there a general mechanism I should > use for this?). > > Dan > > (defun org-edit-src-save () > "Update the parent org buffer with the edited source code, save > the parent org-buffer, and return to the source code edit > buffer." > (interactive) > (let ((p (point)) > (m (mark))) > (org-edit-src-exit) > (save-buffer) > (org-edit-src-code) > (set-mark m) > (goto-char p))) > > (define-key org-exit-edit-mode-map "\C-x\C-s" 'org-edit-src-save) > > > > _______________________________________________ > Emacs-orgmode mailing list > Remember: use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode