[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Saving the *Org Edit Src Example* buffer

From: Carsten Dominik
Subject: Re: [Orgmode] Saving the *Org Edit Src Example* buffer
Date: Tue, 2 Jun 2009 19:04:56 +0200

Hi Dan,

On Jun 2, 2009, at 5:02 PM, Dan Davison wrote:

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.

But allowed:  From the Emacs lisp docs, under Major Mode Conventions:

     It is legitimate for a major mode to rebind a standard key
     sequence if it provides a command that does "the same job" in a
     way better suited to the text this mode is used for.

I'd say, your's is a perfect example for this rule.

I am using the simple-minded approach below; it seems to work fine (I
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?).


(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
 (let ((p (point))
        (m (mark)))
   (set-mark m)
   (goto-char p)))

This is already excellent.  I have changed it only slightly,
in order to get a better message when this command finishes, and
because `push-mark' should be used here instead of `set-mark'.

(defun org-edit-src-save ()
  "Save parent buffer with current state source-code buffer."
  (let ((p (point)) (m (mark)) msg)
    (setq msg (current-message))
    (push-mark m 'nomessage)
    (goto-char p)
    (message (or msg ""))))

I have added your code, thanks.

- Carsten

reply via email to

[Prev in Thread] Current Thread [Next in Thread]