diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | ChangeLog | 13 | ||||
-rwxr-xr-x | build-aux/git-hooks/commit-msg | 4 | ||||
-rw-r--r-- | lisp/ChangeLog | 36 | ||||
-rw-r--r-- | lisp/net/tramp-gw.el | 9 | ||||
-rw-r--r-- | lisp/net/tramp-sh.el | 45 | ||||
-rw-r--r-- | lisp/net/tramp.el | 16 | ||||
-rw-r--r-- | lisp/subr.el | 4 | ||||
-rw-r--r-- | lisp/textmodes/tex-mode.el | 50 | ||||
-rw-r--r-- | lisp/vc/vc-git.el | 7 | ||||
-rw-r--r-- | src/ChangeLog | 12 | ||||
-rw-r--r-- | src/buffer.c | 4 | ||||
-rw-r--r-- | src/gnutls.c | 2 | ||||
-rw-r--r-- | test/ChangeLog | 11 | ||||
-rw-r--r-- | test/automated/data/flymake/test.pl | 2 | ||||
-rw-r--r-- | test/automated/electric-tests.el | 11 |
16 files changed, 178 insertions, 49 deletions
diff --git a/.gitignore b/.gitignore index d05352e7124..97adfb95610 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ makefile /confdefs.h /config.status /configure.lineno +/conftest* src/config.h src/epaths.h diff --git a/ChangeLog b/ChangeLog index 90d7c0bb613..dd0875e82d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2014-12-27 Paul Eggert <eggert@cs.ucla.edu> + + * .gitignore: Ignore /conftest*. + +2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * build-aux/git-hooks/commit-msg (at_sign): Bump up line-length limit + to 78. + +2014-12-27 Paul Eggert <eggert@cs.ucla.edu> 2014-12-25 Paul Eggert <eggert@cs.ucla.edu> Prefer stpcpy to strcat @@ -308,7 +318,8 @@ 2014-11-11 Eric S. Raymond <esr@thyrsus.com> - * Makefile.in: git transition - set VCWITNESS appropriately for git. + Git transition. + * Makefile.in (src): Set VCSWITNESS appropriately for git. All bzr revision IDS, and all CVS revision IDs for which a commit could be identified, were changed to time-date!committer version diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index 5eb994c6fe0..2e3e4f21cda 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -87,8 +87,8 @@ exec $awk ' status = 1 } - 72 < length && $0 ~ space { - print "Line longer than 72 characters in commit message" + 78 < length && $0 ~ space { + print "Line longer than 78 characters in commit message" status = 1 } diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5829ec2fae5..a13cd142780 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,39 @@ +2014-12-27 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-sh.el (tramp-send-command-and-read): New optional + arg MARKER. + (tramp-get-remote-path): Use it. + +2014-12-27 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-error-with-buffer): Call `message' properly. + (tramp-accept-process-output): Use nil as argument for + `accept-process-output', when there is a gateway prepended. + + * net/tramp-gw.el (tramp-gw-open-connection): Suppress traces in + wrong debug buffer. + (tramp-gw-open-connection): Set process coding system 'binary. + (tramp-gw-open-network-stream): Handle HTTP error 403. + + * net/tramp-sh.el (tramp-compute-multi-hops): Suppress traces in + wrong debug buffer. + (tramp-maybe-open-connection): Set connection property "gateway". + +2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * subr.el (sit-for): Tweak docstring (bug#19381). + +2014-12-27 Dmitry Gutov <dgutov@yandex.ru> + + * vc/vc-git.el (vc-git-after-dir-status-stage): Move `up-to-date' + stage to after `diff-index' (bug#19386). + +2014-12-27 João Távora <joaotavora@gmail.com> + + * textmodes/tex-mode.el (tex-insert-quote): Consider and respect + `electric-pair-mode' (bug#19356). + +2014-12-27 Michael Albinus <michael.albinus@gmx.de> 2014-12-27 Dmitry Gutov <dgutov@yandex.ru> elisp-xref-find: Don't create buffers eagerly. diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el index 0decd8847cc..e21aaf78914 100644 --- a/lisp/net/tramp-gw.el +++ b/lisp/net/tramp-gw.el @@ -195,11 +195,12 @@ instead of the host name declared in TARGET-VEC." (setq tramp-gw-gw-proc (funcall socks-function - (tramp-get-connection-name gw-vec) - (tramp-get-connection-buffer gw-vec) + (let ((tramp-verbose 0)) (tramp-get-connection-name gw-vec)) + (let ((tramp-verbose 0)) (tramp-get-connection-buffer gw-vec)) (tramp-file-name-real-host target-vec) (tramp-file-name-port target-vec))) (set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel) + (set-process-coding-system tramp-gw-gw-proc 'binary 'binary) (tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil) (tramp-message vec 4 "Opened %s process `%s'" @@ -260,6 +261,10 @@ authentication is requested from proxy server, provide it." (200 (setq found t)) ;; We need basic authentication. (401 (setq authentication (tramp-gw-basic-authentication nil first))) + ;; Access forbidden. + (403 (tramp-error-with-buffer + (current-buffer) tramp-gw-vector 'file-error + "Connection to %s:%d forbidden." host service)) ;; Target host not found. (404 (tramp-error-with-buffer (current-buffer) tramp-gw-vector 'file-error diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index ba7b7d95a4b..2e2e2ac3698 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2883,7 +2883,7 @@ the result will be a local, non-Tramp, file name." (name1 name) (i 0) ;; We do not want to raise an error when - ;; `start-file-process' has been started several time in + ;; `start-file-process' has been started several times in ;; `eshell' and friends. (tramp-current-connection nil)) @@ -4510,7 +4510,8 @@ Gateway hops are already opened." ;; Therefore, we must remember the gateway vector. But we ;; cannot do it as connection property, because it shouldn't ;; be persistent. And we have no started process yet either. - (tramp-set-file-property (car target-alist) "" "gateway" hop))) + (let ((tramp-verbose 0)) + (tramp-set-file-property (car target-alist) "" "gateway" hop)))) ;; Foreign and out-of-band methods are not supported for multi-hops. (when (cdr target-alist) @@ -4687,7 +4688,8 @@ connection if a previous connection has died for some reason." l-method 'tramp-connection-timeout)) (gw-args (tramp-get-method-parameter l-method 'tramp-gw-args)) - (gw (tramp-get-file-property hop "" "gateway" nil)) + (gw (let ((tramp-verbose 0)) + (tramp-get-file-property hop "" "gateway" nil))) (g-method (and gw (tramp-file-name-method gw))) (g-user (and gw (tramp-file-name-user gw))) (g-host (and gw (tramp-file-name-real-host gw))) @@ -4715,8 +4717,10 @@ connection if a previous connection has died for some reason." (setq login-args (append async-args login-args))) ;; Add gateway arguments if necessary. - (when (and gw gw-args) - (setq login-args (append gw-args login-args))) + (when gw + (tramp-set-connection-property p "gateway" t) + (when gw-args + (setq login-args (append gw-args login-args)))) ;; Check for port number. Until now, there's no ;; need for handling like method, user, host. @@ -4902,8 +4906,9 @@ FMT and ARGS which are passed to `error'." (or (tramp-send-command-and-check vec command) (apply 'tramp-error vec 'file-error fmt args))) -(defun tramp-send-command-and-read (vec command &optional noerror) +(defun tramp-send-command-and-read (vec command &optional noerror marker) "Run COMMAND and return the output, which must be a Lisp expression. +If MARKER is a regexp, read the output after that string. In case there is no valid Lisp expression and NOERROR is nil, it raises an error." (when (if noerror @@ -4911,8 +4916,17 @@ raises an error." (tramp-barf-unless-okay vec command "`%s' returns with error" command)) (with-current-buffer (tramp-get-connection-buffer vec) - ;; Read the expression. (goto-char (point-min)) + ;; Read the marker. + (when (stringp marker) + (condition-case nil + (re-search-forward marker) + (error (unless noerror + (tramp-error + vec 'file-error + "`%s' does not return the marker `%s': `%s'" + command marker (buffer-string)))))) + ;; Read the expression. (condition-case nil (prog1 (read (current-buffer)) ;; Error handling. @@ -5064,25 +5078,22 @@ Return ATTR." "/bin:/usr/bin") "/bin:/usr/bin")))) (own-remote-path - ;; We cannot apply `tramp-send-command-and-read' because - ;; the login shell could return more than just the $PATH - ;; string. So we emulate that function. + ;; The login shell could return more than just the $PATH + ;; string. So we use `tramp-end-of-heredoc' as marker. (when elt2 - (tramp-send-command + (tramp-send-command-and-read vec (format - "%s -l %s 'echo \\\"$PATH\\\"'" + "%s -l %s 'echo %s \\\"$PATH\\\"'" (tramp-get-method-parameter (tramp-file-name-method vec) 'tramp-remote-shell) (mapconcat 'identity (tramp-get-method-parameter (tramp-file-name-method vec) 'tramp-remote-shell-args) - " "))) - (with-current-buffer (tramp-get-connection-buffer vec) - (goto-char (point-max)) - (forward-line -1) - (read (current-buffer)))))) + " ") + (tramp-shell-quote-argument tramp-end-of-heredoc)) + nil (regexp-quote tramp-end-of-heredoc))))) ;; Replace place holder `tramp-default-remote-path'. (when elt1 diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 2cf9d45b965..7aba7494672 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1610,7 +1610,7 @@ an input event arrives. The other arguments are passed to `tramp-error'." (let ((enable-recursive-minibuffers t)) ;; `tramp-error' does not show messages. So we must do it ;; ourselves. - (message fmt-string arguments) + (apply 'message fmt-string arguments) ;; Show buffer. (pop-to-buffer buf) (discard-input) @@ -3609,15 +3609,19 @@ connection buffer." This is needed in order to hide `last-coding-system-used', which is set for process communication also." (with-current-buffer (process-buffer proc) - (tramp-message proc 10 "%s %s" proc (process-status proc)) - (let (buffer-read-only last-coding-system-used) + ;; FIXME: If there is a gateway process, we need communication + ;; between several processes. Too complicate to implement, so we + ;; read output from all proceeses. + (let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc)) + buffer-read-only last-coding-system-used) ;; Under Windows XP, accept-process-output doesn't return ;; sometimes. So we add an additional timeout. (with-timeout ((or timeout 1)) (if (featurep 'xemacs) - (accept-process-output proc timeout timeout-msecs) - (accept-process-output proc timeout timeout-msecs (and proc t))))) - (tramp-message proc 10 "\n%s" (buffer-string)))) + (accept-process-output p timeout timeout-msecs) + (accept-process-output p timeout timeout-msecs (and proc t)))) + (tramp-message proc 10 "%s %s %s\n%s" + proc (process-status proc) p (buffer-string))))) (defun tramp-check-for-regexp (proc regexp) "Check, whether REGEXP is contained in process buffer of PROC. diff --git a/lisp/subr.el b/lisp/subr.el index 6ce02b79a0a..53ad2729a10 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2166,7 +2166,7 @@ keyboard-quit events while waiting for a valid input." char)) (defun sit-for (seconds &optional nodisp obsolete) - "Perform redisplay, then wait for SECONDS seconds or until input is available. + "Redisplay, then wait for SECONDS seconds. Stop when input is available. SECONDS may be a floating-point value. \(On operating systems that do not support waiting for fractions of a second, floating-point values are rounded down to the nearest integer.) @@ -2184,7 +2184,7 @@ floating point support." (declare (advertised-calling-convention (seconds &optional nodisp) "22.1")) ;; This used to be implemented in C until the following discussion: ;; http://lists.gnu.org/archive/html/emacs-devel/2006-07/msg00401.html - ;; Then it was moved to C using an implementation based on an idle timer, + ;; Then it was moved here using an implementation based on an idle timer, ;; which was then replaced by the use of read-event. (if (numberp nodisp) (setq seconds (+ seconds (* 1e-3 nodisp)) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 1993ff104f4..d54c78b683a 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -1300,18 +1300,48 @@ Inserts the value of `tex-open-quote' (normally ``) or `tex-close-quote' \(normally '') depending on the context. With prefix argument, always inserts \" characters." (interactive "*P") + ;; Discover if we'll be inserting normal double quotes. + ;; (if (or arg (memq (char-syntax (preceding-char)) '(?/ ?\\)) - (eq (get-text-property (point) 'face) 'tex-verbatim) - (save-excursion - (backward-char (length tex-open-quote)) - (when (or (looking-at (regexp-quote tex-open-quote)) - (looking-at (regexp-quote tex-close-quote))) - (delete-char (length tex-open-quote)) - t))) + (eq (get-text-property (point) 'face) 'tex-verbatim) + ;; Discover if a preceding occurance of `tex-open-quote' + ;; should be morphed to a normal double quote. + ;; + (and (>= (point) (+ (point-min) (length tex-open-quote))) + (save-excursion + (backward-char (length tex-open-quote)) + (when (or (looking-at (regexp-quote tex-open-quote)) + (looking-at (regexp-quote tex-close-quote))) + (delete-char (length tex-open-quote)) + (when (looking-at (regexp-quote tex-close-quote)) + (delete-char (length tex-close-quote))) + t)))) + ;; Insert the normal quote (eventually letting + ;; `electric-pair-mode' do its thing). + ;; (self-insert-command (prefix-numeric-value arg)) - (insert (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s)) - (memq (preceding-char) '(?~))) - tex-open-quote tex-close-quote)))) + ;; We'll be inserting fancy TeX quotes, but consider and imitate + ;; `electric-pair-mode''s two behaviours: pair-insertion and + ;; region wrapping. + ;; + (if (and electric-pair-mode (use-region-p)) + (let* ((saved (point-marker))) + (goto-char (mark)) + (insert (if (> saved (mark)) tex-open-quote tex-close-quote)) + (goto-char saved) + (insert (if (> saved (mark)) tex-close-quote tex-open-quote))) + (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s)) + (memq (preceding-char) '(?~))) + (if electric-pair-mode + (if (looking-at (regexp-quote tex-close-quote)) + (forward-char (length tex-close-quote)) + (insert tex-open-quote) + (insert tex-close-quote) + (backward-char (length tex-close-quote))) + (insert tex-open-quote)) + (if (looking-at (regexp-quote tex-close-quote)) + (forward-char (length tex-close-quote)) + (insert tex-close-quote)))))) (defun tex-validate-buffer () "Check current buffer for paragraphs containing mismatched braces or $s. diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 65f683c7808..1700bef10b0 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -371,8 +371,7 @@ or an empty string if none." (goto-char (point-min)) (pcase stage (`update-index - (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added - (if files 'ls-files-up-to-date 'diff-index)))) + (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added 'diff-index))) (`ls-files-added (setq next-stage 'ls-files-unknown) (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t) @@ -381,7 +380,7 @@ or an empty string if none." (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm)) result)))) (`ls-files-up-to-date - (setq next-stage 'diff-index) + (setq next-stage 'ls-files-unknown) (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t) (let ((perm (string-to-number (match-string 1) 8)) (name (match-string 2))) @@ -400,7 +399,7 @@ or an empty string if none." (vc-git-create-extra-fileinfo 0 0)) result))) (`diff-index - (setq next-stage 'ls-files-unknown) + (setq next-stage (if files 'ls-files-up-to-date 'ls-files-unknown)) (while (re-search-forward ":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0" nil t 1) diff --git a/src/ChangeLog b/src/ChangeLog index e8428abc926..8e72ddbf9c4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring. + +2014-12-27 Eli Zaretskii <eliz@gnu.org> + + * gnutls.c (gnutls_init): Fix deprecation warning from GCC. + +2014-12-27 Eli Zaretskii <eliz@gnu.org> + 2014-12-26 Paul Eggert <eggert@cs.ucla.edu> Use bool for boolean in xselect.c, xsettings.c @@ -918,6 +928,8 @@ * fileio.c (Fexpand_file_name): Use make_unibyte_string, not build_string, when importing a home directory. (Bug#18873) +2014-12-27 Eli Zaretskii <eliz@gnu.org> + * dispnew.c (buffer_posn_from_coords): Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to account for the header-line height. (Bug#18839) diff --git a/src/buffer.c b/src/buffer.c index b57d968e73a..9a5c4a8824f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -6066,9 +6066,9 @@ from happening repeatedly and making Emacs nonfunctional. */); doc: /* List of functions to call after each text change. Three arguments are passed to each function: the positions of the beginning and end of the range of changed text, -and the length in bytes of the pre-change text replaced by that range. +and the length in chars of the pre-change text replaced by that range. \(For an insertion, the pre-change length is zero; -for a deletion, that length is the number of bytes deleted, +for a deletion, that length is the number of chars deleted, and the post-change beginning and end are at the same place.) Buffer changes made while executing the `after-change-functions' diff --git a/src/gnutls.c b/src/gnutls.c index bf9f1323546..14205ca0d3a 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -134,7 +134,7 @@ DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions, gnutls_is_secure_function, gnutls_realloc_function, gnutls_free_function)); DEF_GNUTLS_FN (int, gnutls_handshake, (gnutls_session_t)); -DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, gnutls_connection_end_t)); +DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, unsigned int)); DEF_GNUTLS_FN (int, gnutls_priority_set_direct, (gnutls_session_t, const char *, const char **)); DEF_GNUTLS_FN (size_t, gnutls_record_check_pending, (gnutls_session_t)); diff --git a/test/ChangeLog b/test/ChangeLog index fda30d9237c..4e59ee0afbf 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,14 @@ +2014-12-27 João Távora <joaotavora@gmail.com> + + * automated/electric-tests.el (autowrapping-7): Tests for + tex-mode. + +2014-12-27 Glenn Morris <rgm@gnu.org> + + * automated/flymake/warnpred/test.pl: Tweak format, since the + previous one seems to have stopped giving a warning with perl 5.20.1. + +2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org> 2014-12-26 Fabián Ezequiel Gallina <fgallina@gnu.org> * automated/python-tests.el (python-shell-get-process-name-1) diff --git a/test/automated/data/flymake/test.pl b/test/automated/data/flymake/test.pl index 2013b2e4434..d5abcb47e7f 100644 --- a/test/automated/data/flymake/test.pl +++ b/test/automated/data/flymake/test.pl @@ -1,2 +1,2 @@ @arr = [1,2,3,4]; -@arr[1] = -1; +my $b = @arr[1]; diff --git a/test/automated/electric-tests.el b/test/automated/electric-tests.el index b1908e6bb32..cd07213bf20 100644 --- a/test/automated/electric-tests.el +++ b/test/automated/electric-tests.el @@ -60,7 +60,7 @@ (cl-progv (mapcar #'car bindings) (mapcar #'cdr bindings) - (self-insert-command 1)))) + (call-interactively (key-binding `[,last-command-event]))))) (should (equal (buffer-substring-no-properties (point-min) (point-max)) expected-string)) (should (equal (point) @@ -575,5 +575,14 @@ baz\"\"" (skip-chars-backward "\"") (mark-sexp -1))) +(define-electric-pair-test autowrapping-7 + "foo" "\"" :expected-string "``foo''" :expected-point 8 + :modes '(tex-mode) + :fixture-fn #'(lambda () + (electric-pair-mode 1) + (goto-char (point-max)) + (skip-chars-backward "\"") + (mark-sexp -1))) + (provide 'electric-tests) ;;; electric-tests.el ends here |