Commit 2889df58 authored by Jan Djärv's avatar Jan Djärv
Browse files

Merge from mainline.

parents 451f23ab 03f77f0a
2010-01-04 Stefan Monnier <monnier@iro.umontreal.ca>
Avoid dubious uses of save-excursions.
* positions.texi (Excursions): Recommend the use of
save-current-buffer if applicable.
* text.texi (Clickable Text): Fix the example code which used
save-excursion in a naive way which sometimes preserves point and
sometimes not.
* variables.texi (Creating Buffer-Local):
* os.texi (Session Management):
* display.texi (GIF Images):
* control.texi (Cleanups): Use (save|with)-current-buffer.
2010-01-02 Eli Zaretskii <eliz@gnu.org>
* modes.texi (Example Major Modes): Fix indentation. (Bug#5195)
......@@ -8375,7 +8388,7 @@
;; End:
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009 Free Software Foundation, Inc.
2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
......
......@@ -1255,9 +1255,8 @@ make sure to kill it before finishing:
@smallexample
@group
(save-excursion
(let ((buffer (get-buffer-create " *temp*")))
(set-buffer buffer)
(let ((buffer (get-buffer-create " *temp*")))
(with-current-buffer buffer
(unwind-protect
@var{body-form}
(kill-buffer buffer))))
......@@ -1269,7 +1268,7 @@ You might think that we could just as well write @code{(kill-buffer
(current-buffer))} and dispense with the variable @code{buffer}.
However, the way shown above is safer, if @var{body-form} happens to
get an error after switching to a different buffer! (Alternatively,
you could write another @code{save-excursion} around @var{body-form},
you could write a @code{save-current-buffer} around @var{body-form},
to ensure that the temporary buffer becomes current again in time to
kill it.)
......
......@@ -4394,8 +4394,7 @@ every 0.1 seconds.
(when (= idx max)
(setq idx 0))
(let ((img (create-image file nil :image idx)))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(goto-char (point-min))
(unless first-time (delete-char 1))
(insert-image img))
......
......@@ -2182,7 +2182,7 @@ Emacs is restarted by the session manager.
@group
(defun save-yourself-test ()
(insert "(save-excursion
(insert "(save-current-buffer
(switch-to-buffer \"*scratch*\")
(insert \"I am restored\"))")
nil)
......
......@@ -806,7 +806,9 @@ after the completion of the excursion.
The forms for saving and restoring the configuration of windows are
described elsewhere (see @ref{Window Configurations}, and @pxref{Frame
Configurations}).
Configurations}). When only the identity of the current buffer needs
to be saved and restored, it is preferable to use
@code{save-current-buffer} instead.
@defspec save-excursion body@dots{}
@cindex mark excursion
......@@ -817,10 +819,10 @@ buffer and the values of point and the mark in it, evaluates
point and the mark. All three saved values are restored even in case of
an abnormal exit via @code{throw} or error (@pxref{Nonlocal Exits}).
The @code{save-excursion} special form is the standard way to switch
buffers or move point within one part of a program and avoid affecting
the rest of the program. It is used more than 4000 times in the Lisp
sources of Emacs.
The @code{save-excursion} special form is the standard way to move
point within one part of a program and avoid affecting the rest of the
program. It is used more than 4000 times in the Lisp sources
of Emacs.
@code{save-excursion} does not save the values of point and the mark for
other buffers, so changes in other buffers remain in effect after
......
......@@ -3524,13 +3524,12 @@ following command:
(defun dired-mouse-find-file-other-window (event)
"In Dired, visit the file or directory name you click on."
(interactive "e")
(let (window pos file)
(save-excursion
(setq window (posn-window (event-end event))
pos (posn-point (event-end event)))
(if (not (windowp window))
(error "No file chosen"))
(set-buffer (window-buffer window))
(let ((window (posn-window (event-end event)))
(pos (posn-point (event-end event)))
file)
(if (not (windowp window))
(error "No file chosen"))
(with-current-buffer (window-buffer window)
(goto-char pos)
(setq file (dired-get-file-for-visit)))
(if (file-directory-p file)
......
......@@ -1240,8 +1240,7 @@ foo
@group
;; @r{In buffer @samp{b2}, the value hasn't changed.}
(save-excursion
(set-buffer "b2")
(with-current-buffer "b2"
foo)
@result{} 5
@end group
......
2010-01-04 Stefan Monnier <monnier@iro.umontreal.ca>
* gnus.texi (Posting Styles): Use with-current-buffer.
* calc.texi (Defining Simple Commands): Prefer save-current-buffer.
2010-01-02 Kevin Ryde <user42@zip.com.au>
* eieio.texi (Naming Conventions): Correction to xref on elisp
......@@ -6512,7 +6517,7 @@
;; End:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
......
......@@ -31968,7 +31968,7 @@ the function with code that looks roughly like this:
@smallexample
(let ((calc-command-flags nil))
(unwind-protect
(save-excursion
(save-current-buffer
(calc-select-buffer)
@emph{body of function}
@emph{renumber stack}
......@@ -10,7 +10,7 @@
@copying
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
......@@ -13449,8 +13449,7 @@ So here's a new example:
(body "You are fired.\n\nSincerely, your boss.")
(organization "Important Work, Inc"))
("nnml:.*"
(From (save-excursion
(set-buffer gnus-article-buffer)
(From (with-current-buffer gnus-article-buffer
(message-fetch-field "to"))))
("^nn.+:"
(signature-file "~/.mail-signature"))))
2010-01-05 Kenichi Handa <handa@m17n.org>
* language/indian.el (malayalam-composable-pattern): Fix ZWNJ and
ZWJ.
2010-01-05 Dan Nicolaescu <dann@ics.uci.edu>
* vc-bzr.el (vc-bzr-diff): Obey vc-disable-async-diff.
2010-01-04 Dan Nicolaescu <dann@ics.uci.edu>
* vc-bzr.el (vc-bzr-state-heuristic): Make it work for lightweight
checkouts. (Bug#618)
(vc-bzr-log-view-mode): Also highlight the author.
(vc-bzr-shelve-map): Change binding for vc-bzr-shelve-apply-at-point.
(vc-bzr-shelve-menu-map):
(vc-bzr-dir-extra-headers): Improve menu and tooltip text.
(vc-bzr-shelve-apply): Make prompt more explicit.
2010-01-02 Chong Yidong <cyd@stupidchicken.com>
* net/browse-url.el (browse-url-encode-url): Don't escape commas.
......
......@@ -153,8 +153,8 @@ South Indian language Malayalam is supported in this language environment."))
("a" . "\u0903") ; vowel modifier (post)
("S" . "\u0951") ; stress sign (above)
("s" . "\u0952") ; stress sign (below)
("J" . "\u200D") ; ZWJ
("N" . "\u200C") ; ZWNJ
("J" . "\u200D") ; ZWJ
("X" . "[\u0900-\u097F]")))) ; all coverage
(indian-compose-regexp
(concat
......@@ -195,8 +195,8 @@ South Indian language Malayalam is supported in this language environment."))
("b" . "[\u0D62-\u0D63]") ; belowbase matra
("a" . "[\u0D02-\u0D03]") ; abovebase sign
("H" . "\u0D4D") ; virama sign
("N" . "\u200D") ; ZWJ
("J" . "\u200C") ; ZWNJ
("N" . "\u200C") ; ZWNJ
("J" . "\u200D") ; ZWJ
("X" . "[\u0D00-\u0D7F]")))) ; all coverage
(indian-compose-regexp
(concat
......
......@@ -176,13 +176,13 @@ Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
"\0"
"[^\0]*\0" ;id?
"\\([^\0]*\\)\0" ;"a/f/d", a=removed?
"[^\0]*\0" ;sha1 (empty if conflicted)?
"\\([^\0]*\\)\0" ;size?
"\\([^\0]*\\)\0" ;sha1 (empty if conflicted)?
"\\([^\0]*\\)\0" ;size?p
"[^\0]*\0" ;"y/n", executable?
"[^\0]*\0" ;?
"\\([^\0]*\\)\0" ;"a/f/d" a=added?
"\\([^\0]*\\)\0" ;sha1 again?
"[^\0]*\0" ;size again?
"\\([^\0]*\\)\0" ;size again?
"[^\0]*\0" ;"y/n", executable again?
"[^\0]*\0" ;last revid?
;; There are more fields when merges are pending.
......@@ -194,11 +194,20 @@ Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
;; conflict markers).
(cond
((eq (char-after (match-beginning 1)) ?a) 'removed)
((eq (char-after (match-beginning 3)) ?a) 'added)
((and (eq (string-to-number (match-string 2))
((eq (char-after (match-beginning 4)) ?a) 'added)
((or (and (eq (string-to-number (match-string 3))
(nth 7 (file-attributes file)))
(equal (match-string 4)
(equal (match-string 5)
(vc-bzr-sha1 file)))
(and
;; It looks like for lightweight
;; checkouts \2 is empty and we need to
;; look for size in \6.
(eq (match-beginning 2) (match-end 2))
(eq (string-to-number (match-string 6))
(nth 7 (file-attributes file)))
(equal (match-string 5)
(vc-bzr-sha1 file))))
'up-to-date)
(t 'edited))
'unregistered))))
......@@ -475,7 +484,7 @@ REV non-nil gets an error."
(4 'change-log-list nil lax))))
(append `((,log-view-message-re . 'log-view-message-face))
;; log-view-font-lock-keywords
'(("^ *committer: \
'(("^ *\\(?:committer\\|author\\): \
\\([^<(]+?\\)[ ]*[(<]\\([[:alnum:]_.+-]+@[[:alnum:]_.-]+\\)[>)]"
(1 'change-log-name)
(2 'change-log-email))
......@@ -523,7 +532,8 @@ REV non-nil gets an error."
(defun vc-bzr-diff (files &optional rev1 rev2 buffer)
"VC bzr backend for diff."
;; `bzr diff' exits with code 1 if diff is non-empty.
(apply #'vc-bzr-command "diff" (or buffer "*vc-diff*") 'async files
(apply #'vc-bzr-command "diff" (or buffer "*vc-diff*")
(if vc-disable-async-diff 1 'async) files
"--diff-options" (mapconcat 'identity
(vc-switches 'bzr 'diff)
" ")
......@@ -732,7 +742,7 @@ stream. Standard error output is discarded."
(define-key map "\C-k" 'vc-bzr-shelve-delete-at-point)
;; (define-key map "=" 'vc-bzr-shelve-show-at-point)
;; (define-key map "\C-m" 'vc-bzr-shelve-show-at-point)
(define-key map "A" 'vc-bzr-shelve-apply-at-point)
(define-key map "P" 'vc-bzr-shelve-apply-at-point)
map))
(defvar vc-bzr-shelve-menu-map
......@@ -740,9 +750,9 @@ stream. Standard error output is discarded."
(define-key map [de]
'(menu-item "Delete shelf" vc-bzr-shelve-delete-at-point
:help "Delete the current shelf"))
(define-key map [ap]
'(menu-item "Apply shelf" vc-bzr-shelve-apply-at-point
:help "Apply the current shelf"))
(define-key map [po]
'(menu-item "Apply and remove shelf (pop)" vc-bzr-shelve-apply-at-point
:help "Apply the current shelf and remove it"))
;; (define-key map [sh]
;; '(menu-item "Show shelve" vc-bzr-shelve-show-at-point
;; :help "Show the contents of the current shelve"))
......@@ -800,7 +810,7 @@ stream. Standard error output is discarded."
(propertize x
'face 'font-lock-variable-name-face
'mouse-face 'highlight
'help-echo "mouse-3: Show shelve menu\nA: Apply shelf\nC-k: Delete shelf"
'help-echo "mouse-3: Show shelve menu\nP: Apply and remove shelf (pop)\nC-k: Delete shelf"
'keymap vc-bzr-shelve-map))
shelve "\n"))
(concat
......@@ -830,8 +840,8 @@ stream. Standard error output is discarded."
;; (pop-to-buffer (current-buffer)))
(defun vc-bzr-shelve-apply (name)
"Apply shelve NAME."
(interactive "sApply shelf: ")
"Apply shelve NAME and remove it afterwards."
(interactive "sApply (and remove) shelf: ")
(vc-bzr-command "unshelve" "*vc-bzr-shelve*" 0 nil "--apply" name)
(vc-resynch-buffer (vc-bzr-root default-directory) t t))
......
......@@ -8,6 +8,28 @@
(xg_frame_resized, xg_frame_set_char_size): Call
xg_clear_under_internal_border.
(xg_update_scrollbar_pos): Clear under old scroll bar position.
2010-01-05 Chong Yidong <cyd@stupidchicken.com>
* keyboard.c (read_key_sequence): Catch keyboard switch after
making a new tty frame (Bug#5095).
2010-01-05 Kenichi Handa <handa@m17n.org>
* fontset.c (fontset_find_font): Fix getting the frame pointer.
2010-01-04 Stefan Monnier <monnier@iro.umontreal.ca>
* dbusbind.c (xd_remove_watch): Avoid trying to convert a void* to
Lisp_Object, preferring to convert a lisp_Object to a void* instead.
(Fdbus_init_bus): Use XHASH to get a scalar value from a Lisp_Object.
2010-01-03 Michael Albinus <michael.albinus@gmx.de>
* dbusbind.c (xd_add_watch): Improve debug message.
(xd_remove_watch): Improve debug message. If DATA is the session
bus, unset D-Bus session environment.
(Fdbus_init_bus): Pass the bus as argument to
dbus_connection_set_watch_functions. (Bug#5283)
2010-01-01 Chong Yidong <cyd@stupidchicken.com>
......@@ -155,7 +177,7 @@
2009-12-15 Michael Albinus <michael.albinus@gmx.de>
* dbusbind.c (xd_retrieve_arg): Reorder declarations in order to
avoid compiler warnings. (Bug #5217).
avoid compiler warnings. (Bug #5217)
2009-12-14 Kenichi Handa <handa@m17n.org>
......@@ -5330,7 +5352,7 @@
(XD_SIGNAL1, XD_SIGNAL2, XD_SIGNAL3): New macros. Throw Qdbus_error.
(xd_read_queued_messages): Catch Qdbus_error from the macros.
(all): Replace xsignal1, xsignal2, xsignal3 by the respective
macro. (Bug#1186).
macro. (Bug#1186)
2008-10-23 Ali Bahrami <ali_gnu@emvision.com> (tiny change)
......@@ -21224,7 +21246,7 @@ See ChangeLog.10 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
......
......@@ -761,14 +761,14 @@ xd_add_watch (watch, data)
if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
{
#if HAVE_DBUS_WATCH_GET_UNIX_FD
/* TODO: Reverse these on Win32, which prefers the opposite. */
/* TODO: Reverse these on Win32, which prefers the opposite. */
int fd = dbus_watch_get_unix_fd(watch);
if (fd == -1)
fd = dbus_watch_get_socket(watch);
#else
int fd = dbus_watch_get_fd(watch);
#endif
XD_DEBUG_MESSAGE ("%d", fd);
XD_DEBUG_MESSAGE ("fd %d", fd);
if (fd == -1)
return FALSE;
......@@ -781,7 +781,8 @@ xd_add_watch (watch, data)
return TRUE;
}
/* Remove connection file descriptor from input_wait_mask. */
/* Remove connection file descriptor from input_wait_mask. DATA is
the used bus, either QCdbus_system_bus or QCdbus_session_bus. */
void
xd_remove_watch (watch, data)
DBusWatch *watch;
......@@ -791,18 +792,25 @@ xd_remove_watch (watch, data)
if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
{
#if HAVE_DBUS_WATCH_GET_UNIX_FD
/* TODO: Reverse these on Win32, which prefers the opposite. */
/* TODO: Reverse these on Win32, which prefers the opposite. */
int fd = dbus_watch_get_unix_fd(watch);
if (fd == -1)
fd = dbus_watch_get_socket(watch);
#else
int fd = dbus_watch_get_fd(watch);
#endif
XD_DEBUG_MESSAGE ("%d", fd);
XD_DEBUG_MESSAGE ("fd %d", fd);
if (fd == -1)
return;
/* Unset session environment. */
if ((data != NULL) && (data == (void*) XHASH (QCdbus_session_bus)))
{
XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS");
unsetenv ("DBUS_SESSION_BUS_ADDRESS");
}
/* Remove the file descriptor from input_wait_mask. */
delete_keyboard_wait_descriptor (fd);
}
......@@ -825,11 +833,12 @@ This is an internal function, it shall not be used outside dbus.el. */)
/* Open a connection to the bus. */
connection = xd_initialize (bus);
/* Add the watch functions. */
/* Add the watch functions. We pass also the bus as data, in order
to distinguish between the busses in xd_remove_watch. */
if (!dbus_connection_set_watch_functions (connection,
xd_add_watch,
xd_remove_watch,
NULL, NULL, NULL))
NULL, (void*) XHASH (bus), NULL))
XD_SIGNAL1 (build_string ("Cannot add watch functions"));
/* Return. */
......
......@@ -533,8 +533,8 @@ fontset_find_font (fontset, c, face, id, fallback)
{
Lisp_Object vec, font_group;
int i, charset_matched = 0, found_index;
FRAME_PTR f = (FRAMEP (FONTSET_FRAME (fontset)))
? XFRAME (selected_frame) : XFRAME (FONTSET_FRAME (fontset));
FRAME_PTR f = (FRAMEP (FONTSET_FRAME (fontset))
? XFRAME (FONTSET_FRAME (fontset)) : XFRAME (selected_frame));
Lisp_Object rfont_def;
font_group = fontset_get_font_group (fontset, fallback ? -1 : c);
......
......@@ -9502,7 +9502,13 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
key = read_char (NILP (prompt), nmaps,
(Lisp_Object *) submaps, last_nonmenu_event,
&used_mouse_menu, NULL);
if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
/* When switching to a new tty (with a new keyboard),
read_char returns the new buffer, rather than -2
(Bug#5095). This is because `terminal-init-xterm'
calls read-char, which eats the wrong_kboard_jmpbuf
return. Any better way to fix this? -- cyd */
|| (interrupted_kboard != current_kboard))
{
int found = 0;
struct kboard *k;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment