diff options
| author | Glenn Morris | 2014-06-21 12:45:59 -0700 |
|---|---|---|
| committer | Glenn Morris | 2014-06-21 12:45:59 -0700 |
| commit | c400516ab1d827d08225ffb3e1bc1969c73cc45e (patch) | |
| tree | b16343b9e11c916c96b12ab56b6024cad91d3aff | |
| parent | 539ad293eb36b4cf458cbdb5a6b37f5cd1bb68a1 (diff) | |
| parent | 8047f439ec7d0bbe0085800a13bee8da883ae4dd (diff) | |
| download | emacs-c400516ab1d827d08225ffb3e1bc1969c73cc45e.tar.gz emacs-c400516ab1d827d08225ffb3e1bc1969c73cc45e.zip | |
Merge from emacs-24; up to 2014-06-06T02:22:40Z!monnier@iro.umontreal.ca
36 files changed, 401 insertions, 114 deletions
| @@ -1,3 +1,13 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-06-20 Paul Eggert <eggert@cs.ucla.edu> | 11 | 2014-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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-06-13 Glenn Morris <rgm@gnu.org> | 6 | 2014-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 | |||
| 3 | The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git | 3 | The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git |
| 4 | repository named "elpa", hosted on Savannah. To check it out: | 4 | repository 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 | ||
| 11 | Changes to this branch propagate to elpa.gnu.org via a "deployment" script run | 11 | Changes 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=" | |||
| 931 | AC_ARG_ENABLE(link-time-optimization, | 931 | AC_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.])], | ||
| 936 | if test "${enableval}" != "no"; then | 939 | if 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 |
| 975 | fi) | 985 | fi) |
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 @@ | |||
| 1 | 2014-06-21 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * positions.texi (Screen Lines): Clarify how columns are counted | ||
| 4 | by vertical-motion. | ||
| 5 | |||
| 1 | 2014-06-15 Glenn Morris <rgm@gnu.org> | 6 | 2014-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. | |||
| 500 | The @var{count} argument can be a cons cell, @code{(@var{cols} | 500 | The @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 |
| 503 | start of that screen line. | 503 | visual start of that screen line. Note that @var{cols} are counted |
| 504 | from the @emph{visual} start of the line; if the window is scrolled | ||
| 505 | horizontally (@pxref{Horizontal Scrolling}), the column on which point | ||
| 506 | will end is in addition to the number of columns by which the text is | ||
| 507 | scrolled. | ||
| 504 | 508 | ||
| 505 | The return value is the number of screen lines over which point was | 509 | The return value is the number of screen lines over which point was |
| 506 | moved. The value may be less in absolute value than @var{count} if | 510 | moved. 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 @@ | |||
| 1 | 2014-06-21 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * autotype.texi (Skeleton Language): Document the feature of \n | ||
| 4 | when at eol. | ||
| 5 | |||
| 6 | 2014-06-21 Michael Albinus <michael.albinus@gmx.de> | ||
| 7 | |||
| 8 | * dbus.texi (Type Conversion): Formatting edits in example. | ||
| 9 | |||
| 1 | 2014-06-15 Michael Albinus <michael.albinus@gmx.de> | 10 | 2014-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. |
| 235 | Insert a newline and align under current line. Use newline character | 235 | Insert a newline and align under current line, but not if this is the |
| 236 | @code{?\n} to prevent alignment. | 236 | last element of a skeleton and the newline would be inserted at end of |
| 237 | line. Use newline character @code{?\n} to prevent alignment. Use | ||
| 238 | @code{"\n"} as the last string element of a skeleton to insert a | ||
| 239 | newline after the skeleton unconditionally. | ||
| 237 | @item @code{_} | 240 | @item @code{_} |
| 238 | Interesting point. When wrapping skeletons around successive regions, they are | 241 | Interesting point. When wrapping skeletons around successive regions, they are |
| 239 | put at these places. Point is left at first @code{_} where nothing is wrapped. | 242 | put 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 @@ | |||
| 1 | 2014-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 | |||
| 8 | 2014-06-21 Eli Zaretskii <eliz@gnu.org> | ||
| 9 | |||
| 10 | * skeleton.el (skeleton-insert): Fix last change. | ||
| 11 | |||
| 12 | 2014-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 | |||
| 19 | 2014-06-21 Eli Zaretskii <eliz@gnu.org> | ||
| 20 | |||
| 21 | * skeleton.el (skeleton-insert): Doc fix. | ||
| 22 | |||
| 23 | 2014-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 | |||
| 32 | 2014-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 | |||
| 38 | 2014-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 | |||
| 43 | 2014-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 | |||
| 52 | 2014-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 | |||
| 58 | 2014-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 | |||
| 63 | 2014-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 | |||
| 71 | 2014-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 | |||
| 76 | 2014-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 | |||
| 81 | 2014-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 | |||
| 86 | 2014-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 | |||
| 91 | 2014-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 | |||
| 1 | 2014-06-19 William Xu <william.xwl@gmail.com> | 96 | 2014-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 | |||
| 1155 | The functions whose name starts with \"smie-rule-\" are helper functions | 1155 | The functions whose name starts with \"smie-rule-\" are helper functions |
| 1156 | designed specifically for use in this function.") | 1156 | designed 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. | |||
| 658 | The optional argument PROMPT specifies a string to use to prompt the user. | 658 | The optional argument PROMPT specifies a string to use to prompt the user. |
| 659 | The variable `read-quoted-char-radix' controls which radix to use | 659 | The variable `read-quoted-char-radix' controls which radix to use |
| 660 | for numeric input." | 660 | for 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, |
| 668 | or the octal character code. | 673 | or 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. | |||
| 197 | If ELEMENT is a string or a character it gets inserted (see also | 197 | If 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 | |||
| 212 | After termination, point will be positioned at the last occurrence of - | 213 | After termination, point will be positioned at the last occurrence of - |
| 213 | or at the first occurrence of _ or at the end of the inserted text. | 214 | or at the first occurrence of _ or at the end of the inserted text. |
| 214 | 215 | ||
| 216 | Note that \\n as the last element of the skeleton only inserts a | ||
| 217 | newline if not at eol. If you want to unconditionally insert a newline | ||
| 218 | at the end of the skeleton, use \"\\n\" instead. | ||
| 219 | |||
| 215 | Further elements can be defined via `skeleton-further-elements'. | 220 | Further elements can be defined via `skeleton-further-elements'. |
| 216 | ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted | 221 | ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted |
| 217 | repeatedly for different inputs. The SKELETON is processed as often as | 222 | repeatedly 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 @@ | |||
| 1 | 2014-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 | |||
| 9 | 2014-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 | |||
| 15 | 2014-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 | |||
| 20 | 2014-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 | |||
| 25 | 2014-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 | |||
| 1 | 2014-06-19 Dmitry Antipov <dmantipov@yandex.ru> | 40 | 2014-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) | ||
| 7254 | DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *)); | ||
| 7255 | #else | ||
| 7253 | DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *)); | 7256 | DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *)); |
| 7257 | #endif | ||
| 7254 | DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *)); | 7258 | DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *)); |
| 7255 | #if GIFLIB_MAJOR < 5 | 7259 | #if GIFLIB_MAJOR < 5 |
| 7256 | DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc)); | 7260 | DEF_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 | ||
| 7327 | static int | ||
| 7328 | gif_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 | |||
| 1944 | parameters such as width, horizontal scrolling, and so on. | 1944 | parameters such as width, horizontal scrolling, and so on. |
| 1945 | The default is to use the selected window's parameters. | 1945 | The default is to use the selected window's parameters. |
| 1946 | 1946 | ||
| 1947 | LINES can optionally take the form (COLS . LINES), in which case | 1947 | LINES can optionally take the form (COLS . LINES), in which case the |
| 1948 | the motion will not stop at the start of a screen line but on | 1948 | motion will not stop at the start of a screen line but COLS column |
| 1949 | its column COLS (if such exists on that line, that is). | 1949 | from the visual start of the line (if such exists on that line, that |
| 1950 | is). If the line is scrolled horizontally, COLS is interpreted | ||
| 1951 | visually, i.e., as addition to the columns of text beyond the left | ||
| 1952 | edge of the window. | ||
| 1950 | 1953 | ||
| 1951 | `vertical-motion' always uses the current buffer, | 1954 | `vertical-motion' always uses the current buffer, |
| 1952 | regardless of which buffer is displayed in WINDOW. | 1955 | regardless 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 | ||
| 2186 | static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu, | 2186 | static 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 @@ | |||
| 1 | 2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org> | ||
| 2 | |||
| 3 | * automated/python-tests.el (python-util-strip-string-1): New test. | ||
| 4 | |||
| 1 | 2014-06-15 Michael Albinus <michael.albinus@gmx.de> | 5 | 2014-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 | ;; |
| 24 | esac | 24 | esac |
| 25 | 25 | ||
| 26 | { # bug#17621 | ||
| 27 | foo1 && | ||
| 28 | foo2 && | ||
| 29 | bar | ||
| 30 | |||
| 31 | foo1 && \ | ||
| 32 | foo2 && \ | ||
| 33 | bar | ||
| 34 | } | ||
| 35 | |||
| 36 | for foo in bar; do # bug#17721 | ||
| 37 | [ -e $foo ] && { | ||
| 38 | echo t | ||
| 39 | } && { | ||
| 40 | echo r | ||
| 41 | } | ||
| 42 | done | ||
| 43 | |||
| 26 | echo -n $(( 5 << 2 )) | 44 | echo -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). |
| 28 | 2 | 46 | 2 |