Merge from emacs-24; up to 2014-06-06T02:22:40Z!monnier@iro.umontreal.ca
authorGlenn Morris <rgm@gnu.org>
Sat, 21 Jun 2014 19:45:59 +0000 (12:45 -0700)
committerGlenn Morris <rgm@gnu.org>
Sat, 21 Jun 2014 19:45:59 +0000 (12:45 -0700)
36 files changed:
ChangeLog
admin/ChangeLog
admin/notes/elpa
configure.ac
doc/lispref/ChangeLog
doc/lispref/positions.texi
doc/misc/ChangeLog
doc/misc/autotype.texi
doc/misc/dbus.texi
lisp/ChangeLog
lisp/delsel.el
lisp/dired.el
lisp/emacs-lisp/smie.el
lisp/mouse.el
lisp/net/dbus.el
lisp/progmodes/python.el
lisp/progmodes/ruby-mode.el
lisp/progmodes/sh-script.el
lisp/simple.el
lisp/skeleton.el
lisp/term/w32-win.el
lisp/term/xterm.el
lisp/textmodes/texinfo.el
lisp/window.el
lisp/xt-mouse.el
src/ChangeLog
src/dispextern.h
src/fileio.c
src/font.c
src/image.c
src/indent.c
src/keyboard.c
src/xdisp.c
test/ChangeLog
test/automated/python-tests.el
test/indent/shell.sh

index 412b840..32fde8b 100644 (file)
--- a/ChangeLog
+++ b/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).
index 02d8dc0..dc12832 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-21  Stephen Berman  <Stephen.Berman@gmx.net>
+
+       * notes/elpa: Use "git" instead of "bzr" in the name of machine to
+       clone the repository from.
+
 2014-06-13  Glenn Morris  <rgm@gnu.org>
 
        * unidata/Makefile.in (${DSTDIR}/charprop.el):
index 469a0ca..3922604 100644 (file)
@@ -3,9 +3,9 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
 The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
 repository named "elpa", hosted on Savannah.  To check it out:
 
-  git clone git://bzr.sv.gnu.org/emacs/elpa
+  git clone git://git.sv.gnu.org/emacs/elpa
   cd elpa
-  git remote set-url --push origin git+ssh://bzr.sv.gnu.org/srv/git/emacs/elpa
+  git remote set-url --push origin git+ssh://git.sv.gnu.org/srv/git/emacs/elpa
   [create task branch for edits, etc.]
 
 Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
index c4ca395..b253d24 100644 (file)
@@ -931,8 +931,11 @@ edit_cflags="
 AC_ARG_ENABLE(link-time-optimization,
 [AS_HELP_STRING([--enable-link-time-optimization],
                 [build emacs with link-time optimization.
-                This is supported for gcc since 4.5.0 and clang.
-                Note that clang support is experimental - see INSTALL])],
+                This requires GCC 4.5.0 or later, or clang.
+                (Note that clang support is experimental - see INSTALL.)
+                It also makes Emacs harder to debug, and when we tried it
+                with GCC 4.9.0 x86-64 it made Emacs slower, so it's not
+                recommended for typical use.])],
 if test "${enableval}" != "no"; then
    ac_lto_supported=no
    if test $emacs_cv_clang = yes; then
@@ -970,6 +973,13 @@ if test "${enableval}" != "no"; then
         # command, so plugin name is appended to ARFLAGS.
         ARFLAGS="cru --plugin $GOLD_PLUGIN"
         RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
+      else
+        dnl The following is needed for GCC 4.9.0.  The GCC 4.9.0 release notes
+        dnl suggest that instead of -ffat-lto-objects we should use gcc-ar and
+        dnl gcc-ranlib in place of ar and ranlib, but gcc-ar makes /usr/bin/ar
+        dnl dump core on Fedora 20, so play it safe for now.
+        gl_COMPILER_OPTION_IF([-ffat-lto-objects],
+          [CFLAGS="$CFLAGS -ffat-lto-objects"])
       fi
    fi
 fi)
index 4089068..3b7ca9c 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * positions.texi (Screen Lines): Clarify how columns are counted
+       by vertical-motion.
+
 2014-06-15  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in (bootstrap-clean): New.
index 5a77b37..e32f0ef 100644 (file)
@@ -500,7 +500,11 @@ is negative, it moves up instead.
 The @var{count} argument can be a cons cell, @code{(@var{cols}
 . @var{lines})}, instead of an integer.  Then the function moves by
 @var{lines} screen lines, and puts point @var{cols} columns from the
-start of that screen line.
+visual start of that screen line.  Note that @var{cols} are counted
+from the @emph{visual} start of the line; if the window is scrolled
+horizontally (@pxref{Horizontal Scrolling}), the column on which point
+will end is in addition to the number of columns by which the text is
+scrolled.
 
 The return value is the number of screen lines over which point was
 moved.  The value may be less in absolute value than @var{count} if
