Now on revision 108508. ------------------------------------------------------------ revno: 108508 committer: Paul Eggert branch nick: trunk timestamp: Wed 2012-06-06 22:11:51 -0700 message: * doprnt.c (doprnt): Truncate multibyte char correctly. Without this change, doprnt (buf, 2, "%s", FORMAT_END, AP) would mishandle a string argument "Xc" if X was a multibyte character of length 2: it would truncate after X's first byte rather than including all of X. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-06 06:39:24 +0000 +++ src/ChangeLog 2012-06-07 05:11:51 +0000 @@ -1,3 +1,11 @@ +2012-06-07 Paul Eggert + + * doprnt.c (doprnt): Truncate multibyte char correctly. + Without this change, doprnt (buf, 2, "%s", FORMAT_END, AP) + would mishandle a string argument "Xc" if X was a multibyte + character of length 2: it would truncate after X's first byte + rather than including all of X. + 2012-06-06 Chong Yidong * buffer.c (word_wrap): Doc fix. === modified file 'src/doprnt.c' --- src/doprnt.c 2012-02-10 18:58:48 +0000 +++ src/doprnt.c 2012-06-07 05:11:51 +0000 @@ -392,15 +392,19 @@ { /* Truncate the string at character boundary. */ tem = bufsize; - while (!CHAR_HEAD_P (string[tem - 1])) tem--; - /* If the multibyte sequence of this character is - too long for the space we have left in the - buffer, truncate before it. */ - if (tem > 0 - && BYTES_BY_CHAR_HEAD (string[tem - 1]) > bufsize) - tem--; - if (tem > 0) - memcpy (bufptr, string, tem); + do + { + tem--; + if (CHAR_HEAD_P (string[tem])) + { + if (BYTES_BY_CHAR_HEAD (string[tem]) <= bufsize - tem) + tem = bufsize; + break; + } + } + while (tem != 0); + + memcpy (bufptr, string, tem); bufptr[tem] = 0; /* Trigger exit from the loop, but make sure we return to the caller a value which will indicate ------------------------------------------------------------ revno: 108507 committer: Glenn Morris branch nick: trunk timestamp: Wed 2012-06-06 14:46:34 -0400 message: Fix previous calendar-in-read-only-buffer change. Otherwise all the mode-lines get clobbered. diff: === modified file 'lisp/calendar/calendar.el' --- lisp/calendar/calendar.el 2012-06-06 15:19:39 +0000 +++ lisp/calendar/calendar.el 2012-06-06 18:46:34 +0000 @@ -1112,6 +1112,7 @@ (declare (indent 1) (debug t)) `(progn (set-buffer (get-buffer-create ,buffer)) + (special-mode) (setq buffer-read-only nil buffer-undo-list t) (erase-buffer) @@ -1119,7 +1120,6 @@ (goto-char (point-min)) (set-buffer-modified-p nil) (setq buffer-read-only t) - (special-mode) (display-buffer ,buffer))) ;; The following are in-line for speed; they can be called thousands of times ------------------------------------------------------------ revno: 108506 committer: Glenn Morris branch nick: trunk timestamp: Wed 2012-06-06 14:13:09 -0400 message: * lisp/mail/emacsbug.el (report-emacs-bug): Add relevant EMACS env-vars. Only print environment variables if set. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 18:08:00 +0000 +++ lisp/ChangeLog 2012-06-06 18:13:09 +0000 @@ -1,3 +1,8 @@ +2012-06-06 Glenn Morris + + * mail/emacsbug.el (report-emacs-bug): Add relevant EMACS env-vars. + Only print environment variables if set. + 2012-06-06 Stefan Monnier * emacs-lisp/macroexp.el: Don't require CL since we don't use it. === modified file 'lisp/mail/emacsbug.el' --- lisp/mail/emacsbug.el 2012-05-22 03:38:10 +0000 +++ lisp/mail/emacsbug.el 2012-06-06 18:13:09 +0000 @@ -256,8 +256,10 @@ (insert "Important settings:\n") (mapc (lambda (var) - (insert (format " value of $%s: %s\n" var (getenv var)))) - '("LC_ALL" "LC_COLLATE" "LC_CTYPE" "LC_MESSAGES" + (let ((val (getenv var))) + (if val (insert (format " value of $%s: %s\n" var val))))) + '("EMACSDATA" "EMACSDOC" "EMACSLOADPATH" "EMACSPATH" + "LC_ALL" "LC_COLLATE" "LC_CTYPE" "LC_MESSAGES" "LC_MONETARY" "LC_NUMERIC" "LC_TIME" "LANG" "XMODIFIERS")) (insert (format " locale-coding-system: %s\n" locale-coding-system)) (insert (format " default enable-multibyte-characters: %s\n" ------------------------------------------------------------ revno: 108505 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2012-06-06 14:08:00 -0400 message: * lisp/emacs-lisp/macroexp.el: Don't require CL since we don't use it. (macroexp--cons): Rename from maybe-cons. (macroexp--accumulate): Rename from macroexp-accumulate. (macroexp--all-forms): Rename from macroexpand-all-forms. (macroexp--all-clauses): Rename from macroexpand-all-clauses. (macroexp--expand-all): Rename from macroexpand-all-1. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 15:19:39 +0000 +++ lisp/ChangeLog 2012-06-06 18:08:00 +0000 @@ -1,3 +1,12 @@ +2012-06-06 Stefan Monnier + + * emacs-lisp/macroexp.el: Don't require CL since we don't use it. + (macroexp--cons): Rename from maybe-cons. + (macroexp--accumulate): Rename from macroexp-accumulate. + (macroexp--all-forms): Rename from macroexpand-all-forms. + (macroexp--all-clauses): Rename from macroexpand-all-clauses. + (macroexp--expand-all): Rename from macroexpand-all-1. + 2012-06-06 Sam Steingold * calendar/calendar.el (calendar-in-read-only-buffer): === modified file 'lisp/emacs-lisp/macroexp.el' --- lisp/emacs-lisp/macroexp.el 2012-06-06 12:51:48 +0000 +++ lisp/emacs-lisp/macroexp.el 2012-06-06 18:08:00 +0000 @@ -29,13 +29,11 @@ ;;; Code: -(eval-when-compile (require 'cl)) - ;; Bound by the top-level `macroexpand-all', and modified to include any ;; macros defined by `defmacro'. (defvar macroexpand-all-environment nil) -(defun maybe-cons (car cdr original-cons) +(defun macroexp--cons (car cdr original-cons) "Return (CAR . CDR), using ORIGINAL-CONS if possible." (if (and (eq car (car original-cons)) (eq cdr (cdr original-cons))) original-cons @@ -43,9 +41,9 @@ ;; We use this special macro to iteratively process forms and share list ;; structure of the result with the input. Doing so recursively using -;; `maybe-cons' results in excessively deep recursion for very long +;; `macroexp--cons' results in excessively deep recursion for very long ;; input forms. -(defmacro macroexp-accumulate (var+list &rest body) +(defmacro macroexp--accumulate (var+list &rest body) "Return a list of the results of evaluating BODY for each element of LIST. Evaluate BODY with VAR bound to each `car' from LIST, in turn. Return a list of the values of the final form in BODY. @@ -76,27 +74,27 @@ (setq ,tail (cdr ,tail))) (nconc (nreverse ,unshared) ,shared)))) -(defun macroexpand-all-forms (forms &optional skip) +(defun macroexp--all-forms (forms &optional skip) "Return FORMS with macros expanded. FORMS is a list of forms. If SKIP is non-nil, then don't expand that many elements at the start of FORMS." - (macroexp-accumulate (form forms) + (macroexp--accumulate (form forms) (if (or (null skip) (zerop skip)) - (macroexpand-all-1 form) + (macroexp--expand-all form) (setq skip (1- skip)) form))) -(defun macroexpand-all-clauses (clauses &optional skip) +(defun macroexp--all-clauses (clauses &optional skip) "Return CLAUSES with macros expanded. CLAUSES is a list of lists of forms; any clause that's not a list is ignored. If SKIP is non-nil, then don't expand that many elements at the start of each clause." - (macroexp-accumulate (clause clauses) + (macroexp--accumulate (clause clauses) (if (listp clause) - (macroexpand-all-forms clause skip) + (macroexp--all-forms clause skip) clause))) -(defun macroexpand-all-1 (form) +(defun macroexp--expand-all (form) "Expand all macros in FORM. This is an internal version of `macroexpand-all'. Assumes the caller has bound `macroexpand-all-environment'." @@ -105,7 +103,7 @@ ;; generates exceedingly deep expansions from relatively shallow input ;; forms. We just process it `in reverse' -- first we expand all the ;; arguments, _then_ we expand the top-level definition. - (macroexpand (macroexpand-all-forms form 1) + (macroexpand (macroexp--all-forms form 1) macroexpand-all-environment) ;; Normal form; get its expansion, and then expand arguments. (let ((new-form (macroexpand form macroexpand-all-environment))) @@ -118,34 +116,34 @@ (setq form new-form)) (pcase form (`(cond . ,clauses) - (maybe-cons 'cond (macroexpand-all-clauses clauses) form)) + (macroexp--cons 'cond (macroexp--all-clauses clauses) form)) (`(condition-case . ,(or `(,err ,body . ,handlers) dontcare)) - (maybe-cons + (macroexp--cons 'condition-case - (maybe-cons err - (maybe-cons (macroexpand-all-1 body) - (macroexpand-all-clauses handlers 1) + (macroexp--cons err + (macroexp--cons (macroexp--expand-all body) + (macroexp--all-clauses handlers 1) (cddr form)) (cdr form)) form)) - (`(,(or `defvar `defconst) . ,_) (macroexpand-all-forms form 2)) + (`(,(or `defvar `defconst) . ,_) (macroexp--all-forms form 2)) (`(function ,(and f `(lambda . ,_))) - (maybe-cons 'function - (maybe-cons (macroexpand-all-forms f 2) + (macroexp--cons 'function + (macroexp--cons (macroexp--all-forms f 2) nil (cdr form)) form)) (`(,(or `function `quote) . ,_) form) (`(,(and fun (or `let `let*)) . ,(or `(,bindings . ,body) dontcare)) - (maybe-cons fun - (maybe-cons (macroexpand-all-clauses bindings 1) - (macroexpand-all-forms body) + (macroexp--cons fun + (macroexp--cons (macroexp--all-clauses bindings 1) + (macroexp--all-forms body) (cdr form)) form)) (`(,(and fun `(lambda . ,_)) . ,args) ;; Embedded lambda in function position. - (maybe-cons (macroexpand-all-forms fun 2) - (macroexpand-all-forms args) + (macroexp--cons (macroexp--all-forms fun 2) + (macroexp--all-forms args) form)) ;; The following few cases are for normal function calls that ;; are known to funcall one of their arguments. The byte @@ -161,22 +159,22 @@ (format "%s quoted with ' rather than with #'" (list 'lambda (nth 1 f) '...)) t) - ;; We don't use `maybe-cons' since there's clearly a change. + ;; We don't use `macroexp--cons' since there's clearly a change. (cons fun - (cons (macroexpand-all-1 (list 'function f)) - (macroexpand-all-forms args)))) + (cons (macroexp--expand-all (list 'function f)) + (macroexp--all-forms args)))) ;; Second arg is a function: (`(,(and fun (or `sort)) ,arg1 ',(and f `(lambda . ,_)) . ,args) (byte-compile-log-warning (format "%s quoted with ' rather than with #'" (list 'lambda (nth 1 f) '...)) t) - ;; We don't use `maybe-cons' since there's clearly a change. + ;; We don't use `macroexp--cons' since there's clearly a change. (cons fun - (cons (macroexpand-all-1 arg1) - (cons (macroexpand-all-1 + (cons (macroexp--expand-all arg1) + (cons (macroexp--expand-all (list 'function f)) - (macroexpand-all-forms args))))) + (macroexp--all-forms args))))) (`(,func . ,_) ;; Macro expand compiler macros. This cannot be delayed to ;; byte-optimize-form because the output of the compiler-macro can @@ -196,14 +194,14 @@ ;; No compiler macro. We just expand each argument (for ;; setq/setq-default this works alright because the variable names ;; are symbols). - (macroexpand-all-forms form 1) + (macroexp--all-forms form 1) (let ((newform (condition-case err (apply handler form (cdr form)) (error (message "Compiler-macro error: %S" err) form)))) (if (eq form newform) ;; The compiler macro did not find anything to do. - (if (equal form (setq newform (macroexpand-all-forms form 1))) + (if (equal form (setq newform (macroexp--all-forms form 1))) form ;; Maybe after processing the args, some new opportunities ;; appeared, so let's try the compiler macro again. @@ -213,8 +211,8 @@ newform))) (if (eq newform form) newform - (macroexpand-all-1 newform))) - (macroexpand-all-1 newform)))))) + (macroexp--expand-all newform))) + (macroexp--expand-all newform)))))) (t form)))) @@ -225,7 +223,7 @@ The second optional arg ENVIRONMENT specifies an environment of macro definitions to shadow the loaded ones for use in file byte-compilation." (let ((macroexpand-all-environment environment)) - (macroexpand-all-1 form))) + (macroexp--expand-all form))) (provide 'macroexp) ------------------------------------------------------------ revno: 108504 committer: Sam Steingold branch nick: trunk timestamp: Wed 2012-06-06 11:19:39 -0400 message: * lisp/calendar/calendar.el (calendar-in-read-only-buffer): Call `special-mode' to enable the standard read-only keybindings. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 13:32:36 +0000 +++ lisp/ChangeLog 2012-06-06 15:19:39 +0000 @@ -1,3 +1,8 @@ +2012-06-06 Sam Steingold + + * calendar/calendar.el (calendar-in-read-only-buffer): + Call `special-mode' to enable the standard read-only keybindings. + 2012-06-06 Stefan Monnier * emacs-lisp/macroexp.el (macroexpand-all-1): Don't spam the output === modified file 'lisp/calendar/calendar.el' --- lisp/calendar/calendar.el 2012-06-05 17:33:10 +0000 +++ lisp/calendar/calendar.el 2012-06-06 15:19:39 +0000 @@ -1105,9 +1105,8 @@ ,index (1+ ,index))) sum)) -;; FIXME bind q to bury-buffer? (defmacro calendar-in-read-only-buffer (buffer &rest body) - "Switch to BUFFER and executes the forms in BODY. + "Switch to BUFFER and execute the forms in BODY. First creates or erases BUFFER as needed. Leaves BUFFER read-only, with disabled undo. Leaves point at point-min, displays BUFFER." (declare (indent 1) (debug t)) @@ -1120,6 +1119,7 @@ (goto-char (point-min)) (set-buffer-modified-p nil) (setq buffer-read-only t) + (special-mode) (display-buffer ,buffer))) ;; The following are in-line for speed; they can be called thousands of times ------------------------------------------------------------ revno: 108503 committer: Michael Albinus branch nick: trunk timestamp: Wed 2012-06-06 17:13:15 +0200 message: Add enable-remote-dir-locals. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-06-06 01:06:54 +0000 +++ etc/NEWS 2012-06-06 15:13:15 +0000 @@ -101,6 +101,10 @@ *** You can now click mouse-3 in the coding system indicator to invokes `set-buffer-file-coding-system'. ++++ +** Setting `enable-remote-dir-locals' to non-nil allows directory +local variables on remote hosts. + * Editing Changes in Emacs 24.2 ------------------------------------------------------------ revno: 108502 committer: Michael Albinus branch nick: trunk timestamp: Wed 2012-06-06 16:57:16 +0200 message: * custom.texi (Directory Variables): Mention enable-remote-dir-locals. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2012-05-28 23:35:09 +0000 +++ doc/emacs/ChangeLog 2012-06-06 14:57:16 +0000 @@ -1,3 +1,7 @@ +2012-06-06 Michael Albinus + + * custom.texi (Directory Variables): Mention enable-remote-dir-locals. + 2012-05-28 Glenn Morris * ack.texi, building.texi, calendar.texi, custom.texi: === modified file 'doc/emacs/custom.texi' --- doc/emacs/custom.texi 2012-05-28 23:35:09 +0000 +++ doc/emacs/custom.texi 2012-06-06 14:57:16 +0000 @@ -1283,7 +1283,9 @@ file-local variables for that file (@pxref{File Variables}). Emacs searches for @file{.dir-locals.el} starting in the directory of the visited file, and moving up the directory tree. To avoid slowdown, -this search is skipped for remote files. +this search is skipped for remote files. If needed, the search can be +extended for remote files by setting the variable +@code{enable-remote-dir-locals} to @code{t}. The @file{.dir-locals.el} file should hold a specially-constructed list, which maps major mode names (symbols) to alists ------------------------------------------------------------ revno: 108501 committer: Michael Albinus branch nick: trunk timestamp: Wed 2012-06-06 15:32:36 +0200 message: * net/tramp-compat.el (tramp-compat-temporary-file-directory): Ensure, that the temp directory is local. * net/tramp-sh.el (tramp-sh-handle-write-region): Let-bind `temporary-file-directory'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 13:05:11 +0000 +++ lisp/ChangeLog 2012-06-06 13:32:36 +0000 @@ -8,6 +8,12 @@ * files.el (enable-remote-dir-locals): New option. (hack-dir-local-variables): Use it. (Bug#1933, Bug#6731) + * net/tramp-compat.el (tramp-compat-temporary-file-directory): + Ensure, that the temp directory is local. + + * net/tramp-sh.el (tramp-sh-handle-write-region): Let-bind + `temporary-file-directory'. + * progmodes/python.el (python-send-region): Ensure, that the temporary file is created also in the remote case. === modified file 'lisp/net/tramp-compat.el' --- lisp/net/tramp-compat.el 2012-01-19 07:21:25 +0000 +++ lisp/net/tramp-compat.el 2012-06-06 13:32:36 +0000 @@ -205,7 +205,9 @@ For Emacs, this is the variable `temporary-file-directory', for XEmacs this is the function `temp-directory'." (cond - ((boundp 'temporary-file-directory) (symbol-value 'temporary-file-directory)) + ((and (boundp 'temporary-file-directory) + (not (file-remote-p (symbol-value 'temporary-file-directory)))) + (symbol-value 'temporary-file-directory)) ((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory)) ((let ((d (getenv "TEMP"))) (and d (file-directory-p d))) (file-name-as-directory (getenv "TEMP"))) === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2012-04-09 13:05:48 +0000 +++ lisp/net/tramp-sh.el 2012-06-06 13:32:36 +0000 @@ -3093,22 +3093,25 @@ 'write-region (list start end localname append 'no-message lockname confirm)) - (let ((modes (save-excursion (tramp-default-file-modes filename))) - ;; We use this to save the value of - ;; `last-coding-system-used' after writing the tmp - ;; file. At the end of the function, we set - ;; `last-coding-system-used' to this saved value. This - ;; way, any intermediary coding systems used while - ;; talking to the remote shell or suchlike won't hose - ;; this variable. This approach was snarfed from - ;; ange-ftp.el. - coding-system-used - ;; Write region into a tmp file. This isn't really - ;; needed if we use an encoding function, but currently - ;; we use it always because this makes the logic - ;; simpler. - (tmpfile (or tramp-temp-buffer-file-name - (tramp-compat-make-temp-file filename)))) + (let* ((modes (save-excursion (tramp-default-file-modes filename))) + ;; We use this to save the value of + ;; `last-coding-system-used' after writing the tmp + ;; file. At the end of the function, we set + ;; `last-coding-system-used' to this saved value. This + ;; way, any intermediary coding systems used while + ;; talking to the remote shell or suchlike won't hose + ;; this variable. This approach was snarfed from + ;; ange-ftp.el. + coding-system-used + ;; Write region into a tmp file. This isn't really + ;; needed if we use an encoding function, but currently + ;; we use it always because this makes the logic + ;; simpler. We must also set `temporary-file-directory', + ;; because it could point to a remote directory. + (temporary-file-directory + (tramp-compat-temporary-file-directory)) + (tmpfile (or tramp-temp-buffer-file-name + (tramp-compat-make-temp-file filename)))) ;; If `append' is non-nil, we copy the file locally, and let ;; the native `write-region' implementation do the job. ------------------------------------------------------------ revno: 108500 committer: Michael Albinus branch nick: trunk timestamp: Wed 2012-06-06 15:05:11 +0200 message: * progmodes/python.el (python-send-region): Ensure, that the temporary file is created also in the remote case. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 12:51:48 +0000 +++ lisp/ChangeLog 2012-06-06 13:05:11 +0000 @@ -8,6 +8,9 @@ * files.el (enable-remote-dir-locals): New option. (hack-dir-local-variables): Use it. (Bug#1933, Bug#6731) + * progmodes/python.el (python-send-region): Ensure, that the + temporary file is created also in the remote case. + 2012-06-06 Glenn Morris * vc/vc-rcs.el (vc-rcs-rcs2log-program): New. === modified file 'lisp/progmodes/python.el' --- lisp/progmodes/python.el 2012-04-25 16:46:01 +0000 +++ lisp/progmodes/python.el 2012-06-06 13:05:11 +0000 @@ -1601,13 +1601,18 @@ ;; Fixme: Write a `coding' header to the temp file if the region is ;; non-ASCII. (interactive "r") - (let* ((f (make-temp-file "py" nil ".py")) + (let* ((temporary-file-directory + (if (file-remote-p default-directory) + (concat (file-remote-p default-directory) "/tmp") + temporary-file-directory)) + (f (make-temp-file "py" nil ".py")) + (f-local (or (file-remote-p f 'localname) f)) (command ;; IPython puts the FakeModule module into __main__ so ;; emacs.eexecfile becomes useless. (if (string-match "^ipython" python-command) - (format "execfile %S" f) - (format "emacs.eexecfile(%S)" f))) + (format "execfile %S" f-local) + (format "emacs.eexecfile(%S)" f-local))) (orig-start (copy-marker start))) (when (save-excursion (goto-char start) ------------------------------------------------------------ revno: 108499 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11635 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2012-06-06 08:51:48 -0400 message: * lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Don't spam the output with "loading" messages. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 12:34:09 +0000 +++ lisp/ChangeLog 2012-06-06 12:51:48 +0000 @@ -1,3 +1,8 @@ +2012-06-06 Stefan Monnier + + * emacs-lisp/macroexp.el (macroexpand-all-1): Don't spam the output + with "loading" messages (bug#11635). + 2012-06-06 Michael Albinus * files.el (enable-remote-dir-locals): New option. === modified file 'lisp/emacs-lisp/macroexp.el' --- lisp/emacs-lisp/macroexp.el 2012-06-05 16:43:43 +0000 +++ lisp/emacs-lisp/macroexp.el 2012-06-06 12:51:48 +0000 @@ -188,7 +188,8 @@ (or (not (eq (car-safe (symbol-function func)) 'autoload)) (ignore-errors - (load (nth 1 (symbol-function func)))))) + (load (nth 1 (symbol-function func)) + 'noerror 'nomsg)))) ;; Follow the sequence of aliases. (setq func (symbol-function func))) (if (null handler) ------------------------------------------------------------ revno: 108498 committer: Michael Albinus branch nick: trunk timestamp: Wed 2012-06-06 14:34:09 +0200 message: * files.el (enable-remote-dir-locals): New option. (hack-dir-local-variables): Use it. (Bug#1933, Bug#6731) diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-06 01:28:08 +0000 +++ lisp/ChangeLog 2012-06-06 12:34:09 +0000 @@ -1,3 +1,8 @@ +2012-06-06 Michael Albinus + + * files.el (enable-remote-dir-locals): New option. + (hack-dir-local-variables): Use it. (Bug#1933, Bug#6731) + 2012-06-06 Glenn Morris * vc/vc-rcs.el (vc-rcs-rcs2log-program): New. === modified file 'lisp/files.el' --- lisp/files.el 2012-05-24 21:27:22 +0000 +++ lisp/files.el 2012-06-06 12:34:09 +0000 @@ -3668,12 +3668,20 @@ class-name)) (error (message "Error reading dir-locals: %S" err) nil))))) +(defcustom enable-remote-dir-locals nil + "Non-nil means dir-local variables will be applied to remote files." + :version "24.2" + :type 'boolean + :group 'find-file) + (defun hack-dir-local-variables () "Read per-directory local variables for the current buffer. Store the directory-local variables in `dir-local-variables-alist' and `file-local-variables-alist', without applying them." (when (and enable-local-variables - (not (file-remote-p (or (buffer-file-name) default-directory)))) + (or enable-remote-dir-locals + (not (file-remote-p (or (buffer-file-name) + default-directory))))) ;; Find the variables file. (let ((variables-file (dir-locals-find-file (or (buffer-file-name) default-directory))) ------------------------------------------------------------ revno: 108497 committer: Chong Yidong branch nick: trunk timestamp: Wed 2012-06-06 14:39:24 +0800 message: * buffer.c (word_wrap): Doc fix. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-04 06:03:19 +0000 +++ src/ChangeLog 2012-06-06 06:39:24 +0000 @@ -1,3 +1,7 @@ +2012-06-06 Chong Yidong + + * buffer.c (word_wrap): Doc fix. + 2012-06-04 Paul Eggert * xdisp.c (note_mode_line_or_margin_highlight): Pacify gcc -Wall. === modified file 'src/buffer.c' --- src/buffer.c 2012-06-03 09:03:23 +0000 +++ src/buffer.c 2012-06-06 06:39:24 +0000 @@ -5522,7 +5522,13 @@ `truncate-lines' and `truncate-partial-width-windows'). If you use word-wrapping, you might want to reduce the value of `truncate-partial-width-windows', since wrapping can make text readable -in narrower windows. */); +in narrower windows. + +Instead of setting this variable directly, most users should use +Visual Line mode . Visual Line mode, when enabled, sets `word-wrap' +to t, and additionally redefines simple editing commands to act on +visual lines rather than logical lines. See the documentation of +`visual-line-mode'. */); DEFVAR_PER_BUFFER ("default-directory", &BVAR (current_buffer, directory), make_number (Lisp_String),