diff options
| author | Paul Eggert | 2011-02-24 22:42:06 -0800 |
|---|---|---|
| committer | Paul Eggert | 2011-02-24 22:42:06 -0800 |
| commit | a07b892ff17e95e513c4bfe6e2dd73df1e589bf3 (patch) | |
| tree | a3d1a40c919618c9a452a405838cff23819777fe | |
| parent | ae0d725005539d9259efac6a81ff8fdd45eb69a6 (diff) | |
| parent | b18947669cd182ec8487b317460f6df5878d0f11 (diff) | |
| download | emacs-a07b892ff17e95e513c4bfe6e2dd73df1e589bf3.tar.gz emacs-a07b892ff17e95e513c4bfe6e2dd73df1e589bf3.zip | |
Merge from mainline.
51 files changed, 737 insertions, 475 deletions
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-02-24 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * configure.in: Replace obsolete AC_OUTPUT() with AC_CONFIG_FILES(), | ||
| 4 | AC_CONFIG_COMMANDS(), and AC_OUTPUT sans arguments. | ||
| 5 | |||
| 1 | 2011-02-22 Paul Eggert <eggert@cs.ucla.edu> | 6 | 2011-02-22 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 7 | ||
| 3 | Work around some portability problems with symlinks. | 8 | Work around some portability problems with symlinks. |
diff --git a/admin/ChangeLog b/admin/ChangeLog index 87ba151dc34..f2c16b42e23 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2011-02-23 Juanma Barranquero <lekktu@gmail.com> | ||
| 2 | |||
| 3 | * notes/bugtracker (bugtracker_debbugs_url): Fix typo. | ||
| 4 | |||
| 1 | 2011-02-19 Eli Zaretskii <eliz@gnu.org> | 5 | 2011-02-19 Eli Zaretskii <eliz@gnu.org> |
| 2 | 6 | ||
| 3 | * admin.el (set-version): Add msdos/sed2v2.inp. | 7 | * admin.el (set-version): Add msdos/sed2v2.inp. |
diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el index 77e64a862c8..33cbae22a6c 100644 --- a/admin/bzrmerge.el +++ b/admin/bzrmerge.el | |||
| @@ -270,6 +270,9 @@ Does not make other difference." | |||
| 270 | (sit-for 1) | 270 | (sit-for 1) |
| 271 | ;; (debug 'after-merge) | 271 | ;; (debug 'after-merge) |
| 272 | ;; Check the conflicts. | 272 | ;; Check the conflicts. |
| 273 | ;; FIXME if using the helpful bzr changelog_merge plugin, | ||
| 274 | ;; there are normally no conflicts in ChangeLogs. | ||
| 275 | ;; But we still want the dates fixing, like bzrmerge-resolve does. | ||
| 273 | (let ((conflicted nil) | 276 | (let ((conflicted nil) |
| 274 | (files ())) | 277 | (files ())) |
| 275 | (goto-char (point-min)) | 278 | (goto-char (point-min)) |
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 02ca77bf7de..f2805eae443 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker | |||
| @@ -489,7 +489,7 @@ Here "{id}" is a literal string, a placeholder that will be replaced | |||
| 489 | by the bug number you specify after `--fixes debbugs:' in the bzr | 489 | by the bug number you specify after `--fixes debbugs:' in the bzr |
| 490 | command line (123 in the example above). | 490 | command line (123 in the example above). |
| 491 | 491 | ||
| 492 | In the bazaar.conf file, this setting should go into the [DEFAULTS] | 492 | In the bazaar.conf file, this setting should go into the [DEFAULT] |
| 493 | section. | 493 | section. |
| 494 | 494 | ||
| 495 | In the locations.conf file, it should go into the branch-specific | 495 | In the locations.conf file, it should go into the branch-specific |
diff --git a/admin/notes/bzr b/admin/notes/bzr index 11f0af17a3b..14a5c92a454 100644 --- a/admin/notes/bzr +++ b/admin/notes/bzr | |||
| @@ -75,6 +75,12 @@ This will make merging ChangeLogs a lot smoother. It merges new | |||
| 75 | entries to the top of the file, rather than trying to fit them in | 75 | entries to the top of the file, rather than trying to fit them in |
| 76 | mid-way through. | 76 | mid-way through. |
| 77 | 77 | ||
| 78 | Sigh. This plugin has a drawback. People often like to edit older | ||
| 79 | ChangeLog entries, not at the head of the file. Frequently they do | ||
| 80 | this in the same commit as making new entries. Using this plugin | ||
| 81 | will merge ALL changed entries (including older ones) to the top of | ||
| 82 | the destination file. | ||
| 83 | |||
| 78 | 1) Get clean, up-to-date copies of the emacs-23 and trunk branches. | 84 | 1) Get clean, up-to-date copies of the emacs-23 and trunk branches. |
| 79 | Check for any uncommitted changes with bzr status. | 85 | Check for any uncommitted changes with bzr status. |
| 80 | 86 | ||
| @@ -112,9 +118,17 @@ and is due to a technical limitation of bzr. The log data for those | |||
| 112 | revisions gets merged, the actual changes themselves do not. | 118 | revisions gets merged, the actual changes themselves do not. |
| 113 | http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00609.html ) | 119 | http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00609.html ) |
| 114 | 120 | ||
| 115 | Note that ChangeLog entries are automatically merged to the top with | 121 | In particular, check the ChangeLog entries (eg in case too many |
| 116 | today's date, but you still might want to check them to see that too | 122 | entries have been included or whitespace between entries needs fixing). |
| 117 | much is not being included, or whitespace between entries is not missing. | 123 | bzrmerge tries to fix up the dates to today's date, but it only does |
| 124 | this where there are conflicts. If you used the changelog_merge plugin, | ||
| 125 | there won't be any conflicts, and (at time of writing) you will need | ||
| 126 | to adjust dates by hand. In any case, if someone made multiple | ||
| 127 | ChangeLog entries on different days in the branch, you may wish to | ||
| 128 | collapse them all to a single entry for that author in the trunk | ||
| 129 | (because in the trunk they all appear under the same date). | ||
| 130 | Obviously, if there are multiple changes to the same file by different | ||
| 131 | authors, don't break the logical ordering in doing this. | ||
| 118 | 132 | ||
| 119 | Notes: | 133 | Notes: |
| 120 | 134 | ||
diff --git a/configure.in b/configure.in index 376c82c4ca4..710f0945066 100644 --- a/configure.in +++ b/configure.in | |||
| @@ -3697,6 +3697,18 @@ fi | |||
| 3697 | test "${exec_prefix}" != NONE && | 3697 | test "${exec_prefix}" != NONE && |
| 3698 | exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`] | 3698 | exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`] |
| 3699 | 3699 | ||
| 3700 | AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \ | ||
| 3701 | doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \ | ||
| 3702 | doc/lispref/Makefile src/Makefile \ | ||
| 3703 | lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile]) | ||
| 3704 | |||
| 3705 | dnl Make the necessary directories, if they don't exist. | ||
| 3706 | AC_CONFIG_COMMANDS([mkdirs], [ | ||
| 3707 | for dir in etc lisp ; do | ||
| 3708 | test -d ${dir} || mkdir ${dir} | ||
| 3709 | done | ||
| 3710 | ]) | ||
| 3711 | |||
| 3700 | dnl You might wonder (I did) why epaths.h is generated by running make, | 3712 | dnl You might wonder (I did) why epaths.h is generated by running make, |
| 3701 | dnl rather than just letting configure generate it from epaths.in. | 3713 | dnl rather than just letting configure generate it from epaths.in. |
| 3702 | dnl One reason is that the various paths are not fully expanded (see above); | 3714 | dnl One reason is that the various paths are not fully expanded (see above); |
| @@ -3705,22 +3717,18 @@ dnl Secondly, the GNU Coding standards require that one should be able | |||
| 3705 | dnl to run `make prefix=/some/where/else' and override the values set | 3717 | dnl to run `make prefix=/some/where/else' and override the values set |
| 3706 | dnl by configure. This also explains the `move-if-change' test and | 3718 | dnl by configure. This also explains the `move-if-change' test and |
| 3707 | dnl the use of force in the `epaths-force' rule in Makefile.in. | 3719 | dnl the use of force in the `epaths-force' rule in Makefile.in. |
| 3708 | AC_OUTPUT(Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \ | 3720 | AC_CONFIG_COMMANDS([epaths], [ |
| 3709 | doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \ | ||
| 3710 | doc/lispref/Makefile src/Makefile \ | ||
| 3711 | lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile, [ | ||
| 3712 | |||
| 3713 | ### Make the necessary directories, if they don't exist. | ||
| 3714 | for dir in etc lisp ; do | ||
| 3715 | test -d ${dir} || mkdir ${dir} | ||
| 3716 | done | ||
| 3717 | |||
| 3718 | echo creating src/epaths.h | 3721 | echo creating src/epaths.h |
| 3719 | ${MAKE-make} epaths-force | 3722 | ${MAKE-make} epaths-force |
| 3723 | ], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"]) | ||
| 3720 | 3724 | ||
| 3725 | AC_CONFIG_COMMANDS([gdbinit], [ | ||
| 3721 | if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then | 3726 | if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then |
| 3722 | echo creating src/.gdbinit | 3727 | echo creating src/.gdbinit |
| 3723 | echo source $srcdir/src/.gdbinit > src/.gdbinit | 3728 | echo source $srcdir/src/.gdbinit > src/.gdbinit |
| 3724 | fi | 3729 | fi |
| 3730 | ]) | ||
| 3725 | 3731 | ||
| 3726 | ], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"]) | 3732 | AC_OUTPUT |
| 3733 | |||
| 3734 | dnl configure.in ends here | ||
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 217702b7c0f..6f4f86978da 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,29 @@ | |||
| 1 | 2011-02-23 Michael Albinus <michael.albinus@gmx.de> | ||
| 2 | |||
| 3 | * tramp.texi: Use consistently "Emacs" (instead of "GNU Emacs") and | ||
| 4 | "Debian GNU/Linux". | ||
| 5 | |||
| 6 | * trampver.texi [xemacs]: Set emacsothername to "Emacs". | ||
| 7 | |||
| 8 | 2011-02-23 Glenn Morris <rgm@gnu.org> | ||
| 9 | |||
| 10 | * dired-x.texi (Features): Minor rephrasing. | ||
| 11 | (Local Variables): Fix typos. | ||
| 12 | |||
| 13 | * edt.texi, erc.texi, gnus.texi, idlwave.texi, mh-e.texi: | ||
| 14 | Standardize some Emacs/XEmacs terminology. | ||
| 15 | |||
| 16 | * dired-x.texi (Features): Don't advertise obsolete local variables. | ||
| 17 | Simplify layout. | ||
| 18 | (Omitting Variables): Update local variables example. | ||
| 19 | (Local Variables): Say this is obsolete. Fix description of | ||
| 20 | dired-enable-local-variables possible values. | ||
| 21 | |||
| 22 | 2011-02-22 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 23 | |||
| 24 | * auth.texi (Help for users): Mention ~/.netrc is also searched by | ||
| 25 | default now. | ||
| 26 | |||
| 1 | 2011-02-21 Lars Ingebrigtsen <larsi@gnus.org> | 27 | 2011-02-21 Lars Ingebrigtsen <larsi@gnus.org> |
| 2 | 28 | ||
| 3 | * gnus.texi (Article Date): Clarify gnus-article-update-date-headers. | 29 | * gnus.texi (Article Date): Clarify gnus-article-update-date-headers. |
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 27c6691dfa8..23ac23dce5b 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi | |||
| @@ -127,8 +127,8 @@ you will be pwned as the kids say. | |||
| 127 | 127 | ||
| 128 | ``Netrc'' files are usually called @code{.authinfo} or @code{.netrc}; | 128 | ``Netrc'' files are usually called @code{.authinfo} or @code{.netrc}; |
| 129 | nowadays @code{.authinfo} seems to be more popular and the auth-source | 129 | nowadays @code{.authinfo} seems to be more popular and the auth-source |
| 130 | library encourages this confusion by making it the default, as you'll | 130 | library encourages this confusion by accepting both, as you'll see |
| 131 | see later. | 131 | later. |
| 132 | 132 | ||
| 133 | If you have problems with the search, set @code{auth-source-debug} to | 133 | If you have problems with the search, set @code{auth-source-debug} to |
| 134 | @code{t} and see what host, port, and user the library is checking in | 134 | @code{t} and see what host, port, and user the library is checking in |
| @@ -159,7 +159,7 @@ and simplest configuration is: | |||
| 159 | ;;; mostly equivalent (see below about fallbacks) but shorter: | 159 | ;;; mostly equivalent (see below about fallbacks) but shorter: |
| 160 | (setq auth-sources '((:source "~/.authinfo.gpg"))) | 160 | (setq auth-sources '((:source "~/.authinfo.gpg"))) |
| 161 | ;;; even shorter and the @emph{default}: | 161 | ;;; even shorter and the @emph{default}: |
| 162 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo")) | 162 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")) |
| 163 | ;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API}) | 163 | ;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API}) |
| 164 | (setq auth-sources '("secrets:Login")) | 164 | (setq auth-sources '("secrets:Login")) |
| 165 | @end lisp | 165 | @end lisp |
| @@ -184,8 +184,8 @@ the defaults: any host and any port are looked up in the netrc | |||
| 184 | file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file | 184 | file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file |
| 185 | (@pxref{GnuPG and EasyPG Assistant Configuration}). | 185 | (@pxref{GnuPG and EasyPG Assistant Configuration}). |
| 186 | 186 | ||
| 187 | If that fails, the unencrypted netrc file @code{~/.authinfo} will | 187 | If that fails, the unencrypted netrc files @code{~/.authinfo} and |
| 188 | be used. | 188 | @code{~/.netrc} will be used. |
| 189 | 189 | ||
| 190 | The typical netrc line example is without a port. | 190 | The typical netrc line example is without a port. |
| 191 | 191 | ||
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index 003046d5a7c..cde39ff6a62 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi | |||
| @@ -129,48 +129,33 @@ original @file{dired-x.el}). | |||
| 129 | @section Features | 129 | @section Features |
| 130 | @cindex Features | 130 | @cindex Features |
| 131 | 131 | ||
| 132 | Some features provided by Dired Extra | 132 | Some features provided by Dired Extra: |
| 133 | 133 | ||
| 134 | @enumerate | 134 | @enumerate |
| 135 | @item | 135 | @item |
| 136 | Omitting uninteresting files from Dired listing. | 136 | Omitting uninteresting files from Dired listing |
| 137 | @itemize @bullet | 137 | (@pxref{Omitting Files in Dired}). |
| 138 | @xref{Omitting Files in Dired}. | ||
| 139 | @end itemize | ||
| 140 | @item | 138 | @item |
| 141 | Local variables for Dired directories. | 139 | Guessing shell commands in Dired buffers |
| 142 | @itemize @bullet | 140 | (@pxref{Shell Command Guessing}). |
| 143 | @xref{Local Variables}. | ||
| 144 | @end itemize | ||
| 145 | @item | 141 | @item |
| 146 | Guessing shell commands in Dired buffers. | 142 | Running Dired command in non-Dired buffers |
| 147 | @itemize @bullet | 143 | (@pxref{Virtual Dired}). |
| 148 | @xref{Shell Command Guessing}. | ||
| 149 | @end itemize | ||
| 150 | @item | ||
| 151 | Running Dired command in non-Dired buffers. | ||
| 152 | @itemize @bullet | ||
| 153 | @xref{Virtual Dired}. | ||
| 154 | @end itemize | ||
| 155 | @item | 144 | @item |
| 156 | Finding a file mentioned in a buffer | 145 | Finding a file mentioned in a buffer |
| 157 | @itemize @bullet | 146 | (@pxref{Find File At Point}). |
| 158 | @xref{Find File At Point}. | ||
| 159 | @end itemize | ||
| 160 | @item | 147 | @item |
| 161 | Commands using file marking. | 148 | Commands using file marking |
| 162 | @itemize @bullet | 149 | (@pxref{Advanced Mark Commands}). |
| 163 | @xref{Advanced Mark Commands}. | ||
| 164 | @end itemize | ||
| 165 | @end enumerate | 150 | @end enumerate |
| 166 | 151 | ||
| 167 | @noindent | 152 | @noindent |
| 168 | @file{dired-x.el} binds some functions to keys in Dired Mode (@pxref{Key | 153 | @file{dired-x.el} binds some functions to keys in Dired Mode (@pxref{Key |
| 169 | Index}) and also binds @kbd{C-x C-j} and @kbd{C-x 4 C-j} @emph{globally} to | 154 | Index}) and also binds @kbd{C-x C-j} and @kbd{C-x 4 C-j} @emph{globally} to |
| 170 | @code{dired-jump} (@pxref{Miscellaneous Commands}). It may also bind @kbd{C-x | 155 | @code{dired-jump} (@pxref{Miscellaneous Commands}). Optionally, it |
| 171 | C-f} and @kbd{C-x 4 C-f} to @code{dired-x-find-file} and | 156 | also binds @kbd{C-x C-f} and @kbd{C-x 4 C-f} to |
| 172 | @code{dired-x-find-file-other-window}, respectively (@pxref{Find File At | 157 | @code{dired-x-find-file} and @code{dired-x-find-file-other-window}, |
| 173 | Point}). | 158 | respectively (@pxref{Find File At Point}). |
| 174 | 159 | ||
| 175 | @node Technical Details, , Features, Introduction | 160 | @node Technical Details, , Features, Introduction |
| 176 | @section Technical Details | 161 | @section Technical Details |
| @@ -351,27 +336,25 @@ inside your @code{dired-mode-hook} to have omitting initially turned on in | |||
| 351 | @emph{every} Dired buffer (@pxref{Installation}). You can then use @kbd{M-o} to | 336 | @emph{every} Dired buffer (@pxref{Installation}). You can then use @kbd{M-o} to |
| 352 | unomit in that buffer. | 337 | unomit in that buffer. |
| 353 | 338 | ||
| 354 | To enable omitting automatically only in certain directories one can use Dired | 339 | To enable omitting automatically only in certain directories you can add |
| 355 | Local Variables and put | 340 | a directory local setting |
| 341 | (@pxref{Directory Variables,,,emacs,The Gnu Emacs manual}) for Dired mode | ||
| 356 | 342 | ||
| 357 | @example | 343 | @example |
| 358 | Local Variables: | 344 | ((dired-mode . ((dired-omit-mode . t)))) |
| 359 | dired-omit-mode: t | ||
| 360 | End: | ||
| 361 | @end example | 345 | @end example |
| 362 | 346 | ||
| 363 | @noindent | 347 | @noindent |
| 364 | into a file @file{.dired} (the default value of | 348 | to a @file{.dir-locals.el} file in that directory. |
| 365 | @code{dired-local-variables-file}) in that directory (@pxref{Local Variables}). | ||
| 366 | 349 | ||
| 367 | @table @code | 350 | @table @code |
| 368 | @findex dired-omit-here-always | 351 | @findex dired-omit-here-always |
| 369 | @item dired-omit-here-always | 352 | @item dired-omit-here-always |
| 370 | 353 | ||
| 371 | This is an interactive function that creates a local variables file exactly | 354 | This is an interactive function that creates a local variables file exactly |
| 372 | like the example above (if it does not already exist) in the file | 355 | like the example above (if it does not already exist) in the |
| 373 | @code{dired-local-variables-file} in the current directory and then refreshes | 356 | @code{dir-locals-file} file in the current directory and then refreshes |
| 374 | the directory listing (@pxref{Local Variables}). | 357 | the directory listing. |
| 375 | @end table | 358 | @end table |
| 376 | 359 | ||
| 377 | @vindex dired-omit-files | 360 | @vindex dired-omit-files |
| @@ -490,7 +473,6 @@ Loading @file{dired-x.el} will install Dired Omit by putting | |||
| 490 | call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup} | 473 | call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup} |
| 491 | in your @code{dired-mode-hook}. | 474 | in your @code{dired-mode-hook}. |
| 492 | 475 | ||
| 493 | @c FIXME does the standard dir-locals mechanism obsolete this? | ||
| 494 | @node Local Variables, Shell Command Guessing, Omitting Files in Dired, Top | 476 | @node Local Variables, Shell Command Guessing, Omitting Files in Dired, Top |
| 495 | @chapter Local Variables for Dired Directories | 477 | @chapter Local Variables for Dired Directories |
| 496 | 478 | ||
| @@ -498,10 +480,15 @@ in your @code{dired-mode-hook}. | |||
| 498 | @vindex dired-local-variables-file | 480 | @vindex dired-local-variables-file |
| 499 | @vindex dired-enable-local-variables | 481 | @vindex dired-enable-local-variables |
| 500 | @noindent | 482 | @noindent |
| 501 | When Dired visits a directory, it looks for a file whose name is the value of | 483 | This Dired-X feature is obsolete as of Emacs 24.1. The standard Emacs |
| 502 | variable @code{dired-local-variables-file} (default: @file{.dired}). If such | 484 | directory local variables mechanism (@pxref{Directory |
| 503 | a file is found, Dired will temporarily insert it into the Dired buffer and | 485 | Variables,,,emacs,The Gnu Emacs manual}) replaces it. For an example of |
| 504 | run @code{hack-local-variables}. | 486 | the new mechanims, @pxref{Omitting Variables}. |
| 487 | |||
| 488 | When Dired visits a directory, it looks for a file whose name is the | ||
| 489 | value of variable @code{dired-local-variables-file} (default: @file{.dired}). | ||
| 490 | If such a file is found, Dired will temporarily insert it into the Dired | ||
| 491 | buffer and run @code{hack-local-variables}. | ||
| 505 | 492 | ||
| 506 | @noindent | 493 | @noindent |
| 507 | For example, if the user puts | 494 | For example, if the user puts |
| @@ -527,7 +514,7 @@ omitted automatically | |||
| 527 | @noindent | 514 | @noindent |
| 528 | You can set @code{dired-local-variables-file} to @code{nil} to suppress this. | 515 | You can set @code{dired-local-variables-file} to @code{nil} to suppress this. |
| 529 | The value of @code{dired-enable-local-variables} controls if and how these | 516 | The value of @code{dired-enable-local-variables} controls if and how these |
| 530 | local variables are read. This variable exists so that if may override the | 517 | local variables are read. This variable exists so that it may override the |
| 531 | default value of @code{enable-local-variables}. | 518 | default value of @code{enable-local-variables}. |
| 532 | 519 | ||
| 533 | @noindent | 520 | @noindent |
| @@ -551,12 +538,10 @@ into the Dired buffer and run @code{hack-local-variables}. | |||
| 551 | @item dired-enable-local-variables | 538 | @item dired-enable-local-variables |
| 552 | Default: @code{t} | 539 | Default: @code{t} |
| 553 | 540 | ||
| 554 | Controls the use of local-variables lists in Dired. The value can be @code{t}, | 541 | Controls the use of local-variables lists in Dired. This variable |
| 555 | @code{nil}, or something else. A value of @code{t} means local-variables | 542 | temporarily overrides the value of @code{enable-local-variables} when |
| 556 | lists are obeyed in the @code{dired-local-variables-file}; @code{nil} means | 543 | the Dired Local Variables are hacked. It takes the same values as that |
| 557 | they are ignored; anything else means query. This variable temporarily | 544 | variable. A value of @code{nil} means to ignore any Dired Local Variables. |
| 558 | overrides the value of @code{enable-local-variables} when the Dired Local | ||
| 559 | Variables are hacked. | ||
| 560 | @end table | 545 | @end table |
| 561 | 546 | ||
| 562 | @node Shell Command Guessing, Virtual Dired, Local Variables, Top | 547 | @node Shell Command Guessing, Virtual Dired, Local Variables, Top |
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi index 377bb6ee8c5..8f9f8fc03a2 100644 --- a/doc/misc/edt.texi +++ b/doc/misc/edt.texi | |||
| @@ -87,7 +87,7 @@ informing you that the emulation has been enabled: ``Default EDT keymap | |||
| 87 | active''. | 87 | active''. |
| 88 | 88 | ||
| 89 | You can have the EDT Emulation start up automatically, each time you | 89 | You can have the EDT Emulation start up automatically, each time you |
| 90 | initiate a GNU Emacs session, by adding the following line to your | 90 | initiate an Emacs session, by adding the following line to your |
| 91 | @file{.emacs} file: | 91 | @file{.emacs} file: |
| 92 | 92 | ||
| 93 | @example | 93 | @example |
| @@ -218,7 +218,7 @@ user quits without saving those buffers. | |||
| 218 | 218 | ||
| 219 | @item | 219 | @item |
| 220 | Emulate EDT Keypad Mode commands closely so that current EDT users will | 220 | Emulate EDT Keypad Mode commands closely so that current EDT users will |
| 221 | find that it easy and comfortable to use GNU Emacs with a small learning | 221 | find that it easy and comfortable to use Emacs with a small learning |
| 222 | curve. | 222 | curve. |
| 223 | 223 | ||
| 224 | @item | 224 | @item |
| @@ -237,7 +237,7 @@ Provide an easy way to restore @strong{all} original Emacs key bindings, | |||
| 237 | just as they existed before the EDT emulation was first invoked. | 237 | just as they existed before the EDT emulation was first invoked. |
| 238 | 238 | ||
| 239 | @item | 239 | @item |
| 240 | Support GNU Emacs 19 and higher. XEmacs 19, and above, is also supported. | 240 | Support Emacs and XEmacs 19 and higher. |
| 241 | 241 | ||
| 242 | @item | 242 | @item |
| 243 | Supports highlighting of marked text within the EDT emulation on all | 243 | Supports highlighting of marked text within the EDT emulation on all |
| @@ -285,13 +285,13 @@ apply to you. | |||
| 285 | @node Starting emulation | 285 | @node Starting emulation |
| 286 | @chapter How to Get Started | 286 | @chapter How to Get Started |
| 287 | 287 | ||
| 288 | Start up GNU Emacs and enter @kbd{M-x edt-emulation-on} to begin the | 288 | Start up Emacs and enter @kbd{M-x edt-emulation-on} to begin the |
| 289 | emulation. After initialization is complete, the following message will | 289 | emulation. After initialization is complete, the following message will |
| 290 | appear below the status line informing you that the emulation has been | 290 | appear below the status line informing you that the emulation has been |
| 291 | enabled: ``Default EDT keymap active''. | 291 | enabled: ``Default EDT keymap active''. |
| 292 | 292 | ||
| 293 | You can have the EDT Emulation start up automatically, each time you | 293 | You can have the EDT Emulation start up automatically, each time you |
| 294 | initiate a GNU Emacs session, by adding the following line to your | 294 | initiate an Emacs session, by adding the following line to your |
| 295 | @file{.emacs} file: | 295 | @file{.emacs} file: |
| 296 | 296 | ||
| 297 | @example | 297 | @example |
| @@ -306,7 +306,7 @@ in the EDT Default Mode). | |||
| 306 | It is easy to customize key bindings in the EDT Emulation | 306 | It is easy to customize key bindings in the EDT Emulation |
| 307 | (@pxref{Customizing}). Customizations are placed in a file called | 307 | (@pxref{Customizing}). Customizations are placed in a file called |
| 308 | @file{edt-user.el}. The Emacs @file{etc/} directory contains an | 308 | @file{edt-user.el}. The Emacs @file{etc/} directory contains an |
| 309 | example. If @file{edt-user.el} is found in your GNU Emacs load path | 309 | example. If @file{edt-user.el} is found in your Emacs load path |
| 310 | during EDT Emulation initialization, then the following message will | 310 | during EDT Emulation initialization, then the following message will |
| 311 | appear below the status line indicating that the emulation has been | 311 | appear below the status line indicating that the emulation has been |
| 312 | enabled, enhanced by your own customizations: ``User EDT custom keymap | 312 | enabled, enhanced by your own customizations: ``User EDT custom keymap |
| @@ -321,8 +321,8 @@ restores the original key bindings in effect just prior to invoking the | |||
| 321 | emulation. | 321 | emulation. |
| 322 | 322 | ||
| 323 | Emacs binds keys to @acronym{ASCII} control characters and so does the | 323 | Emacs binds keys to @acronym{ASCII} control characters and so does the |
| 324 | real EDT. Where EDT key bindings and GNU Emacs key bindings conflict, | 324 | real EDT. Where EDT key bindings and Emacs key bindings conflict, |
| 325 | the default GNU Emacs key bindings are retained by the EDT emulation by | 325 | the default Emacs key bindings are retained by the EDT emulation by |
| 326 | default. If you are a diehard EDT user you may not like this. The | 326 | default. If you are a diehard EDT user you may not like this. The |
| 327 | @ref{Control keys} section explains how to change this so that the EDT | 327 | @ref{Control keys} section explains how to change this so that the EDT |
| 328 | bindings to @acronym{ASCII} control characters override the default | 328 | bindings to @acronym{ASCII} control characters override the default |
| @@ -364,7 +364,7 @@ older SunOS release configured with a Sun Type 5 keyboard: | |||
| 364 | @example | 364 | @example |
| 365 | ! File: .xmodmaprc | 365 | ! File: .xmodmaprc |
| 366 | ! | 366 | ! |
| 367 | ! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation | 367 | ! Set up Sun Type 5 keypad for use with the Emacs EDT Emulation |
| 368 | ! | 368 | ! |
| 369 | keycode 53 = KP_Divide | 369 | keycode 53 = KP_Divide |
| 370 | keycode 54 = KP_Multiply | 370 | keycode 54 = KP_Multiply |
| @@ -436,7 +436,7 @@ things up nicely. | |||
| 436 | @example | 436 | @example |
| 437 | ! File: .xmodmaprc | 437 | ! File: .xmodmaprc |
| 438 | ! | 438 | ! |
| 439 | ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation | 439 | ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation |
| 440 | ! | 440 | ! |
| 441 | clear mod2 | 441 | clear mod2 |
| 442 | keycode 77 = F12 | 442 | keycode 77 = F12 |
| @@ -518,7 +518,7 @@ assign Num_Lock back to mod2. | |||
| 518 | @example | 518 | @example |
| 519 | ! File: .xmodmaprc | 519 | ! File: .xmodmaprc |
| 520 | ! | 520 | ! |
| 521 | ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation | 521 | ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation |
| 522 | ! | 522 | ! |
| 523 | clear mod2 | 523 | clear mod2 |
| 524 | keycode 77 = F12 | 524 | keycode 77 = F12 |
| @@ -541,7 +541,7 @@ In general, you will find that this emulation of EDT replicates most, | |||
| 541 | but not all, of EDT's most used Keypad Mode editing functions and | 541 | but not all, of EDT's most used Keypad Mode editing functions and |
| 542 | behavior. It is not perfect, but most EDT users who have tried the | 542 | behavior. It is not perfect, but most EDT users who have tried the |
| 543 | emulation agree that it is quite good enough to make it easy for | 543 | emulation agree that it is quite good enough to make it easy for |
| 544 | die-hard EDT users to move over to using GNU Emacs. | 544 | die-hard EDT users to move over to using Emacs. |
| 545 | 545 | ||
| 546 | Here's a list of the most important differences between EDT and this GNU | 546 | Here's a list of the most important differences between EDT and this GNU |
| 547 | Emacs EDT Emulation. The list is short but you must be aware of these | 547 | Emacs EDT Emulation. The list is short but you must be aware of these |
| @@ -783,7 +783,7 @@ terminals on the same system, you need not look at @file{edt-user.el2}. | |||
| 783 | @end ignore | 783 | @end ignore |
| 784 | 784 | ||
| 785 | First, you need to have your own private lisp directory, say | 785 | First, you need to have your own private lisp directory, say |
| 786 | @file{~/lisp}, and you should add it to the GNU Emacs load path. | 786 | @file{~/lisp}, and you should add it to the Emacs load path. |
| 787 | 787 | ||
| 788 | @strong{Please note:} A few sites have different load-path requirements, | 788 | @strong{Please note:} A few sites have different load-path requirements, |
| 789 | so the above directions may need some modification if your site has such | 789 | so the above directions may need some modification if your site has such |
| @@ -898,8 +898,8 @@ Here are some examples: | |||
| 898 | @node Control keys | 898 | @node Control keys |
| 899 | @section Enabling EDT Control Key Sequence Bindings | 899 | @section Enabling EDT Control Key Sequence Bindings |
| 900 | 900 | ||
| 901 | Where EDT key bindings and GNU Emacs key bindings conflict, the default | 901 | Where EDT key bindings and Emacs key bindings conflict, the default |
| 902 | GNU Emacs key bindings are retained by default. Some diehard EDT users | 902 | Emacs key bindings are retained by default. Some diehard EDT users |
| 903 | may not like this. So, if the variable | 903 | may not like this. So, if the variable |
| 904 | @code{edt-use-EDT-control-key-bindings} is set to true in a user's | 904 | @code{edt-use-EDT-control-key-bindings} is set to true in a user's |
| 905 | @file{.emacs} file, then the default EDT Emulation mode will enable most | 905 | @file{.emacs} file, then the default EDT Emulation mode will enable most |
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 463a14f08d2..b46748a08f9 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi | |||
| @@ -36,7 +36,7 @@ and modified without restriction. | |||
| 36 | @titlepage | 36 | @titlepage |
| 37 | @title ERC manual | 37 | @title ERC manual |
| 38 | @subtitle a full-featured IRC client | 38 | @subtitle a full-featured IRC client |
| 39 | @subtitle for GNU Emacs and XEmacs | 39 | @subtitle for Emacs and XEmacs |
| 40 | 40 | ||
| 41 | @c The following two commands | 41 | @c The following two commands |
| 42 | @c start the copyright page. | 42 | @c start the copyright page. |
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index f990ee69a08..b55452cfa82 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi | |||
| @@ -22498,7 +22498,7 @@ variables should be either strings or symbols naming functions that | |||
| 22498 | return a string. When the mouse passes over text with this property | 22498 | return a string. When the mouse passes over text with this property |
| 22499 | set, a balloon window will appear and display the string. Please | 22499 | set, a balloon window will appear and display the string. Please |
| 22500 | refer to @ref{Tooltips, ,Tooltips, emacs, The Emacs Manual}, | 22500 | refer to @ref{Tooltips, ,Tooltips, emacs, The Emacs Manual}, |
| 22501 | (in GNU Emacs) or the doc string of @code{balloon-help-mode} (in | 22501 | (in Emacs) or the doc string of @code{balloon-help-mode} (in |
| 22502 | XEmacs) for more information on this. (For technical reasons, the | 22502 | XEmacs) for more information on this. (For technical reasons, the |
| 22503 | guillemets have been approximated as @samp{<<} and @samp{>>} in this | 22503 | guillemets have been approximated as @samp{<<} and @samp{>>} in this |
| 22504 | paragraph.) | 22504 | paragraph.) |
| @@ -27766,7 +27766,7 @@ to install Gnus after compiling it, give @file{make.bat} @code{/copy} as | |||
| 27766 | the second parameter. | 27766 | the second parameter. |
| 27767 | 27767 | ||
| 27768 | @file{make.bat} has been rewritten from scratch, it now features | 27768 | @file{make.bat} has been rewritten from scratch, it now features |
| 27769 | automatic recognition of XEmacs and GNU Emacs, generates | 27769 | automatic recognition of XEmacs and Emacs, generates |
| 27770 | @file{gnus-load.el}, checks if errors occur while compilation and | 27770 | @file{gnus-load.el}, checks if errors occur while compilation and |
| 27771 | generation of info files and reports them at the end of the build | 27771 | generation of info files and reports them at the end of the build |
| 27772 | process. It now uses @code{makeinfo} if it is available and falls | 27772 | process. It now uses @code{makeinfo} if it is available and falls |
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index 94aeb612df7..8e172301915 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi | |||
| @@ -4275,7 +4275,7 @@ browse-url-browser-function} or similar when attempting to load IDLWAVE | |||
| 4275 | under XEmacs.} | 4275 | under XEmacs.} |
| 4276 | 4276 | ||
| 4277 | You don't have the @samp{browse-url} (or other required) XEmacs package. | 4277 | You don't have the @samp{browse-url} (or other required) XEmacs package. |
| 4278 | Unlike GNU Emacs, XEmacs distributes many packages separately from the | 4278 | Unlike Emacs, XEmacs distributes many packages separately from the |
| 4279 | main program. IDLWAVE is actually among these, but is not always the | 4279 | main program. IDLWAVE is actually among these, but is not always the |
| 4280 | most up to date. When installing IDLWAVE as an XEmacs package, it | 4280 | most up to date. When installing IDLWAVE as an XEmacs package, it |
| 4281 | should prompt you for required additional packages. When installing it | 4281 | should prompt you for required additional packages. When installing it |
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi index 59da631c6ea..43d7bc74553 100644 --- a/doc/misc/mh-e.texi +++ b/doc/misc/mh-e.texi | |||
| @@ -211,9 +211,9 @@ However, MH-E was the tip of the iceberg, and I discovered more and | |||
| 211 | more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of | 211 | more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of |
| 212 | them. | 212 | them. |
| 213 | 213 | ||
| 214 | The MH-E package is distributed with GNU Emacs@footnote{Version | 214 | The MH-E package is distributed with Emacs@footnote{Version |
| 215 | @value{VERSION} of MH-E appeared in GNU Emacs 23.1. It is supported | 215 | @value{VERSION} of MH-E appeared in Emacs 23.1. It is supported |
| 216 | in GNU Emacs 21 and 22, as well as XEmacs 21 (except for versions | 216 | in Emacs 21 and 22, as well as XEmacs 21 (except for versions |
| 217 | 21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher, | 217 | 21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher, |
| 218 | all versions of nmh, and GNU mailutils 1.0 and higher.}, so you | 218 | all versions of nmh, and GNU mailutils 1.0 and higher.}, so you |
| 219 | shouldn't have to do anything special to use it. Gnus is also | 219 | shouldn't have to do anything special to use it. Gnus is also |
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 346354b3170..8bcce244f9d 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -369,13 +369,12 @@ behind the scenes when you open a file with @value{tramp}. | |||
| 369 | @cindex obtaining Tramp | 369 | @cindex obtaining Tramp |
| 370 | 370 | ||
| 371 | @value{tramp} is freely available on the Internet and the latest | 371 | @value{tramp} is freely available on the Internet and the latest |
| 372 | release may be downloaded from | 372 | release may be downloaded from @uref{ftp://ftp.gnu.org/gnu/tramp/}. |
| 373 | @uref{ftp://ftp.gnu.org/gnu/tramp/}. This release includes the full | 373 | This release includes the full documentation and code for |
| 374 | documentation and code for @value{tramp}, suitable for installation. | 374 | @value{tramp}, suitable for installation. But Emacs (22 or later) |
| 375 | But GNU Emacs (22 or later) includes @value{tramp} already, and there | 375 | includes @value{tramp} already, and there is a @value{tramp} package |
| 376 | is a @value{tramp} package for XEmacs, as well. So maybe it is easier | 376 | for XEmacs, as well. So maybe it is easier to just use those. But if |
| 377 | to just use those. But if you want the bleeding edge, read | 377 | you want the bleeding edge, read on@dots{...} |
| 378 | on@dots{...} | ||
| 379 | 378 | ||
| 380 | For the especially brave, @value{tramp} is available from CVS. The CVS | 379 | For the especially brave, @value{tramp} is available from CVS. The CVS |
| 381 | version is the latest version of the code and may contain incomplete | 380 | version is the latest version of the code and may contain incomplete |
| @@ -445,10 +444,10 @@ GVFS integration started in February 2009. | |||
| 445 | @end ifset | 444 | @end ifset |
| 446 | 445 | ||
| 447 | In December 2001, @value{tramp} has been added to the XEmacs package | 446 | In December 2001, @value{tramp} has been added to the XEmacs package |
| 448 | repository. Being part of the GNU Emacs repository happened in June | 447 | repository. Being part of the Emacs repository happened in June 2002, |
| 449 | 2002, the first release including @value{tramp} was GNU Emacs 22.1. | 448 | the first release including @value{tramp} was Emacs 22.1. |
| 450 | 449 | ||
| 451 | @value{tramp} is also a GNU/Linux Debian package since February 2001. | 450 | @value{tramp} is also a Debian GNU/Linux package since February 2001. |
| 452 | 451 | ||
| 453 | 452 | ||
| 454 | @c Installation chapter is necessary only in case of standalone | 453 | @c Installation chapter is necessary only in case of standalone |
| @@ -1704,9 +1703,10 @@ By default, this is set to a reasonable set of defaults for most | |||
| 1704 | machines. The symbol @code{tramp-default-remote-path} is a place | 1703 | machines. The symbol @code{tramp-default-remote-path} is a place |
| 1705 | holder, it is replaced by the list of directories received via the | 1704 | holder, it is replaced by the list of directories received via the |
| 1706 | command @command{getconf PATH} on your remote machine. For example, | 1705 | command @command{getconf PATH} on your remote machine. For example, |
| 1707 | on GNU Debian this is @file{/bin:/usr/bin}, whereas on Solaris this is | 1706 | on Debian GNU/Linux this is @file{/bin:/usr/bin}, whereas on Solaris |
| 1708 | @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}. It is | 1707 | this is @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}. |
| 1709 | recommended to apply this symbol on top of @code{tramp-remote-path}. | 1708 | It is recommended to apply this symbol on top of |
| 1709 | @code{tramp-remote-path}. | ||
| 1710 | 1710 | ||
| 1711 | It is possible, however, that your local (or remote ;) system | 1711 | It is possible, however, that your local (or remote ;) system |
| 1712 | administrator has put the tools you want in some obscure local | 1712 | administrator has put the tools you want in some obscure local |
| @@ -2740,8 +2740,8 @@ There is also a Savannah project page. | |||
| 2740 | @item | 2740 | @item |
| 2741 | Which systems does it work on? | 2741 | Which systems does it work on? |
| 2742 | 2742 | ||
| 2743 | The package has been used successfully on GNU Emacs 22, GNU Emacs 23, | 2743 | The package has been used successfully on Emacs 22, Emacs 23, XEmacs |
| 2744 | XEmacs 21 (starting with 21.4), and SXEmacs 22. | 2744 | 21 (starting with 21.4), and SXEmacs 22. |
| 2745 | 2745 | ||
| 2746 | The package was intended to work on Unix, and it really expects a | 2746 | The package was intended to work on Unix, and it really expects a |
| 2747 | Unix-like system on the remote end (except the @option{smb} method), | 2747 | Unix-like system on the remote end (except the @option{smb} method), |
| @@ -3583,9 +3583,9 @@ printed and deleted. | |||
| 3583 | But I have decided that this is too fragile to reliably work, so on some | 3583 | But I have decided that this is too fragile to reliably work, so on some |
| 3584 | systems you'll have to do without the uuencode methods. | 3584 | systems you'll have to do without the uuencode methods. |
| 3585 | 3585 | ||
| 3586 | @item The @value{tramp} filename syntax differs between GNU Emacs and XEmacs. | 3586 | @item The @value{tramp} filename syntax differs between Emacs and XEmacs. |
| 3587 | 3587 | ||
| 3588 | The GNU Emacs maintainers wish to use a unified filename syntax for | 3588 | The Emacs maintainers wish to use a unified filename syntax for |
| 3589 | Ange-FTP and @value{tramp} so that users don't have to learn a new | 3589 | Ange-FTP and @value{tramp} so that users don't have to learn a new |
| 3590 | syntax. It is sufficient to learn some extensions to the old syntax. | 3590 | syntax. It is sufficient to learn some extensions to the old syntax. |
| 3591 | 3591 | ||
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index ff5641fb4b4..437b1372c11 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi | |||
| @@ -63,7 +63,7 @@ | |||
| 63 | @set postfixhop / | 63 | @set postfixhop / |
| 64 | @set ipv6prefix | 64 | @set ipv6prefix |
| 65 | @set ipv6postfix | 65 | @set ipv6postfix |
| 66 | @set emacsothername GNU Emacs | 66 | @set emacsothername Emacs |
| 67 | @set emacsotherdir emacs | 67 | @set emacsotherdir emacs |
| 68 | @set emacsotherfilename tramp-emacs.html | 68 | @set emacsotherfilename tramp-emacs.html |
| 69 | @end ifset | 69 | @end ifset |
| @@ -330,7 +330,7 @@ prompts for a number to count from and for a format string. | |||
| 330 | ** The Landmark game is now invoked with `landmark', not `lm'. | 330 | ** The Landmark game is now invoked with `landmark', not `lm'. |
| 331 | 331 | ||
| 332 | ** Prolog mode has been completely revamped, with lots of additional | 332 | ** Prolog mode has been completely revamped, with lots of additional |
| 333 | functionality such as more intelligent indentation, electricty, support for | 333 | functionality such as more intelligent indentation, electricity, support for |
| 334 | more variants, including Mercury, and a lot more. | 334 | more variants, including Mercury, and a lot more. |
| 335 | 335 | ||
| 336 | ** shell-mode can track your cwd by reading it from your prompt. | 336 | ** shell-mode can track your cwd by reading it from your prompt. |
| @@ -347,6 +347,12 @@ Just set shell-dir-cookie-re to an appropriate regexp. | |||
| 347 | ** browse-url has gotten a new variable that is used for mailto: URLs, | 347 | ** browse-url has gotten a new variable that is used for mailto: URLs, |
| 348 | `browse-url-mailto-function', which defaults to `browse-url-mail'. | 348 | `browse-url-mailto-function', which defaults to `browse-url-mail'. |
| 349 | 349 | ||
| 350 | ** Directory local variables can apply to file-less buffers, in certain modes | ||
| 351 | (eg dired, vc-dir, log-edit). For example, adding | ||
| 352 | "(diff-mode . ((mode . whitespace)))" to your .dir-locals.el file, | ||
| 353 | will turn on `whitespace-mode' for *vc-diff* buffers. Modes should | ||
| 354 | call `hack-dir-local-variables-non-file-buffer' to support this. | ||
| 355 | |||
| 350 | ** ERC changes | 356 | ** ERC changes |
| 351 | 357 | ||
| 352 | *** New vars `erc-autojoin-timing' and `erc-autojoin-delay'. | 358 | *** New vars `erc-autojoin-timing' and `erc-autojoin-delay'. |
| @@ -412,16 +418,12 @@ choose a color via list-colors-display. | |||
| 412 | *** dired-jump and dired-jump-other-window called with a prefix argument | 418 | *** dired-jump and dired-jump-other-window called with a prefix argument |
| 413 | read a file name from the minibuffer instead of using buffer-file-name. | 419 | read a file name from the minibuffer instead of using buffer-file-name. |
| 414 | 420 | ||
| 415 | ** Directory local variables can apply to file-less buffers. | 421 | +++ |
| 416 | For example, adding "(diff-mode . ((mode . whitespace)))" to your | 422 | *** The `dired local variables' feature provided by Dired-x is obsolete. |
| 417 | .dir-locals.el file, will turn on `whitespace-mode' for *vc-diff* buffers. | 423 | The standard directory local variables feature replaces it. |
| 418 | 424 | ||
| 419 | ** SQL Mode enhancements. | 425 | ** SQL Mode enhancements. |
| 420 | 426 | ||
| 421 | *** Several variables have been marked as safe local variables. The | ||
| 422 | variables `sql-product', `sql-user', `sql-server', `sql-database' and | ||
| 423 | `sql-port' can now be safely used as local variables. | ||
| 424 | |||
| 425 | *** `sql-dialect' is a synonym for `sql-product'. | 427 | *** `sql-dialect' is a synonym for `sql-product'. |
| 426 | 428 | ||
| 427 | *** Added ability to login with a port on MySQL and Postgres. | 429 | *** Added ability to login with a port on MySQL and Postgres. |
| @@ -530,7 +532,7 @@ objects shown and the details available are product specific. | |||
| 530 | **** List all objects. | 532 | **** List all objects. |
| 531 | Using `M-x sql-list-all', `C-c C-l a' or selecting "SQL->List all | 533 | Using `M-x sql-list-all', `C-c C-l a' or selecting "SQL->List all |
| 532 | objects" will list all the objects in the database. At a minimum it | 534 | objects" will list all the objects in the database. At a minimum it |
| 533 | lists the tables and views in the database. Preceeding the command by | 535 | lists the tables and views in the database. Preceding the command by |
| 534 | universal argument may provide additional details or extend the | 536 | universal argument may provide additional details or extend the |
| 535 | listing to include other schemas objects. The list will appear in a | 537 | listing to include other schemas objects. The list will appear in a |
| 536 | separate window in view-mode. | 538 | separate window in view-mode. |
| @@ -538,7 +540,7 @@ separate window in view-mode. | |||
| 538 | **** List Table details. | 540 | **** List Table details. |
| 539 | Using `M-x sql-list-table', `C-c C-l t' or selecting "SQL->List Table | 541 | Using `M-x sql-list-table', `C-c C-l t' or selecting "SQL->List Table |
| 540 | details" will ask for the name of a database table or view and display | 542 | details" will ask for the name of a database table or view and display |
| 541 | the list of columns in the relation. Preceeding the comand with the | 543 | the list of columns in the relation. Preceding the command with the |
| 542 | universal argument may provide additional details about each column. | 544 | universal argument may provide additional details about each column. |
| 543 | The list will appear in a separate window in view-mode. | 545 | The list will appear in a separate window in view-mode. |
| 544 | 546 | ||
| @@ -553,7 +555,7 @@ In general, the SQL*Plus option SCAN should always be set OFF under | |||
| 553 | SQL interactive mode and this option used in its place. | 555 | SQL interactive mode and this option used in its place. |
| 554 | 556 | ||
| 555 | *** SQL interactive mode will replace tabs with spaces. | 557 | *** SQL interactive mode will replace tabs with spaces. |
| 556 | This prevents the comand interpretter for MySQL and Postgres from | 558 | This prevents the command interpreter for MySQL and Postgres from |
| 557 | listing object name completions when being sent text via | 559 | listing object name completions when being sent text via |
| 558 | `sql-send-*' functions. | 560 | `sql-send-*' functions. |
| 559 | 561 | ||
| @@ -562,7 +564,7 @@ listing object name completions when being sent text via | |||
| 562 | ** sregex.el is now obsolete, since rx.el is a strict superset. | 564 | ** sregex.el is now obsolete, since rx.el is a strict superset. |
| 563 | 565 | ||
| 564 | ** s-region.el and pc-select are now declared obsolete, | 566 | ** s-region.el and pc-select are now declared obsolete, |
| 565 | superceded by shift-select-mode enabled by default in 23.1. | 567 | superseded by shift-select-mode enabled by default in 23.1. |
| 566 | ** pc-mode.el is also declared obsolete. | 568 | ** pc-mode.el is also declared obsolete. |
| 567 | ** gdb-mi | 569 | ** gdb-mi |
| 568 | 570 | ||
| @@ -710,6 +712,7 @@ sc.el, x-menu.el, rnews.el, rnewspost.el | |||
| 710 | 712 | ||
| 711 | * Lisp changes in Emacs 24.1 | 713 | * Lisp changes in Emacs 24.1 |
| 712 | 714 | ||
| 715 | ** byte-compile-disable-print-circle is obsolete. | ||
| 713 | ** Removed the stack-trace-on-error variable. | 716 | ** Removed the stack-trace-on-error variable. |
| 714 | Also the debugger can now "continue" from an error, which means it will jump | 717 | Also the debugger can now "continue" from an error, which means it will jump |
| 715 | to the error handler as if the debugger had not been invoked instead of | 718 | to the error handler as if the debugger had not been invoked instead of |
| @@ -800,10 +803,9 @@ displayed with a "spinning bar". | |||
| 800 | runtime checks. | 803 | runtime checks. |
| 801 | 804 | ||
| 802 | ** New configure.bat option --distfiles to specify files to be | 805 | ** New configure.bat option --distfiles to specify files to be |
| 803 | included in binary distribution | 806 | included in binary distribution |
| 804 | 807 | ||
| 805 | ** New make target `dist' to create binary disttribution for Windows | 808 | ** New make target `dist' to create binary distribution for MS Windows |
| 806 | platform | ||
| 807 | 809 | ||
| 808 | 810 | ||
| 809 | ---------------------------------------------------------------------- | 811 | ---------------------------------------------------------------------- |
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index fceeaba174c..2c98cdf59a6 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -611,7 +611,7 @@ | |||
| 611 | autoconf, not cpp. | 611 | autoconf, not cpp. |
| 612 | (ALL_CFLAGS): Use them as make variables. | 612 | (ALL_CFLAGS): Use them as make variables. |
| 613 | 613 | ||
| 614 | 2010-04-07 Christoph <cschol2112@googlemail.com> (tiny change) | 614 | 2010-04-07 Christoph Scholtes <cschol2112@googlemail.com> |
| 615 | 615 | ||
| 616 | * makefile.w32-in (OTHER_PLATFORM_SUPPORT): Use parenthesis | 616 | * makefile.w32-in (OTHER_PLATFORM_SUPPORT): Use parenthesis |
| 617 | for macros for nmake compatibility. | 617 | for macros for nmake compatibility. |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c817a59a03a..c44c491cad0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,49 @@ | |||
| 1 | 2011-02-24 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * files-x.el (modify-dir-local-variable): Handle dir-locals from | ||
| 4 | the cache, and from non-file sources. | ||
| 5 | |||
| 6 | * help-fns.el (describe-variable): Return consistent results when a | ||
| 7 | dir-local from a file came from the cache or did not. (Bug#8095) | ||
| 8 | If a dir-local has no associated file, say it came from a "directory". | ||
| 9 | |||
| 10 | * files.el (hack-dir-local-variables): Fix setting of `dir-name'. | ||
| 11 | (hack-local-variables-confirm, hack-local-variables-filter): Doc fix. | ||
| 12 | |||
| 13 | * files.el (dir-locals-find-file): Doc fix. | ||
| 14 | Fix the check for cache elements that have no associated file, | ||
| 15 | and the mtime check for those that do. (Bug#8095) | ||
| 16 | |||
| 17 | * dired-x.el (dired-hack-local-variables): | ||
| 18 | Handle interrupts during hacking local variables. (Bug#5216) | ||
| 19 | |||
| 20 | * emacs-lisp/autoload.el (autoload-save-buffers) | ||
| 21 | (autoload-find-destination, update-directory-autoloads): | ||
| 22 | Avoid prompts when updating autoloads. | ||
| 23 | |||
| 24 | 2011-02-23 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 25 | |||
| 26 | * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle): Obsolete. | ||
| 27 | |||
| 28 | 2011-02-23 Kenichi Handa <handa@m17n.org> | ||
| 29 | |||
| 30 | * mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an | ||
| 31 | error when a multipart boundary in the nested multipart is found. | ||
| 32 | |||
| 33 | * mail/rmail.el (rmail-start-mail): Decode "encoded-words" of | ||
| 34 | header components. | ||
| 35 | |||
| 36 | 2011-02-23 Glenn Morris <rgm@gnu.org> | ||
| 37 | |||
| 38 | * dired.el (dired-mode): Call hack-dir-local-variables-non-file-buffer. | ||
| 39 | * dired-x.el (dired-omit-mode): Safe if boolean. | ||
| 40 | (dired-enable-local-variables): Fix doc and custom type. | ||
| 41 | (dired-enable-local-variables, dired-local-variables-file) | ||
| 42 | (dired-hack-local-variables): Make obsolete. | ||
| 43 | (dired-omit-here-always): Use dir-locals.el instead. | ||
| 44 | |||
| 45 | * files.el (safe-local-eval-forms): Add the write-file-hooks version. | ||
| 46 | |||
| 1 | 2011-02-22 Stefan Monnier <monnier@iro.umontreal.ca> | 47 | 2011-02-22 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 48 | ||
| 3 | * help-fns.el (describe-function-1): Don't signal an error just because | 49 | * help-fns.el (describe-function-1): Don't signal an error just because |
| @@ -9036,7 +9082,7 @@ | |||
| 9036 | * htmlfontify.el (hfy-face-attr-for-class): Use append instead | 9082 | * htmlfontify.el (hfy-face-attr-for-class): Use append instead |
| 9037 | of nconc to avoid pure storage error (Bug#6239). | 9083 | of nconc to avoid pure storage error (Bug#6239). |
| 9038 | 9084 | ||
| 9039 | 2010-06-27 Christoph <cschol2112@googlemail.com> (tiny change) | 9085 | 2010-06-27 Christoph Scholtes <cschol2112@googlemail.com> |
| 9040 | 9086 | ||
| 9041 | * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window) | 9087 | * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window) |
| 9042 | (bookmark-bmenu-other-window-with-mouse): Remove unnecessary | 9088 | (bookmark-bmenu-other-window-with-mouse): Remove unnecessary |
| @@ -11219,7 +11265,7 @@ | |||
| 11219 | 11265 | ||
| 11220 | * ido.el (ido-file-internal): Fix 2009-12-02 change. | 11266 | * ido.el (ido-file-internal): Fix 2009-12-02 change. |
| 11221 | 11267 | ||
| 11222 | 2010-04-19 Christoph <cschol2112@googlemail.com> (tiny change) | 11268 | 2010-04-19 Christoph Scholtes <cschol2112@googlemail.com> |
| 11223 | 11269 | ||
| 11224 | * progmodes/grep.el (grep-compute-defaults): Fix handling of host | 11270 | * progmodes/grep.el (grep-compute-defaults): Fix handling of host |
| 11225 | default settings (Bug#5928). | 11271 | default settings (Bug#5928). |
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el index 75e1e5882f6..cc5fd6d96fa 100644 --- a/lisp/allout-widgets.el +++ b/lisp/allout-widgets.el | |||
| @@ -2013,7 +2013,7 @@ Optional FORCE means force reassignment of the region property." | |||
| 2013 | ;; item body), to bias the registered values. | 2013 | ;; item body), to bias the registered values. |
| 2014 | ;; | 2014 | ;; |
| 2015 | ;; This is not necessary/useful when the item is being decorated, because | 2015 | ;; This is not necessary/useful when the item is being decorated, because |
| 2016 | ;; that always must be preceeded by a fresh item parse. | 2016 | ;; that always must be preceded by a fresh item parse. |
| 2017 | 2017 | ||
| 2018 | (if (not (eq field :body-end)) | 2018 | (if (not (eq field :body-end)) |
| 2019 | (widget-get item-widget :from) | 2019 | (widget-get item-widget :from) |
diff --git a/lisp/allout.el b/lisp/allout.el index 1a7d8cb1593..d881e1177fa 100644 --- a/lisp/allout.el +++ b/lisp/allout.el | |||
| @@ -255,7 +255,7 @@ prevails." | |||
| 255 | 255 | ||
| 256 | This is in contrast to the majority of allout-mode bindings on | 256 | This is in contrast to the majority of allout-mode bindings on |
| 257 | `allout-prefixed-bindings', whose bindings are created with a | 257 | `allout-prefixed-bindings', whose bindings are created with a |
| 258 | preceeding command key. | 258 | preceding command key. |
| 259 | 259 | ||
| 260 | Use vector format for the keys: | 260 | Use vector format for the keys: |
| 261 | - put literal keys after a '?' question mark, eg: '?a', '?.' | 261 | - put literal keys after a '?' question mark, eg: '?a', '?.' |
diff --git a/lisp/dired-x.el b/lisp/dired-x.el index 8b1dbb1ef83..ce07676fc99 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el | |||
| @@ -145,6 +145,8 @@ See Info node `(dired-x) Omitting Variables' for more information." | |||
| 145 | (let ((dired-omit-size-limit nil)) (dired-omit-expunge)) | 145 | (let ((dired-omit-size-limit nil)) (dired-omit-expunge)) |
| 146 | (revert-buffer))) | 146 | (revert-buffer))) |
| 147 | 147 | ||
| 148 | (put 'dired-omit-mode 'safe-local-variable 'booleanp) | ||
| 149 | |||
| 148 | ;; For backward compatibility | 150 | ;; For backward compatibility |
| 149 | (define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1") | 151 | (define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1") |
| 150 | 152 | ||
| @@ -185,15 +187,19 @@ If nil, there is no maximum size." | |||
| 185 | 187 | ||
| 186 | (defcustom dired-enable-local-variables t | 188 | (defcustom dired-enable-local-variables t |
| 187 | "Control use of local-variables lists in Dired. | 189 | "Control use of local-variables lists in Dired. |
| 188 | The value can be t, nil or something else. | ||
| 189 | A value of t means local-variables lists are obeyed; | ||
| 190 | nil means they are ignored; anything else means query. | ||
| 191 | |||
| 192 | This temporarily overrides the value of `enable-local-variables' when | 190 | This temporarily overrides the value of `enable-local-variables' when |
| 193 | listing a directory. See also `dired-local-variables-file'." | 191 | listing a directory. See also `dired-local-variables-file'." |
| 194 | :type 'boolean | 192 | :risky t |
| 193 | :type '(choice (const :tag "Query Unsafe" t) | ||
| 194 | (const :tag "Safe Only" :safe) | ||
| 195 | (const :tag "Do all" :all) | ||
| 196 | (const :tag "Ignore" nil) | ||
| 197 | (other :tag "Query" other)) | ||
| 195 | :group 'dired-x) | 198 | :group 'dired-x) |
| 196 | 199 | ||
| 200 | (make-obsolete-variable 'dired-enable-local-variables | ||
| 201 | "use a standard `dir-locals-file' instead." "24.1") | ||
| 202 | |||
| 197 | (defcustom dired-guess-shell-gnutar | 203 | (defcustom dired-guess-shell-gnutar |
| 198 | (catch 'found | 204 | (catch 'found |
| 199 | (dolist (exe '("tar" "gtar")) | 205 | (dolist (exe '("tar" "gtar")) |
| @@ -723,26 +729,25 @@ Knows about the special cases in variable `dired-default-directory-alist'." | |||
| 723 | 729 | ||
| 724 | ;;; LOCAL VARIABLES FOR DIRED BUFFERS. | 730 | ;;; LOCAL VARIABLES FOR DIRED BUFFERS. |
| 725 | 731 | ||
| 726 | ;; Brief Description: | 732 | ;; Brief Description (This feature is obsolete as of Emacs 24.1) |
| 727 | ;;; | 733 | ;; |
| 728 | ;; * `dired-extra-startup' is part of the `dired-mode-hook'. | 734 | ;; * `dired-extra-startup' is part of the `dired-mode-hook'. |
| 729 | ;;; | 735 | ;; |
| 730 | ;; * `dired-extra-startup' calls `dired-hack-local-variables' | 736 | ;; * `dired-extra-startup' calls `dired-hack-local-variables' |
| 731 | ;;; | 737 | ;; |
| 732 | ;; * `dired-hack-local-variables' checks the value of | 738 | ;; * `dired-hack-local-variables' checks the value of |
| 733 | ;;; `dired-local-variables-file' | 739 | ;; `dired-local-variables-file' |
| 734 | ;;; | 740 | ;; |
| 735 | ;; * Check if `dired-local-variables-file' is a non-nil string and is a | 741 | ;; * Check if `dired-local-variables-file' is a non-nil string and is a |
| 736 | ;;; filename found in the directory of the Dired Buffer being created. | 742 | ;; filename found in the directory of the Dired Buffer being created. |
| 737 | ;;; | 743 | ;; |
| 738 | ;; * If `dired-local-variables-file' satisfies the above, then temporarily | 744 | ;; * If `dired-local-variables-file' satisfies the above, then temporarily |
| 739 | ;;; include it in the Dired Buffer at the bottom. | 745 | ;; include it in the Dired Buffer at the bottom. |
| 740 | ;;; | 746 | ;; |
| 741 | ;; * Set `enable-local-variables' temporarily to the user variable | 747 | ;; * Set `enable-local-variables' temporarily to the user variable |
| 742 | ;;; `dired-enable-local-variables' and run `hack-local-variables' on the | 748 | ;; `dired-enable-local-variables' and run `hack-local-variables' on the |
| 743 | ;;; Dired Buffer. | 749 | ;; Dired Buffer. |
| 744 | 750 | ||
| 745 | ;; FIXME do standard dir-locals obsolete this? | ||
| 746 | (defcustom dired-local-variables-file (convert-standard-filename ".dired") | 751 | (defcustom dired-local-variables-file (convert-standard-filename ".dired") |
| 747 | "Filename, as string, containing local dired buffer variables to be hacked. | 752 | "Filename, as string, containing local dired buffer variables to be hacked. |
| 748 | If this file found in current directory, then it will be inserted into dired | 753 | If this file found in current directory, then it will be inserted into dired |
| @@ -752,6 +757,8 @@ See also `dired-enable-local-variables'." | |||
| 752 | :type 'file | 757 | :type 'file |
| 753 | :group 'dired) | 758 | :group 'dired) |
| 754 | 759 | ||
| 760 | (make-obsolete-variable 'dired-local-variables-file 'dir-locals-file "24.1") | ||
| 761 | |||
| 755 | (defun dired-hack-local-variables () | 762 | (defun dired-hack-local-variables () |
| 756 | "Evaluate local variables in `dired-local-variables-file' for dired buffer." | 763 | "Evaluate local variables in `dired-local-variables-file' for dired buffer." |
| 757 | (and (stringp dired-local-variables-file) | 764 | (and (stringp dired-local-variables-file) |
| @@ -767,29 +774,37 @@ See also `dired-enable-local-variables'." | |||
| 767 | (insert "\^L\n") | 774 | (insert "\^L\n") |
| 768 | (insert-file-contents dired-local-variables-file)) | 775 | (insert-file-contents dired-local-variables-file)) |
| 769 | ;; Hack 'em. | 776 | ;; Hack 'em. |
| 770 | (let ((buffer-file-name dired-local-variables-file)) | 777 | (unwind-protect |
| 771 | (hack-local-variables)) | 778 | (let ((buffer-file-name dired-local-variables-file)) |
| 779 | (hack-local-variables)) | ||
| 780 | ;; Delete this stuff: `eobp' is used to find last subdir by dired.el. | ||
| 781 | (delete-region opoint (point-max))) | ||
| 772 | ;; Make sure that the modeline shows the proper information. | 782 | ;; Make sure that the modeline shows the proper information. |
| 773 | (dired-sort-set-modeline) | 783 | (dired-sort-set-modeline)))) |
| 774 | ;; Delete this stuff: `eobp' is used to find last subdir by dired.el. | 784 | |
| 775 | (delete-region opoint (point-max))))) | 785 | (make-obsolete 'dired-hack-local-variables |
| 786 | 'hack-dir-local-variables-non-file-buffer "24.1") | ||
| 776 | 787 | ||
| 788 | ;; Not sure this is worth having a dedicated command for... | ||
| 777 | (defun dired-omit-here-always () | 789 | (defun dired-omit-here-always () |
| 778 | "Create `dired-local-variables-file' for omitting and reverts directory. | 790 | "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'. |
| 779 | Sets `dired-omit-mode' to t in a local variables file that is readable by | 791 | If in a Dired buffer, reverts it." |
| 780 | dired." | ||
| 781 | (interactive) | 792 | (interactive) |
| 782 | (if (file-exists-p dired-local-variables-file) | 793 | (if (file-exists-p dired-local-variables-file) |
| 783 | (message "File `./%s' already exists." dired-local-variables-file) | 794 | (error "Old-style dired-local-variables-file `./%s' found; |
| 784 | ;; Create `dired-local-variables-file'. | 795 | replace it with a dir-locals-file `./%s'" |
| 785 | (with-current-buffer (get-buffer-create " *dot-dired*") | 796 | dired-local-variables-file |
| 786 | (erase-buffer) | 797 | dir-locals-file)) |
| 787 | (insert "Local Variables:\ndired-omit-mode: t\nEnd:\n") | 798 | (if (file-exists-p dir-locals-file) |
| 788 | (write-file dired-local-variables-file) | 799 | (message "File `./%s' already exists." dir-locals-file) |
| 789 | (kill-buffer)) | 800 | (with-temp-buffer |
| 801 | (insert "((dired-mode . ((dired-omit-mode . t))))\n") | ||
| 802 | (write-file dir-locals-file)) | ||
| 790 | ;; Run extra-hooks and revert directory. | 803 | ;; Run extra-hooks and revert directory. |
| 791 | (dired-extra-startup) | 804 | (when (derived-mode-p 'dired-mode) |
| 792 | (dired-revert))) | 805 | (hack-dir-local-variables-non-file-buffer) |
| 806 | (dired-extra-startup) | ||
| 807 | (dired-revert)))) | ||
| 793 | 808 | ||
| 794 | 809 | ||
| 795 | ;;; GUESS SHELL COMMAND. | 810 | ;;; GUESS SHELL COMMAND. |
diff --git a/lisp/dired.el b/lisp/dired.el index 910d59f2cce..3f31ba58139 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -1860,6 +1860,7 @@ Keybindings: | |||
| 1860 | (set (make-local-variable 'desktop-save-buffer) | 1860 | (set (make-local-variable 'desktop-save-buffer) |
| 1861 | 'dired-desktop-buffer-misc-data) | 1861 | 'dired-desktop-buffer-misc-data) |
| 1862 | (setq dired-switches-alist nil) | 1862 | (setq dired-switches-alist nil) |
| 1863 | (hack-dir-local-variables-non-file-buffer) ; before sorting | ||
| 1863 | (dired-sort-other dired-actual-switches t) | 1864 | (dired-sort-other dired-actual-switches t) |
| 1864 | (when (featurep 'dnd) | 1865 | (when (featurep 'dnd) |
| 1865 | (set (make-local-variable 'dnd-protocol-alist) | 1866 | (set (make-local-variable 'dnd-protocol-alist) |
| @@ -4072,7 +4073,7 @@ true then the type of the file linked to by FILE is printed instead. | |||
| 4072 | ;;;*** | 4073 | ;;;*** |
| 4073 | 4074 | ||
| 4074 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" | 4075 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" |
| 4075 | ;;;;;; "86d436093caa9ae80f7b73915c6a4b4c") | 4076 | ;;;;;; "515e1dbc42acebd9a0175c4209b6673c") |
| 4076 | ;;; Generated autoloads from dired-x.el | 4077 | ;;; Generated autoloads from dired-x.el |
| 4077 | 4078 | ||
| 4078 | (autoload 'dired-jump "dired-x" "\ | 4079 | (autoload 'dired-jump "dired-x" "\ |
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 7b610d11b0f..d6e7ee9e3cb 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el | |||
| @@ -537,7 +537,8 @@ Return non-nil if and only if FILE adds no autoloads to OUTFILE | |||
| 537 | (defun autoload-save-buffers () | 537 | (defun autoload-save-buffers () |
| 538 | (while autoload-modified-buffers | 538 | (while autoload-modified-buffers |
| 539 | (with-current-buffer (pop autoload-modified-buffers) | 539 | (with-current-buffer (pop autoload-modified-buffers) |
| 540 | (save-buffer)))) | 540 | (let ((version-control 'never)) |
| 541 | (save-buffer))))) | ||
| 541 | 542 | ||
| 542 | ;;;###autoload | 543 | ;;;###autoload |
| 543 | (defun update-file-autoloads (file &optional save-after) | 544 | (defun update-file-autoloads (file &optional save-after) |
| @@ -569,8 +570,9 @@ removes any prior now out-of-date autoload entries." | |||
| 569 | (with-current-buffer | 570 | (with-current-buffer |
| 570 | ;; We used to use `raw-text' to read this file, but this causes | 571 | ;; We used to use `raw-text' to read this file, but this causes |
| 571 | ;; problems when the file contains non-ASCII characters. | 572 | ;; problems when the file contains non-ASCII characters. |
| 572 | (find-file-noselect | 573 | (let ((enable-local-variables :safe)) |
| 573 | (autoload-ensure-default-file (autoload-generated-file))) | 574 | (find-file-noselect |
| 575 | (autoload-ensure-default-file (autoload-generated-file)))) | ||
| 574 | ;; This is to make generated-autoload-file have Unix EOLs, so | 576 | ;; This is to make generated-autoload-file have Unix EOLs, so |
| 575 | ;; that it is portable to all platforms. | 577 | ;; that it is portable to all platforms. |
| 576 | (or (eq 0 (coding-system-eol-type buffer-file-coding-system)) | 578 | (or (eq 0 (coding-system-eol-type buffer-file-coding-system)) |
| @@ -656,8 +658,9 @@ directory or directories specified." | |||
| 656 | (autoload-modified-buffers nil)) | 658 | (autoload-modified-buffers nil)) |
| 657 | 659 | ||
| 658 | (with-current-buffer | 660 | (with-current-buffer |
| 659 | (find-file-noselect | 661 | (let ((enable-local-variables :safe)) |
| 660 | (autoload-ensure-default-file (autoload-generated-file))) | 662 | (find-file-noselect |
| 663 | (autoload-ensure-default-file (autoload-generated-file)))) | ||
| 661 | (save-excursion | 664 | (save-excursion |
| 662 | 665 | ||
| 663 | ;; Canonicalize file names and remove the autoload file itself. | 666 | ;; Canonicalize file names and remove the autoload file itself. |
| @@ -721,7 +724,8 @@ directory or directories specified." | |||
| 721 | (current-buffer) nil nil no-autoloads this-time) | 724 | (current-buffer) nil nil no-autoloads this-time) |
| 722 | (insert generate-autoload-section-trailer)) | 725 | (insert generate-autoload-section-trailer)) |
| 723 | 726 | ||
| 724 | (save-buffer) | 727 | (let ((version-control 'never)) |
| 728 | (save-buffer)) | ||
| 725 | ;; In case autoload entries were added to other files because of | 729 | ;; In case autoload entries were added to other files because of |
| 726 | ;; file-local autoload-generated-file settings. | 730 | ;; file-local autoload-generated-file settings. |
| 727 | (autoload-save-buffers)))) | 731 | (autoload-save-buffers)))) |
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 199927d536e..2f113dfb479 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el | |||
| @@ -227,6 +227,7 @@ the functions you loaded will not be able to run.") | |||
| 227 | 227 | ||
| 228 | (defvar byte-compile-disable-print-circle nil | 228 | (defvar byte-compile-disable-print-circle nil |
| 229 | "If non-nil, disable `print-circle' on printing a byte-compiled code.") | 229 | "If non-nil, disable `print-circle' on printing a byte-compiled code.") |
| 230 | (make-obsolete-variable 'byte-compile-disable-print-circle nil "24.1") | ||
| 230 | ;;;###autoload(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) | 231 | ;;;###autoload(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) |
| 231 | 232 | ||
| 232 | (defcustom byte-compile-dynamic-docstrings t | 233 | (defcustom byte-compile-dynamic-docstrings t |
diff --git a/lisp/files-x.el b/lisp/files-x.el index a3cb5331e67..a9c32477155 100644 --- a/lisp/files-x.el +++ b/lisp/files-x.el | |||
| @@ -360,18 +360,28 @@ from the MODE alist ignoring the input argument VALUE." | |||
| 360 | (catch 'exit | 360 | (catch 'exit |
| 361 | (unless enable-local-variables | 361 | (unless enable-local-variables |
| 362 | (throw 'exit (message "Directory-local variables are disabled"))) | 362 | (throw 'exit (message "Directory-local variables are disabled"))) |
| 363 | |||
| 364 | (let ((variables-file (or (and (buffer-file-name) | 363 | (let ((variables-file (or (and (buffer-file-name) |
| 365 | (not (file-remote-p (buffer-file-name))) | 364 | (not (file-remote-p (buffer-file-name))) |
| 366 | (dir-locals-find-file (buffer-file-name))) | 365 | (dir-locals-find-file (buffer-file-name))) |
| 367 | dir-locals-file)) | 366 | dir-locals-file)) |
| 368 | variables) | 367 | variables) |
| 369 | 368 | (if (consp variables-file) ; result from cache | |
| 369 | ;; If cache element has an mtime, assume it came from a file. | ||
| 370 | ;; Otherwise, assume it was set directly. | ||
| 371 | (setq variables-file (if (nth 2 variables-file) | ||
| 372 | (expand-file-name dir-locals-file | ||
| 373 | (car variables-file)) | ||
| 374 | (cadr variables-file)))) | ||
| 375 | ;; I can't be bothered to handle this case right now. | ||
| 376 | ;; Dir locals were set directly from a class. You need to | ||
| 377 | ;; directly modify the class in dir-locals-class-alist. | ||
| 378 | (and variables-file (not (stringp variables-file)) | ||
| 379 | (throw 'exit (message "Directory locals were not set from a file"))) | ||
| 370 | ;; Don't create ".dir-locals.el" for the deletion operation. | 380 | ;; Don't create ".dir-locals.el" for the deletion operation. |
| 371 | (when (and (eq op 'delete) | 381 | (and (eq op 'delete) |
| 372 | (not (file-exists-p variables-file))) | 382 | (or (not variables-file) |
| 373 | (throw 'exit (message "File .dir-locals.el not found"))) | 383 | (not (file-exists-p variables-file))) |
| 374 | 384 | (throw 'exit (message "No .dir-locals.el file was found"))) | |
| 375 | (let ((auto-insert nil)) | 385 | (let ((auto-insert nil)) |
| 376 | (find-file variables-file)) | 386 | (find-file variables-file)) |
| 377 | (widen) | 387 | (widen) |
diff --git a/lisp/files.el b/lisp/files.el index 014469ed8fc..5890bf9b8c9 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -2806,7 +2806,9 @@ symbol and VAL is a value that is considered safe." | |||
| 2806 | :type 'alist) | 2806 | :type 'alist) |
| 2807 | 2807 | ||
| 2808 | (defcustom safe-local-eval-forms | 2808 | (defcustom safe-local-eval-forms |
| 2809 | '((add-hook 'write-file-functions 'time-stamp) | 2809 | ;; This should be here at least as long as Emacs supports write-file-hooks. |
| 2810 | '((add-hook 'write-file-hooks 'time-stamp) | ||
| 2811 | (add-hook 'write-file-functions 'time-stamp) | ||
| 2810 | (add-hook 'before-save-hook 'time-stamp)) | 2812 | (add-hook 'before-save-hook 'time-stamp)) |
| 2811 | "Expressions that are considered safe in an `eval:' local variable. | 2813 | "Expressions that are considered safe in an `eval:' local variable. |
| 2812 | Add expressions to this list if you want Emacs to evaluate them, when | 2814 | Add expressions to this list if you want Emacs to evaluate them, when |
| @@ -2814,7 +2816,7 @@ they appear in an `eval' local variable specification, without first | |||
| 2814 | asking you for confirmation." | 2816 | asking you for confirmation." |
| 2815 | :risky t | 2817 | :risky t |
| 2816 | :group 'find-file | 2818 | :group 'find-file |
| 2817 | :version "22.2" | 2819 | :version "24.1" ; added write-file-hooks |
| 2818 | :type '(repeat sexp)) | 2820 | :type '(repeat sexp)) |
| 2819 | 2821 | ||
| 2820 | ;; Risky local variables: | 2822 | ;; Risky local variables: |
| @@ -2917,8 +2919,8 @@ variable to set.") | |||
| 2917 | ALL-VARS is the list of all variables to be set up. | 2919 | ALL-VARS is the list of all variables to be set up. |
| 2918 | UNSAFE-VARS is the list of those that aren't marked as safe or risky. | 2920 | UNSAFE-VARS is the list of those that aren't marked as safe or risky. |
| 2919 | RISKY-VARS is the list of those that are marked as risky. | 2921 | RISKY-VARS is the list of those that are marked as risky. |
| 2920 | DIR-NAME is a directory name if these settings come from | 2922 | If these settings come from directory-local variables, then |
| 2921 | directory-local variables, or nil otherwise." | 2923 | DIR-NAME is the name of the associated directory. Otherwise it is nil." |
| 2922 | (if noninteractive | 2924 | (if noninteractive |
| 2923 | nil | 2925 | nil |
| 2924 | (save-window-excursion | 2926 | (save-window-excursion |
| @@ -3060,8 +3062,8 @@ VARIABLES is the alist of variable-value settings. This alist is | |||
| 3060 | `enable-local-eval', `enable-local-variables', and (if necessary) | 3062 | `enable-local-eval', `enable-local-variables', and (if necessary) |
| 3061 | user interaction. The results are added to | 3063 | user interaction. The results are added to |
| 3062 | `file-local-variables-alist', without applying them. | 3064 | `file-local-variables-alist', without applying them. |
| 3063 | DIR-NAME is a directory name if these settings come from | 3065 | If these settings come from directory-local variables, then |
| 3064 | directory-local variables, or nil otherwise." | 3066 | DIR-NAME is the name of the associated directory. Otherwise it is nil." |
| 3065 | ;; Find those variables that we may want to save to | 3067 | ;; Find those variables that we may want to save to |
| 3066 | ;; `safe-local-variable-values'. | 3068 | ;; `safe-local-variable-values'. |
| 3067 | (let (all-vars risky-vars unsafe-vars) | 3069 | (let (all-vars risky-vars unsafe-vars) |
| @@ -3345,11 +3347,11 @@ Each element in this list has the form (DIR CLASS MTIME). | |||
| 3345 | DIR is the name of the directory. | 3347 | DIR is the name of the directory. |
| 3346 | CLASS is the name of a variable class (a symbol). | 3348 | CLASS is the name of a variable class (a symbol). |
| 3347 | MTIME is the recorded modification time of the directory-local | 3349 | MTIME is the recorded modification time of the directory-local |
| 3348 | variables file associated with this entry. This time is a list | 3350 | variables file associated with this entry. This time is a list |
| 3349 | of two integers (the same format as `file-attributes'), and is | 3351 | of two integers (the same format as `file-attributes'), and is |
| 3350 | used to test whether the cache entry is still valid. | 3352 | used to test whether the cache entry is still valid. |
| 3351 | Alternatively, MTIME can be nil, which means the entry is always | 3353 | Alternatively, MTIME can be nil, which means the entry is always |
| 3352 | considered valid.") | 3354 | considered valid.") |
| 3353 | 3355 | ||
| 3354 | (defsubst dir-locals-get-class-variables (class) | 3356 | (defsubst dir-locals-get-class-variables (class) |
| 3355 | "Return the variable list for CLASS." | 3357 | "Return the variable list for CLASS." |
| @@ -3458,13 +3460,20 @@ across different environments and users.") | |||
| 3458 | (defun dir-locals-find-file (file) | 3460 | (defun dir-locals-find-file (file) |
| 3459 | "Find the directory-local variables for FILE. | 3461 | "Find the directory-local variables for FILE. |
| 3460 | This searches upward in the directory tree from FILE. | 3462 | This searches upward in the directory tree from FILE. |
| 3461 | If the directory root of FILE has been registered in | 3463 | It stops at the first directory that has been registered in |
| 3462 | `dir-locals-directory-cache' and the directory-local variables | 3464 | `dir-locals-directory-cache' or contains a `dir-locals-file'. |
| 3463 | file has not been modified, return the matching entry in | 3465 | If it finds an entry in the cache, it checks that it is valid. |
| 3464 | `dir-locals-directory-cache'. | 3466 | A cache entry with no modification time element (normally, one that |
| 3465 | Otherwise, if a directory-local variables file is found, return | 3467 | has been assigned directly using `dir-locals-set-directory-class', not |
| 3466 | the file name. | 3468 | set from a file) is always valid. |
| 3467 | Otherwise, return nil." | 3469 | A cache entry based on a `dir-locals-file' is valid if the modification |
| 3470 | time stored in the cache matches the current file modification time. | ||
| 3471 | If not, the cache entry is cleared so that the file will be re-read. | ||
| 3472 | |||
| 3473 | This function returns either nil (no directory local variables found), | ||
| 3474 | or the matching entry from `dir-locals-directory-cache' (a list), | ||
| 3475 | or the full path to the `dir-locals-file' (a string) in the case | ||
| 3476 | of no valid cache entry." | ||
| 3468 | (setq file (expand-file-name file)) | 3477 | (setq file (expand-file-name file)) |
| 3469 | (let* ((dir-locals-file-name | 3478 | (let* ((dir-locals-file-name |
| 3470 | (if (eq system-type 'ms-dos) | 3479 | (if (eq system-type 'ms-dos) |
| @@ -3473,8 +3482,8 @@ Otherwise, return nil." | |||
| 3473 | (locals-file (locate-dominating-file file dir-locals-file-name)) | 3482 | (locals-file (locate-dominating-file file dir-locals-file-name)) |
| 3474 | (dir-elt nil)) | 3483 | (dir-elt nil)) |
| 3475 | ;; `locate-dominating-file' may have abbreviated the name. | 3484 | ;; `locate-dominating-file' may have abbreviated the name. |
| 3476 | (when locals-file | 3485 | (if locals-file |
| 3477 | (setq locals-file (expand-file-name dir-locals-file-name locals-file))) | 3486 | (setq locals-file (expand-file-name dir-locals-file-name locals-file))) |
| 3478 | ;; Find the best cached value in `dir-locals-directory-cache'. | 3487 | ;; Find the best cached value in `dir-locals-directory-cache'. |
| 3479 | (dolist (elt dir-locals-directory-cache) | 3488 | (dolist (elt dir-locals-directory-cache) |
| 3480 | (when (and (eq t (compare-strings file nil (length (car elt)) | 3489 | (when (and (eq t (compare-strings file nil (length (car elt)) |
| @@ -3483,23 +3492,32 @@ Otherwise, return nil." | |||
| 3483 | '(windows-nt cygwin ms-dos)))) | 3492 | '(windows-nt cygwin ms-dos)))) |
| 3484 | (> (length (car elt)) (length (car dir-elt)))) | 3493 | (> (length (car elt)) (length (car dir-elt)))) |
| 3485 | (setq dir-elt elt))) | 3494 | (setq dir-elt elt))) |
| 3486 | (let ((use-cache (and dir-elt | 3495 | (if (and dir-elt |
| 3487 | (or (null locals-file) | 3496 | (or (null locals-file) |
| 3488 | (<= (length (file-name-directory locals-file)) | 3497 | (<= (length (file-name-directory locals-file)) |
| 3489 | (length (car dir-elt))))))) | 3498 | (length (car dir-elt))))) |
| 3490 | (if use-cache | 3499 | ;; Found a potential cache entry. Check validity. |
| 3491 | ;; Check the validity of the cache. | 3500 | ;; A cache entry with no MTIME is assumed to always be valid |
| 3492 | (if (and (file-readable-p (car dir-elt)) | 3501 | ;; (ie, set directly, not from a dir-locals file). |
| 3493 | (or (null (nth 2 dir-elt)) | 3502 | ;; Note, we don't bother to check that there is a matching class |
| 3503 | ;; element in dir-locals-class-alist, since that's done by | ||
| 3504 | ;; dir-locals-set-directory-class. | ||
| 3505 | (if (or (null (nth 2 dir-elt)) | ||
| 3506 | (let ((cached-file (expand-file-name dir-locals-file-name | ||
| 3507 | (car dir-elt)))) | ||
| 3508 | (and (file-readable-p cached-file) | ||
| 3494 | (equal (nth 2 dir-elt) | 3509 | (equal (nth 2 dir-elt) |
| 3495 | (nth 5 (file-attributes (car dir-elt)))))) | 3510 | (nth 5 (file-attributes cached-file)))))) |
| 3496 | ;; This cache entry is OK. | 3511 | ;; This cache entry is OK. |
| 3497 | dir-elt | 3512 | dir-elt |
| 3498 | ;; This cache entry is invalid; clear it. | 3513 | ;; This cache entry is invalid; clear it. |
| 3499 | (setq dir-locals-directory-cache | 3514 | (setq dir-locals-directory-cache |
| 3500 | (delq dir-elt dir-locals-directory-cache)) | 3515 | (delq dir-elt dir-locals-directory-cache)) |
| 3501 | locals-file) | 3516 | ;; Return the first existing dir-locals file. Might be the same |
| 3502 | locals-file)))) | 3517 | ;; as dir-elt's, might not (eg latter might have been deleted). |
| 3518 | locals-file) | ||
| 3519 | ;; No cache entry. | ||
| 3520 | locals-file))) | ||
| 3503 | 3521 | ||
| 3504 | (defun dir-locals-read-from-file (file) | 3522 | (defun dir-locals-read-from-file (file) |
| 3505 | "Load a variables FILE and register a new class and instance. | 3523 | "Load a variables FILE and register a new class and instance. |
| @@ -3529,10 +3547,8 @@ and `file-local-variables-alist', without applying them." | |||
| 3529 | (dir-name nil)) | 3547 | (dir-name nil)) |
| 3530 | (cond | 3548 | (cond |
| 3531 | ((stringp variables-file) | 3549 | ((stringp variables-file) |
| 3532 | (setq dir-name (if (buffer-file-name) | 3550 | (setq dir-name (file-name-directory variables-file) |
| 3533 | (file-name-directory (buffer-file-name)) | 3551 | class (dir-locals-read-from-file variables-file))) |
| 3534 | default-directory)) | ||
| 3535 | (setq class (dir-locals-read-from-file variables-file))) | ||
| 3536 | ((consp variables-file) | 3552 | ((consp variables-file) |
| 3537 | (setq dir-name (nth 0 variables-file)) | 3553 | (setq dir-name (nth 0 variables-file)) |
| 3538 | (setq class (nth 1 variables-file)))) | 3554 | (setq class (nth 1 variables-file)))) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 3695b94b510..9dd315782ff 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,7 +1,77 @@ | |||
| 1 | 2011-02-24 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 2 | |||
| 3 | * auth-source.el (auth-source-netrc-create): Use `read-char' with no | ||
| 4 | argument that XEmacs doesn't support. | ||
| 5 | |||
| 6 | 2011-02-23 Julien Danjou <julien@danjou.info> | ||
| 7 | |||
| 8 | * gnus-art.el (article-make-date-line): Ignore errors if time is | ||
| 9 | invalid and not convertible. | ||
| 10 | (article-make-date-line): Only add lapsed time if time is not nil. | ||
| 11 | |||
| 12 | 2011-02-23 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 13 | |||
| 14 | * auth-source.el (auth-source-netrc-create): Use `read-char' instead of | ||
| 15 | `read-char-choice' for backwards compatibility. | ||
| 16 | (auth-source-netrc-element-or-first): New function to DTRT for | ||
| 17 | parameter extraction. | ||
| 18 | (auth-source-netrc-create): Use it and fix multiple parameter print | ||
| 19 | bug. Use the default passed from above (given-default) or the | ||
| 20 | built-in (user-login-name for :user). | ||
| 21 | |||
| 22 | 2011-02-23 Lars Ingebrigtsen <larsi@gnus.org> | ||
| 23 | |||
| 24 | * gnus-start.el (gnus-dribble-read-file): Set | ||
| 25 | buffer-save-without-query, since we always want to save the dribble | ||
| 26 | file, probably. | ||
| 27 | |||
| 28 | * nnmail.el (nnmail-article-group): Allow a final "" split to work on | ||
| 29 | nnimap. | ||
| 30 | |||
| 31 | * gnus-sum.el (gnus-user-date-format-alist): Renamed back again from | ||
| 32 | -summary- since it's a user-visible variable. | ||
| 33 | |||
| 34 | * nnimap.el (nnimap-retrieve-group-data-early): Don't do QRESYNC the | ||
| 35 | first time you use the new Gnus. | ||
| 36 | |||
| 37 | 2011-02-22 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 38 | |||
| 39 | * auth-source.el: Don't load netrc.el. | ||
| 40 | (auth-sources): Search ~/.netrc as well by default. | ||
| 41 | (auth-source-debug): Add 'trivia option for extra output. | ||
| 42 | (auth-source-do-trivia): Use it. | ||
| 43 | (auth-source-search): Simplify logic to use | ||
| 44 | `auth-source-search-backends'. Use `auth-source-do-trivia' where | ||
| 45 | appropriate. Don't keep a running count at this level. Layer :create | ||
| 46 | and :delete options appropriately on the first and second passes. | ||
| 47 | Don't track the backend with the search results. | ||
| 48 | (auth-source-search-backends): New function to search a list of | ||
| 49 | backends for a processed spec. | ||
| 50 | (auth-source-netrc-parse): Cache all netrc files, making | ||
| 51 | auth-source-netrc-cache an alist keyed by the file name and using the | ||
| 52 | file mtime as the caching criterion. Keep the obfuscated data secret | ||
| 53 | with a lexical bind. | ||
| 54 | (auth-source-netrc-search): Don't calculate the length of the results | ||
| 55 | unnecessarily. | ||
| 56 | (auth-source-search-backends): Fix bug. | ||
| 57 | (auth-source-netrc-create): Rework prompts. | ||
| 58 | |||
| 59 | 2011-02-22 Andrew Cohen <cohen@andy.bu.edu> | ||
| 60 | |||
| 61 | * nnir.el (nnir-imap-search-arguments,nnir-imap-default-search-key): | ||
| 62 | Lower case names of search constraints. | ||
| 63 | (nnir-run-query): Cache and reuse search constraints for all imap | ||
| 64 | servers. | ||
| 65 | |||
| 66 | 2011-02-22 Sam Steingold <sds@gnu.org> | ||
| 67 | |||
| 68 | * gnus-msg.el (gnus-setup-message): Also bind `winconf-name'. | ||
| 69 | |||
| 1 | 2011-02-22 Lars Ingebrigtsen <larsi@gnus.org> | 70 | 2011-02-22 Lars Ingebrigtsen <larsi@gnus.org> |
| 2 | 71 | ||
| 3 | * gnus-msg.el (gnus-inews-add-send-actions): Restore the winconf name | 72 | * gnus-msg.el (gnus-inews-add-send-actions): Restore the winconf name |
| 4 | after exit. | 73 | after exit. |
| 74 | (gnus-setup-message): Define missing variable from last checkin. | ||
| 5 | 75 | ||
| 6 | * gnus-sum.el (gnus-summary-show-article): When called with t as the | 76 | * gnus-sum.el (gnus-summary-show-article): When called with t as the |
| 7 | value, show the raw article. | 77 | value, show the raw article. |
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index 57fecc7ae32..63ec93dd760 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el | |||
| @@ -42,7 +42,6 @@ | |||
| 42 | (require 'password-cache) | 42 | (require 'password-cache) |
| 43 | (require 'mm-util) | 43 | (require 'mm-util) |
| 44 | (require 'gnus-util) | 44 | (require 'gnus-util) |
| 45 | (require 'netrc) | ||
| 46 | (require 'assoc) | 45 | (require 'assoc) |
| 47 | (eval-when-compile (require 'cl)) | 46 | (eval-when-compile (require 'cl)) |
| 48 | (require 'eieio) | 47 | (require 'eieio) |
| @@ -164,16 +163,19 @@ If the value is a function, debug messages are logged by calling | |||
| 164 | :type `(choice | 163 | :type `(choice |
| 165 | :tag "auth-source debugging mode" | 164 | :tag "auth-source debugging mode" |
| 166 | (const :tag "Log using `message' to the *Messages* buffer" t) | 165 | (const :tag "Log using `message' to the *Messages* buffer" t) |
| 166 | (const :tag "Log all trivia with `message' to the *Messages* buffer" | ||
| 167 | trivia) | ||
| 167 | (function :tag "Function that takes arguments like `message'") | 168 | (function :tag "Function that takes arguments like `message'") |
| 168 | (const :tag "Don't log anything" nil))) | 169 | (const :tag "Don't log anything" nil))) |
| 169 | 170 | ||
| 170 | (defcustom auth-sources '("~/.authinfo.gpg" "~/.authinfo") | 171 | (defcustom auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc") |
| 171 | "List of authentication sources. | 172 | "List of authentication sources. |
| 172 | 173 | ||
| 173 | The default will get login and password information from | 174 | The default will get login and password information from |
| 174 | \"~/.authinfo.gpg\", which you should set up with the EPA/EPG | 175 | \"~/.authinfo.gpg\", which you should set up with the EPA/EPG |
| 175 | packages to be encrypted. If that file doesn't exist, it will | 176 | packages to be encrypted. If that file doesn't exist, it will |
| 176 | try the unencrypted version \"~/.authinfo\". | 177 | try the unencrypted version \"~/.authinfo\" and the famous |
| 178 | \"~/.netrc\" file. | ||
| 177 | 179 | ||
| 178 | See the auth.info manual for details. | 180 | See the auth.info manual for details. |
| 179 | 181 | ||
| @@ -256,6 +258,11 @@ If the value is not a list, symmetric encryption will be used." | |||
| 256 | (when auth-source-debug | 258 | (when auth-source-debug |
| 257 | (apply 'auth-source-do-warn msg))) | 259 | (apply 'auth-source-do-warn msg))) |
| 258 | 260 | ||
| 261 | (defun auth-source-do-trivia (&rest msg) | ||
| 262 | (when (or (eq auth-source-debug 'trivia) | ||
| 263 | (functionp auth-source-debug)) | ||
| 264 | (apply 'auth-source-do-warn msg))) | ||
| 265 | |||
| 259 | (defun auth-source-do-warn (&rest msg) | 266 | (defun auth-source-do-warn (&rest msg) |
| 260 | (apply | 267 | (apply |
| 261 | ;; set logger to either the function in auth-source-debug or 'message | 268 | ;; set logger to either the function in auth-source-debug or 'message |
| @@ -500,7 +507,7 @@ must call it to obtain the actual value." | |||
| 500 | unless (memq (nth i spec) ignored-keys) | 507 | unless (memq (nth i spec) ignored-keys) |
| 501 | collect (nth i spec))) | 508 | collect (nth i spec))) |
| 502 | (found (auth-source-recall spec)) | 509 | (found (auth-source-recall spec)) |
| 503 | filtered-backends accessor-key found-here goal matches backend) | 510 | filtered-backends accessor-key backend) |
| 504 | 511 | ||
| 505 | (if (and found auth-source-do-cache) | 512 | (if (and found auth-source-do-cache) |
| 506 | (auth-source-do-debug | 513 | (auth-source-do-debug |
| @@ -509,7 +516,7 @@ must call it to obtain the actual value." | |||
| 509 | 516 | ||
| 510 | (assert | 517 | (assert |
| 511 | (or (eq t create) (listp create)) t | 518 | (or (eq t create) (listp create)) t |
| 512 | "Invalid auth-source :create parameter (must be nil, t, or a list): %s %s") | 519 | "Invalid auth-source :create parameter (must be t or a list): %s %s") |
| 513 | 520 | ||
| 514 | (setq filtered-backends (copy-sequence backends)) | 521 | (setq filtered-backends (copy-sequence backends)) |
| 515 | (dolist (backend backends) | 522 | (dolist (backend backends) |
| @@ -523,66 +530,64 @@ must call it to obtain the actual value." | |||
| 523 | (return)) | 530 | (return)) |
| 524 | (invalid-slot-name)))) | 531 | (invalid-slot-name)))) |
| 525 | 532 | ||
| 526 | (auth-source-do-debug | 533 | (auth-source-do-trivia |
| 527 | "auth-source-search: found %d backends matching %S" | 534 | "auth-source-search: found %d backends matching %S" |
| 528 | (length filtered-backends) spec) | 535 | (length filtered-backends) spec) |
| 529 | 536 | ||
| 530 | ;; (debug spec "filtered" filtered-backends) | 537 | ;; (debug spec "filtered" filtered-backends) |
| 531 | (setq goal max) | ||
| 532 | ;; First go through all the backends without :create, so we can | 538 | ;; First go through all the backends without :create, so we can |
| 533 | ;; query them all. | 539 | ;; query them all. |
| 534 | (let ((uspec (copy-sequence spec))) | 540 | (setq found (auth-source-search-backends filtered-backends |
| 535 | (plist-put uspec :create nil) | 541 | spec |
| 536 | (dolist (backend filtered-backends) | 542 | ;; to exit early |
| 537 | (let ((match (apply | 543 | max |
| 538 | (slot-value backend 'search-function) | 544 | ;; create and delete |
| 539 | :backend backend | 545 | nil delete)) |
| 540 | uspec))) | 546 | |
| 541 | (when match | 547 | (auth-source-do-debug |
| 542 | (push (list backend match) matches))))) | 548 | "auth-source-search: found %d results (max %d) matching %S" |
| 549 | (length found) max spec) | ||
| 550 | |||
| 543 | ;; If we didn't find anything, then we allow the backend(s) to | 551 | ;; If we didn't find anything, then we allow the backend(s) to |
| 544 | ;; create the entries. | 552 | ;; create the entries. |
| 545 | (when (and create | 553 | (when (and create |
| 546 | (not matches)) | 554 | (not found)) |
| 547 | (dolist (backend filtered-backends) | 555 | (setq found (auth-source-search-backends filtered-backends |
| 548 | (unless matches | 556 | spec |
| 549 | (let ((match (apply | 557 | ;; to exit early |
| 550 | (slot-value backend 'search-function) | 558 | max |
| 551 | :backend backend | 559 | ;; create and delete |
| 552 | :create create | 560 | create delete)) |
| 553 | :delete delete | 561 | (auth-source-do-warn |
| 554 | spec))) | 562 | "auth-source-search: CREATED %d results (max %d) matching %S" |
| 555 | (when match | 563 | (length found) max spec)) |
| 556 | (push (list backend match) matches)))))) | 564 | |
| 557 | 565 | (when (and found auth-source-do-cache) | |
| 558 | (setq backend (caar matches) | 566 | (auth-source-remember spec found))) |
| 559 | found-here (cadar matches)) | 567 | |
| 560 | 568 | found)) | |
| 561 | (block nil | 569 | |
| 562 | ;; if max is 0, as soon as we find something, return it | 570 | (defun auth-source-search-backends (backends spec max create delete) |
| 563 | (when (and (zerop max) (> 0 (length found-here))) | 571 | (let (matches) |
| 564 | (return t)) | 572 | (dolist (backend backends) |
| 565 | 573 | (when (> max (length matches)) ; when we need more matches... | |
| 566 | ;; decrement the goal by the number of new results | 574 | (let ((bmatches (apply |
| 567 | (decf goal (length found-here)) | 575 | (slot-value backend 'search-function) |
| 568 | ;; and append the new results to the full list | 576 | :backend backend |
| 569 | (setq found (append found found-here)) | 577 | ;; note we're overriding whatever the spec |
| 570 | 578 | ;; has for :create and :delete | |
| 571 | (auth-source-do-debug | 579 | :create create |
| 572 | "auth-source-search: found %d results (max %d/%d) in %S matching %S" | 580 | :delete delete |
| 573 | (length found-here) max goal backend spec) | 581 | spec))) |
| 574 | 582 | (when bmatches | |
| 575 | ;; return full list if the goal is 0 or negative | 583 | (auth-source-do-trivia |
| 576 | (when (zerop (max 0 goal)) | 584 | "auth-source-search-backend: got %d (max %d) in %s:%s matching %S" |
| 577 | (return found)) | 585 | (length bmatches) max |
| 578 | 586 | (slot-value backend :type) | |
| 579 | ;; change the :max parameter in the spec to the goal | 587 | (slot-value backend :source) |
| 580 | (setq spec (plist-put spec :max goal)) | 588 | spec) |
| 581 | 589 | (setq matches (append matches bmatches)))))) | |
| 582 | (when (and found auth-source-do-cache) | 590 | matches)) |
| 583 | (auth-source-remember spec found)))) | ||
| 584 | |||
| 585 | found)) | ||
| 586 | 591 | ||
| 587 | ;;; (auth-source-search :max 1) | 592 | ;;; (auth-source-search :max 1) |
| 588 | ;;; (funcall (plist-get (nth 0 (auth-source-search :max 1)) :secret)) | 593 | ;;; (funcall (plist-get (nth 0 (auth-source-search :max 1)) :secret)) |
| @@ -704,25 +709,35 @@ Note that the MAX parameter is used so we can exit the parse early." | |||
| 704 | (when (file-exists-p file) | 709 | (when (file-exists-p file) |
| 705 | (setq port (auth-source-ensure-strings port)) | 710 | (setq port (auth-source-ensure-strings port)) |
| 706 | (with-temp-buffer | 711 | (with-temp-buffer |
| 707 | (let ((tokens '("machine" "host" "default" "login" "user" | 712 | (let* ((tokens '("machine" "host" "default" "login" "user" |
| 708 | "password" "account" "macdef" "force" | 713 | "password" "account" "macdef" "force" |
| 709 | "port" "protocol")) | 714 | "port" "protocol")) |
| 710 | (max (or max 5000)) ; sanity check: default to stop at 5K | 715 | (max (or max 5000)) ; sanity check: default to stop at 5K |
| 711 | (modified 0) | 716 | (modified 0) |
| 712 | alist elem result pair) | 717 | (cached (cdr-safe (assoc file auth-source-netrc-cache))) |
| 713 | (if (and auth-source-netrc-cache | 718 | (cached-mtime (plist-get cached :mtime)) |
| 714 | (equal (car auth-source-netrc-cache) | 719 | (cached-secrets (plist-get cached :secret)) |
| 715 | (nth 5 (file-attributes file)))) | 720 | alist elem result pair) |
| 716 | (insert (base64-decode-string | 721 | |
| 717 | (rot13-string (cdr auth-source-netrc-cache)))) | 722 | (if (and (functionp cached-secrets) |
| 718 | (insert-file-contents file) | 723 | (equal cached-mtime |
| 719 | (when (string-match "\\.gpg\\'" file) | 724 | (nth 5 (file-attributes file)))) |
| 720 | ;; Store the contents of the file heavily encrypted in memory. | 725 | (progn |
| 721 | (setq auth-source-netrc-cache | 726 | (auth-source-do-trivia |
| 722 | (cons (nth 5 (file-attributes file)) | 727 | "auth-source-netrc-parse: using CACHED file data for %s" |
| 723 | (rot13-string | 728 | file) |
| 724 | (base64-encode-string | 729 | (insert (funcall cached-secrets))) |
| 725 | (buffer-string))))))) | 730 | (insert-file-contents file) |
| 731 | ;; cache all netrc files (used to be just .gpg files) | ||
| 732 | ;; Store the contents of the file heavily encrypted in memory. | ||
| 733 | ;; (note for the irony-impaired: they are just obfuscated) | ||
| 734 | (aput 'auth-source-netrc-cache file | ||
| 735 | (list :mtime (nth 5 (file-attributes file)) | ||
| 736 | :secret (lexical-let ((v (rot13-string | ||
| 737 | (base64-encode-string | ||
| 738 | (buffer-string))))) | ||
| 739 | (lambda () (base64-decode-string | ||
| 740 | (rot13-string v))))))) | ||
| 726 | (goto-char (point-min)) | 741 | (goto-char (point-min)) |
| 727 | ;; Go through the file, line by line. | 742 | ;; Go through the file, line by line. |
| 728 | (while (and (not (eobp)) | 743 | (while (and (not (eobp)) |
| @@ -868,7 +883,7 @@ See `auth-source-search' for details on SPEC." | |||
| 868 | 883 | ||
| 869 | ;; if we need to create an entry AND none were found to match | 884 | ;; if we need to create an entry AND none were found to match |
| 870 | (when (and create | 885 | (when (and create |
| 871 | (= 0 (length results))) | 886 | (not results)) |
| 872 | 887 | ||
| 873 | ;; create based on the spec and record the value | 888 | ;; create based on the spec and record the value |
| 874 | (setq results (or | 889 | (setq results (or |
| @@ -883,6 +898,11 @@ See `auth-source-search' for details on SPEC." | |||
| 883 | (plist-put spec :create nil))))) | 898 | (plist-put spec :create nil))))) |
| 884 | results)) | 899 | results)) |
| 885 | 900 | ||
| 901 | (defun auth-source-netrc-element-or-first (v) | ||
| 902 | (if (listp v) | ||
| 903 | (nth 0 v) | ||
| 904 | v)) | ||
| 905 | |||
| 886 | ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t) | 906 | ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t) |
| 887 | ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B))) | 907 | ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B))) |
| 888 | 908 | ||
| @@ -897,7 +917,6 @@ See `auth-source-search' for details on SPEC." | |||
| 897 | (required (append base-required create-extra)) | 917 | (required (append base-required create-extra)) |
| 898 | (file (oref backend source)) | 918 | (file (oref backend source)) |
| 899 | (add "") | 919 | (add "") |
| 900 | (show "") | ||
| 901 | ;; `valist' is an alist | 920 | ;; `valist' is an alist |
| 902 | valist | 921 | valist |
| 903 | ;; `artificial' will be returned if no creation is needed | 922 | ;; `artificial' will be returned if no creation is needed |
| @@ -928,63 +947,39 @@ See `auth-source-search' for details on SPEC." | |||
| 928 | ;; for each required element | 947 | ;; for each required element |
| 929 | (dolist (r required) | 948 | (dolist (r required) |
| 930 | (let* ((data (aget valist r)) | 949 | (let* ((data (aget valist r)) |
| 950 | ;; take the first element if the data is a list | ||
| 951 | (data (auth-source-netrc-element-or-first data)) | ||
| 952 | ;; this is the default to be offered | ||
| 931 | (given-default (aget auth-source-creation-defaults r)) | 953 | (given-default (aget auth-source-creation-defaults r)) |
| 932 | ;; the defaults are simple | 954 | ;; the default supplementals are simple: for the user, |
| 955 | ;; try (user-login-name), otherwise take given-default | ||
| 933 | (default (cond | 956 | (default (cond |
| 934 | ((and (not given-default) (eq r 'user)) | 957 | ((and (not given-default) (eq r 'user)) |
| 935 | (user-login-name)) | 958 | (user-login-name)) |
| 936 | ;; note we need this empty string | 959 | (t given-default)))) |
| 937 | ((and (not given-default) (eq r 'port)) | 960 | |
| 938 | "") | 961 | ;; store the data, prompting for the password if needed |
| 939 | (t given-default))) | 962 | (setq data |
| 940 | ;; the prompt's default string depends on the data so far | 963 | (cond |
| 941 | (default-string (if (and default (< 0 (length default))) | 964 | ((and (null data) (eq r 'secret)) |
| 942 | (format " (default %s)" default) | 965 | ;; special case prompt for passwords |
| 943 | " (no default)")) | 966 | (read-passwd (format "Password for %s@%s:%s: " |
| 944 | ;; the prompt should also show what's entered so far | 967 | (or |
| 945 | (user-value (aget valist 'user)) | 968 | (auth-source-netrc-element-or-first |
| 946 | (host-value (aget valist 'host)) | 969 | (aget valist 'user)) |
| 947 | (port-value (aget valist 'port)) | 970 | (plist-get artificial :user) |
| 948 | ;; note this handles lists by just printing them | 971 | "[any user]") |
| 949 | ;; later we allow the user to use completing-read to pick | 972 | (or |
| 950 | (info-so-far (concat (if user-value | 973 | (auth-source-netrc-element-or-first |
| 951 | (format "%s@" user-value) | 974 | (aget valist 'host)) |
| 952 | "[USER?]") | 975 | (plist-get artificial :host) |
| 953 | (if host-value | 976 | "[any host]") |
| 954 | (format "%s" host-value) | 977 | (or |
| 955 | "[HOST?]") | 978 | (auth-source-netrc-element-or-first |
| 956 | (if port-value | 979 | (aget valist 'port)) |
| 957 | ;; this distinguishes protocol between | 980 | (plist-get artificial :port) |
| 958 | (if (zerop (length port-value)) | 981 | "[any port]")))) |
| 959 | "" ; 'entered as "no default"' vs. | 982 | (t (or data default)))) |
| 960 | (format ":%s" port-value)) ; given | ||
| 961 | ;; and this is when the protocol is unknown | ||
| 962 | "[PORT?]")))) | ||
| 963 | |||
| 964 | ;; now prompt if the search SPEC did not include a required key; | ||
| 965 | ;; take the result and put it in `data' AND store it in `valist' | ||
| 966 | (aput 'valist r | ||
| 967 | (setq data | ||
| 968 | (cond | ||
| 969 | ((and (null data) (eq r 'secret)) | ||
| 970 | ;; special case prompt for passwords | ||
| 971 | (read-passwd (format "Password for %s: " info-so-far))) | ||
| 972 | ((null data) | ||
| 973 | (read-string | ||
| 974 | (format "Enter %s for %s%s: " | ||
| 975 | r info-so-far default-string) | ||
| 976 | nil nil default)) | ||
| 977 | ((listp data) | ||
| 978 | (completing-read | ||
| 979 | (format "Enter %s for %s (TAB to see the choices): " | ||
| 980 | r info-so-far) | ||
| 981 | data | ||
| 982 | nil ; no predicate | ||
| 983 | t ; require a match | ||
| 984 | ;; note the default is nil, but if the user | ||
| 985 | ;; hits RET we'll get "", which is handled OK later | ||
| 986 | nil)) | ||
| 987 | (t data)))) | ||
| 988 | 983 | ||
| 989 | (when data | 984 | (when data |
| 990 | (setq artificial (plist-put artificial | 985 | (setq artificial (plist-put artificial |
| @@ -997,7 +992,9 @@ See `auth-source-search' for details on SPEC." | |||
| 997 | ;; when r is not an empty string... | 992 | ;; when r is not an empty string... |
| 998 | (when (and (stringp data) | 993 | (when (and (stringp data) |
| 999 | (< 0 (length data))) | 994 | (< 0 (length data))) |
| 1000 | (let ((printer (lambda (hide) | 995 | ;; this function is not strictly necessary but I think it |
| 996 | ;; makes the code clearer -tzz | ||
| 997 | (let ((printer (lambda () | ||
| 1001 | ;; append the key (the symbol name of r) | 998 | ;; append the key (the symbol name of r) |
| 1002 | ;; and the value in r | 999 | ;; and the value in r |
| 1003 | (format "%s%s %S" | 1000 | (format "%s%s %S" |
| @@ -1005,17 +1002,14 @@ See `auth-source-search' for details on SPEC." | |||
| 1005 | (if (zerop (length add)) "" " ") | 1002 | (if (zerop (length add)) "" " ") |
| 1006 | ;; remap auth-source tokens to netrc | 1003 | ;; remap auth-source tokens to netrc |
| 1007 | (case r | 1004 | (case r |
| 1008 | ('user "login") | 1005 | ('user "login") |
| 1009 | ('host "machine") | 1006 | ('host "machine") |
| 1010 | ('secret "password") | 1007 | ('secret "password") |
| 1011 | ('port "port") ; redundant but clearer | 1008 | ('port "port") ; redundant but clearer |
| 1012 | (t (symbol-name r))) | 1009 | (t (symbol-name r))) |
| 1013 | ;; the value will be printed in %S format | 1010 | ;; the value will be printed in %S format |
| 1014 | (if (and hide (eq r 'secret)) | 1011 | data)))) |
| 1015 | "HIDDEN_SECRET" | 1012 | (setq add (concat add (funcall printer))))))) |
| 1016 | data))))) | ||
| 1017 | (setq add (concat add (funcall printer nil))) | ||
| 1018 | (setq show (concat show (funcall printer t))))))) | ||
| 1019 | 1013 | ||
| 1020 | (with-temp-buffer | 1014 | (with-temp-buffer |
| 1021 | (when (file-exists-p file) | 1015 | (when (file-exists-p file) |
| @@ -1032,17 +1026,35 @@ See `auth-source-search' for details on SPEC." | |||
| 1032 | (goto-char (point-max)) | 1026 | (goto-char (point-max)) |
| 1033 | 1027 | ||
| 1034 | ;; ask AFTER we've successfully opened the file | 1028 | ;; ask AFTER we've successfully opened the file |
| 1035 | (if (y-or-n-p (format "Add to file %s: line [%s]" file show)) | 1029 | (let ((prompt (format "Add to file %s? %s: " |
| 1030 | file | ||
| 1031 | "(y)es/(n)o but use it/(e)dit line/(s)kip file")) | ||
| 1032 | done k) | ||
| 1033 | (while (not done) | ||
| 1034 | (message "%s" prompt) | ||
| 1035 | (setq k (read-char)) | ||
| 1036 | (case k | ||
| 1037 | (?y (setq done t)) | ||
| 1038 | (?n (setq add "" | ||
| 1039 | done t)) | ||
| 1040 | (?s (setq add "" | ||
| 1041 | done 'skip)) | ||
| 1042 | (?e (setq add (read-string "Line to add: " add))) | ||
| 1043 | (t nil))) | ||
| 1044 | |||
| 1045 | (when (< 0 (length add)) | ||
| 1036 | (progn | 1046 | (progn |
| 1037 | (unless (bolp) | 1047 | (unless (bolp) |
| 1038 | (insert "\n")) | 1048 | (insert "\n")) |
| 1039 | (insert add "\n") | 1049 | (insert add "\n") |
| 1040 | (write-region (point-min) (point-max) file nil 'silent) | 1050 | (write-region (point-min) (point-max) file nil 'silent) |
| 1041 | (auth-source-do-debug | 1051 | (auth-source-do-warn |
| 1042 | "auth-source-netrc-create: wrote 1 new line to %s" | 1052 | "auth-source-netrc-create: wrote 1 new line to %s" |
| 1043 | file) | 1053 | file) |
| 1044 | nil) | 1054 | nil)) |
| 1045 | (list artificial))))) | 1055 | |
| 1056 | (when (eq done t) | ||
| 1057 | (list artificial)))))) | ||
| 1046 | 1058 | ||
| 1047 | ;;; Backend specific parsing: Secrets API backend | 1059 | ;;; Backend specific parsing: Secrets API backend |
| 1048 | 1060 | ||
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 2a36c43130c..5b3489a72ee 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -3463,7 +3463,7 @@ possible values." | |||
| 3463 | combined-lapsed)) | 3463 | combined-lapsed)) |
| 3464 | (error "Unknown conversion type: %s" type)) | 3464 | (error "Unknown conversion type: %s" type)) |
| 3465 | (condition-case () | 3465 | (condition-case () |
| 3466 | (let ((time (date-to-time date))) | 3466 | (let ((time (ignore-errors (date-to-time date)))) |
| 3467 | (cond | 3467 | (cond |
| 3468 | ;; Convert to the local timezone. | 3468 | ;; Convert to the local timezone. |
| 3469 | ((eq type 'local) | 3469 | ((eq type 'local) |
| @@ -3515,6 +3515,7 @@ possible values." | |||
| 3515 | (segments 3) | 3515 | (segments 3) |
| 3516 | lapsed-string) | 3516 | lapsed-string) |
| 3517 | (while (and | 3517 | (while (and |
| 3518 | time | ||
| 3518 | (setq lapsed-string | 3519 | (setq lapsed-string |
| 3519 | (concat " (" (article-lapsed-string time segments) ")")) | 3520 | (concat " (" (article-lapsed-string time segments) ")")) |
| 3520 | (> (+ (length date-string) | 3521 | (> (+ (length date-string) |
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el index 29ac43115c8..093eec33fcd 100644 --- a/lisp/gnus/gnus-msg.el +++ b/lisp/gnus/gnus-msg.el | |||
| @@ -383,6 +383,7 @@ Thank you for your help in stamping out bugs. | |||
| 383 | (defvar gnus-article-reply nil) | 383 | (defvar gnus-article-reply nil) |
| 384 | (defmacro gnus-setup-message (config &rest forms) | 384 | (defmacro gnus-setup-message (config &rest forms) |
| 385 | (let ((winconf (make-symbol "gnus-setup-message-winconf")) | 385 | (let ((winconf (make-symbol "gnus-setup-message-winconf")) |
| 386 | (winconf-name (make-symbol "gnus-setup-message-winconf-name")) | ||
| 386 | (buffer (make-symbol "gnus-setup-message-buffer")) | 387 | (buffer (make-symbol "gnus-setup-message-buffer")) |
| 387 | (article (make-symbol "gnus-setup-message-article")) | 388 | (article (make-symbol "gnus-setup-message-article")) |
| 388 | (yanked (make-symbol "gnus-setup-yanked-articles")) | 389 | (yanked (make-symbol "gnus-setup-yanked-articles")) |
| @@ -433,7 +434,7 @@ Thank you for your help in stamping out bugs. | |||
| 433 | (progn | 434 | (progn |
| 434 | ,@forms) | 435 | ,@forms) |
| 435 | (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config | 436 | (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config |
| 436 | ,yanked ,winconf-name) | 437 | ,yanked ',winconf-name) |
| 437 | (setq gnus-message-buffer (current-buffer)) | 438 | (setq gnus-message-buffer (current-buffer)) |
| 438 | (set (make-local-variable 'gnus-message-group-art) | 439 | (set (make-local-variable 'gnus-message-group-art) |
| 439 | (cons ,group ,article)) | 440 | (cons ,group ,article)) |
| @@ -541,7 +542,7 @@ Gcc: header for archiving purposes." | |||
| 541 | (gnus-post-method arg ,gnus-newsgroup-name))) | 542 | (gnus-post-method arg ,gnus-newsgroup-name))) |
| 542 | (message-add-action | 543 | (message-add-action |
| 543 | `(progn | 544 | `(progn |
| 544 | (setq gnus-current-window-configuration ,winconf-name) | 545 | (setq gnus-current-window-configuration ',winconf-name) |
| 545 | (when (gnus-buffer-exists-p ,buffer) | 546 | (when (gnus-buffer-exists-p ,buffer) |
| 546 | (set-window-configuration ,winconf))) | 547 | (set-window-configuration ,winconf))) |
| 547 | 'exit 'postpone 'kill) | 548 | 'exit 'postpone 'kill) |
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index e5e2468058c..dea6aabc75b 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el | |||
| @@ -864,6 +864,7 @@ prompt the user for the name of an NNTP server to use." | |||
| 864 | (gnus-get-buffer-create | 864 | (gnus-get-buffer-create |
| 865 | (file-name-nondirectory dribble-file))) | 865 | (file-name-nondirectory dribble-file))) |
| 866 | (set (make-local-variable 'file-precious-flag) t) | 866 | (set (make-local-variable 'file-precious-flag) t) |
| 867 | (setq buffer-save-without-query t) | ||
| 867 | (erase-buffer) | 868 | (erase-buffer) |
| 868 | (setq buffer-file-name dribble-file) | 869 | (setq buffer-file-name dribble-file) |
| 869 | (auto-save-mode t) | 870 | (auto-save-mode t) |
| @@ -1717,8 +1718,8 @@ If SCAN, request a scan of that group as well." | |||
| 1717 | gnus-secondary-select-methods)) | 1718 | gnus-secondary-select-methods)) |
| 1718 | (when (and (not (assoc method type-cache)) | 1719 | (when (and (not (assoc method type-cache)) |
| 1719 | (gnus-check-backend-function 'request-list (car method))) | 1720 | (gnus-check-backend-function 'request-list (car method))) |
| 1720 | (with-current-buffer nntp-server-buffer | 1721 | (with-current-buffer nntp-server-buffer |
| 1721 | (gnus-read-active-file-1 method nil)))) | 1722 | (gnus-read-active-file-1 method nil)))) |
| 1722 | 1723 | ||
| 1723 | ;; Do the rest of the retrieval. | 1724 | ;; Do the rest of the retrieval. |
| 1724 | (dolist (elem type-cache) | 1725 | (dolist (elem type-cache) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 2d78a5698df..abe6367f0d0 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -3853,7 +3853,7 @@ This function is intended to be used in | |||
| 3853 | ((< c (* 1000 10000)) (format "%1.1fM" (/ c (* 1024.0 1024)))) | 3853 | ((< c (* 1000 10000)) (format "%1.1fM" (/ c (* 1024.0 1024)))) |
| 3854 | (t (format "%dM" (/ c (* 1024.0 1024))))))) | 3854 | (t (format "%dM" (/ c (* 1024.0 1024))))))) |
| 3855 | 3855 | ||
| 3856 | (defcustom gnus-summary-user-date-format-alist | 3856 | (defcustom gnus-user-date-format-alist |
| 3857 | '(((gnus-seconds-today) . "Today, %H:%M") | 3857 | '(((gnus-seconds-today) . "Today, %H:%M") |
| 3858 | ((+ 86400 (gnus-seconds-today)) . "Yesterday, %H:%M") | 3858 | ((+ 86400 (gnus-seconds-today)) . "Yesterday, %H:%M") |
| 3859 | (604800 . "%A %H:%M") ; That's one week | 3859 | (604800 . "%A %H:%M") ; That's one week |
| @@ -3880,11 +3880,9 @@ respectively." | |||
| 3880 | :version "24.1" | 3880 | :version "24.1" |
| 3881 | :group 'gnus-summary-format | 3881 | :group 'gnus-summary-format |
| 3882 | :type '(alist :key-type sexp :value-type string)) | 3882 | :type '(alist :key-type sexp :value-type string)) |
| 3883 | (make-obsolete-variable 'gnus-user-date-format-alist | ||
| 3884 | 'gnus-summary-user-date-format-alist "24.1") | ||
| 3885 | 3883 | ||
| 3886 | (defun gnus-user-date (messy-date) | 3884 | (defun gnus-user-date (messy-date) |
| 3887 | "Format the messy-date according to `gnus-summary-user-date-format-alist'. | 3885 | "Format the messy-date according to `gnus-user-date-format-alist'. |
| 3888 | Returns \" ? \" if there's bad input or if another error occurs. | 3886 | Returns \" ? \" if there's bad input or if another error occurs. |
| 3889 | Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"." | 3887 | Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"." |
| 3890 | (condition-case () | 3888 | (condition-case () |
| @@ -3893,7 +3891,7 @@ Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"." | |||
| 3893 | ;;If we don't find something suitable we'll use this one | 3891 | ;;If we don't find something suitable we'll use this one |
| 3894 | (my-format "%b %d '%y")) | 3892 | (my-format "%b %d '%y")) |
| 3895 | (let* ((difference (- now messy-date)) | 3893 | (let* ((difference (- now messy-date)) |
| 3896 | (templist gnus-summary-user-date-format-alist) | 3894 | (templist gnus-user-date-format-alist) |
| 3897 | (top (eval (caar templist)))) | 3895 | (top (eval (caar templist)))) |
| 3898 | (while (if (numberp top) (< top difference) (not top)) | 3896 | (while (if (numberp top) (< top difference) (not top)) |
| 3899 | (progn | 3897 | (progn |
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 138875ba477..b2733407836 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el | |||
| @@ -1151,6 +1151,7 @@ textual parts.") | |||
| 1151 | (setf (nnimap-examined nnimap-object) group) | 1151 | (setf (nnimap-examined nnimap-object) group) |
| 1152 | (if (and qresyncp | 1152 | (if (and qresyncp |
| 1153 | uidvalidity | 1153 | uidvalidity |
| 1154 | active | ||
| 1154 | modseq) | 1155 | modseq) |
| 1155 | (push | 1156 | (push |
| 1156 | (list (nnimap-send-command "EXAMINE %S (%s (%s %s))" | 1157 | (list (nnimap-send-command "EXAMINE %S (%s (%s %s))" |
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el index 8e91c68b391..eaaac3f88ce 100644 --- a/lisp/gnus/nnir.el +++ b/lisp/gnus/nnir.el | |||
| @@ -203,11 +203,12 @@ | |||
| 203 | ;; Imap variables | 203 | ;; Imap variables |
| 204 | 204 | ||
| 205 | (defvar nnir-imap-search-arguments | 205 | (defvar nnir-imap-search-arguments |
| 206 | '(("Whole message" . "TEXT") | 206 | '(("whole message" . "TEXT") |
| 207 | ("Subject" . "SUBJECT") | 207 | ("subject" . "SUBJECT") |
| 208 | ("To" . "TO") | 208 | ("to" . "TO") |
| 209 | ("From" . "FROM") | 209 | ("from" . "FROM") |
| 210 | ("Imap" . "")) | 210 | ("body" . "BODY") |
| 211 | ("imap" . "")) | ||
| 211 | "Mapping from user readable keys to IMAP search items for use in nnir") | 212 | "Mapping from user readable keys to IMAP search items for use in nnir") |
| 212 | 213 | ||
| 213 | (defvar nnir-imap-search-other "HEADER %S" | 214 | (defvar nnir-imap-search-other "HEADER %S" |
| @@ -335,7 +336,7 @@ result, `gnus-retrieve-headers' will be called instead." | |||
| 335 | :type '(function) | 336 | :type '(function) |
| 336 | :group 'nnir) | 337 | :group 'nnir) |
| 337 | 338 | ||
| 338 | (defcustom nnir-imap-default-search-key "Whole message" | 339 | (defcustom nnir-imap-default-search-key "whole message" |
| 339 | "*The default IMAP search key for an nnir search. Must be one of | 340 | "*The default IMAP search key for an nnir search. Must be one of |
| 340 | the keys in `nnir-imap-search-arguments'. To use raw imap queries | 341 | the keys in `nnir-imap-search-arguments'. To use raw imap queries |
| 341 | by default set this to \"Imap\"." | 342 | by default set this to \"Imap\"." |
| @@ -1500,11 +1501,14 @@ Tested with Namazu 2.0.6 on a GNU/Linux system." | |||
| 1500 | (setq search-func (cadr (assoc nnir-search-engine | 1501 | (setq search-func (cadr (assoc nnir-search-engine |
| 1501 | nnir-engines))) | 1502 | nnir-engines))) |
| 1502 | (if search-func | 1503 | (if search-func |
| 1503 | (funcall search-func | 1504 | (funcall |
| 1504 | (if nnir-extra-parms | 1505 | search-func |
| 1505 | (nnir-read-parms q nnir-search-engine) | 1506 | (if nnir-extra-parms |
| 1506 | q) | 1507 | (or (and (eq nnir-search-engine 'imap) |
| 1507 | server (cadr x)) | 1508 | (assq 'criteria q) q) |
| 1509 | (setq q (nnir-read-parms q nnir-search-engine))) | ||
| 1510 | q) | ||
| 1511 | server (cadr x)) | ||
| 1508 | nil))) | 1512 | nil))) |
| 1509 | groups)))) | 1513 | groups)))) |
| 1510 | 1514 | ||
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index b2336e13b64..8906a036779 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el | |||
| @@ -1215,7 +1215,8 @@ FUNC will be called with the group name to determine the article number." | |||
| 1215 | ;; This is the final group, which is used as a | 1215 | ;; This is the final group, which is used as a |
| 1216 | ;; catch-all. | 1216 | ;; catch-all. |
| 1217 | (when (and (not group-art) | 1217 | (when (and (not group-art) |
| 1218 | (not nnmail-inhibit-default-split-group)) | 1218 | (or (equal "" (nth 1 method)) |
| 1219 | (not nnmail-inhibit-default-split-group))) | ||
| 1219 | (setq group-art | 1220 | (setq group-art |
| 1220 | (list (cons (car method) | 1221 | (list (cons (car method) |
| 1221 | (funcall func (car method)))))))) | 1222 | (funcall func (car method)))))))) |
diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 1cd5526fcff..38e331dc992 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el | |||
| @@ -748,15 +748,21 @@ it is displayed along with the global value." | |||
| 748 | (setq extra-line t) | 748 | (setq extra-line t) |
| 749 | (if (member (cons variable val) dir-local-variables-alist) | 749 | (if (member (cons variable val) dir-local-variables-alist) |
| 750 | (let ((file (and (buffer-file-name) | 750 | (let ((file (and (buffer-file-name) |
| 751 | (not (file-remote-p (buffer-file-name))) | 751 | (not (file-remote-p (buffer-file-name))) |
| 752 | (dir-locals-find-file (buffer-file-name))))) | 752 | (dir-locals-find-file |
| 753 | (buffer-file-name)))) | ||
| 754 | (type "file")) | ||
| 753 | (princ " This variable is a directory local variable") | 755 | (princ " This variable is a directory local variable") |
| 754 | (when file | 756 | (when file |
| 755 | (princ (concat "\n from the file \"" | 757 | (if (consp file) ; result from cache |
| 756 | (if (consp file) | 758 | ;; If the cache element has an mtime, we |
| 757 | (car file) | 759 | ;; assume it came from a file. |
| 758 | file) | 760 | (if (nth 2 file) |
| 759 | "\""))) | 761 | (setq file (expand-file-name |
| 762 | dir-locals-file (car file))) | ||
| 763 | ;; Otherwise, assume it was set directly. | ||
| 764 | (setq type "directory"))) | ||
| 765 | (princ (format "\n from the %s \"%s\"" type file))) | ||
| 760 | (princ ".\n")) | 766 | (princ ".\n")) |
| 761 | (princ " This variable is a file local variable.\n"))) | 767 | (princ " This variable is a file local variable.\n"))) |
| 762 | 768 | ||
diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el index 7e317ea09c0..c0fcf19d841 100644 --- a/lisp/international/ja-dic-cnv.el +++ b/lisp/international/ja-dic-cnv.el | |||
| @@ -337,7 +337,7 @@ The name of generated file is specified by the variable `ja-dic-filename'." | |||
| 337 | (erase-buffer) | 337 | (erase-buffer) |
| 338 | (buffer-disable-undo) | 338 | (buffer-disable-undo) |
| 339 | (insert ";;; ja-dic.el --- dictionary for Japanese input method" | 339 | (insert ";;; ja-dic.el --- dictionary for Japanese input method" |
| 340 | " -*-coding: euc-japan; byte-compile-disable-print-circle:t; -*-\n" | 340 | " -*-coding: euc-japan; -*-\n" |
| 341 | ";;\tGenerated by the command `skkdic-convert'\n" | 341 | ";;\tGenerated by the command `skkdic-convert'\n" |
| 342 | ";;\tDate: " (current-time-string) "\n" | 342 | ";;\tDate: " (current-time-string) "\n" |
| 343 | ";;\tOriginal SKK dictionary file: " | 343 | ";;\tOriginal SKK dictionary file: " |
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index 935d66c613b..e68dc8bdc17 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el | |||
| @@ -272,8 +272,7 @@ SPC, 6, 3, 4, or 7 specifing a tone (SPC:$(0?v(N(B, 6:$(0Dm(N(B, 3:$(0&9Vy | |||
| 272 | 272 | ||
| 273 | (princ ";; Quail package `") | 273 | (princ ";; Quail package `") |
| 274 | (princ package) | 274 | (princ package) |
| 275 | (princ (format "' -*- coding:%s; " coding-system-for-write)) | 275 | (princ (format "' -*- coding:%s -*-\n" coding-system-for-write)) |
| 276 | (princ "byte-compile-disable-print-circle:t; -*-\n") | ||
| 277 | (princ ";; Generated by the command `titdic-convert'\n;;\tDate: ") | 276 | (princ ";; Generated by the command `titdic-convert'\n;;\tDate: ") |
| 278 | (princ (current-time-string)) | 277 | (princ (current-time-string)) |
| 279 | (princ "\n;;\tOriginal TIT dictionary file: ") | 278 | (princ "\n;;\tOriginal TIT dictionary file: ") |
| @@ -1154,8 +1153,8 @@ the generated Quail package is saved." | |||
| 1154 | (setq coding-system-for-write | 1153 | (setq coding-system-for-write |
| 1155 | (coding-system-change-eol-conversion coding 'unix)) | 1154 | (coding-system-change-eol-conversion coding 'unix)) |
| 1156 | (with-temp-file (expand-file-name quailfile dirname) | 1155 | (with-temp-file (expand-file-name quailfile dirname) |
| 1157 | (insert (format ";; Quail package `%s' -*- coding:%s; " name coding)) | 1156 | (insert (format ";; Quail package `%s' -*- coding:%s -*-\n" |
| 1158 | (insert "byte-compile-disable-print-circle:t; -*-\n") | 1157 | name coding)) |
| 1159 | (insert ";; Generated by the command `miscdic-convert'\n") | 1158 | (insert ";; Generated by the command `miscdic-convert'\n") |
| 1160 | (insert ";; Date: " (current-time-string) "\n") | 1159 | (insert ";; Date: " (current-time-string) "\n") |
| 1161 | (insert ";; Source dictionary file: " dicfile "\n") | 1160 | (insert ";; Source dictionary file: " dicfile "\n") |
diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el index ab9f3662745..b957d9f36c6 100644 --- a/lisp/mail/mailclient.el +++ b/lisp/mail/mailclient.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; mailclient.el --- mail sending via system's mail client. -*- byte-compile-dynamic: t -*- | 1 | ;;; mailclient.el --- mail sending via system's mail client. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2005-2011 Free Software Foundation | 3 | ;; Copyright (C) 2005-2011 Free Software Foundation |
| 4 | 4 | ||
diff --git a/lisp/mail/mailheader.el b/lisp/mail/mailheader.el index 896400068cc..1277d1d4109 100644 --- a/lisp/mail/mailheader.el +++ b/lisp/mail/mailheader.el | |||
| @@ -101,7 +101,7 @@ value." | |||
| 101 | (cons (cdr header) (funcall (cdr rule) (cdr header)))))))) | 101 | (cons (cdr header) (funcall (cdr rule) (cdr header)))))))) |
| 102 | headers) | 102 | headers) |
| 103 | 103 | ||
| 104 | ;; Advertized part of the interface; see mail-header, mail-header-set. | 104 | ;; Advertised part of the interface; see mail-header, mail-header-set. |
| 105 | (defvar headers) | 105 | (defvar headers) |
| 106 | 106 | ||
| 107 | (defsubst mail-header (header &optional header-alist) | 107 | (defsubst mail-header (header &optional header-alist) |
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 06867f6d92a..7fe5383d865 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el | |||
| @@ -3443,6 +3443,16 @@ does not pop any summary buffer." | |||
| 3443 | (setq yank-action (list 'insert-buffer replybuffer))) | 3443 | (setq yank-action (list 'insert-buffer replybuffer))) |
| 3444 | (push (cons "cc" cc) other-headers) | 3444 | (push (cons "cc" cc) other-headers) |
| 3445 | (push (cons "in-reply-to" in-reply-to) other-headers) | 3445 | (push (cons "in-reply-to" in-reply-to) other-headers) |
| 3446 | (setq other-headers | ||
| 3447 | (mapcar #'(lambda (elt) | ||
| 3448 | (cons (car elt) (if (stringp (cdr elt)) | ||
| 3449 | (rfc2047-decode-string (cdr elt))))) | ||
| 3450 | other-headers)) | ||
| 3451 | (if (stringp to) (setq to (rfc2047-decode-string to))) | ||
| 3452 | (if (stringp in-reply-to) | ||
| 3453 | (setq in-reply-to (rfc2047-decode-string in-reply-to))) | ||
| 3454 | (if (stringp cc) (setq cc (rfc2047-decode-string cc))) | ||
| 3455 | (if (stringp subject) (setq subject (rfc2047-decode-string subject))) | ||
| 3446 | (prog1 | 3456 | (prog1 |
| 3447 | (compose-mail to subject other-headers noerase | 3457 | (compose-mail to subject other-headers noerase |
| 3448 | switch-function yank-action sendactions | 3458 | switch-function yank-action sendactions |
| @@ -3450,7 +3460,7 @@ does not pop any summary buffer." | |||
| 3450 | (if (eq switch-function 'switch-to-buffer-other-frame) | 3460 | (if (eq switch-function 'switch-to-buffer-other-frame) |
| 3451 | ;; This is not a standard frame parameter; nothing except | 3461 | ;; This is not a standard frame parameter; nothing except |
| 3452 | ;; sendmail.el looks at it. | 3462 | ;; sendmail.el looks at it. |
| 3453 | (modify-frame-parameters (selected-frame) | 3463 | (modify-frame-parameters (selected-frame) |
| 3454 | '((mail-dedicated-frame . t))))))) | 3464 | '((mail-dedicated-frame . t))))))) |
| 3455 | 3465 | ||
| 3456 | (defun rmail-mail-return () | 3466 | (defun rmail-mail-return () |
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el index 0bfeb121ca4..96132739b20 100644 --- a/lisp/mail/rmailmm.el +++ b/lisp/mail/rmailmm.el | |||
| @@ -853,28 +853,33 @@ The other arguments are the same as `rmail-mime-multipart-handler'." | |||
| 853 | ((looking-at "[ \t]*\n") | 853 | ((looking-at "[ \t]*\n") |
| 854 | (setq next (copy-marker (match-end 0) t))) | 854 | (setq next (copy-marker (match-end 0) t))) |
| 855 | (t | 855 | (t |
| 856 | (rmail-mm-get-boundary-error-message | 856 | ;; The original code signalled an error as below, but |
| 857 | "Malformed boundary" content-type content-disposition | 857 | ;; this line may be a boundary of nested multipart. So, |
| 858 | content-transfer-encoding))) | 858 | ;; we just set `next' to nil to skip this line |
| 859 | 859 | ;; (rmail-mm-get-boundary-error-message | |
| 860 | (setq index (1+ index)) | 860 | ;; "Malformed boundary" content-type content-disposition |
| 861 | ;; Handle the part. | 861 | ;; content-transfer-encoding) |
| 862 | (if parse-tag | 862 | (setq next nil))) |
| 863 | |||
| 864 | (when next | ||
| 865 | (setq index (1+ index)) | ||
| 866 | ;; Handle the part. | ||
| 867 | (if parse-tag | ||
| 868 | (save-restriction | ||
| 869 | (narrow-to-region beg end) | ||
| 870 | (let ((child (rmail-mime-process | ||
| 871 | nil (format "%s/%d" parse-tag index) | ||
| 872 | content-type content-disposition))) | ||
| 873 | ;; Display a tagline. | ||
| 874 | (aset (aref (rmail-mime-entity-display child) 1) 1 | ||
| 875 | (aset (rmail-mime-entity-tagline child) 2 t)) | ||
| 876 | (push child entities))) | ||
| 877 | |||
| 878 | (delete-region end next) | ||
| 863 | (save-restriction | 879 | (save-restriction |
| 864 | (narrow-to-region beg end) | 880 | (narrow-to-region beg end) |
| 865 | (let ((child (rmail-mime-process | 881 | (rmail-mime-show))) |
| 866 | nil (format "%s/%d" parse-tag index) | 882 | (goto-char (setq beg next)))) |
| 867 | content-type content-disposition))) | ||
| 868 | ;; Display a tagline. | ||
| 869 | (aset (aref (rmail-mime-entity-display child) 1) 1 | ||
| 870 | (aset (rmail-mime-entity-tagline child) 2 t)) | ||
| 871 | (push child entities))) | ||
| 872 | |||
| 873 | (delete-region end next) | ||
| 874 | (save-restriction | ||
| 875 | (narrow-to-region beg end) | ||
| 876 | (rmail-mime-show))) | ||
| 877 | (goto-char (setq beg next))) | ||
| 878 | 883 | ||
| 879 | (when parse-tag | 884 | (when parse-tag |
| 880 | (setq entities (nreverse entities)) | 885 | (setq entities (nreverse entities)) |
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index 9e49f0e775b..1c1ffc41624 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el | |||
| @@ -2801,7 +2801,7 @@ server/database name." | |||
| 2801 | (defun sql-rename-buffer (&optional new-name) | 2801 | (defun sql-rename-buffer (&optional new-name) |
| 2802 | "Rename a SQL interactive buffer. | 2802 | "Rename a SQL interactive buffer. |
| 2803 | 2803 | ||
| 2804 | Prompts for the new name if command is preceeded by | 2804 | Prompts for the new name if command is preceded by |
| 2805 | \\[universal-argument]. If no buffer name is provided, then the | 2805 | \\[universal-argument]. If no buffer name is provided, then the |
| 2806 | `sql-alternate-buffer-name' is used. | 2806 | `sql-alternate-buffer-name' is used. |
| 2807 | 2807 | ||
| @@ -3262,7 +3262,7 @@ you must tell Emacs. Here's how to do that in your `~/.emacs' file: | |||
| 3262 | :abbrev-table sql-mode-abbrev-table | 3262 | :abbrev-table sql-mode-abbrev-table |
| 3263 | (if sql-mode-menu | 3263 | (if sql-mode-menu |
| 3264 | (easy-menu-add sql-mode-menu)); XEmacs | 3264 | (easy-menu-add sql-mode-menu)); XEmacs |
| 3265 | 3265 | ||
| 3266 | (set (make-local-variable 'comment-start) "--") | 3266 | (set (make-local-variable 'comment-start) "--") |
| 3267 | ;; Make each buffer in sql-mode remember the "current" SQLi buffer. | 3267 | ;; Make each buffer in sql-mode remember the "current" SQLi buffer. |
| 3268 | (make-local-variable 'sql-buffer) | 3268 | (make-local-variable 'sql-buffer) |
| @@ -4257,4 +4257,3 @@ buffer. | |||
| 4257 | (provide 'sql) | 4257 | (provide 'sql) |
| 4258 | 4258 | ||
| 4259 | ;;; sql.el ends here | 4259 | ;;; sql.el ends here |
| 4260 | |||
diff --git a/src/ChangeLog b/src/ChangeLog index 6673a25f74f..3719b61b413 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,29 @@ | |||
| 1 | 2011-02-25 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * dired.c (Ffile_attributes): Increase size of modes from 10 to 12 | ||
| 4 | as per recent filemodestring API change. Reported by Jonas Öster in | ||
| 5 | <http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg01069.html>. | ||
| 6 | |||
| 7 | 2011-02-23 Ben Key <bkey76@gmail.com> (tiny change) | ||
| 8 | |||
| 9 | * nsterm.m (ns_draw_window_cursor): Obey the cursor_width argument | ||
| 10 | directly, for bar cursors. | ||
| 11 | |||
| 12 | 2011-02-23 Chong Yidong <cyd@stupidchicken.com> | ||
| 13 | |||
| 14 | * xdisp.c (set_frame_cursor_types): Don't write an undefined value | ||
| 15 | into the frame's cursor_width. | ||
| 16 | |||
| 17 | 2011-02-23 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 18 | |||
| 19 | * print.c (print_object): Never print old-style backquotes. | ||
| 20 | Obey escapeflag for hash tables as well. | ||
| 21 | |||
| 22 | 2011-02-23 Kenichi Handa <handa@m17n.org> | ||
| 23 | |||
| 24 | * font.c (font_open_entity): Be sure to set scaled_pixel_size. | ||
| 25 | (font_find_for_lface): Check if attrs[LFACE_HEIGHT_INDEX] is integer. | ||
| 26 | |||
| 1 | 2011-02-22 Paul Eggert <eggert@cs.ucla.edu> | 27 | 2011-02-22 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 28 | ||
| 3 | Work around some portability problems with symlinks. | 29 | Work around some portability problems with symlinks. |
diff --git a/src/bidi.c b/src/bidi.c index 9740fe8f1d5..eeacf65bd5c 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -1520,7 +1520,7 @@ bidi_level_of_next_char (struct bidi_it *bidi_it) | |||
| 1520 | bidi_check_type (bidi_it->type); | 1520 | bidi_check_type (bidi_it->type); |
| 1521 | 1521 | ||
| 1522 | /* For L1 below, we need to know, for each WS character, whether | 1522 | /* For L1 below, we need to know, for each WS character, whether |
| 1523 | it belongs to a sequence of WS characters preceeding a newline | 1523 | it belongs to a sequence of WS characters preceding a newline |
| 1524 | or a TAB or a paragraph separator. */ | 1524 | or a TAB or a paragraph separator. */ |
| 1525 | if (bidi_it->orig_type == NEUTRAL_WS | 1525 | if (bidi_it->orig_type == NEUTRAL_WS |
| 1526 | && bidi_it->next_for_ws.type == UNKNOWN_BT) | 1526 | && bidi_it->next_for_ws.type == UNKNOWN_BT) |
diff --git a/src/dired.c b/src/dired.c index eea4c7cfe40..ce2a3d105e5 100644 --- a/src/dired.c +++ b/src/dired.c | |||
| @@ -937,7 +937,7 @@ so last access time will always be midnight of that day. */) | |||
| 937 | Lisp_Object dirname; | 937 | Lisp_Object dirname; |
| 938 | struct stat sdir; | 938 | struct stat sdir; |
| 939 | #endif /* BSD4_2 */ | 939 | #endif /* BSD4_2 */ |
| 940 | char modes[10]; | 940 | char modes[12]; |
| 941 | Lisp_Object handler; | 941 | Lisp_Object handler; |
| 942 | struct gcpro gcpro1; | 942 | struct gcpro gcpro1; |
| 943 | char *uname = NULL, *gname = NULL; | 943 | char *uname = NULL, *gname = NULL; |
diff --git a/src/font.c b/src/font.c index d77eafb6ad2..35821ae34f9 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -2806,7 +2806,7 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size) | |||
| 2806 | Lisp_Object objlist, size, val, font_object; | 2806 | Lisp_Object objlist, size, val, font_object; |
| 2807 | struct font *font; | 2807 | struct font *font; |
| 2808 | int min_width, height; | 2808 | int min_width, height; |
| 2809 | int scaled_pixel_size; | 2809 | int scaled_pixel_size = pixel_size; |
| 2810 | 2810 | ||
| 2811 | font_assert (FONT_ENTITY_P (entity)); | 2811 | font_assert (FONT_ENTITY_P (entity)); |
| 2812 | size = AREF (entity, FONT_SIZE_INDEX); | 2812 | size = AREF (entity, FONT_SIZE_INDEX); |
| @@ -3121,7 +3121,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c) | |||
| 3121 | XSETFRAME (frame, f); | 3121 | XSETFRAME (frame, f); |
| 3122 | size = AREF (spec, FONT_SIZE_INDEX); | 3122 | size = AREF (spec, FONT_SIZE_INDEX); |
| 3123 | pixel_size = font_pixel_size (f, spec); | 3123 | pixel_size = font_pixel_size (f, spec); |
| 3124 | if (pixel_size == 0) | 3124 | if (pixel_size == 0 && INTEGERP (attrs[LFACE_HEIGHT_INDEX])) |
| 3125 | { | 3125 | { |
| 3126 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); | 3126 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); |
| 3127 | 3127 | ||
diff --git a/src/nsterm.m b/src/nsterm.m index 038709869a9..8e77c89c3f7 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -1072,7 +1072,7 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_grav) | |||
| 1072 | : f->left_pos; | 1072 | : f->left_pos; |
| 1073 | /* We use visibleFrame here to take menu bar into account. | 1073 | /* We use visibleFrame here to take menu bar into account. |
| 1074 | Ideally we should also adjust left/top with visibleFrame.origin. */ | 1074 | Ideally we should also adjust left/top with visibleFrame.origin. */ |
| 1075 | 1075 | ||
| 1076 | f->top_pos = f->size_hint_flags & YNegative | 1076 | f->top_pos = f->size_hint_flags & YNegative |
| 1077 | ? ([screen visibleFrame].size.height + f->top_pos | 1077 | ? ([screen visibleFrame].size.height + f->top_pos |
| 1078 | - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f) | 1078 | - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f) |
| @@ -1154,7 +1154,7 @@ x_set_window_size (struct frame *f, int change_grav, int cols, int rows) | |||
| 1154 | FRAME_TOOLBAR_HEIGHT (f) = 0; | 1154 | FRAME_TOOLBAR_HEIGHT (f) = 0; |
| 1155 | 1155 | ||
| 1156 | wr.size.width = pixelwidth + f->border_width; | 1156 | wr.size.width = pixelwidth + f->border_width; |
| 1157 | wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f) | 1157 | wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f) |
| 1158 | + FRAME_TOOLBAR_HEIGHT (f); | 1158 | + FRAME_TOOLBAR_HEIGHT (f); |
| 1159 | 1159 | ||
| 1160 | /* Do not try to constrain to this screen. We may have multiple | 1160 | /* Do not try to constrain to this screen. We may have multiple |
| @@ -2230,11 +2230,8 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 2230 | int x, int y, int cursor_type, int cursor_width, | 2230 | int x, int y, int cursor_type, int cursor_width, |
| 2231 | int on_p, int active_p) | 2231 | int on_p, int active_p) |
| 2232 | /* -------------------------------------------------------------------------- | 2232 | /* -------------------------------------------------------------------------- |
| 2233 | External call (RIF): draw cursor | 2233 | External call (RIF): draw cursor. |
| 2234 | (modeled after x_draw_window_cursor | 2234 | Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. |
| 2235 | FIXME: cursor_width is effectively bogus -- it sometimes gets set | ||
| 2236 | in xdisp.c set_frame_cursor_types, sometimes left uninitialized; | ||
| 2237 | DON'T USE IT (no other terms do) | ||
| 2238 | -------------------------------------------------------------------------- */ | 2235 | -------------------------------------------------------------------------- */ |
| 2239 | { | 2236 | { |
| 2240 | NSRect r, s; | 2237 | NSRect r, s; |
| @@ -2251,7 +2248,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 2251 | and mini-buffer. */ | 2248 | and mini-buffer. */ |
| 2252 | 2249 | ||
| 2253 | NSTRACE (dumpcursor); | 2250 | NSTRACE (dumpcursor); |
| 2254 | //fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width); | ||
| 2255 | 2251 | ||
| 2256 | if (!on_p) | 2252 | if (!on_p) |
| 2257 | return; | 2253 | return; |
| @@ -2276,8 +2272,22 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 2276 | return; | 2272 | return; |
| 2277 | } | 2273 | } |
| 2278 | 2274 | ||
| 2275 | /* We draw the cursor (with NSRectFill), then draw the glyph on top | ||
| 2276 | (other terminals do it the other way round). We must set | ||
| 2277 | w->phys_cursor_width to the cursor width. For bar cursors, that | ||
| 2278 | is CURSOR_WIDTH; for box cursors, it is the glyph width. */ | ||
| 2279 | get_phys_cursor_geometry (w, glyph_row, phys_cursor_glyph, &fx, &fy, &h); | 2279 | get_phys_cursor_geometry (w, glyph_row, phys_cursor_glyph, &fx, &fy, &h); |
| 2280 | 2280 | ||
| 2281 | /* The above get_phys_cursor_geometry call set w->phys_cursor_width | ||
| 2282 | to the glyph width; replace with CURSOR_WIDTH for bar cursors. */ | ||
| 2283 | if (cursor_type == BAR_CURSOR || cursor_type == HBAR_CURSOR) | ||
| 2284 | { | ||
| 2285 | if (cursor_width < 0) | ||
| 2286 | cursor_width = FRAME_CURSOR_WIDTH (f); | ||
| 2287 | cursor_width = min (cursor_width, 1); | ||
| 2288 | w->phys_cursor_width = cursor_width; | ||
| 2289 | } | ||
| 2290 | |||
| 2281 | r.origin.x = fx, r.origin.y = fy; | 2291 | r.origin.x = fx, r.origin.y = fy; |
| 2282 | r.size.height = h; | 2292 | r.size.height = h; |
| 2283 | r.size.width = w->phys_cursor_width; | 2293 | r.size.width = w->phys_cursor_width; |
| @@ -2285,7 +2295,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 2285 | /* FIXME: if we overwrite the internal border area, it does not get erased; | 2295 | /* FIXME: if we overwrite the internal border area, it does not get erased; |
| 2286 | fix by truncating cursor, but better would be to erase properly */ | 2296 | fix by truncating cursor, but better would be to erase properly */ |
| 2287 | overspill = r.origin.x + r.size.width - | 2297 | overspill = r.origin.x + r.size.width - |
| 2288 | WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w) | 2298 | WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w) |
| 2289 | - WINDOW_TOTAL_FRINGE_WIDTH (w) - FRAME_INTERNAL_BORDER_WIDTH (f)); | 2299 | - WINDOW_TOTAL_FRINGE_WIDTH (w) - FRAME_INTERNAL_BORDER_WIDTH (f)); |
| 2290 | if (overspill > 0) | 2300 | if (overspill > 0) |
| 2291 | r.size.width -= overspill; | 2301 | r.size.width -= overspill; |
| @@ -2335,8 +2345,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 2335 | break; | 2345 | break; |
| 2336 | case BAR_CURSOR: | 2346 | case BAR_CURSOR: |
| 2337 | s = r; | 2347 | s = r; |
| 2338 | s.size.width = min (cursor_width, 2); //FIXME(see above) | ||
| 2339 | |||
| 2340 | /* If the character under cursor is R2L, draw the bar cursor | 2348 | /* If the character under cursor is R2L, draw the bar cursor |
| 2341 | on the right of its glyph, rather than on the left. */ | 2349 | on the right of its glyph, rather than on the left. */ |
| 2342 | cursor_glyph = get_phys_cursor_glyph (w); | 2350 | cursor_glyph = get_phys_cursor_glyph (w); |
| @@ -2984,7 +2992,7 @@ ns_draw_glyph_string (struct glyph_string *s) | |||
| 2984 | NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); | 2992 | NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); |
| 2985 | NS_FACE_FOREGROUND (s->face) = tmp; | 2993 | NS_FACE_FOREGROUND (s->face) = tmp; |
| 2986 | } | 2994 | } |
| 2987 | 2995 | ||
| 2988 | ns_tmp_font->font.driver->draw | 2996 | ns_tmp_font->font.driver->draw |
| 2989 | (s, 0, s->nchars, s->x, s->y, | 2997 | (s, 0, s->nchars, s->x, s->y, |
| 2990 | (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p) | 2998 | (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p) |
| @@ -3010,9 +3018,9 @@ ns_draw_glyph_string (struct glyph_string *s) | |||
| 3010 | else | 3018 | else |
| 3011 | ns_maybe_dumpglyphs_background | 3019 | ns_maybe_dumpglyphs_background |
| 3012 | (s, s->first_glyph->type == COMPOSITE_GLYPH); | 3020 | (s, s->first_glyph->type == COMPOSITE_GLYPH); |
| 3013 | /* ... */ | 3021 | /* ... */ |
| 3014 | /* Not yet implemented. */ | 3022 | /* Not yet implemented. */ |
| 3015 | /* ... */ | 3023 | /* ... */ |
| 3016 | ns_unfocus (s->f); | 3024 | ns_unfocus (s->f); |
| 3017 | break; | 3025 | break; |
| 3018 | 3026 | ||
| @@ -3785,7 +3793,7 @@ ns_term_init (Lisp_Object display_name) | |||
| 3785 | strncpy (terminal->name, SDATA (display_name), SBYTES (display_name)); | 3793 | strncpy (terminal->name, SDATA (display_name), SBYTES (display_name)); |
| 3786 | terminal->name[SBYTES (display_name)] = 0; | 3794 | terminal->name[SBYTES (display_name)] = 0; |
| 3787 | 3795 | ||
| 3788 | UNBLOCK_INPUT; | 3796 | UNBLOCK_INPUT; |
| 3789 | 3797 | ||
| 3790 | if (!inhibit_x_resources) | 3798 | if (!inhibit_x_resources) |
| 3791 | { | 3799 | { |
| @@ -3802,7 +3810,7 @@ ns_term_init (Lisp_Object display_name) | |||
| 3802 | stringForKey: @"AppleHighlightColor"]; | 3810 | stringForKey: @"AppleHighlightColor"]; |
| 3803 | if (ns_selection_color == nil) | 3811 | if (ns_selection_color == nil) |
| 3804 | ns_selection_color = NS_SELECTION_COLOR_DEFAULT; | 3812 | ns_selection_color = NS_SELECTION_COLOR_DEFAULT; |
| 3805 | 3813 | ||
| 3806 | { | 3814 | { |
| 3807 | NSColorList *cl = [NSColorList colorListNamed: @"Emacs"]; | 3815 | NSColorList *cl = [NSColorList colorListNamed: @"Emacs"]; |
| 3808 | 3816 | ||
| @@ -3898,7 +3906,7 @@ ns_term_init (Lisp_Object display_name) | |||
| 3898 | keyEquivalent: @"q" | 3906 | keyEquivalent: @"q" |
| 3899 | atIndex: 9]; | 3907 | atIndex: 9]; |
| 3900 | 3908 | ||
| 3901 | item = [mainMenu insertItemWithTitle: ns_app_name | 3909 | item = [mainMenu insertItemWithTitle: ns_app_name |
| 3902 | action: @selector (menuDown:) | 3910 | action: @selector (menuDown:) |
| 3903 | keyEquivalent: @"" | 3911 | keyEquivalent: @"" |
| 3904 | atIndex: 0]; | 3912 | atIndex: 0]; |
| @@ -4103,7 +4111,7 @@ ns_term_shutdown (int sig) | |||
| 4103 | -appShouldTerminate | 4111 | -appShouldTerminate |
| 4104 | Cancel -> Nothing else | 4112 | Cancel -> Nothing else |
| 4105 | Accept -> | 4113 | Accept -> |
| 4106 | 4114 | ||
| 4107 | -terminate | 4115 | -terminate |
| 4108 | KEY_NS_POWER_OFF, (save-buffers-kill-emacs) | 4116 | KEY_NS_POWER_OFF, (save-buffers-kill-emacs) |
| 4109 | ns_term_shutdown() | 4117 | ns_term_shutdown() |
| @@ -4113,10 +4121,10 @@ ns_term_shutdown (int sig) | |||
| 4113 | - (void) terminate: (id)sender | 4121 | - (void) terminate: (id)sender |
| 4114 | { | 4122 | { |
| 4115 | struct frame *emacsframe = SELECTED_FRAME (); | 4123 | struct frame *emacsframe = SELECTED_FRAME (); |
| 4116 | 4124 | ||
| 4117 | if (!emacs_event) | 4125 | if (!emacs_event) |
| 4118 | return; | 4126 | return; |
| 4119 | 4127 | ||
| 4120 | emacs_event->kind = NS_NONKEY_EVENT; | 4128 | emacs_event->kind = NS_NONKEY_EVENT; |
| 4121 | emacs_event->code = KEY_NS_POWER_OFF; | 4129 | emacs_event->code = KEY_NS_POWER_OFF; |
| 4122 | emacs_event->arg = Qt; /* mark as non-key event */ | 4130 | emacs_event->arg = Qt; /* mark as non-key event */ |
| @@ -4418,7 +4426,7 @@ ns_term_shutdown (int sig) | |||
| 4418 | code = ([[theEvent charactersIgnoringModifiers] length] == 0) ? | 4426 | code = ([[theEvent charactersIgnoringModifiers] length] == 0) ? |
| 4419 | 0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0]; | 4427 | 0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0]; |
| 4420 | /* (Carbon way: [theEvent keyCode]) */ | 4428 | /* (Carbon way: [theEvent keyCode]) */ |
| 4421 | 4429 | ||
| 4422 | /* is it a "function key"? */ | 4430 | /* is it a "function key"? */ |
| 4423 | fnKeysym = ns_convert_key (code); | 4431 | fnKeysym = ns_convert_key (code); |
| 4424 | if (fnKeysym) | 4432 | if (fnKeysym) |
| @@ -5446,7 +5454,7 @@ ns_term_shutdown (int sig) | |||
| 5446 | 5454 | ||
| 5447 | /* | 5455 | /* |
| 5448 | drawRect: may be called (at least in OS X 10.5) for invisible | 5456 | drawRect: may be called (at least in OS X 10.5) for invisible |
| 5449 | views as well for some reason. Thus, do not infer visibility | 5457 | views as well for some reason. Thus, do not infer visibility |
| 5450 | here. | 5458 | here. |
| 5451 | 5459 | ||
| 5452 | emacsframe->async_visible = 1; | 5460 | emacsframe->async_visible = 1; |
diff --git a/src/print.c b/src/print.c index 299cfd41814..29a4bfab790 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -1683,26 +1683,6 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag | |||
| 1683 | { | 1683 | { |
| 1684 | PRINTCHAR ('('); | 1684 | PRINTCHAR ('('); |
| 1685 | 1685 | ||
| 1686 | /* If the first element is a backquote form, | ||
| 1687 | print it old-style so it won't be misunderstood. */ | ||
| 1688 | if (print_quoted && CONSP (XCAR (obj)) | ||
| 1689 | && CONSP (XCDR (XCAR (obj))) | ||
| 1690 | && NILP (XCDR (XCDR (XCAR (obj)))) | ||
| 1691 | && EQ (XCAR (XCAR (obj)), Qbackquote)) | ||
| 1692 | { | ||
| 1693 | Lisp_Object tem; | ||
| 1694 | tem = XCAR (obj); | ||
| 1695 | PRINTCHAR ('('); | ||
| 1696 | |||
| 1697 | print_object (Qbackquote, printcharfun, 0); | ||
| 1698 | PRINTCHAR (' '); | ||
| 1699 | |||
| 1700 | print_object (XCAR (XCDR (tem)), printcharfun, 0); | ||
| 1701 | PRINTCHAR (')'); | ||
| 1702 | |||
| 1703 | obj = XCDR (obj); | ||
| 1704 | } | ||
| 1705 | |||
| 1706 | { | 1686 | { |
| 1707 | EMACS_INT print_length; | 1687 | EMACS_INT print_length; |
| 1708 | int i; | 1688 | int i; |
| @@ -1906,25 +1886,25 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag | |||
| 1906 | if (!NILP (h->test)) | 1886 | if (!NILP (h->test)) |
| 1907 | { | 1887 | { |
| 1908 | strout (" test ", -1, -1, printcharfun, 0); | 1888 | strout (" test ", -1, -1, printcharfun, 0); |
| 1909 | print_object (h->test, printcharfun, 0); | 1889 | print_object (h->test, printcharfun, escapeflag); |
| 1910 | } | 1890 | } |
| 1911 | 1891 | ||
| 1912 | if (!NILP (h->weak)) | 1892 | if (!NILP (h->weak)) |
| 1913 | { | 1893 | { |
| 1914 | strout (" weakness ", -1, -1, printcharfun, 0); | 1894 | strout (" weakness ", -1, -1, printcharfun, 0); |
| 1915 | print_object (h->weak, printcharfun, 0); | 1895 | print_object (h->weak, printcharfun, escapeflag); |
| 1916 | } | 1896 | } |
| 1917 | 1897 | ||
| 1918 | if (!NILP (h->rehash_size)) | 1898 | if (!NILP (h->rehash_size)) |
| 1919 | { | 1899 | { |
| 1920 | strout (" rehash-size ", -1, -1, printcharfun, 0); | 1900 | strout (" rehash-size ", -1, -1, printcharfun, 0); |
| 1921 | print_object (h->rehash_size, printcharfun, 0); | 1901 | print_object (h->rehash_size, printcharfun, escapeflag); |
| 1922 | } | 1902 | } |
| 1923 | 1903 | ||
| 1924 | if (!NILP (h->rehash_threshold)) | 1904 | if (!NILP (h->rehash_threshold)) |
| 1925 | { | 1905 | { |
| 1926 | strout (" rehash-threshold ", -1, -1, printcharfun, 0); | 1906 | strout (" rehash-threshold ", -1, -1, printcharfun, 0); |
| 1927 | print_object (h->rehash_threshold, printcharfun, 0); | 1907 | print_object (h->rehash_threshold, printcharfun, escapeflag); |
| 1928 | } | 1908 | } |
| 1929 | 1909 | ||
| 1930 | strout (" data ", -1, -1, printcharfun, 0); | 1910 | strout (" data ", -1, -1, printcharfun, 0); |
| @@ -1943,9 +1923,9 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag | |||
| 1943 | if (!NILP (HASH_HASH (h, i))) | 1923 | if (!NILP (HASH_HASH (h, i))) |
| 1944 | { | 1924 | { |
| 1945 | if (i) PRINTCHAR (' '); | 1925 | if (i) PRINTCHAR (' '); |
| 1946 | print_object (HASH_KEY (h, i), printcharfun, 1); | 1926 | print_object (HASH_KEY (h, i), printcharfun, escapeflag); |
| 1947 | PRINTCHAR (' '); | 1927 | PRINTCHAR (' '); |
| 1948 | print_object (HASH_VALUE (h, i), printcharfun, 1); | 1928 | print_object (HASH_VALUE (h, i), printcharfun, escapeflag); |
| 1949 | } | 1929 | } |
| 1950 | 1930 | ||
| 1951 | if (size < real_size) | 1931 | if (size < real_size) |
diff --git a/src/xdisp.c b/src/xdisp.c index e144237d34e..35f4859f1b3 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -23252,7 +23252,7 @@ get_specified_cursor_type (Lisp_Object arg, int *width) | |||
| 23252 | void | 23252 | void |
| 23253 | set_frame_cursor_types (struct frame *f, Lisp_Object arg) | 23253 | set_frame_cursor_types (struct frame *f, Lisp_Object arg) |
| 23254 | { | 23254 | { |
| 23255 | int width; | 23255 | int width = 1; |
| 23256 | Lisp_Object tem; | 23256 | Lisp_Object tem; |
| 23257 | 23257 | ||
| 23258 | FRAME_DESIRED_CURSOR (f) = get_specified_cursor_type (arg, &width); | 23258 | FRAME_DESIRED_CURSOR (f) = get_specified_cursor_type (arg, &width); |