From: Tim Johnson <tim@johnsons-web.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Inserting output from a program into a buffer
Date: Mon, 22 Feb 2010 18:44:55 -0600 [thread overview]
Message-ID: <slrnho68ov.3mv.tim@bart.johnson.com> (raw)
In-Reply-To: 87iq9ozwfl.fsf@galatea.lan.informatimago.com
On 2010-02-22, Pascal J. Bourguignon <pjb@informatimago.com> wrote:
> Tim Johnson <tim@johnsons-web.com> writes:
>
>> On 2010-02-22, Pascal J. Bourguignon <pjb@informatimago.com> wrote:
> You could write it like this:
>
> (defun tj-copy-previous-region ()
> "Save a list surrounding or before the cursor into the kill-ring."
> (interactive)
> (save-excursion
> (let ((boundary (point)))
> (beginning-of-line-text)
> (if (re-search-forward "[([{]" boundary t)
> (let ((start (match-beginning 0)))
> (goto-char (1- start))
> (forward-sexp)
> (kill-ring-save start (point)))
> (error "No Opening delimiter found on this line")))))
>
> aaaa (1 2 3 4 5 6 7 8 9) zzzz
> ^ M-x tj-copy-previous-region RET C-n C-n C-y inserts:
> (1 2 3 4 5 6 7 8 9)
Very nice illustration.
> Notice:
>
> - spaces before opening parentheses not preceded by an opening
> parenthesis.
Understood.
> - indentation done automatically by emacs.
(blush) was using vim.
> - avoidance of setf or setq.
Thus the nested 'lets. Aha!
> - do actually what was documented (by the function name), ie. use
> kill-ring-save instead of buffer-substring.
K
> - use of save-excursion to save the excursion
K
> - use of error to deal with exceptional cases instead of just message.
> error will do the right thing depending on the local circumstances
> (ie. it will message the error in interactive use, but enter the
> debugger or have the error otherwise handled if the programmer asks it
> to).
K
Thank you very much for this lesson
Regards
--
Tim
tim@johnsons-web.com
http://www.akwebsoft.com
next prev parent reply other threads:[~2010-02-23 0:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-21 2:45 Inserting output from a program into a buffer Tim Johnson
2010-02-21 3:15 ` Tim Landscheidt
2010-02-21 4:45 ` Tim Johnson
2010-02-21 5:02 ` Barry Margolin
[not found] ` <slrnho2o6e.49k.tim@bart.johnson.com>
[not found] ` <87zl324774.fsf@lion.rapttech.com.au>
2010-02-22 0:45 ` Tim Johnson
2010-02-22 1:57 ` Pascal J. Bourguignon
2010-02-22 4:45 ` Tim Johnson
2010-02-22 9:41 ` Pascal J. Bourguignon
2010-02-22 19:44 ` Tim Johnson
2010-02-22 23:23 ` Pascal J. Bourguignon
2010-02-23 0:44 ` Tim Johnson [this message]
2010-02-22 23:06 ` jpkotta
2010-02-22 7:22 ` Tim X
2010-02-21 6:28 ` tomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=slrnho68ov.3mv.tim@bart.johnson.com \
--to=tim@johnsons-web.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.