From: "Herbert Euler" <herberteuler@hotmail.com>
To: rms@gnu.org, monnier@iro.umontreal.ca
Cc: juri@jurta.org, schwab@suse.de, miles@gnu.org,
miles.bader@necel.com, emacs-devel@gnu.org
Subject: Re: find-file-noselect needs save-match-data
Date: Sun, 17 Jun 2007 11:19:50 +0800 [thread overview]
Message-ID: <BAY143-F39DE046F9F58052C920805DA1C0@phx.gbl> (raw)
In-Reply-To: <E1HzdN4-000715-M9@fencepost.gnu.org>
> > This function is good because it will enable programmers to DTRT in
>a
> > simpler way in many cases.
>
> I fail to see the simplicity. All the difficulty comes from having to
>think
> about when to be careful about the match-data.
>
>Yes, but if people get in the habit of using a new function
>whenever they don't actually want to use the match data,
>which I expect is most of the time, that need to think carefully
>will be much less frequent.
No, they would think carefully as frequently as now. I mean, when
they would think carefully now they would think carefully after adding
such a function; when they don't need to think carefully now they
wouldn't think carefully after adding such a function. Please take a
look at the following case, in `c-electric-brace':
;; cc-cmds.el, line 749
;; `}': compact to a one-liner defun?
(save-match-data
(when
(and (eq last-command-char ?\})
(memq 'one-liner-defun c-cleanup-list)
(c-intersect-lists '(defun-close) syntax)
(c-try-one-liner))
(setq here (- (point-max) pos))))
`save-match-data' is used here, but nothing implies directly that
match-data will be changed in its body. Some functions change it, but
is called _indirectly_. One would need to check the source of each
function in its body to see where the match-data is changed. This is
the only case that the problems caused by unexpected match-data
changes happen. If one writes the following code:
;; dired.el, line 2207, in function `dired-build-subdir-alist'
(while (re-search-forward dired-subdir-regexp nil t)
;; Avoid taking a file name ending in a colon
;; as a subdir name.
(unless (save-excursion
(goto-char (match-beginning 0))
(beginning-of-line)
(forward-char 2)
(save-match-data (looking-at dired-re-perms)))
one will know that `looking-at' changes match-data, and so uses
`save-match-data' properly to avoid the problem.
And if match-data needs to be preserved, the programmer would pay
attention to it, no matter whether there are some functions that won't
change match-data exist. When they think about which function to use,
they've already thought about whether the match-data should be
preserved.
Regards,
Guanpeng Xu
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.com/
next prev parent reply other threads:[~2007-06-17 3:19 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-04 15:17 find-file-noselect needs save-match-data Herbert Euler
2007-06-04 16:05 ` martin rudalics
2007-06-05 3:10 ` Herbert Euler
2007-06-05 5:52 ` martin rudalics
2007-06-05 22:32 ` Richard Stallman
2007-06-06 1:13 ` Stefan Monnier
2007-06-06 1:44 ` Herbert Euler
2007-06-06 6:58 ` martin rudalics
2007-06-06 7:25 ` David Kastrup
2007-06-06 22:09 ` Richard Stallman
2007-06-06 12:14 ` Stefan Monnier
2007-06-06 22:09 ` Richard Stallman
2007-06-06 6:57 ` martin rudalics
2007-06-06 12:17 ` Stefan Monnier
2007-06-06 12:33 ` Lennart Borgman (gmail)
2007-06-06 12:49 ` martin rudalics
2007-06-06 22:10 ` Richard Stallman
2007-06-06 22:29 ` Stefan Monnier
2007-06-08 7:11 ` Richard Stallman
2007-06-08 8:31 ` Kim F. Storm
2007-06-08 9:42 ` martin rudalics
2007-06-08 10:31 ` Kim F. Storm
2007-06-09 9:45 ` Richard Stallman
2007-06-10 0:05 ` Herbert Euler
2007-06-10 0:11 ` Herbert Euler
2007-06-09 9:46 ` Richard Stallman
2007-06-09 21:32 ` Juri Linkov
2007-06-09 21:59 ` David House
2007-06-09 22:43 ` Juri Linkov
2007-06-09 22:53 ` Jason Rumney
2007-06-09 23:59 ` Miles Bader
2007-06-10 0:02 ` Drew Adams
2007-06-10 13:19 ` Richard Stallman
2007-06-12 3:05 ` Bob Rogers
2007-06-12 4:06 ` Miles Bader
2007-06-12 16:45 ` Juri Linkov
2007-06-12 17:46 ` Andreas Schwab
2007-06-12 21:55 ` David Kastrup
2007-06-12 22:10 ` Miles Bader
2007-06-12 22:37 ` David Kastrup
2007-06-13 16:22 ` Richard Stallman
2007-06-13 17:31 ` Stefan Monnier
2007-06-13 18:33 ` David Kastrup
2007-06-13 19:55 ` Stefan Monnier
2007-06-14 6:37 ` Herbert Euler
2007-06-15 8:48 ` Richard Stallman
2007-06-15 14:22 ` Stefan Monnier
2007-06-15 16:03 ` Herbert Euler
2007-06-14 6:57 ` martin rudalics
2007-06-14 14:36 ` Stefan Monnier
2007-06-14 16:05 ` Herbert Euler
2007-06-14 16:22 ` Stefan Monnier
2007-06-15 1:59 ` Herbert Euler
2007-06-15 8:49 ` Richard Stallman
2007-06-15 8:49 ` Richard Stallman
2007-06-14 6:57 ` martin rudalics
2007-06-15 8:48 ` Richard Stallman
2007-06-15 14:23 ` Stefan Monnier
2007-06-15 22:45 ` Richard Stallman
2007-06-17 19:54 ` Juri Linkov
2007-06-17 20:27 ` Lennart Borgman (gmail)
2007-06-14 16:19 ` Richard Stallman
2007-06-14 17:18 ` David Kastrup
2007-06-15 19:21 ` Richard Stallman
2007-06-15 19:52 ` Stefan Monnier
2007-06-13 23:39 ` Miles Bader
2007-06-14 0:52 ` Stefan Monnier
2007-06-14 6:58 ` martin rudalics
2007-06-14 16:20 ` Richard Stallman
2007-06-14 18:50 ` Stefan Monnier
2007-06-15 6:31 ` martin rudalics
2007-06-15 14:20 ` Stefan Monnier
2007-06-15 15:55 ` Herbert Euler
2007-06-15 19:22 ` Richard Stallman
2007-06-16 10:01 ` martin rudalics
2007-06-16 22:35 ` Richard Stallman
2007-06-15 19:21 ` Richard Stallman
2007-06-15 19:55 ` Stefan Monnier
2007-06-15 20:03 ` David Kastrup
2007-06-16 18:51 ` Richard Stallman
2007-06-16 19:10 ` David Kastrup
2007-06-17 21:49 ` Richard Stallman
2007-06-18 5:16 ` David Kastrup
2007-06-18 21:30 ` Richard Stallman
2007-06-18 21:42 ` David Kastrup
2007-06-19 22:26 ` Richard Stallman
2007-06-19 22:42 ` David Kastrup
2007-06-25 13:19 ` Richard Stallman
2007-06-16 3:50 ` Herbert Euler
2007-06-17 12:28 ` Stefan Monnier
2007-06-16 18:51 ` Richard Stallman
2007-06-16 21:39 ` Miles Bader
2007-06-17 8:55 ` Richard Stallman
2007-06-17 3:19 ` Herbert Euler [this message]
2007-06-17 3:26 ` Herbert Euler
2007-06-17 21:49 ` Richard Stallman
2007-06-17 12:50 ` Stefan Monnier
2007-06-18 7:25 ` Richard Stallman
2007-06-20 8:07 ` Herbert Euler
2007-06-20 14:12 ` Juri Linkov
2007-06-20 14:44 ` Herbert Euler
2007-06-21 1:07 ` Richard Stallman
2007-06-21 1:29 ` Herbert Euler
2007-06-21 6:31 ` David Kastrup
2007-06-28 14:06 ` Herbert Euler
2007-06-29 15:07 ` Herbert Euler
2007-07-06 17:05 ` byte-compiling an elisp-file fails in Emacs 22.1 (reproducable) klaus.berndl
2007-07-06 22:20 ` Jason Rumney
2007-07-07 13:06 ` Richard Stallman
2007-07-08 6:30 ` AW: " klaus.berndl
2007-06-22 1:51 ` find-file-noselect needs save-match-data Richard Stallman
2007-06-20 17:36 ` Richard Stallman
2007-06-13 16:21 ` Richard Stallman
2007-06-05 5:18 ` Richard Stallman
2007-06-06 1:10 ` Stefan Monnier
2007-06-14 16:19 ` Stefan Monnier
-- strict thread matches above, loose matches on Subject: below --
2007-06-06 0:25 Herbert Euler
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BAY143-F39DE046F9F58052C920805DA1C0@phx.gbl \
--to=herberteuler@hotmail.com \
--cc=emacs-devel@gnu.org \
--cc=juri@jurta.org \
--cc=miles.bader@necel.com \
--cc=miles@gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=rms@gnu.org \
--cc=schwab@suse.de \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs.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).