------------------------------------------------------------ revno: 116703 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2014-03-08 10:28:43 +0200 message: tutorials/TUTORIAL.he: Adapt to the recent changes in TUTORIAL. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2014-03-06 11:12:25 +0000 +++ etc/ChangeLog 2014-03-08 08:28:43 +0000 @@ -1,3 +1,7 @@ +2014-03-08 Eli Zaretskii + + * tutorials/TUTORIAL.he: Adapt to the recent changes in TUTORIAL. + 2014-03-06 Juanma Barranquero * tutorials/TUTORIAL.es: Adapt to change in English language tutorial. === modified file 'etc/tutorials/TUTORIAL.he' --- etc/tutorials/TUTORIAL.he 2014-01-01 08:31:29 +0000 +++ etc/tutorials/TUTORIAL.he 2014-03-08 08:28:43 +0000 @@ -279,7 +279,8 @@ כאשר שורה של טקסט נעשית ארוכה משורה אחת של תצוגה, חלק מהטקסט ממשיך בשורת תצוגה נוספת, היא "שורת ההמשך". על תצוגה גרפית יופיע חץ עקלקל קטן באזור השוליים -- "fringe" שמסמל כי לשורה יש שורת המשך, ואילו על תצוגה -טקסטואלית יופיע תו לוכסן ("/") לאותה תכלית בסוף השורה. +טקסטואלית יופיע תו לוכסן ('/' או '\', תלוי אם הוא בצד שמאל או בצד ימין) +לאותה תכלית, בסוף השורה. >> הקישו טקסט עד שתגיעו לקצה השורה, ואז תמשיכו להקיש עוד טקסט. כתוצאה, תראו שמופיעה שורת המשך. @@ -296,6 +297,12 @@ >> עתה הקישו כדי להחזיר את ה־Newline שמחקתם. +מקש הוא מיוחד בכך שהקשה עליו עשויה לגרום יותר מהכנסת תו +ה־Newline. בתלות בטקסט מסביב יתכן כי Emacs יכניס תווי רווח או TAB אחרי +תו ה־Newline, וזאת כדי ליישר את תחילת השורה החדשה עם הטקסט בשורה +הקודמת. התנהגות זו, שבה הקשה על מקש גורמת לתוצאות מעבר להכנסה פשוטה של +התו המתאים, נקראת "חשמלית" ("electric"). + זכרו כי לרוב הפקודות ב־Emacs אפשר לציין מספר חזרות. גם תוי טקסט שייכים לקבוצת פקודות זו. חזרה על תו טקסט מכניסה אותו מספר פעמים. ------------------------------------------------------------ revno: 116702 fixes bug: http://debbugs.gnu.org/16897 committer: Dmitry Gutov branch nick: trunk timestamp: Sat 2014-03-08 08:56:22 +0200 message: Fix #16897 * lisp/vc/vc-git.el (vc-git-command): Turn FILE-OR-LIST into nil when it only contains the repository root. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-07 14:07:12 +0000 +++ lisp/ChangeLog 2014-03-08 06:56:22 +0000 @@ -1,3 +1,8 @@ +2014-03-08 Dmitry Gutov + + * vc/vc-git.el (vc-git-command): Turn FILE-OR-LIST into nil when + it only contains the repository root. (Bug#16897) + 2014-03-07 Michael Albinus * net/tramp-sh.el (tramp-sh-handle-vc-registered): Run first pass === modified file 'lisp/vc/vc-git.el' --- lisp/vc/vc-git.el 2014-01-22 02:01:40 +0000 +++ lisp/vc/vc-git.el 2014-03-08 06:56:22 +0000 @@ -1210,7 +1210,15 @@ The difference to vc-do-command is that this function always invokes `vc-git-program'." (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program - file-or-list (cons "--no-pager" flags))) + ;; http://debbugs.gnu.org/16897 + (unless (and (not (cdr-safe file-or-list)) + (let ((file (or (car-safe file-or-list) + file-or-list))) + (and file + (eq ?/ (aref file (1- (length file)))) + (equal file (vc-git-root file))))) + file-or-list) + (cons "--no-pager" flags))) (defun vc-git--empty-db-p () "Check if the git db is empty (no commit done yet)." ------------------------------------------------------------ revno: 116701 fixes bug: http://debbugs.gnu.org/16961 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2014-03-07 22:00:33 +0200 message: Fix bug #16961 with visual-order cursor movement and word-wrap. src/xdisp.c (Fmove_point_visually): When under word-wrap, accept also return value of MOVE_POS_MATCH_OR_ZV from move_it_in_display_line_to, when moving from beginning of line to point's position. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-07 15:11:12 +0000 +++ src/ChangeLog 2014-03-07 20:00:33 +0000 @@ -1,3 +1,10 @@ +2014-03-07 Eli Zaretskii + + * xdisp.c (Fmove_point_visually): When under word-wrap, accept + also return value of MOVE_POS_MATCH_OR_ZV from + move_it_in_display_line_to, when moving from beginning of line to + point's position. (Bug#16961) + 2014-03-07 Martin Rudalics * buffer.c (Vbuffer_list_update_hook): Doc-string fix. === modified file 'src/xdisp.c' --- src/xdisp.c 2014-02-28 10:32:11 +0000 +++ src/xdisp.c 2014-03-07 20:00:33 +0000 @@ -20895,7 +20895,12 @@ new_pos = it.current.pos; while (it.current_x + it.pixel_width <= target_x - && rc == MOVE_X_REACHED) + && (rc == MOVE_X_REACHED + /* Under word-wrap, move_it_in_display_line_to + stops at correct coordinates, but sometimes + returns MOVE_POS_MATCH_OR_ZV. */ + || (it.line_wrap == WORD_WRAP + && rc == MOVE_POS_MATCH_OR_ZV))) { int new_x = it.current_x + it.pixel_width; ------------------------------------------------------------ revno: 116700 committer: Paul Eggert branch nick: trunk timestamp: Fri 2014-03-07 11:12:31 -0800 message: Spelling and wording fixes. diff: === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2014-03-05 13:50:48 +0000 +++ doc/lispref/display.texi 2014-03-07 19:12:31 +0000 @@ -3931,7 +3931,7 @@ @item window-divider When a divider is less than three pixels wide, it is drawn solidly with the foreground of this face. For larger dividers this face is used for -the inner part only, exluding the first and last pixel. +the inner part only, excluding the first and last pixel. @item window-divider-first-pixel This is the face used for drawing the first pixel of a divider that is === modified file 'etc/NEWS' --- etc/NEWS 2014-03-06 13:41:58 +0000 +++ etc/NEWS 2014-03-07 19:12:31 +0000 @@ -198,7 +198,7 @@ +++ *** The function `window-in-direction' introduced in Emacs 24.1 now -takes additional arguments for specifiying a reference point, wrapping +takes additional arguments for specifying a reference point, wrapping selection around frame borders, and specifying ways to select the minibuffer window. @@ -792,7 +792,7 @@ to filter the list of packages by a keyword. +++ -*** In the `describe-package' buffer, there are now buttons listing the +*** In the `describe-package' buffer, there are now buttons listing the keywords related to the package. Click on a button to see other packages related to that keyword. === modified file 'lisp/window.el' --- lisp/window.el 2014-03-06 13:41:58 +0000 +++ lisp/window.el 2014-03-07 19:12:31 +0000 @@ -6825,11 +6825,10 @@ (defcustom fit-frame-to-buffer-margins '(nil nil nil nil) "Margins around frame for `fit-frame-to-buffer'. -This option allows to specify the numbers of pixels to be left -free on the left, above, the right, and below a frame that shall -be fit to its buffer. Set these to avoid that such a frame -obscurs other desktop objects like the taskbar. The default is -nil for each side which means to not add any margins. +This specifies the numbers of pixels to be left free on the left, +above, on the right, and below a frame fitted to its buffer. Set +this to avoid obscuring other desktop objects like the taskbar. +The default is nil for each side, which means to not add margins. The value specified here can be overridden for a specific frame by that frame's `fit-frame-to-buffer-margins' parameter, if ------------------------------------------------------------ revno: 116699 committer: Paul Eggert branch nick: trunk timestamp: Fri 2014-03-07 10:57:11 -0800 message: Merge from gnulib. This incorporates: 2014-03-04 stdint: fix missing SIZE_MAX on Android 2013-03-02 sys_types: avoid autoconf warning about gl_SYS_TYPES_H * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. * lib/stdint.in.h, lib/sys_types.in.h, m4/sys_types_h.m4: Update from gnulib. Fix oversight preventing lib/sys/types.h from being generated. * admin/merge-gnulib (GNULIB_TOOL_FLAGS): Don't avoid sys_types. diff: === modified file 'ChangeLog' --- ChangeLog 2014-03-05 19:57:36 +0000 +++ ChangeLog 2014-03-07 18:57:11 +0000 @@ -1,3 +1,12 @@ +2014-03-07 Paul Eggert + + Merge from gnulib, incorporating: + 2014-03-04 stdint: fix missing SIZE_MAX on Android + 2013-03-02 sys_types: avoid autoconf warning about gl_SYS_TYPES_H + * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. + * lib/stdint.in.h, lib/sys_types.in.h, m4/sys_types_h.m4: + Update from gnulib. + 2014-03-05 Glenn Morris * configure.ac: Tweak the "unported" error message. === modified file 'admin/ChangeLog' --- admin/ChangeLog 2014-03-03 04:57:26 +0000 +++ admin/ChangeLog 2014-03-07 18:57:11 +0000 @@ -1,3 +1,8 @@ +2014-03-07 Paul Eggert + + Fix oversight preventing lib/sys/types.h from being generated. + * merge-gnulib (GNULIB_TOOL_FLAGS): Don't avoid sys_types. + 2014-02-06 David Engster * grammars/c.by (function-pointer): Correctly deal with anonymous === modified file 'admin/merge-gnulib' --- admin/merge-gnulib 2014-01-01 07:43:34 +0000 +++ admin/merge-gnulib 2014-03-07 18:57:11 +0000 @@ -48,7 +48,7 @@ --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise - --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types + --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=threadlib --conditional-dependencies --import --no-changelog --no-vc-files --makefile-name=gnulib.mk === modified file 'lib/gnulib.mk' --- lib/gnulib.mk 2014-01-01 07:43:34 +0000 +++ lib/gnulib.mk 2014-03-07 18:57:11 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv update-copyright utimens warnings +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv update-copyright utimens warnings MOSTLYCLEANFILES += core *.stackdump @@ -1549,6 +1549,31 @@ ## end gnulib module sys_time +## begin gnulib module sys_types + +BUILT_SOURCES += sys/types.h + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +sys/types.h: sys_types.in.h $(top_builddir)/config.status + $(AM_V_at)$(MKDIR_P) sys + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ + -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ + < $(srcdir)/sys_types.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += sys/types.h sys/types.h-t + +EXTRA_DIST += sys_types.in.h + +## end gnulib module sys_types + ## begin gnulib module tempname if gl_GNULIB_ENABLED_tempname === modified file 'lib/stdint.in.h' --- lib/stdint.in.h 2014-01-01 07:43:34 +0000 +++ lib/stdint.in.h 2014-03-07 18:57:11 +0000 @@ -38,8 +38,7 @@ other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ -#if defined __ANDROID__ \ - && defined _SYS_TYPES_H_ && !defined __need_size_t +#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else === modified file 'lib/sys_types.in.h' --- lib/sys_types.in.h 2014-01-01 07:43:34 +0000 +++ lib/sys_types.in.h 2014-03-07 18:57:11 +0000 @@ -23,7 +23,9 @@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ +# define _GL_INCLUDING_SYS_TYPES_H #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ +# undef _GL_INCLUDING_SYS_TYPES_H #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H === modified file 'm4/gnulib-comp.m4' --- m4/gnulib-comp.m4 2014-01-01 07:43:34 +0000 +++ m4/gnulib-comp.m4 2014-03-07 18:57:11 +0000 @@ -140,6 +140,7 @@ # Code from module sys_select: # Code from module sys_stat: # Code from module sys_time: + # Code from module sys_types: # Code from module tempname: # Code from module time: # Code from module time_r: @@ -372,6 +373,8 @@ AC_PROG_MKDIR_P gl_HEADER_SYS_TIME_H AC_PROG_MKDIR_P + gl_SYS_TYPES_H + AC_PROG_MKDIR_P gl_HEADER_TIME_H gl_TIME_R if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then @@ -907,6 +910,7 @@ lib/sys_select.in.h lib/sys_stat.in.h lib/sys_time.in.h + lib/sys_types.in.h lib/tempname.c lib/tempname.h lib/time.in.h @@ -1011,6 +1015,7 @@ m4/sys_socket_h.m4 m4/sys_stat_h.m4 m4/sys_time_h.m4 + m4/sys_types_h.m4 m4/tempname.m4 m4/time_h.m4 m4/time_r.m4 === modified file 'm4/sys_types_h.m4' --- m4/sys_types_h.m4 2014-01-01 07:43:34 +0000 +++ m4/sys_types_h.m4 2014-03-07 18:57:11 +0000 @@ -1,10 +1,10 @@ -# sys_types_h.m4 serial 4 +# sys_types_h.m4 serial 5 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_SYS_TYPES_H], +AC_DEFUN_ONCE([gl_SYS_TYPES_H], [ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) gl_NEXT_HEADERS([sys/types.h]) ------------------------------------------------------------ revno: 116698 committer: Lars Ingebrigtsen branch nick: trunk timestamp: Fri 2014-03-07 18:21:35 +0100 message: nnimap respool fix * nnimap.el (nnimap-request-accept-article): Make respooling to nnimap groups work again. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2014-03-07 16:58:25 +0000 +++ lisp/gnus/ChangeLog 2014-03-07 17:21:35 +0000 @@ -1,3 +1,8 @@ +2014-03-07 Lars Ingebrigtsen + + * nnimap.el (nnimap-request-accept-article): Make respooling to nnimap + groups work again. + 2014-03-07 George McNinch (tiny change) * nnir.el (nnir-run-namazu): Parse namazu results that are larger than === modified file 'lisp/gnus/nnimap.el' --- lisp/gnus/nnimap.el 2014-02-07 03:23:46 +0000 +++ lisp/gnus/nnimap.el 2014-03-07 17:21:35 +0000 @@ -1099,6 +1099,14 @@ (nnimap-wait-for-response sequence)))))) (deffoo nnimap-request-accept-article (group &optional server last) + (unless group + ;; We're respooling. Find out where mail splitting would place + ;; this article. + (setq group + (caar + (nnmail-article-group + `(lambda (group) + (nnml-active-number group ,server)))))) (setq group (nnimap-decode-gnus-group group)) (when (nnimap-change-group nil server) (nnmail-check-syntax) ------------------------------------------------------------ revno: 116697 author: George McNinch committer: Lars Ingebrigtsen branch nick: trunk timestamp: Fri 2014-03-07 17:58:25 +0100 message: * nnir.el (nnir-run-namazu): Parse namazu results that are larger than 999 (i.e. "1,342"). diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2014-03-07 15:00:34 +0000 +++ lisp/gnus/ChangeLog 2014-03-07 16:58:25 +0000 @@ -1,3 +1,8 @@ +2014-03-07 George McNinch (tiny change) + + * nnir.el (nnir-run-namazu): Parse namazu results that are larger than + 999 correctly (i.e. "1,342"). + 2014-03-07 Lars Ingebrigtsen * gnus-agent.el (gnus-agent-update-files-total-fetched-for): Don't bug === modified file 'lisp/gnus/nnir.el' --- lisp/gnus/nnir.el 2014-02-01 08:26:31 +0000 +++ lisp/gnus/nnir.el 2014-03-07 16:58:25 +0000 @@ -1487,7 +1487,7 @@ (goto-char (point-min)) (while (re-search-forward - "^\\([0-9]+\\.\\).*\\((score: \\([0-9]+\\)\\))\n\\([^ ]+\\)" + "^\\([0-9,]+\\.\\).*\\((score: \\([0-9]+\\)\\))\n\\([^ ]+\\)" nil t) (setq score (match-string 3) group (file-name-directory (match-string 4)) ------------------------------------------------------------ revno: 116696 committer: martin rudalics branch nick: trunk timestamp: Fri 2014-03-07 16:11:12 +0100 message: Update docs for select-window and buffer-list-update-hook. * buffer.c (Vbuffer_list_update_hook): Doc-string fix. * window.c (Fselect_window): Explain NORECORD and `buffer-list-update-hook' in doc-string. * buffers.texi (The Buffer List): Rename node to Buffer List. Describe `buffer-list-update-hook'. * elisp.texi (Top): "The Buffer List" renamed to "Buffer List". Add node for Window Dividers. * hooks.texi (Standard Hooks): Add reference to `buffer-list-update-hook'. * windows.texi (Selecting Windows): Update description of `select-window'. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-03-07 09:53:23 +0000 +++ doc/lispref/ChangeLog 2014-03-07 15:11:12 +0000 @@ -1,7 +1,14 @@ 2014-03-07 Martin Rudalics + * buffers.texi (The Buffer List): Rename node to Buffer List. + Describe `buffer-list-update-hook'. + * elisp.texi (Top): "The Buffer List" renamed to "Buffer List". + Add node for Window Dividers. + * hooks.texi (Standard Hooks): Add reference to + `buffer-list-update-hook'. * windows.texi (Window Sizes): Describe `window-min-size'. (Splitting Windows): Update description of `split-window'. + (Selecting Windows): Update description of `select-window'. 2014-03-06 Martin Rudalics === modified file 'doc/lispref/buffers.texi' --- doc/lispref/buffers.texi 2014-01-01 07:43:34 +0000 +++ doc/lispref/buffers.texi 2014-03-07 15:11:12 +0000 @@ -25,7 +25,7 @@ * Modification Time:: Determining whether the visited file was changed "behind Emacs's back". * Read Only Buffers:: Modifying text is not allowed in a read-only buffer. -* The Buffer List:: How to look at all the existing buffers. +* Buffer List:: How to look at all the existing buffers. * Creating Buffers:: Functions that create buffers. * Killing Buffers:: Buffers exist until explicitly killed. * Indirect Buffers:: An indirect buffer shares text with some other buffer. @@ -759,7 +759,7 @@ signal an error if the current buffer is read-only. @end defun -@node The Buffer List +@node Buffer List @section The Buffer List @cindex buffer list @@ -910,6 +910,13 @@ window. @end deffn +@defvar buffer-list-update-hook +This is a normal hook run whenever the buffer list changes. Functions +(implicitly) running this hook are @code{get-buffer-create} +(@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}), +@code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see +above) and @code{select-window} (@pxref{Selecting Windows}). +@end defvar @node Creating Buffers @section Creating Buffers === modified file 'doc/lispref/elisp.texi' --- doc/lispref/elisp.texi 2014-03-05 07:41:48 +0000 +++ doc/lispref/elisp.texi 2014-03-07 15:11:12 +0000 @@ -992,7 +992,7 @@ "behind Emacs's back". * Read Only Buffers:: Modifying text is not allowed in a read-only buffer. -* The Buffer List:: How to look at all the existing buffers. +* Buffer List:: How to look at all the existing buffers. * Creating Buffers:: Functions that create buffers. * Killing Buffers:: Buffers exist until explicitly killed. * Indirect Buffers:: An indirect buffer shares text with some @@ -1344,12 +1344,13 @@ for text characters: font, colors, etc. * Fringes:: Controlling window fringes. * Scroll Bars:: Controlling vertical scroll bars. +* Window Dividers:: Separating windows visually. * Display Property:: Enabling special display features. * Images:: Displaying images in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. * Abstract Display:: Emacs's Widget for Object Collections. * Blinking:: How Emacs shows the matching open parenthesis. -* Character Display:: How Emacs displays individual characters. +* Character Display:: How Emacs displays individual characters. * Beeping:: Audible signal to the user. * Window Systems:: Which window system is being used. * Bidirectional Display:: Display of bidirectional scripts, such as @@ -1384,10 +1385,10 @@ * Attribute Functions:: Functions to examine and set face attributes. * Displaying Faces:: How Emacs combines the faces specified for a character. -* Face Remapping:: Remapping faces to alternative definitions. +* Face Remapping:: Remapping faces to alternative definitions. * Face Functions:: How to define and examine faces. * Auto Faces:: Hook for automatic face assignment. -* Basic Faces:: Faces that are defined by default. +* Basic Faces:: Faces that are defined by default. * Font Selection:: Finding the best available font for a face. * Font Lookup:: Looking up the names of available fonts and information about them. === modified file 'doc/lispref/hooks.texi' --- doc/lispref/hooks.texi 2014-02-25 08:41:47 +0000 +++ doc/lispref/hooks.texi 2014-03-07 15:11:12 +0000 @@ -98,7 +98,7 @@ @item buffer-list-update-hook @vindex buffer-list-update-hook -Hook run when the buffer list changes. +Hook run when the buffer list changes (@pxref{Buffer List}). @item buffer-quit-function @vindex buffer-quit-function === modified file 'doc/lispref/windows.texi' --- doc/lispref/windows.texi 2014-03-07 09:53:23 +0000 +++ doc/lispref/windows.texi 2014-03-07 15:11:12 +0000 @@ -1504,16 +1504,27 @@ @defun select-window window &optional norecord This function makes @var{window} the selected window and the window selected within its frame (@pxref{Basic Windows}) and selects that -frame. @var{window} must be a live window. This function also makes -@var{window}'s buffer (@pxref{Buffers and Windows}) current and sets -that buffer's value of @code{point} to the value of @code{window-point} -(@pxref{Window Point}) in @var{window}. The return value is -@var{window}. +frame. It also makes @var{window}'s buffer (@pxref{Buffers and +Windows}) current and sets that buffer's value of @code{point} to the +value of @code{window-point} (@pxref{Window Point}) in @var{window}. +@var{window} must be a live window. The return value is @var{window}. By default, this function also moves @var{window}'s buffer to the front -of the buffer list (@pxref{The Buffer List}), and makes @var{window} the +of the buffer list (@pxref{Buffer List}), and makes @var{window} the most recently selected window. However, if the optional argument @var{norecord} is non-@code{nil}, these additional actions are omitted. + +This function runs @code{buffer-list-update-hook} (@pxref{Buffer List}) +unless @var{norecord} is non-@code{nil}. Note that applications and +internal routines often temporarily select a window in order to simplify +coding. As a rule, such selections (including those made by the macros +@code{save-selected-window} and @code{with-selected-window} below) are +not recorded thus avoiding to pollute @code{buffer-list-update-hook}. +Selections that ``really count'' are those causing a visible change in +the next redisplay of @var{window}'s frame and should be always +recorded. This also means that to run a function each time a window +gets selected, putting it on @code{buffer-list-update-hook} should be +the right choice. @end defun @cindex most recently selected windows @@ -1882,7 +1893,7 @@ return value is the buffer switched to. If @var{buffer-or-name} is @code{nil}, it defaults to the buffer -returned by @code{other-buffer} (@pxref{The Buffer List}). If +returned by @code{other-buffer} (@pxref{Buffer List}). If @var{buffer-or-name} is a string that is not the name of any existing buffer, this function creates a new buffer with that name; the new buffer's major mode is determined by the variable @code{major-mode} @@ -1890,7 +1901,7 @@ Normally, the specified buffer is put at the front of the buffer list---both the global buffer list and the selected frame's buffer -list (@pxref{The Buffer List}). However, this is not done if the +list (@pxref{Buffer List}). However, this is not done if the optional argument @var{norecord} is non-@code{nil}. Sometimes, @code{switch-to-buffer} may be unable to display the buffer @@ -1968,7 +1979,7 @@ was switched to. If @var{buffer-or-name} is @code{nil}, it defaults to the buffer -returned by @code{other-buffer} (@pxref{The Buffer List}). If +returned by @code{other-buffer} (@pxref{Buffer List}). If @var{buffer-or-name} is a string that is not the name of any existing buffer, this function creates a new buffer with that name; the new buffer's major mode is determined by the variable @code{major-mode} @@ -2524,9 +2535,9 @@ If repeated invocations of this command have already shown all buffers previously shown in @var{window}, further invocations will show buffers -from the buffer list of the frame @var{window} appears on (@pxref{The -Buffer List}), trying to skip buffers that are already shown in another -window on that frame. +from the buffer list of the frame @var{window} appears on (@pxref{Buffer +List}), trying to skip buffers that are already shown in another window +on that frame. @end deffn @deffn Command switch-to-next-buffer &optional window @@ -2537,7 +2548,7 @@ If there is no recent invocation of @code{switch-to-prev-buffer} that can be undone, this function tries to show a buffer from the buffer list -of the frame @var{window} appears on (@pxref{The Buffer List}). +of the frame @var{window} appears on (@pxref{Buffer List}). @end deffn By default @code{switch-to-prev-buffer} and @code{switch-to-next-buffer} @@ -2584,7 +2595,7 @@ behaves like @code{delete-windows-on} otherwise. @c FIXME: Does replace-buffer-in-windows _delete_ a window in case (1)? - When @code{bury-buffer} (@pxref{The Buffer List}) operates on the + When @code{bury-buffer} (@pxref{Buffer List}) operates on the selected window (which shows the buffer that shall be buried), it handles case (2) by calling @code{frame-auto-hide-function} (@pxref{Quitting Windows}) to deal with the selected frame. The other @@ -2623,7 +2634,7 @@ hand, a window has been reused for displaying the buffer, you might prefer showing the buffer previously shown in that window, by calling the function @code{switch-to-prev-buffer} (@pxref{Window History}). -Finally, you might want to either bury (@pxref{The Buffer List}) or kill +Finally, you might want to either bury (@pxref{Buffer List}) or kill (@pxref{Killing Buffers}) the window's buffer. The following command uses information on how the window for @@ -2705,11 +2716,12 @@ The function specified by this option is called to automatically hide frames. This function is called with one argument---a frame. -The function specified here is called by @code{bury-buffer} (@pxref{The -Buffer List}) when the selected window is dedicated and shows the buffer -to bury. It is also called by @code{quit-restore-window} (see above) -when the frame of the window to quit has been specially created for -displaying that window's buffer and the buffer is not killed. +The function specified here is called by @code{bury-buffer} +(@pxref{Buffer List}) when the selected window is dedicated and shows +the buffer to bury. It is also called by @code{quit-restore-window} +(see above) when the frame of the window to quit has been specially +created for displaying that window's buffer and the buffer is not +killed. The default is to call @code{iconify-frame} (@pxref{Visibility of Frames}). Alternatively, you may specify either @code{delete-frame} === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-06 13:41:58 +0000 +++ src/ChangeLog 2014-03-07 15:11:12 +0000 @@ -1,3 +1,9 @@ +2014-03-07 Martin Rudalics + + * buffer.c (Vbuffer_list_update_hook): Doc-string fix. + * window.c (Fselect_window): Explain NORECORD and + `buffer-list-update-hook' in doc-string. + 2014-03-06 Martin Rudalics * window.c (Fother_window_for_scrolling): Check that === modified file 'src/buffer.c' --- src/buffer.c 2014-02-13 12:16:42 +0000 +++ src/buffer.c 2014-03-07 15:11:12 +0000 @@ -6284,9 +6284,9 @@ DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook, doc: /* Hook run when the buffer list changes. -Functions running this hook are `get-buffer-create', +Functions running this hook are, `get-buffer-create', `make-indirect-buffer', `rename-buffer', `kill-buffer', -and `bury-buffer-internal'. */); +`bury-buffer-internal' and `select-window'. */); Vbuffer_list_update_hook = Qnil; DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook"); === modified file 'src/window.c' --- src/window.c 2014-03-06 13:41:58 +0000 +++ src/window.c 2014-03-07 15:11:12 +0000 @@ -559,7 +559,7 @@ DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, doc: /* Select WINDOW which must be a live window. Also make WINDOW's frame the selected frame and WINDOW that frame's -selected window. In addition, make WINDOW's buffer current and set that +selected window. In addition, make WINDOW's buffer current and set its buffer's value of `point' to the value of WINDOW's `window-point'. Return WINDOW. @@ -567,8 +567,17 @@ front of the buffer list and do not make this window the most recently selected one. -Note that the main editor command loop sets the current buffer to the -buffer of the selected window before each command. */) +Run `buffer-list-update-hook' unless NORECORD is non-nil. Note that +applications and internal routines often select a window temporarily for +various purposes; mostly, to simplify coding. As a rule, such +selections should be not recorded and therefore will not pollute +`buffer-list-update-hook'. Selections that "really count" are those +causing a visible change in the next redisplay of WINDOW's frame and +should be always recorded. So if you think of running a function each +time a window gets selected put it on `buffer-list-update-hook'. + +Also note that the main editor command loop sets the current buffer to +the buffer of the selected window before each command. */) (register Lisp_Object window, Lisp_Object norecord) { return select_window (window, norecord, 0); ------------------------------------------------------------ revno: 116695 committer: Lars Ingebrigtsen branch nick: trunk timestamp: Fri 2014-03-07 16:00:34 +0100 message: * gnus-agent.el (gnus-agent-update-files-total-fetched-for): Don't bug out if the directory doesn't exist. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2014-03-05 22:54:48 +0000 +++ lisp/gnus/ChangeLog 2014-03-07 15:00:34 +0000 @@ -1,3 +1,8 @@ +2014-03-07 Lars Ingebrigtsen + + * gnus-agent.el (gnus-agent-update-files-total-fetched-for): Don't bug + out if the directory doesn't exist. + 2014-03-05 Lars Ingebrigtsen * gnus-group.el (gnus-group-make-group): Clarify prompt. === modified file 'lisp/gnus/gnus-agent.el' --- lisp/gnus/gnus-agent.el 2014-01-01 07:43:34 +0000 +++ lisp/gnus/gnus-agent.el 2014-03-07 15:00:34 +0000 @@ -4121,8 +4121,8 @@ (defun gnus-agent-group-covered-p (group) (gnus-agent-method-p (gnus-group-method group))) -(defun gnus-agent-update-files-total-fetched-for - (group delta &optional method path) +(defun gnus-agent-update-files-total-fetched-for (group delta + &optional method path) "Update, or set, the total disk space used by the articles that the agent has fetched." (when gnus-agent-total-fetched-hashtb @@ -4135,27 +4135,29 @@ (gnus-sethash path (make-list 3 0) gnus-agent-total-fetched-hashtb))) (file-name-coding-system nnmail-pathname-coding-system)) - (when (listp delta) - (if delta - (let ((sum 0.0) + (when (file-exists-p path) + (when (listp delta) + (if delta + (let ((sum 0.0) + file) + (while (setq file (pop delta)) + (incf sum (float (or (nth 7 (file-attributes + (nnheader-concat + path + (if (numberp file) + (number-to-string file) + file)))) 0)))) + (setq delta sum)) + (let ((sum (- (nth 2 entry))) + (info (directory-files-and-attributes + path nil "^-?[0-9]+$" t)) file) - (while (setq file (pop delta)) - (incf sum (float (or (nth 7 (file-attributes - (nnheader-concat - path - (if (numberp file) - (number-to-string file) - file)))) 0)))) - (setq delta sum)) - (let ((sum (- (nth 2 entry))) - (info (directory-files-and-attributes path nil "^-?[0-9]+$" t)) - file) - (while (setq file (pop info)) - (incf sum (float (or (nth 8 file) 0)))) - (setq delta sum)))) + (while (setq file (pop info)) + (incf sum (float (or (nth 8 file) 0)))) + (setq delta sum)))) - (setq gnus-agent-need-update-total-fetched-for t) - (incf (nth 2 entry) delta))))) + (setq gnus-agent-need-update-total-fetched-for t) + (incf (nth 2 entry) delta)))))) (defun gnus-agent-update-view-total-fetched-for (group agent-over &optional method path) ------------------------------------------------------------ revno: 116694 committer: Michael Albinus branch nick: trunk timestamp: Fri 2014-03-07 15:11:37 +0100 message: * automated/tramp-tests.el (tramp-copy-size-limit): Declare. (tramp-test10-write-region): Extend for out-of-band copy. (tramp-test31-asynchronous-requests): New test. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2014-03-03 04:57:26 +0000 +++ test/ChangeLog 2014-03-07 14:11:37 +0000 @@ -1,3 +1,9 @@ +2014-03-07 Michael Albinus + + * automated/tramp-tests.el (tramp-copy-size-limit): Declare. + (tramp-test10-write-region): Extend for out-of-band copy. + (tramp-test31-asynchronous-requests): New test. + 2014-03-02 Barry O'Reilly * automated/undo-tests.el (undo-test-in-region-not-most-recent): === modified file 'test/automated/tramp-tests.el' --- test/automated/tramp-tests.el 2014-03-03 05:12:12 +0000 +++ test/automated/tramp-tests.el 2014-03-07 14:11:37 +0000 @@ -44,6 +44,7 @@ (declare-function tramp-find-executable "tramp-sh") (declare-function tramp-get-remote-path "tramp-sh") +(defvar tramp-copy-size-limit) ;; There is no default value on w32 systems, which could work out of the box. (defconst tramp-test-temporary-file-directory @@ -83,8 +84,7 @@ (file-writable-p tramp-test-temporary-file-directory)))))) (when (cdr tramp--test-enabled-checked) - ;; Cleanup connection. We don't cleanup for adb, because it - ;; doesn't behave well when is disconnect several times. + ;; Cleanup connection. (tramp-cleanup-connection (tramp-dissect-file-name tramp-test-temporary-file-directory) nil 'keep-password)) @@ -662,8 +662,16 @@ (write-region 3 5 tmp-name)) (with-temp-buffer (insert-file-contents tmp-name) - (should (string-equal (buffer-string) "34")))) - (ignore-errors (delete-file tmp-name))))) + (should (string-equal (buffer-string) "34"))) + ;; Trigger out-of-band copy. + (let ((string "")) + (while (<= (length string) tramp-copy-size-limit) + (setq string (concat string (md5 string)))) + (write-region string nil tmp-name) + (with-temp-buffer + (insert-file-contents tmp-name) + (should (string-equal (buffer-string) string))))) + (ignore-errors (delete-file tmp-name))))) (ert-deftest tramp-test11-copy-file () "Check `copy-file'." @@ -1314,6 +1322,96 @@ (sort `(,arabic ,chinese ,russian) 'string-lessp)))) (ignore-errors (delete-directory tmp-name 'recursive))))) +;; This test is inspired by Bug#16928. +(ert-deftest tramp-test31-asynchronous-requests () + "Check parallel asynchronous requests. +Such requests could arrive from timers, process filters and +process sentinels. They shall not disturb each other." + ;; Mark as failed until bug has been fixed. + :expected-result :failed + (skip-unless (tramp--test-enabled)) + (skip-unless + (eq + (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) + 'tramp-sh-file-name-handler)) + + ;; Keep instrumentation verbosity 0 until Tramp bug is fixed. This + ;; has the side effect, that this test fails instead to abort. Good + ;; for hydra. + (tramp--instrument-test-case 0 + (let* ((tmp-name (tramp--test-make-temp-name)) + (default-directory tmp-name) + (remote-file-name-inhibit-cache t) + timer buffers kill-buffer-query-functions) + + (unwind-protect + (progn + (make-directory tmp-name) + + ;; Setup a timer in order to raise an ordinary command again + ;; and again. `vc-registered' is well suited, because there + ;; are many checks. + (setq + timer + (run-at-time + 0 1 + (lambda () + (when buffers + (vc-registered + (buffer-name (nth (random (length buffers)) buffers))))))) + + ;; Create temporary buffers. The number of buffers + ;; corresponds to the number of processes; it could be + ;; increased in order to make pressure on Tramp. + (dotimes (i 5) + (add-to-list 'buffers (generate-new-buffer "*temp*"))) + + ;; Open asynchronous processes. Set process sentinel. + (dolist (buf buffers) + (async-shell-command "read line; touch $line; echo $line" buf) + (set-process-sentinel + (get-buffer-process buf) + (lambda (proc _state) + (delete-file (buffer-name (process-buffer proc)))))) + + ;; Send a string. Use a random order of the buffers. Mix + ;; with regular operation. + (let ((buffers (copy-sequence buffers)) + buf) + (while buffers + (setq buf (nth (random (length buffers)) buffers)) + (process-send-string + (get-buffer-process buf) (format "'%s'\n" buf)) + (file-attributes (buffer-name buf)) + (setq buffers (delq buf buffers)))) + + ;; Wait until the whole output has been read. + (with-timeout ((* 10 (length buffers)) + (ert-fail "`async-shell-command' timed out")) + (let ((buffers (copy-sequence buffers)) + buf) + (while buffers + (setq buf (nth (random (length buffers)) buffers)) + (if (ignore-errors + (memq (process-status (get-buffer-process buf)) + '(run open))) + (accept-process-output (get-buffer-process buf) 0.1) + (setq buffers (delq buf buffers)))))) + + ;; Check. + (dolist (buf buffers) + (with-current-buffer buf + (should + (string-equal (format "'%s'\n" buf) (buffer-string))))) + (should-not + (directory-files tmp-name nil directory-files-no-dot-files-regexp))) + + ;; Cleanup. + (ignore-errors (cancel-timer timer)) + (ignore-errors (delete-directory tmp-name 'recursive)) + (dolist (buf buffers) + (ignore-errors (kill-buffer buf))))))) + ;; TODO: ;; * dired-compress-file @@ -1327,8 +1425,9 @@ ;; * set-file-selinux-context ;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?). -;; * Fix `tramp-test28-shell-command' on MS Windows (`process-send-eof'?). +;; * Fix `tramp-test28-shell-command' on MS Windows (nasty plink message). ;; * Fix `tramp-test30-utf8' on MS Windows. Seems to be in `directory-files'. +;; * Fix Bug#16928. Set expected error of `tramp-test31-asynchronous-requests'. (defun tramp-test-all (&optional interactive) "Run all tests for \\[tramp]." ------------------------------------------------------------ revno: 116693 committer: Michael Albinus branch nick: trunk timestamp: Fri 2014-03-07 15:07:12 +0100 message: * net/tramp-sh.el (tramp-sh-handle-vc-registered): Run first pass only when `remote-file-name-inhibit-cache' is nil. (tramp-sh-file-name-handler): Use `tramp-error'. Simplify code. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-07 00:01:19 +0000 +++ lisp/ChangeLog 2014-03-07 14:07:12 +0000 @@ -1,3 +1,9 @@ +2014-03-07 Michael Albinus + + * net/tramp-sh.el (tramp-sh-handle-vc-registered): Run first pass + only when `remote-file-name-inhibit-cache' is nil. + (tramp-sh-file-name-handler): Use `tramp-error'. Simplify code. + 2014-03-06 Martin Rudalics * window.el (fit-frame-to-buffer, fit-frame-to-buffer-margins): === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2014-03-04 14:40:38 +0000 +++ lisp/net/tramp-sh.el 2014-03-07 14:07:12 +0000 @@ -3306,48 +3306,49 @@ (with-tramp-progress-reporter v 3 (format "Checking `vc-registered' for %s" file) - ;; There could be new files, created by the vc backend. We - ;; cannot reuse the old cache entries, therefore. - (let (tramp-vc-registered-file-names - (remote-file-name-inhibit-cache (current-time)) - (file-name-handler-alist - `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) - - ;; Here we collect only file names, which need an operation. - (ignore-errors (tramp-run-real-handler 'vc-registered (list file))) - (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) - - ;; Send just one command, in order to fill the cache. - (when tramp-vc-registered-file-names - (tramp-maybe-send-script - v - (format tramp-vc-registered-read-file-names - (tramp-get-file-exists-command v) - (format "%s -r" (tramp-get-test-command v))) - "tramp_vc_registered_read_file_names") - - (dolist - (elt - (ignore-errors - ;; We cannot use `tramp-send-command-and-read', - ;; because this does not cooperate well with - ;; heredoc documents. - (tramp-send-command - v - (format - "tramp_vc_registered_read_file_names <<'%s'\n%s\n%s\n" - tramp-end-of-heredoc - (mapconcat 'tramp-shell-quote-argument - tramp-vc-registered-file-names - "\n") - tramp-end-of-heredoc)) - (with-current-buffer (tramp-get-connection-buffer v) - ;; Read the expression. - (goto-char (point-min)) - (read (current-buffer))))) - - (tramp-set-file-property - v (car elt) (cadr elt) (cadr (cdr elt)))))) + (unless remote-file-name-inhibit-cache + ;; There could be new files, created by the vc backend. We + ;; cannot reuse the old cache entries, therefore. + (let (tramp-vc-registered-file-names + (remote-file-name-inhibit-cache (current-time)) + (file-name-handler-alist + `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) + + ;; Here we collect only file names, which need an operation. + (ignore-errors (tramp-run-real-handler 'vc-registered (list file))) + (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) + + ;; Send just one command, in order to fill the cache. + (when tramp-vc-registered-file-names + (tramp-maybe-send-script + v + (format tramp-vc-registered-read-file-names + (tramp-get-file-exists-command v) + (format "%s -r" (tramp-get-test-command v))) + "tramp_vc_registered_read_file_names") + + (dolist + (elt + (ignore-errors + ;; We cannot use `tramp-send-command-and-read', + ;; because this does not cooperate well with + ;; heredoc documents. + (tramp-send-command + v + (format + "tramp_vc_registered_read_file_names <<'%s'\n%s\n%s\n" + tramp-end-of-heredoc + (mapconcat 'tramp-shell-quote-argument + tramp-vc-registered-file-names + "\n") + tramp-end-of-heredoc)) + (with-current-buffer (tramp-get-connection-buffer v) + ;; Read the expression. + (goto-char (point-min)) + (read (current-buffer))))) + + (tramp-set-file-property + v (car elt) (cadr elt) (cadr (cdr elt))))))) ;; Second run. Now all `file-exists-p' or `file-readable-p' ;; calls shall be answered from the file cache. We unset @@ -3363,17 +3364,18 @@ Fall back to normal file name handler if no Tramp handler exists." (when (and tramp-locked (not tramp-locker)) (setq tramp-locked nil) - (signal 'file-error (list "Forbidden reentrant call of Tramp"))) + (tramp-error + (car-safe tramp-current-connection) 'file-error + "Forbidden reentrant call of Tramp")) (let ((tl tramp-locked)) + (setq tramp-locked t) (unwind-protect - (progn - (setq tramp-locked t) - (let ((tramp-locker t)) - (save-match-data - (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) - (if fn - (apply (cdr fn) args) - (tramp-run-real-handler operation args)))))) + (let ((tramp-locker t)) + (save-match-data + (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) + (if fn + (apply (cdr fn) args) + (tramp-run-real-handler operation args))))) (setq tramp-locked tl)))) (defun tramp-vc-file-name-handler (operation &rest args) ------------------------------------------------------------ revno: 116692 committer: martin rudalics branch nick: trunk timestamp: Fri 2014-03-07 10:53:23 +0100 message: Add/update elisp texinfo for window-min-size and split-window. * windows.texi (Window Sizes): Describe `window-min-size'. (Splitting Windows): Update description of `split-window'. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-03-06 13:41:58 +0000 +++ doc/lispref/ChangeLog 2014-03-07 09:53:23 +0000 @@ -1,3 +1,8 @@ +2014-03-07 Martin Rudalics + + * windows.texi (Window Sizes): Describe `window-min-size'. + (Splitting Windows): Update description of `split-window'. + 2014-03-06 Martin Rudalics * frames.texi (Size and Position): Rewrite entries for === modified file 'doc/lispref/windows.texi' --- doc/lispref/windows.texi 2014-03-06 13:41:58 +0000 +++ doc/lispref/windows.texi 2014-03-07 09:53:23 +0000 @@ -656,6 +656,36 @@ @xref{Resizing Windows}. @end defvar +The following function tells how small a specific window can get taking +into account the sizes of its areas and the values of +@code{window-min-height}, @code{window-min-width} and +@code{window-size-fixed}. + +@defun window-min-size &optional window horizontal ignore pixelwise +This function returns the minimum size of @var{window}. @var{window} +must be a valid window and defaults to the selected one. The optional +argument @var{horizontal} non-@code{nil} means to return the minimum +number of columns of @var{window}; otherwise return the minimum number +of @var{window}'s lines. + +The return value makes sure that all components of @var{window} remain +fully visible if @var{window}'s size were actually set to it. With +@var{horizontal} @code{nil} it includes the mode and header line and the +bottom divider. With @var{horizontal} non-@code{nil} it includes the +fringes, a scroll bar, and a right divider, if present. It does not, +however, include the space reserved for the margins. + +The optional argument @var{ignore}, if non-@code{nil}, means ignore +restrictions imposed by fixed size windows, @code{window-min-height} or +@code{window-min-width} settings. If @var{ignore} equals @code{safe}, +live windows may get as small as @code{window-safe-min-height} lines and +@code{window-safe-min-width} columns. If @var{ignore} is a window, +ignore restrictions for that window only. Any other non-@code{nil} +value means ignore all of the above restrictions for all windows. + +The optional argument @var{pixelwise} non-@code{nil} means to return the +minimum size of @var{window} counted in pixels. +@end defun @node Resizing Windows @section Resizing Windows @@ -718,7 +748,7 @@ The optional argument @var{ignore} has the same meaning as for the function @code{window-resizable} above. -If the optional argument @code{pixelwise} is non-@code{nil}, +If the optional argument @var{pixelwise} is non-@code{nil}, @var{delta} will be interpreted as pixels. The choice of which window edges this function alters depends on the @@ -879,7 +909,7 @@ This section describes functions for creating a new window by @dfn{splitting} an existing one. -@defun split-window &optional window size side +@defun split-window &optional window size side pixelwise This function creates a new live window next to the window @var{window}. If @var{window} is omitted or @code{nil}, it defaults to the selected window. That window is ``split'', and reduced in @@ -894,15 +924,25 @@ window is given @minus{}@var{size} lines (or columns). If @var{size} is @code{nil}, this function obeys the variables -@code{window-min-height} and @code{window-min-width}. @xref{Change -Window,,Deleting and Rearranging Windows, emacs, The GNU Emacs -Manual}. Thus, it signals an error if splitting would result in -making a window smaller than those variables specify. However, a +@code{window-min-height} and @code{window-min-width} (@pxref{Window +Sizes}). Thus, it signals an error if splitting would result in making +a window smaller than those variables specify. However, a non-@code{nil} value for @var{size} causes those variables to be -ignored; in that case, the smallest allowable window is considered to -be one that has space for a text area one line tall and/or two columns +ignored; in that case, the smallest allowable window is considered to be +one that has space for a text area one line tall and/or two columns wide. +Hence, if @var{size} is specified, it's the caller's responsibility to +check whether the emanating windows are large enough to encompass all +areas like a mode line or a scroll bar. The function +@code{window-min-size} (@pxref{Window Sizes}) can be used to determine +the minimum requirements of @var{window} in this regard. Since the new +window usually ``inherits'' areas like the mode line or the scroll bar +from @var{window}, that function is also a good guess for the minimum +size of the new window. The caller should specify a smaller size only +if it correspondingly removes an inherited area before the next +redisplay. + The optional third argument @var{side} determines the position of the new window relative to @var{window}. If it is @code{nil} or @code{below}, the new window is placed below @var{window}. If it is @@ -914,6 +954,10 @@ window is placed on the left of @var{window}. In both these cases, @var{size} specifies a total window width, in columns. +The optional fourth argument @var{pixelwise}, if non-@code{nil}, means +to interpret @var{size} in units of pixels, instead of lines and +columns. + If @var{window} is a live window, the new window inherits various properties from it, including margins and scroll bars. If @var{window} is an internal window, the new window inherits the ------------------------------------------------------------ revno: 116691 committer: Juanma Barranquero branch nick: trunk timestamp: Fri 2014-03-07 01:01:19 +0100 message: lisp/ChangeLog*: Fix typos. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-06 13:41:58 +0000 +++ lisp/ChangeLog 2014-03-07 00:01:19 +0000 @@ -34,8 +34,8 @@ 2014-03-05 Martin Rudalics - * window.el (window-min-height, window-min-width): Rewrite - doc-strings. + * window.el (window-min-height, window-min-width): + Rewrite doc-strings. (window-body-size): Add PIXELWISE argument to make it consistent with its callees. @@ -48,8 +48,8 @@ * net/eww.el (eww-mode-map): [tab] doesn't work on tty. (eww-setup-buffer): Clear next/prev/etc more reliably. - (eww-textarea-map): [tab] doesn't work on tty. Reported by Mario - Lang. + (eww-textarea-map): [tab] doesn't work on tty. + Reported by Mario Lang. * net/shr.el (shr-map): Ditto. @@ -219,10 +219,10 @@ 2014-02-28 Martin Rudalics Revert recent with-temp-buffer-window change (Bug#16816, Bug#16882). - * window.el (with-temp-buffer-window): Revert change from - 2014-02-21. Suggested by Thierry Volpiatto. - . Fix doc-string based on a - suggestion by Nicolas Richard . + * window.el (with-temp-buffer-window): Revert change from 2014-02-21. + Suggested by Thierry Volpiatto . + Fix doc-string based on a suggestion by Nicolas Richard + . * help.el (with-help-window): Fix doc-string. 2014-02-28 Ivan Kanis @@ -426,7 +426,7 @@ 2014-02-22 Daniel Colascione - * net/secrets.el (secrets-create-item,secrets-search-items): + * net/secrets.el (secrets-create-item, secrets-search-items): Check that attribute values are strings, avoiding the construction of invalid dbus messages. @@ -5647,7 +5647,7 @@ (ruby-smie-rules): Adjust handling of open-paren, now that it's never followed by implicit semi-colons. Add rule for string concatenation and for indentation at BOB. - (ruby-forward-sexp, ruby-backward-sexp): Adjust for when smie is in use. + (ruby-forward-sexp, ruby-backward-sexp): Adjust for when SMIE is in use. * emacs-lisp/smie.el (smie-next-sexp): Don't go back to pos before calling next-sexp, since next-token may have skipped chars which @@ -10634,7 +10634,7 @@ * eshell/em-term.el (eshell-visual-command-p): New function. (eshell-term-initialize): Move long lambda to separate function eshell-visual-command-p. - * eshell/em-dirs.el (eshell-dirs-initialise): + * eshell/em-dirs.el (eshell-dirs-initialize): * eshell/em-script.el (eshell-script-initialize): Add missing #' to lambda. @@ -10776,7 +10776,7 @@ 2013-06-05 Leo Liu - Re-implement smie matching block highlight using + Re-implement SMIE matching block highlight using show-paren-data-function. (Bug#14395) * emacs-lisp/smie.el (smie-matching-block-highlight) (smie--highlight-matching-block-overlay) @@ -12936,9 +12936,9 @@ 2013-04-19 Masatake YAMATO * progmodes/sh-script.el (sh-imenu-generic-expression): - Handle function names with a single character. (Bug#14111) + Handle function names with a single character. (Bug#14111) -2013-04-19 Dima Kogan (tiny change) +2013-04-19 Dima Kogan (tiny change) * progmodes/gud.el (gud-perldb-marker-filter): Understand position info for subroutines defined in an eval (bug#14182). === modified file 'lisp/ChangeLog.15' --- lisp/ChangeLog.15 2014-01-21 08:49:46 +0000 +++ lisp/ChangeLog.15 2014-03-07 00:01:19 +0000 @@ -12151,7 +12151,7 @@ (version-list-not-zero, version<, version<=, version=): Doc fix. (Bug#5744). -2010-02-31 Dan Nicolaescu +2010-03-31 Dan Nicolaescu * vc.el (vc-root-diff): Doc fix.