aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rwxr-xr-xautogen/configure9
-rw-r--r--configure.in6
-rw-r--r--doc/emacs/ChangeLog5
-rw-r--r--doc/emacs/abbrevs.texi2
-rw-r--r--doc/lispref/ChangeLog4
-rw-r--r--doc/lispref/modes.texi54
-rw-r--r--etc/NEWS8
-rw-r--r--lisp/ChangeLog33
-rw-r--r--lisp/comint.el6
-rw-r--r--lisp/emacs-lisp/easy-mmode.el5
-rw-r--r--lisp/facemenu.el2
-rw-r--r--lisp/gnus/ChangeLog7
-rw-r--r--lisp/gnus/mml.el4
-rw-r--r--lisp/ido.el8
-rw-r--r--lisp/net/tramp-sh.el17
-rw-r--r--lisp/notifications.el3
-rw-r--r--lisp/progmodes/octave-inf.el3
-rw-r--r--lisp/progmodes/octave-mod.el4
-rw-r--r--lisp/subr.el40
-rw-r--r--nt/ChangeLog9
-rw-r--r--nt/INSTALL2
-rw-r--r--nt/makefile.w32-in1
-rw-r--r--src/ChangeLog14
-rw-r--r--src/dispextern.h1
-rw-r--r--src/intervals.c2
-rw-r--r--src/keyboard.c16
-rw-r--r--src/sysdep.c5
28 files changed, 201 insertions, 73 deletions
diff --git a/ChangeLog b/ChangeLog
index ade71ae09a7..2cd3f8eef85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12011-10-25 Nali Toja <nalitoja@gmail.com> (tiny change)
2
3 * configure.in (HAVE_GNU_MAKE): Respect MAKE env-var. (Bug#9868)
4
12011-10-24 Paul Eggert <eggert@cs.ucla.edu> 52011-10-24 Paul Eggert <eggert@cs.ucla.edu>
2 6
3 * configure.in (LIB_PTHREAD): Prepend -lpthread to LIBS (Bug#9852) 7 * configure.in (LIB_PTHREAD): Prepend -lpthread to LIBS (Bug#9852)
diff --git a/autogen/configure b/autogen/configure
index cd68832a547..979aafc60ff 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -9509,7 +9509,7 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
9509 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using GNU Make" >&5 9509 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using GNU Make" >&5
9510$as_echo_n "checking whether we are using GNU Make... " >&6; } 9510$as_echo_n "checking whether we are using GNU Make... " >&6; }
9511 HAVE_GNU_MAKE=no 9511 HAVE_GNU_MAKE=no
9512 testval=`make --version 2>/dev/null | grep 'GNU Make'` 9512 testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
9513 if test "x$testval" != x; then 9513 if test "x$testval" != x; then
9514 HAVE_GNU_MAKE=yes 9514 HAVE_GNU_MAKE=yes
9515 else 9515 else
@@ -10529,7 +10529,8 @@ fi
10529if test "$HAVE_PTHREAD" = yes; then 10529if test "$HAVE_PTHREAD" = yes; then
10530 case "${canonical}" in 10530 case "${canonical}" in
10531 *-hpux*) ;; 10531 *-hpux*) ;;
10532 *) LIB_PTHREAD="-lpthread" ;; 10532 *) LIB_PTHREAD="-lpthread"
10533 LIBS="$LIB_PTHREAD $LIBS" ;;
10533 esac 10534 esac
10534 10535
10535$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h 10536$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
@@ -24302,14 +24303,14 @@ echo
24302 24303
24303if test "$HAVE_NS" = "yes"; then 24304if test "$HAVE_NS" = "yes"; then
24304 echo 24305 echo
24305 echo "You must run \"make install\" in order to test the built application. 24306 echo "You must run \"${MAKE-make} install\" in order to test the built application.
24306The installed application will go to nextstep/Emacs.app and can be 24307The installed application will go to nextstep/Emacs.app and can be
24307run or moved from there." 24308run or moved from there."
24308 if test "$EN_NS_SELF_CONTAINED" = "yes"; then 24309 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
24309 echo "The application will be fully self-contained." 24310 echo "The application will be fully self-contained."
24310 else 24311 else
24311 echo "The lisp resources for the application will be installed under ${prefix}. 24312 echo "The lisp resources for the application will be installed under ${prefix}.
24312You may need to run \"make install\" with sudo. The application will fail 24313You may need to run \"${MAKE-make} install\" with sudo. The application will fail
24313to run if these resources are not installed." 24314to run if these resources are not installed."
24314 fi 24315 fi
24315 echo 24316 echo
diff --git a/configure.in b/configure.in
index fcf569b5ef2..14eec4835d5 100644
--- a/configure.in
+++ b/configure.in
@@ -1376,7 +1376,7 @@ dnl check for GNU Make if we have GCC and autodepend is on.
1376if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then 1376if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1377 AC_MSG_CHECKING([whether we are using GNU Make]) 1377 AC_MSG_CHECKING([whether we are using GNU Make])
1378 HAVE_GNU_MAKE=no 1378 HAVE_GNU_MAKE=no
1379 testval=`make --version 2>/dev/null | grep 'GNU Make'` 1379 testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
1380 if test "x$testval" != x; then 1380 if test "x$testval" != x; then
1381 HAVE_GNU_MAKE=yes 1381 HAVE_GNU_MAKE=yes
1382 else 1382 else
@@ -3795,14 +3795,14 @@ echo
3795 3795
3796if test "$HAVE_NS" = "yes"; then 3796if test "$HAVE_NS" = "yes"; then
3797 echo 3797 echo
3798 echo "You must run \"make install\" in order to test the built application. 3798 echo "You must run \"${MAKE-make} install\" in order to test the built application.
3799The installed application will go to nextstep/Emacs.app and can be 3799The installed application will go to nextstep/Emacs.app and can be
3800run or moved from there." 3800run or moved from there."
3801 if test "$EN_NS_SELF_CONTAINED" = "yes"; then 3801 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
3802 echo "The application will be fully self-contained." 3802 echo "The application will be fully self-contained."
3803 else 3803 else
3804 echo "The lisp resources for the application will be installed under ${prefix}. 3804 echo "The lisp resources for the application will be installed under ${prefix}.
3805You may need to run \"make install\" with sudo. The application will fail 3805You may need to run \"${MAKE-make} install\" with sudo. The application will fail
3806to run if these resources are not installed." 3806to run if these resources are not installed."
3807 fi 3807 fi
3808 echo 3808 echo
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a1310e87b15..4b51486069c 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
12011-10-25 Glenn Morris <rgm@gnu.org>
2
3 * abbrevs.texi (Saving Abbrevs):
4 quietly-read-abbrev-file is not a command. (Bug#9866)
5
12011-10-24 Chong Yidong <cyd@gnu.org> 62011-10-24 Chong Yidong <cyd@gnu.org>
2 7
3 * display.texi (Scrolling): Document scroll-up-line and 8 * display.texi (Scrolling): Document scroll-up-line and
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index d0833ea0854..2eafadf4841 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -286,8 +286,6 @@ sessions.
286Write a file @var{file} describing all defined abbrevs. 286Write a file @var{file} describing all defined abbrevs.
287@item M-x read-abbrev-file @key{RET} @var{file} @key{RET} 287@item M-x read-abbrev-file @key{RET} @var{file} @key{RET}
288Read the file @var{file} and define abbrevs as specified therein. 288Read the file @var{file} and define abbrevs as specified therein.
289@item M-x quietly-read-abbrev-file @key{RET} @var{file} @key{RET}
290Similar but do not display a message about what is going on.
291@item M-x define-abbrevs 289@item M-x define-abbrevs
292Define abbrevs from definitions in current buffer. 290Define abbrevs from definitions in current buffer.
293@item M-x insert-abbrevs 291@item M-x insert-abbrevs
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 490280dae29..acc334ea000 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,7 @@
12011-10-26 Chong Yidong <cyd@gnu.org>
2
3 * modes.texi (Running Hooks): Document with-wrapper-hook.
4
12011-10-18 Chong Yidong <cyd@gnu.org> 52011-10-18 Chong Yidong <cyd@gnu.org>
2 6
3 * display.texi (Glyphless Chars): New node. 7 * display.texi (Glyphless Chars): New node.
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index eb81ebc4acb..9d652901e53 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -84,8 +84,9 @@ its value is just a single function, not a list of functions.
84@node Running Hooks 84@node Running Hooks
85@subsection Running Hooks 85@subsection Running Hooks
86 86
87 At the appropriate times, Emacs uses the @code{run-hooks} function 87 In this section, we document the @code{run-hooks} function, which is
88and the other functions below to run particular hooks. 88used to run a normal hook. We also document the functions for running
89various kinds of abnormal hooks.
89 90
90@defun run-hooks &rest hookvars 91@defun run-hooks &rest hookvars
91This function takes one or more normal hook variable names as 92This function takes one or more normal hook variable names as
@@ -108,28 +109,49 @@ be run as well.
108@end defun 109@end defun
109 110
110@defun run-hook-with-args hook &rest args 111@defun run-hook-with-args hook &rest args
111This function is the way to run an abnormal hook and always call all 112This function runs an abnormal hook by calling all the hook functions in
112of the hook functions. It calls each of the hook functions one by 113@var{hook}, passing each one the arguments @var{args}.
113one, passing each of them the arguments @var{args}.
114@end defun 114@end defun
115 115
116@defun run-hook-with-args-until-failure hook &rest args 116@defun run-hook-with-args-until-failure hook &rest args
117This function is the way to run an abnormal hook until one of the hook 117This function runs an abnormal hook by calling each hook function in
118functions fails. It calls each of the hook functions, passing each of 118turn, stopping if one of them ``fails'' by returning @code{nil}. Each
119them the arguments @var{args}, until some hook function returns 119hook function is passed the arguments @var{args}. If this function
120@code{nil}. It then stops and returns @code{nil}. If none of the 120stops because one of the hook functions fails, it returns @code{nil};
121hook functions return @code{nil}, it returns a non-@code{nil} value. 121otherwise it returns a non-@code{nil} value.
122@end defun 122@end defun
123 123
124@defun run-hook-with-args-until-success hook &rest args 124@defun run-hook-with-args-until-success hook &rest args
125This function is the way to run an abnormal hook until a hook function 125This function runs an abnormal hook by calling each hook function,
126succeeds. It calls each of the hook functions, passing each of them 126stopping if one of them ``succeeds'' by returning a non-@code{nil}
127the arguments @var{args}, until some hook function returns 127value. Each hook function is passed the arguments @var{args}. If this
128non-@code{nil}. Then it stops, and returns whatever was returned by 128function stops because one of the hook functions returns a
129the last hook function that was called. If all hook functions return 129non-@code{nil} value, it returns that value; otherwise it returns
130@code{nil}, it returns @code{nil} as well. 130@code{nil}.
131@end defun 131@end defun
132 132
133@defmac with-wrapper-hook hook args &rest body
134This macro runs the abnormal hook @code{hook} as a series of nested
135``wrapper functions'' around the @var{body} forms. The effect is
136similar to nested @code{around} advices (@pxref{Around-Advice}).
137
138Each hook function must accept an argument list consisting of a function
139@var{fun}, followed by the additional arguments listed in @var{args}.
140The function @var{fun} passed to the very first hook function in
141@var{hook} does the same as @var{body}, if it is called with arguments
142@var{args}. The @var{fun} passed to each successive hook function is
143constructed from all the preceding hook functions (and @var{body}); if
144this @var{fun} is called with arguments @var{args}, it does what the
145@code{with-wrapper-hook} call would if the preceding hook functions were
146the only ones in @var{hook}.
147
148In the function definition of the hook function, @var{fun} can be called
149any number of times (including not calling it at all). This function
150definition is then used to construct the @var{fun} passed to the next
151hook function in @var{hook}, if any. The last or ``outermost''
152@var{fun} is called once to produce the effect.
153@end defmac
154
133@node Setting Hooks 155@node Setting Hooks
134@subsection Setting Hooks 156@subsection Setting Hooks
135 157
diff --git a/etc/NEWS b/etc/NEWS
index d6b0bdb484c..58f3fa492e2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1169,7 +1169,13 @@ must also be supplied.
1169** pre/post-command-hook are not reset to nil upon error. 1169** pre/post-command-hook are not reset to nil upon error.
1170Instead, the offending function is removed. 1170Instead, the offending function is removed.
1171 1171
1172** New low-level function run-hook-wrapped. 1172** New hook types
1173
1174*** New function `run-hook-wrapped' for running an abnormal hook by
1175passing the hook functions as arguments to a "wrapping" function.
1176+++
1177*** New macro `with-wrapper-hook' for running an abnormal hook as a
1178set of "wrapping" filters, similar to around advice.
1173 1179
1174** `server-eval-at' is provided to allow evaluating forms on different 1180** `server-eval-at' is provided to allow evaluating forms on different
1175Emacs server instances. 1181Emacs server instances.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b20ebccea89..88248f00559 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,36 @@
12011-10-26 Michael Albinus <michael.albinus@gmx.de>
2
3 * ido.el (ido-file-name-all-completions-1): Do not require
4 tramp.el explicitely. (Bug#7583)
5
62011-10-26 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * progmodes/octave-mod.el:
9 * progmodes/octave-inf.el: Update maintainer.
10
112011-10-26 Chong Yidong <cyd@gnu.org>
12
13 * subr.el (with-wrapper-hook): Rewrite doc.
14
152011-10-25 Michael Albinus <michael.albinus@gmx.de>
16
17 * net/tramp-sh.el (tramp-sh-handle-file-directory-p): Return t for
18 filenames "/method:foo:". (Bug#9793)
19
202011-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
21
22 * comint.el (comint-get-old-input-default): Fix use-prompt-regexp case
23 (bug#9865).
24
252011-10-24 Glenn Morris <rgm@gnu.org>
26
27 * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. (Bug#9819)
28
292011-10-24 Michael Albinus <michael.albinus@gmx.de>
30
31 * notifications.el: Add the requirement of a running D-Bus session
32 bus to the Commentary.
33
12011-10-24 Juri Linkov <juri@jurta.org> 342011-10-24 Juri Linkov <juri@jurta.org>
2 35
3 * isearch.el (isearch-occur): Let-bind `search-spaces-regexp' to 36 * isearch.el (isearch-occur): Let-bind `search-spaces-regexp' to
diff --git a/lisp/comint.el b/lisp/comint.el
index 591be5e2d9d..b91b82adb21 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2151,8 +2151,10 @@ current line, if point is on an output field.
2151If `comint-use-prompt-regexp' is non-nil, then return 2151If `comint-use-prompt-regexp' is non-nil, then return
2152the current line with any initial string matching the regexp 2152the current line with any initial string matching the regexp
2153`comint-prompt-regexp' removed." 2153`comint-prompt-regexp' removed."
2154 (let ((bof (field-beginning))) 2154 (let (bof)
2155 (if (null (get-char-property bof 'field)) ;Not `output'. 2155 (if (and (not comint-use-prompt-regexp)
2156 ;; Make sure we're in an input rather than output field.
2157 (null (get-char-property (setq bof (field-beginning)) 'field)))
2156 (field-string-no-properties bof) 2158 (field-string-no-properties bof)
2157 (comint-bol) 2159 (comint-bol)
2158 (buffer-substring-no-properties (point) (line-end-position))))) 2160 (buffer-substring-no-properties (point) (line-end-position)))))
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index b1cb0615e43..4b6f4d634ca 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -94,8 +94,9 @@ Optional LIGHTER is displayed in the modeline when the mode is on.
94Optional KEYMAP is the default keymap bound to the mode keymap. 94Optional KEYMAP is the default keymap bound to the mode keymap.
95 If non-nil, it should be a variable name (whose value is a keymap), 95 If non-nil, it should be a variable name (whose value is a keymap),
96 or an expression that returns either a keymap or a list of 96 or an expression that returns either a keymap or a list of
97 arguments for `easy-mmode-define-keymap'. If KEYMAP is not a symbol, 97 arguments for `easy-mmode-define-keymap'. If you supply a KEYMAP
98 this also defines the variable MODE-map. 98 argument that is not a symbol, this macro defines the variable
99 MODE-map and gives it the value that KEYMAP specifies.
99 100
100BODY contains code to execute each time the mode is enabled or disabled. 101BODY contains code to execute each time the mode is enabled or disabled.
101 It is executed after toggling the mode, and before running MODE-hook. 102 It is executed after toggling the mode, and before running MODE-hook.
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index 54b17d58f33..4f9db02b5e1 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -645,6 +645,8 @@ a list of colors that the current display can handle."
645 ;; text in menu entries) and `SystemWindowText' (the default 645 ;; text in menu entries) and `SystemWindowText' (the default
646 ;; color w32 uses for the text in windows and dialogs) may 646 ;; color w32 uses for the text in windows and dialogs) may
647 ;; be the same display color and be adjacent in the list. 647 ;; be the same display color and be adjacent in the list.
648 ;; These system colors all have names prefixed with "System",
649 ;; which is hardcoded in w32fns.c (SYSTEM_COLOR_PREFIX).
648 ;; This makes them different to any other color. Bug#9722 650 ;; This makes them different to any other color. Bug#9722
649 (not (and (eq system-type 'windows-nt) 651 (not (and (eq system-type 'windows-nt)
650 (string-match-p "^System" (car (car l)))))) 652 (string-match-p "^System" (car (car l))))))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 592d0671c26..8b4e993149e 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
12011-10-26 Daiki Ueno <ueno@unixuser.org>
2
3 * mml.el (mml-quote-region): Quote <#secure> tag.
4 (mml-generate-mime-1): Unquote <#secure> tag.
5
12011-10-20 Chong Yidong <cyd@gnu.org> 62011-10-20 Chong Yidong <cyd@gnu.org>
2 7
3 * gnus-cite.el (gnus-message-citation-mode): Doc fix (in Emacs 24, 8 * gnus-cite.el (gnus-message-citation-mode): Doc fix (in Emacs 24,
@@ -18548,7 +18553,7 @@
18548 gnus-requst-update-info with explicit code to sync the in-memory 18553 gnus-requst-update-info with explicit code to sync the in-memory
18549 info read flags with the marks being sync'd to the backend. 18554 info read flags with the marks being sync'd to the backend.
18550 18555
18551 *gnus-util.el (gnus-pp): Add optional stream to match pp API. 18556 * gnus-util.el (gnus-pp): Add optional stream to match pp API.
18552 18557
185532004-09-28 Teodor Zlatanov <tzz@lifelogs.com> 185582004-09-28 Teodor Zlatanov <tzz@lifelogs.com>
18554 18559
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 0d2ae2a845a..352fa329e3e 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -525,7 +525,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
525 ;; Remove quotes from quoted tags. 525 ;; Remove quotes from quoted tags.
526 (goto-char (point-min)) 526 (goto-char (point-min))
527 (while (re-search-forward 527 (while (re-search-forward
528 "<#!+/?\\(part\\|multipart\\|external\\|mml\\)" 528 "<#!+/?\\(part\\|multipart\\|external\\|mml\\|secure\\)"
529 nil t) 529 nil t)
530 (delete-region (+ (match-beginning 0) 2) 530 (delete-region (+ (match-beginning 0) 2)
531 (+ (match-beginning 0) 3)))))) 531 (+ (match-beginning 0) 3))))))
@@ -1232,7 +1232,7 @@ If not set, `default-directory' will be used."
1232 (goto-char (point-min)) 1232 (goto-char (point-min))
1233 ;; Quote parts. 1233 ;; Quote parts.
1234 (while (re-search-forward 1234 (while (re-search-forward
1235 "<#!*/?\\(multipart\\|part\\|external\\|mml\\)" nil t) 1235 "<#!*/?\\(multipart\\|part\\|external\\|mml\\|secure\\)" nil t)
1236 ;; Insert ! after the #. 1236 ;; Insert ! after the #.
1237 (goto-char (+ (match-beginning 0) 2)) 1237 (goto-char (+ (match-beginning 0) 2))
1238 (insert "!"))))) 1238 (insert "!")))))
diff --git a/lisp/ido.el b/lisp/ido.el
index 88599013ce6..fda4c0316f7 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3457,8 +3457,6 @@ This is to make them appear as if they were \"virtual buffers\"."
3457 (nconc ido-temp-list items) 3457 (nconc ido-temp-list items)
3458 (setq ido-temp-list items))) 3458 (setq ido-temp-list items)))
3459 3459
3460(declare-function tramp-tramp-file-p "tramp" (name))
3461
3462(defun ido-file-name-all-completions-1 (dir) 3460(defun ido-file-name-all-completions-1 (dir)
3463 (cond 3461 (cond
3464 ((ido-nonreadable-directory-p dir) '()) 3462 ((ido-nonreadable-directory-p dir) '())
@@ -3466,8 +3464,6 @@ This is to make them appear as if they were \"virtual buffers\"."
3466 ;; Caller must have done that if necessary. 3464 ;; Caller must have done that if necessary.
3467 3465
3468 ((and ido-enable-tramp-completion 3466 ((and ido-enable-tramp-completion
3469 (or (fboundp 'tramp-completion-mode-p)
3470 (require 'tramp nil t))
3471 (string-match "\\`/[^/]+[:@]\\'" dir)) 3467 (string-match "\\`/[^/]+[:@]\\'" dir))
3472 ;; Strip method:user@host: part of tramp completions. 3468 ;; Strip method:user@host: part of tramp completions.
3473 ;; Tramp completions do not include leading slash. 3469 ;; Tramp completions do not include leading slash.
@@ -3480,7 +3476,9 @@ This is to make them appear as if they were \"virtual buffers\"."
3480 ;; /ftp:user@host:./ => ok 3476 ;; /ftp:user@host:./ => ok
3481 (and 3477 (and
3482 (not (string= "/ftp:" dir)) 3478 (not (string= "/ftp:" dir))
3483 (tramp-tramp-file-p dir) 3479 (file-remote-p dir)
3480 ;; tramp-ftp-file-name-p is available only when tramp
3481 ;; has been loaded.
3484 (fboundp 'tramp-ftp-file-name-p) 3482 (fboundp 'tramp-ftp-file-name-p)
3485 (funcall 'tramp-ftp-file-name-p dir) 3483 (funcall 'tramp-ftp-file-name-p dir)
3486 (string-match ":\\'" dir) 3484 (string-match ":\\'" dir)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 56424f79476..55732194bc8 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1594,17 +1594,14 @@ and gid of the corresponding user is taken. Both parameters must be integers."
1594 1594
1595(defun tramp-sh-handle-file-directory-p (filename) 1595(defun tramp-sh-handle-file-directory-p (filename)
1596 "Like `file-directory-p' for Tramp files." 1596 "Like `file-directory-p' for Tramp files."
1597 ;; Care must be taken that this function returns `t' for symlinks
1598 ;; pointing to directories. Surely the most obvious implementation
1599 ;; would be `test -d', but that returns false for such symlinks.
1600 ;; CCC: Stefan Monnier says that `test -d' follows symlinks. And
1601 ;; I now think he's right. So we could be using `test -d', couldn't
1602 ;; we?
1603 ;;
1604 ;; Alternatives: `cd %s', `test -d %s'
1605 (with-parsed-tramp-file-name filename nil 1597 (with-parsed-tramp-file-name filename nil
1606 (with-file-property v localname "file-directory-p" 1598 ;; `file-directory-p' is used as predicate for filename completion.
1607 (tramp-run-test "-d" filename)))) 1599 ;; Sometimes, when a connection is not established yet, it is
1600 ;; desirable to return t immediately for "/method:foo:". It can
1601 ;; be expected that this is always a directory.
1602 (or (zerop (length localname))
1603 (with-file-property v localname "file-directory-p"
1604 (tramp-run-test "-d" filename)))))
1608 1605
1609(defun tramp-sh-handle-file-writable-p (filename) 1606(defun tramp-sh-handle-file-writable-p (filename)
1610 "Like `file-writable-p' for Tramp files." 1607 "Like `file-writable-p' for Tramp files."
diff --git a/lisp/notifications.el b/lisp/notifications.el
index 42cd40df36b..a4e7fdd5425 100644
--- a/lisp/notifications.el
+++ b/lisp/notifications.el
@@ -30,6 +30,9 @@
30;; 30;;
31;; (require 'notifications) 31;; (require 'notifications)
32 32
33;; For proper usage, Emacs must be started in an environment with an
34;; active D-Bus session bus.
35
33;;; Code: 36;;; Code:
34(eval-when-compile 37(eval-when-compile
35 (require 'cl)) 38 (require 'cl))
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index e9d890c3f26..421f476016e 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at> 5;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
6;; Author: John Eaton <jwe@bevo.che.wisc.edu> 6;; Author: John Eaton <jwe@bevo.che.wisc.edu>
7;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at> 7;; Maintainer: FSF
8;; Keywords: languages 8;; Keywords: languages
9;; Package: octave-mod 9;; Package: octave-mod
10 10
@@ -68,6 +68,7 @@ mode, set this to (\"-q\" \"--traditional\")."
68 (define-key map "\C-c\C-l" 'inferior-octave-dynamic-list-input-ring) 68 (define-key map "\C-c\C-l" 'inferior-octave-dynamic-list-input-ring)
69 (define-key map [menu-bar inout list-history] 69 (define-key map [menu-bar inout list-history]
70 '("List Input History" . inferior-octave-dynamic-list-input-ring)) 70 '("List Input History" . inferior-octave-dynamic-list-input-ring))
71 ;; FIXME: free C-h so it can do the describe-prefix-bindings.
71 (define-key map "\C-c\C-h" 'info-lookup-symbol) 72 (define-key map "\C-c\C-h" 'info-lookup-symbol)
72 map) 73 map)
73 "Keymap used in Inferior Octave mode.") 74 "Keymap used in Inferior Octave mode.")
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index 5e13b8533e7..28e25a35c70 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at> 5;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
6;; Author: John Eaton <jwe@octave.org> 6;; Author: John Eaton <jwe@octave.org>
7;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at> 7;; Maintainer: FSF
8;; Keywords: languages 8;; Keywords: languages
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
@@ -223,6 +223,7 @@ parenthetical grouping.")
223 (define-key map "\C-c]" 'smie-close-block) 223 (define-key map "\C-c]" 'smie-close-block)
224 (define-key map "\C-c/" 'smie-close-block) 224 (define-key map "\C-c/" 'smie-close-block)
225 (define-key map "\C-c\C-f" 'octave-insert-defun) 225 (define-key map "\C-c\C-f" 'octave-insert-defun)
226 ;; FIXME: free C-h so it can do the describe-prefix-bindings.
226 (define-key map "\C-c\C-h" 'info-lookup-symbol) 227 (define-key map "\C-c\C-h" 'info-lookup-symbol)
227 (define-key map "\C-c\C-il" 'octave-send-line) 228 (define-key map "\C-c\C-il" 'octave-send-line)
228 (define-key map "\C-c\C-ib" 'octave-send-block) 229 (define-key map "\C-c\C-ib" 'octave-send-block)
@@ -236,6 +237,7 @@ parenthetical grouping.")
236 (define-key map "\C-c\C-i\C-f" 'octave-send-defun) 237 (define-key map "\C-c\C-i\C-f" 'octave-send-defun)
237 (define-key map "\C-c\C-i\C-r" 'octave-send-region) 238 (define-key map "\C-c\C-i\C-r" 'octave-send-region)
238 (define-key map "\C-c\C-i\C-s" 'octave-show-process-buffer) 239 (define-key map "\C-c\C-i\C-s" 'octave-show-process-buffer)
240 ;; FIXME: free C-h so it can do the describe-prefix-bindings.
239 (define-key map "\C-c\C-i\C-h" 'octave-hide-process-buffer) 241 (define-key map "\C-c\C-i\C-h" 'octave-hide-process-buffer)
240 (define-key map "\C-c\C-i\C-k" 'octave-kill-process) 242 (define-key map "\C-c\C-i\C-k" 'octave-kill-process)
241 map) 243 map)
diff --git a/lisp/subr.el b/lisp/subr.el
index c88cef0ba0f..7ac287d2473 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1364,18 +1364,26 @@ All symbols are bound before the VALUEFORMs are evalled."
1364 ,@(mapcar (lambda (binder) `(setq ,@binder)) binders) 1364 ,@(mapcar (lambda (binder) `(setq ,@binder)) binders)
1365 ,@body)) 1365 ,@body))
1366 1366
1367(defmacro with-wrapper-hook (var args &rest body) 1367(defmacro with-wrapper-hook (hook args &rest body)
1368 "Run BODY wrapped with the VAR hook. 1368 "Run BODY, using wrapper functions from HOOK with additional ARGS.
1369VAR is a special hook: its functions are called with a first argument 1369HOOK is an abnormal hook. Each hook function in HOOK \"wraps\"
1370which is the \"original\" code (the BODY), so the hook function can wrap 1370around the preceding ones, like a set of nested `around' advices.
1371the original function, or call it any number of times (including not calling 1371
1372it at all). This is similar to an `around' advice. 1372Each hook function should accept an argument list consisting of a
1373VAR is normally a symbol (a variable) in which case it is treated like 1373function FUN, followed by the additional arguments in ARGS.
1374a hook, with a buffer-local and a global part. But it can also be an 1374
1375arbitrary expression. 1375The FUN passed to the first hook function in HOOK performs BODY,
1376ARGS is a list of variables which will be passed as additional arguments 1376if it is called with arguments ARGS. The FUN passed to each
1377to each function, after the initial argument, and which the first argument 1377successive hook function is defined based on the preceding hook
1378expects to receive when called." 1378functions; if called with arguments ARGS, it does what the
1379`with-wrapper-hook' call would do if the preceding hook functions
1380were the only ones present in HOOK.
1381
1382In the function definition of each hook function, FUN can be
1383called any number of times (including not calling it at all).
1384That function definition is then used to construct the FUN passed
1385to the next hook function, if any. The last (or \"outermost\")
1386FUN is then called once."
1379 (declare (indent 2) (debug (form sexp body))) 1387 (declare (indent 2) (debug (form sexp body)))
1380 ;; We need those two gensyms because CL's lexical scoping is not available 1388 ;; We need those two gensyms because CL's lexical scoping is not available
1381 ;; for function arguments :-( 1389 ;; for function arguments :-(
@@ -1404,11 +1412,11 @@ expects to receive when called."
1404 ;; Once there are no more functions on the hook, run 1412 ;; Once there are no more functions on the hook, run
1405 ;; the original body. 1413 ;; the original body.
1406 (apply (lambda ,args ,@body) ,argssym))))) 1414 (apply (lambda ,args ,@body) ,argssym)))))
1407 (funcall ,runrestofhook ,var 1415 (funcall ,runrestofhook ,hook
1408 ;; The global part of the hook, if any. 1416 ;; The global part of the hook, if any.
1409 ,(if (symbolp var) 1417 ,(if (symbolp hook)
1410 `(if (local-variable-p ',var) 1418 `(if (local-variable-p ',hook)
1411 (default-value ',var))) 1419 (default-value ',hook)))
1412 (list ,@args))))) 1420 (list ,@args)))))
1413 1421
1414(defun add-to-list (list-var element &optional append compare-fn) 1422(defun add-to-list (list-var element &optional append compare-fn)
diff --git a/nt/ChangeLog b/nt/ChangeLog
index fb3a168ebfe..08fd7677077 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,12 @@
12011-10-25 Eli Zaretskii <eliz@gnu.org>
2
3 * makefile.w32-in (dist): Don't put the top-level INSTALL into the
4 distribution. (Bug#9861)
5
62011-10-25 Christoph Scholtes <cschol2112@googlemail.com>
7
8 * INSTALL: Update URL for GTK download page.
9
12011-10-19 Eli Zaretskii <eliz@gnu.org> 102011-10-19 Eli Zaretskii <eliz@gnu.org>
2 11
3 * config.nt (HAVE_TZNAME, HAVE_DECL_TZNAME): Define. 12 * config.nt (HAVE_TZNAME, HAVE_DECL_TZNAME): Define.
diff --git a/nt/INSTALL b/nt/INSTALL
index b4a97011922..613610890ae 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -323,7 +323,7 @@
323 For PNG images, we recommend to use versions 1.4.x and later of 323 For PNG images, we recommend to use versions 1.4.x and later of
324 libpng, because previous versions had security issues. You can find 324 libpng, because previous versions had security issues. You can find
325 precompiled libraries and headers on the GTK download page for 325 precompiled libraries and headers on the GTK download page for
326 Windows (http://www.gtk.org/download-windows.html). 326 Windows (http://www.gtk.org/download/win32.php).
327 327
328 Versions 1.4.0 and later of libpng are binary incompatible with 328 Versions 1.4.0 and later of libpng are binary incompatible with
329 earlier versions, so Emacs will only look for libpng libraries which 329 earlier versions, so Emacs will only look for libpng libraries which
diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in
index 4e4e6eccbb7..07d9be2c117 100644
--- a/nt/makefile.w32-in
+++ b/nt/makefile.w32-in
@@ -263,7 +263,6 @@ dist: install-bin
263 $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR) 263 $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)
264 $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR) 264 $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)
265 $(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR) 265 $(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)
266 $(CP) "$(INSTALL_DIR)/INSTALL" $(TMP_DIST_DIR)
267 $(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR) 266 $(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)
268 $(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR) 267 $(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)
269 $(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR) 268 $(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)
diff --git a/src/ChangeLog b/src/ChangeLog
index 3f9b5beeab6..854c4987be5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,17 @@
12011-10-25 Paul Eggert <eggert@cs.ucla.edu>
2
3 * dispextern.h (Fcontrolling_tty_p): New decl (Bug#6649 part 2).
4
52011-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
6
7 * keyboard.c (test_undefined): New function (bug#9751).
8 (read_key_sequence): Use it to detect when a key is bound to `undefined'.
9
102011-10-25 Enami Tsugutomo <tsugutomo.enami@jp.sony.com>
11
12 * sysdep.c (init_sys_modes): Fix the check for the controlling
13 terminal (Bug#6649).
14
12011-10-20 Eli Zaretskii <eliz@gnu.org> 152011-10-20 Eli Zaretskii <eliz@gnu.org>
2 16
3 * dispextern.h (struct bidi_it): New member next_en_type. 17 * dispextern.h (struct bidi_it): New member next_en_type.
diff --git a/src/dispextern.h b/src/dispextern.h
index 40e41923554..006ceb31a5a 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3374,6 +3374,7 @@ extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, un
3374extern void set_tty_color_mode (struct tty_display_info *, struct frame *); 3374extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
3375extern struct terminal *get_named_tty (const char *); 3375extern struct terminal *get_named_tty (const char *);
3376EXFUN (Ftty_type, 1); 3376EXFUN (Ftty_type, 1);
3377EXFUN (Fcontrolling_tty_p, 1);
3377extern void create_tty_output (struct frame *); 3378extern void create_tty_output (struct frame *);
3378extern struct terminal *init_tty (const char *, const char *, int); 3379extern struct terminal *init_tty (const char *, const char *, int);
3379extern void tty_append_glyph (struct it *); 3380extern void tty_append_glyph (struct it *);
diff --git a/src/intervals.c b/src/intervals.c
index 2063655cdb9..1f3f8cf793e 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1723,8 +1723,6 @@ graft_intervals_into_buffer (INTERVAL source, EMACS_INT position,
1723 BUF_INTERVALS (buffer)->position = BEG; 1723 BUF_INTERVALS (buffer)->position = BEG;
1724 BUF_INTERVALS (buffer)->up_obj = 1; 1724 BUF_INTERVALS (buffer)->up_obj = 1;
1725 1725
1726 /* Explicitly free the old tree here? */
1727
1728 return; 1726 return;
1729 } 1727 }
1730 1728
diff --git a/src/keyboard.c b/src/keyboard.c
index a21008b9502..f06c8794a54 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -8918,6 +8918,14 @@ keyremap_step (Lisp_Object *keybuf, int bufsize, volatile keyremap *fkey,
8918 return 0; 8918 return 0;
8919} 8919}
8920 8920
8921static int
8922test_undefined (Lisp_Object binding)
8923{
8924 return (EQ (binding, Qundefined)
8925 || (!NILP (binding) && SYMBOLP (binding)
8926 && EQ (Fcommand_remapping (binding, Qnil, Qnil), Qundefined)));
8927}
8928
8921/* Read a sequence of keys that ends with a non prefix character, 8929/* Read a sequence of keys that ends with a non prefix character,
8922 storing it in KEYBUF, a buffer of size BUFSIZE. 8930 storing it in KEYBUF, a buffer of size BUFSIZE.
8923 Prompt with PROMPT. 8931 Prompt with PROMPT.
@@ -9868,7 +9876,9 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9868 } 9876 }
9869 } 9877 }
9870 9878
9871 if (first_binding < nmaps && NILP (submaps[first_binding]) 9879 if (first_binding < nmaps
9880 && NILP (submaps[first_binding])
9881 && !test_undefined (defs[first_binding])
9872 && indec.start >= t) 9882 && indec.start >= t)
9873 /* There is a binding and it's not a prefix. 9883 /* There is a binding and it's not a prefix.
9874 (and it doesn't have any input-decode-map translation pending). 9884 (and it doesn't have any input-decode-map translation pending).
@@ -9895,7 +9905,9 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9895 /* If there's a binding (i.e. 9905 /* If there's a binding (i.e.
9896 first_binding >= nmaps) we don't want 9906 first_binding >= nmaps) we don't want
9897 to apply this function-key-mapping. */ 9907 to apply this function-key-mapping. */
9898 fkey.end + 1 == t && first_binding >= nmaps, 9908 fkey.end + 1 == t
9909 && (first_binding >= nmaps
9910 || test_undefined (defs[first_binding])),
9899 &diff, prompt); 9911 &diff, prompt);
9900 UNGCPRO; 9912 UNGCPRO;
9901 if (done) 9913 if (done)
diff --git a/src/sysdep.c b/src/sysdep.c
index b0d5a1abbe3..d666f8dbb79 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -854,6 +854,7 @@ void
854init_sys_modes (struct tty_display_info *tty_out) 854init_sys_modes (struct tty_display_info *tty_out)
855{ 855{
856 struct emacs_tty tty; 856 struct emacs_tty tty;
857 Lisp_Object terminal;
857 858
858 Vtty_erase_char = Qnil; 859 Vtty_erase_char = Qnil;
859 860
@@ -907,7 +908,9 @@ init_sys_modes (struct tty_display_info *tty_out)
907 tty.main.c_cflag &= ~PARENB;/* Don't check parity */ 908 tty.main.c_cflag &= ~PARENB;/* Don't check parity */
908 } 909 }
909#endif 910#endif
910 if (tty_out->input == stdin) 911
912 XSETTERMINAL(terminal, tty_out->terminal);
913 if (!NILP (Fcontrolling_tty_p (terminal)))
911 { 914 {
912 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */ 915 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */
913 /* Set up C-g for both SIGQUIT and SIGINT. 916 /* Set up C-g for both SIGQUIT and SIGINT.