diff options
| author | Glenn Morris | 2013-02-01 19:38:21 -0800 |
|---|---|---|
| committer | Glenn Morris | 2013-02-01 19:38:21 -0800 |
| commit | 94fbc901707d7c1fd7ec0471d288e585caf59b34 (patch) | |
| tree | 6d1d48970b231f2ccd2f7c36e4c7298302c00e93 | |
| parent | 98da8c0f542465341b930d36db8000b5bb2c77c4 (diff) | |
| parent | 13841bfcc20881a268e3c853f65312390c589700 (diff) | |
| download | emacs-94fbc901707d7c1fd7ec0471d288e585caf59b34.tar.gz emacs-94fbc901707d7c1fd7ec0471d288e585caf59b34.zip | |
Merge from emacs-24; up to 2012-12-13T09:45:54Z!lekktu@gmail.com
| -rw-r--r-- | lisp/ChangeLog | 33 | ||||
| -rw-r--r-- | lisp/cedet/cedet.el | 14 | ||||
| -rw-r--r-- | lisp/cedet/ede.el | 4 | ||||
| -rw-r--r-- | lisp/cedet/semantic.el | 4 | ||||
| -rw-r--r-- | lisp/cedet/srecode.el | 4 | ||||
| -rw-r--r-- | lisp/emacs-lisp/eieio.el | 4 | ||||
| -rw-r--r-- | lisp/isearch.el | 1 | ||||
| -rw-r--r-- | lisp/mouse.el | 2 | ||||
| -rw-r--r-- | lisp/net/tramp.el | 4 | ||||
| -rw-r--r-- | lisp/progmodes/make-mode.el | 6 | ||||
| -rw-r--r-- | lisp/replace.el | 102 | ||||
| -rw-r--r-- | lisp/textmodes/remember.el | 3 | ||||
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/callproc.c | 48 | ||||
| -rw-r--r-- | src/w32proc.c | 3 |
15 files changed, 155 insertions, 87 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d27b2a44c15..13aacfc85dd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,36 @@ | |||
| 1 | 2013-02-02 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * mouse.el (mouse-drag-track): Always deactivate the mark before | ||
| 4 | running the final event's command since that command is in charge of | ||
| 5 | activating the mark if needed (bug#13523). | ||
| 6 | |||
| 7 | 2013-02-02 Juri Linkov <juri@jurta.org> | ||
| 8 | |||
| 9 | * replace.el (perform-replace): Move let-bindings of isearch-* | ||
| 10 | variables deeper to the loop that searches for the next match. | ||
| 11 | Add bindings for `isearch-nonincremental' and `isearch-adjusted'. | ||
| 12 | Use `isearch-search-fun-default' instead of `isearch-search-fun'. | ||
| 13 | (Bug#13579) | ||
| 14 | |||
| 15 | * isearch.el (isearch-search-fun-default): Check for null | ||
| 16 | first element of isearch-cmds as a precaution when it's used | ||
| 17 | with inactive isearch. | ||
| 18 | |||
| 19 | 2013-02-02 Andrew W. Nosenko <andrew.w.nosenko@gmail.com> (tiny change) | ||
| 20 | |||
| 21 | * net/tramp.el (tramp-check-for-regexp): Avoid "Args out of range" | ||
| 22 | error when buffer in question is narrowed so position 1 is out of | ||
| 23 | visible part. | ||
| 24 | |||
| 25 | 2013-02-02 Glenn Morris <rgm@gnu.org> | ||
| 26 | |||
| 27 | * textmodes/remember.el (remember-clipboard): Doc fix. | ||
| 28 | |||
| 29 | 2013-02-02 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 30 | |||
| 31 | * progmodes/make-mode.el (makefile-fill-paragraph): Reset syntax-table | ||
| 32 | properties (bug#13179). | ||
| 33 | |||
| 1 | 2013-02-02 Juri Linkov <juri@jurta.org> | 34 | 2013-02-02 Juri Linkov <juri@jurta.org> |
| 2 | 35 | ||
| 3 | * progmodes/grep.el (grep-regexp-alist): Use variable grep-match-face | 36 | * progmodes/grep.el (grep-regexp-alist): Use variable grep-match-face |
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el index d876b65303c..e8720bc6624 100644 --- a/lisp/cedet/cedet.el +++ b/lisp/cedet/cedet.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: David Ponce <david@dponce.com> | 5 | ;; Author: David Ponce <david@dponce.com> |
| 6 | ;; Maintainer: Eric M. Ludlam <zappo@gnu.org> | 6 | ;; Maintainer: Eric M. Ludlam <zappo@gnu.org> |
| 7 | ;; Version: 1.1 | 7 | ;; Version: 2.0 |
| 8 | ;; Keywords: OO, lisp | 8 | ;; Keywords: OO, lisp |
| 9 | 9 | ||
| 10 | ;; This file is part of GNU Emacs. | 10 | ;; This file is part of GNU Emacs. |
| @@ -35,7 +35,7 @@ | |||
| 35 | 35 | ||
| 36 | (declare-function inversion-find-version "inversion") | 36 | (declare-function inversion-find-version "inversion") |
| 37 | 37 | ||
| 38 | (defconst cedet-version "1.1" | 38 | (defconst cedet-version "2.0" |
| 39 | "Current version of CEDET.") | 39 | "Current version of CEDET.") |
| 40 | 40 | ||
| 41 | (defconst cedet-packages | 41 | (defconst cedet-packages |
| @@ -43,12 +43,12 @@ | |||
| 43 | ;;PACKAGE MIN-VERSION INSTALLDIR DOCDIR | 43 | ;;PACKAGE MIN-VERSION INSTALLDIR DOCDIR |
| 44 | (cedet ,cedet-version "common" "common" ) | 44 | (cedet ,cedet-version "common" "common" ) |
| 45 | (eieio "1.4" nil "eieio" ) | 45 | (eieio "1.4" nil "eieio" ) |
| 46 | (semantic "2.1" nil "semantic/doc") | 46 | (semantic "2.2" nil "semantic/doc") |
| 47 | (srecode "1.1" nil "srecode" ) | 47 | (srecode "1.2" nil "srecode" ) |
| 48 | (ede "1.1" nil "ede" ) | 48 | (ede "1.2" nil "ede" ) |
| 49 | (speedbar "1.0.4" nil "speedbar" ) | 49 | (speedbar "1.0.4" nil "speedbar" ) |
| 50 | (cogre "1.1" nil "cogre" ) | 50 | (cogre "1.2" nil "cogre" ) |
| 51 | (cedet-contrib "1.1" "contrib" nil ) | 51 | (cedet-contrib "1.2" "contrib" nil ) |
| 52 | ) | 52 | ) |
| 53 | "Table of CEDET packages to install.") | 53 | "Table of CEDET packages to install.") |
| 54 | 54 | ||
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el index 12b8f558d65..3867f628b93 100644 --- a/lisp/cedet/ede.el +++ b/lisp/cedet/ede.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 6 | ;; Keywords: project, make | 6 | ;; Keywords: project, make |
| 7 | ;; Version: 1.0 | 7 | ;; Version: 1.2 |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 10 | 10 | ||
| @@ -60,7 +60,7 @@ | |||
| 60 | (declare-function ede-up-directory "ede/files") | 60 | (declare-function ede-up-directory "ede/files") |
| 61 | (declare-function semantic-lex-make-spp-table "semantic/lex-spp") | 61 | (declare-function semantic-lex-make-spp-table "semantic/lex-spp") |
| 62 | 62 | ||
| 63 | (defconst ede-version "1.0" | 63 | (defconst ede-version "1.2" |
| 64 | "Current version of the Emacs EDE.") | 64 | "Current version of the Emacs EDE.") |
| 65 | 65 | ||
| 66 | ;;; Code: | 66 | ;;; Code: |
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el index decd3b15812..edf2d0cb21a 100644 --- a/lisp/cedet/semantic.el +++ b/lisp/cedet/semantic.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 6 | ;; Keywords: syntax tools | 6 | ;; Keywords: syntax tools |
| 7 | ;; Version: 2.1beta | 7 | ;; Version: 2.2 |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 10 | 10 | ||
| @@ -38,7 +38,7 @@ | |||
| 38 | (require 'semantic/tag) | 38 | (require 'semantic/tag) |
| 39 | (require 'semantic/lex) | 39 | (require 'semantic/lex) |
| 40 | 40 | ||
| 41 | (defvar semantic-version "2.1beta" | 41 | (defvar semantic-version "2.2" |
| 42 | "Current version of Semantic.") | 42 | "Current version of Semantic.") |
| 43 | 43 | ||
| 44 | (declare-function inversion-test "inversion") | 44 | (declare-function inversion-test "inversion") |
diff --git a/lisp/cedet/srecode.el b/lisp/cedet/srecode.el index 3201374bc92..2e2cb8a3f80 100644 --- a/lisp/cedet/srecode.el +++ b/lisp/cedet/srecode.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 6 | ;; Keywords: codegeneration | 6 | ;; Keywords: codegeneration |
| 7 | ;; Version: 1.0 | 7 | ;; Version: 1.2 |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 10 | 10 | ||
| @@ -41,7 +41,7 @@ | |||
| 41 | (require 'mode-local) | 41 | (require 'mode-local) |
| 42 | (load "srecode/loaddefs" nil 'nomessage) | 42 | (load "srecode/loaddefs" nil 'nomessage) |
| 43 | 43 | ||
| 44 | (defvar srecode-version "1.0" | 44 | (defvar srecode-version "1.2" |
| 45 | "Current version of the Semantic Recoder.") | 45 | "Current version of the Semantic Recoder.") |
| 46 | 46 | ||
| 47 | ;;; Code: | 47 | ;;; Code: |
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 7a22e1222c9..626bc0f6dc6 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; Copyright (C) 1995-1996, 1998-2013 Free Software Foundation, Inc. | 4 | ;; Copyright (C) 1995-1996, 1998-2013 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 7 | ;; Version: 1.3 | 7 | ;; Version: 1.4 |
| 8 | ;; Keywords: OO, lisp | 8 | ;; Keywords: OO, lisp |
| 9 | 9 | ||
| 10 | ;; This file is part of GNU Emacs. | 10 | ;; This file is part of GNU Emacs. |
| @@ -46,7 +46,7 @@ | |||
| 46 | 46 | ||
| 47 | (eval-when-compile (require 'cl)) ;FIXME: Use cl-lib! | 47 | (eval-when-compile (require 'cl)) ;FIXME: Use cl-lib! |
| 48 | 48 | ||
| 49 | (defvar eieio-version "1.3" | 49 | (defvar eieio-version "1.4" |
| 50 | "Current version of EIEIO.") | 50 | "Current version of EIEIO.") |
| 51 | 51 | ||
| 52 | (defun eieio-version () | 52 | (defun eieio-version () |
diff --git a/lisp/isearch.el b/lisp/isearch.el index e16e3840d0d..31b1918429f 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -2520,6 +2520,7 @@ Can be changed via `isearch-search-fun-function' for special needs." | |||
| 2520 | ;; the user adds and removes characters in the search string | 2520 | ;; the user adds and removes characters in the search string |
| 2521 | ;; (or when using nonincremental word isearch) | 2521 | ;; (or when using nonincremental word isearch) |
| 2522 | (let ((lax (not (or isearch-nonincremental | 2522 | (let ((lax (not (or isearch-nonincremental |
| 2523 | (null (car isearch-cmds)) | ||
| 2523 | (eq (length isearch-string) | 2524 | (eq (length isearch-string) |
| 2524 | (length (isearch--state-string | 2525 | (length (isearch--state-string |
| 2525 | (car isearch-cmds)))))))) | 2526 | (car isearch-cmds)))))))) |
diff --git a/lisp/mouse.el b/lisp/mouse.el index 9c7bf6f9c36..a1aa104495a 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el | |||
| @@ -880,9 +880,9 @@ DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by | |||
| 880 | (copy-region-as-kill (mark) (point))))) | 880 | (copy-region-as-kill (mark) (point))))) |
| 881 | 881 | ||
| 882 | ;; Otherwise, run binding of terminating up-event. | 882 | ;; Otherwise, run binding of terminating up-event. |
| 883 | (deactivate-mark) | ||
| 883 | (if do-multi-click | 884 | (if do-multi-click |
| 884 | (goto-char start-point) | 885 | (goto-char start-point) |
| 885 | (deactivate-mark) | ||
| 886 | (unless moved-off-start | 886 | (unless moved-off-start |
| 887 | (pop-mark))) | 887 | (pop-mark))) |
| 888 | 888 | ||
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 4f31e95aeff..1dee9e89676 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -3413,7 +3413,9 @@ Erase echoed commands if exists." | |||
| 3413 | 0 (min tramp-echo-mark-marker-length (1- (point-max)))) | 3413 | 0 (min tramp-echo-mark-marker-length (1- (point-max)))) |
| 3414 | (tramp-compat-funcall | 3414 | (tramp-compat-funcall |
| 3415 | 'buffer-substring-no-properties | 3415 | 'buffer-substring-no-properties |
| 3416 | 1 (min (1+ tramp-echo-mark-marker-length) (point-max)))))) | 3416 | (point-min) |
| 3417 | (min (+ (point-min) tramp-echo-mark-marker-length) | ||
| 3418 | (point-max)))))) | ||
| 3417 | ;; No echo to be handled, now we can look for the regexp. | 3419 | ;; No echo to be handled, now we can look for the regexp. |
| 3418 | ;; Sometimes, lines are much to long, and we run into a "Stack | 3420 | ;; Sometimes, lines are much to long, and we run into a "Stack |
| 3419 | ;; overflow in regexp matcher". For example, //DIRED// lines of | 3421 | ;; overflow in regexp matcher". For example, //DIRED// lines of |
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index be718135f99..60807f10742 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el | |||
| @@ -1304,6 +1304,12 @@ Fill comments, backslashed lines, and variable definitions specially." | |||
| 1304 | (save-restriction | 1304 | (save-restriction |
| 1305 | (narrow-to-region beginning end) | 1305 | (narrow-to-region beginning end) |
| 1306 | (makefile-backslash-region (point-min) (point-max) t) | 1306 | (makefile-backslash-region (point-min) (point-max) t) |
| 1307 | ;; Backslashed newlines are marked as puncutations, so when | ||
| 1308 | ;; fill-delete-newlines turns the LF into SPC, we end up with spaces | ||
| 1309 | ;; which back-to-indentation (called via fill-newline -> | ||
| 1310 | ;; fill-indent-to-left-margin -> indent-line-to) thinks are real code | ||
| 1311 | ;; (bug#13179). | ||
| 1312 | (remove-text-properties (point-min) (point-max) '(syntax-table)) | ||
| 1307 | (let ((fill-paragraph-function nil) | 1313 | (let ((fill-paragraph-function nil) |
| 1308 | ;; Adjust fill-column to allow space for the backslash. | 1314 | ;; Adjust fill-column to allow space for the backslash. |
| 1309 | (fill-column (- fill-column 1))) | 1315 | (fill-column (- fill-column 1))) |
diff --git a/lisp/replace.el b/lisp/replace.el index fb251821445..7757426cf95 100644 --- a/lisp/replace.el +++ b/lisp/replace.el | |||
| @@ -1819,19 +1819,6 @@ make, or the user didn't cancel the call." | |||
| 1819 | case-fold-search)) | 1819 | case-fold-search)) |
| 1820 | (nocasify (not (and case-replace case-fold-search))) | 1820 | (nocasify (not (and case-replace case-fold-search))) |
| 1821 | (literal (or (not regexp-flag) (eq regexp-flag 'literal))) | 1821 | (literal (or (not regexp-flag) (eq regexp-flag 'literal))) |
| 1822 | (search-function | ||
| 1823 | (or (if regexp-flag | ||
| 1824 | replace-re-search-function | ||
| 1825 | replace-search-function) | ||
| 1826 | (let ((isearch-regexp regexp-flag) | ||
| 1827 | (isearch-word delimited-flag) | ||
| 1828 | (isearch-lax-whitespace | ||
| 1829 | replace-lax-whitespace) | ||
| 1830 | (isearch-regexp-lax-whitespace | ||
| 1831 | replace-regexp-lax-whitespace) | ||
| 1832 | (isearch-case-fold-search case-fold-search) | ||
| 1833 | (isearch-forward t)) | ||
| 1834 | (isearch-search-fun)))) | ||
| 1835 | (search-string from-string) | 1822 | (search-string from-string) |
| 1836 | (real-match-data nil) ; The match data for the current match. | 1823 | (real-match-data nil) ; The match data for the current match. |
| 1837 | (next-replacement nil) | 1824 | (next-replacement nil) |
| @@ -1894,39 +1881,62 @@ make, or the user didn't cancel the call." | |||
| 1894 | ;; Loop finding occurrences that perhaps should be replaced. | 1881 | ;; Loop finding occurrences that perhaps should be replaced. |
| 1895 | (while (and keep-going | 1882 | (while (and keep-going |
| 1896 | (not (or (eobp) (and limit (>= (point) limit)))) | 1883 | (not (or (eobp) (and limit (>= (point) limit)))) |
| 1897 | ;; Use the next match if it is already known; | 1884 | ;; Let-bind global isearch-* variables to values used |
| 1898 | ;; otherwise, search for a match after moving forward | 1885 | ;; to search the next replacement. These let-bindings |
| 1899 | ;; one char if progress is required. | 1886 | ;; should be effective both at the time of calling |
| 1900 | (setq real-match-data | 1887 | ;; `isearch-search-fun-default' and also at the |
| 1901 | (cond ((consp match-again) | 1888 | ;; time of funcalling `search-function'. |
| 1902 | (goto-char (nth 1 match-again)) | 1889 | ;; These isearch-* bindings can't be placed higher |
| 1903 | (replace-match-data | 1890 | ;; outside of this loop because then another I-search |
| 1904 | t real-match-data match-again)) | 1891 | ;; used after `recursive-edit' might override them. |
| 1905 | ;; MATCH-AGAIN non-nil means accept an | 1892 | (let* ((isearch-regexp regexp-flag) |
| 1906 | ;; adjacent match. | 1893 | (isearch-word delimited-flag) |
| 1907 | (match-again | 1894 | (isearch-lax-whitespace |
| 1908 | (and | 1895 | replace-lax-whitespace) |
| 1909 | (funcall search-function search-string | 1896 | (isearch-regexp-lax-whitespace |
| 1910 | limit t) | 1897 | replace-regexp-lax-whitespace) |
| 1911 | ;; For speed, use only integers and | 1898 | (isearch-case-fold-search case-fold-search) |
| 1912 | ;; reuse the list used last time. | 1899 | (isearch-adjusted nil) |
| 1913 | (replace-match-data t real-match-data))) | 1900 | (isearch-nonincremental t) ; don't use lax word mode |
| 1914 | ((and (< (1+ (point)) (point-max)) | 1901 | (isearch-forward t) |
| 1915 | (or (null limit) | 1902 | (search-function |
| 1916 | (< (1+ (point)) limit))) | 1903 | (or (if regexp-flag |
| 1917 | ;; If not accepting adjacent matches, | 1904 | replace-re-search-function |
| 1918 | ;; move one char to the right before | 1905 | replace-search-function) |
| 1919 | ;; searching again. Undo the motion | 1906 | (isearch-search-fun-default)))) |
| 1920 | ;; if the search fails. | 1907 | ;; Use the next match if it is already known; |
| 1921 | (let ((opoint (point))) | 1908 | ;; otherwise, search for a match after moving forward |
| 1922 | (forward-char 1) | 1909 | ;; one char if progress is required. |
| 1923 | (if (funcall | 1910 | (setq real-match-data |
| 1924 | search-function search-string | 1911 | (cond ((consp match-again) |
| 1925 | limit t) | 1912 | (goto-char (nth 1 match-again)) |
| 1926 | (replace-match-data | 1913 | (replace-match-data |
| 1927 | t real-match-data) | 1914 | t real-match-data match-again)) |
| 1928 | (goto-char opoint) | 1915 | ;; MATCH-AGAIN non-nil means accept an |
| 1929 | nil)))))) | 1916 | ;; adjacent match. |
| 1917 | (match-again | ||
| 1918 | (and | ||
| 1919 | (funcall search-function search-string | ||
| 1920 | limit t) | ||
| 1921 | ;; For speed, use only integers and | ||
| 1922 | ;; reuse the list used last time. | ||
| 1923 | (replace-match-data t real-match-data))) | ||
| 1924 | ((and (< (1+ (point)) (point-max)) | ||
| 1925 | (or (null limit) | ||
| 1926 | (< (1+ (point)) limit))) | ||
| 1927 | ;; If not accepting adjacent matches, | ||
| 1928 | ;; move one char to the right before | ||
| 1929 | ;; searching again. Undo the motion | ||
| 1930 | ;; if the search fails. | ||
| 1931 | (let ((opoint (point))) | ||
| 1932 | (forward-char 1) | ||
| 1933 | (if (funcall | ||
| 1934 | search-function search-string | ||
| 1935 | limit t) | ||
| 1936 | (replace-match-data | ||
| 1937 | t real-match-data) | ||
| 1938 | (goto-char opoint) | ||
| 1939 | nil))))))) | ||
| 1930 | 1940 | ||
| 1931 | ;; Record whether the match is nonempty, to avoid an infinite loop | 1941 | ;; Record whether the match is nonempty, to avoid an infinite loop |
| 1932 | ;; repeatedly matching the same empty string. | 1942 | ;; repeatedly matching the same empty string. |
diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 6ff4c720b71..eeb04ef250f 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el | |||
| @@ -432,8 +432,7 @@ If you want to remember a region, supply a universal prefix to | |||
| 432 | ;;;###autoload | 432 | ;;;###autoload |
| 433 | (defun remember-clipboard () | 433 | (defun remember-clipboard () |
| 434 | "Remember the contents of the current clipboard. | 434 | "Remember the contents of the current clipboard. |
| 435 | Most useful for remembering things from Netscape or other X Windows | 435 | Most useful for remembering things from other applications." |
| 436 | application." | ||
| 437 | (interactive) | 436 | (interactive) |
| 438 | (remember (current-kill 0))) | 437 | (remember (current-kill 0))) |
| 439 | 438 | ||
diff --git a/src/ChangeLog b/src/ChangeLog index b4c3195973c..302010ec769 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2013-02-02 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * callproc.c (Fcall_process): Make sure program name in PATH and | ||
| 4 | new_argv[0] is encoded, if needed. Otherwise, un-encoded string | ||
| 5 | is passed to exec/spawnve, which fails unless the file-name | ||
| 6 | encoding is UTF-8. | ||
| 7 | |||
| 8 | * w32proc.c (sys_spawnve): Make sure escape_char is initialized, | ||
| 9 | even if w32-quote-process-args is nil. | ||
| 10 | |||
| 1 | 2013-02-01 Paul Eggert <eggert@cs.ucla.edu> | 11 | 2013-02-01 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 12 | ||
| 3 | Fix timestamp bug when write-region appends nothing (Bug#13149). | 13 | Fix timestamp bug when write-region appends nothing (Bug#13149). |
diff --git a/src/callproc.c b/src/callproc.c index 5eba3271358..9d81bb18295 100644 --- a/src/callproc.c +++ b/src/callproc.c | |||
| @@ -445,28 +445,34 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) | |||
| 445 | path = Fsubstring (path, make_number (2), Qnil); | 445 | path = Fsubstring (path, make_number (2), Qnil); |
| 446 | 446 | ||
| 447 | new_argv = SAFE_ALLOCA ((nargs > 4 ? nargs - 2 : 2) * sizeof *new_argv); | 447 | new_argv = SAFE_ALLOCA ((nargs > 4 ? nargs - 2 : 2) * sizeof *new_argv); |
| 448 | if (nargs > 4) | ||
| 449 | { | ||
| 450 | ptrdiff_t i; | ||
| 451 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; | ||
| 452 | 448 | ||
| 453 | GCPRO5 (infile, buffer, current_dir, path, error_file); | 449 | { |
| 454 | argument_coding.dst_multibyte = 0; | 450 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; |
| 455 | for (i = 4; i < nargs; i++) | 451 | |
| 456 | { | 452 | GCPRO5 (infile, buffer, current_dir, path, error_file); |
| 457 | argument_coding.src_multibyte = STRING_MULTIBYTE (args[i]); | 453 | if (nargs > 4) |
| 458 | if (CODING_REQUIRE_ENCODING (&argument_coding)) | 454 | { |
| 459 | /* We must encode this argument. */ | 455 | ptrdiff_t i; |
| 460 | args[i] = encode_coding_string (&argument_coding, args[i], 1); | 456 | |
| 461 | } | 457 | argument_coding.dst_multibyte = 0; |
| 462 | UNGCPRO; | 458 | for (i = 4; i < nargs; i++) |
| 463 | for (i = 4; i < nargs; i++) | 459 | { |
| 464 | new_argv[i - 3] = SSDATA (args[i]); | 460 | argument_coding.src_multibyte = STRING_MULTIBYTE (args[i]); |
| 465 | new_argv[i - 3] = 0; | 461 | if (CODING_REQUIRE_ENCODING (&argument_coding)) |
| 466 | } | 462 | /* We must encode this argument. */ |
| 467 | else | 463 | args[i] = encode_coding_string (&argument_coding, args[i], 1); |
| 468 | new_argv[1] = 0; | 464 | } |
| 469 | new_argv[0] = SSDATA (path); | 465 | for (i = 4; i < nargs; i++) |
| 466 | new_argv[i - 3] = SSDATA (args[i]); | ||
| 467 | new_argv[i - 3] = 0; | ||
| 468 | } | ||
| 469 | else | ||
| 470 | new_argv[1] = 0; | ||
| 471 | if (STRING_MULTIBYTE (path)) | ||
| 472 | path = ENCODE_FILE (path); | ||
| 473 | new_argv[0] = SSDATA (path); | ||
| 474 | UNGCPRO; | ||
| 475 | } | ||
| 470 | 476 | ||
| 471 | #ifdef MSDOS /* MW, July 1993 */ | 477 | #ifdef MSDOS /* MW, July 1993 */ |
| 472 | 478 | ||
diff --git a/src/w32proc.c b/src/w32proc.c index 0fcb2993020..615e5329e8c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -1541,7 +1541,6 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp) | |||
| 1541 | child_process *cp; | 1541 | child_process *cp; |
| 1542 | int is_dos_app, is_cygnus_app, is_gui_app; | 1542 | int is_dos_app, is_cygnus_app, is_gui_app; |
| 1543 | int do_quoting = 0; | 1543 | int do_quoting = 0; |
| 1544 | char escape_char; | ||
| 1545 | /* We pass our process ID to our children by setting up an environment | 1544 | /* We pass our process ID to our children by setting up an environment |
| 1546 | variable in their environment. */ | 1545 | variable in their environment. */ |
| 1547 | char ppid_env_var_buffer[64]; | 1546 | char ppid_env_var_buffer[64]; |
| @@ -1554,6 +1553,8 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp) | |||
| 1554 | Some extra whitespace characters need quoting in Cygwin programs, | 1553 | Some extra whitespace characters need quoting in Cygwin programs, |
| 1555 | so this list is conditionally modified below. */ | 1554 | so this list is conditionally modified below. */ |
| 1556 | char *sepchars = " \t*?"; | 1555 | char *sepchars = " \t*?"; |
| 1556 | /* This is for native w32 apps; modified below for Cygwin apps. */ | ||
| 1557 | char escape_char = '\\'; | ||
| 1557 | 1558 | ||
| 1558 | /* We don't care about the other modes */ | 1559 | /* We don't care about the other modes */ |
| 1559 | if (mode != _P_NOWAIT) | 1560 | if (mode != _P_NOWAIT) |