aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-06-21 12:45:59 -0700
committerGlenn Morris2014-06-21 12:45:59 -0700
commitc400516ab1d827d08225ffb3e1bc1969c73cc45e (patch)
treeb16343b9e11c916c96b12ab56b6024cad91d3aff
parent539ad293eb36b4cf458cbdb5a6b37f5cd1bb68a1 (diff)
parent8047f439ec7d0bbe0085800a13bee8da883ae4dd (diff)
downloademacs-c400516ab1d827d08225ffb3e1bc1969c73cc45e.tar.gz
emacs-c400516ab1d827d08225ffb3e1bc1969c73cc45e.zip
Merge from emacs-24; up to 2014-06-06T02:22:40Z!monnier@iro.umontreal.ca
-rw-r--r--ChangeLog10
-rw-r--r--admin/ChangeLog5
-rw-r--r--admin/notes/elpa4
-rw-r--r--configure.ac14
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/positions.texi6
-rw-r--r--doc/misc/ChangeLog9
-rw-r--r--doc/misc/autotype.texi7
-rw-r--r--doc/misc/dbus.texi4
-rw-r--r--lisp/ChangeLog95
-rw-r--r--lisp/delsel.el1
-rw-r--r--lisp/dired.el5
-rw-r--r--lisp/emacs-lisp/smie.el25
-rw-r--r--lisp/mouse.el12
-rw-r--r--lisp/net/dbus.el10
-rw-r--r--lisp/progmodes/python.el16
-rw-r--r--lisp/progmodes/ruby-mode.el2
-rw-r--r--lisp/progmodes/sh-script.el13
-rw-r--r--lisp/simple.el9
-rw-r--r--lisp/skeleton.el7
-rw-r--r--lisp/term/w32-win.el17
-rw-r--r--lisp/term/xterm.el4
-rw-r--r--lisp/textmodes/texinfo.el15
-rw-r--r--lisp/window.el2
-rw-r--r--lisp/xt-mouse.el33
-rw-r--r--src/ChangeLog39
-rw-r--r--src/dispextern.h3
-rw-r--r--src/fileio.c5
-rw-r--r--src/font.c3
-rw-r--r--src/image.c47
-rw-r--r--src/indent.c27
-rw-r--r--src/keyboard.c23
-rw-r--r--src/xdisp.c7
-rw-r--r--test/ChangeLog4
-rw-r--r--test/automated/python-tests.el9
-rwxr-xr-xtest/indent/shell.sh18
36 files changed, 401 insertions, 114 deletions
diff --git a/ChangeLog b/ChangeLog
index 412b840a55e..32fde8b0c4c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
12014-06-21 Paul Eggert <eggert@cs.ucla.edu>
2
3 * configure.ac: Warn about --enable-link-time-optimization's issues
4 in --help message (Bug#17806).
5
6 Port to GCC 4.9.0 with link time optimization (Bug#17806).
7 * configure.ac (CFLAGS): With link time optimization,
8 use -ffat-lto-objects if supported; otherwise Emacs won't
9 build with GCC 4.9.0.
10
12014-06-20 Paul Eggert <eggert@cs.ucla.edu> 112014-06-20 Paul Eggert <eggert@cs.ucla.edu>
2 12
3 Diagnose failures due to colons in directory names (Bug#17278). 13 Diagnose failures due to colons in directory names (Bug#17278).
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 02d8dc08eac..dc128325523 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,8 @@
12014-06-21 Stephen Berman <Stephen.Berman@gmx.net>
2
3 * notes/elpa: Use "git" instead of "bzr" in the name of machine to
4 clone the repository from.
5
12014-06-13 Glenn Morris <rgm@gnu.org> 62014-06-13 Glenn Morris <rgm@gnu.org>
2 7
3 * unidata/Makefile.in (${DSTDIR}/charprop.el): 8 * unidata/Makefile.in (${DSTDIR}/charprop.el):
diff --git a/admin/notes/elpa b/admin/notes/elpa
index 469a0ca8bd1..39226044a91 100644
--- a/admin/notes/elpa
+++ b/admin/notes/elpa
@@ -3,9 +3,9 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
3The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git 3The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
4repository named "elpa", hosted on Savannah. To check it out: 4repository named "elpa", hosted on Savannah. To check it out:
5 5
6 git clone git://bzr.sv.gnu.org/emacs/elpa 6 git clone git://git.sv.gnu.org/emacs/elpa
7 cd elpa 7 cd elpa
8 git remote set-url --push origin git+ssh://bzr.sv.gnu.org/srv/git/emacs/elpa 8 git remote set-url --push origin git+ssh://git.sv.gnu.org/srv/git/emacs/elpa
9 [create task branch for edits, etc.] 9 [create task branch for edits, etc.]
10 10
11Changes to this branch propagate to elpa.gnu.org via a "deployment" script run 11Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
diff --git a/configure.ac b/configure.ac
index c4ca395d6d1..b253d2465fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -931,8 +931,11 @@ edit_cflags="
931AC_ARG_ENABLE(link-time-optimization, 931AC_ARG_ENABLE(link-time-optimization,
932[AS_HELP_STRING([--enable-link-time-optimization], 932[AS_HELP_STRING([--enable-link-time-optimization],
933 [build emacs with link-time optimization. 933 [build emacs with link-time optimization.
934 This is supported for gcc since 4.5.0 and clang. 934 This requires GCC 4.5.0 or later, or clang.
935 Note that clang support is experimental - see INSTALL])], 935 (Note that clang support is experimental - see INSTALL.)
936 It also makes Emacs harder to debug, and when we tried it
937 with GCC 4.9.0 x86-64 it made Emacs slower, so it's not
938 recommended for typical use.])],
936if test "${enableval}" != "no"; then 939if test "${enableval}" != "no"; then
937 ac_lto_supported=no 940 ac_lto_supported=no
938 if test $emacs_cv_clang = yes; then 941 if test $emacs_cv_clang = yes; then
@@ -970,6 +973,13 @@ if test "${enableval}" != "no"; then
970 # command, so plugin name is appended to ARFLAGS. 973 # command, so plugin name is appended to ARFLAGS.
971 ARFLAGS="cru --plugin $GOLD_PLUGIN" 974 ARFLAGS="cru --plugin $GOLD_PLUGIN"
972 RANLIB="$RANLIB --plugin $GOLD_PLUGIN" 975 RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
976 else
977 dnl The following is needed for GCC 4.9.0. The GCC 4.9.0 release notes
978 dnl suggest that instead of -ffat-lto-objects we should use gcc-ar and
979 dnl gcc-ranlib in place of ar and ranlib, but gcc-ar makes /usr/bin/ar
980 dnl dump core on Fedora 20, so play it safe for now.
981 gl_COMPILER_OPTION_IF([-ffat-lto-objects],
982 [CFLAGS="$CFLAGS -ffat-lto-objects"])
973 fi 983 fi
974 fi 984 fi
975fi) 985fi)
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 4089068c906..3b7ca9c7288 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12014-06-21 Eli Zaretskii <eliz@gnu.org>
2
3 * positions.texi (Screen Lines): Clarify how columns are counted
4 by vertical-motion.
5
12014-06-15 Glenn Morris <rgm@gnu.org> 62014-06-15 Glenn Morris <rgm@gnu.org>
2 7
3 * Makefile.in (bootstrap-clean): New. 8 * Makefile.in (bootstrap-clean): New.
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 5a77b37e7e1..e32f0ef0b34 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -500,7 +500,11 @@ is negative, it moves up instead.
500The @var{count} argument can be a cons cell, @code{(@var{cols} 500The @var{count} argument can be a cons cell, @code{(@var{cols}
501. @var{lines})}, instead of an integer. Then the function moves by 501. @var{lines})}, instead of an integer. Then the function moves by
502@var{lines} screen lines, and puts point @var{cols} columns from the 502@var{lines} screen lines, and puts point @var{cols} columns from the
503start of that screen line. 503visual start of that screen line. Note that @var{cols} are counted
504from the @emph{visual} start of the line; if the window is scrolled
505horizontally (@pxref{Horizontal Scrolling}), the column on which point
506will end is in addition to the number of columns by which the text is
507scrolled.
504 508
505The return value is the number of screen lines over which point was 509The return value is the number of screen lines over which point was
506moved. The value may be less in absolute value than @var{count} if 510moved. The value may be less in absolute value than @var{count} if
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index a6ddb15496d..a1a99e5fd06 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,12 @@
12014-06-21 Eli Zaretskii <eliz@gnu.org>
2
3 * autotype.texi (Skeleton Language): Document the feature of \n
4 when at eol.
5
62014-06-21 Michael Albinus <michael.albinus@gmx.de>
7
8 * dbus.texi (Type Conversion): Formatting edits in example.
9
12014-06-15 Michael Albinus <michael.albinus@gmx.de> 102014-06-15 Michael Albinus <michael.albinus@gmx.de>
2 11
3 Sync with Tramp 2.2.10. 12 Sync with Tramp 2.2.10.
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 04f74cc44cb..e0fce74bd3f 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -232,8 +232,11 @@ Insert string or character. Literal strings and characters are passed through
232@code{skeleton-transformation} when that is non-@code{nil}. 232@code{skeleton-transformation} when that is non-@code{nil}.
233@item @code{?\n} 233@item @code{?\n}
234@c ??? something seems very wrong here. 234@c ??? something seems very wrong here.
235Insert a newline and align under current line. Use newline character 235Insert a newline and align under current line, but not if this is the
236@code{?\n} to prevent alignment. 236last element of a skeleton and the newline would be inserted at end of
237line. Use newline character @code{?\n} to prevent alignment. Use
238@code{"\n"} as the last string element of a skeleton to insert a
239newline after the skeleton unconditionally.
237@item @code{_} 240@item @code{_}
238Interesting point. When wrapping skeletons around successive regions, they are 241Interesting point. When wrapping skeletons around successive regions, they are
239put at these places. Point is left at first @code{_} where nothing is wrapped. 242put at these places. Point is left at first @code{_} where nothing is wrapped.
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index e7f822498b6..0c19cb963e7 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -1060,11 +1060,11 @@ elements of this array. Example:
1060 "" ;; No icon. 1060 "" ;; No icon.
1061 "Notification summary" ;; Summary. 1061 "Notification summary" ;; Summary.
1062 (format ;; Body. 1062 (format ;; Body.
1063 "This is a test notification, raised from %s" (emacs-version)) 1063 "This is a test notification, raised from\n%S" (emacs-version))
1064 '(:array) ;; No actions (empty array of strings). 1064 '(:array) ;; No actions (empty array of strings).
1065 '(:array :signature "@{sv@}") ;; No hints 1065 '(:array :signature "@{sv@}") ;; No hints
1066 ;; (empty array of dictionary entries). 1066 ;; (empty array of dictionary entries).
1067 :int32 -1) ;; Default timeout. 1067 :int32 -1) ;; Default timeout.
1068 1068
1069@result{} 3 1069@result{} 3
1070@end lisp 1070@end lisp
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d8146a96312..95c3566dd5b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,98 @@
12014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
2
3 Fix completion retrieval parsing (bug#17209).
4 * progmodes/python.el (python-mode):
5 (python-util-strip-string): New function.
6 (python-shell-completion-get-completions): Use it.
7
82014-06-21 Eli Zaretskii <eliz@gnu.org>
9
10 * skeleton.el (skeleton-insert): Fix last change.
11
122014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
13
14 Enhancements for outline integration (bug#17796).
15 * progmodes/python.el (python-mode): Properly set
16 outline-heading-end-regexp so that comments after colons for
17 defuns are supported.
18
192014-06-21 Eli Zaretskii <eliz@gnu.org>
20
21 * skeleton.el (skeleton-insert): Doc fix.
22
232014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
24
25 * emacs-lisp/smie.el (smie-config--guess): Fix typo.
26 (smie-config-guess): Use smie-config-local so the rules are obeyed
27 (bug#17818).
28
29 * mouse.el (mouse-drag-line): Don't re-add to unread-comment-events,
30 since it's already done inside the loop (bug#17819).
31
322014-06-21 Martin Rudalics <rudalics@gmx.at>
33
34 * mouse.el (mouse-drag-line): Re-remove code initially removed
35 on 2013-03-09 and inadvertently reintroduced on 2013-11-30
36 (Bug#17819).
37
382014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
39
40 * progmodes/sh-script.el (sh-smie-sh-rules): For { after &&, don't
41 align with the surrounding parent (bug#17721).
42
432014-06-21 Eli Zaretskii <eliz@gnu.org>
44
45 * textmodes/texinfo.el (texinfo-mode): Set skeleton-end-newline
46 locally to nil.
47 (texinfo-insert-block, texinfo-insert-@end)
48 (texinfo-insert-@example, texinfo-insert-@quotation): Adjust to
49 local setting of skeleton-end-newline by adding an explicit \n to
50 the skeletons where appropriate. (Bug#17801)
51
522014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
53
54 * emacs-lisp/smie.el (smie--hanging-eolp-function): New var.
55 (smie-indent--hanging-p): Use it.
56 * progmodes/sh-script.el (sh-set-shell): Set it (bug#17621).
57
582014-06-21 Leo Liu <sdl.web@gmail.com>
59
60 * simple.el (read-quoted-char): Don't let help chars pop up help
61 buffer. (Bug#16617)
62
632014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
64
65 * progmodes/sh-script.el (sh-smie-sh-rules): Use same rule for && as
66 for | (bug#17621).
67
68 * xt-mouse.el (xterm-mouse--read-event-sequence-1000):
69 Drop unknown events instead of burping.
70
712014-06-21 Eli Zaretskii <eliz@gnu.org>
72
73 * term/w32-win.el (dynamic-library-alist): Support giflib 5.1.0
74 and later. (Bug#17790)
75
762014-06-21 Juri Linkov <juri@jurta.org>
77
78 * dired.el (dired-mark-pop-up): Let-bind display-buffer-mark-dedicated
79 to `soft'. (Bug#17554)
80
812014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
82
83 * delsel.el (electric-newline-and-maybe-indent): Mark it as well
84 (bug#17737).
85
862014-06-21 Dmitry Gutov <dgutov@yandex.ru>
87
88 * progmodes/ruby-mode.el (ruby-font-lock-keywords): Don't fontify
89 `!' in `!~' with `font-lock-negation-char-face'. (Bug#17732)
90
912014-06-21 Michael Albinus <michael.albinus@gmx.de>
92
93 * net/dbus.el (dbus-call-method): Push only non D-Bus events into
94 `unread-command-events'.
95
12014-06-19 William Xu <william.xwl@gmail.com> 962014-06-19 William Xu <william.xwl@gmail.com>
2 97
3 * progmodes/hideif.el (hif-string-to-number): Don't return float for 98 * progmodes/hideif.el (hif-string-to-number): Don't return float for
diff --git a/lisp/delsel.el b/lisp/delsel.el
index ab71e606444..1ada02705fe 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -188,6 +188,7 @@ See `delete-selection-helper'."
188(put 'reindent-then-newline-and-indent 'delete-selection t) 188(put 'reindent-then-newline-and-indent 'delete-selection t)
189(put 'newline-and-indent 'delete-selection t) 189(put 'newline-and-indent 'delete-selection t)
190(put 'newline 'delete-selection t) 190(put 'newline 'delete-selection t)
191(put 'electric-newline-and-maybe-indent 'delete-selection t)
191(put 'open-line 'delete-selection 'kill) 192(put 'open-line 'delete-selection 'kill)
192 193
193;; This is very useful for canceling a selection in the minibuffer without 194;; This is very useful for canceling a selection in the minibuffer without
diff --git a/lisp/dired.el b/lisp/dired.el
index fc90b7a98e0..a241fb3b339 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3099,7 +3099,10 @@ argument or confirmation)."
3099 ;; If FILES defaulted to the current line's file. 3099 ;; If FILES defaulted to the current line's file.
3100 (= (length files) 1)) 3100 (= (length files) 1))
3101 (apply function args) 3101 (apply function args)
3102 (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*")))) 3102 (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*")))
3103 ;; Mark *Marked Files* window as softly-dedicated, to prevent
3104 ;; other buffers e.g. *Completions* from reusing it (bug#17554).
3105 (display-buffer-mark-dedicated 'soft))
3103 (with-current-buffer buffer 3106 (with-current-buffer buffer
3104 (with-current-buffer-window 3107 (with-current-buffer-window
3105 buffer 3108 buffer
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 3e40d37aacf..1819daa3df0 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -1155,6 +1155,15 @@ NUMBER offset by NUMBER, relative to a base token
1155The functions whose name starts with \"smie-rule-\" are helper functions 1155The functions whose name starts with \"smie-rule-\" are helper functions
1156designed specifically for use in this function.") 1156designed specifically for use in this function.")
1157 1157
1158(defvar smie--hanging-eolp-function
1159 ;; FIXME: This is a quick hack for 24.4. Don't document it and replace with
1160 ;; a well-defined function with a cleaner interface instead!
1161 (lambda ()
1162 (skip-chars-forward " \t")
1163 (or (eolp)
1164 (and ;; (looking-at comment-start-skip) ;(bug#16041).
1165 (forward-comment (point-max))))))
1166
1158(defalias 'smie-rule-hanging-p 'smie-indent--hanging-p) 1167(defalias 'smie-rule-hanging-p 'smie-indent--hanging-p)
1159(defun smie-indent--hanging-p () 1168(defun smie-indent--hanging-p ()
1160 "Return non-nil if the current token is \"hanging\". 1169 "Return non-nil if the current token is \"hanging\".
@@ -1168,10 +1177,7 @@ the beginning of a line."
1168 (not (eobp)) 1177 (not (eobp))
1169 ;; Could be an open-paren. 1178 ;; Could be an open-paren.
1170 (forward-char 1)) 1179 (forward-char 1))
1171 (skip-chars-forward " \t") 1180 (funcall smie--hanging-eolp-function)
1172 (or (eolp)
1173 (and ;; (looking-at comment-start-skip) ;(bug#16041).
1174 (forward-comment (point-max))))
1175 (point)))))) 1181 (point))))))
1176 1182
1177(defalias 'smie-rule-bolp 'smie-indent--bolp) 1183(defalias 'smie-rule-bolp 'smie-indent--bolp)
@@ -2132,7 +2138,7 @@ position corresponding to each rule."
2132 nil 2138 nil
2133 (push (cons (+ offset (nth 2 sig)) sig) rules) 2139 (push (cons (+ offset (nth 2 sig)) sig) rules)
2134 ;; Adjust the rest of the data. 2140 ;; Adjust the rest of the data.
2135 (pcase-dolist ((and cotrace `(,count ,toffset ,trace)) 2141 (pcase-dolist ((and cotrace `(,count ,toffset . ,trace))
2136 cotraces) 2142 cotraces)
2137 (setf (nth 1 cotrace) (- toffset offset)) 2143 (setf (nth 1 cotrace) (- toffset offset))
2138 (dolist (sig trace) 2144 (dolist (sig trace)
@@ -2161,15 +2167,14 @@ To save the result for future sessions, use `smie-config-save'."
2161 (cond 2167 (cond
2162 ((null config) (message "Nothing to change")) 2168 ((null config) (message "Nothing to change"))
2163 ((null smie-config--buffer-local) 2169 ((null smie-config--buffer-local)
2164 (message "Local rules set") 2170 (smie-config-local config)
2165 (setq smie-config--buffer-local config)) 2171 (message "Local rules set"))
2166 ((y-or-n-p "Replace existing local config? ") 2172 ((y-or-n-p "Replace existing local config? ")
2167 (message "Local rules replaced") 2173 (message "Local rules replaced")
2168 (setq smie-config--buffer-local config)) 2174 (smie-config-local config))
2169 ((y-or-n-p "Merge with existing local config? ") 2175 ((y-or-n-p "Merge with existing local config? ")
2170 (message "Local rules adjusted") 2176 (message "Local rules adjusted")
2171 (setq smie-config--buffer-local 2177 (smie-config-local (append config smie-config--buffer-local)))
2172 (append config smie-config--buffer-local)))
2173 (t 2178 (t
2174 (message "Rules guessed: %S" config))))) 2179 (message "Rules guessed: %S" config)))))
2175 2180
diff --git a/lisp/mouse.el b/lisp/mouse.el
index ca9ea5dadca..f5a09f45a07 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -390,8 +390,6 @@ must be one of the symbols `header', `mode', or `vertical'."
390 (window (posn-window start)) 390 (window (posn-window start))
391 (frame (window-frame window)) 391 (frame (window-frame window))
392 (minibuffer-window (minibuffer-window frame)) 392 (minibuffer-window (minibuffer-window frame))
393 (on-link (and mouse-1-click-follows-link
394 (mouse-on-link-p start)))
395 (side (and (eq line 'vertical) 393 (side (and (eq line 'vertical)
396 (or (cdr (assq 'vertical-scroll-bars 394 (or (cdr (assq 'vertical-scroll-bars
397 (frame-parameters frame))) 395 (frame-parameters frame)))
@@ -487,15 +485,7 @@ must be one of the symbols `header', `mode', or `vertical'."
487 (unless (zerop growth) 485 (unless (zerop growth)
488 (setq dragged t) 486 (setq dragged t)
489 (adjust-window-trailing-edge 487 (adjust-window-trailing-edge
490 window (if (eq line 'mode) growth (- growth)) nil t)))))) 488 window (if (eq line 'mode) growth (- growth)) nil t))))))))
491 ;; Process the terminating event.
492 (when (and (mouse-event-p event) on-link (not dragged)
493 (mouse--remap-link-click-p start-event event))
494 ;; If mouse-2 has never been done by the user, it doesn't have
495 ;; the necessary property to be interpreted correctly.
496 (put 'mouse-2 'event-kind 'mouse-click)
497 (setcar event 'mouse-2)
498 (push event unread-command-events))))
499 489
500(defun mouse-drag-mode-line (start-event) 490(defun mouse-drag-mode-line (start-event)
501 "Change the height of a window by dragging on the mode line." 491 "Change the height of a window by dragging on the mode line."
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index 7f230a9d2ab..66170dafef8 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -318,10 +318,12 @@ object is returned instead of a list containing this single Lisp object.
318 (while (eq (car result) :pending) 318 (while (eq (car result) :pending)
319 (let ((event (let ((inhibit-redisplay t) unread-command-events) 319 (let ((event (let ((inhibit-redisplay t) unread-command-events)
320 (read-event nil nil check-interval)))) 320 (read-event nil nil check-interval))))
321 (when event 321 (when event
322 (setf unread-command-events 322 (if (ignore-errors (dbus-check-event event))
323 (nconc unread-command-events 323 (setf result (gethash key dbus-return-values-table))
324 (cons event nil)))) 324 (setf unread-command-events
325 (nconc unread-command-events
326 (cons event nil)))))
325 (when (< check-interval 1) 327 (when (< check-interval 1)
326 (setf check-interval (* check-interval 1.05)))))) 328 (setf check-interval (* check-interval 1.05))))))
327 (when (eq (car result) :error) 329 (when (eq (car result) :error)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 91a85526420..743981b3714 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2461,8 +2461,10 @@ LINE is used to detect the context on how to complete given INPUT."
2461 (and completion-code 2461 (and completion-code
2462 (> (length input) 0) 2462 (> (length input) 0)
2463 (with-current-buffer (process-buffer process) 2463 (with-current-buffer (process-buffer process)
2464 (let ((completions (python-shell-send-string-no-output 2464 (let ((completions
2465 (format completion-code input) process))) 2465 (python-util-strip-string
2466 (python-shell-send-string-no-output
2467 (format completion-code input) process))))
2466 (and (> (length completions) 2) 2468 (and (> (length completions) 2)
2467 (split-string completions 2469 (split-string completions
2468 "^'\\|^\"\\|;\\|'$\\|\"$" t))))))) 2470 "^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
@@ -3648,6 +3650,14 @@ returned as is."
3648 n (1- n))) 3650 n (1- n)))
3649 (reverse acc)))) 3651 (reverse acc))))
3650 3652
3653(defun python-util-strip-string (string)
3654 "Strip STRING whitespace and newlines from end and beginning."
3655 (replace-regexp-in-string
3656 (rx (or (: string-start (* (any whitespace ?\r ?\n)))
3657 (: (* (any whitespace ?\r ?\n)) string-end)))
3658 ""
3659 string))
3660
3651 3661
3652(defun python-electric-pair-string-delimiter () 3662(defun python-electric-pair-string-delimiter ()
3653 (when (and electric-pair-mode 3663 (when (and electric-pair-mode
@@ -3736,7 +3746,7 @@ returned as is."
3736 3746
3737 (set (make-local-variable 'outline-regexp) 3747 (set (make-local-variable 'outline-regexp)
3738 (python-rx (* space) block-start)) 3748 (python-rx (* space) block-start))
3739 (set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n") 3749 (set (make-local-variable 'outline-heading-end-regexp) ":[^\n]*\n")
3740 (set (make-local-variable 'outline-level) 3750 (set (make-local-variable 'outline-level)
3741 #'(lambda () 3751 #'(lambda ()
3742 "`outline-level' function for Python mode." 3752 "`outline-level' function for Python mode."
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 74edf7a680f..3c20279600e 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -2152,7 +2152,7 @@ See `font-lock-syntax-table'.")
2152 (ruby-match-expression-expansion 2152 (ruby-match-expression-expansion
2153 2 font-lock-variable-name-face t) 2153 2 font-lock-variable-name-face t)
2154 ;; Negation char. 2154 ;; Negation char.
2155 ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]" 2155 ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=~]"
2156 1 font-lock-negation-char-face) 2156 1 font-lock-negation-char-face)
2157 ;; Character literals. 2157 ;; Character literals.
2158 ;; FIXME: Support longer escape sequences. 2158 ;; FIXME: Support longer escape sequences.
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index b4148ef5621..c3032b4f195 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1975,7 +1975,11 @@ May return nil if the line should not be treated as continued."
1975 (<= indent initial)) 1975 (<= indent initial))
1976 `(column . ,(+ initial sh-indentation))))) 1976 `(column . ,(+ initial sh-indentation)))))
1977 (`(:before . ,(or `"(" `"{" `"[")) 1977 (`(:before . ,(or `"(" `"{" `"["))
1978 (if (smie-rule-hanging-p) (smie-rule-parent))) 1978 (when (smie-rule-hanging-p)
1979 (if (not (smie-rule-prev-p "&&" "||" "|"))
1980 (smie-rule-parent)
1981 (smie-backward-sexp 'halfexp)
1982 `(column . ,(smie-indent-virtual)))))
1979 ;; FIXME: Maybe this handling of ;; should be made into 1983 ;; FIXME: Maybe this handling of ;; should be made into
1980 ;; a smie-rule-terminator function that takes the substitute ";" as arg. 1984 ;; a smie-rule-terminator function that takes the substitute ";" as arg.
1981 (`(:before . ,(or `";;" `";&" `";;&")) 1985 (`(:before . ,(or `";;" `";&" `";;&"))
@@ -1993,7 +1997,7 @@ May return nil if the line should not be treated as continued."
1993 (smie-rule-bolp)))) 1997 (smie-rule-bolp))))
1994 (current-column) 1998 (current-column)
1995 (smie-indent-calculate))))) 1999 (smie-indent-calculate)))))
1996 (`(:after . "|") (if (smie-rule-parent-p "|") nil 4)) 2000 (`(:after . ,(or `"|" `"&&" `"||")) (if (smie-rule-parent-p token) nil 4))
1997 ;; Attempt at backward compatibility with the old config variables. 2001 ;; Attempt at backward compatibility with the old config variables.
1998 (`(:before . "fi") (sh-var-value 'sh-indent-for-fi)) 2002 (`(:before . "fi") (sh-var-value 'sh-indent-for-fi))
1999 (`(:before . "done") (sh-var-value 'sh-indent-for-done)) 2003 (`(:before . "done") (sh-var-value 'sh-indent-for-done))
@@ -2300,6 +2304,11 @@ Calls the value of `sh-set-shell-hook' if set."
2300 (let ((mksym (lambda (name) 2304 (let ((mksym (lambda (name)
2301 (intern (format "sh-smie-%s-%s" 2305 (intern (format "sh-smie-%s-%s"
2302 sh-indent-supported-here name))))) 2306 sh-indent-supported-here name)))))
2307 (add-function :around (local 'smie--hanging-eolp-function)
2308 (lambda (orig)
2309 (if (looking-at "[ \t]*\\\\\n")
2310 (goto-char (match-end 0))
2311 (funcall orig))))
2303 (smie-setup (symbol-value (funcall mksym "grammar")) 2312 (smie-setup (symbol-value (funcall mksym "grammar"))
2304 (funcall mksym "rules") 2313 (funcall mksym "rules")
2305 :forward-token (funcall mksym "forward-token") 2314 :forward-token (funcall mksym "forward-token")
diff --git a/lisp/simple.el b/lisp/simple.el
index 031aac3a49c..63bfbb51419 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -658,11 +658,16 @@ any other terminator is used itself as input.
658The optional argument PROMPT specifies a string to use to prompt the user. 658The optional argument PROMPT specifies a string to use to prompt the user.
659The variable `read-quoted-char-radix' controls which radix to use 659The variable `read-quoted-char-radix' controls which radix to use
660for numeric input." 660for numeric input."
661 (let ((message-log-max nil) done (first t) (code 0) translated) 661 (let ((message-log-max nil)
662 (help-events (delq nil (mapcar (lambda (c) (unless (characterp c) c))
663 help-event-list)))
664 done (first t) (code 0) translated)
662 (while (not done) 665 (while (not done)
663 (let ((inhibit-quit first) 666 (let ((inhibit-quit first)
664 ;; Don't let C-h get the help message--only help function keys. 667 ;; Don't let C-h or other help chars get the help
668 ;; message--only help function keys. See bug#16617.
665 (help-char nil) 669 (help-char nil)
670 (help-event-list help-events)
666 (help-form 671 (help-form
667 "Type the special character you want to use, 672 "Type the special character you want to use,
668or the octal character code. 673or the octal character code.
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index f85dc8ef068..28792ac558e 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -197,7 +197,8 @@ not needed, a prompt-string or an expression for complex read functions.
197If ELEMENT is a string or a character it gets inserted (see also 197If ELEMENT is a string or a character it gets inserted (see also
198`skeleton-transformation-function'). Other possibilities are: 198`skeleton-transformation-function'). Other possibilities are:
199 199
200 \\n go to next line and indent according to mode 200 \\n if not the last element of the skeleton, or not at eol,
201 go to next line and indent according to mode
201 _ interesting point, interregion here 202 _ interesting point, interregion here
202 - interesting point, no interregion interaction, overrides 203 - interesting point, no interregion interaction, overrides
203 interesting point set by _ 204 interesting point set by _
@@ -212,6 +213,10 @@ If ELEMENT is a string or a character it gets inserted (see also
212After termination, point will be positioned at the last occurrence of - 213After termination, point will be positioned at the last occurrence of -
213or at the first occurrence of _ or at the end of the inserted text. 214or at the first occurrence of _ or at the end of the inserted text.
214 215
216Note that \\n as the last element of the skeleton only inserts a
217newline if not at eol. If you want to unconditionally insert a newline
218at the end of the skeleton, use \"\\n\" instead.
219
215Further elements can be defined via `skeleton-further-elements'. 220Further elements can be defined via `skeleton-further-elements'.
216ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted 221ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted
217repeatedly for different inputs. The SKELETON is processed as often as 222repeatedly for different inputs. The SKELETON is processed as often as
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index e2cabe5397d..e103562ba7a 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -251,13 +251,16 @@ This returns an error if any Emacs frames are X frames, or always under W32."
251 ;; libraries according to the version of giflib we were 251 ;; libraries according to the version of giflib we were
252 ;; compiled against. (If we were compiled without GIF support, 252 ;; compiled against. (If we were compiled without GIF support,
253 ;; libgif-version's value is -1.) 253 ;; libgif-version's value is -1.)
254 (if (>= libgif-version 50000) 254 (if (>= libgif-version 50100)
255 ;; Yes, giflib 5.x uses 6 as the major version of the API, 255 ;; Yes, giflib 5.0 uses 6 as the major version of the API,
256 ;; thus "libgif-6.dll" below (giflib 4.x used 5 as the 256 ;; and giflib 5.1 uses 7, thus "libgif-7.dll" and
257 ;; major API version). 257 ;; "libgif-6.dll" below (giflib 4.x used 5 as the major API
258 ;; giflib5.dll is from the lua-files project. 258 ;; version). giflib5.dll is from the lua-files project,
259 '(gif "libgif-6.dll" "giflib5.dll") 259 ;; and gif.dll is from luapower.
260 '(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll")) 260 '(gif "libgif-7.dll")
261 (if (>= libgif-version 50000)
262 '(gif "libgif-6.dll" "giflib5.dll" "gif.dll")
263 '(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll")))
261 '(svg "librsvg-2-2.dll") 264 '(svg "librsvg-2-2.dll")
262 '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll") 265 '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
263 '(glib "libglib-2.0-0.dll") 266 '(glib "libglib-2.0-0.dll")
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 20d4d415254..1d085017214 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -606,8 +606,8 @@ The relevant features are:
606 ;; Gnome terminal 2.32.1 reports 1;2802;0 606 ;; Gnome terminal 2.32.1 reports 1;2802;0
607 (setq version 200)) 607 (setq version 200))
608 (when (equal (match-string 1 str) "83") 608 (when (equal (match-string 1 str) "83")
609 ;; OSX's Terminal.app (version 2.3 (309), which returns 83;40003;0) 609 ;; `screen' (which returns 83;40003;0) seems to also lack support for
610 ;; seems to also lack support for some of these (bug#17607). 610 ;; some of these (bug#17607).
611 (setq version 240)) 611 (setq version 240))
612 ;; If version is 242 or higher, assume the xterm supports 612 ;; If version is 242 or higher, assume the xterm supports
613 ;; reporting the background color (TODO: maybe earlier 613 ;; reporting the background color (TODO: maybe earlier
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index e1e2656275c..6f441d67b3c 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -44,6 +44,8 @@
44 44
45(defvar outline-heading-alist) 45(defvar outline-heading-alist)
46 46
47(defvar skeleton-end-newline)
48
47(defgroup texinfo nil 49(defgroup texinfo nil
48 "Texinfo Mode." 50 "Texinfo Mode."
49 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces) 51 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
@@ -626,6 +628,11 @@ value of `texinfo-mode-hook'."
626 (setq-local tex-first-line-header-regexp "^\\\\input") 628 (setq-local tex-first-line-header-regexp "^\\\\input")
627 (setq-local tex-trailer "@bye\n") 629 (setq-local tex-trailer "@bye\n")
628 630
631 ;; Prevent skeleton.el from adding a newline to each inserted
632 ;; skeleton. Those which do want a newline do that explicitly in
633 ;; their define-skeleton form.
634 (setq-local skeleton-end-newline nil)
635
629 ;; Prevent filling certain lines, in addition to ones specified by 636 ;; Prevent filling certain lines, in addition to ones specified by
630 ;; the user. 637 ;; the user.
631 (setq-local auto-fill-inhibit-regexp 638 (setq-local auto-fill-inhibit-regexp
@@ -653,7 +660,7 @@ Puts point on a blank line between them."
653 (if (or (string-match "\\`def" str) 660 (if (or (string-match "\\`def" str)
654 (member str '("table" "ftable" "vtable"))) 661 (member str '("table" "ftable" "vtable")))
655 '(nil " " -)) 662 '(nil " " -))
656 \n _ \n "@end " str \n) 663 \n _ \n "@end " str \n \n)
657 664
658(defun texinfo-inside-macro-p (macro &optional bound) 665(defun texinfo-inside-macro-p (macro &optional bound)
659 "Non-nil if inside a macro matching the regexp MACRO." 666 "Non-nil if inside a macro matching the regexp MACRO."
@@ -732,7 +739,7 @@ With prefix argument or inside @code or @example, inserts a plain \"."
732 (backward-word 1) 739 (backward-word 1)
733 (texinfo-last-unended-begin) 740 (texinfo-last-unended-begin)
734 (or (match-string 1) '-))) 741 (or (match-string 1) '-)))
735 \n "@end " str \n) 742 \n "@end " str \n \n)
736 743
737(define-skeleton texinfo-insert-braces 744(define-skeleton texinfo-insert-braces
738 "Make a pair of braces and be poised to type inside of them. 745 "Make a pair of braces and be poised to type inside of them.
@@ -771,7 +778,7 @@ The default is not to surround any existing words with the braces."
771(define-skeleton texinfo-insert-@example 778(define-skeleton texinfo-insert-@example
772 "Insert the string `@example' in a Texinfo buffer." 779 "Insert the string `@example' in a Texinfo buffer."
773 nil 780 nil
774 \n "@example" \n) 781 \n "@example" \n \n)
775 782
776(define-skeleton texinfo-insert-@file 783(define-skeleton texinfo-insert-@file
777 "Insert a `@file{...}' command in a Texinfo buffer. 784 "Insert a `@file{...}' command in a Texinfo buffer.
@@ -816,7 +823,7 @@ Leave point after `@node'."
816 823
817(define-skeleton texinfo-insert-@quotation 824(define-skeleton texinfo-insert-@quotation
818 "Insert the string `@quotation' in a Texinfo buffer." 825 "Insert the string `@quotation' in a Texinfo buffer."
819 \n "@quotation" \n) 826 \n "@quotation" \n _ \n)
820 827
821(define-skeleton texinfo-insert-@samp 828(define-skeleton texinfo-insert-@samp
822 "Insert a `@samp{...}' command in a Texinfo buffer. 829 "Insert a `@samp{...}' command in a Texinfo buffer.
diff --git a/lisp/window.el b/lisp/window.el
index e9f4fd0b1d2..28dd6a8ab26 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5966,7 +5966,7 @@ live."
5966;; FIXME: By the way, there could be more levels of dedication: 5966;; FIXME: By the way, there could be more levels of dedication:
5967;; - `barely' dedicated doesn't prevent reuse of the window, only records that 5967;; - `barely' dedicated doesn't prevent reuse of the window, only records that
5968;; the window hasn't been used for something else yet. 5968;; the window hasn't been used for something else yet.
5969;; - `softly' dedicated only allows reuse when asked explicitly. 5969;; - `soft' (`softly') dedicated only allows reuse when asked explicitly.
5970;; - `strongly' never allows reuse. 5970;; - `strongly' never allows reuse.
5971(defvar display-buffer-mark-dedicated nil 5971(defvar display-buffer-mark-dedicated nil
5972 "If non-nil, `display-buffer' marks the windows it creates as dedicated. 5972 "If non-nil, `display-buffer' marks the windows it creates as dedicated.
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index 54fd1a44d5b..f9e89880dae 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -145,26 +145,25 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
145(defun xterm-mouse--read-event-sequence-1000 () 145(defun xterm-mouse--read-event-sequence-1000 ()
146 (let* ((code (- (read-event) 32)) 146 (let* ((code (- (read-event) 32))
147 (type 147 (type
148 (intern 148 ;; For buttons > 3, the release-event looks differently
149 ;; For buttons > 3, the release-event looks differently 149 ;; (see xc/programs/xterm/button.c, function EditorButton),
150 ;; (see xc/programs/xterm/button.c, function EditorButton), 150 ;; and come in a release-event only, no down-event.
151 ;; and come in a release-event only, no down-event. 151 (cond ((>= code 64)
152 (cond ((>= code 64) 152 (format "mouse-%d" (- code 60)))
153 (format "mouse-%d" (- code 60))) 153 ((memq code '(8 9 10))
154 ((memq code '(8 9 10)) 154 (format "M-down-mouse-%d" (- code 7)))
155 (format "M-down-mouse-%d" (- code 7))) 155 ((memq code '(3 11))
156 ((memq code '(3 11)) 156 (let ((down (car (terminal-parameter
157 (let ((down (car (terminal-parameter 157 nil 'xterm-mouse-last-down))))
158 nil 'xterm-mouse-last-down)))) 158 (when (and down (string-match "[0-9]" (symbol-name down)))
159 (when (and down (string-match "[0-9]" (symbol-name down))) 159 (format (if (eq code 3) "mouse-%s" "M-mouse-%s")
160 (format (if (eq code 3) "mouse-%s" "M-mouse-%s") 160 (match-string 0 (symbol-name down))))))
161 (match-string 0 (symbol-name down)))))) 161 ((memq code '(0 1 2))
162 ((memq code '(0 1 2)) 162 (format "down-mouse-%d" (+ 1 code)))))
163 (format "down-mouse-%d" (+ 1 code))))))
164 (x (- (read-event) 33)) 163 (x (- (read-event) 33))
165 (y (- (read-event) 33))) 164 (y (- (read-event) 33)))
166 (and type (wholenump x) (wholenump y) 165 (and type (wholenump x) (wholenump y)
167 (list type x y)))) 166 (list (intern type) x y))))
168 167
169;; XTerm's 1006-mode terminal mouse click reporting has the form 168;; XTerm's 1006-mode terminal mouse click reporting has the form
170;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are 169;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are
diff --git a/src/ChangeLog b/src/ChangeLog
index 94f4444d38c..c845568ddcf 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,42 @@
12014-06-21 Eli Zaretskii <eliz@gnu.org>
2
3 * indent.c (Fvertical_motion): Doc fix.
4 Move to the goal column, if any, with a single call to
5 move_it_in_display_line, not in two calls. Doing this with two
6 calls causes move_it_in_display_line apply the line-prefix
7 handling twice instead of just once. (Bug#17823)
8
92014-06-21 Paul Eggert <eggert@cs.ucla.edu>
10
11 Port to OS X ACLs (Bug#17810).
12 * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (...,
13 ACL_TYPE_ACCESS) doesn't work.
14
152014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
16
17 * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command
18 before checking key-translation-map (bug#17659).
19
202014-06-21 Dmitry Antipov <dmantipov@yandex.ru>
21
22 * font.c (font_make_object): Avoid dangling pointer which may
23 crash GC (Bug#17771).
24
252014-06-21 Eli Zaretskii <eliz@gnu.org>
26
27 * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the
28 prototype of DGifCloseFile as appropriate for older and newer
29 versions of giflib.
30 (gif_close): New function, encapsulates the differences in the
31 calling sequence of DGifCloseFile before v5.1.0 and after it.
32 (gif_load): Call gif_close instead of DGifCloseFile. Divulge the
33 error string where appropriate. (Bug#17790)
34
35 * xdisp.c (Fmove_point_visually): Instead of testing for keyboard
36 macro execution, make sure point didn't move since last complete
37 redisplay, as the condition for using the glyph matrix
38 information. (Bug#17777)
39
12014-06-19 Dmitry Antipov <dmantipov@yandex.ru> 402014-06-19 Dmitry Antipov <dmantipov@yandex.ru>
2 41
3 Minor cleanup of fonset code. 42 Minor cleanup of fonset code.
diff --git a/src/dispextern.h b/src/dispextern.h
index e710f8e35d7..5396aeb6c8e 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2591,7 +2591,8 @@ struct it
2591 int vpos; 2591 int vpos;
2592 2592
2593 /* Horizontal matrix position reached in move_it_in_display_line. 2593 /* Horizontal matrix position reached in move_it_in_display_line.
2594 Only set there, not in display_line. */ 2594 Only set there, not in display_line, and only when the X
2595 coordinate is past first_visible_x. */
2595 int hpos; 2596 int hpos;
2596 2597
2597 /* Left fringe bitmap number (enum fringe_bitmap_type). */ 2598 /* Left fringe bitmap number (enum fringe_bitmap_type). */
diff --git a/src/fileio.c b/src/fileio.c
index 6fe11303ded..c7736661207 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3013,6 +3013,9 @@ was unable to determine the ACL entries. */)
3013 acl_t acl; 3013 acl_t acl;
3014 Lisp_Object acl_string; 3014 Lisp_Object acl_string;
3015 char *str; 3015 char *str;
3016# ifndef HAVE_ACL_TYPE_EXTENDED
3017 acl_type_t ACL_TYPE_EXTENDED = ACL_TYPE_ACCESS;
3018# endif
3016#endif 3019#endif
3017 3020
3018 absname = expand_and_dir_to_file (filename, 3021 absname = expand_and_dir_to_file (filename,
@@ -3027,7 +3030,7 @@ was unable to determine the ACL entries. */)
3027#ifdef HAVE_ACL_SET_FILE 3030#ifdef HAVE_ACL_SET_FILE
3028 absname = ENCODE_FILE (absname); 3031 absname = ENCODE_FILE (absname);
3029 3032
3030 acl = acl_get_file (SSDATA (absname), ACL_TYPE_ACCESS); 3033 acl = acl_get_file (SSDATA (absname), ACL_TYPE_EXTENDED);
3031 if (acl == NULL) 3034 if (acl == NULL)
3032 return Qnil; 3035 return Qnil;
3033 3036
diff --git a/src/font.c b/src/font.c
index 9e472fb3e3b..251d43ba8b2 100644
--- a/src/font.c
+++ b/src/font.c
@@ -207,6 +207,9 @@ font_make_object (int size, Lisp_Object entity, int pixelsize)
207 = (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT); 207 = (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT);
208 int i; 208 int i;
209 209
210 /* GC can happen before the driver is set up,
211 so avoid dangling pointer here (Bug#17771). */
212 font->driver = NULL;
210 XSETFONT (font_object, font); 213 XSETFONT (font_object, font);
211 214
212 if (! NILP (entity)) 215 if (! NILP (entity))
diff --git a/src/image.c b/src/image.c
index 3220a45a282..f8c2402bfc4 100644
--- a/src/image.c
+++ b/src/image.c
@@ -7250,7 +7250,11 @@ gif_image_p (Lisp_Object object)
7250#ifdef WINDOWSNT 7250#ifdef WINDOWSNT
7251 7251
7252/* GIF library details. */ 7252/* GIF library details. */
7253#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
7254DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
7255#else
7253DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *)); 7256DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
7257#endif
7254DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *)); 7258DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
7255#if GIFLIB_MAJOR < 5 7259#if GIFLIB_MAJOR < 5
7256DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc)); 7260DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
@@ -7320,6 +7324,22 @@ gif_read_from_memory (GifFileType *file, GifByteType *buf, int len)
7320 return len; 7324 return len;
7321} 7325}
7322 7326
7327static int
7328gif_close (GifFileType *gif, int *err)
7329{
7330 int retval;
7331
7332#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
7333 retval = fn_DGifCloseFile (gif, err);
7334#else
7335 retval = fn_DGifCloseFile (gif);
7336#if GIFLIB_MAJOR >= 5
7337 if (err)
7338 *err = gif->Error;
7339#endif
7340#endif
7341 return retval;
7342}
7323 7343
7324/* Load GIF image IMG for use on frame F. Value is true if 7344/* Load GIF image IMG for use on frame F. Value is true if
7325 successful. */ 7345 successful. */
@@ -7344,9 +7364,7 @@ gif_load (struct frame *f, struct image *img)
7344 Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL); 7364 Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL);
7345 unsigned long bgcolor = 0; 7365 unsigned long bgcolor = 0;
7346 EMACS_INT idx; 7366 EMACS_INT idx;
7347#if GIFLIB_MAJOR >= 5
7348 int gif_err; 7367 int gif_err;
7349#endif
7350 7368
7351 if (NILP (specified_data)) 7369 if (NILP (specified_data))
7352 { 7370 {
@@ -7414,7 +7432,7 @@ gif_load (struct frame *f, struct image *img)
7414 if (!check_image_size (f, gif->SWidth, gif->SHeight)) 7432 if (!check_image_size (f, gif->SWidth, gif->SHeight))
7415 { 7433 {
7416 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 7434 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
7417 fn_DGifCloseFile (gif); 7435 gif_close (gif, NULL);
7418 return 0; 7436 return 0;
7419 } 7437 }
7420 7438
@@ -7423,7 +7441,7 @@ gif_load (struct frame *f, struct image *img)
7423 if (rc == GIF_ERROR || gif->ImageCount <= 0) 7441 if (rc == GIF_ERROR || gif->ImageCount <= 0)
7424 { 7442 {
7425 image_error ("Error reading `%s'", img->spec, Qnil); 7443 image_error ("Error reading `%s'", img->spec, Qnil);
7426 fn_DGifCloseFile (gif); 7444 gif_close (gif, NULL);
7427 return 0; 7445 return 0;
7428 } 7446 }
7429 7447
@@ -7435,7 +7453,7 @@ gif_load (struct frame *f, struct image *img)
7435 { 7453 {
7436 image_error ("Invalid image number `%s' in image `%s'", 7454 image_error ("Invalid image number `%s' in image `%s'",
7437 image_number, img->spec); 7455 image_number, img->spec);
7438 fn_DGifCloseFile (gif); 7456 gif_close (gif, NULL);
7439 return 0; 7457 return 0;
7440 } 7458 }
7441 } 7459 }
@@ -7453,7 +7471,7 @@ gif_load (struct frame *f, struct image *img)
7453 if (!check_image_size (f, width, height)) 7471 if (!check_image_size (f, width, height))
7454 { 7472 {
7455 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 7473 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
7456 fn_DGifCloseFile (gif); 7474 gif_close (gif, NULL);
7457 return 0; 7475 return 0;
7458 } 7476 }
7459 7477
@@ -7471,7 +7489,7 @@ gif_load (struct frame *f, struct image *img)
7471 && 0 <= subimg_left && subimg_left <= width - subimg_width)) 7489 && 0 <= subimg_left && subimg_left <= width - subimg_width))
7472 { 7490 {
7473 image_error ("Subimage does not fit in image", Qnil, Qnil); 7491 image_error ("Subimage does not fit in image", Qnil, Qnil);
7474 fn_DGifCloseFile (gif); 7492 gif_close (gif, NULL);
7475 return 0; 7493 return 0;
7476 } 7494 }
7477 } 7495 }
@@ -7479,7 +7497,7 @@ gif_load (struct frame *f, struct image *img)
7479 /* Create the X image and pixmap. */ 7497 /* Create the X image and pixmap. */
7480 if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0)) 7498 if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
7481 { 7499 {
7482 fn_DGifCloseFile (gif); 7500 gif_close (gif, NULL);
7483 return 0; 7501 return 0;
7484 } 7502 }
7485 7503
@@ -7650,7 +7668,18 @@ gif_load (struct frame *f, struct image *img)
7650 Fcons (make_number (gif->ImageCount), 7668 Fcons (make_number (gif->ImageCount),
7651 img->lisp_data)); 7669 img->lisp_data));
7652 7670
7653 fn_DGifCloseFile (gif); 7671 if (gif_close (gif, &gif_err) == GIF_ERROR)
7672 {
7673#if 5 <= GIFLIB_MAJOR
7674 char *error_text = fn_GifErrorString (gif_err);
7675
7676 if (error_text)
7677 image_error ("Error closing `%s': %s",
7678 img->spec, build_string (error_text));
7679#else
7680 image_error ("Error closing `%s'", img->spec, Qnil);
7681#endif
7682 }
7654 7683
7655 /* Maybe fill in the background field while we have ximg handy. */ 7684 /* Maybe fill in the background field while we have ximg handy. */
7656 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) 7685 if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
diff --git a/src/indent.c b/src/indent.c
index dc862518924..711792f75cd 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1944,9 +1944,12 @@ The optional second argument WINDOW specifies the window to use for
1944parameters such as width, horizontal scrolling, and so on. 1944parameters such as width, horizontal scrolling, and so on.
1945The default is to use the selected window's parameters. 1945The default is to use the selected window's parameters.
1946 1946
1947LINES can optionally take the form (COLS . LINES), in which case 1947LINES can optionally take the form (COLS . LINES), in which case the
1948the motion will not stop at the start of a screen line but on 1948motion will not stop at the start of a screen line but COLS column
1949its column COLS (if such exists on that line, that is). 1949from the visual start of the line (if such exists on that line, that
1950is). If the line is scrolled horizontally, COLS is interpreted
1951visually, i.e., as addition to the columns of text beyond the left
1952edge of the window.
1950 1953
1951`vertical-motion' always uses the current buffer, 1954`vertical-motion' always uses the current buffer,
1952regardless of which buffer is displayed in WINDOW. 1955regardless of which buffer is displayed in WINDOW.
@@ -2126,20 +2129,14 @@ whether or not it is currently displayed in some window. */)
2126 } 2129 }
2127 } 2130 }
2128 2131
2129 /* Move to the goal column, if one was specified. */ 2132 /* Move to the goal column, if one was specified. If the window
2133 was originally hscrolled, the goal column is interpreted as
2134 an addition to the hscroll amount. */
2130 if (!NILP (lcols)) 2135 if (!NILP (lcols))
2131 { 2136 {
2132 /* If the window was originally hscrolled, move forward by 2137 int to_x = (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5);
2133 the hscrolled amount first. */ 2138
2134 if (first_x > 0) 2139 move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
2135 {
2136 move_it_in_display_line (&it, ZV, first_x, MOVE_TO_X);
2137 it.current_x = 0;
2138 }
2139 move_it_in_display_line
2140 (&it, ZV,
2141 (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
2142 MOVE_TO_X);
2143 } 2140 }
2144 2141
2145 SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); 2142 SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
diff --git a/src/keyboard.c b/src/keyboard.c
index 3e5e405d66e..1da300b77cc 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2181,7 +2181,7 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
2181 2181
2182 2182
2183 2183
2184/* Input of single characters from keyboard */ 2184/* Input of single characters from keyboard. */
2185 2185
2186static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu, 2186static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu,
2187 struct timespec *end_time); 2187 struct timespec *end_time);
@@ -9382,16 +9382,6 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9382 first_unbound = min (t, first_unbound); 9382 first_unbound = min (t, first_unbound);
9383 9383
9384 head = EVENT_HEAD (key); 9384 head = EVENT_HEAD (key);
9385 if (help_char_p (head) && t > 0)
9386 {
9387 read_key_sequence_cmd = Vprefix_help_command;
9388 keybuf[t++] = key;
9389 last_nonmenu_event = key;
9390 /* The Microsoft C compiler can't handle the goto that
9391 would go here. */
9392 dummyflag = 1;
9393 break;
9394 }
9395 9385
9396 if (SYMBOLP (head)) 9386 if (SYMBOLP (head))
9397 { 9387 {
@@ -9649,6 +9639,17 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9649 9639
9650 goto replay_sequence; 9640 goto replay_sequence;
9651 } 9641 }
9642
9643 if (NILP (current_binding)
9644 && help_char_p (EVENT_HEAD (key)) && t > 1)
9645 {
9646 read_key_sequence_cmd = Vprefix_help_command;
9647 /* The Microsoft C compiler can't handle the goto that
9648 would go here. */
9649 dummyflag = 1;
9650 break;
9651 }
9652
9652 /* If KEY is not defined in any of the keymaps, 9653 /* If KEY is not defined in any of the keymaps,
9653 and cannot be part of a function key or translation, 9654 and cannot be part of a function key or translation,
9654 and is a shifted function key, 9655 and is a shifted function key,
diff --git a/src/xdisp.c b/src/xdisp.c
index 70e4d1b5e59..8711487780c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -15790,7 +15790,7 @@ set_vertical_scroll_bar (struct window *w)
15790 redisplay itself, when it decides that the previous window start 15790 redisplay itself, when it decides that the previous window start
15791 point is fine and should be kept. Search for "goto force_start" 15791 point is fine and should be kept. Search for "goto force_start"
15792 below to see the details. Like the values of window-start 15792 below to see the details. Like the values of window-start
15793 specified outside of redisply, these internally deduced values 15793 specified outside of redisplay, these internally-deduced values
15794 are tested for feasibility, and ignored if found to be 15794 are tested for feasibility, and ignored if found to be
15795 unfeasible. 15795 unfeasible.
15796 15796
@@ -20741,12 +20741,15 @@ Value is the new character position of point. */)
20741 recorded in the glyphs, at least as long as the goal is on the 20741 recorded in the glyphs, at least as long as the goal is on the
20742 screen. */ 20742 screen. */
20743 if (w->window_end_valid 20743 if (w->window_end_valid
20744 && NILP (Vexecuting_kbd_macro)
20745 && !windows_or_buffers_changed 20744 && !windows_or_buffers_changed
20746 && b 20745 && b
20747 && !b->clip_changed 20746 && !b->clip_changed
20748 && !b->prevent_redisplay_optimizations_p 20747 && !b->prevent_redisplay_optimizations_p
20749 && !window_outdated (w) 20748 && !window_outdated (w)
20749 /* We rely below on the cursor coordinates to be up to date, but
20750 we cannot trust them if some command moved point since the
20751 last complete redisplay. */
20752 && w->last_point == BUF_PT (b)
20750 && w->cursor.vpos >= 0 20753 && w->cursor.vpos >= 0
20751 && w->cursor.vpos < w->current_matrix->nrows 20754 && w->cursor.vpos < w->current_matrix->nrows
20752 && (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p) 20755 && (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)
diff --git a/test/ChangeLog b/test/ChangeLog
index 716e42ed95d..b90f47631bc 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
12014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
2
3 * automated/python-tests.el (python-util-strip-string-1): New test.
4
12014-06-15 Michael Albinus <michael.albinus@gmx.de> 52014-06-15 Michael Albinus <michael.albinus@gmx.de>
2 6
3 Sync with Tramp 2.2.10. 7 Sync with Tramp 2.2.10.
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index de963a670bc..f580e946b8f 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -2706,6 +2706,15 @@ def foo(a, b, c):
2706 (equal (symbol-value (car ccons)) (cdr ccons))))) 2706 (equal (symbol-value (car ccons)) (cdr ccons)))))
2707 (kill-buffer buffer))) 2707 (kill-buffer buffer)))
2708 2708
2709(ert-deftest python-util-strip-string-1 ()
2710 (should (string= (python-util-strip-string "\t\r\n str") "str"))
2711 (should (string= (python-util-strip-string "str \n\r") "str"))
2712 (should (string= (python-util-strip-string "\t\r\n str \n\r ") "str"))
2713 (should
2714 (string= (python-util-strip-string "\n str \nin \tg \n\r") "str \nin \tg"))
2715 (should (string= (python-util-strip-string "\n \t \n\r ") ""))
2716 (should (string= (python-util-strip-string "") "")))
2717
2709 2718
2710;;; Electricity 2719;;; Electricity
2711 2720
diff --git a/test/indent/shell.sh b/test/indent/shell.sh
index fdf736e06be..8e831bb8f11 100755
--- a/test/indent/shell.sh
+++ b/test/indent/shell.sh
@@ -23,6 +23,24 @@ case $X in
23 ;; 23 ;;
24esac 24esac
25 25
26{ # bug#17621
27 foo1 &&
28 foo2 &&
29 bar
30
31 foo1 && \
32 foo2 && \
33 bar
34}
35
36for foo in bar; do # bug#17721
37 [ -e $foo ] && {
38 echo t
39 } && {
40 echo r
41 }
42done
43
26echo -n $(( 5 << 2 )) 44echo -n $(( 5 << 2 ))
27# This should not be treated as a heredoc (bug#12770). 45# This should not be treated as a heredoc (bug#12770).
282 462