Merge from emacs-24; up to 2014-06-06T02:22:40Z!monnier@iro.umontreal.ca

This commit is contained in:
Glenn Morris 2014-06-21 12:45:59 -07:00
commit c400516ab1
36 changed files with 401 additions and 114 deletions

View file

@ -1,3 +1,13 @@
2014-06-21 Paul Eggert <eggert@cs.ucla.edu>
* configure.ac: Warn about --enable-link-time-optimization's issues
in --help message (Bug#17806).
Port to GCC 4.9.0 with link time optimization (Bug#17806).
* configure.ac (CFLAGS): With link time optimization,
use -ffat-lto-objects if supported; otherwise Emacs won't
build with GCC 4.9.0.
2014-06-20 Paul Eggert <eggert@cs.ucla.edu>
Diagnose failures due to colons in directory names (Bug#17278).

View file

@ -1,3 +1,8 @@
2014-06-21 Stephen Berman <Stephen.Berman@gmx.net>
* notes/elpa: Use "git" instead of "bzr" in the name of machine to
clone the repository from.
2014-06-13 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in (${DSTDIR}/charprop.el):

View file

@ -3,9 +3,9 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
repository named "elpa", hosted on Savannah. To check it out:
git clone git://bzr.sv.gnu.org/emacs/elpa
git clone git://git.sv.gnu.org/emacs/elpa
cd elpa
git remote set-url --push origin git+ssh://bzr.sv.gnu.org/srv/git/emacs/elpa
git remote set-url --push origin git+ssh://git.sv.gnu.org/srv/git/emacs/elpa
[create task branch for edits, etc.]
Changes to this branch propagate to elpa.gnu.org via a "deployment" script run

View file

@ -931,8 +931,11 @@ edit_cflags="
AC_ARG_ENABLE(link-time-optimization,
[AS_HELP_STRING([--enable-link-time-optimization],
[build emacs with link-time optimization.
This is supported for gcc since 4.5.0 and clang.
Note that clang support is experimental - see INSTALL])],
This requires GCC 4.5.0 or later, or clang.
(Note that clang support is experimental - see INSTALL.)
It also makes Emacs harder to debug, and when we tried it
with GCC 4.9.0 x86-64 it made Emacs slower, so it's not
recommended for typical use.])],
if test "${enableval}" != "no"; then
ac_lto_supported=no
if test $emacs_cv_clang = yes; then
@ -970,6 +973,13 @@ if test "${enableval}" != "no"; then
# command, so plugin name is appended to ARFLAGS.
ARFLAGS="cru --plugin $GOLD_PLUGIN"
RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
else
dnl The following is needed for GCC 4.9.0. The GCC 4.9.0 release notes
dnl suggest that instead of -ffat-lto-objects we should use gcc-ar and
dnl gcc-ranlib in place of ar and ranlib, but gcc-ar makes /usr/bin/ar
dnl dump core on Fedora 20, so play it safe for now.
gl_COMPILER_OPTION_IF([-ffat-lto-objects],
[CFLAGS="$CFLAGS -ffat-lto-objects"])
fi
fi
fi)

View file

@ -1,3 +1,8 @@
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* positions.texi (Screen Lines): Clarify how columns are counted
by vertical-motion.
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.

View file

@ -500,7 +500,11 @@ is negative, it moves up instead.
The @var{count} argument can be a cons cell, @code{(@var{cols}
. @var{lines})}, instead of an integer. Then the function moves by
@var{lines} screen lines, and puts point @var{cols} columns from the
start of that screen line.
visual start of that screen line. Note that @var{cols} are counted
from the @emph{visual} start of the line; if the window is scrolled
horizontally (@pxref{Horizontal Scrolling}), the column on which point
will end is in addition to the number of columns by which the text is
scrolled.
The return value is the number of screen lines over which point was
moved. The value may be less in absolute value than @var{count} if

View file

@ -1,3 +1,12 @@
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* autotype.texi (Skeleton Language): Document the feature of \n
when at eol.
2014-06-21 Michael Albinus <michael.albinus@gmx.de>
* dbus.texi (Type Conversion): Formatting edits in example.
2014-06-15 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.2.10.

View file

