1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

Merge from emacs-24; up to 2012-11-09T14:45:15Z!dmantipov@yandex.ru

This commit is contained in:
Glenn Morris 2012-11-12 18:25:59 -08:00
commit f78ee6afc0
29 changed files with 395 additions and 199 deletions

View File

@ -1,3 +1,12 @@
2012-11-13 Chong Yidong <cyd@gnu.org>
* building.texi (Multithreaded Debugging): gdb-stopped-hooks is
actually named gdb-stopped-functions.
2012-11-13 Glenn Morris <rgm@gnu.org>
* misc.texi (Single Shell): Mention async-shell-command-buffer.
2012-11-10 Glenn Morris <rgm@gnu.org>
* misc.texi (Terminal emulator): Rename `term-face' to `term'.

View File

@ -1244,8 +1244,8 @@ depending on the reason which caused the stop. Customize the variable
@code{gdb-switch-reasons} to select the stop reasons which will cause
a thread switch.
@vindex gdb-stopped-hooks
The variable @code{gdb-stopped-hooks} allows you to execute your
@vindex gdb-stopped-functions
The variable @code{gdb-stopped-functions} allows you to execute your
functions whenever some thread stops.
In non-stop mode, you can switch between different modes for GUD

View File

@ -542,11 +542,19 @@ which is impossible to ignore.
You can also type @kbd{M-&} (@code{async-shell-command}) to execute a
shell command asynchronously; this is exactly like calling @kbd{M-!}
with a trailing @samp{&}, except that you do not need the @samp{&}.
The output buffer for asynchronous shell commands is named
The default output buffer for asynchronous shell commands is named
@samp{*Async Shell Command*}. Emacs inserts the output into this
buffer as it comes in, whether or not the buffer is visible in a
window.
@vindex async-shell-command-buffer
If you want to run more than one asynchronous shell command at the
same time, they could end up competing for the output buffer. The
option @code{async-shell-command-buffer} specifies what to do about
this; e.g., whether to rename the pre-existing output buffer, or to
use a different buffer for the new command. Consult the variable's
documentation for more possibilities.
@kindex M-|
@findex shell-command-on-region
@kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!}, but

View File

@ -1,3 +1,18 @@
2012-11-13 Glenn Morris <rgm@gnu.org>
* variables.texi (Adding Generalized Variables):
At least mention gv-define-expander and gv-letplace.
* debugging.texi (Error Debugging): Mention debug-on-message.
(Using Debugger): Mention debugger-bury-or-kill.
* control.texi (Signaling Errors):
* debugging.texi (Error Debugging):
* errors.texi (Standard Errors): Add user-error.
* variables.texi (Adding Generalized Variables):
Use standard formatting for common lisp note about setf functions.
2012-11-10 Martin Rudalics <rudalics@gmx.at>
* elisp.texi (Top): Add Recombining Windows to menu.

View File

@ -824,6 +824,19 @@ The function @code{signal} never returns.
@end example
@end defun
@cindex user errors, signaling
@defun user-error format-string &rest args
This function behaves exactly like @code{error}, except that it uses
the error symbol @code{user-error} rather than @code{error}. As the
name suggests, this is intended to report errors on the part of the
user, rather than errors in the code itself. For example,
if you try to use the command @code{Info-history-back} (@kbd{l}) to
move back beyond the start of your Info browsing history, Emacs
signals a @code{user-error}. Such errors do not cause entry to the
debugger, even when @code{debug-on-error} is non-@code{nil}.
@xref{Error Debugging}.
@end defun
@cindex CL note---no continuable errors
@quotation
@b{Common Lisp note:} Emacs Lisp has nothing like the Common Lisp

View File

@ -117,12 +117,12 @@ has any of those condition symbols, or if the error message matches
any of the regular expressions, then that error does not enter the
debugger.
The normal value of this variable lists several errors that happen
often during editing but rarely result from bugs in Lisp programs.
However, ``rarely'' is not ``never''; if your program fails with an
error that matches this list, you may try changing this list to debug
the error. The easiest way is usually to set
@code{debug-ignored-errors} to @code{nil}.
The normal value of this variable includes @code{user-error}, as well
as several errors that happen often during editing but rarely result
from bugs in Lisp programs. However, ``rarely'' is not ``never''; if
your program fails with an error that matches this list, you may try
changing this list to debug the error. The easiest way is usually to
set @code{debug-ignored-errors} to @code{nil}.
@end defopt
@defopt eval-expression-debug-on-error
@ -163,6 +163,14 @@ supported values correspond to the signals @code{SIGUSR1} and
@code{inhibit-quit} is set and Emacs is not otherwise responding.
@end defopt
@cindex message, finding what causes a particular message
@defvar debug-on-message
If you set @code{debug-on-message} to a regular expression,
Emacs will enter the debugger if it displays a matching message in the
echo area. For example, this can be useful when trying to find the
cause of a particular message.
@end defvar
To debug an error that happens during loading of the init
file, use the option @samp{--debug-init}. This binds
@code{debug-on-error} to @code{t} while loading the init file, and
@ -314,6 +322,7 @@ is a message describing the reason that the debugger was invoked (such
as the error message and associated data, if it was invoked due to an
error).
@vindex debugger-bury-or-kill
The backtrace buffer is read-only and uses a special major mode,
Debugger mode, in which letters are defined as debugger commands. The
usual Emacs editing commands are available; thus, you can switch windows
@ -322,8 +331,12 @@ switch buffers, visit files, or do any other sort of editing. However,
the debugger is a recursive editing level (@pxref{Recursive Editing})
and it is wise to go back to the backtrace buffer and exit the debugger
(with the @kbd{q} command) when you are finished with it. Exiting
the debugger gets out of the recursive edit and kills the backtrace
buffer.
the debugger gets out of the recursive edit and buries the backtrace
buffer. (You can customize what the @kbd{q} command does with the
backtrace buffer by setting the variable @code{debugger-bury-or-kill}.
For example, set it to @code{kill} if you prefer to kill the buffer
rather than bury it. Consult the variable's documentation for more
possibilities.)
When the debugger has been entered, the @code{debug-on-error}
variable is temporarily set according to

View File

@ -172,6 +172,9 @@ The message is @samp{Text is read-only}. This is a subcategory of
@item undefined-color
The message is @samp{Undefined color}. @xref{Color Names}.
@item user-error
The message is the empty string. @xref{Signaling Errors}.
@item void-function
The message is @samp{Symbol's function definition is void}.
@xref{Function Cells}.

View File

@ -2133,20 +2133,24 @@ set. An example of using this macro is:
@end example
@end defmac
@c FIXME? Not sure what, if anything, to say about this.
@ignore
@defmac gv-define-expander name handler
This is the most general way to define a new @code{setf} expansion.
@end defmac
@end ignore
@findex gv-define-expander
@findex gv-letplace
@c FIXME? Not sure what or how much to say about these.
@c See cl.texi for an example of using gv-letplace.
For more control over the expansion, see the macro @code{gv-define-expander}.
The macro @code{gv-letplace} can be useful in defining macros that
perform similarly to @code{setf}; for example, the @code{incf} macro
of Common Lisp. Consult the source file @file{gv.el} for more details.
@cindex CL note---no @code{setf} functions
Common Lisp defines another way to specify the @code{setf} behavior of
a function, namely ``@code{setf} functions'', whose names are lists
@code{(setf @var{name})} rather than symbols. For example,
@code{(defun (setf foo) @dots{})} defines the function that is used
when @code{setf} is applied to @code{foo}. Emacs does not support
this. It is a compile-time error to use @code{setf} on a form that
has not already had an appropriate expansion defined. In Common Lisp,
this is not an error since the function @code{(setf @var{func})} might
be defined later.
@quotation
@b{Common Lisp note:} Common Lisp defines another way to specify the
@code{setf} behavior of a function, namely ``@code{setf} functions'',
whose names are lists @code{(setf @var{name})} rather than symbols.
For example, @code{(defun (setf foo) @dots{})} defines the function
that is used when @code{setf} is applied to @code{foo}. Emacs does
not support this. It is a compile-time error to use @code{setf} on a
form that has not already had an appropriate expansion defined. In
Common Lisp, this is not an error since the function @code{(setf
@var{func})} might be defined later.
@end quotation

View File

@ -1,3 +1,9 @@
2012-11-13 Glenn Morris <rgm@gnu.org>
* flymake.texi (Customizable variables)
(Highlighting erroneous lines): Mention flymake-error-bitmap,
flymake-warning-bitmap, and flymake-fringe-indicator-position.
2012-11-12 Vincent Belaïche <vincentb1@users.sourceforge.net>
* ses.texi: Doc for ses-rename-cell, ses-repair-cell-reference-all & ses-range.

View File

@ -337,6 +337,17 @@ been reported.
A custom face for highlighting lines for which at least one warning
and no errors have been reported.
@item flymake-error-bitmap
A bitmap used in the fringe to mark lines for which an error has
been reported.
@item flymake-warning-bitmap
A bitmap used in the fringe to mark lines for which a warning has
been reported.
@item flymake-fringe-indicator-position
Which fringe (if any) should show the warning/error bitmaps.
@end table
@node Adding support for a new syntax check tool
@ -718,6 +729,15 @@ are used: @code{flymake-errline} and
@code{flymake-warnline}. Errors belonging outside the current
buffer are considered to belong to line 1 of the current buffer.
@c This manual does not use vindex.
@c @vindex flymake-fringe-indicator-position
@c @vindex flymake-error-bitmap
@c @vindex flymake-warning-bitmap
If the option @code{flymake-fringe-indicator-position} is non-@code{nil},
errors and warnings are also highlighted in the left or right fringe,
using the bitmaps specified by @code{flymake-error-bitmap}
and @code{flymake-warning-bitmap}.
@node Interaction with other modes
@section Interaction with other modes
@cindex Interaction with other modes

View File

@ -162,6 +162,7 @@ next and previous path separator, respectively.
*** minibuffer-electric-default-mode can rewrite (default ...) to [...].
Just set minibuffer-eldef-shorten-default to t before enabling the mode.
+++
** ImageMagick support, if available, is automatically enabled.
It is no longer necessary to call `imagemagick-register-types'
explicitly to install ImageMagick image types; that function is called
@ -470,6 +471,7 @@ when you receive a private message or your nickname is mentioned.
*** ERC will look up server/channel names via auth-source and use any
channel keys found.
+++
** Flymake uses fringe bitmaps to indicate errors and warnings.
See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
`flymake-warning-bitmap'.
@ -478,10 +480,12 @@ See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
** Follow mode no longer works by using advice.
The option `follow-intercept-processes' has been removed.
---
** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings,
specifying URL types which should be converted to remote file names at
specifying URL types that should be converted to remote file names at
the FFAP prompt. The default is now '("ftp").
---
** New Ibuffer `derived-mode' filter, bound to `/ M'.
The old binding for `/ M' (filter by used-mode) is now bound to `/ m'.
@ -497,11 +501,14 @@ The old binding for `/ M' (filter by used-mode) is now bound to `/ m'.
The function `notifications-get-capabilities' returns the supported
server properties.
---
** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
closing brackets to be aligned with the line of the opening bracket.
---
** In Proced mode, new command `proced-renice' renices marked processes.
---
** Python mode
A new version of python.el, which provides several new features, including:
@ -548,6 +555,8 @@ python-insert-while | python-skeleton-while
python-find-function | python-nav-jump-to-defun
python-next-statement | python-nav-forward-sentence
python-previous-statement | python-nav-backward-sentence
python-beginning-of-defun-function | python-nav-beginning-of-defun
python-end-of-defun-function | python-nav-end-of-defun
python-send-buffer | python-shell-send-buffer
python-send-defun | python-shell-send-defun
python-send-region | python-shell-send-region
@ -586,8 +595,9 @@ Sphinx support has been improved.
*** `sh-use-smie' lets you choose a new indentation and navigation code.
+++
** New option `async-shell-command-buffer' specifies the buffer to use
for a new asynchronous shell command when the default output buffer
for a new asynchronous `shell-command' when the default output buffer
`*Async Shell Command*' is already in use.
---
@ -831,11 +841,15 @@ table, but with a different prefix.
** Debugger changes
+++
*** New error type and new function `user-error'.
These do not trigger the debugger.
*** New option `debugger-bury-or-kill'.
+++
*** New option `debugger-bury-or-kill', saying what to do with the
debugger buffer when exiting debug.
+++
*** Set `debug-on-message' to enter the debugger when a certain
message is displayed in the echo area. This can be useful when trying
to work out which code is doing something.
@ -900,7 +914,7 @@ in Emacs 24.1:
*** `current-time-string' no longer requires that its argument's year
must be in the range 1000..9999. It now works with any year supported
by the underlying C implementation.
+++
*** `current-time' now returns extended-format time stamps
(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds.
PSEC is typically a multiple of 1000 on current machines. Other
@ -912,7 +926,7 @@ stamps are still accepted.
[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS].
The PSECS slot is new, and uses picosecond resolution. It can be
accessed via the new timer--psecs accessor.
+++
*** Last-modified time stamps in undo lists now are of the form
(t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS).

View File

@ -1,3 +1,53 @@
2012-11-13 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/gv.el (gv-define-simple-setter): One more fix (bug#12871).
2012-11-13 Wolfgang Jenkner <wjenkner@inode.at>
* ansi-color.el (ansi-color-apply-sequence): Implement SGR codes
39 and 49 (bug#12792). Also, treat unimplemented parameters as 0,
thereby restoring the behavior of revisions prior to 2012-08-15T03:33:55Z!monnier@iro.umontreal.ca.
2012-11-13 Fabián Ezequiel Gallina <fgallina@cuca>
Fix end-of-defun misbehavior.
* progmodes/python.el (python-nav-beginning-of-defun): Rename from
python-beginning-of-defun-function. Handle nested defuns
correctly.
(python-nav-end-of-defun): Rename from
python-end-of-defun-function. Ensure forward movement.
(python-info-current-defun): Reimplement to work as intended
with new fixed python-nav-{end,beginning}-of-defun. Stop scanning
parent defuns as soon as possible.
2012-11-13 Glenn Morris <rgm@gnu.org>
* progmodes/flymake.el (flymake-error-bitmap)
(flymake-warning-bitmap, flymake-fringe-indicator-position): Doc fixes.
(flymake-error-bitmap, flymake-warning-bitmap): Fix :types.
2012-11-13 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-move-to-block): When moving
backward, always stop at indentation. Reverts the change from
2012-08-12T22:06:56Z!monnier@iro.umontreal.ca (Bug#12851).
2012-11-13 Glenn Morris <rgm@gnu.org>
* ibuffer.el (ibuffer-mode-map, ibuffer-mode):
Add ibuffer-filter-by-derived-mode.
* ibuffer.el (ibuffer-mode-map): Don't have two menu items with
the same name shadowing each other.
* window.el (with-temp-buffer-window): Doc tweak.
* emacs-lisp/debug.el (debugger-bury-or-kill): Doc tweak.
* help.el (temp-buffer-max-height):
* window.el (fit-frame-to-buffer, fit-frame-to-buffer-bottom-margin):
* emacs-lisp/debug.el (debugger-bury-or-kill): Fix :version.
2012-11-12 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/nadvice.el: New package.

View File

@ -534,34 +534,39 @@ Returns nil only if there's no match for `ansi-color-parameter-regexp'."
ESCAPE-SEQ is an escape sequence parsed by `ansi-color-parse-sequence'.
If the new codes resulting from ESCAPE-SEQ start with 0, then the
old codes are discarded and the remaining new codes are
processed. Otherwise, for each new code: if it is 21-25 or 27-29
delete appropriate parameters from the list of codes; any other
code that makes sense is added to the list of codes. Finally,
the so changed list of codes is returned."
For each new code, the following happens: if it is 1-7, add it to
the list of codes; if it is 21-25 or 27, delete appropriate
parameters from the list of codes; if it is 30-37 resp. 39, the
foreground color code is replaced or added resp. deleted; if it
is 40-47 resp. 49, the background color code is replaced or added
resp. deleted; any other code is discarded together with the old
codes. Finally, the so changed list of codes is returned."
(let ((new-codes (ansi-color-parse-sequence escape-sequence)))
(while new-codes
(setq codes
(let ((new (pop new-codes)))
(cond ((zerop new)
nil)
((or (<= new 20)
(>= new 30))
(if (memq new codes)
codes
(cons new codes)))
;; The standard says `21 doubly underlined' while
;; http://en.wikipedia.org/wiki/ANSI_escape_code claims
;; `21 Bright/Bold: off or Underline: Double'.
((/= new 26)
(remq (- new 20)
(cond ((= new 22)
(remq 1 codes))
((= new 25)
(remq 6 codes))
(t codes))))
(t codes)))))
(let* ((new (pop new-codes))
(q (/ new 10)))
(setq codes
(pcase q
(0 (unless (memq new '(0 8 9))
(cons new (remq new codes))))
(2 (unless (memq new '(20 26 28 29))
;; The standard says `21 doubly underlined' while
;; http://en.wikipedia.org/wiki/ANSI_escape_code claims
;; `21 Bright/Bold: off or Underline: Double'.
(remq (- new 20) (pcase new
(22 (remq 1 codes))
(25 (remq 6 codes))
(_ codes)))))
((or 3 4) (let ((r (mod new 10)))
(unless (= r 8)
(let (beg)
(while (and codes (/= q (/ (car codes) 10)))
(push (pop codes) beg))
(setq codes (nconc (nreverse beg) (cdr codes)))
(if (= r 9)
codes
(cons new codes))))))
(_ nil)))))
codes))
(defun ansi-color-make-color-map ()

View File

@ -1,7 +1,20 @@
2012-11-13 Stefan Monnier <monnier@iro.umontreal.ca>
* semantic/mru-bookmark.el (semantic-mru-bookmark-mode):
* semantic/grammar.el (semantic-grammar-mode):
* semantic/util-modes.el (semantic-highlight-edits-mode)
(semantic-show-parser-state-mode): Avoid obsolete name
semantic-edits-new-change-hooks (bug#12869).
2012-11-13 Glenn Morris <rgm@gnu.org>
* srecode/srt-mode.el (srecode-template-mode):
Don't change global values of comment-start, comment-end. (Bug#12781)
2012-10-25 David Engster <deng@randomsample.de>
* semantic/analyze.el (semantic-analyze-dereference-alias): New
function to dereference aliases.
* semantic/analyze.el (semantic-analyze-dereference-alias):
New function to dereference aliases.
(semantic-analyze-current-context-default): Use it.
* semantic/grammar.el (semantic-grammar-create-package):
@ -12,8 +25,8 @@
* semantic.el (semantic-elapsed-time): Make it a defsubst.
* srecode/dictionary.el (srecode-adebug-dictionary): Remove
require for `semantic'.
* srecode/dictionary.el (srecode-adebug-dictionary):
Remove require for `semantic'.
* srecode/map.el:
* srecode/insert.el: Declare functions from `data-debug'.

View File

@ -1333,8 +1333,8 @@ the change bounds to encompass the whole nonterminal tag."
(add-hook 'before-change-functions
'semantic--grammar-clear-macros-regexp-2 nil t)
;; Handle safe re-parse of grammar rules.
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
(add-hook 'semantic-edits-new-change-hooks
(semantic-make-local-hook 'semantic-edits-new-change-functions)
(add-hook 'semantic-edits-new-change-functions
'semantic-grammar-edits-new-change-hook-fcn
nil t)
(semantic-run-mode-hooks 'semantic-grammar-mode-hook))

View File

@ -292,13 +292,13 @@ minor mode is enabled."
(setq semantic-mru-bookmark-mode nil)
(error "Buffer %s was not set up for parsing"
(buffer-name)))
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
(add-hook 'semantic-edits-new-change-hooks
(semantic-make-local-hook 'semantic-edits-new-change-functions)
(add-hook 'semantic-edits-new-change-functions
'semantic-mru-bookmark-change-hook-fcn nil t)
(add-hook 'semantic-edits-move-change-hooks
'semantic-mru-bookmark-change-hook-fcn nil t))
;; Remove hooks
(remove-hook 'semantic-edits-new-change-hooks
(remove-hook 'semantic-edits-new-change-functions
'semantic-mru-bookmark-change-hook-fcn t)
(remove-hook 'semantic-edits-move-change-hooks
'semantic-mru-bookmark-change-hook-fcn t)))

View File

@ -221,11 +221,11 @@ minor mode is enabled."
(setq semantic-highlight-edits-mode nil)
(error "Buffer %s was not set up for parsing"
(buffer-name)))
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
(add-hook 'semantic-edits-new-change-hooks
(semantic-make-local-hook 'semantic-edits-new-change-functions)
(add-hook 'semantic-edits-new-change-functions
'semantic-highlight-edits-new-change-hook-fcn nil t))
;; Remove hooks
(remove-hook 'semantic-edits-new-change-hooks
(remove-hook 'semantic-edits-new-change-functions
'semantic-highlight-edits-new-change-hook-fcn t)))
(semantic-add-minor-mode 'semantic-highlight-edits-mode
@ -460,8 +460,8 @@ minor mode is enabled."
(append mode-line-modified
'(semantic-show-parser-state-string))))
;; Add hooks
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
(add-hook 'semantic-edits-new-change-hooks
(semantic-make-local-hook 'semantic-edits-new-change-functions)
(add-hook 'semantic-edits-new-change-functions
'semantic-show-parser-state-marker nil t)
(semantic-make-local-hook 'semantic-edits-incremental-reparse-failed-hook)
(add-hook 'semantic-edits-incremental-reparse-failed-hook
@ -491,7 +491,7 @@ minor mode is enabled."
(setq mode-line-modified
(delq 'semantic-show-parser-state-string mode-line-modified))
;; Remove hooks
(remove-hook 'semantic-edits-new-change-hooks
(remove-hook 'semantic-edits-new-change-functions
'semantic-show-parser-state-marker t)
(remove-hook 'semantic-edits-incremental-reparse-failed-hook
'semantic-show-parser-state-marker t)

View File

@ -189,8 +189,8 @@ we can tell font lock about them.")
;;;###autoload
(define-derived-mode srecode-template-mode fundamental-mode "SRecorder"
"Major-mode for writing SRecode macros."
(setq comment-start ";;"
comment-end "")
(set (make-local-variable 'comment-start) ";;")
(set (make-local-variable 'comment-end) "")
(set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'comment-start-skip)
"\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")

View File

@ -49,9 +49,9 @@ the middle is discarded, and just the beginning and end are displayed."
:version "21.1")
(defcustom debugger-bury-or-kill 'bury
"How to proceed with the debugger buffer when exiting `debug'.
The value used here affects the behavior of operations on any
window previously showing the debugger buffer.
"What to do with the debugger buffer when exiting `debug'.
The value affects the behavior of operations on any window
previously showing the debugger buffer.
`nil' means that if its window is not deleted when exiting the
debugger, invoking `switch-to-prev-buffer' will usually show
@ -79,7 +79,7 @@ The value used here is passed to `quit-restore-window'."
(const :tag "Bury" bury)
(const :tag "Kill" kill))
:group 'debugger
:version "24.2")
:version "24.3")
(defvar debugger-step-after-exit nil
"Non-nil means \"single-step\" after the debugger exits.")

View File

@ -220,8 +220,9 @@ so as to preserve the semantics of `setf'."
`(gv-define-setter ,name (val &rest args)
,(if fix-return
`(macroexp-let2 nil v val
(cons ',setter (append args (list v)))
v)
`(progn
(,',setter ,@(append args (list v)))
,v))
`(cons ',setter (append args (list val))))))
;;; Typical operations on generalized variables.

View File

@ -979,7 +979,7 @@ buffer, and should return a positive integer. At the time the
function is called, the window to be resized is selected."
:type '(choice integer function)
:group 'help
:version "24.2")
:version "24.3")
(define-minor-mode temp-buffer-resize-mode
"Toggle auto-resizing temporary buffer windows (Temp Buffer Resize Mode).

View File

@ -632,10 +632,13 @@ directory, like `default-directory'."
'(menu-item "Disable all filtering" ibuffer-filter-disable
:enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)))
(define-key-after map [menu-bar view filter filter-by-mode]
'(menu-item "Add filter by major mode..." ibuffer-filter-by-mode))
(define-key-after map [menu-bar view filter filter-by-mode]
'(menu-item "Add filter by major mode in use..."
'(menu-item "Add filter by any major mode..." ibuffer-filter-by-mode))
(define-key-after map [menu-bar view filter filter-by-used-mode]
'(menu-item "Add filter by a major mode in use..."
ibuffer-filter-by-used-mode))
(define-key-after map [menu-bar view filter filter-by-derived-mode]
'(menu-item "Add filter by derived mode..."
ibuffer-filter-by-derived-mode))
(define-key-after map [menu-bar view filter filter-by-name]
'(menu-item "Add filter by buffer name..." ibuffer-filter-by-name))
(define-key-after map [menu-bar view filter filter-by-filename]
@ -2438,8 +2441,9 @@ Marking commands:
Filtering commands:
'\\[ibuffer-filter-by-mode]' - Add a filter by major mode.
'\\[ibuffer-filter-by-used-mode]' - Add a filter by major mode now in use.
'\\[ibuffer-filter-by-mode]' - Add a filter by any major mode.
'\\[ibuffer-filter-by-used-mode]' - Add a filter by a major mode now in use.
'\\[ibuffer-filter-by-derived-mode]' - Add a filter by derived mode.
'\\[ibuffer-filter-by-name]' - Add a filter by buffer name.
'\\[ibuffer-filter-by-content]' - Add a filter by buffer content.
'\\[ibuffer-filter-by-filename]' - Add a filter by filename.

View File

@ -764,25 +764,39 @@ line number outside the file being compiled."
(and (overlayp ov) (overlay-get ov 'flymake-overlay)))
(defcustom flymake-error-bitmap '(exclamation-mark error)
"Bitmap used in the fringe for indicating errors.
"Bitmap (a symbol) used in the fringe for indicating errors.
The value may also be a list of two elements where the second
element specifies the face for the bitmap."
element specifies the face for the bitmap. For possible bitmap
symbols, see `fringe-bitmaps'. See also `flymake-warning-bitmap'.
The option `flymake-fringe-indicator-position' controls how and where
this is used."
:group 'flymake
:version "24.3"
:type 'symbol)
:type '(choice (symbol :tag "Bitmap")
(list :tag "Bitmap and face"
(symbol :tag "Bitmap")
(face :tag "Face"))))
(defcustom flymake-warning-bitmap 'question-mark
"Bitmap used in the fringe for indicating warnings.
"Bitmap (a symbol) used in the fringe for indicating warnings.
The value may also be a list of two elements where the second
element specifies the face for the bitmap."
element specifies the face for the bitmap. For possible bitmap
symbols, see `fringe-bitmaps'. See also `flymake-error-bitmap'.
The option `flymake-fringe-indicator-position' controls how and where
this is used."
:group 'flymake
:version "24.3"
:type 'symbol)
:type '(choice (symbol :tag "Bitmap")
(list :tag "Bitmap and face"
(symbol :tag "Bitmap")
(face :tag "Face"))))
(defcustom flymake-fringe-indicator-position 'left-fringe
"The position to put flymake fringe indicator.
The value can be nil, left-fringe or right-fringe.
Fringe indicators are disabled if nil."
The value can be nil (do not use indicators), `left-fringe' or `right-fringe'.
See `flymake-error-bitmap' and `flymake-warning-bitmap'."
:group 'flymake
:version "24.3"
:type '(choice (const left-fringe)

View File

@ -1074,12 +1074,9 @@ automatically if needed."
The name of the defun should be grouped so it can be retrieved
via `match-string'.")
(defun python-nav-beginning-of-defun (&optional arg)
"Move point to `beginning-of-defun'.
With positive ARG move search backwards. With negative do the
same but forward. When ARG is nil or 0 defaults to 1. This is
the main part of `python-beginning-of-defun-function'. Return
non-nil if point is moved to `beginning-of-defun'."
(defun python-nav--beginning-of-defun (&optional arg)
"Internal implementation of `python-nav-beginning-of-defun'.
With positive ARG search backwards, else search forwards."
(when (or (null arg) (= arg 0)) (setq arg 1))
(let* ((re-search-fn (if (> arg 0)
#'re-search-backward
@ -1087,6 +1084,15 @@ non-nil if point is moved to `beginning-of-defun'."
(line-beg-pos (line-beginning-position))
(line-content-start (+ line-beg-pos (current-indentation)))
(pos (point-marker))
(beg-indentation
(and (> arg 0)
(save-excursion
(and (python-info-current-line-empty-p)
(python-util-forward-comment -1))
(python-nav-beginning-of-statement)
(if (python-info-looking-at-beginning-of-defun)
(+ (current-indentation) python-indent-offset)
(current-indentation)))))
(found
(progn
(when (and (< arg 0)
@ -1094,7 +1100,12 @@ non-nil if point is moved to `beginning-of-defun'."
(end-of-line 1))
(while (and (funcall re-search-fn
python-nav-beginning-of-defun-regexp nil t)
(python-syntax-context-type)))
(or (python-syntax-context-type)
;; Handle nested defuns when moving
;; backwards by checking indentation.
(and (> arg 0)
(not (= (current-indentation) 0))
(>= (current-indentation) beg-indentation)))))
(and (python-info-looking-at-beginning-of-defun)
(or (not (= (line-number-at-pos pos)
(line-number-at-pos)))
@ -1105,55 +1116,43 @@ non-nil if point is moved to `beginning-of-defun'."
(or (beginning-of-line 1) t)
(and (goto-char pos) nil))))
(defun python-beginning-of-defun-function (&optional arg)
"Move point to the beginning of def or class.
With positive ARG move that number of functions backwards. With
negative do the same but forward. When ARG is nil or 0 defaults
to 1. Return non-nil if point is moved to `beginning-of-defun'."
(defun python-nav-beginning-of-defun (&optional arg)
"Move point to `beginning-of-defun'.
With positive ARG search backwards else search forward. When ARG
is nil or 0 defaults to 1. When searching backwards nested
defuns are handled with care depending on current point
position. Return non-nil if point is moved to
`beginning-of-defun'."
(when (or (null arg) (= arg 0)) (setq arg 1))
(let ((found))
(cond ((and (eq this-command 'mark-defun)
(python-info-looking-at-beginning-of-defun)))
(t
(dotimes (i (if (> arg 0) arg (- arg)))
(when (and (python-nav-beginning-of-defun arg)
(when (and (python-nav--beginning-of-defun arg)
(not found))
(setq found t)))))
found))
(defun python-end-of-defun-function ()
(defun python-nav-end-of-defun ()
"Move point to the end of def or class.
Returns nil if point is not in a def or class."
(interactive)
(let ((beg-defun-indent))
(let ((beg-defun-indent)
(beg-pos (point)))
(when (or (python-info-looking-at-beginning-of-defun)
(python-beginning-of-defun-function 1)
(python-beginning-of-defun-function -1))
(python-nav-beginning-of-defun 1)
(python-nav-beginning-of-defun -1))
(setq beg-defun-indent (current-indentation))
(while (progn
(python-nav-end-of-statement)
(python-util-forward-comment 1)
(and (> (current-indentation) beg-defun-indent)
(not (eobp)))))
(python-util-forward-comment -1)
(forward-line 1)
;; Go as forward as possible
(while (and (or
(python-nav-beginning-of-defun -1)
(and (goto-char (point-max)) nil))
(> (current-indentation) beg-defun-indent)))
(beginning-of-line 1)
;; Go as backwards as possible
(while (and (forward-line -1)
(not (bobp))
(or (not (current-word))
(equal (char-after (+ (point) (current-indentation))) ?#)
(<= (current-indentation) beg-defun-indent)
(looking-at (python-rx decorator))
(python-syntax-context-type))))
(forward-line 1)
;; If point falls inside a paren or string context the point is
;; forwarded at the end of it (or end of buffer if its not closed)
(let ((context-type (python-syntax-context-type)))
(when (memq context-type '(paren string))
;; Slow but safe.
(while (and (not (eobp))
(python-syntax-context-type))
(forward-line 1)))))))
;; Ensure point moves forward.
(and (> beg-pos (point)) (goto-char beg-pos)))))
(defun python-nav-beginning-of-statement ()
"Move to start of current statement."
@ -2022,7 +2021,7 @@ When argument ARG is non-nil do not include decorators."
(python-shell-send-region
(progn
(end-of-line 1)
(while (and (or (python-beginning-of-defun-function)
(while (and (or (python-nav-beginning-of-defun)
(beginning-of-line 1))
(> (current-indentation) 0)))
(when (not arg)
@ -2031,7 +2030,7 @@ When argument ARG is non-nil do not include decorators."
(forward-line 1))
(point-marker))
(progn
(or (python-end-of-defun-function)
(or (python-nav-end-of-defun)
(end-of-line 1))
(point-marker)))))
@ -2879,38 +2878,40 @@ Optional argument INCLUDE-TYPE indicates to include the type of the defun.
This function is compatible to be used as
`add-log-current-defun-function' since it returns nil if point is
not inside a defun."
(let ((names '())
(starting-indentation)
(starting-point)
(first-run t))
(save-restriction
(widen)
(save-excursion
(setq starting-point (point-marker))
(setq starting-indentation (save-excursion
(python-nav-beginning-of-statement)
(current-indentation)))
(end-of-line 1)
(while (python-beginning-of-defun-function 1)
(when (or (< (current-indentation) starting-indentation)
(and first-run
(<
starting-point
(save-excursion
(python-end-of-defun-function)
(point-marker)))))
(setq first-run nil)
(setq starting-indentation (current-indentation))
(looking-at python-nav-beginning-of-defun-regexp)
(setq names (cons
(let ((names)
(starting-indentation
(save-excursion
(and
(python-nav-beginning-of-defun 1)
;; This extra number is just for checking code
;; against indentation to work well on first run.
(+ (current-indentation) 4))))
(starting-point (point)))
;; Check point is inside a defun.
(when (and starting-indentation
(< starting-point
(save-excursion
(python-nav-end-of-defun)
(point))))
(catch 'exit
(while (python-nav-beginning-of-defun 1)
(when (< (current-indentation) starting-indentation)
(setq starting-indentation (current-indentation))
(setq names
(cons
(if (not include-type)
(match-string-no-properties 1)
(mapconcat 'identity
(split-string
(match-string-no-properties 0)) " "))
names))))))
(when names
(mapconcat (lambda (string) string) names "."))))
names)))
(and (= (current-indentation) 0) (throw 'exit t)))))
(and names
(mapconcat (lambda (string) string) names "."))))))
(defun python-info-current-symbol (&optional replace-self)
"Return current symbol using dotty syntax.
@ -3200,9 +3201,9 @@ if that value is non-nil."
'python-fill-paragraph)
(set (make-local-variable 'beginning-of-defun-function)
#'python-beginning-of-defun-function)
#'python-nav-beginning-of-defun)
(set (make-local-variable 'end-of-defun-function)
#'python-end-of-defun-function)
#'python-nav-end-of-defun)
(add-hook 'completion-at-point-functions
'python-completion-complete-at-point nil 'local)
@ -3230,7 +3231,7 @@ if that value is non-nil."
(add-to-list 'hs-special-modes-alist
`(python-mode "^\\s-*\\(?:def\\|class\\)\\>" nil "#"
,(lambda (arg)
(python-end-of-defun-function)) nil))
(python-nav-end-of-defun)) nil))
(set (make-local-variable 'mode-require-final-newline) t)

View File

@ -898,17 +898,7 @@ or blocks containing the current block."
(back-to-indentation)
(if (looking-at (concat "\\<\\(" ruby-block-mid-re "\\)\\>"))
(setq done nil)))))
(back-to-indentation)
(when (< n 0)
(let ((eol (point-at-eol)) state next)
(if (< orig eol) (setq eol orig))
(setq orig (point))
(while (and (setq next (apply 'ruby-parse-partial eol state))
(< (point) eol))
(setq state next))
(when (cdaadr state)
(goto-char (cdaadr state)))
(backward-word)))))
(back-to-indentation)))
(defun ruby-beginning-of-block (&optional arg)
"Move backward to the beginning of the current block.

View File

@ -143,37 +143,36 @@ to `display-buffer'."
window))))
(defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body)
"Evaluate BODY and display buffer specified by BUFFER-OR-NAME.
BUFFER-OR-NAME must specify either a live buffer or the name of a
buffer. If no buffer with such a name exists, create one.
"Evaluate BODY and display the buffer specified by BUFFER-OR-NAME.
BUFFER-OR-NAME must specify either a live buffer, or the name of a
buffer (if it does not exist, this macro creates it).
Make sure the specified buffer is empty before evaluating BODY.
Do not make that buffer current for BODY. Instead, bind
`standard-output' to that buffer, so that output generated with
`prin1' and similar functions in BODY goes into that buffer.
After evaluating BODY, mark the specified buffer unmodified and
read-only, and display it in a window via `display-buffer'. Pass
ACTION as action argument to `display-buffer'. Automatically
shrink the window used if `temp-buffer-resize-mode' is enabled.
After evaluating BODY, this marks the specified buffer unmodified and
read-only, and displays it in a window via `display-buffer', passing
ACTION as the action argument to `display-buffer'. It automatically
shrinks the relevant window if `temp-buffer-resize-mode' is enabled.
Return the value returned by BODY unless QUIT-FUNCTION specifies
a function. In that case, run the function with two arguments -
Returns the value returned by BODY, unless QUIT-FUNCTION specifies
a function. In that case, runs the function with two arguments -
the window showing the specified buffer and the value returned by
BODY - and return the value returned by that function.
BODY - and returns the value returned by that function.
If the buffer is displayed on a new frame, the window manager may
decide to select that frame. In that case, it's usually a good
strategy if the function specified by QUIT-FUNCTION selects the
window showing the buffer before reading a value from the
minibuffer, for example, when asking a `yes-or-no-p' question.
minibuffer; for example, when asking a `yes-or-no-p' question.
This construct is similar to `with-output-to-temp-buffer' but
does neither put the buffer in help mode nor does it call
`temp-buffer-show-function'. It also runs different hooks,
namely `temp-buffer-window-setup-hook' (with the specified buffer
current) and `temp-buffer-window-show-hook' (with the specified
buffer current and the window showing it selected).
This construct is similar to `with-output-to-temp-buffer', but does
not put the buffer in help mode, or call `temp-buffer-show-function'.
It also runs different hooks, namely `temp-buffer-window-setup-hook'
\(with the specified buffer current) and `temp-buffer-window-show-hook'
\(with the specified buffer current and the window showing it selected).
Since this macro calls `display-buffer', the window displaying
the buffer is usually not selected and the specified buffer
@ -6065,7 +6064,7 @@ A frame can be resized if and only if its root window is a live
window. The height of the root window is subject to the values
of `fit-frame-to-buffer-max-height' and `window-min-height'."
:type 'boolean
:version "24.2"
:version "24.3"
:group 'help)
(defcustom fit-frame-to-buffer-bottom-margin 4
@ -6073,7 +6072,7 @@ of `fit-frame-to-buffer-max-height' and `window-min-height'."
This is the number of lines `fit-frame-to-buffer' leaves free at the
bottom of the display in order to not obscure the system task bar."
:type 'integer
:version "24.2"
:version "24.3"
:group 'windows)
(defun fit-frame-to-buffer (&optional frame max-height min-height)

View File

@ -1,3 +1,11 @@
2012-11-13 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (decode_mode_spec): Limit the value of WIDTH argument
passed to pint2str and pint2hrstr to be at most the size of the
frame's decode_mode_spec_buffer. This avoids crashes with very
large values of FIELD_WIDTH argument to decode_mode_spec.
(Bug#12867)
2012-11-13 Paul Eggert <eggert@cs.ucla.edu>
Fix a race with verify-visited-file-modtime (Bug#12863).

View File

@ -21371,6 +21371,12 @@ decode_mode_spec (struct window *w, register int c, int field_width,
Lisp_Object obj;
struct frame *f = XFRAME (WINDOW_FRAME (w));
char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
/* We are going to use f->decode_mode_spec_buffer as the buffer to
produce strings from numerical values, so limit preposterously
large values of FIELD_WIDTH to avoid overrunning the buffer's
end. The size of the buffer is enough for FRAME_MESSAGE_BUF_SIZE
bytes plus the terminating null. */
int width = min (field_width, FRAME_MESSAGE_BUF_SIZE (f));
struct buffer *b = current_buffer;
obj = Qnil;
@ -21466,7 +21472,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
{
ptrdiff_t col = current_column ();
wset_column_number_displayed (w, make_number (col));
pint2str (decode_mode_spec_buf, field_width, col);
pint2str (decode_mode_spec_buf, width, col);
return decode_mode_spec_buf;
}
@ -21497,14 +21503,14 @@ decode_mode_spec (struct window *w, register int c, int field_width,
case 'i':
{
ptrdiff_t size = ZV - BEGV;
pint2str (decode_mode_spec_buf, field_width, size);
pint2str (decode_mode_spec_buf, width, size);
return decode_mode_spec_buf;
}
case 'I':
{
ptrdiff_t size = ZV - BEGV;
pint2hrstr (decode_mode_spec_buf, field_width, size);
pint2hrstr (decode_mode_spec_buf, width, size);
return decode_mode_spec_buf;
}
@ -21611,12 +21617,12 @@ decode_mode_spec (struct window *w, register int c, int field_width,
line_number_displayed = 1;
/* Make the string to show. */
pint2str (decode_mode_spec_buf, field_width, topline + nlines);
pint2str (decode_mode_spec_buf, width, topline + nlines);
return decode_mode_spec_buf;
no_value:
{
char* p = decode_mode_spec_buf;
int pad = field_width - 2;
int pad = width - 2;
while (pad-- > 0)
*p++ = ' ';
*p++ = '?';

View File

@ -202,13 +202,13 @@ VALUES-PLIST is a list with alternating index and value elements."
| end
|"))
(ert-deftest ruby-move-to-block-stops-at-opening ()
(ert-deftest ruby-move-to-block-stops-at-indentation ()
(with-temp-buffer
(insert "def f\nend")
(beginning-of-line)
(ruby-mode)
(ruby-move-to-block -1)
(should (looking-at "f$"))))
(should (looking-at "^def"))))
(ert-deftest ruby-toggle-block-to-do-end ()
(with-temp-buffer