index a6ddb15..a1a99e5 100644 (file)
@@ -1,3 +1,12 @@
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * autotype.texi (Skeleton Language): Document the feature of \n
+       when at eol.
+
+2014-06-21  Michael Albinus  <michael.albinus@gmx.de>
+
+       * dbus.texi (Type Conversion): Formatting edits in example.
+
 2014-06-15  Michael Albinus  <michael.albinus@gmx.de>
 
        Sync with Tramp 2.2.10.
index 04f74cc..e0fce74 100644 (file)
@@ -232,8 +232,11 @@ Insert string or character.  Literal strings and characters are passed through
 @code{skeleton-transformation} when that is non-@code{nil}.
 @item @code{?\n}
 @c ??? something seems very wrong here.
-Insert a newline and align under current line.  Use newline character
-@code{?\n} to prevent alignment.
+Insert a newline and align under current line, but not if this is the
+last element of a skeleton and the newline would be inserted at end of
+line.  Use newline character @code{?\n} to prevent alignment.  Use
+@code{"\n"} as the last string element of a skeleton to insert a
+newline after the skeleton unconditionally.
 @item @code{_}
 Interesting point.  When wrapping skeletons around successive regions, they are
 put at these places.  Point is left at first @code{_} where nothing is wrapped.
index e7f8224..0c19cb9 100644 (file)
@@ -1060,11 +1060,11 @@ elements of this array.  Example:
   ""                          ;; No icon.
   "Notification summary"      ;; Summary.
   (format                     ;; Body.
-    "This is a test notification, raised from %s" (emacs-version))
+    "This is a test notification, raised from\n%S" (emacs-version))
   '(:array)                   ;; No actions (empty array of strings).
   '(:array :signature "@{sv@}") ;; No hints
                               ;; (empty array of dictionary entries).
-  :int32 -1)                 ;; Default timeout.
+  :int32 -1)                  ;; Default timeout.
 
 @result{} 3
 @end lisp
