[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r117499: Merge from emacs-24; up to r117365
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] trunk r117499: Merge from emacs-24; up to r117365 |
Date: |
Wed, 09 Jul 2014 02:04:59 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 117499 [merge]
revision-id: address@hidden
parent: address@hidden
parent: address@hidden
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2014-07-08 19:04:12 -0700
message:
Merge from emacs-24; up to r117365
modified:
doc/emacs/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6227
doc/emacs/search.texi
search.texi-20091113204419-o5vbwnq5f7feedwu-6276
doc/lispref/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6155
doc/lispref/debugging.texi
debugging.texi-20091113204419-o5vbwnq5f7feedwu-6171
doc/misc/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6331
doc/misc/todo-mode.texi todomode.texi-20130804212326-csuj921rpk9gy1gz-1
etc/NEWS news-20100311060928-aoit31wvzf25yr1z-1
etc/TODO todo-20091113204419-o5vbwnq5f7feedwu-1501
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/calendar/todo-mode.el todos.el-20120911155047-0ytqo2nidwqquefa-1
lisp/desktop.el desktop.el-20091113204419-o5vbwnq5f7feedwu-591
lisp/emacs-lisp/edebug.el edebug.el-20091113204419-o5vbwnq5f7feedwu-483
lisp/emulation/cua-rect.el cuarect.el-20091113204419-o5vbwnq5f7feedwu-2417
lisp/facemenu.el facemenu.el-20091113204419-o5vbwnq5f7feedwu-786
lisp/faces.el faces.el-20091113204419-o5vbwnq5f7feedwu-562
lisp/progmodes/octave.el
octavemod.el-20091113204419-o5vbwnq5f7feedwu-1028
lisp/progmodes/ruby-mode.el
rubymode.el-20091113204419-o5vbwnq5f7feedwu-8804
lisp/progmodes/sh-script.el shscript.el-20091113204419-o5vbwnq5f7feedwu-727
lisp/startup.el startup.el-20091113204419-o5vbwnq5f7feedwu-260
src/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1438
src/syntax.c syntax.c-20091113204419-o5vbwnq5f7feedwu-180
src/w32.c w32.c-20091113204419-o5vbwnq5f7feedwu-808
src/window.c window.c-20091113204419-o5vbwnq5f7feedwu-231
src/xdisp.c xdisp.c-20091113204419-o5vbwnq5f7feedwu-240
test/indent/shell.sh shell.sh-20110209185043-iuyrh0is1gz0s4w6-1
=== modified file 'doc/emacs/ChangeLog'
--- a/doc/emacs/ChangeLog 2014-07-03 06:00:53 +0000
+++ b/doc/emacs/ChangeLog 2014-07-09 02:04:12 +0000
@@ -1,3 +1,8 @@
+2014-07-09 Juri Linkov <address@hidden>
+
+ * search.texi (Regexp Search): Update lax space matching that is
+ not active in regexp search by default now. (Bug#17901)
+
2014-07-03 Glenn Morris <address@hidden>
* help.texi (Misc Help):
=== modified file 'doc/emacs/search.texi'
--- a/doc/emacs/search.texi 2014-04-29 14:45:24 +0000
+++ b/doc/emacs/search.texi 2014-07-03 23:52:42 +0000
@@ -602,12 +602,13 @@
They also have separate search rings, which you can access with
@kbd{M-p} and @kbd{M-n}.
- Just as in ordinary incremental search, any @key{SPC} typed in
-incremental regexp search matches any sequence of one or more
-whitespace characters. The variable @code{search-whitespace-regexp}
-specifies the regexp for the lax space matching, and @kbd{M-s @key{SPC}}
-(@code{isearch-toggle-lax-whitespace}) toggles the feature.
address@hidden Isearch}.
+ Unlike ordinary incremental search, incremental regexp search
+do not use lax space matching by default. To toggle this feature
+use @kbd{M-s @key{SPC}} (@code{isearch-toggle-lax-whitespace}).
+Then any @key{SPC} typed in incremental regexp search will match
+any sequence of one or more whitespace characters. The variable
address@hidden specifies the regexp for the lax
+space matching. @xref{Special Isearch}.
In some cases, adding characters to the regexp in an incremental
regexp search can make the cursor move back and start again. For
=== modified file 'doc/lispref/ChangeLog'
--- a/doc/lispref/ChangeLog 2014-07-03 06:00:53 +0000
+++ b/doc/lispref/ChangeLog 2014-07-09 02:04:12 +0000
@@ -1,3 +1,8 @@
+2014-07-09 Stefan Monnier <address@hidden>
+
+ * debugging.texi (Function Debugging, Debugger Commands):
+ Update debug-on-entry w.r.t behavior after redefinitions (bug#17902).
+
2014-07-03 Glenn Morris <address@hidden>
* help.texi (Help Functions): "Online" help doesn't mean what it
=== modified file 'doc/lispref/debugging.texi'
--- a/doc/lispref/debugging.texi 2014-02-13 08:26:01 +0000
+++ b/doc/lispref/debugging.texi 2014-07-08 18:24:39 +0000
@@ -226,9 +226,7 @@
@deffn Command debug-on-entry function-name
This function requests @var{function-name} to invoke the debugger each
-time it is called. It works by inserting the form
address@hidden(implement-debug-on-entry)} into the function definition as the
-first form.
+time it is called.
Any function or macro defined as Lisp code may be set to break on
entry, regardless of whether it is interpreted code or compiled code.
@@ -244,11 +242,6 @@
up to invoke the debugger on entry, @code{debug-on-entry} does nothing.
@code{debug-on-entry} always returns @var{function-name}.
address@hidden:} if you redefine a function after using
address@hidden on it, the code to enter the debugger is
-discarded by the redefinition. In effect, redefining the function
-cancels the break-on-entry feature for that function.
-
Here's an example to illustrate use of this function:
@example
@@ -277,12 +270,6 @@
------ Buffer: *Backtrace* ------
@end group
address@hidden
-(symbol-function 'fact)
- @result{} (lambda (n)
- (debug (quote debug))
- (if (zerop n) 1 (* n (fact (1- n)))))
address@hidden group
@end example
@end deffn
@@ -461,9 +448,7 @@
@item l
Display a list of functions that will invoke the debugger when called.
This is a list of functions that are set to break on entry by means of
address@hidden @strong{Warning:} if you redefine such a
-function and thus cancel the effect of @code{debug-on-entry}, it may
-erroneously show up in this list.
address@hidden
@item v
Toggle the display of local variables of the current stack frame.
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog 2014-07-03 09:10:05 +0000
+++ b/doc/misc/ChangeLog 2014-07-09 02:04:12 +0000
@@ -1,3 +1,9 @@
+2014-07-09 Stephen Berman <address@hidden>
+
+ * todo-mode.texi (Levels of Organization): Comment out statement
+ that Emacs recognizes todo files by their extension, since this
+ feature has been removed due to bug#17482.
+
2014-07-03 Michael Albinus <address@hidden>
* trampver.texi: Update release number.
=== modified file 'doc/misc/todo-mode.texi'
--- a/doc/misc/todo-mode.texi 2014-06-10 02:20:31 +0000
+++ b/doc/misc/todo-mode.texi 2014-07-09 02:04:12 +0000
@@ -158,11 +158,10 @@
All todo files reside in a single directory, whose location is specified
by the user option @code{todo-directory}. This directory may also
contain other types of Todo files, which are discussed later
-(@pxref{Todo Archive Mode} and @ref{Todo Filtered Items Mode}). Emacs
-recognizes Todo files by their extension, so when you visit the files
-the buffer is in the appropriate mode and the current category is
-correctly displayed.
-
+(@pxref{Todo Archive Mode} and @ref{Todo Filtered Items Mode}).
address@hidden Emacs recognizes Todo files by their extension, so when you visit
address@hidden the files the buffer is in the appropriate mode and the current
address@hidden category is correctly displayed.
When you use a Todo mode command to create a todo file, the extension
@samp{.todo} is automatically added to the base name you choose (as a
rule, this name is also used for the other types of Todo files, which
=== modified file 'etc/NEWS'
--- a/etc/NEWS 2014-07-08 08:49:18 +0000
+++ b/etc/NEWS 2014-07-09 02:04:12 +0000
@@ -1166,11 +1166,11 @@
Some languages match those as »...«, and others as «...», so it is
better for Emacs to stay neutral by default.
-** `read-event' does not return decoded chars in ttys any more.
-As was the case in Emacs 22 and before, the decoding of terminal
-input, according to `keyboard-coding-system', is not performed in
-`read-event' any more. But unlike in Emacs 22, this decoding is still
-done before `input-decode-map', `function-key-map', etc.
+** `read-event' does not always decode chars in ttys any more. As was the case
+in Emacs 22 and before, `read-event' (and `read-char') by default read raw
+bytes from the terminal. If you want to read decoded chars instead (as was
+always the case in Emacs-23, for example), pass a non-nil
+`inherit-input-method' argument.
** In `symbol-function', nil and "unbound" are indistinguishable.
`symbol-function' does not signal a `void-function' error any more.
@@ -1519,10 +1519,13 @@
"Interlocking" in the Emacs User Manual for the details. To disable
file locking, customize `create-lockfiles' to nil.
-** The "generate a backtrace on fatal error" feature now works on MS Windows.
+** The "generate a backtrace on fatal error" feature now works on MS-Windows.
The backtrace is written to the 'emacs_backtrace.txt' file in the
directory where Emacs was running.
+** The `network-interface-list' and `network-interface-info' functions
+are now available on MS-Windows.
+
** The variable `buffer-file-type' is no longer supported.
Setting it has no effect, and %t in the mode-line format is ignored.
Likewise, `file-name-buffer-file-type-alist' is now obsolete, and
=== modified file 'etc/TODO'
--- a/etc/TODO 2014-06-08 00:35:27 +0000
+++ b/etc/TODO 2014-07-09 02:04:12 +0000
@@ -167,14 +167,6 @@
** Find a proper fix for rcirc multiline nick adding.
http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00684.html
-** Implement `network-interface-list' and `network-interface-info'
-on MS-Windows. Hint: the information is present in the Registry,
-under the keys
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\
-and
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<device>\
-where <device> is the network device found under the first key.
-
** Check for any included packages that define obsolete bug-reporting commands.
Change them to use report-emacs-bug.
*** Related functions:
@@ -232,8 +224,15 @@
** FFI (foreign function interface)
See eg http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00246.html
+One way of doing this is to start with fx's dynamic loading, and use it
+to implement things like auto-loaded buffer parsers and database
+access in cases which need more than Lisp.
+
** Replace unexec with a more portable form of dumping
See eg http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01034.html
+ http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00452.html
+
+One way is to provide portable undumping using mmap (per gerd design).
** Imenu could be extended into a file-structure browsing mechanism
using code like that of customize-groups.
@@ -260,13 +259,15 @@
by http://savannah.nongnu.org/projects/emacs-rtf/, which is still in
very early stages.
+ Another place to look is the Wikipedia article at
+ http://en.wikipedia.org/wiki/Rich_Text_Format
+
+ It currently points to the latest spec of RTF v1.9.1 at
+ http://www.microsoft.com/en-us/download/details.aspx?id=10725
+
** Implement primitive and higher-level functions to allow filling
properly with variable-pitch faces.
-** Implement a smoother vertical scroll facility, one that allows
- C-v to scroll through a tall image. The primitive operations
- posn-at-point and posn-at-x-y should now make it doable in elisp.
-
** Implement intelligent search/replace, going beyond query-replace
(see http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf).
@@ -301,9 +302,6 @@
Maybe making Lucid menus work like Gtk's (i.e. just force utf-8) is good
enough now that Emacs can encode most chars into utf-8.
-** Remove the limitation that window and frame widths and heights can
- be only full columns/lines.
-
** The GNUstep port needs some serious attention, ideally from someone
familiar with GNUstep and Objective C.
@@ -317,6 +315,7 @@
** Allow frames(terminals) created by emacsclient to inherit their environment
from the emacsclient process.
+
** Remove the default toggling behavior of minor modes when called from elisp
rather than interactively. This a trivial one-liner in easy-mode.el.
@@ -388,23 +387,6 @@
user-selected input method, with the default being the union of
latin-1-prefix and latin-1-postfix.
-** Switch the Windows port to using Unicode keyboard input (maybe).
- Based on http://msdn2.microsoft.com/en-us/library/ms633586.aspx,
- this boils down to (1) calling RegisterClassW function to register
- Emacs windows, and (2) modifying ALL system messages to use Unicode.
- In particular, WM_CHAR messages, which result from keyboard input,
- will then come in encoded in UTF-16.
-
- One advantage of switching to Unicode is to toss encoded-kbd usage,
- which will solve the problem with binding non-ASCII keys with modifiers.
-
- Problem: using this on Windows 9x/ME requires installing the
- Microsoft Layer for Unicode (MSLU), which might not implement all
- the required functionality that is available built-in on Windows XP
- and later. We should not make this change if it would pressure
- users of unauthorized copies of older versions of Windows to
- downgrade to versions that require activation.
-
** Implement a clean way to use different major modes for
different parts of a buffer. This could be useful in editing
Bison input files, for instance, or other kinds of text
@@ -452,9 +434,6 @@
multiple inheritance ? faster where-is ? no more fix_submap_inheritance ?
what else ?
-** Provide real menus on ttys. The MS-DOS implementation can serve as
- an example how to do part of this; see the XMenu* functions on msdos.c.
-
** Implement popular parts of the rest of the CL functions as compiler
macros in cl-macs. [Is this still relevant now that cl-lib exists?]
@@ -518,15 +497,9 @@
tree displays generally, mode-line mail indicator. [See work done
already for Emacs 23 and consult fx.]
-** Do something to make rms happy with fx's dynamic loading, and use it
- to implement things like auto-loaded buffer parsers and database
- access in cases which need more than Lisp.
-
** Extend ps-print to deal with multiple font sizes, images, and extra
encodings.
-** Provide portable undumping using mmap (per gerd design).
-
** Make byte-compile avoid binding an expanded defsubst's args
when the body only calls primitives.
@@ -735,7 +708,7 @@
Try (setq image-type-header-regexps nil) for a quick hack to prefer
ImageMagick over the jpg loader.
-*** For some reason its unbearably slow to look at a page in a large
+*** For some reason it's unbearably slow to look at a page in a large
image bundle using the :index feature. The ImageMagick "display"
command is also a bit slow, but nowhere near as slow as the Emacs
code. It seems ImageMagick tries to unpack every page when loading the
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2014-07-08 19:33:37 +0000
+++ b/lisp/ChangeLog 2014-07-09 02:04:12 +0000
@@ -1,3 +1,66 @@
+2014-07-09 Stefan Monnier <address@hidden>
+
+ * progmodes/sh-script.el (sh-smie-sh-rules): Don't align with a && in
+ the middle of a line (bug#17896).
+
+2014-07-09 Juri Linkov <address@hidden>
+
+ * startup.el (command-line): Append displaying the warning about
+ the errors in the init file to the end of `after-init-hook'.
+ (Bug#17927)
+
+ * faces.el (face-name): Return input arg `face' as-is
+ when it's not a symbol.
+ (x-resolve-font-name): Don't check if the face is a symbol.
+ (Bug#17956)
+
+ * facemenu.el (list-colors-print): In help-echo format use %.2f
+ instead of %d because now HSV values are floating-point components
+ between 0.0 and 1.0.
+
+2014-07-09 Glenn Morris <address@hidden>
+
+ * emulation/cua-rect.el (cua--activate-rectangle):
+ Avoid setting cua--rectangle to nil. (Bug#17877)
+
+2014-07-09 Stephen Berman <address@hidden>
+
+ * calendar/todo-mode.el: Fix wrong-type-argument error when
+ marking multiple consecutive items.
+ (todo-toggle-mark-item): Don't try to mark the empty lines at the
+ end of the todo and done items sections. Note in doc string that
+ items marked by passing a numeric prefix argument can include the
+ last todo and first done items.
+ (todo-mark-category): Don't try to mark the empty line between the
+ todo and done items sections.
+
+2014-07-09 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/edebug.el (edebug-eval-defun): Print result using
+ proper Lisp quoting (bug#17934).
+
+ * progmodes/ruby-mode.el (ruby-mode-variables): Don't meddle with
+ require-final-newline since prog-mode already took care of it
(bug#17947).
+
+2014-07-09 Stephen Berman <address@hidden>
+
+ * calendar/todo-mode.el: Fix two bugs. Shorten Commentary and
+ refer to the Todo mode Info manual. Update the comment on
+ requiring cl-lib.
+ (todo-find-filtered-items-file): Add todo-prefix overlays.
+ (todo-filter-items): Reorder a let-bound variable to avoid a
+ wrong-type-argument error on canceling the file choice dialog.
+
+2014-07-09 Stefan Monnier <address@hidden>
+
+ * progmodes/octave.el (inferior-octave-mode):
+ Set comint-input-ring-size to a number (bug#17912).
+
+2014-07-09 Juri Linkov <address@hidden>
+
+ * desktop.el (desktop-minor-mode-table): Add `defining-kbd-macro'
+ and `isearch-mode' associated with nil. (Bug#17849)
+
2014-07-08 Stefan Monnier <address@hidden>
* linum.el (linum--face-height): New function (bug#17813).
=== modified file 'lisp/calendar/todo-mode.el'
--- a/lisp/calendar/todo-mode.el 2014-07-08 19:15:28 +0000
+++ b/lisp/calendar/todo-mode.el 2014-07-09 02:04:12 +0000
@@ -24,63 +24,37 @@
;;; Commentary:
-;; This package provides facilities for making, displaying, navigating
-;; and editing todo lists, which are prioritized lists of todo items.
-;; Todo lists are identified with named categories, so you can group
-;; together and separately prioritize thematically related todo items.
-;; Each category is stored in a file, which thus provides a further
-;; level of organization. You can create as many todo files, and in
-;; each as many categories, as you want.
+;; This package provides facilities for making and maintaining
+;; prioritized lists of things to do. These todo lists are identified
+;; with named categories, so you can group together thematically
+;; related todo items. Each category is stored in a file, providing a
+;; further level of organization. You can create as many todo files,
+;; and in each as many categories, as you want.
;; With Todo mode you can navigate among the items of a category, and
;; between categories in the same and in different todo files. You
-;; can edit todo items, reprioritize them within their category, move
-;; them to another category, delete them, or mark items as done and
-;; store them separately from the not yet done items in a category.
-;; You can add new todo files, edit and delete them. You can add new
-;; categories, rename and delete them, move categories to another file
-;; and merge the items of two categories. You can also reorder the
-;; sequence of categories in a todo file for the purpose of
-;; navigation. You can display summary tables of the categories in a
-;; file and the types of items they contain. And you can compile
-;; lists of existing items from multiple categories in one or more
-;; todo files, which are filtered by various criteria.
-
-;; To get started, load this package and type `M-x todo-show'. This
-;; will prompt you for the name of the first todo file, its first
-;; category and the category's first item, create these and display
-;; them in Todo mode. Now you can insert further items into the list
-;; (i.e., the category) and assign them priorities by typing `i i'.
-
-;; You will probably find it convenient to give `todo-show' a global
-;; key binding in your init file, since it is one of the entry points
-;; to Todo mode; a good choice is `C-c t', since `todo-show' is
-;; bound to `t' in Todo mode.
-
-;; To see a list of all Todo mode commands and their key bindings,
-;; including other entry points, type `C-h m' in Todo mode. Consult
-;; the documentation strings of the commands for details of their use.
-;; The `todo' customization group and its subgroups list the options
-;; you can set to alter the behavior of many commands and various
-;; aspects of the display.
-
-;; This package is a new version of Oliver Seidel's todo-mode.el.
-;; While it retains the same basic organization and handling of todo
-;; lists and the basic UI, it significantly extends these and adds
-;; many features. This required also making changes to the internals,
-;; including the file format. If you have a todo file in old format,
-;; then the first time you invoke `todo-show' (i.e., before you have
-;; created any todo file in the current format), it will ask you
-;; whether to convert that file and show it. If you choose not to
-;; convert the old-style file at this time, you can do so later by
-;; calling the command `todo-convert-legacy-files'.
+;; can add and edit todo items, reprioritize them, move them to
+;; another category, or delete them. You can also mark items as done
+;; and store them within their category or in separate archive files.
+;; You can include todo items in the Emacs Fancy Diary display and
+;; treat them as appointments. You can add new todo files, and rename
+;; or delete them. You can add new categories to a file, rename or
+;; delete them, move a category to another file and merge the items of
+;; two categories. You can also reorder the sequence of categories in
+;; a todo file for the purpose of navigation. You can display
+;; sortable summary tables of the categories in a file and the types
+;; of items they contain. And you can filter items by various
+;; criteria from multiple categories in one or more todo files to
+;; create prioritizable cross-category overviews of your todo items.
+
+;; To get started, type `M-x todo-show'. For full details of the user
+;; interface, commands and options, consult the Todo mode user manual,
+;; which is included in the Info documentation.
;;; Code:
(require 'diary-lib)
-;; For cl-remove-duplicates (in todo-insertion-commands-args) and
-;; cl-oddp.
-(require 'cl-lib)
+(require 'cl-lib) ; For cl-oddp and cl-assert.
;;
-----------------------------------------------------------------------------
;;; Setting up todo files, categories, and items
@@ -1736,31 +1710,40 @@
(defun todo-toggle-mark-item (&optional n)
"Mark item with `todo-item-mark' if unmarked, otherwise unmark it.
-With a positive numerical prefix argument N, change the
-marking of the next N items."
+With positive numerical prefix argument N, change the marking of
+the next N items in the current category. If both the todo and
+done items sections are visible, the sequence of N items can
+consist of the the last todo items and the first done items."
(interactive "p")
(when (todo-item-string)
(unless (> n 1) (setq n 1))
- (dotimes (i n)
- (let* ((cat (todo-current-category))
- (marks (assoc cat todo-categories-with-marks))
- (ov (progn
- (unless (looking-at todo-item-start)
- (todo-item-start))
- (todo-get-overlay 'prefix)))
- (pref (overlay-get ov 'before-string)))
- (if (todo-marked-item-p)
- (progn
- (overlay-put ov 'before-string (substring pref 1))
- (if (= (cdr marks) 1) ; Deleted last mark in this category.
- (setq todo-categories-with-marks
- (assq-delete-all cat todo-categories-with-marks))
- (setcdr marks (1- (cdr marks)))))
- (overlay-put ov 'before-string (concat todo-item-mark pref))
- (if marks
- (setcdr marks (1+ (cdr marks)))
- (push (cons cat 1) todo-categories-with-marks))))
- (todo-forward-item))))
+ (catch 'end
+ (dotimes (i n)
+ (let* ((cat (todo-current-category))
+ (marks (assoc cat todo-categories-with-marks))
+ (ov (progn
+ (unless (looking-at todo-item-start)
+ (todo-item-start))
+ (todo-get-overlay 'prefix)))
+ (pref (overlay-get ov 'before-string)))
+ (if (todo-marked-item-p)
+ (progn
+ (overlay-put ov 'before-string (substring pref 1))
+ (if (= (cdr marks) 1) ; Deleted last mark in this category.
+ (setq todo-categories-with-marks
+ (assq-delete-all cat todo-categories-with-marks))
+ (setcdr marks (1- (cdr marks)))))
+ (overlay-put ov 'before-string (concat todo-item-mark pref))
+ (if marks
+ (setcdr marks (1+ (cdr marks)))
+ (push (cons cat 1) todo-categories-with-marks))))
+ (todo-forward-item)
+ ;; Don't try to mark the empty lines at the end of the todo
+ ;; and done items sections.
+ (when (looking-at "^$")
+ (if (eobp)
+ (throw 'end nil)
+ (todo-forward-item)))))))
(defun todo-mark-category ()
"Mark all visible items in this category with `todo-item-mark'."
@@ -1777,7 +1760,12 @@
(if marks
(setcdr marks (1+ (cdr marks)))
(push (cons cat 1) todo-categories-with-marks))))
- (todo-forward-item)))))
+ (todo-forward-item)
+ ;; Don't try to mark the empty line between the todo and done
+ ;; items sections.
+ (when (looking-at "^$")
+ (unless (eobp)
+ (todo-forward-item)))))))
(defun todo-unmark-category ()
"Remove `todo-item-mark' from all visible items in this category."
@@ -3973,7 +3961,8 @@
(setq file (cdr (assoc-string file falist)))
(find-file file)
(unless (derived-mode-p 'todo-filtered-items-mode)
- (todo-filtered-items-mode))))
+ (todo-filtered-items-mode))
+ (todo-prefix-overlays)))
(defun todo-go-to-source-item ()
"Display the file and category of the filtered item at point."
@@ -4082,7 +4071,6 @@
(progn (todo-multiple-filter-files)
todo-multiple-filter-files))
(list todo-current-todo-file)))
- (multi (> (length flist) 1))
(fname (if (equal flist 'quit)
;; Pressed `cancel' in t-m-f-f file selection dialog.
(keyboard-quit)
@@ -4091,6 +4079,7 @@
(cond (top ".todt")
(diary ".tody")
(regexp ".todr")))))
+ (multi (> (length flist) 1))
(rxfiles (when regexp
(directory-files todo-directory t ".*\\.todr$" t)))
(file-exists (or (file-exists-p fname) rxfiles))
=== modified file 'lisp/desktop.el'
--- a/lisp/desktop.el 2014-07-02 23:45:12 +0000
+++ b/lisp/desktop.el 2014-07-03 23:48:24 +0000
@@ -528,6 +528,8 @@
(defcustom desktop-minor-mode-table
'((auto-fill-function auto-fill-mode)
+ (defining-kbd-macro nil)
+ (isearch-mode nil)
(vc-mode nil)
(vc-dired-mode nil)
(erc-track-minor-mode nil)
=== modified file 'lisp/emacs-lisp/edebug.el'
--- a/lisp/emacs-lisp/edebug.el 2014-02-25 21:55:45 +0000
+++ b/lisp/emacs-lisp/edebug.el 2014-07-05 19:11:59 +0000
@@ -497,7 +497,7 @@
(setq edebug-result (eval (eval-sexp-add-defvars form) lexical-binding))
(if (not edebugging)
(prog1
- (princ edebug-result)
+ (prin1 edebug-result)
(let ((str (eval-expression-print-format edebug-result)))
(if str (princ str))))
edebug-result)))
=== modified file 'lisp/emulation/cua-rect.el'
--- a/lisp/emulation/cua-rect.el 2014-01-01 07:43:34 +0000
+++ b/lisp/emulation/cua-rect.el 2014-07-06 23:58:52 +0000
@@ -726,11 +726,11 @@
;; Set cua--rectangle to indicate we're marking a rectangle.
;; Be careful if we are already marking a rectangle.
(setq cua--rectangle
- (if (and cua--last-rectangle
+ (or (and cua--last-rectangle
(eq (car cua--last-rectangle) (current-buffer))
- (eq (car (cdr cua--last-rectangle)) (point)))
- (cdr (cdr cua--last-rectangle))
- (cua--rectangle-get-corners))
+ (eq (car (cdr cua--last-rectangle)) (point))
+ (cdr (cdr cua--last-rectangle)))
+ (cua--rectangle-get-corners))
cua--status-string (if (cua--rectangle-virtual-edges) " [R]" "")
cua--last-rectangle nil)
(activate-mark))
=== modified file 'lisp/facemenu.el'
--- a/lisp/facemenu.el 2014-01-01 07:43:34 +0000
+++ b/lisp/facemenu.el 2014-07-08 08:55:00 +0000
@@ -620,7 +620,7 @@
'help-echo
(let ((hsv (apply 'color-rgb-to-hsv
(color-name-to-rgb (car color)))))
- (format "H:%d S:%d V:%d"
+ (format "H:%.2f S:%.2f V:%.2f"
(nth 0 hsv) (nth 1 hsv) (nth 2 hsv)))))
(when callback
(make-text-button
=== modified file 'lisp/faces.el'
--- a/lisp/faces.el 2014-04-30 19:54:52 +0000
+++ b/lisp/faces.el 2014-07-09 02:04:12 +0000
@@ -370,7 +370,10 @@
(defun face-name (face)
"Return the name of face FACE."
- (symbol-name (check-face face)))
+ (check-face face)
+ (if (symbolp face)
+ (symbol-name face)
+ face))
(defun face-all-attributes (face &optional frame)
@@ -2746,8 +2749,8 @@
contains wildcards.
Given optional arguments FACE and FRAME, return a font which is
also the same size as FACE on FRAME, or fail."
- (or (symbolp face)
- (setq face (face-name face)))
+ (when face
+ (setq face (face-name face)))
(and (eq frame t)
(setq frame nil))
(if pattern
=== modified file 'lisp/progmodes/octave.el'
--- a/lisp/progmodes/octave.el 2014-04-12 04:07:53 +0000
+++ b/lisp/progmodes/octave.el 2014-07-04 01:35:23 +0000
@@ -747,9 +747,10 @@
(setq-local info-lookup-mode 'octave-mode)
(setq-local eldoc-documentation-function 'octave-eldoc-function)
- (setq comint-input-ring-file-name
- (or (getenv "OCTAVE_HISTFILE") "~/.octave_hist")
- comint-input-ring-size (or (getenv "OCTAVE_HISTSIZE") 1024))
+ (setq-local comint-input-ring-file-name
+ (or (getenv "OCTAVE_HISTFILE") "~/.octave_hist"))
+ (setq-local comint-input-ring-size
+ (string-to-number (or (getenv "OCTAVE_HISTSIZE") "1024")))
(comint-read-input-ring t)
(setq-local comint-dynamic-complete-functions
inferior-octave-dynamic-complete-functions)
=== modified file 'lisp/progmodes/ruby-mode.el'
--- a/lisp/progmodes/ruby-mode.el 2014-06-16 03:33:29 +0000
+++ b/lisp/progmodes/ruby-mode.el 2014-07-05 18:37:45 +0000
@@ -749,7 +749,6 @@
:forward-token #'ruby-smie--forward-token
:backward-token #'ruby-smie--backward-token)
(setq-local indent-line-function 'ruby-indent-line))
- (setq-local require-final-newline t)
(setq-local comment-start "# ")
(setq-local comment-end "")
(setq-local comment-column ruby-comment-column)
=== modified file 'lisp/progmodes/sh-script.el'
--- a/lisp/progmodes/sh-script.el 2014-06-26 06:55:15 +0000
+++ b/lisp/progmodes/sh-script.el 2014-07-09 02:04:12 +0000
@@ -2012,9 +2012,10 @@
(<= indent initial)))))
`(column . ,(+ initial sh-indentation)))
(`(:before . ,(or `"(" `"{" `"["))
- (when (smie-rule-hanging-p)
- (if (not (smie-rule-prev-p "&&" "||" "|"))
- (smie-rule-parent)
+ (if (not (smie-rule-prev-p "&&" "||" "|"))
+ (when (smie-rule-hanging-p)
+ (smie-rule-parent))
+ (unless (smie-rule-bolp)
(smie-backward-sexp 'halfexp)
`(column . ,(smie-indent-virtual)))))
;; FIXME: Maybe this handling of ;; should be made into
=== modified file 'lisp/startup.el'
--- a/lisp/startup.el 2014-06-08 23:41:43 +0000
+++ b/lisp/startup.el 2014-07-09 02:04:12 +0000
@@ -1182,18 +1182,25 @@
(funcall inner)
(setq init-file-had-error nil))
(error
- (display-warning
- 'initialization
- (format "An error occurred while loading `%s':\n\n%s%s%s\n\n\
+ ;; Postpone displaying the warning until all hooks
+ ;; in `after-init-hook' like `desktop-read' will finalize
+ ;; possible changes in the window configuration.
+ (add-hook
+ 'after-init-hook
+ (lambda ()
+ (display-warning
+ 'initialization
+ (format "An error occurred while loading `%s':\n\n%s%s%s\n\n\
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace."
- user-init-file
- (get (car error) 'error-message)
- (if (cdr error) ": " "")
- (mapconcat (lambda (s) (prin1-to-string s t))
- (cdr error) ", "))
- :warning)
+ user-init-file
+ (get (car error) 'error-message)
+ (if (cdr error) ": " "")
+ (mapconcat (lambda (s) (prin1-to-string s t))
+ (cdr error) ", "))
+ :warning))
+ t)
(setq init-file-had-error t))))
(if (and deactivate-mark transient-mark-mode)
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2014-07-08 17:13:32 +0000
+++ b/src/ChangeLog 2014-07-09 02:04:12 +0000
@@ -1,3 +1,37 @@
+2014-07-09 Eli Zaretskii <address@hidden>
+
+ * xdisp.c (move_it_to): Adjust calculation of line_start_x to what
+ x_produce_glyphs does when it generates a stretch glyph that
+ represents a TAB. (Bug#17969)
+
+ * xdisp.c (pos_visible_p): If CHARPOS is at beginning of window,
+ and there is a display property at that position, don't call
+ move_it_to to move to a position before window start. (Bug#17942)
+ Fix condition for finding CHARPOS by the first call to move_it_to.
+ (Bug#17944)
+
+2014-07-09 Stefan Monnier <address@hidden>
+
+ * syntax.c (find_defun_start): Try the cache even
+ if !open_paren_in_column_0_is_defun_start.
+ (back_comment): If find_defun_start was pessimistic, use the
+ scan_sexps_forward result to improve the cache (bug#16526).
+
+2014-07-09 Eli Zaretskii <address@hidden>
+
+ * xdisp.c (redisplay_window): If redisplay of a window ends up
+ with point in a partially visible line at end of the window, make
+ sure the amended position of point actually has smaller Y
+ coordinate; if not, give up and scroll the display. (Bug#17905)
+
+ * window.c (window_scroll_pixel_based): When point ends up at the
+ last fully visible line, don't let move_it_to stop at the left
+ edge of the line and dupe us into thinking point is inside the
+ scroll margin.
+
+ * w32.c (network_interface_info): Make sure the argument is a
+ Lisp string.
+
2014-07-08 Paul Eggert <address@hidden>
* process.c (read_and_dispose_of_process_output): Fix typo
=== modified file 'src/syntax.c'
--- a/src/syntax.c 2014-02-08 05:12:47 +0000
+++ b/src/syntax.c 2014-07-05 02:17:14 +0000
@@ -530,17 +530,6 @@
{
ptrdiff_t opoint = PT, opoint_byte = PT_BYTE;
- if (!open_paren_in_column_0_is_defun_start)
- {
- find_start_value = BEGV;
- find_start_value_byte = BEGV_BYTE;
- find_start_buffer = current_buffer;
- find_start_modiff = MODIFF;
- find_start_begv = BEGV;
- find_start_pos = pos;
- return BEGV;
- }
-
/* Use previous finding, if it's valid and applies to this inquiry. */
if (current_buffer == find_start_buffer
/* Reuse the defun-start even if POS is a little farther on.
@@ -552,6 +541,13 @@
&& MODIFF == find_start_modiff)
return find_start_value;
+ if (!open_paren_in_column_0_is_defun_start)
+ {
+ find_start_value = BEGV;
+ find_start_value_byte = BEGV_BYTE;
+ goto found;
+ }
+
/* Back up to start of line. */
scan_newline (pos, pos_byte, BEGV, BEGV_BYTE, -1, 1);
@@ -582,13 +578,14 @@
/* Record what we found, for the next try. */
find_start_value = PT;
find_start_value_byte = PT_BYTE;
+ TEMP_SET_PT_BOTH (opoint, opoint_byte);
+
+ found:
find_start_buffer = current_buffer;
find_start_modiff = MODIFF;
find_start_begv = BEGV;
find_start_pos = pos;
- TEMP_SET_PT_BOTH (opoint, opoint_byte);
-
return find_start_value;
}
@@ -841,7 +838,9 @@
else
{
struct lisp_parse_state state;
+ bool adjusted;
lossage:
+ adjusted = true;
/* We had two kinds of string delimiters mixed up
together. Decode this going forwards.
Scan fwd from a known safe place (beginning-of-defun)
@@ -852,6 +851,7 @@
{
defun_start = find_defun_start (comment_end, comment_end_byte);
defun_start_byte = find_start_value_byte;
+ adjusted = (defun_start > BEGV);
}
do
{
@@ -860,6 +860,16 @@
comment_end, TYPE_MINIMUM (EMACS_INT),
0, Qnil, 0);
defun_start = comment_end;
+ if (!adjusted)
+ {
+ adjusted = true;
+ find_start_value
+ = CONSP (state.levelstarts) ? XINT (XCAR (state.levelstarts))
+ : state.thislevelstart >= 0 ? state.thislevelstart
+ : find_start_value;
+ find_start_value_byte = CHAR_TO_BYTE (find_start_value);
+ }
+
if (state.incomment == (comnested ? 1 : -1)
&& state.comstyle == comstyle)
from = state.comstr_start;
=== modified file 'src/w32.c'
--- a/src/w32.c 2014-05-26 16:55:28 +0000
+++ b/src/w32.c 2014-07-09 02:04:12 +0000
@@ -8612,6 +8612,7 @@
Lisp_Object
network_interface_info (Lisp_Object ifname)
{
+ CHECK_STRING (ifname);
return network_interface_get_info (ifname);
}
=== modified file 'src/window.c'
--- a/src/window.c 2014-06-17 16:09:19 +0000
+++ b/src/window.c 2014-07-09 02:04:12 +0000
@@ -5161,6 +5161,32 @@
charpos = IT_CHARPOS (it);
bytepos = IT_BYTEPOS (it);
+ /* If PT is in the screen line at the last fully visible line,
+ move_it_to will stop at X = 0 in that line, because the
+ required Y coordinate is reached there. See if we can get to
+ PT without descending lower in Y, and if we can, it means we
+ reached PT before the scroll margin. */
+ if (charpos != PT)
+ {
+ struct it it2;
+ void *it_data;
+
+ it2 = it;
+ it_data = bidi_shelve_cache ();
+ move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
+ if (IT_CHARPOS (it) == PT && it.current_y == it2.current_y)
+ {
+ charpos = IT_CHARPOS (it);
+ bytepos = IT_BYTEPOS (it);
+ bidi_unshelve_cache (it_data, 1);
+ }
+ else
+ {
+ it = it2;
+ bidi_unshelve_cache (it_data, 0);
+ }
+ }
+
/* See if point is on a partially visible line at the end. */
if (it.what == IT_EOB)
partial_p = it.current_y + it.ascent + it.descent > it.last_visible_y;
=== modified file 'src/xdisp.c'
--- a/src/xdisp.c 2014-07-03 18:12:41 +0000
+++ b/src/xdisp.c 2014-07-09 02:04:12 +0000
@@ -1436,7 +1436,7 @@
(charpos >= 0 ? MOVE_TO_POS : 0) | MOVE_TO_Y);
if (charpos >= 0
- && (((!it.bidi_p || it.bidi_it.scan_dir == 1)
+ && (((!it.bidi_p || it.bidi_it.scan_dir != -1)
&& IT_CHARPOS (it) >= charpos)
/* When scanning backwards under bidi iteration, move_it_to
stops at or _before_ CHARPOS, because it stops at or to
@@ -1585,7 +1585,8 @@
/* Move to the last buffer position before the
display property. */
start_display (&it3, w, top);
- move_it_to (&it3, start - 1, -1, -1, -1, MOVE_TO_POS);
+ if (start > CHARPOS (top))
+ move_it_to (&it3, start - 1, -1, -1, -1, MOVE_TO_POS);
/* Move forward one more line if the position before
the display string is a newline or if it is the
rightmost character on a line that is
@@ -1688,7 +1689,9 @@
}
else
{
- /* We were asked to provide info about WINDOW_END. */
+ /* Either we were asked to provide info about WINDOW_END, or
+ CHARPOS is in the partially visible glyph row at end of
+ window. */
struct it it2;
void *it2data = NULL;
@@ -9247,6 +9250,25 @@
{
line_start_x = it->current_x + it->pixel_width
- it->last_visible_x;
+ if (FRAME_WINDOW_P (it->f))
+ {
+ struct face *face = FACE_FROM_ID (it->f, it->face_id);
+ struct font *face_font = face->font;
+
+ /* When display_line produces a continued line
+ that ends in a TAB, it skips a tab stop that
+ is closer than the font's space character
+ width (see x_produce_glyphs where it produces
+ the stretch glyph which represents a TAB).
+ We need to reproduce the same logic here. */
+ eassert (face_font);
+ if (face_font)
+ {
+ if (line_start_x < face_font->space_width)
+ line_start_x
+ += it->tab_width * face_font->space_width;
+ }
+ }
set_iterator_to_next (it, 0);
}
}
@@ -16088,6 +16110,18 @@
/* Point does appear, but on a line partly visible at end of window.
Move it back to a fully-visible line. */
new_vpos = window_box_height (w);
+ /* But if window_box_height suggests a Y coordinate that is
+ not less than we already have, that line will clearly not
+ be fully visible, so give up and scroll the display.
+ This can happen when the default face uses a font whose
+ dimensions are different from the frame's default
+ font. */
+ if (new_vpos >= w->cursor.y)
+ {
+ w->cursor.vpos = -1;
+ clear_glyph_matrix (w->desired_matrix);
+ goto try_to_scroll;
+ }
}
else if (w->cursor.vpos >= 0)
{
=== modified file 'test/indent/shell.sh'
--- a/test/indent/shell.sh 2014-06-24 20:16:10 +0000
+++ b/test/indent/shell.sh 2014-07-08 18:38:07 +0000
@@ -41,6 +41,12 @@
}
done
+for foo in bar; do # bug#17896
+ [ -e $foo ] && [ -e $bar ] && {
+ echo just fine thanks
+ }
+done
+
filter_3 () # bug#17842
{
tr -d '"`' | tr ' ' ' ' | \
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r117499: Merge from emacs-24; up to r117365,
Glenn Morris <=