mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-03 19:03:24 +00:00
Merge from emacs-24; up to 2014-06-06T02:22:40Z!monnier@iro.umontreal.ca
This commit is contained in:
commit
c400516ab1
36 changed files with 401 additions and 114 deletions
10
ChangeLog
10
ChangeLog
|
@ -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>
|
2014-06-20 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
Diagnose failures due to colons in directory names (Bug#17278).
|
Diagnose failures due to colons in directory names (Bug#17278).
|
||||||
|
|
|
@ -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>
|
2014-06-13 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* unidata/Makefile.in (${DSTDIR}/charprop.el):
|
* unidata/Makefile.in (${DSTDIR}/charprop.el):
|
||||||
|
|
|
@ -3,9 +3,9 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
|
||||||
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
|
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
|
||||||
repository named "elpa", hosted on Savannah. To check it out:
|
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
|
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.]
|
[create task branch for edits, etc.]
|
||||||
|
|
||||||
Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
|
Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
|
||||||
|
|
14
configure.ac
14
configure.ac
|
@ -931,8 +931,11 @@ edit_cflags="
|
||||||
AC_ARG_ENABLE(link-time-optimization,
|
AC_ARG_ENABLE(link-time-optimization,
|
||||||
[AS_HELP_STRING([--enable-link-time-optimization],
|
[AS_HELP_STRING([--enable-link-time-optimization],
|
||||||
[build emacs with link-time optimization.
|
[build emacs with link-time optimization.
|
||||||
This is supported for gcc since 4.5.0 and clang.
|
This requires GCC 4.5.0 or later, or clang.
|
||||||
Note that clang support is experimental - see INSTALL])],
|
(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
|
if test "${enableval}" != "no"; then
|
||||||
ac_lto_supported=no
|
ac_lto_supported=no
|
||||||
if test $emacs_cv_clang = yes; then
|
if test $emacs_cv_clang = yes; then
|
||||||
|
@ -970,6 +973,13 @@ if test "${enableval}" != "no"; then
|
||||||
# command, so plugin name is appended to ARFLAGS.
|
# command, so plugin name is appended to ARFLAGS.
|
||||||
ARFLAGS="cru --plugin $GOLD_PLUGIN"
|
ARFLAGS="cru --plugin $GOLD_PLUGIN"
|
||||||
RANLIB="$RANLIB --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
|
fi
|
||||||
fi)
|
fi)
|
||||||
|
|
|
@ -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>
|
2014-06-15 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in (bootstrap-clean): New.
|
* Makefile.in (bootstrap-clean): New.
|
||||||
|
|
|
@ -500,7 +500,11 @@ is negative, it moves up instead.
|
||||||
The @var{count} argument can be a cons cell, @code{(@var{cols}
|
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})}, instead of an integer. Then the function moves by
|
||||||
@var{lines} screen lines, and puts point @var{cols} columns from the
|
@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
|
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
|
moved. The value may be less in absolute value than @var{count} if
|
||||||
|
|
|
@ -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>
|
2014-06-15 Michael Albinus <michael.albinus@gmx.de>
|
||||||
|
|
||||||
Sync with Tramp 2.2.10.
|
Sync with Tramp 2.2.10.
|
||||||
|
|
|
@ -232,8 +232,11 @@ Insert string or character. Literal strings and characters are passed through
|
||||||
@code{skeleton-transformation} when that is non-@code{nil}.
|
@code{skeleton-transformation} when that is non-@code{nil}.
|
||||||
@item @code{?\n}
|
@item @code{?\n}
|
||||||
@c ??? something seems very wrong here.
|
@c ??? something seems very wrong here.
|
||||||
Insert a newline and align under current line. Use newline character
|
Insert a newline and align under current line, but not if this is the
|
||||||
@code{?\n} to prevent alignment.
|
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{_}
|
@item @code{_}
|
||||||
Interesting point. When wrapping skeletons around successive regions, they are
|
Interesting point. When wrapping skeletons around successive regions, they are
|
||||||
put at these places. Point is left at first @code{_} where nothing is wrapped.
|
put at these places. Point is left at first @code{_} where nothing is wrapped.
|
||||||
|
|
|
@ -1060,11 +1060,11 @@ elements of this array. Example:
|
||||||
"" ;; No icon.
|
"" ;; No icon.
|
||||||
"Notification summary" ;; Summary.
|
"Notification summary" ;; Summary.
|
||||||
(format ;; Body.
|
(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) ;; No actions (empty array of strings).
|
||||||
'(:array :signature "@{sv@}") ;; No hints
|
'(:array :signature "@{sv@}") ;; No hints
|
||||||
;; (empty array of dictionary entries).
|
;; (empty array of dictionary entries).
|
||||||
:int32 -1) ;; Default timeout.
|
:int32 -1) ;; Default timeout.
|
||||||
|
|
||||||
@result{} 3
|
@result{} 3
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
|
@ -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>
|
2014-06-19 William Xu <william.xwl@gmail.com>
|
||||||
|
|
||||||
* progmodes/hideif.el (hif-string-to-number): Don't return float for
|
* progmodes/hideif.el (hif-string-to-number): Don't return float for
|
||||||
|
|
|
@ -188,6 +188,7 @@ See `delete-selection-helper'."
|
||||||
(put 'reindent-then-newline-and-indent 'delete-selection t)
|
(put 'reindent-then-newline-and-indent 'delete-selection t)
|
||||||
(put 'newline-and-indent 'delete-selection t)
|
(put 'newline-and-indent 'delete-selection t)
|
||||||
(put 'newline 'delete-selection t)
|
(put 'newline 'delete-selection t)
|
||||||
|
(put 'electric-newline-and-maybe-indent 'delete-selection t)
|
||||||
(put 'open-line 'delete-selection 'kill)
|
(put 'open-line 'delete-selection 'kill)
|
||||||
|
|
||||||
;; This is very useful for canceling a selection in the minibuffer without
|
;; This is very useful for canceling a selection in the minibuffer without
|
||||||
|
|
|
@ -3099,7 +3099,10 @@ argument or confirmation)."
|
||||||
;; If FILES defaulted to the current line's file.
|
;; If FILES defaulted to the current line's file.
|
||||||
(= (length files) 1))
|
(= (length files) 1))
|
||||||
(apply function args)
|
(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 buffer
|
||||||
(with-current-buffer-window
|
(with-current-buffer-window
|
||||||
buffer
|
buffer
|
||||||
|
|
|
@ -1155,6 +1155,15 @@ NUMBER offset by NUMBER, relative to a base token
|
||||||
The functions whose name starts with \"smie-rule-\" are helper functions
|
The functions whose name starts with \"smie-rule-\" are helper functions
|
||||||
designed specifically for use in this function.")
|
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)
|
(defalias 'smie-rule-hanging-p 'smie-indent--hanging-p)
|
||||||
(defun smie-indent--hanging-p ()
|
(defun smie-indent--hanging-p ()
|
||||||
"Return non-nil if the current token is \"hanging\".
|
"Return non-nil if the current token is \"hanging\".
|
||||||
|
@ -1168,10 +1177,7 @@ the beginning of a line."
|
||||||
(not (eobp))
|
(not (eobp))
|
||||||
;; Could be an open-paren.
|
;; Could be an open-paren.
|
||||||
(forward-char 1))
|
(forward-char 1))
|
||||||
(skip-chars-forward " \t")
|
(funcall smie--hanging-eolp-function)
|
||||||
(or (eolp)
|
|
||||||
(and ;; (looking-at comment-start-skip) ;(bug#16041).
|
|
||||||
(forward-comment (point-max))))
|
|
||||||
(point))))))
|
(point))))))
|
||||||
|
|
||||||
(defalias 'smie-rule-bolp 'smie-indent--bolp)
|
(defalias 'smie-rule-bolp 'smie-indent--bolp)
|
||||||
|
@ -2132,7 +2138,7 @@ position corresponding to each rule."
|
||||||
nil
|
nil
|
||||||
(push (cons (+ offset (nth 2 sig)) sig) rules)
|
(push (cons (+ offset (nth 2 sig)) sig) rules)
|
||||||
;; Adjust the rest of the data.
|
;; Adjust the rest of the data.
|
||||||
(pcase-dolist ((and cotrace `(,count ,toffset ,trace))
|
(pcase-dolist ((and cotrace `(,count ,toffset . ,trace))
|
||||||
cotraces)
|
cotraces)
|
||||||
(setf (nth 1 cotrace) (- toffset offset))
|
(setf (nth 1 cotrace) (- toffset offset))
|
||||||
(dolist (sig trace)
|
(dolist (sig trace)
|
||||||
|
@ -2161,15 +2167,14 @@ To save the result for future sessions, use `smie-config-save'."
|
||||||
(cond
|
(cond
|
||||||
((null config) (message "Nothing to change"))
|
((null config) (message "Nothing to change"))
|
||||||
((null smie-config--buffer-local)
|
((null smie-config--buffer-local)
|
||||||
(message "Local rules set")
|
(smie-config-local config)
|
||||||
(setq smie-config--buffer-local config))
|
(message "Local rules set"))
|
||||||
((y-or-n-p "Replace existing local config? ")
|
((y-or-n-p "Replace existing local config? ")
|
||||||
(message "Local rules replaced")
|
(message "Local rules replaced")
|
||||||
(setq smie-config--buffer-local config))
|
(smie-config-local config))
|
||||||
((y-or-n-p "Merge with existing local config? ")
|
((y-or-n-p "Merge with existing local config? ")
|
||||||
(message "Local rules adjusted")
|
(message "Local rules adjusted")
|
||||||
(setq smie-config--buffer-local
|
(smie-config-local (append config smie-config--buffer-local)))
|
||||||
(append config smie-config--buffer-local)))
|
|
||||||
(t
|
(t
|
||||||
(message "Rules guessed: %S" config)))))
|
(message "Rules guessed: %S" config)))))
|
||||||
|
|
||||||
|
|
|
@ -390,8 +390,6 @@ must be one of the symbols `header', `mode', or `vertical'."
|
||||||
(window (posn-window start))
|
(window (posn-window start))
|
||||||
(frame (window-frame window))
|
(frame (window-frame window))
|
||||||
(minibuffer-window (minibuffer-window frame))
|
(minibuffer-window (minibuffer-window frame))
|
||||||
(on-link (and mouse-1-click-follows-link
|
|
||||||
(mouse-on-link-p start)))
|
|
||||||
(side (and (eq line 'vertical)
|
(side (and (eq line 'vertical)
|
||||||
(or (cdr (assq 'vertical-scroll-bars
|
(or (cdr (assq 'vertical-scroll-bars
|
||||||
(frame-parameters frame)))
|
(frame-parameters frame)))
|
||||||
|
@ -487,15 +485,7 @@ must be one of the symbols `header', `mode', or `vertical'."
|
||||||
(unless (zerop growth)
|
(unless (zerop growth)
|
||||||
(setq dragged t)
|
(setq dragged t)
|
||||||
(adjust-window-trailing-edge
|
(adjust-window-trailing-edge
|
||||||
window (if (eq line 'mode) growth (- growth)) nil t))))))
|
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))))
|
|
||||||
|
|
||||||
(defun mouse-drag-mode-line (start-event)
|
(defun mouse-drag-mode-line (start-event)
|
||||||
"Change the height of a window by dragging on the mode line."
|
"Change the height of a window by dragging on the mode line."
|
||||||
|
|
|
@ -318,10 +318,12 @@ object is returned instead of a list containing this single Lisp object.
|
||||||
(while (eq (car result) :pending)
|
(while (eq (car result) :pending)
|
||||||
(let ((event (let ((inhibit-redisplay t) unread-command-events)
|
(let ((event (let ((inhibit-redisplay t) unread-command-events)
|
||||||
(read-event nil nil check-interval))))
|
(read-event nil nil check-interval))))
|
||||||
(when event
|
(when event
|
||||||
(setf unread-command-events
|
(if (ignore-errors (dbus-check-event event))
|
||||||
(nconc unread-command-events
|
(setf result (gethash key dbus-return-values-table))
|
||||||
(cons event nil))))
|
(setf unread-command-events
|
||||||
|
(nconc unread-command-events
|
||||||
|
(cons event nil)))))
|
||||||
(when (< check-interval 1)
|
(when (< check-interval 1)
|
||||||
(setf check-interval (* check-interval 1.05))))))
|
(setf check-interval (* check-interval 1.05))))))
|
||||||
(when (eq (car result) :error)
|
(when (eq (car result) :error)
|
||||||
|
|
|
@ -2461,8 +2461,10 @@ LINE is used to detect the context on how to complete given INPUT."
|
||||||
(and completion-code
|
(and completion-code
|
||||||
(> (length input) 0)
|
(> (length input) 0)
|
||||||
(with-current-buffer (process-buffer process)
|
(with-current-buffer (process-buffer process)
|
||||||
(let ((completions (python-shell-send-string-no-output
|
(let ((completions
|
||||||
(format completion-code input) process)))
|
(python-util-strip-string
|
||||||
|
(python-shell-send-string-no-output
|
||||||
|
(format completion-code input) process))))
|
||||||
(and (> (length completions) 2)
|
(and (> (length completions) 2)
|
||||||
(split-string completions
|
(split-string completions
|
||||||
"^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
|
"^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
|
||||||
|
@ -3648,6 +3650,14 @@ returned as is."
|
||||||
n (1- n)))
|
n (1- n)))
|
||||||
(reverse acc))))
|
(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 ()
|
(defun python-electric-pair-string-delimiter ()
|
||||||
(when (and electric-pair-mode
|
(when (and electric-pair-mode
|
||||||
|
@ -3736,7 +3746,7 @@ returned as is."
|
||||||
|
|
||||||
(set (make-local-variable 'outline-regexp)
|
(set (make-local-variable 'outline-regexp)
|
||||||
(python-rx (* space) block-start))
|
(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)
|
(set (make-local-variable 'outline-level)
|
||||||
#'(lambda ()
|
#'(lambda ()
|
||||||
"`outline-level' function for Python mode."
|
"`outline-level' function for Python mode."
|
||||||
|
|
|
@ -2152,7 +2152,7 @@ See `font-lock-syntax-table'.")
|
||||||
(ruby-match-expression-expansion
|
(ruby-match-expression-expansion
|
||||||
2 font-lock-variable-name-face t)
|
2 font-lock-variable-name-face t)
|
||||||
;; Negation char.
|
;; Negation char.
|
||||||
("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]"
|
("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=~]"
|
||||||
1 font-lock-negation-char-face)
|
1 font-lock-negation-char-face)
|
||||||
;; Character literals.
|
;; Character literals.
|
||||||
;; FIXME: Support longer escape sequences.
|
;; FIXME: Support longer escape sequences.
|
||||||
|
|
|
@ -1975,7 +1975,11 @@ May return nil if the line should not be treated as continued."
|
||||||
(<= indent initial))
|
(<= indent initial))
|
||||||
`(column . ,(+ initial sh-indentation)))))
|
`(column . ,(+ initial sh-indentation)))))
|
||||||
(`(:before . ,(or `"(" `"{" `"["))
|
(`(: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
|
;; FIXME: Maybe this handling of ;; should be made into
|
||||||
;; a smie-rule-terminator function that takes the substitute ";" as arg.
|
;; a smie-rule-terminator function that takes the substitute ";" as arg.
|
||||||
(`(:before . ,(or `";;" `";&" `";;&"))
|
(`(:before . ,(or `";;" `";&" `";;&"))
|
||||||
|
@ -1993,7 +1997,7 @@ May return nil if the line should not be treated as continued."
|
||||||
(smie-rule-bolp))))
|
(smie-rule-bolp))))
|
||||||
(current-column)
|
(current-column)
|
||||||
(smie-indent-calculate)))))
|
(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.
|
;; Attempt at backward compatibility with the old config variables.
|
||||||
(`(:before . "fi") (sh-var-value 'sh-indent-for-fi))
|
(`(:before . "fi") (sh-var-value 'sh-indent-for-fi))
|
||||||
(`(:before . "done") (sh-var-value 'sh-indent-for-done))
|
(`(: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)
|
(let ((mksym (lambda (name)
|
||||||
(intern (format "sh-smie-%s-%s"
|
(intern (format "sh-smie-%s-%s"
|
||||||
sh-indent-supported-here name)))))
|
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"))
|
(smie-setup (symbol-value (funcall mksym "grammar"))
|
||||||
(funcall mksym "rules")
|
(funcall mksym "rules")
|
||||||
:forward-token (funcall mksym "forward-token")
|
:forward-token (funcall mksym "forward-token")
|
||||||
|
|
|
@ -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 optional argument PROMPT specifies a string to use to prompt the user.
|
||||||
The variable `read-quoted-char-radix' controls which radix to use
|
The variable `read-quoted-char-radix' controls which radix to use
|
||||||
for numeric input."
|
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)
|
(while (not done)
|
||||||
(let ((inhibit-quit first)
|
(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-char nil)
|
||||||
|
(help-event-list help-events)
|
||||||
(help-form
|
(help-form
|
||||||
"Type the special character you want to use,
|
"Type the special character you want to use,
|
||||||
or the octal character code.
|
or the octal character code.
|
||||||
|
|
|
@ -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
|
If ELEMENT is a string or a character it gets inserted (see also
|
||||||
`skeleton-transformation-function'). Other possibilities are:
|
`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, interregion here
|
||||||
- interesting point, no interregion interaction, overrides
|
- interesting point, no interregion interaction, overrides
|
||||||
interesting point set by _
|
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 -
|
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.
|
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'.
|
Further elements can be defined via `skeleton-further-elements'.
|
||||||
ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted
|
ELEMENT may itself be a SKELETON with an INTERACTOR. The user is prompted
|
||||||
repeatedly for different inputs. The SKELETON is processed as often as
|
repeatedly for different inputs. The SKELETON is processed as often as
|
||||||
|
|
|
@ -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
|
;; libraries according to the version of giflib we were
|
||||||
;; compiled against. (If we were compiled without GIF support,
|
;; compiled against. (If we were compiled without GIF support,
|
||||||
;; libgif-version's value is -1.)
|
;; libgif-version's value is -1.)
|
||||||
(if (>= libgif-version 50000)
|
(if (>= libgif-version 50100)
|
||||||
;; Yes, giflib 5.x uses 6 as the major version of the API,
|
;; Yes, giflib 5.0 uses 6 as the major version of the API,
|
||||||
;; thus "libgif-6.dll" below (giflib 4.x used 5 as the
|
;; and giflib 5.1 uses 7, thus "libgif-7.dll" and
|
||||||
;; major API version).
|
;; "libgif-6.dll" below (giflib 4.x used 5 as the major API
|
||||||
;; giflib5.dll is from the lua-files project.
|
;; version). giflib5.dll is from the lua-files project,
|
||||||
'(gif "libgif-6.dll" "giflib5.dll")
|
;; and gif.dll is from luapower.
|
||||||
'(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll"))
|
'(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")
|
'(svg "librsvg-2-2.dll")
|
||||||
'(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
|
'(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
|
||||||
'(glib "libglib-2.0-0.dll")
|
'(glib "libglib-2.0-0.dll")
|
||||||
|
|
|
@ -606,8 +606,8 @@ The relevant features are:
|
||||||
;; Gnome terminal 2.32.1 reports 1;2802;0
|
;; Gnome terminal 2.32.1 reports 1;2802;0
|
||||||
(setq version 200))
|
(setq version 200))
|
||||||
(when (equal (match-string 1 str) "83")
|
(when (equal (match-string 1 str) "83")
|
||||||
;; OSX's Terminal.app (version 2.3 (309), which returns 83;40003;0)
|
;; `screen' (which returns 83;40003;0) seems to also lack support for
|
||||||
;; seems to also lack support for some of these (bug#17607).
|
;; some of these (bug#17607).
|
||||||
(setq version 240))
|
(setq version 240))
|
||||||
;; If version is 242 or higher, assume the xterm supports
|
;; If version is 242 or higher, assume the xterm supports
|
||||||
;; reporting the background color (TODO: maybe earlier
|
;; reporting the background color (TODO: maybe earlier
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
|
|
||||||
(defvar outline-heading-alist)
|
(defvar outline-heading-alist)
|
||||||
|
|
||||||
|
(defvar skeleton-end-newline)
|
||||||
|
|
||||||
(defgroup texinfo nil
|
(defgroup texinfo nil
|
||||||
"Texinfo Mode."
|
"Texinfo Mode."
|
||||||
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
|
: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-first-line-header-regexp "^\\\\input")
|
||||||
(setq-local tex-trailer "@bye\n")
|
(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
|
;; Prevent filling certain lines, in addition to ones specified by
|
||||||
;; the user.
|
;; the user.
|
||||||
(setq-local auto-fill-inhibit-regexp
|
(setq-local auto-fill-inhibit-regexp
|
||||||
|
@ -653,7 +660,7 @@ Puts point on a blank line between them."
|
||||||
(if (or (string-match "\\`def" str)
|
(if (or (string-match "\\`def" str)
|
||||||
(member str '("table" "ftable" "vtable")))
|
(member str '("table" "ftable" "vtable")))
|
||||||
'(nil " " -))
|
'(nil " " -))
|
||||||
\n _ \n "@end " str \n)
|
\n _ \n "@end " str \n \n)
|
||||||
|
|
||||||
(defun texinfo-inside-macro-p (macro &optional bound)
|
(defun texinfo-inside-macro-p (macro &optional bound)
|
||||||
"Non-nil if inside a macro matching the regexp MACRO."
|
"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)
|
(backward-word 1)
|
||||||
(texinfo-last-unended-begin)
|
(texinfo-last-unended-begin)
|
||||||
(or (match-string 1) '-)))
|
(or (match-string 1) '-)))
|
||||||
\n "@end " str \n)
|
\n "@end " str \n \n)
|
||||||
|
|
||||||
(define-skeleton texinfo-insert-braces
|
(define-skeleton texinfo-insert-braces
|
||||||
"Make a pair of braces and be poised to type inside of them.
|
"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
|
(define-skeleton texinfo-insert-@example
|
||||||
"Insert the string `@example' in a Texinfo buffer."
|
"Insert the string `@example' in a Texinfo buffer."
|
||||||
nil
|
nil
|
||||||
\n "@example" \n)
|
\n "@example" \n \n)
|
||||||
|
|
||||||
(define-skeleton texinfo-insert-@file
|
(define-skeleton texinfo-insert-@file
|
||||||
"Insert a `@file{...}' command in a Texinfo buffer.
|
"Insert a `@file{...}' command in a Texinfo buffer.
|
||||||
|
@ -816,7 +823,7 @@ Leave point after `@node'."
|
||||||
|
|
||||||
(define-skeleton texinfo-insert-@quotation
|
(define-skeleton texinfo-insert-@quotation
|
||||||
"Insert the string `@quotation' in a Texinfo buffer."
|
"Insert the string `@quotation' in a Texinfo buffer."
|
||||||
\n "@quotation" \n)
|
\n "@quotation" \n _ \n)
|
||||||
|
|
||||||
(define-skeleton texinfo-insert-@samp
|
(define-skeleton texinfo-insert-@samp
|
||||||
"Insert a `@samp{...}' command in a Texinfo buffer.
|
"Insert a `@samp{...}' command in a Texinfo buffer.
|
||||||
|
|
|
@ -5966,7 +5966,7 @@ live."
|
||||||
;; FIXME: By the way, there could be more levels of dedication:
|
;; FIXME: By the way, there could be more levels of dedication:
|
||||||
;; - `barely' dedicated doesn't prevent reuse of the window, only records that
|
;; - `barely' dedicated doesn't prevent reuse of the window, only records that
|
||||||
;; the window hasn't been used for something else yet.
|
;; 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.
|
;; - `strongly' never allows reuse.
|
||||||
(defvar display-buffer-mark-dedicated nil
|
(defvar display-buffer-mark-dedicated nil
|
||||||
"If non-nil, `display-buffer' marks the windows it creates as dedicated.
|
"If non-nil, `display-buffer' marks the windows it creates as dedicated.
|
||||||
|
|
|
@ -145,26 +145,25 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
||||||
(defun xterm-mouse--read-event-sequence-1000 ()
|
(defun xterm-mouse--read-event-sequence-1000 ()
|
||||||
(let* ((code (- (read-event) 32))
|
(let* ((code (- (read-event) 32))
|
||||||
(type
|
(type
|
||||||
(intern
|
;; For buttons > 3, the release-event looks differently
|
||||||
;; For buttons > 3, the release-event looks differently
|
;; (see xc/programs/xterm/button.c, function EditorButton),
|
||||||
;; (see xc/programs/xterm/button.c, function EditorButton),
|
;; and come in a release-event only, no down-event.
|
||||||
;; and come in a release-event only, no down-event.
|
(cond ((>= code 64)
|
||||||
(cond ((>= code 64)
|
(format "mouse-%d" (- code 60)))
|
||||||
(format "mouse-%d" (- code 60)))
|
((memq code '(8 9 10))
|
||||||
((memq code '(8 9 10))
|
(format "M-down-mouse-%d" (- code 7)))
|
||||||
(format "M-down-mouse-%d" (- code 7)))
|
((memq code '(3 11))
|
||||||
((memq code '(3 11))
|
(let ((down (car (terminal-parameter
|
||||||
(let ((down (car (terminal-parameter
|
nil 'xterm-mouse-last-down))))
|
||||||
nil 'xterm-mouse-last-down))))
|
(when (and down (string-match "[0-9]" (symbol-name down)))
|
||||||
(when (and down (string-match "[0-9]" (symbol-name down)))
|
(format (if (eq code 3) "mouse-%s" "M-mouse-%s")
|
||||||
(format (if (eq code 3) "mouse-%s" "M-mouse-%s")
|
(match-string 0 (symbol-name down))))))
|
||||||
(match-string 0 (symbol-name down))))))
|
((memq code '(0 1 2))
|
||||||
((memq code '(0 1 2))
|
(format "down-mouse-%d" (+ 1 code)))))
|
||||||
(format "down-mouse-%d" (+ 1 code))))))
|
|
||||||
(x (- (read-event) 33))
|
(x (- (read-event) 33))
|
||||||
(y (- (read-event) 33)))
|
(y (- (read-event) 33)))
|
||||||
(and type (wholenump x) (wholenump y)
|
(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
|
;; XTerm's 1006-mode terminal mouse click reporting has the form
|
||||||
;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are
|
;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are
|
||||||
|
|
|
@ -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>
|
2014-06-19 Dmitry Antipov <dmantipov@yandex.ru>
|
||||||
|
|
||||||
Minor cleanup of fonset code.
|
Minor cleanup of fonset code.
|
||||||
|
|
|
@ -2591,7 +2591,8 @@ struct it
|
||||||
int vpos;
|
int vpos;
|
||||||
|
|
||||||
/* Horizontal matrix position reached in move_it_in_display_line.
|
/* 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;
|
int hpos;
|
||||||
|
|
||||||
/* Left fringe bitmap number (enum fringe_bitmap_type). */
|
/* Left fringe bitmap number (enum fringe_bitmap_type). */
|
||||||
|
|
|
@ -3013,6 +3013,9 @@ was unable to determine the ACL entries. */)
|
||||||
acl_t acl;
|
acl_t acl;
|
||||||
Lisp_Object acl_string;
|
Lisp_Object acl_string;
|
||||||
char *str;
|
char *str;
|
||||||
|
# ifndef HAVE_ACL_TYPE_EXTENDED
|
||||||
|
acl_type_t ACL_TYPE_EXTENDED = ACL_TYPE_ACCESS;
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
absname = expand_and_dir_to_file (filename,
|
absname = expand_and_dir_to_file (filename,
|
||||||
|
@ -3027,7 +3030,7 @@ was unable to determine the ACL entries. */)
|
||||||
#ifdef HAVE_ACL_SET_FILE
|
#ifdef HAVE_ACL_SET_FILE
|
||||||
absname = ENCODE_FILE (absname);
|
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)
|
if (acl == NULL)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
|
||||||
|
|
|
@ -207,6 +207,9 @@ font_make_object (int size, Lisp_Object entity, int pixelsize)
|
||||||
= (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT);
|
= (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT);
|
||||||
int i;
|
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);
|
XSETFONT (font_object, font);
|
||||||
|
|
||||||
if (! NILP (entity))
|
if (! NILP (entity))
|
||||||
|
|
47
src/image.c
47
src/image.c
|
@ -7250,7 +7250,11 @@ gif_image_p (Lisp_Object object)
|
||||||
#ifdef WINDOWSNT
|
#ifdef WINDOWSNT
|
||||||
|
|
||||||
/* GIF library details. */
|
/* GIF library details. */
|
||||||
|
#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
|
||||||
|
DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
|
||||||
|
#else
|
||||||
DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
|
DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
|
||||||
|
#endif
|
||||||
DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
|
DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
|
||||||
#if GIFLIB_MAJOR < 5
|
#if GIFLIB_MAJOR < 5
|
||||||
DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
|
DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
|
||||||
|
@ -7320,6 +7324,22 @@ gif_read_from_memory (GifFileType *file, GifByteType *buf, int len)
|
||||||
return 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
|
/* Load GIF image IMG for use on frame F. Value is true if
|
||||||
successful. */
|
successful. */
|
||||||
|
@ -7344,9 +7364,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL);
|
Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL);
|
||||||
unsigned long bgcolor = 0;
|
unsigned long bgcolor = 0;
|
||||||
EMACS_INT idx;
|
EMACS_INT idx;
|
||||||
#if GIFLIB_MAJOR >= 5
|
|
||||||
int gif_err;
|
int gif_err;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (NILP (specified_data))
|
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))
|
if (!check_image_size (f, gif->SWidth, gif->SHeight))
|
||||||
{
|
{
|
||||||
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
|
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7423,7 +7441,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
if (rc == GIF_ERROR || gif->ImageCount <= 0)
|
if (rc == GIF_ERROR || gif->ImageCount <= 0)
|
||||||
{
|
{
|
||||||
image_error ("Error reading `%s'", img->spec, Qnil);
|
image_error ("Error reading `%s'", img->spec, Qnil);
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7435,7 +7453,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
{
|
{
|
||||||
image_error ("Invalid image number `%s' in image `%s'",
|
image_error ("Invalid image number `%s' in image `%s'",
|
||||||
image_number, img->spec);
|
image_number, img->spec);
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7453,7 +7471,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
if (!check_image_size (f, width, height))
|
if (!check_image_size (f, width, height))
|
||||||
{
|
{
|
||||||
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
|
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7471,7 +7489,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
&& 0 <= subimg_left && subimg_left <= width - subimg_width))
|
&& 0 <= subimg_left && subimg_left <= width - subimg_width))
|
||||||
{
|
{
|
||||||
image_error ("Subimage does not fit in image", Qnil, Qnil);
|
image_error ("Subimage does not fit in image", Qnil, Qnil);
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7479,7 +7497,7 @@ gif_load (struct frame *f, struct image *img)
|
||||||
/* Create the X image and pixmap. */
|
/* Create the X image and pixmap. */
|
||||||
if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
|
if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
|
||||||
{
|
{
|
||||||
fn_DGifCloseFile (gif);
|
gif_close (gif, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7650,7 +7668,18 @@ gif_load (struct frame *f, struct image *img)
|
||||||
Fcons (make_number (gif->ImageCount),
|
Fcons (make_number (gif->ImageCount),
|
||||||
img->lisp_data));
|
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. */
|
/* Maybe fill in the background field while we have ximg handy. */
|
||||||
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
|
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
|
||||||
|
|
27
src/indent.c
27
src/indent.c
|
@ -1944,9 +1944,12 @@ The optional second argument WINDOW specifies the window to use for
|
||||||
parameters such as width, horizontal scrolling, and so on.
|
parameters such as width, horizontal scrolling, and so on.
|
||||||
The default is to use the selected window's parameters.
|
The default is to use the selected window's parameters.
|
||||||
|
|
||||||
LINES can optionally take the form (COLS . LINES), in which case
|
LINES can optionally take the form (COLS . LINES), in which case the
|
||||||
the motion will not stop at the start of a screen line but on
|
motion will not stop at the start of a screen line but COLS column
|
||||||
its column COLS (if such exists on that line, that is).
|
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,
|
`vertical-motion' always uses the current buffer,
|
||||||
regardless of which buffer is displayed in WINDOW.
|
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 (!NILP (lcols))
|
||||||
{
|
{
|
||||||
/* If the window was originally hscrolled, move forward by
|
int to_x = (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5);
|
||||||
the hscrolled amount first. */
|
|
||||||
if (first_x > 0)
|
move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
|
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
|
||||||
|
|
|
@ -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,
|
static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu,
|
||||||
struct timespec *end_time);
|
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);
|
first_unbound = min (t, first_unbound);
|
||||||
|
|
||||||
head = EVENT_HEAD (key);
|
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))
|
if (SYMBOLP (head))
|
||||||
{
|
{
|
||||||
|
@ -9649,6 +9639,17 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
|
||||||
|
|
||||||
goto replay_sequence;
|
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,
|
/* If KEY is not defined in any of the keymaps,
|
||||||
and cannot be part of a function key or translation,
|
and cannot be part of a function key or translation,
|
||||||
and is a shifted function key,
|
and is a shifted function key,
|
||||||
|
|
|
@ -15790,7 +15790,7 @@ set_vertical_scroll_bar (struct window *w)
|
||||||
redisplay itself, when it decides that the previous window start
|
redisplay itself, when it decides that the previous window start
|
||||||
point is fine and should be kept. Search for "goto force_start"
|
point is fine and should be kept. Search for "goto force_start"
|
||||||
below to see the details. Like the values of window-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
|
are tested for feasibility, and ignored if found to be
|
||||||
unfeasible.
|
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
|
recorded in the glyphs, at least as long as the goal is on the
|
||||||
screen. */
|
screen. */
|
||||||
if (w->window_end_valid
|
if (w->window_end_valid
|
||||||
&& NILP (Vexecuting_kbd_macro)
|
|
||||||
&& !windows_or_buffers_changed
|
&& !windows_or_buffers_changed
|
||||||
&& b
|
&& b
|
||||||
&& !b->clip_changed
|
&& !b->clip_changed
|
||||||
&& !b->prevent_redisplay_optimizations_p
|
&& !b->prevent_redisplay_optimizations_p
|
||||||
&& !window_outdated (w)
|
&& !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 >= 0
|
||||||
&& w->cursor.vpos < w->current_matrix->nrows
|
&& w->cursor.vpos < w->current_matrix->nrows
|
||||||
&& (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)
|
&& (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)
|
||||||
|
|
|
@ -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>
|
2014-06-15 Michael Albinus <michael.albinus@gmx.de>
|
||||||
|
|
||||||
Sync with Tramp 2.2.10.
|
Sync with Tramp 2.2.10.
|
||||||
|
|
|
@ -2706,6 +2706,15 @@ def foo(a, b, c):
|
||||||
(equal (symbol-value (car ccons)) (cdr ccons)))))
|
(equal (symbol-value (car ccons)) (cdr ccons)))))
|
||||||
(kill-buffer buffer)))
|
(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
|
;;; Electricity
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,24 @@ case $X in
|
||||||
;;
|
;;
|
||||||
esac
|
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 ))
|
echo -n $(( 5 << 2 ))
|
||||||
# This should not be treated as a heredoc (bug#12770).
|
# This should not be treated as a heredoc (bug#12770).
|
||||||
2
|
2
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue