mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-23 22:20:24 -08:00
Merge from emacs-24; up to 2014-06-03T06:51:18Z!eliz@gnu.org
This commit is contained in:
commit
90de50e270
15 changed files with 203 additions and 71 deletions
|
|
@ -1,3 +1,11 @@
|
||||||
|
2014-06-15 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
|
Port part of the AIX fix to Solaris (Bug#17598).
|
||||||
|
* configure.ac (_REENTRANT): Define on Solaris if HAVE_PTHREAD.
|
||||||
|
This ports part of the recent AIX fixes to Solaris. It is needed
|
||||||
|
for the same reason that _THREAD_SAFE is needed on AIX, e.g., to
|
||||||
|
make sure that each thread has its own 'errno'.
|
||||||
|
|
||||||
2014-06-13 Glenn Morris <rgm@gnu.org>
|
2014-06-13 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in (CC, CFLAGS, LDFLAGS, CPPFLAGS, abs_top_srcdir):
|
* Makefile.in (CC, CFLAGS, LDFLAGS, CPPFLAGS, abs_top_srcdir):
|
||||||
|
|
|
||||||
14
configure.ac
14
configure.ac
|
|
@ -2091,11 +2091,15 @@ if test "$ac_cv_header_pthread_h"; then
|
||||||
# Some systems optimize for single-threaded programs by default, and
|
# Some systems optimize for single-threaded programs by default, and
|
||||||
# need special flags to disable these optimizations. For example, the
|
# need special flags to disable these optimizations. For example, the
|
||||||
# definition of 'errno' in <errno.h>.
|
# definition of 'errno' in <errno.h>.
|
||||||
if test "$opsys" = aix4-2; then
|
case $opsys in
|
||||||
AC_DEFINE([_THREAD_SAFE], [1],
|
sol*)
|
||||||
[Define to 1 if your system requires this in multithreaded code.])
|
AC_DEFINE([_REENTRANT], 1,
|
||||||
fi])
|
[Define to 1 if your system requires this in multithreaded code.]);;
|
||||||
if test "X$LIBS" != "X$OLD_LIBS"; then
|
aix4-2)
|
||||||
|
AC_DEFINE([_THREAD_SAFE], 1,
|
||||||
|
[Define to 1 if your system requires this in multithreaded code.]);;
|
||||||
|
esac])
|
||||||
|
if test "X$LIBS" != "X$OLD_LIBS"; then
|
||||||
eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
|
eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
|
||||||
fi
|
fi
|
||||||
LIBS=$OLD_LIBS
|
LIBS=$OLD_LIBS
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-06-15 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
|
* commands.texi (Accessing Mouse): Improve the wording of the
|
||||||
|
posn-col-row documentation. (Bug#17768)
|
||||||
|
|
||||||
2014-06-10 Glenn Morris <rgm@gnu.org>
|
2014-06-10 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.
|
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.
|
||||||
|
|
|
||||||
|
|
@ -2053,23 +2053,24 @@ POSITION is assumed to lie in a window text area."
|
||||||
@defun posn-col-row position
|
@defun posn-col-row position
|
||||||
This function returns a cons cell @code{(@var{col} . @var{row})},
|
This function returns a cons cell @code{(@var{col} . @var{row})},
|
||||||
containing the estimated column and row corresponding to buffer
|
containing the estimated column and row corresponding to buffer
|
||||||
position @var{position}. The return value is given in units of the
|
position in @var{position}. The return value is given in units of the
|
||||||
frame's default character width and height, as computed from the
|
frame's default character width and default line height (including
|
||||||
@var{x} and @var{y} values corresponding to @var{position}. (So, if
|
spacing), as computed from the @var{x} and @var{y} values
|
||||||
the actual characters have non-default sizes, the actual row and
|
corresponding to @var{position}. (So, if the actual characters have
|
||||||
column may differ from these computed values.)
|
non-default sizes, the actual row and column may differ from these
|
||||||
|
computed values.)
|
||||||
|
|
||||||
Note that @var{row} is counted from the top of the text area. If the
|
Note that @var{row} is counted from the top of the text area. If the
|
||||||
window possesses a header line (@pxref{Header Lines}), it is
|
window given by @var{position} possesses a header line (@pxref{Header
|
||||||
@emph{not} counted as the first line.
|
Lines}), it is @emph{not} included in the @var{row} count.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@defun posn-actual-col-row position
|
@defun posn-actual-col-row position
|
||||||
Return the actual row and column in @var{position}, as a cons cell
|
Return the actual row and column in @var{position}, as a cons cell
|
||||||
@code{(@var{col} . @var{row})}. The values are the actual row and
|
@code{(@var{col} . @var{row})}. The values are the actual row and
|
||||||
column numbers in the window. @xref{Click Events}, for details. It
|
column numbers in the window given by @var{position}. @xref{Click
|
||||||
returns @code{nil} if @var{position} does not include actual positions
|
Events}, for details. The function returns @code{nil} if
|
||||||
values.
|
@var{position} does not include actual position values.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@defun posn-string position
|
@defun posn-string position
|
||||||
|
|
|
||||||
46
etc/NEWS
46
etc/NEWS
|
|
@ -309,16 +309,7 @@ removed.
|
||||||
*** The function `quail-help' is no longer an interactive command.
|
*** The function `quail-help' is no longer an interactive command.
|
||||||
Use `C-h C-\' (`describe-input-method') instead.
|
Use `C-h C-\' (`describe-input-method') instead.
|
||||||
|
|
||||||
** ImageMagick
|
** Frame and window handling
|
||||||
|
|
||||||
*** ImageMagick images now support the :max-width and :max-height keywords.
|
|
||||||
|
|
||||||
*** When using `create-image' with image data, you can pass a :format
|
|
||||||
attribute (via the property-list argument) in order to help
|
|
||||||
ImageMagick detect the image type. The value should be a MIME
|
|
||||||
content-type that is found in the new variable `image-format-suffixes'.
|
|
||||||
|
|
||||||
** Frame and window changes
|
|
||||||
|
|
||||||
*** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
|
*** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
|
||||||
bound to <f11> and M-<f10>, respectively.
|
bound to <f11> and M-<f10>, respectively.
|
||||||
|
|
@ -416,7 +407,7 @@ bottom of the selected frame.
|
||||||
caller of `display-buffer' is ready to handle the case of not displaying
|
caller of `display-buffer' is ready to handle the case of not displaying
|
||||||
the buffer in a window.
|
the buffer in a window.
|
||||||
|
|
||||||
** Lisp evaluation changes
|
** Lisp evaluation
|
||||||
|
|
||||||
*** `eval-defun' on an already defined defcustom calls the :set function,
|
*** `eval-defun' on an already defined defcustom calls the :set function,
|
||||||
if there is one.
|
if there is one.
|
||||||
|
|
@ -450,7 +441,7 @@ simply disabling Transient Mark mode does the same thing.
|
||||||
|
|
||||||
* Editing Changes in Emacs 24.4
|
* Editing Changes in Emacs 24.4
|
||||||
|
|
||||||
** Indentation changes
|
** Indentation
|
||||||
|
|
||||||
*** `electric-indent-mode' is now enabled by default.
|
*** `electric-indent-mode' is now enabled by default.
|
||||||
Typing RET reindents the current line and indents the new line.
|
Typing RET reindents the current line and indents the new line.
|
||||||
|
|
@ -708,8 +699,7 @@ the symbol near point.
|
||||||
*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
|
*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
|
||||||
will cycle through faces in `hi-lock-face-defaults' without prompting.
|
will cycle through faces in `hi-lock-face-defaults' without prompting.
|
||||||
|
|
||||||
** Icomplete
|
** Icomplete is now more similar to Ido.
|
||||||
Icomplete is now more similar to Ido.
|
|
||||||
|
|
||||||
*** Icomplete by default now applies to all forms of minibuffer completion.
|
*** Icomplete by default now applies to all forms of minibuffer completion.
|
||||||
The variable `icomplete-with-completion-tables' (now a user option)
|
The variable `icomplete-with-completion-tables' (now a user option)
|
||||||
|
|
@ -1066,8 +1056,8 @@ Also the following files used by the now obsolete otodo-mode.el:
|
||||||
|
|
||||||
* New Modes and Packages in Emacs 24.4
|
* New Modes and Packages in Emacs 24.4
|
||||||
|
|
||||||
** New package `eww' is a built-in web browser.
|
** New package eww.el provides a built-in web browser.
|
||||||
(It is only available if Emacs is compiled with libxml2 support.)
|
This requires Emacs to have been compiled with libxml2 support.
|
||||||
|
|
||||||
** New package nadvice.el offers lighter-weight advice facilities.
|
** New package nadvice.el offers lighter-weight advice facilities.
|
||||||
It is layered as:
|
It is layered as:
|
||||||
|
|
@ -1078,11 +1068,10 @@ any function-carrying place, such as process filters or `<foo>-function' hooks.
|
||||||
*** `advice-add'/`advice-remove' to add/remove a piece of advice on a named
|
*** `advice-add'/`advice-remove' to add/remove a piece of advice on a named
|
||||||
function, much like `defadvice' does.
|
function, much like `defadvice' does.
|
||||||
|
|
||||||
** New package frameset.el.
|
** New package frameset.el provides a set of operations to save a frameset
|
||||||
It provides a set of operations to save a frameset (the state of all
|
(the state of all or a subset of the existing frames and windows, somewhat
|
||||||
or a subset of the existing frames and windows, somewhat similar to a
|
similar to a frame configuration), both in-session and persistently, and
|
||||||
frame configuration), both in-session and persistently, and restore it
|
restore it at some point in the future.
|
||||||
at some point in the future.
|
|
||||||
|
|
||||||
** New package filenotify.el provides an interface for file system
|
** New package filenotify.el provides an interface for file system
|
||||||
notifications. It requires that Emacs be compiled with one of the
|
notifications. It requires that Emacs be compiled with one of the
|
||||||
|
|
@ -1092,9 +1081,9 @@ low-level libraries gfilenotify.c, inotify.c or w32notify.c.
|
||||||
display specified symbols as composed characters. E.g., in Emacs Lisp mode,
|
display specified symbols as composed characters. E.g., in Emacs Lisp mode,
|
||||||
this replaces the string "lambda" with the Greek lambda character.
|
this replaces the string "lambda" with the Greek lambda character.
|
||||||
|
|
||||||
** New minor mode `superword-mode'.
|
** New minor mode `superword-mode', which overrides the default word motion
|
||||||
This overrides the default word motion commands to treat "symbol_words"
|
commands to treat "symbol_words" as a single word, similar to what
|
||||||
as a single word, similar to what `subword-mode' does.
|
`subword-mode' does.
|
||||||
|
|
||||||
|
|
||||||
* Incompatible Lisp Changes in Emacs 24.4
|
* Incompatible Lisp Changes in Emacs 24.4
|
||||||
|
|
@ -1332,6 +1321,15 @@ animated images which do not specify a frame delay.
|
||||||
*** New functions `image-current-frame' and `image-show-frame' for getting
|
*** New functions `image-current-frame' and `image-show-frame' for getting
|
||||||
and setting the current frame of a multi-frame image.
|
and setting the current frame of a multi-frame image.
|
||||||
|
|
||||||
|
** ImageMagick
|
||||||
|
|
||||||
|
*** ImageMagick images now support the :max-width and :max-height keywords.
|
||||||
|
|
||||||
|
*** When using `create-image' with image data, you can pass a :format
|
||||||
|
attribute (via the property-list argument) in order to help
|
||||||
|
ImageMagick detect the image type. The value should be a MIME
|
||||||
|
content-type that is found in the new variable `image-format-suffixes'.
|
||||||
|
|
||||||
** Revert and Autorevert
|
** Revert and Autorevert
|
||||||
|
|
||||||
*** If Emacs is compiled with file notification support, it uses notifications
|
*** If Emacs is compiled with file notification support, it uses notifications
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,6 @@ This is due to a bug introduced in ImageMagick 6.8.2-3. The bug should
|
||||||
be fixed in ImageMagick 6.8.3-10. See <URL:http://debbugs.gnu.org/13867>.
|
be fixed in ImageMagick 6.8.3-10. See <URL:http://debbugs.gnu.org/13867>.
|
||||||
|
|
||||||
** Crashes when displaying GIF images in Emacs built with version
|
** Crashes when displaying GIF images in Emacs built with version
|
||||||
|
|
||||||
libungif-4.1.0 are resolved by using version libungif-4.1.0b1.
|
libungif-4.1.0 are resolved by using version libungif-4.1.0b1.
|
||||||
Configure checks for the correct version, but this problem could occur
|
Configure checks for the correct version, but this problem could occur
|
||||||
if a binary built against a shared libungif is run on a system with an
|
if a binary built against a shared libungif is run on a system with an
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,31 @@
|
||||||
2014-06-14 Ron Schnell <ronnie@driver-aces.com>
|
2014-06-15 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
|
* progmodes/cc-langs.el: Require cl-lib. (Bug#17463)
|
||||||
|
Replace delete-duplicates and mapcan by cl- versions throughout.
|
||||||
|
And cl-macroexpand-all by macroexpand-all.
|
||||||
|
(delete-duplicates, mapcan, cl-macroexpand-all): No need to declare.
|
||||||
|
|
||||||
|
2014-06-15 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
|
* subr.el (posn-col-row): Doc fix. (Bug#17768)
|
||||||
|
|
||||||
|
2014-06-15 Juri Linkov <juri@jurta.org>
|
||||||
|
|
||||||
|
* bindings.el: Put `ascii-character' property on keypad keys
|
||||||
|
mapped to characters. (Bug#17759)
|
||||||
|
|
||||||
|
2014-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||||
|
|
||||||
|
* emacs-lisp/smie.el (smie-next-sexp): Fix up "other-end" info when
|
||||||
|
bumping forward into a closing paren (bug#17761).
|
||||||
|
|
||||||
|
* term/xterm.el (xterm--version-handler): Work around for OSX
|
||||||
|
Terminal.app (bug#17607).
|
||||||
|
|
||||||
|
2014-06-14 Ron Schnell <ronnie@driver-aces.com>
|
||||||
|
|
||||||
* play/dunnet.el If a lamp is in the room, you won't be eaten by a grue.
|
* play/dunnet.el If a lamp is in the room, you won't be eaten by a grue.
|
||||||
|
|
||||||
2014-06-13 Glenn Morris <rgm@gnu.org>
|
2014-06-13 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in ($(lisp)/cus-load.el, $(lisp)/finder-inf.el)
|
* Makefile.in ($(lisp)/cus-load.el, $(lisp)/finder-inf.el)
|
||||||
|
|
|
||||||
|
|
@ -1075,10 +1075,14 @@ if `inhibit-field-text-motion' is non-nil."
|
||||||
(kp-5 ?5) (kp-6 ?6) (kp-7 ?7) (kp-8 ?8) (kp-9 ?9)
|
(kp-5 ?5) (kp-6 ?6) (kp-7 ?7) (kp-8 ?8) (kp-9 ?9)
|
||||||
(kp-add ?+) (kp-subtract ?-) (kp-multiply ?*) (kp-divide ?/))))
|
(kp-add ?+) (kp-subtract ?-) (kp-multiply ?*) (kp-divide ?/))))
|
||||||
(dolist (pair keys)
|
(dolist (pair keys)
|
||||||
(dolist (mod modifiers)
|
(let ((keypad (nth 0 pair))
|
||||||
(define-key function-key-map
|
(normal (nth 1 pair)))
|
||||||
(vector (append mod (list (nth 0 pair))))
|
(when (characterp normal)
|
||||||
(vector (append mod (list (nth 1 pair))))))))
|
(put keypad 'ascii-character normal))
|
||||||
|
(dolist (mod modifiers)
|
||||||
|
(define-key function-key-map
|
||||||
|
(vector (append mod (list keypad)))
|
||||||
|
(vector (append mod (list normal))))))))
|
||||||
|
|
||||||
(define-key function-key-map [backspace] [?\C-?])
|
(define-key function-key-map [backspace] [?\C-?])
|
||||||
(define-key function-key-map [delete] [?\C-?])
|
(define-key function-key-map [delete] [?\C-?])
|
||||||
|
|
|
||||||
|
|
@ -709,7 +709,8 @@ Possible return values:
|
||||||
(condition-case err
|
(condition-case err
|
||||||
(progn (funcall next-sexp 1) nil)
|
(progn (funcall next-sexp 1) nil)
|
||||||
(scan-error
|
(scan-error
|
||||||
(let ((epos (nth 2 err)))
|
(let* ((epos1 (nth 2 err))
|
||||||
|
(epos (if (<= (point) epos1) (nth 3 err) epos1)))
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
(throw 'return
|
(throw 'return
|
||||||
(list t epos
|
(list t epos
|
||||||
|
|
@ -1832,6 +1833,8 @@ KEYWORDS are additional arguments, which can use the following keywords:
|
||||||
(append smie-blink-matching-triggers
|
(append smie-blink-matching-triggers
|
||||||
(delete-dups triggers)))))))
|
(delete-dups triggers)))))))
|
||||||
|
|
||||||
|
(declare-function edebug-instrument-function "edebug" (func))
|
||||||
|
|
||||||
(defun smie-edebug ()
|
(defun smie-edebug ()
|
||||||
"Instrument the `smie-rules-function' for Edebug."
|
"Instrument the `smie-rules-function' for Edebug."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,9 @@
|
||||||
|
|
||||||
|
|
||||||
;; This file is not always loaded. See note above.
|
;; This file is not always loaded. See note above.
|
||||||
(cc-external-require 'cl)
|
;; Except it is always loaded - see bug#17463.
|
||||||
|
;;;(cc-external-require 'cl)
|
||||||
|
(require 'cl-lib)
|
||||||
|
|
||||||
|
|
||||||
;;; Setup for the `c-lang-defvar' system.
|
;;; Setup for the `c-lang-defvar' system.
|
||||||
|
|
@ -209,9 +211,9 @@ the evaluated constant value at compile time."
|
||||||
;; Suppress "might not be defined at runtime" warning.
|
;; Suppress "might not be defined at runtime" warning.
|
||||||
;; This file is only used when compiling other cc files.
|
;; This file is only used when compiling other cc files.
|
||||||
;; These are defined in cl as aliases to the cl- versions.
|
;; These are defined in cl as aliases to the cl- versions.
|
||||||
(declare-function delete-duplicates "cl-seq" (cl-seq &rest cl-keys) t)
|
;(declare-function delete-duplicates "cl-seq" (cl-seq &rest cl-keys) t)
|
||||||
(declare-function mapcan "cl-extra" (cl-func cl-seq &rest cl-rest) t)
|
;(declare-function mapcan "cl-extra" (cl-func cl-seq &rest cl-rest) t)
|
||||||
(declare-function cl-macroexpand-all "cl" (form &optional env))
|
;(declare-function cl-macroexpand-all "cl" (form &optional env))
|
||||||
|
|
||||||
(eval-and-compile
|
(eval-and-compile
|
||||||
;; Some helper functions used when building the language constants.
|
;; Some helper functions used when building the language constants.
|
||||||
|
|
@ -252,14 +254,14 @@ the evaluated constant value at compile time."
|
||||||
(unless xlate
|
(unless xlate
|
||||||
(setq xlate 'identity))
|
(setq xlate 'identity))
|
||||||
(c-with-syntax-table (c-lang-const c-mode-syntax-table)
|
(c-with-syntax-table (c-lang-const c-mode-syntax-table)
|
||||||
(delete-duplicates
|
(cl-delete-duplicates
|
||||||
(mapcan (lambda (opgroup)
|
(cl-mapcan (lambda (opgroup)
|
||||||
(when (if (symbolp (car opgroup))
|
(when (if (symbolp (car opgroup))
|
||||||
(when (funcall opgroup-filter (car opgroup))
|
(when (funcall opgroup-filter (car opgroup))
|
||||||
(setq opgroup (cdr opgroup))
|
(setq opgroup (cdr opgroup))
|
||||||
t)
|
t)
|
||||||
t)
|
t)
|
||||||
(mapcan (lambda (op)
|
(cl-mapcan (lambda (op)
|
||||||
(when (funcall op-filter op)
|
(when (funcall op-filter op)
|
||||||
(let ((res (funcall xlate op)))
|
(let ((res (funcall xlate op)))
|
||||||
(if (listp res) res (list res)))))
|
(if (listp res) res (list res)))))
|
||||||
|
|
@ -1147,7 +1149,7 @@ operators."
|
||||||
(c-lang-defconst c-all-op-syntax-tokens
|
(c-lang-defconst c-all-op-syntax-tokens
|
||||||
;; List of all tokens in the punctuation and parenthesis syntax
|
;; List of all tokens in the punctuation and parenthesis syntax
|
||||||
;; classes.
|
;; classes.
|
||||||
t (delete-duplicates (append (c-lang-const c-other-op-syntax-tokens)
|
t (cl-delete-duplicates (append (c-lang-const c-other-op-syntax-tokens)
|
||||||
(c-lang-const c-operator-list))
|
(c-lang-const c-operator-list))
|
||||||
:test 'string-equal))
|
:test 'string-equal))
|
||||||
|
|
||||||
|
|
@ -1700,7 +1702,7 @@ not the type face."
|
||||||
(c-lang-defconst c-type-start-kwds
|
(c-lang-defconst c-type-start-kwds
|
||||||
;; All keywords that can start a type (i.e. are either a type prefix
|
;; All keywords that can start a type (i.e. are either a type prefix
|
||||||
;; or a complete type).
|
;; or a complete type).
|
||||||
t (delete-duplicates (append (c-lang-const c-primitive-type-kwds)
|
t (cl-delete-duplicates (append (c-lang-const c-primitive-type-kwds)
|
||||||
(c-lang-const c-type-prefix-kwds)
|
(c-lang-const c-type-prefix-kwds)
|
||||||
(c-lang-const c-type-modifier-kwds))
|
(c-lang-const c-type-modifier-kwds))
|
||||||
:test 'string-equal))
|
:test 'string-equal))
|
||||||
|
|
@ -1943,7 +1945,7 @@ one of `c-type-list-kwds', `c-ref-list-kwds',
|
||||||
;; something is a type or just some sort of macro in front of the
|
;; something is a type or just some sort of macro in front of the
|
||||||
;; declaration. They might be ambiguous with types or type
|
;; declaration. They might be ambiguous with types or type
|
||||||
;; prefixes.
|
;; prefixes.
|
||||||
t (delete-duplicates (append (c-lang-const c-class-decl-kwds)
|
t (cl-delete-duplicates (append (c-lang-const c-class-decl-kwds)
|
||||||
(c-lang-const c-brace-list-decl-kwds)
|
(c-lang-const c-brace-list-decl-kwds)
|
||||||
(c-lang-const c-other-block-decl-kwds)
|
(c-lang-const c-other-block-decl-kwds)
|
||||||
(c-lang-const c-typedef-decl-kwds)
|
(c-lang-const c-typedef-decl-kwds)
|
||||||
|
|
@ -2136,7 +2138,7 @@ type identifiers separated by arbitrary tokens."
|
||||||
pike '("array" "function" "int" "mapping" "multiset" "object" "program"))
|
pike '("array" "function" "int" "mapping" "multiset" "object" "program"))
|
||||||
|
|
||||||
(c-lang-defconst c-paren-any-kwds
|
(c-lang-defconst c-paren-any-kwds
|
||||||
t (delete-duplicates (append (c-lang-const c-paren-nontype-kwds)
|
t (cl-delete-duplicates (append (c-lang-const c-paren-nontype-kwds)
|
||||||
(c-lang-const c-paren-type-kwds))
|
(c-lang-const c-paren-type-kwds))
|
||||||
:test 'string-equal))
|
:test 'string-equal))
|
||||||
|
|
||||||
|
|
@ -2162,7 +2164,7 @@ assumed to be set if this isn't nil."
|
||||||
|
|
||||||
(c-lang-defconst c-<>-sexp-kwds
|
(c-lang-defconst c-<>-sexp-kwds
|
||||||
;; All keywords that can be followed by an angle bracket sexp.
|
;; All keywords that can be followed by an angle bracket sexp.
|
||||||
t (delete-duplicates (append (c-lang-const c-<>-type-kwds)
|
t (cl-delete-duplicates (append (c-lang-const c-<>-type-kwds)
|
||||||
(c-lang-const c-<>-arglist-kwds))
|
(c-lang-const c-<>-arglist-kwds))
|
||||||
:test 'string-equal))
|
:test 'string-equal))
|
||||||
|
|
||||||
|
|
@ -2222,7 +2224,7 @@ Keywords here should also be in `c-block-stmt-1-kwds'."
|
||||||
|
|
||||||
(c-lang-defconst c-block-stmt-kwds
|
(c-lang-defconst c-block-stmt-kwds
|
||||||
;; Union of `c-block-stmt-1-kwds' and `c-block-stmt-2-kwds'.
|
;; Union of `c-block-stmt-1-kwds' and `c-block-stmt-2-kwds'.
|
||||||
t (delete-duplicates (append (c-lang-const c-block-stmt-1-kwds)
|
t (cl-delete-duplicates (append (c-lang-const c-block-stmt-1-kwds)
|
||||||
(c-lang-const c-block-stmt-2-kwds))
|
(c-lang-const c-block-stmt-2-kwds))
|
||||||
:test 'string-equal))
|
:test 'string-equal))
|
||||||
|
|
||||||
|
|
@ -2326,7 +2328,7 @@ This construct is \"<keyword> <expression> :\"."
|
||||||
(c-lang-defconst c-expr-kwds
|
(c-lang-defconst c-expr-kwds
|
||||||
;; Keywords that can occur anywhere in expressions. Built from
|
;; Keywords that can occur anywhere in expressions. Built from
|
||||||
;; `c-primary-expr-kwds' and all keyword operators in `c-operators'.
|
;; `c-primary-expr-kwds' and all keyword operators in `c-operators'.
|
||||||
t (delete-duplicates
|
t (cl-delete-duplicates
|
||||||
(append (c-lang-const c-primary-expr-kwds)
|
(append (c-lang-const c-primary-expr-kwds)
|
||||||
(c-filter-ops (c-lang-const c-operator-list)
|
(c-filter-ops (c-lang-const c-operator-list)
|
||||||
t
|
t
|
||||||
|
|
@ -2430,7 +2432,7 @@ Note that Java specific rules are currently applied to tell this from
|
||||||
|
|
||||||
(c-lang-defconst c-keywords
|
(c-lang-defconst c-keywords
|
||||||
;; All keywords as a list.
|
;; All keywords as a list.
|
||||||
t (delete-duplicates
|
t (cl-delete-duplicates
|
||||||
(c-lang-defconst-eval-immediately
|
(c-lang-defconst-eval-immediately
|
||||||
`(append ,@(mapcar (lambda (kwds-lang-const)
|
`(append ,@(mapcar (lambda (kwds-lang-const)
|
||||||
`(c-lang-const ,kwds-lang-const))
|
`(c-lang-const ,kwds-lang-const))
|
||||||
|
|
@ -3193,10 +3195,10 @@ accomplish that conveniently."
|
||||||
;; `c-lang-const' will expand to the evaluated
|
;; `c-lang-const' will expand to the evaluated
|
||||||
;; constant immediately in `cl-macroexpand-all'
|
;; constant immediately in `cl-macroexpand-all'
|
||||||
;; below.
|
;; below.
|
||||||
(mapcan
|
(cl-mapcan
|
||||||
(lambda (init)
|
(lambda (init)
|
||||||
`(current-var ',(car init)
|
`(current-var ',(car init)
|
||||||
,(car init) ,(cl-macroexpand-all
|
,(car init) ,(macroexpand-all
|
||||||
(elt init 1))))
|
(elt init 1))))
|
||||||
;; Note: The following `append' copies the
|
;; Note: The following `append' copies the
|
||||||
;; first argument. That list is small, so
|
;; first argument. That list is small, so
|
||||||
|
|
|
||||||
|
|
@ -1127,7 +1127,7 @@ pixels. POSITION should be a list of the form returned by
|
||||||
"Return the nominal column and row in POSITION, measured in characters.
|
"Return the nominal column and row in POSITION, measured in characters.
|
||||||
The column and row values are approximations calculated from the x
|
The column and row values are approximations calculated from the x
|
||||||
and y coordinates in POSITION and the frame's default character width
|
and y coordinates in POSITION and the frame's default character width
|
||||||
and height.
|
and default line height, including spacing.
|
||||||
For a scroll-bar event, the result column is 0, and the row
|
For a scroll-bar event, the result column is 0, and the row
|
||||||
corresponds to the vertical position of the click in the scroll bar.
|
corresponds to the vertical position of the click in the scroll bar.
|
||||||
POSITION should be a list of the form returned by the `event-start'
|
POSITION should be a list of the form returned by the `event-start'
|
||||||
|
|
|
||||||
|
|
@ -605,6 +605,10 @@ The relevant features are:
|
||||||
;; Gnome terminal 3.6.1 reports 1;3406;0
|
;; Gnome terminal 3.6.1 reports 1;3406;0
|
||||||
;; Gnome terminal 2.32.1 reports 1;2802;0
|
;; Gnome terminal 2.32.1 reports 1;2802;0
|
||||||
(setq version 200))
|
(setq version 200))
|
||||||
|
(when (equal (match-string 1 str) "83")
|
||||||
|
;; OSX's Terminal.app (version 2.3 (309), which returns 83;40003;0)
|
||||||
|
;; seems to also lack support for some of these (bug#17607).
|
||||||
|
(setq version 240))
|
||||||
;; If version is 242 or higher, assume the xterm supports
|
;; If version is 242 or higher, assume the xterm supports
|
||||||
;; reporting the background color (TODO: maybe earlier
|
;; reporting the background color (TODO: maybe earlier
|
||||||
;; versions do too...)
|
;; versions do too...)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
2014-06-15 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
|
* xdisp.c (Fmove_point_visually): Don't use the glyph matrix
|
||||||
|
information if we are in the middle of executing a keyboard macro,
|
||||||
|
since redisplay doesn't update the screen until the macro is
|
||||||
|
finished. (Bug#17777)
|
||||||
|
|
||||||
|
* alloc.c (cleanup_vector): Don't dereference a font driver
|
||||||
|
pointer if it is NULL. (Bug#17771)
|
||||||
|
|
||||||
2014-06-13 Glenn Morris <rgm@gnu.org>
|
2014-06-13 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in ($(leimdir)/leim-list.el, $(srcdir)/macuvs.h)
|
* Makefile.in ($(leimdir)/leim-list.el, $(srcdir)/macuvs.h)
|
||||||
|
|
|
||||||
13
src/alloc.c
13
src/alloc.c
|
|
@ -2974,9 +2974,16 @@ cleanup_vector (struct Lisp_Vector *vector)
|
||||||
&& ((vector->header.size & PSEUDOVECTOR_SIZE_MASK)
|
&& ((vector->header.size & PSEUDOVECTOR_SIZE_MASK)
|
||||||
== FONT_OBJECT_MAX))
|
== FONT_OBJECT_MAX))
|
||||||
{
|
{
|
||||||
/* Attempt to catch subtle bugs like Bug#16140. */
|
struct font_driver *drv = ((struct font *) vector)->driver;
|
||||||
eassert (valid_font_driver (((struct font *) vector)->driver));
|
|
||||||
((struct font *) vector)->driver->close ((struct font *) vector);
|
/* The font driver might sometimes be NULL, e.g. if Emacs was
|
||||||
|
interrupted before it had time to set it up. */
|
||||||
|
if (drv)
|
||||||
|
{
|
||||||
|
/* Attempt to catch subtle bugs like Bug#16140. */
|
||||||
|
eassert (valid_font_driver (drv));
|
||||||
|
drv->close ((struct font *) vector);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
68
src/xdisp.c
68
src/xdisp.c
|
|
@ -98,7 +98,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
This function attempts to redisplay a window by reusing parts of
|
This function attempts to redisplay a window by reusing parts of
|
||||||
its existing display. It finds and reuses the part that was not
|
its existing display. It finds and reuses the part that was not
|
||||||
changed, and redraws the rest.
|
changed, and redraws the rest. (The "id" part in the function's
|
||||||
|
name stands for "insert/delete", not for "identification" or
|
||||||
|
somesuch.)
|
||||||
|
|
||||||
. try_window
|
. try_window
|
||||||
|
|
||||||
|
|
@ -113,6 +115,19 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
optimizations were successful, redisplay calls redisplay_windows,
|
optimizations were successful, redisplay calls redisplay_windows,
|
||||||
which performs a full redisplay of all windows.
|
which performs a full redisplay of all windows.
|
||||||
|
|
||||||
|
Note that there's one more important optimization up Emacs's
|
||||||
|
sleeve, but it is related to actually redrawing the potentially
|
||||||
|
changed portions of the window/frame, not to reproducing the
|
||||||
|
desired matrices of those potentially changed portions. Namely,
|
||||||
|
the function update_frame and its subroutines, which you will find
|
||||||
|
in dispnew.c, compare the desired matrices with the current
|
||||||
|
matrices, and only redraw the portions that changed. So it could
|
||||||
|
happen that the functions in this file for some reason decide that
|
||||||
|
the entire desired matrix needs to be regenerated from scratch, and
|
||||||
|
still only parts of the Emacs display, or even nothing at all, will
|
||||||
|
be actually delivered to the glass, because update_frame has found
|
||||||
|
that the new and the old screen contents are similar or identical.
|
||||||
|
|
||||||
Desired matrices.
|
Desired matrices.
|
||||||
|
|
||||||
Desired matrices are always built per Emacs window. The function
|
Desired matrices are always built per Emacs window. The function
|
||||||
|
|
@ -15746,7 +15761,51 @@ set_vertical_scroll_bar (struct window *w)
|
||||||
selected_window is redisplayed.
|
selected_window is redisplayed.
|
||||||
|
|
||||||
We can return without actually redisplaying the window if fonts has been
|
We can return without actually redisplaying the window if fonts has been
|
||||||
changed on window's frame. In that case, redisplay_internal will retry. */
|
changed on window's frame. In that case, redisplay_internal will retry.
|
||||||
|
|
||||||
|
As one of the important parts of redisplaying a window, we need to
|
||||||
|
decide whether the previous window-start position (stored in the
|
||||||
|
window's w->start marker position) is still valid, and if it isn't,
|
||||||
|
recompute it. Some details about that:
|
||||||
|
|
||||||
|
. The previous window-start could be in a continuation line, in
|
||||||
|
which case we need to recompute it when the window width
|
||||||
|
changes. See compute_window_start_on_continuation_line and its
|
||||||
|
call below.
|
||||||
|
|
||||||
|
. The text that changed since last redisplay could include the
|
||||||
|
previous window-start position. In that case, we try to salvage
|
||||||
|
what we can from the current glyph matrix by calling
|
||||||
|
try_scrolling, which see.
|
||||||
|
|
||||||
|
. Some Emacs command could force us to use a specific window-start
|
||||||
|
position by setting the window's force_start flag, or gently
|
||||||
|
propose doing that by setting the window's optional_new_start
|
||||||
|
flag. In these cases, we try using the specified start point if
|
||||||
|
that succeeds (i.e. the window desired matrix is successfully
|
||||||
|
recomputed, and point location is within the window). In case
|
||||||
|
of optional_new_start, we first check if the specified start
|
||||||
|
position is feasible, i.e. if it will allow point to be
|
||||||
|
displayed in the window. If using the specified start point
|
||||||
|
fails, e.g., if new fonts are needed to be loaded, we abort the
|
||||||
|
redisplay cycle and leave it up to the next cycle to figure out
|
||||||
|
things.
|
||||||
|
|
||||||
|
. Note that the window's force_start flag is sometimes set by
|
||||||
|
redisplay itself, when it decides that the previous window start
|
||||||
|
point is fine and should be kept. Search for "goto force_start"
|
||||||
|
below to see the details. Like the values of window-start
|
||||||
|
specified outside of redisply, these internally deduced values
|
||||||
|
are tested for feasibility, and ignored if found to be
|
||||||
|
unfeasible.
|
||||||
|
|
||||||
|
. Note that the function try_window, used to completely redisplay
|
||||||
|
a window, accepts the window's start point as its argument.
|
||||||
|
This is used several times in the redisplay code to control
|
||||||
|
where the window start will be, according to user options such
|
||||||
|
as scroll-conservatively, and also to ensure the screen line
|
||||||
|
showing point will be fully (as opposed to partially) visible on
|
||||||
|
display. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
redisplay_window (Lisp_Object window, bool just_this_one_p)
|
redisplay_window (Lisp_Object window, bool just_this_one_p)
|
||||||
|
|
@ -15792,6 +15851,8 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
|
||||||
eassert (XMARKER (w->start)->buffer == buffer);
|
eassert (XMARKER (w->start)->buffer == buffer);
|
||||||
eassert (XMARKER (w->pointm)->buffer == buffer);
|
eassert (XMARKER (w->pointm)->buffer == buffer);
|
||||||
|
|
||||||
|
/* We come here again if we need to run window-text-change-functions
|
||||||
|
below. */
|
||||||
restart:
|
restart:
|
||||||
reconsider_clip_changes (w);
|
reconsider_clip_changes (w);
|
||||||
frame_line_height = default_line_pixel_height (w);
|
frame_line_height = default_line_pixel_height (w);
|
||||||
|
|
@ -15856,7 +15917,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
|
||||||
&& !current_buffer->prevent_redisplay_optimizations_p
|
&& !current_buffer->prevent_redisplay_optimizations_p
|
||||||
&& !window_outdated (w));
|
&& !window_outdated (w));
|
||||||
|
|
||||||
/* Run the window-bottom-change-functions
|
/* Run the window-text-change-functions
|
||||||
if it is possible that the text on the screen has changed
|
if it is possible that the text on the screen has changed
|
||||||
(either due to modification of the text, or any other reason). */
|
(either due to modification of the text, or any other reason). */
|
||||||
if (!current_matrix_up_to_date_p
|
if (!current_matrix_up_to_date_p
|
||||||
|
|
@ -20685,6 +20746,7 @@ Value is the new character position of point. */)
|
||||||
recorded in the glyphs, at least as long as the goal is on the
|
recorded in the glyphs, at least as long as the goal is on the
|
||||||
screen. */
|
screen. */
|
||||||
if (w->window_end_valid
|
if (w->window_end_valid
|
||||||
|
&& NILP (Vexecuting_kbd_macro)
|
||||||
&& !windows_or_buffers_changed
|
&& !windows_or_buffers_changed
|
||||||
&& b
|
&& b
|
||||||
&& !b->clip_changed
|
&& !b->clip_changed
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue