Merge from emacs-24; up to 2014-06-19T14:03:45Z!monnier@iro.umontreal.ca
This commit is contained in:
commit
5613a6f6d5
25 changed files with 344 additions and 191 deletions
|
@ -1,3 +1,8 @@
|
|||
2014-07-09 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* 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 <rgm@gnu.org>
|
||||
|
||||
* help.texi (Misc Help):
|
||||
|
|
|
@ -602,12 +602,13 @@ Incremental regexp and non-regexp searches have independent defaults.
|
|||
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.
|
||||
@xref{Special 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
|
||||
@code{search-whitespace-regexp} 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
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-07-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* debugging.texi (Function Debugging, Debugger Commands):
|
||||
Update debug-on-entry w.r.t behavior after redefinitions (bug#17902).
|
||||
|
||||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* help.texi (Help Functions): "Online" help doesn't mean what it
|
||||
|
|
|
@ -226,9 +226,7 @@ function, and then step through its caller.
|
|||
|
||||
@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
|
||||
@code{(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 @@ When @code{debug-on-entry} is called interactively, it prompts for
|
|||
up to invoke the debugger on entry, @code{debug-on-entry} does nothing.
|
||||
@code{debug-on-entry} always returns @var{function-name}.
|
||||
|
||||
@strong{Warning:} if you redefine a function after using
|
||||
@code{debug-on-entry} 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 @@ Debugger entered--entering a function:
|
|||
------ Buffer: *Backtrace* ------
|
||||
@end group
|
||||
|
||||
@group
|
||||
(symbol-function 'fact)
|
||||
@result{} (lambda (n)
|
||||
(debug (quote debug))
|
||||
(if (zerop n) 1 (* n (fact (1- n)))))
|
||||
@end group
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
|
@ -461,9 +448,7 @@ You can't use @kbd{r} when the debugger was entered due to an error.
|
|||
@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
|
||||
@code{debug-on-entry}. @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.
|
||||
@code{debug-on-entry}.
|
||||
|
||||
@item v
|
||||
Toggle the display of local variables of the current stack frame.
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2014-07-09 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* 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 <michael.albinus@gmx.de>
|
||||
|
||||
* trampver.texi: Update release number.
|
||||
|
|
|
@ -158,11 +158,10 @@ you want.
|
|||
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}).
|
||||
@c Emacs recognizes Todo files by their extension, so when you visit
|
||||
@c the files the buffer is in the appropriate mode and the current
|
||||
@c 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
|
||||
|
|
15
etc/NEWS
15
etc/NEWS
|
@ -1166,11 +1166,11 @@ The new optional CHECK-TIMERS parameter allows for the prior behavior.
|
|||
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 @@ edited in another Emacs session or by another user. See the node
|
|||
"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
|
||||
|
|
57
etc/TODO
57
etc/TODO
|
@ -167,14 +167,6 @@ http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
|
|||
** 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 @@ Perspectives also need to interact with the tabs.
|
|||
** 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 @@ scroll bars are extensible.
|
|||
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 @@ specified filters, specified timers, and specified hooks.
|
|||
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 @@ http://lists.gnu.org/archive/html/emacs-devel/2009-04/msg00034.html
|
|||
|
||||
** 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 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
|
|||
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 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
|
|||
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 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
|
|||
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 @@ preferring the ImageMagick loader? The user might like zooming etc in jpegs.
|
|||
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
|
||||
|
|
|
@ -1,3 +1,66 @@
|
|||
2014-07-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* 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 <juri@jurta.org>
|
||||
|
||||
* 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 <rgm@gnu.org>
|
||||
|
||||
* emulation/cua-rect.el (cua--activate-rectangle):
|
||||
Avoid setting cua--rectangle to nil. (Bug#17877)
|
||||
|
||||
2014-07-09 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* 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 <monnier@iro.umontreal.ca>
|
||||
|
||||
* 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 <stephen.berman@gmx.net>
|
||||
|
||||
* 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 <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/octave.el (inferior-octave-mode):
|
||||
Set comint-input-ring-size to a number (bug#17912).
|
||||
|
||||
2014-07-09 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* desktop.el (desktop-minor-mode-table): Add `defining-kbd-macro'
|
||||
and `isearch-mode' associated with nil. (Bug#17849)
|
||||
|
||||
2014-07-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* linum.el (linum--face-height): New function (bug#17813).
|
||||
|
|
|
@ -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.
|
||||
;; 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, 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'.
|
||||
;; 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 @@ means prompt user and omit comment only on confirmation."
|
|||
|
||||
(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 @@ marking of the next N items."
|
|||
(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 @@ regexp items."
|
|||
(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 @@ multifile commands for further details."
|
|||
(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 @@ multifile commands for further details."
|
|||
(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))
|
||||
|
|
|
@ -528,6 +528,8 @@ Furthermore the major mode function must be autoloaded.")
|
|||
|
||||
(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)
|
||||
|
|
|
@ -497,7 +497,7 @@ the minibuffer."
|
|||
(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)))
|
||||
|
|
|
@ -726,11 +726,11 @@ If command is repeated at same position, delete the rectangle."
|
|||
;; 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))
|
||||
|
|
|
@ -620,7 +620,7 @@ color. The function should accept a single argument, the color name."
|
|||
'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
|
||||
|
|
|
@ -370,7 +370,10 @@ If `inhibit-x-resources' is non-nil, this function does nothing."
|
|||
|
||||
(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 @@ If PATTERN is nil, return the name of the frame's base font, which never
|
|||
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
|
||||
|
|
|
@ -747,9 +747,10 @@ Key bindings:
|
|||
(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)
|
||||
|
|
|
@ -749,7 +749,6 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
|
|||
: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)
|
||||
|
|
|
@ -2012,9 +2012,10 @@ May return nil if the line should not be treated as continued."
|
|||
(<= 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
|
||||
|
|
|
@ -1182,18 +1182,25 @@ please check its value")
|
|||
(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)
|
||||
|
|
|
@ -1,3 +1,37 @@
|
|||
2014-07-09 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* 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 <monnier@iro.umontreal.ca>
|
||||
|
||||
* 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 <eliz@gnu.org>
|
||||
|
||||
* 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 <eggert@cs.ucla.edu>
|
||||
|
||||
* process.c (read_and_dispose_of_process_output): Fix typo
|
||||
|
|
36
src/syntax.c
36
src/syntax.c
|
@ -530,17 +530,6 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte)
|
|||
{
|
||||
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 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte)
|
|||
&& 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 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte)
|
|||
/* 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 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
|
|||
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 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
|
|||
{
|
||||
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 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
|
|||
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;
|
||||
|
|
|
@ -8612,6 +8612,7 @@ network_interface_list (void)
|
|||
Lisp_Object
|
||||
network_interface_info (Lisp_Object ifname)
|
||||
{
|
||||
CHECK_STRING (ifname);
|
||||
return network_interface_get_info (ifname);
|
||||
}
|
||||
|
||||
|
|
26
src/window.c
26
src/window.c
|
@ -5161,6 +5161,32 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror)
|
|||
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;
|
||||
|
|
40
src/xdisp.c
40
src/xdisp.c
|
@ -1436,7 +1436,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
|
|||
(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 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
|
|||
/* 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 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
|
|||
}
|
||||
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 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos
|
|||
{
|
||||
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 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
|
|||
/* 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)
|
||||
{
|
||||
|
|
|
@ -41,6 +41,12 @@ for foo in bar; do # bug#17721
|
|||
}
|
||||
done
|
||||
|
||||
for foo in bar; do # bug#17896
|
||||
[ -e $foo ] && [ -e $bar ] && {
|
||||
echo just fine thanks
|
||||
}
|
||||
done
|
||||
|
||||
filter_3 () # bug#17842
|
||||
{
|
||||
tr -d '"`' | tr ' ' ' ' | \
|
||||
|
|
Loading…
Add table
Reference in a new issue