index d8146a9..95c3566 100644 (file)
@@ -1,3 +1,98 @@
+2014-06-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+
+       Fix completion retrieval parsing (bug#17209).
+       * progmodes/python.el (python-mode):
+       (python-util-strip-string): New function.
+       (python-shell-completion-get-completions): Use it.
+
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * skeleton.el (skeleton-insert): Fix last change.
+
+2014-06-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+
+       Enhancements for outline integration (bug#17796).
+       * progmodes/python.el (python-mode): Properly set
+       outline-heading-end-regexp so that comments after colons for
+       defuns are supported.
+
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * skeleton.el (skeleton-insert): Doc fix.
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/smie.el (smie-config--guess): Fix typo.
+       (smie-config-guess): Use smie-config-local so the rules are obeyed
+       (bug#17818).
+
+       * mouse.el (mouse-drag-line): Don't re-add to unread-comment-events,
+       since it's already done inside the loop (bug#17819).
+
+2014-06-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * mouse.el (mouse-drag-line): Re-remove code initially removed
+       on 2013-03-09 and inadvertently reintroduced on 2013-11-30
+       (Bug#17819).
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-smie-sh-rules): For { after &&, don't
+       align with the surrounding parent (bug#17721).
+
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * textmodes/texinfo.el (texinfo-mode): Set skeleton-end-newline
+       locally to nil.
+       (texinfo-insert-block, texinfo-insert-@end)
+       (texinfo-insert-@example, texinfo-insert-@quotation): Adjust to
+       local setting of skeleton-end-newline by adding an explicit \n to
+       the skeletons where appropriate.  (Bug#17801)
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/smie.el (smie--hanging-eolp-function): New var.
+       (smie-indent--hanging-p): Use it.
+       * progmodes/sh-script.el (sh-set-shell): Set it (bug#17621).
+
+2014-06-21  Leo Liu  <sdl.web@gmail.com>
+
+       * simple.el (read-quoted-char): Don't let help chars pop up help
+       buffer.  (Bug#16617)
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-smie-sh-rules): Use same rule for && as
+       for | (bug#17621).
+
+       * xt-mouse.el (xterm-mouse--read-event-sequence-1000):
+       Drop unknown events instead of burping.
+
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * term/w32-win.el (dynamic-library-alist): Support giflib 5.1.0
+       and later.  (Bug#17790)
+
+2014-06-21  Juri Linkov  <juri@jurta.org>
+
+       * dired.el (dired-mark-pop-up): Let-bind display-buffer-mark-dedicated
+       to `soft'.  (Bug#17554)
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * delsel.el (electric-newline-and-maybe-indent): Mark it as well
+       (bug#17737).
+
+2014-06-21  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-font-lock-keywords): Don't fontify
+       `!' in `!~' with `font-lock-negation-char-face'.  (Bug#17732)
+
+2014-06-21  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/dbus.el (dbus-call-method): Push only non D-Bus events into
+       `unread-command-events'.
+
 2014-06-19  William Xu  <william.xwl@gmail.com>
 
        * progmodes/hideif.el (hif-string-to-number): Don't return float for
index ab71e60..1ada027 100644 (file)
@@ -188,6 +188,7 @@ See `delete-selection-helper'."
 (put 'reindent-then-newline-and-indent 'delete-selection t)
 (put 'newline-and-indent 'delete-selection t)
 (put 'newline 'delete-selection t)
+(put 'electric-newline-and-maybe-indent 'delete-selection t)
 (put 'open-line 'delete-selection 'kill)
 
 ;; This is very useful for canceling a selection in the minibuffer without
index fc90b7a..a241fb3 100644 (file)
@@ -3099,7 +3099,10 @@ argument or confirmation)."
          ;; If FILES defaulted to the current line's file.
          (= (length files) 1))
       (apply function args)
-    (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*"))))
+    (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*")))
+         ;; Mark *Marked Files* window as softly-dedicated, to prevent
+         ;; other buffers e.g. *Completions* from reusing it (bug#17554).
+         (display-buffer-mark-dedicated 'soft))
       (with-current-buffer buffer
        (with-current-buffer-window
         buffer
index 3e40d37..1819daa 100644 (file)
@@ -1155,6 +1155,15 @@ NUMBER                           offset by NUMBER, relative to a base token
 The functions whose name starts with \"smie-rule-\" are helper functions
 designed specifically for use in this function.")
 
+(defvar smie--hanging-eolp-function
+  ;; FIXME: This is a quick hack for 24.4.  Don't document it and replace with
+  ;; a well-defined function with a cleaner interface instead!
+  (lambda ()
+    (skip-chars-forward " \t")
+    (or (eolp)
+       (and ;; (looking-at comment-start-skip) ;(bug#16041).
+        (forward-comment (point-max))))))
+
 (defalias 'smie-rule-hanging-p 'smie-indent--hanging-p)
 (defun smie-indent--hanging-p ()
   "Return non-nil if the current token is \"hanging\".
@@ -1168,10 +1177,7 @@ the beginning of a line."
                    (not (eobp))
                    ;; Could be an open-paren.
                    (forward-char 1))
-               (skip-chars-forward " \t")
-               (or (eolp)
-                   (and ;; (looking-at comment-start-skip) ;(bug#16041).
-                        (forward-comment (point-max))))
+              (funcall smie--hanging-eolp-function)
                (point))))))
 
 (defalias 'smie-rule-bolp 'smie-indent--bolp)
@@ -2132,7 +2138,7 @@ position corresponding to each rule."
                   nil
                 (push (cons (+ offset (nth 2 sig)) sig) rules)
                 ;; Adjust the rest of the data.
-                (pcase-dolist ((and cotrace `(,count ,toffset ,trace))
+                (pcase-dolist ((and cotrace `(,count ,toffset ,trace))
                                cotraces)
                   (setf (nth 1 cotrace) (- toffset offset))
                   (dolist (sig trace)
@@ -2161,15 +2167,14 @@ To save the result for future sessions, use `smie-config-save'."
     (cond
      ((null config) (message "Nothing to change"))
      ((null smie-config--buffer-local)
-      (message "Local rules set")
-      (setq smie-config--buffer-local config))
+      (smie-config-local config)
+      (message "Local rules set"))
      ((y-or-n-p "Replace existing local config? ")
       (message "Local rules replaced")
-      (setq smie-config--buffer-local config))
+      (smie-config-local config))
      ((y-or-n-p "Merge with existing local config? ")
       (message "Local rules adjusted")
-      (setq smie-config--buffer-local
-            (append config smie-config--buffer-local)))
+      (smie-config-local (append config smie-config--buffer-local)))
      (t
       (message "Rules guessed: %S" config)))))
 
index ca9ea5d..f5a09f4 100644 (file)
@@ -390,8 +390,6 @@ must be one of the symbols `header', `mode', or `vertical'."
         (window (posn-window start))
         (frame (window-frame window))
         (minibuffer-window (minibuffer-window frame))
-         (on-link (and mouse-1-click-follows-link
-                      (mouse-on-link-p start)))
         (side (and (eq line 'vertical)
                    (or (cdr (assq 'vertical-scroll-bars
                                   (frame-parameters frame)))
@@ -487,15 +485,7 @@ must be one of the symbols `header', `mode', or `vertical'."
          (unless (zerop growth)
            (setq dragged t)
            (adjust-window-trailing-edge
-            window (if (eq line 'mode) growth (- growth)) nil t))))))
-    ;; Process the terminating event.
-    (when (and (mouse-event-p event) on-link (not dragged)
-              (mouse--remap-link-click-p start-event event))
-      ;; If mouse-2 has never been done by the user, it doesn't have
-      ;; the necessary property to be interpreted correctly.
-      (put 'mouse-2 'event-kind 'mouse-click)
-      (setcar event 'mouse-2)
-      (push event unread-command-events))))
+            window (if (eq line 'mode) growth (- growth)) nil t))))))))
 
 (defun mouse-drag-mode-line (start-event)
   "Change the height of a window by dragging on the mode line."
index 7f230a9..66170da 100644 (file)
@@ -318,10 +318,12 @@ object is returned instead of a list containing this single Lisp object.
              (while (eq (car result) :pending)
                (let ((event (let ((inhibit-redisplay t) unread-command-events)
                               (read-event nil nil check-interval))))
-                 (when event
-                   (setf unread-command-events
-                         (nconc unread-command-events
-                                (cons event nil))))
+                (when event
+                  (if (ignore-errors (dbus-check-event event))
+                      (setf result (gethash key dbus-return-values-table))
+                    (setf unread-command-events
+                          (nconc unread-command-events
+                                 (cons event nil)))))
                  (when (< check-interval 1)
                    (setf check-interval (* check-interval 1.05))))))
            (when (eq (car result) :error)
index 91a8552..743981b 100644 (file)
@@ -2461,8 +2461,10 @@ LINE is used to detect the context on how to complete given INPUT."
     (and completion-code
          (> (length input) 0)
          (with-current-buffer (process-buffer process)
-           (let ((completions (python-shell-send-string-no-output
-                               (format completion-code input) process)))
+           (let ((completions
+                  (python-util-strip-string
+                   (python-shell-send-string-no-output
+                    (format completion-code input) process))))
              (and (> (length completions) 2)
                   (split-string completions
                                 "^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
@@ -3648,6 +3650,14 @@ returned as is."
               n (1- n)))
       (reverse acc))))
 
+(defun python-util-strip-string (string)
+  "Strip STRING whitespace and newlines from end and beginning."
+  (replace-regexp-in-string
+   (rx (or (: string-start (* (any whitespace ?\r ?\n)))
+           (: (* (any whitespace ?\r ?\n)) string-end)))
+   ""
+   string))
+
 \f
 (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."
index 74edf7a..3c20279 100644 (file)
@@ -2152,7 +2152,7 @@ See `font-lock-syntax-table'.")
     (ruby-match-expression-expansion
      2 font-lock-variable-name-face t)
     ;; Negation char.
-    ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]"
+    ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=~]"
      1 font-lock-negation-char-face)
     ;; Character literals.
     ;; FIXME: Support longer escape sequences.
index b4148ef..c3032b4 100644 (file)
@@ -1975,7 +1975,11 @@ May return nil if the line should not be treated as continued."
                   (<= indent initial))
          `(column . ,(+ initial sh-indentation)))))
     (`(:before . ,(or `"(" `"{" `"["))
-     (if (smie-rule-hanging-p) (smie-rule-parent)))
+     (when (smie-rule-hanging-p)
+       (if (not (smie-rule-prev-p "&&" "||" "|"))
+          (smie-rule-parent)
+        (smie-backward-sexp 'halfexp)
+        `(column . ,(smie-indent-virtual)))))
     ;; FIXME: Maybe this handling of ;; should be made into
     ;; a smie-rule-terminator function that takes the substitute ";" as arg.
     (`(:before . ,(or `";;" `";&" `";;&"))
@@ -1993,7 +1997,7 @@ May return nil if the line should not be treated as continued."
                             (smie-rule-bolp))))
                  (current-column)
                (smie-indent-calculate)))))
-    (`(:after . "|") (if (smie-rule-parent-p "|") nil 4))
+    (`(:after . ,(or `"|" `"&&" `"||")) (if (smie-rule-parent-p token) nil 4))
     ;; Attempt at backward compatibility with the old config variables.
     (`(:before . "fi") (sh-var-value 'sh-indent-for-fi))
     (`(:before . "done") (sh-var-value 'sh-indent-for-done))
@@ -2300,6 +2304,11 @@ Calls the value of `sh-set-shell-hook' if set."
         (let ((mksym (lambda (name)
                        (intern (format "sh-smie-%s-%s"
                                        sh-indent-supported-here name)))))
+         (add-function :around (local 'smie--hanging-eolp-function)
+                       (lambda (orig)
+                         (if (looking-at "[ \t]*\\\\\n")
+                             (goto-char (match-end 0))
+                           (funcall orig))))
           (smie-setup (symbol-value (funcall mksym "grammar"))
                       (funcall mksym "rules")
                       :forward-token  (funcall mksym "forward-token")
index 031aac3..63bfbb5 100644 (file)
@@ -658,11 +658,16 @@ any other terminator is used itself as input.
 The optional argument PROMPT specifies a string to use to prompt the user.
 The variable `read-quoted-char-radix' controls which radix to use
 for numeric input."
-  (let ((message-log-max nil) done (first t) (code 0) translated)
+  (let ((message-log-max nil)
+       (help-events (delq nil (mapcar (lambda (c) (unless (characterp c) c))
+                                      help-event-list)))
+       done (first t) (code 0) translated)
     (while (not done)
       (let ((inhibit-quit first)
-           ;; Don't let C-h get the help message--only help function keys.
+           ;; Don't let C-h or other help chars get the help
+           ;; message--only help function keys.  See bug#16617.
            (help-char nil)
+           (help-event-list help-events)
            (help-form
             "Type the special character you want to use,
 or the octal character code.
index f85dc8e..28792ac 100644 (file)
@@ -197,7 +197,8 @@ not needed, a prompt-string or an expression for complex read functions.
 If ELEMENT is a string or a character it gets inserted (see also
 `skeleton-transformation-function').  Other possibilities are:
 
-       \\n     go to next line and indent according to mode
+       \\n     if not the last element of the skeleton, or not at eol,
+                go to next line and indent according to mode
        _       interesting point, interregion here
        -       interesting point, no interregion interaction, overrides
                interesting point set by _
@@ -212,6 +213,10 @@ If ELEMENT is a string or a character it gets inserted (see also
 After termination, point will be positioned at the last occurrence of -
 or at the first occurrence of _ or at the end of the inserted text.
 
+Note that \\n as the last element of the skeleton only inserts a
+newline if not at eol.  If you want to unconditionally insert a newline
+at the end of the skeleton, use \"\\n\" instead.
+
 Further elements can be defined via `skeleton-further-elements'.
 ELEMENT may itself be a SKELETON with an INTERACTOR.  The user is prompted
 repeatedly for different inputs.  The SKELETON is processed as often as
index e2cabe5..e103562 100644 (file)
@@ -251,13 +251,16 @@ This returns an error if any Emacs frames are X frames, or always under W32."
        ;; libraries according to the version of giflib we were
        ;; compiled against.  (If we were compiled without GIF support,
        ;; libgif-version's value is -1.)
-       (if (>= libgif-version 50000)
-          ;; Yes, giflib 5.x uses 6 as the major version of the API,
-          ;; thus "libgif-6.dll" below (giflib 4.x used 5 as the
-          ;; major API version).
-          ;; giflib5.dll is from the lua-files project.
-          '(gif "libgif-6.dll" "giflib5.dll")
-        '(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll"))
+       (if (>= libgif-version 50100)
+          ;; Yes, giflib 5.0 uses 6 as the major version of the API,
+          ;; and giflib 5.1 uses 7, thus "libgif-7.dll" and
+          ;; "libgif-6.dll" below (giflib 4.x used 5 as the major API
+          ;; version).  giflib5.dll is from the lua-files project,
+          ;; and gif.dll is from luapower.
+          '(gif "libgif-7.dll")
+        (if (>= libgif-version 50000)
+            '(gif "libgif-6.dll" "giflib5.dll" "gif.dll")
+        '(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll")))
        '(svg "librsvg-2-2.dll")
        '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
        '(glib "libglib-2.0-0.dll")
index 20d4d41..1d08501 100644 (file)
@@ -606,8 +606,8 @@ The relevant features are:
           ;; Gnome terminal 2.32.1 reports 1;2802;0
           (setq version 200))
         (when (equal (match-string 1 str) "83")
-          ;; OSX's Terminal.app (version 2.3 (309), which returns 83;40003;0)
-          ;; seems to also lack support for some of these (bug#17607).
+          ;; `screen' (which returns 83;40003;0) seems to also lack support for
+          ;; some of these (bug#17607).
           (setq version 240))
         ;; If version is 242 or higher, assume the xterm supports
         ;; reporting the background color (TODO: maybe earlier
index e1e2656..6f441d6 100644 (file)
@@ -44,6 +44,8 @@
 
 (defvar outline-heading-alist)
 
+(defvar skeleton-end-newline)
+
 (defgroup texinfo nil
   "Texinfo Mode."
   :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
@@ -626,6 +628,11 @@ value of `texinfo-mode-hook'."
   (setq-local tex-first-line-header-regexp "^\\\\input")
   (setq-local tex-trailer "@bye\n")
 
+  ;; Prevent skeleton.el from adding a newline to each inserted
+  ;; skeleton.  Those which do want a newline do that explicitly in
+  ;; their define-skeleton form.
+  (setq-local skeleton-end-newline nil)
+
   ;; Prevent filling certain lines, in addition to ones specified by
   ;; the user.
   (setq-local auto-fill-inhibit-regexp
@@ -653,7 +660,7 @@ Puts point on a blank line between them."
   (if (or (string-match "\\`def" str)
           (member str '("table" "ftable" "vtable")))
       '(nil " " -))
-  \n _ \n "@end " str \n)
+  \n _ \n "@end " str \n \n)
 
 (defun texinfo-inside-macro-p (macro &optional bound)
   "Non-nil if inside a macro matching the regexp MACRO."
@@ -732,7 +739,7 @@ With prefix argument or inside @code or @example, inserts a plain \"."
       (backward-word 1)
             (texinfo-last-unended-begin)
       (or (match-string 1) '-)))
-  \n "@end " str \n)
+  \n "@end " str \n \n)
 
 (define-skeleton texinfo-insert-braces
   "Make a pair of braces and be poised to type inside of them.
@@ -771,7 +778,7 @@ The default is not to surround any existing words with the braces."
 (define-skeleton texinfo-insert-@example
   "Insert the string `@example' in a Texinfo buffer."
   nil
-  \n "@example" \n)
+  \n "@example" \n \n)
 
 (define-skeleton texinfo-insert-@file
   "Insert a `@file{...}' command in a Texinfo buffer.
@@ -816,7 +823,7 @@ Leave point after `@node'."
 
 (define-skeleton texinfo-insert-@quotation
   "Insert the string `@quotation' in a Texinfo buffer."
-  \n "@quotation" \n)
+  \n "@quotation" \n _ \n)
 
 (define-skeleton texinfo-insert-@samp
   "Insert a `@samp{...}' command in a Texinfo buffer.
index e9f4fd0..28dd6a8 100644 (file)
@@ -5966,7 +5966,7 @@ live."
 ;; FIXME: By the way, there could be more levels of dedication:
 ;; - `barely' dedicated doesn't prevent reuse of the window, only records that
 ;;   the window hasn't been used for something else yet.
-;; - `softly' dedicated only allows reuse when asked explicitly.
+;; - `soft' (`softly') dedicated only allows reuse when asked explicitly.
 ;; - `strongly' never allows reuse.
 (defvar display-buffer-mark-dedicated nil
   "If non-nil, `display-buffer' marks the windows it creates as dedicated.
index 54fd1a4..f9e8988 100644 (file)
@@ -145,26 +145,25 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
 (defun xterm-mouse--read-event-sequence-1000 ()
   (let* ((code (- (read-event) 32))
          (type
-         (intern
-          ;; For buttons > 3, the release-event looks differently
-          ;; (see xc/programs/xterm/button.c, function EditorButton),
-          ;; and come in a release-event only, no down-event.
-          (cond ((>= code 64)
-                 (format "mouse-%d" (- code 60)))
-                ((memq code '(8 9 10))
-                 (format "M-down-mouse-%d" (- code 7)))
-                ((memq code '(3 11))
-                  (let ((down (car (terminal-parameter
-                                    nil 'xterm-mouse-last-down))))
-                    (when (and down (string-match "[0-9]" (symbol-name down)))
-                      (format (if (eq code 3) "mouse-%s" "M-mouse-%s")
-                              (match-string 0 (symbol-name down))))))
-                ((memq code '(0 1 2))
-                 (format "down-mouse-%d" (+ 1 code))))))
+         ;; For buttons > 3, the release-event looks differently
+         ;; (see xc/programs/xterm/button.c, function EditorButton),
+         ;; and come in a release-event only, no down-event.
+         (cond ((>= code 64)
+                (format "mouse-%d" (- code 60)))
+               ((memq code '(8 9 10))
+                (format "M-down-mouse-%d" (- code 7)))
+               ((memq code '(3 11))
+                 (let ((down (car (terminal-parameter
+                                   nil 'xterm-mouse-last-down))))
+                   (when (and down (string-match "[0-9]" (symbol-name down)))
+                     (format (if (eq code 3) "mouse-%s" "M-mouse-%s")
+                             (match-string 0 (symbol-name down))))))
+               ((memq code '(0 1 2))
+                (format "down-mouse-%d" (+ 1 code)))))
          (x (- (read-event) 33))
          (y (- (read-event) 33)))
     (and type (wholenump x) (wholenump y)
-         (list type x y))))
+         (list (intern type) x y))))
 
 ;; XTerm's 1006-mode terminal mouse click reporting has the form
 ;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are
index 94f4444..c845568 100644 (file)
@@ -1,3 +1,42 @@
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * indent.c (Fvertical_motion): Doc fix.
+       Move to the goal column, if any, with a single call to
+       move_it_in_display_line, not in two calls.  Doing this with two
+       calls causes move_it_in_display_line apply the line-prefix
+       handling twice instead of just once.  (Bug#17823)
+
+2014-06-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to OS X ACLs (Bug#17810).
+       * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (...,
+       ACL_TYPE_ACCESS) doesn't work.
+
+2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command
+       before checking key-translation-map (bug#17659).
+
+2014-06-21  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * font.c (font_make_object): Avoid dangling pointer which may
+       crash GC (Bug#17771).
+
+2014-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the
+       prototype of DGifCloseFile as appropriate for older and newer
+       versions of giflib.
+       (gif_close): New function, encapsulates the differences in the
+       calling sequence of DGifCloseFile before v5.1.0 and after it.
+       (gif_load): Call gif_close instead of DGifCloseFile.  Divulge the
+       error string where appropriate.  (Bug#17790)
+
+       * xdisp.c (Fmove_point_visually): Instead of testing for keyboard
+       macro execution, make sure point didn't move since last complete
+       redisplay, as the condition for using the glyph matrix
+       information.  (Bug#17777)
+
 2014-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Minor cleanup of fonset code.
index e710f8e..5396aeb 100644 (file)
@@ -2591,7 +2591,8 @@ struct it
   int vpos;
 
   /* Horizontal matrix position reached in move_it_in_display_line.
-     Only set there, not in display_line.  */
+     Only set there, not in display_line, and only when the X
+     coordinate is past first_visible_x.  */
   int hpos;
 
   /* Left fringe bitmap number (enum fringe_bitmap_type).  */
index 6fe1130..c773666 100644 (file)
@@ -3013,6 +3013,9 @@ was unable to determine the ACL entries.  */)
   acl_t acl;
   Lisp_Object acl_string;
   char *str;
+# ifndef HAVE_ACL_TYPE_EXTENDED
+  acl_type_t ACL_TYPE_EXTENDED = ACL_TYPE_ACCESS;
+# endif
 #endif
 
   absname = expand_and_dir_to_file (filename,
@@ -3027,7 +3030,7 @@ was unable to determine the ACL entries.  */)
 #ifdef HAVE_ACL_SET_FILE
   absname = ENCODE_FILE (absname);
 
-  acl = acl_get_file (SSDATA (absname), ACL_TYPE_ACCESS);
+  acl = acl_get_file (SSDATA (absname), ACL_TYPE_EXTENDED);
   if (acl == NULL)
     return Qnil;
 
index 9e472fb..251d43b 100644 (file)
@@ -207,6 +207,9 @@ font_make_object (int size, Lisp_Object entity, int pixelsize)
     = (struct font *) allocate_pseudovector (size, FONT_OBJECT_MAX, PVEC_FONT);
   int i;
 
+  /* GC can happen before the driver is set up,
+     so avoid dangling pointer here (Bug#17771).  */
+  font->driver = NULL;
   XSETFONT (font_object, font);
 
   if (! NILP (entity))
index 3220a45..f8c2402 100644 (file)
@@ -7250,7 +7250,11 @@ gif_image_p (Lisp_Object object)
 #ifdef WINDOWSNT
 
 /* GIF library details.  */
+#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
+DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
+#else
 DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
+#endif
 DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
 #if GIFLIB_MAJOR < 5
 DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
@@ -7320,6 +7324,22 @@ gif_read_from_memory (GifFileType *file, GifByteType *buf, int len)
   return len;
 }
 
+static int
+gif_close (GifFileType *gif, int *err)
+{
+  int retval;
+
+#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
+  retval = fn_DGifCloseFile (gif, err);
+#else
+  retval = fn_DGifCloseFile (gif);
+#if GIFLIB_MAJOR >= 5
+  if (err)
+    *err = gif->Error;
+#endif
+#endif
+  return retval;
+}
 
 /* Load GIF image IMG for use on frame F.  Value is true if
    successful.  */
@@ -7344,9 +7364,7 @@ gif_load (struct frame *f, struct image *img)
   Lisp_Object specified_data = image_spec_value (img->spec, QCdata, NULL);
   unsigned long bgcolor = 0;
   EMACS_INT idx;
-#if GIFLIB_MAJOR >= 5
   int gif_err;
-#endif
 
   if (NILP (specified_data))
     {
@@ -7414,7 +7432,7 @@ gif_load (struct frame *f, struct image *img)
   if (!check_image_size (f, gif->SWidth, gif->SHeight))
     {
       image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
-      fn_DGifCloseFile (gif);
+      gif_close (gif, NULL);
       return 0;
     }
 
@@ -7423,7 +7441,7 @@ gif_load (struct frame *f, struct image *img)
   if (rc == GIF_ERROR || gif->ImageCount <= 0)
     {
       image_error ("Error reading `%s'", img->spec, Qnil);
-      fn_DGifCloseFile (gif);
+      gif_close (gif, NULL);
       return 0;
     }
 
@@ -7435,7 +7453,7 @@ gif_load (struct frame *f, struct image *img)
       {
        image_error ("Invalid image number `%s' in image `%s'",
                     image_number, img->spec);
-       fn_DGifCloseFile (gif);
+       gif_close (gif, NULL);
        return 0;
       }
   }
@@ -7453,7 +7471,7 @@ gif_load (struct frame *f, struct image *img)
   if (!check_image_size (f, width, height))
     {
       image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
-      fn_DGifCloseFile (gif);
+      gif_close (gif, NULL);
       return 0;
     }
 
@@ -7471,7 +7489,7 @@ gif_load (struct frame *f, struct image *img)
             && 0 <= subimg_left && subimg_left <= width - subimg_width))
        {
          image_error ("Subimage does not fit in image", Qnil, Qnil);
-         fn_DGifCloseFile (gif);
+         gif_close (gif, NULL);
          return 0;
        }
     }
@@ -7479,7 +7497,7 @@ gif_load (struct frame *f, struct image *img)
   /* Create the X image and pixmap.  */
   if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
     {
-      fn_DGifCloseFile (gif);
+      gif_close (gif, NULL);
       return 0;
     }
 
@@ -7650,7 +7668,18 @@ gif_load (struct frame *f, struct image *img)
                            Fcons (make_number (gif->ImageCount),
                                   img->lisp_data));
 
-  fn_DGifCloseFile (gif);
+  if (gif_close (gif, &gif_err) == GIF_ERROR)
+    {
+#if 5 <= GIFLIB_MAJOR
+      char *error_text = fn_GifErrorString (gif_err);
+
+      if (error_text)
+       image_error ("Error closing `%s': %s",
+                    img->spec, build_string (error_text));
+#else
+      image_error ("Error closing `%s'", img->spec, Qnil);
+#endif
+    }
 
   /* Maybe fill in the background field while we have ximg handy. */
   if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
index dc86251..711792f 100644 (file)
@@ -1944,9 +1944,12 @@ The optional second argument WINDOW specifies the window to use for
 parameters such as width, horizontal scrolling, and so on.
 The default is to use the selected window's parameters.
 
-LINES can optionally take the form (COLS . LINES), in which case
-the motion will not stop at the start of a screen line but on
-its column COLS (if such exists on that line, that is).
+LINES can optionally take the form (COLS . LINES), in which case the
+motion will not stop at the start of a screen line but COLS column
+from the visual start of the line (if such exists on that line, that
+is).  If the line is scrolled horizontally, COLS is interpreted
+visually, i.e., as addition to the columns of text beyond the left
+edge of the window.
 
 `vertical-motion' always uses the current buffer,
 regardless of which buffer is displayed in WINDOW.
@@ -2126,20 +2129,14 @@ whether or not it is currently displayed in some window.  */)
            }
        }
 
-      /* Move to the goal column, if one was specified.  */
+      /* Move to the goal column, if one was specified.  If the window
+        was originally hscrolled, the goal column is interpreted as
+        an addition to the hscroll amount.  */
       if (!NILP (lcols))
        {
-         /* If the window was originally hscrolled, move forward by
-            the hscrolled amount first.  */
-         if (first_x > 0)
-           {
-             move_it_in_display_line (&it, ZV, first_x, MOVE_TO_X);
-             it.current_x = 0;
-           }
-         move_it_in_display_line
-           (&it, ZV,
-            (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
-            MOVE_TO_X);
+         int to_x = (int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5);
+
+         move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
        }
 
       SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
index 3e5e405..1da300b 100644 (file)
@@ -2181,7 +2181,7 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
 
 
 \f
-/* 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,
index 70e4d1b..8711487 100644 (file)
@@ -15790,7 +15790,7 @@ set_vertical_scroll_bar (struct window *w)
       redisplay itself, when it decides that the previous window start
       point is fine and should be kept.  Search for "goto force_start"
       below to see the details.  Like the values of window-start
-      specified outside of redisply, these internally deduced values
+      specified outside of redisplay, these internally-deduced values
       are tested for feasibility, and ignored if found to be
       unfeasible.
 
@@ -20741,12 +20741,15 @@ Value is the new character position of point.  */)
      recorded in the glyphs, at least as long as the goal is on the
      screen.  */
   if (w->window_end_valid
-      && NILP (Vexecuting_kbd_macro)
       && !windows_or_buffers_changed
       && b
       && !b->clip_changed
       && !b->prevent_redisplay_optimizations_p
       && !window_outdated (w)
+      /* We rely below on the cursor coordinates to be up to date, but
+        we cannot trust them if some command moved point since the
+        last complete redisplay.  */
+      && w->last_point == BUF_PT (b)
       && w->cursor.vpos >= 0
       && w->cursor.vpos < w->current_matrix->nrows
       && (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)
index 716e42e..b90f476 100644 (file)
@@ -1,3 +1,7 @@
+2014-06-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+
+       * automated/python-tests.el (python-util-strip-string-1): New test.
+
 2014-06-15  Michael Albinus  <michael.albinus@gmx.de>
 
        Sync with Tramp 2.2.10.
index de963a6..f580e94 100644 (file)
@@ -2706,6 +2706,15 @@ def foo(a, b, c):
         (equal (symbol-value (car ccons)) (cdr ccons)))))
     (kill-buffer buffer)))
 
+(ert-deftest python-util-strip-string-1 ()
+  (should (string= (python-util-strip-string "\t\r\n    str") "str"))
+  (should (string= (python-util-strip-string "str \n\r") "str"))
+  (should (string= (python-util-strip-string "\t\r\n    str \n\r ") "str"))
+  (should
+   (string= (python-util-strip-string "\n str \nin \tg \n\r") "str \nin \tg"))
+  (should (string= (python-util-strip-string "\n \t \n\r ") ""))
+  (should (string= (python-util-strip-string "") "")))
+
 \f
 ;;; Electricity
 
index fdf736e..8e831bb 100755 (executable)
@@ -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