@ -232,8 +232,11 @@ Insert string or character. Literal strings and characters are passed through
@code{skeleton-transformation} when that is non-@code{nil}.
@item @code{?\n}
@c ??? something seems very wrong here.
Insert a newline and align under current line. Use newline character
@code{?\n} to prevent alignment.
Insert a newline and align under current line, but not if this is the
last element of a skeleton and the newline would be inserted at end of
line. Use newline character @code{?\n} to prevent alignment. Use
@code{"\n"} as the last string element of a skeleton to insert a
newline after the skeleton unconditionally.
@item @code{_}
Interesting point. When wrapping skeletons around successive regions, they are
put at these places. Point is left at first @code{_} where nothing is wrapped.

View file

@ -1060,11 +1060,11 @@ elements of this array. Example:
"" ;; No icon.
"Notification summary" ;; Summary.
(format ;; Body.
"This is a test notification, raised from %s" (emacs-version))
"This is a test notification, raised from\n%S" (emacs-version))
'(:array) ;; No actions (empty array of strings).
'(:array :signature "@{sv@}") ;; No hints
;; (empty array of dictionary entries).
:int32 -1) ;; Default timeout.
:int32 -1) ;; Default timeout.
@result{} 3
@end lisp

View file

@ -1,3 +1,98 @@
2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
Fix completion retrieval parsing (bug#17209).
* progmodes/python.el (python-mode):
(python-util-strip-string): New function.
(python-shell-completion-get-completions): Use it.
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* skeleton.el (skeleton-insert): Fix last change.
2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
Enhancements for outline integration (bug#17796).
* progmodes/python.el (python-mode): Properly set
outline-heading-end-regexp so that comments after colons for
defuns are supported.
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* skeleton.el (skeleton-insert): Doc fix.
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/smie.el (smie-config--guess): Fix typo.
(smie-config-guess): Use smie-config-local so the rules are obeyed
(bug#17818).
* mouse.el (mouse-drag-line): Don't re-add to unread-comment-events,
since it's already done inside the loop (bug#17819).
2014-06-21 Martin Rudalics <rudalics@gmx.at>
* mouse.el (mouse-drag-line): Re-remove code initially removed
on 2013-03-09 and inadvertently reintroduced on 2013-11-30
(Bug#17819).
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-smie-sh-rules): For { after &&, don't
align with the surrounding parent (bug#17721).
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* textmodes/texinfo.el (texinfo-mode): Set skeleton-end-newline
locally to nil.
(texinfo-insert-block, texinfo-insert-@end)
(texinfo-insert-@example, texinfo-insert-@quotation): Adjust to
local setting of skeleton-end-newline by adding an explicit \n to
the skeletons where appropriate. (Bug#17801)
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/smie.el (smie--hanging-eolp-function): New var.
(smie-indent--hanging-p): Use it.
* progmodes/sh-script.el (sh-set-shell): Set it (bug#17621).
2014-06-21 Leo Liu <sdl.web@gmail.com>
* simple.el (read-quoted-char): Don't let help chars pop up help
buffer. (Bug#16617)
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-smie-sh-rules): Use same rule for && as
for | (bug#17621).
* xt-mouse.el (xterm-mouse--read-event-sequence-1000):
Drop unknown events instead of burping.
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* term/w32-win.el (dynamic-library-alist): Support giflib 5.1.0
and later. (Bug#17790)
2014-06-21 Juri Linkov <juri@jurta.org>
* dired.el (dired-mark-pop-up): Let-bind display-buffer-mark-dedicated
to `soft'. (Bug#17554)
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* delsel.el (electric-newline-and-maybe-indent): Mark it as well
(bug#17737).
2014-06-21 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-font-lock-keywords): Don't fontify
`!' in `!~' with `font-lock-negation-char-face'. (Bug#17732)
2014-06-21 Michael Albinus <michael.albinus@gmx.de>
* net/dbus.el (dbus-call-method): Push only non D-Bus events into
`unread-command-events'.
2014-06-19 William Xu <william.xwl@gmail.com>
* progmodes/hideif.el (hif-string-to-number): Don't return float for

View file

@ -188,6 +188,7 @@ See `delete-selection-helper'."
(put 'reindent-then-newline-and-indent 'delete-selection t)
(put 'newline-and-indent 'delete-selection t)
(put 'newline 'delete-selection t)
(put 'electric-newline-and-maybe-indent 'delete-selection t)
(put 'open-line 'delete-selection 'kill)
;; This is very useful for canceling a selection in the minibuffer without

View file

@ -3099,7 +3099,10 @@ argument or confirmation)."
;; If FILES defaulted to the current line's file.
(= (length files) 1))
(apply function args)
(let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*"))))
(let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*")))
;; Mark *Marked Files* window as softly-dedicated, to prevent
;; other buffers e.g. *Completions* from reusing it (bug#17554).
(display-buffer-mark-dedicated 'soft))
(with-current-buffer buffer
(with-current-buffer-window
buffer

View file

@ -1155,6 +1155,15 @@ NUMBER offset by NUMBER, relative to a base token
The functions whose name starts with \"smie-rule-\" are helper functions
designed specifically for use in this function.")
(defvar smie--hanging-eolp-function
;; FIXME: This is a quick hack for 24.4. Don't document it and replace with
;; a well-defined function with a cleaner interface instead!
(lambda ()
(skip-chars-forward " \t")
(or (eolp)
(and ;; (looking-at comment-start-skip) ;(bug#16041).
(forward-comment (point-max))))))
(defalias 'smie-rule-hanging-p 'smie-indent--hanging-p)
(defun smie-indent--hanging-p ()
"Return non-nil if the current token is \"hanging\".
@ -1168,10 +1177,7 @@ the beginning of a line."
(not (eobp))
;; Could be an open-paren.
(forward-char 1))
(skip-chars-forward " \t")
(or (eolp)
(and ;; (looking-at comment-start-skip) ;(bug#16041).
(forward-comment (point-max))))
(funcall smie--hanging-eolp-function)
(point))))))
(defalias 'smie-rule-bolp 'smie-indent--bolp)
@ -2132,7 +2138,7 @@ position corresponding to each rule."
nil
(push (cons (+ offset (nth 2 sig)) sig) rules)
;; Adjust the rest of the data.
(pcase-dolist ((and cotrace `(,count ,toffset ,trace))
(pcase-dolist ((and cotrace `(,count ,toffset . ,trace))
cotraces)
(setf (nth 1 cotrace) (- toffset offset))
(dolist (sig trace)
@ -2161,15 +2167,14 @@ To save the result for future sessions, use `smie-config-save'."
(cond
((null config) (message "Nothing to change"))
((null smie-config--buffer-local)
(message "Local rules set")
(setq smie-config--buffer-local config))
(smie-config-local config)
(message "Local rules set"))
((y-or-n-p "Replace existing local config? ")
(message "Local rules replaced")
(setq smie-config--buffer-local config))
(smie-config-local config))
((y-or-n-p "Merge with existing local config? ")
(message "Local rules adjusted")
(setq smie-config--buffer-local
(append config smie-config--buffer-local)))
(smie-config-local (append config smie-config--buffer-local)))
(t
(message "Rules guessed: %S" config)))))

View file

@ -390,8 +390,6 @@ must be one of the symbols `header', `mode', or `vertical'."
(window (posn-window start))
(frame (window-frame window))
(minibuffer-window (minibuffer-window frame))
(on-link (and mouse-1-click-follows-link
(mouse-on-link-p start)))
(side (and (eq line 'vertical)
(or (cdr (assq 'vertical-scroll-bars
(frame-parameters frame)))
@ -487,15 +485,7 @@ must be one of the symbols `header', `mode', or `vertical'."
(unless (zerop growth)
(setq dragged t)
(adjust-window-trailing-edge
window (if (eq line 'mode) growth (- growth)) nil t))))))
;; Process the terminating event.
(when (and (mouse-event-p event) on-link (not dragged)
(mouse--remap-link-click-p start-event event))
;; If mouse-2 has never been done by the user, it doesn't have
;; the necessary property to be interpreted correctly.
(put 'mouse-2 'event-kind 'mouse-click)
(setcar event 'mouse-2)
(push event unread-command-events))))
window (if (eq line 'mode) growth (- growth)) nil t))))))))
(defun mouse-drag-mode-line (start-event)
"Change the height of a window by dragging on the mode line."

View file

@ -318,10 +318,12 @@ object is returned instead of a list containing this single Lisp object.
(while (eq (car result) :pending)
(let ((event (let ((inhibit-redisplay t) unread-command-events)
(read-event nil nil check-interval))))
(when event
(setf unread-command-events
(nconc unread-command-events
(cons event nil))))
(when event
(if (ignore-errors (dbus-check-event event))
(setf result (gethash key dbus-return-values-table))
(setf unread-command-events
(nconc unread-command-events
(cons event nil)))))
(when (< check-interval 1)
(setf check-interval (* check-interval 1.05))))))
(when (eq (car result) :error)

View file

@ -2461,8 +2461,10 @@ LINE is used to detect the context on how to complete given INPUT."
(and completion-code
(> (length input) 0)
(with-current-buffer (process-buffer process)
(let ((completions (python-shell-send-string-no-output
(format completion-code input) process)))
(let ((completions
(python-util-strip-string
(python-shell-send-string-no-output
(format completion-code input) process))))
(and (> (length completions) 2)
(split-string completions
"^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
@ -3648,6 +3650,14 @@ returned as is."
n (1- n)))
(reverse acc))))
(defun python-util-strip-string (string)
"Strip STRING whitespace and newlines from end and beginning."
(replace-regexp-in-string
(rx (or (: string-start (* (any whitespace ?\r ?\n)))
(: (* (any whitespace ?\r ?\n)) string-end)))
""
string))
(defun python-electric-pair-string-delimiter ()
(when (and electric-pair-mode
@ -3736,7 +3746,7 @@ returned as is."
(set (make-local-variable 'outline-regexp)
(python-rx (* space) block-start))
(set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n")
(set (make-local-variable 'outline-heading-end-regexp) ":[^\n]*\n")
(set (make-local-variable 'outline-level)
#'(lambda ()
"`outline-level' function for Python mode."

View file

@ -2152,7 +2152,7 @@ See `font-lock-syntax-table'.")
(ruby-match-expression-expansion
2 font-lock-variable-name-face t)
;; Negation char.
("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]"
("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=~]"
1 font-lock-negation-char-face)
;; Character literals.
;; FIXME: Support longer escape sequences.

View file

@ -1975,7 +1975,11 @@ May return nil if the line should not be treated as continued."
(<= indent initial))
`(column . ,(+ initial sh-indentation)))))
(`(:before . ,(or `"(" `"{" `"["))
(if (smie-rule-hanging-p) (smie-rule-parent)))
(when (smie-rule-hanging-p)
(if (not (smie-rule-prev-p "&&" "||" "|"))
(smie-rule-parent)
(smie-backward-sexp 'halfexp)
`(column . ,(smie-indent-virtual)))))
;; FIXME: Maybe this handling of ;; should be made into
;; a smie-rule-terminator function that takes the substitute ";" as arg.
(`(:before . ,(or `";;" `";&" `";;&"))
@ -1993,7 +1997,7 @@ May return nil if the line should not be treated as continued."
(smie-rule-bolp))))
(current-column)
(smie-indent-calculate)))))
(`(:after . "|") (if (smie-rule-parent-p "|") nil 4))
(`(:after . ,(or `"|" `"&&" `"||")) (if (smie-rule-parent-p token) nil 4))
;; Attempt at backward compatibility with the old config variables.
(`(:before . "fi") (sh-var-value 'sh-indent-for-fi))
(`(:before . "done") (sh-var-value 'sh-indent-for-done))
@ -2300,6 +2304,11 @@ Calls the value of `sh-set-shell-hook' if set."
(let ((mksym (lambda (name)
(intern (format "sh-smie-%s-%s"
sh-indent-supported-here name)))))
(add-function :around (local 'smie--hanging-eolp-function)
(lambda (orig)
(if (looking-at "[ \t]*\\\\\n")
(goto-char (match-end 0))
(funcall orig))))
(smie-setup (symbol-value (funcall mksym "grammar"))
(funcall mksym "rules")
:forward-token (funcall mksym "forward-token")

View file

@ -658,11 +658,16 @@ any other terminator is used itself as input.
The optional argument PROMPT specifies a string to use to prompt the user.
The variable `read-quoted-char-radix' controls which radix to use
for numeric input."
(let ((message-log-max nil) done (first t) (code 0) translated)
(let ((message-log-max nil)
(help-events (delq nil (mapcar (lambda (c) (unless (characterp c) c))
help-event-list)))
done (first t) (code 0) translated)
(while (not done)
(let ((inhibit-quit first)
;; Don't let C-h get the help message--only help function keys.
;; Don't let C-h or other help chars get the help
;; message--only help function keys. See bug#16617.
(help-char nil)
(help-event-list help-events)
(help-form
"Type the special character you want to use,
or the octal character code.

View file

@ -197,7 +197,8 @@ not needed, a prompt-string or an expression for complex read functions.
If ELEMENT is a string or a character it gets inserted (see also
`skeleton-transformation-function'). Other possibilities are:
\\n go to next line and indent according to mode
\\n if not the last element of the skeleton, or not at eol,
go to next line and indent according to mode
_ interesting point, interregion here
- interesting point, no interregion interaction, overrides
interesting point set by _
@ -212,6 +213,10 @@ If ELEMENT is a string or a character it gets inserted (see also
After termination, point will be positioned at the last occurrence of -
or at the first occurrence of _ or at the end of the inserted text.
Note that \\n as the last element of the skeleton only inserts a
newline if not at eol. If you want to unconditionally insert a newline
at the end of the skeleton, use \"\\n\" instead.
Further elements can be defined via `skeleton-further-elements'.
ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted
repeatedly for different inputs. The SKELETON is processed as often as

View file

@ -251,13 +251,16 @@ This returns an error if any Emacs frames are X frames, or always under W32."
;; libraries according to the version of giflib we were
;; compiled against. (If we were compiled without GIF support,
;; libgif-version's value is -1.)
(if (>= libgif-version 50000)
;; Yes, giflib 5.x uses 6 as the major version of the API,
;; thus "libgif-6.dll" below (giflib 4.x used 5 as the
;; major API version).
;; giflib5.dll is from the lua-files project.
'(gif "libgif-6.dll" "giflib5.dll")
'(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll"))
(if (>= libgif-version 50100)
;; Yes, giflib 5.0 uses 6 as the major version of the API,
;; and giflib 5.1 uses 7, thus "libgif-7.dll" and
;; "libgif-6.dll" below (giflib 4.x used 5 as the major API
;; version). giflib5.dll is from the lua-files project,
;; and gif.dll is from luapower.
'(gif "libgif-7.dll")
(if (>= libgif-version 50000)
'(gif "libgif-6.dll" "giflib5.dll" "gif.dll")
'(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll")))
'(svg "librsvg-2-2.dll")
'(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
'(glib "libglib-2.0-0.dll")

View file

@ -606,8 +606,8 @@ The relevant features are:
;; Gnome terminal 2.32.1 reports 1;2802;0
(setq version 200))
(when (equal (match-string 1 str) "83")
;; OSX's Terminal.app (version 2.3 (309), which returns 83;40003;0)
;; seems to also lack support for some of these (bug#17607).
;; `screen' (which returns 83;40003;0) seems to also lack support for
;; some of these (bug#17607).
(setq version 240))
;; If version is 242 or higher, assume the xterm supports
;; reporting the background color (TODO: maybe earlier

View file

@ -44,6 +44,8 @@
(defvar outline-heading-alist)
(defvar skeleton-end-newline)
(defgroup texinfo nil
"Texinfo Mode."
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
@ -626,6 +628,11 @@ value of `texinfo-mode-hook'."
(setq-local tex-first-line-header-regexp "^\\\\input")
(setq-local tex-trailer "@bye\n")
;; Prevent skeleton.el from adding a newline to each inserted
;; skeleton. Those which do want a newline do that explicitly in
;; their define-skeleton form.
(setq-local skeleton-end-newline nil)
;; Prevent filling certain lines, in addition to ones specified by
;; the user.
(setq-local auto-fill-inhibit-regexp
@ -653,7 +660,7 @@ Puts point on a blank line between them."
(if (or (string-match "\\`def" str)
(member str '("table" "ftable" "vtable")))
'(nil " " -))
\n _ \n "@end " str \n)
\n _ \n "@end " str \n \n)
(defun texinfo-inside-macro-p (macro &optional bound)
"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 \"."
(backward-word 1)
(texinfo-last-unended-begin)
(or (match-string 1) '-)))
\n "@end " str \n)
\n "@end " str \n \n)
(define-skeleton texinfo-insert-braces
"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."
(define-skeleton texinfo-insert-@example
"Insert the string `@example' in a Texinfo buffer."
nil
\n "@example" \n)
\n "@example" \n \n)
(define-skeleton texinfo-insert-@file
"Insert a `@file{...}' command in a Texinfo buffer.
@ -816,7 +823,7 @@ Leave point after `@node'."
(define-skeleton texinfo-insert-@quotation
"Insert the string `@quotation' in a Texinfo buffer."
\n "@quotation" \n)
\n "@quotation" \n _ \n)
(define-skeleton texinfo-insert-@samp
"Insert a `@samp{...}' command in a Texinfo buffer.

View file

@ -5966,7 +5966,7 @@ live."
;; FIXME: By the way, there could be more levels of dedication:
;; - `barely' dedicated doesn't prevent reuse of the window, only records that
;; the window hasn't been used for something else yet.
;; - `softly' dedicated only allows reuse when asked explicitly.
;; - `soft' (`softly') dedicated only allows reuse when asked explicitly.
;; - `strongly' never allows reuse.
(defvar display-buffer-mark-dedicated nil
"If non-nil, `display-buffer' marks the windows it creates as dedicated.

View file

@ -145,26 +145,25 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
(defun xterm-mouse--read-event-sequence-1000 ()
(let* ((code (- (read-event) 32))
(type
(intern
;; For buttons > 3, the release-event looks differently
;; (see xc/programs/xterm/button.c, function EditorButton),
;; and come in a release-event only, no down-event.
(cond ((>= code 64)
(format "mouse-%d" (- code 60)))
((memq code '(8 9 10))
(format "M-down-mouse-%d" (- code 7)))
((memq code '(3 11))
(let ((down (car (terminal-parameter
nil 'xterm-mouse-last-down))))
(when (and down (string-match "[0-9]" (symbol-name down)))
(format (if (eq code 3) "mouse-%s" "M-mouse-%s")
(match-string 0 (symbol-name down))))))
((memq code '(0 1 2))
(format "down-mouse-%d" (+ 1 code))))))
;; For buttons > 3, the release-event looks differently
;; (see xc/programs/xterm/button.c, function EditorButton),
;; and come in a release-event only, no down-event.
(cond ((>= code 64)
(format "mouse-%d" (- code 60)))
((memq code '(8 9 10))
(format "M-down-mouse-%d" (- code 7)))
((memq code '(3 11))
(let ((down (car (terminal-parameter
nil 'xterm-mouse-last-down))))
(when (and down (string-match "[0-9]" (symbol-name down)))
(format (if (eq code 3) "mouse-%s" "M-mouse-%s")
(match-string 0 (symbol-name down))))))
((memq code '(0 1 2))
(format "down-mouse-%d" (+ 1 code)))))
(x (- (read-event) 33))
(y (- (read-event) 33)))
(and type (wholenump x) (wholenump y)
(list type x y))))
(list (intern type) x y))))
;; XTerm's 1006-mode terminal mouse click reporting has the form
;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are

View file

@ -1,3 +1,42 @@
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* indent.c (Fvertical_motion): Doc fix.
Move to the goal column, if any, with a single call to
move_it_in_display_line, not in two calls. Doing this with two
calls causes move_it_in_display_line apply the line-prefix
handling twice instead of just once. (Bug#17823)
2014-06-21 Paul Eggert <eggert@cs.ucla.edu>
Port to OS X ACLs (Bug#17810).
* fileio.c (Ffile_acl): Port to OS X, where acl_get_file (...,
ACL_TYPE_ACCESS) doesn't work.
2014-06-21 Stefan Monnier <monnier@iro.umontreal.ca>
* keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command
before checking key-translation-map (bug#17659).
2014-06-21 Dmitry Antipov <dmantipov@yandex.ru>
* font.c (font_make_object): Avoid dangling pointer which may
crash GC (Bug#17771).
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the
prototype of DGifCloseFile as appropriate for older and newer
versions of giflib.
(gif_close): New function, encapsulates the differences in the
calling sequence of DGifCloseFile before v5.1.0 and after it.
(gif_load): Call gif_close instead of DGifCloseFile. Divulge the
error string where appropriate. (Bug#17790)
* xdisp.c (Fmove_point_visually): Instead of testing for keyboard
macro execution, make sure point didn't move since last complete
redisplay, as the condition for using the glyph matrix
information. (Bug#17777)
2014-06-19 Dmitry Antipov <dmantipov@yandex.ru>
Minor cleanup of fonset code.

View file

@ -2591,7 +2591,8 @@ struct it
int vpos;
/* Horizontal matrix position reached in move_it_in_display_line.
Only set there, not in display_line. */
Only set there, not in display_line, and only when the X
coordinate is past first_visible_x. */
int hpos;
/* Left fringe bitmap number (enum fringe_bitmap_type). */

View file

@ -3013,6 +3013,9 @@ was unable to determine the ACL entries. */)
acl_t acl;
Lisp_Object acl_string;
char *str;
# ifndef HAVE_ACL_TYPE_EXTENDED
acl_type_t ACL_TYPE_EXTENDED = ACL_TYPE_ACCESS;
# endif
#endif
absname = expand_and_dir_to_file (filename,
@ -3027,7 +3030,7 @@ was unable to determine the ACL entries. */)
#ifdef HAVE_ACL_SET_FILE
absname = ENCODE_FILE (absname);
acl = acl_get_file (SSDATA (absname), ACL_TYPE_ACCESS);
acl = acl_get_file (SSDATA (absname), ACL_TYPE_EXTENDED);
if (acl == NULL)
return Qnil;

View file

@ -207,6 +207,9 @@ font_make_object (int size, Lisp_Object entity, int pixelsize)
= (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT);
int i;
/* GC can happen before the driver is set up,
so avoid dangling pointer here (Bug#17771). */
font->driver = NULL;
XSETFONT (font_object, font);
if (! NILP (entity))

View file

@ -7250,7 +7250,11 @@ gif_image_p (Lisp_Object object)
#ifdef WINDOWSNT
/* GIF library details. */
#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
#else
DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
#endif
DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
#if GIFLIB_MAJOR < 5
DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
@ -7320,6 +7324,22 @@ gif_read_from_memory (GifFileType *file, GifByteType *buf, int len)
return len;
}
static int
gif_close (GifFileType *gif, int *err)
{
int retval;
#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
retval = fn_DGifCloseFile (gif, err);
#else
retval = fn_DGifCloseFile (gif);
#if GIFLIB_MAJOR >= 5
if (err)
*err = gif->Error;
#endif
#endif
return retval;
}
/* Load GIF image IMG for use on frame F. Value is true if
successful. */
@ -7344,9 +7364,7 @@ gif_load (struct frame *f, struct image *img)
Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL);
unsigned long bgcolor = 0;
EMACS_INT idx;
#if GIFLIB_MAJOR >= 5
int gif_err;
#endif
if (NILP (specified_data))
{
@ -7414,7 +7432,7 @@ gif_load (struct frame *f, struct image *img)
if (!check_image_size (f, gif->SWidth, gif->SHeight))
{
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
@ -7423,7 +7441,7 @@ gif_load (struct frame *f, struct image *img)
if (rc == GIF_ERROR || gif->ImageCount <= 0)
{
image_error ("Error reading `%s'", img->spec, Qnil);
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
@ -7435,7 +7453,7 @@ gif_load (struct frame *f, struct image *img)
{
image_error ("Invalid image number `%s' in image `%s'",
image_number, img->spec);
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
}
@ -7453,7 +7471,7 @@ gif_load (struct frame *f, struct image *img)
if (!check_image_size (f, width, height))
{
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
@ -7471,7 +7489,7 @@ gif_load (struct frame *f, struct image *img)
&& 0 <= subimg_left && subimg_left <= width - subimg_width))
{
image_error ("Subimage does not fit in image", Qnil, Qnil);
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
}
@ -7479,7 +7497,7 @@ gif_load (struct frame *f, struct image *img)
/* Create the X image and pixmap. */
if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
{
fn_DGifCloseFile (gif);
gif_close (gif, NULL);
return 0;
}
@ -7650,7 +7668,18 @@ gif_load (struct frame *f, struct image *img)
Fcons (make_number (gif->ImageCount),
img->lisp_data));
fn_DGifCloseFile (gif);
if (gif_close (gif, &gif_err) == GIF_ERROR)
{
#if 5 <= GIFLIB_MAJOR
char *error_text = fn_GifErrorString (gif_err);
if (error_text)
image_error ("Error closing `%s': %s",
img->spec, build_string (error_text));
#else
image_error ("Error closing `%s'", img->spec, Qnil);
#endif
}
/* Maybe fill in the background field while we have ximg handy. */
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))

View file

@ -1944,9 +1944,12 @@ The optional second argument WINDOW specifies the window to use for
parameters such as width, horizontal scrolling, and so on.
The default is to use the selected window's parameters.
LINES can optionally take the form (COLS . LINES), in which case
the motion will not stop at the start of a screen line but on
its column COLS (if such exists on that line, that is).
LINES can optionally take the form (COLS . LINES), in which case the
motion will not stop at the start of a screen line but COLS column
from the visual start of the line (if such exists on that line, that
is). If the line is scrolled horizontally, COLS is interpreted
visually, i.e., as addition to the columns of text beyond the left
edge of the window.
`vertical-motion' always uses the current buffer,
regardless of which buffer is displayed in WINDOW.
@ -2126,20 +2129,14 @@ whether or not it is currently displayed in some window. */)
}
}
/* Move to the goal column, if one was specified. */
/* Move to the goal column, if one was specified. If the window
was originally hscrolled, the goal column is interpreted as
an addition to the hscroll amount. */
if (!NILP (lcols))
{
/* If the window was originally hscrolled, move forward by
the hscrolled amount first. */
if (first_x > 0)
{
move_it_in_display_line (&it, ZV, first_x, MOVE_TO_X);
it.current_x = 0;
}
move_it_in_display_line
(&it, ZV,
(int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
MOVE_TO_X);
int to_x = (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5);
move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
}
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));

View file

@ -2181,7 +2181,7 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
/* Input of single characters from keyboard */
/* Input of single characters from keyboard. */
static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu,
struct timespec *end_time);
@ -9382,16 +9382,6 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
first_unbound = min (t, first_unbound);
head = EVENT_HEAD (key);
if (help_char_p (head) && t > 0)
{
read_key_sequence_cmd = Vprefix_help_command;
keybuf[t++] = key;
last_nonmenu_event = key;
/* The Microsoft C compiler can't handle the goto that
would go here. */
dummyflag = 1;
break;
}
if (SYMBOLP (head))
{
@ -9649,6 +9639,17 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
goto replay_sequence;
}
if (NILP (current_binding)
&& help_char_p (EVENT_HEAD (key)) && t > 1)
{
read_key_sequence_cmd = Vprefix_help_command;
/* The Microsoft C compiler can't handle the goto that
would go here. */
dummyflag = 1;
break;
}
/* If KEY is not defined in any of the keymaps,
and cannot be part of a function key or translation,
and is a shifted function key,

View file

@ -15790,7 +15790,7 @@ set_vertical_scroll_bar (struct window *w)
redisplay itself, when it decides that the previous window start
point is fine and should be kept. Search for "goto force_start"
below to see the details. Like the values of window-start
specified outside of redisply, these internally deduced values
specified outside of redisplay, these internally-deduced values
are tested for feasibility, and ignored if found to be
unfeasible.
@ -20741,12 +20741,15 @@ Value is the new character position of point. */)
recorded in the glyphs, at least as long as the goal is on the
screen. */
if (w->window_end_valid
&& NILP (Vexecuting_kbd_macro)
&& !windows_or_buffers_changed
&& b
&& !b->clip_changed
&& !b->prevent_redisplay_optimizations_p
&& !window_outdated (w)
/* We rely below on the cursor coordinates to be up to date, but
we cannot trust them if some command moved point since the
last complete redisplay. */
&& w->last_point == BUF_PT (b)
&& w->cursor.vpos >= 0
&& w->cursor.vpos < w->current_matrix->nrows
&& (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)

View file

@ -1,3 +1,7 @@
2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
* automated/python-tests.el (python-util-strip-string-1): New test.
2014-06-15 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.2.10.

View file

@ -2706,6 +2706,15 @@ def foo(a, b, c):
(equal (symbol-value (car ccons)) (cdr ccons)))))
(kill-buffer buffer)))
(ert-deftest python-util-strip-string-1 ()
(should (string= (python-util-strip-string "\t\r\n str") "str"))
(should (string= (python-util-strip-string "str \n\r") "str"))
(should (string= (python-util-strip-string "\t\r\n str \n\r ") "str"))
(should
(string= (python-util-strip-string "\n str \nin \tg \n\r") "str \nin \tg"))
(should (string= (python-util-strip-string "\n \t \n\r ") ""))
(should (string= (python-util-strip-string "") "")))
;;; Electricity

View file

@ -23,6 +23,24 @@ case $X in
;;
esac
{ # bug#17621
foo1 &&
foo2 &&
bar
foo1 && \
foo2 && \
bar
}
for foo in bar; do # bug#17721
[ -e $foo ] && {
echo t
} && {
echo r
}
done
echo -n $(( 5 << 2 ))
# This should not be treated as a heredoc (bug#12770).
2