Commit c04714f7 authored by Glenn Morris's avatar Glenn Morris

Merge from emacs-24; up to 2014-07-08T06:24:07Z!eggert@cs.ucla.edu

parents 4612d1ea 6e82d877
2014-09-08 Eli Zaretskii <eliz@gnu.org>
* unidata/unidata-gen.el (unidata-check): Bring this function up
to date with the currently supported methods of generating Unicode
property tables. Add a comment with a description how to invoke
the check. Update the copyright years in the reference to the
Unicode data files we use.
2014-08-30 Paul Eggert <eggert@cs.ucla.edu>
Vector-sorting fixes (Bug#18361).
......
......@@ -854,7 +854,7 @@ is the character itself.")))
;; The following command yields a file of about 96K bytes.
;; % gawk -F ';' '{print $1,$2;}' < UnicodeData.txt | gzip > temp.gz
;; With the following function, we can get a file of almost the same
;; the size.
;; size.
;; Generate a char-table for character names.
......@@ -1174,25 +1174,42 @@ is the character itself.")))
;; Verify if we can retrieve correct values from the generated
;; char-tables.
;;
;; Use like this:
;;
;; (let ((unidata-dir "/path/to/admin/unidata"))
;; (unidata-setup-list "unidata.txt")
;; (unidata-check))
(defun unidata-check ()
(dolist (elt unidata-prop-alist)
(let* ((prop (car elt))
(index (unidata-prop-index prop))
(generator (unidata-prop-generator prop))
(default-value (unidata-prop-default prop))
(val-list (unidata-prop-val-list prop))
(table (progn
(message "Generating %S table..." prop)
(funcall generator prop)))
(funcall generator prop default-value val-list)))
(decoder (char-table-extra-slot table 1))
(alist (and (functionp index)
(funcall index)))
(check #x400))
(dolist (e unidata-list)
(let ((char (car e))
(val1 (nth index e))
val2)
(let* ((char (car e))
(val1
(if alist (nth 1 (assoc char alist))
(nth index e)))
val2)
(if (and (stringp val1) (= (length val1) 0))
(setq val1 nil))
(unless (consp char)
(setq val2 (funcall decoder char (aref table char) table))
(unless (or (consp char)
(integerp decoder))
(setq val2
(cond ((functionp decoder)
(funcall decoder char (aref table char) table))
(t ; must be nil
(aref table char))))
(if val1
(cond ((eq generator 'unidata-gen-table-symbol)
(setq val1 (intern val1)))
......@@ -1201,11 +1218,15 @@ is the character itself.")))
((eq generator 'unidata-gen-table-character)
(setq val1 (string-to-number val1 16)))
((eq generator 'unidata-gen-table-decomposition)
(setq val1 (unidata-split-decomposition val1)))))
(setq val1 (unidata-split-decomposition val1))))
(cond ((eq prop 'decomposition)
(setq val1 (list char)))))
(when (>= char check)
(message "%S %04X" prop check)
(setq check (+ check #x400)))
(or (equal val1 val2)
;; <control> characters get a 'name' property of nil
(and (eq prop 'name) (string= val1 "<control>") (null val2))
(insert (format "> %04X %S\n< %04X %S\n"
char val1 char val2)))
(sit-for 0)))))))
......@@ -1261,7 +1282,7 @@ is the character itself.")))
(setq describer (symbol-function describer)))
(set-char-table-extra-slot table 3 describer))
(if (bobp)
(insert ";; Copyright (C) 1991-2013 Unicode, Inc.
(insert ";; Copyright (C) 1991-2014 Unicode, Inc.
;; This file was generated from the Unicode data files at
;; http://www.unicode.org/Public/UNIDATA/.
;; See lisp/international/README for the copyright and permission notice.\n"))
......
2014-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
* functions.texi (Core Advising Primitives): Add a note about the
confusing treatment of `interactive' for :filter-args (bug#18399).
2014-09-07 Michael Albinus <michael.albinus@gmx.de>
* strings.texi (Text Comparison): Describe `string-collate-equalp'
......
......@@ -1220,15 +1220,6 @@ ways to do it. The added function is also called an @emph{advice}.
This macro is the handy way to add the advice @var{function} to the function
stored in @var{place} (@pxref{Generalized Variables}).
If @var{function} is not interactive, then the combined function will inherit
the interactive spec, if any, of the original function. Else, the combined
function will be interactive and will use the interactive spec of
@var{function}. One exception: if the interactive spec of @var{function}
is a function (rather than an expression or a string), then the interactive
spec of the combined function will be a call to that function with as sole
argument the interactive spec of the original function. To interpret the spec
received as argument, use @code{advice-eval-interactive-spec}.
@var{where} determines how @var{function} is composed with the
existing function, e.g. whether @var{function} should be called before, or
after the original function. @xref{Advice combinators}, for the list of
......@@ -1271,6 +1262,21 @@ original function and other advices will apply to it, whereas an outermost
@code{:override} advice will override not only the original function but all
other advices applied to it as well.
@end table
If @var{function} is not interactive, then the combined function will inherit
the interactive spec, if any, of the original function. Else, the combined
function will be interactive and will use the interactive spec of
@var{function}. One exception: if the interactive spec of @var{function}
is a function (rather than an expression or a string), then the interactive
spec of the combined function will be a call to that function with as sole
argument the interactive spec of the original function. To interpret the spec
received as argument, use @code{advice-eval-interactive-spec}.
Note: The interactive spec of @var{function} will apply to the combined
function and should hence obey the calling convention of the combined function
rather than that of @var{function}. In many cases, it makes no difference
since they are identical, but it does matter for @code{:around},
@code{:filter-args}, and @code{filter-return}, where @var{function}.
@end defmac
@defmac remove-function place function
......
2014-09-08 Glenn Morris <rgm@gnu.org>
* calendar/calendar.el (calendar-basic-setup):
Avoid clobbering calendar with diary. (Bug#18381)
2014-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
* vc/vc-dir.el (vc-dir-update): Don't burp in corner case.
2014-09-08 Lars Ljung <lars@matholka.se> (tiny change)
* isearch.el (isearch-yank-word-or-char): Obey superword-mode
as well (bug#18400).
2014-09-08 Eli Zaretskii <eliz@gnu.org>
* subr.el (posn-actual-col-row): Doc fix. (Bug#18385)
2014-09-06 Leo Liu <sdl.web@gmail.com>
* emacs-lisp/pcase.el (pcase): Doc fix.
......
......@@ -1443,7 +1443,12 @@ display the generated calendar."
(calendar-generate-window month year)
(if (and calendar-view-diary-initially-flag
(calendar-date-is-visible-p date))
(diary-view-entries))))
;; Do not clobber the calendar with the diary, if the diary
;; has previously been shown in the window that now shows the
;; calendar (bug#18381).
(let ((display-buffer-overriding-action
'(nil . ((inhibit-same-window . t)))))
(diary-view-entries)))))
(if calendar-view-holidays-initially-flag
(let* ((diary-buffer (get-file-buffer diary-file))
(diary-window (if diary-buffer (get-buffer-window diary-buffer)))
......
......@@ -1968,10 +1968,12 @@ Subword is used when `subword-mode' is activated. "
(lambda ()
(if (or (= (char-syntax (or (char-after) 0)) ?w)
(= (char-syntax (or (char-after (1+ (point))) 0)) ?w))
(if (and (boundp 'subword-mode) subword-mode)
(if (or (and (boundp 'subword-mode) subword-mode)
(and (boundp 'superword-mode) superword-mode))
(subword-forward 1)
(forward-word 1))
(forward-char 1)) (point))))
(forward-char 1))
(point))))
(defun isearch-yank-word (&optional arg)
"Pull next word from buffer into search string.
......
......@@ -1159,12 +1159,17 @@ and `event-end' functions."
(/ (cdr pair) (+ (frame-char-height frame) spacing))))))))
(defun posn-actual-col-row (position)
"Return the actual column and row in POSITION, measured in characters.
These are the actual row number in the window and character number in that row.
"Return the window row number in POSITION and character number in that row.
Return nil if POSITION does not contain the actual position; in that case
`posn-col-row' can be used to get approximate values.
\`posn-col-row' can be used to get approximate values.
POSITION should be a list of the form returned by the `event-start'
and `event-end' functions."
and `event-end' functions.
This function does not account for the width on display, like the
number of visual columns taken by a TAB or image. If you need
the coordinates of POSITION in character units, you should use
\`posn-col-row', not this function."
(nth 6 position))
(defsubst posn-timestamp (position)
......
......@@ -433,7 +433,8 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc."
;; previous node was in a different directory.
(let* ((rd (file-relative-name entrydir))
(prev-node (ewoc-prev vc-ewoc node))
(prev-dir (vc-dir-node-directory prev-node)))
(prev-dir (if prev-node
(vc-dir-node-directory prev-node))))
(unless (string-equal entrydir prev-dir)
(ewoc-enter-before
vc-ewoc node (vc-dir-create-fileinfo rd nil nil nil entrydir))))
......
2014-09-08 Eli Zaretskii <eliz@gnu.org>
* dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
always make sure the marginal areas of the row are in sync with
what the window wants. (Bug#18419)
* data.c (set_internal): Use assq_no_quit, not Fassq, to find an
existing binding of a variable, to avoid silently aborting
commands that use specbind. (Bug#18331)
2014-09-07 Paul Eggert <eggert@cs.ucla.edu>
Fix bug uncovered by changing alloca to auto buffer (Bug#18410).
......
......@@ -1311,10 +1311,10 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
/* Find the new binding. */
XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */
tem1 = Fassq (symbol,
(blv->frame_local
? XFRAME (where)->param_alist
: BVAR (XBUFFER (where), local_var_alist)));
tem1 = assq_no_quit (symbol,
(blv->frame_local
? XFRAME (where)->param_alist
: BVAR (XBUFFER (where), local_var_alist)));
set_blv_where (blv, where);
blv->found = 1;
......
......@@ -1082,8 +1082,7 @@ prepare_desired_row (struct window *w, struct glyph_row *row, bool mode_line_p)
if (w->right_margin_cols > 0)
row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA];
}
else if (row == MATRIX_MODE_LINE_ROW (w->desired_matrix)
|| row == MATRIX_HEADER_LINE_ROW (w->desired_matrix))
else
{
/* The real number of glyphs reserved for the margins is
recorded in the glyph matrix, and can be different from
......@@ -1093,8 +1092,8 @@ prepare_desired_row (struct window *w, struct glyph_row *row, bool mode_line_p)
int right = w->desired_matrix->right_margin_glyphs;
/* Make sure the marginal areas of this row are in sync with
what the window wants, when the 1st/last row of the matrix
actually displays text and not header/mode line. */
what the window wants, when the row actually displays text
and not header/mode line. */
if (w->left_margin_cols > 0
&& (left != row->glyphs[TEXT_AREA] - row->glyphs[LEFT_MARGIN_AREA]))
row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA] + left;
......
......@@ -2457,7 +2457,7 @@ emacs_full_write (int fildes, char const *buf, ptrdiff_t nbyte,
{
if (errno == EINTR)
{
/* I originally used `QUIT' but that might causes files to
/* I originally used `QUIT' but that might cause files to
be truncated if you hit C-g in the middle of it. --Stef */
if (process_signals && pending_signals)
process_pending_signals ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment