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>
|
||||
|
||||
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>
|
||||
|
||||
* 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
|
||||
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
|
||||
|
|
14
configure.ac
14
configure.ac
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))))
|
||||
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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). */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
47
src/image.c
47
src/image.c
|
@ -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)))
|
||||
|
|
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.
|
||||
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));
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue