Merge from emacs-24; up to 2014-06-19T14:03:45Z!monnier@iro.umontreal.ca

This commit is contained in:
Glenn Morris 2014-07-08 19:04:12 -07:00
commit 5613a6f6d5
25 changed files with 344 additions and 191 deletions

View file

@ -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):

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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).

View file

@ -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))

View file

@ -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)

View file

@ -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)))

View file

@ -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))

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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)
{

View file

@ -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 ' ' ' ' | \