aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-09-07 23:00:58 -0700
committerGlenn Morris2014-09-07 23:00:58 -0700
commitc04714f7c87956eb49e803d69290793f15fdaa90 (patch)
treebf673719000a4e8d20178433870c1759d1759020
parent4612d1eab721a1010312382d1048c8b3a67b18fa (diff)
parent6e82d877a4a59feb4390baeb2ccc57e7cd03593d (diff)
downloademacs-c04714f7c87956eb49e803d69290793f15fdaa90.tar.gz
emacs-c04714f7c87956eb49e803d69290793f15fdaa90.zip
Merge from emacs-24; up to 2014-07-08T06:24:07Z!eggert@cs.ucla.edu
-rw-r--r--admin/ChangeLog8
-rw-r--r--admin/unidata/unidata-gen.el39
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/functions.texi24
-rw-r--r--lisp/ChangeLog18
-rw-r--r--lisp/calendar/calendar.el7
-rw-r--r--lisp/isearch.el6
-rw-r--r--lisp/subr.el13
-rw-r--r--lisp/vc/vc-dir.el3
-rw-r--r--src/ChangeLog10
-rw-r--r--src/data.c8
-rw-r--r--src/dispnew.c7
-rw-r--r--src/sysdep.c2
13 files changed, 115 insertions, 35 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index bbb673beddf..4ebf97d3163 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,11 @@
12014-09-08 Eli Zaretskii <eliz@gnu.org>
2
3 * unidata/unidata-gen.el (unidata-check): Bring this function up
4 to date with the currently supported methods of generating Unicode
5 property tables. Add a comment with a description how to invoke
6 the check. Update the copyright years in the reference to the
7 Unicode data files we use.
8
12014-08-30 Paul Eggert <eggert@cs.ucla.edu> 92014-08-30 Paul Eggert <eggert@cs.ucla.edu>
2 10
3 Vector-sorting fixes (Bug#18361). 11 Vector-sorting fixes (Bug#18361).
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index ff45b79aab7..fb9b6dccc72 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -854,7 +854,7 @@ is the character itself.")))
854;; The following command yields a file of about 96K bytes. 854;; The following command yields a file of about 96K bytes.
855;; % gawk -F ';' '{print $1,$2;}' < UnicodeData.txt | gzip > temp.gz 855;; % gawk -F ';' '{print $1,$2;}' < UnicodeData.txt | gzip > temp.gz
856;; With the following function, we can get a file of almost the same 856;; With the following function, we can get a file of almost the same
857;; the size. 857;; size.
858 858
859;; Generate a char-table for character names. 859;; Generate a char-table for character names.
860 860
@@ -1174,25 +1174,42 @@ is the character itself.")))
1174 1174
1175;; Verify if we can retrieve correct values from the generated 1175;; Verify if we can retrieve correct values from the generated
1176;; char-tables. 1176;; char-tables.
1177;;
1178;; Use like this:
1179;;
1180;; (let ((unidata-dir "/path/to/admin/unidata"))
1181;; (unidata-setup-list "unidata.txt")
1182;; (unidata-check))
1177 1183
1178(defun unidata-check () 1184(defun unidata-check ()
1179 (dolist (elt unidata-prop-alist) 1185 (dolist (elt unidata-prop-alist)
1180 (let* ((prop (car elt)) 1186 (let* ((prop (car elt))
1181 (index (unidata-prop-index prop)) 1187 (index (unidata-prop-index prop))
1182 (generator (unidata-prop-generator prop)) 1188 (generator (unidata-prop-generator prop))
1189 (default-value (unidata-prop-default prop))
1190 (val-list (unidata-prop-val-list prop))
1183 (table (progn 1191 (table (progn
1184 (message "Generating %S table..." prop) 1192 (message "Generating %S table..." prop)
1185 (funcall generator prop))) 1193 (funcall generator prop default-value val-list)))
1186 (decoder (char-table-extra-slot table 1)) 1194 (decoder (char-table-extra-slot table 1))
1195 (alist (and (functionp index)
1196 (funcall index)))
1187 (check #x400)) 1197 (check #x400))
1188 (dolist (e unidata-list) 1198 (dolist (e unidata-list)
1189 (let ((char (car e)) 1199 (let* ((char (car e))
1190 (val1 (nth index e)) 1200 (val1
1191 val2) 1201 (if alist (nth 1 (assoc char alist))
1202 (nth index e)))
1203 val2)
1192 (if (and (stringp val1) (= (length val1) 0)) 1204 (if (and (stringp val1) (= (length val1) 0))
1193 (setq val1 nil)) 1205 (setq val1 nil))
1194 (unless (consp char) 1206 (unless (or (consp char)
1195 (setq val2 (funcall decoder char (aref table char) table)) 1207 (integerp decoder))
1208 (setq val2
1209 (cond ((functionp decoder)
1210 (funcall decoder char (aref table char) table))
1211 (t ; must be nil
1212 (aref table char))))
1196 (if val1 1213 (if val1
1197 (cond ((eq generator 'unidata-gen-table-symbol) 1214 (cond ((eq generator 'unidata-gen-table-symbol)
1198 (setq val1 (intern val1))) 1215 (setq val1 (intern val1)))
@@ -1201,11 +1218,15 @@ is the character itself.")))
1201 ((eq generator 'unidata-gen-table-character) 1218 ((eq generator 'unidata-gen-table-character)
1202 (setq val1 (string-to-number val1 16))) 1219 (setq val1 (string-to-number val1 16)))
1203 ((eq generator 'unidata-gen-table-decomposition) 1220 ((eq generator 'unidata-gen-table-decomposition)
1204 (setq val1 (unidata-split-decomposition val1))))) 1221 (setq val1 (unidata-split-decomposition val1))))
1222 (cond ((eq prop 'decomposition)
1223 (setq val1 (list char)))))
1205 (when (>= char check) 1224 (when (>= char check)
1206 (message "%S %04X" prop check) 1225 (message "%S %04X" prop check)
1207 (setq check (+ check #x400))) 1226 (setq check (+ check #x400)))
1208 (or (equal val1 val2) 1227 (or (equal val1 val2)
1228 ;; <control> characters get a 'name' property of nil
1229 (and (eq prop 'name) (string= val1 "<control>") (null val2))
1209 (insert (format "> %04X %S\n< %04X %S\n" 1230 (insert (format "> %04X %S\n< %04X %S\n"
1210 char val1 char val2))) 1231 char val1 char val2)))
1211 (sit-for 0))))))) 1232 (sit-for 0)))))))
@@ -1261,7 +1282,7 @@ is the character itself.")))
1261 (setq describer (symbol-function describer))) 1282 (setq describer (symbol-function describer)))
1262 (set-char-table-extra-slot table 3 describer)) 1283 (set-char-table-extra-slot table 3 describer))
1263 (if (bobp) 1284 (if (bobp)
1264 (insert ";; Copyright (C) 1991-2013 Unicode, Inc. 1285 (insert ";; Copyright (C) 1991-2014 Unicode, Inc.
1265;; This file was generated from the Unicode data files at 1286;; This file was generated from the Unicode data files at
1266;; http://www.unicode.org/Public/UNIDATA/. 1287;; http://www.unicode.org/Public/UNIDATA/.
1267;; See lisp/international/README for the copyright and permission notice.\n")) 1288;; See lisp/international/README for the copyright and permission notice.\n"))
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 185e5045be7..ddd0dee213a 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12014-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * functions.texi (Core Advising Primitives): Add a note about the
4 confusing treatment of `interactive' for :filter-args (bug#18399).
5
12014-09-07 Michael Albinus <michael.albinus@gmx.de> 62014-09-07 Michael Albinus <michael.albinus@gmx.de>
2 7
3 * strings.texi (Text Comparison): Describe `string-collate-equalp' 8 * strings.texi (Text Comparison): Describe `string-collate-equalp'
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 91fdcc63cbe..3049660159a 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1220,15 +1220,6 @@ ways to do it. The added function is also called an @emph{advice}.
1220This macro is the handy way to add the advice @var{function} to the function 1220This macro is the handy way to add the advice @var{function} to the function
1221stored in @var{place} (@pxref{Generalized Variables}). 1221stored in @var{place} (@pxref{Generalized Variables}).
1222 1222
1223If @var{function} is not interactive, then the combined function will inherit
1224the interactive spec, if any, of the original function. Else, the combined
1225function will be interactive and will use the interactive spec of
1226@var{function}. One exception: if the interactive spec of @var{function}
1227is a function (rather than an expression or a string), then the interactive
1228spec of the combined function will be a call to that function with as sole
1229argument the interactive spec of the original function. To interpret the spec
1230received as argument, use @code{advice-eval-interactive-spec}.
1231
1232@var{where} determines how @var{function} is composed with the 1223@var{where} determines how @var{function} is composed with the
1233existing function, e.g. whether @var{function} should be called before, or 1224existing function, e.g. whether @var{function} should be called before, or
1234after the original function. @xref{Advice combinators}, for the list of 1225after 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
1271@code{:override} advice will override not only the original function but all 1262@code{:override} advice will override not only the original function but all
1272other advices applied to it as well. 1263other advices applied to it as well.
1273@end table 1264@end table
1265
1266If @var{function} is not interactive, then the combined function will inherit
1267the interactive spec, if any, of the original function. Else, the combined
1268function will be interactive and will use the interactive spec of
1269@var{function}. One exception: if the interactive spec of @var{function}
1270is a function (rather than an expression or a string), then the interactive
1271spec of the combined function will be a call to that function with as sole
1272argument the interactive spec of the original function. To interpret the spec
1273received as argument, use @code{advice-eval-interactive-spec}.
1274
1275Note: The interactive spec of @var{function} will apply to the combined
1276function and should hence obey the calling convention of the combined function
1277rather than that of @var{function}. In many cases, it makes no difference
1278since they are identical, but it does matter for @code{:around},
1279@code{:filter-args}, and @code{filter-return}, where @var{function}.
1274@end defmac 1280@end defmac
1275 1281
1276@defmac remove-function place function 1282@defmac remove-function place function
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c96c67fda99..292156db155 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,21 @@
12014-09-08 Glenn Morris <rgm@gnu.org>
2
3 * calendar/calendar.el (calendar-basic-setup):
4 Avoid clobbering calendar with diary. (Bug#18381)
5
62014-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * vc/vc-dir.el (vc-dir-update): Don't burp in corner case.
9
102014-09-08 Lars Ljung <lars@matholka.se> (tiny change)
11
12 * isearch.el (isearch-yank-word-or-char): Obey superword-mode
13 as well (bug#18400).
14
152014-09-08 Eli Zaretskii <eliz@gnu.org>
16
17 * subr.el (posn-actual-col-row): Doc fix. (Bug#18385)
18
12014-09-06 Leo Liu <sdl.web@gmail.com> 192014-09-06 Leo Liu <sdl.web@gmail.com>
2 20
3 * emacs-lisp/pcase.el (pcase): Doc fix. 21 * emacs-lisp/pcase.el (pcase): Doc fix.
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 7579f07cb2d..39ab186d56d 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1443,7 +1443,12 @@ display the generated calendar."
1443 (calendar-generate-window month year) 1443 (calendar-generate-window month year)
1444 (if (and calendar-view-diary-initially-flag 1444 (if (and calendar-view-diary-initially-flag
1445 (calendar-date-is-visible-p date)) 1445 (calendar-date-is-visible-p date))
1446 (diary-view-entries)))) 1446 ;; Do not clobber the calendar with the diary, if the diary
1447 ;; has previously been shown in the window that now shows the
1448 ;; calendar (bug#18381).
1449 (let ((display-buffer-overriding-action
1450 '(nil . ((inhibit-same-window . t)))))
1451 (diary-view-entries)))))
1447 (if calendar-view-holidays-initially-flag 1452 (if calendar-view-holidays-initially-flag
1448 (let* ((diary-buffer (get-file-buffer diary-file)) 1453 (let* ((diary-buffer (get-file-buffer diary-file))
1449 (diary-window (if diary-buffer (get-buffer-window diary-buffer))) 1454 (diary-window (if diary-buffer (get-buffer-window diary-buffer)))
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 20dabdc5b6c..9bee5aa7eb0 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1968,10 +1968,12 @@ Subword is used when `subword-mode' is activated. "
1968 (lambda () 1968 (lambda ()
1969 (if (or (= (char-syntax (or (char-after) 0)) ?w) 1969 (if (or (= (char-syntax (or (char-after) 0)) ?w)
1970 (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) 1970 (= (char-syntax (or (char-after (1+ (point))) 0)) ?w))
1971 (if (and (boundp 'subword-mode) subword-mode) 1971 (if (or (and (boundp 'subword-mode) subword-mode)
1972 (and (boundp 'superword-mode) superword-mode))
1972 (subword-forward 1) 1973 (subword-forward 1)
1973 (forward-word 1)) 1974 (forward-word 1))
1974 (forward-char 1)) (point)))) 1975 (forward-char 1))
1976 (point))))
1975 1977
1976(defun isearch-yank-word (&optional arg) 1978(defun isearch-yank-word (&optional arg)
1977 "Pull next word from buffer into search string. 1979 "Pull next word from buffer into search string.
diff --git a/lisp/subr.el b/lisp/subr.el
index 317b2401bd3..56b46b4fbf1 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1159,12 +1159,17 @@ and `event-end' functions."
1159 (/ (cdr pair) (+ (frame-char-height frame) spacing)))))))) 1159 (/ (cdr pair) (+ (frame-char-height frame) spacing))))))))
1160 1160
1161(defun posn-actual-col-row (position) 1161(defun posn-actual-col-row (position)
1162 "Return the actual column and row in POSITION, measured in characters. 1162 "Return the window row number in POSITION and character number in that row.
1163These are the actual row number in the window and character number in that row. 1163
1164Return nil if POSITION does not contain the actual position; in that case 1164Return nil if POSITION does not contain the actual position; in that case
1165`posn-col-row' can be used to get approximate values. 1165\`posn-col-row' can be used to get approximate values.
1166POSITION should be a list of the form returned by the `event-start' 1166POSITION should be a list of the form returned by the `event-start'
1167and `event-end' functions." 1167and `event-end' functions.
1168
1169This function does not account for the width on display, like the
1170number of visual columns taken by a TAB or image. If you need
1171the coordinates of POSITION in character units, you should use
1172\`posn-col-row', not this function."
1168 (nth 6 position)) 1173 (nth 6 position))
1169 1174
1170(defsubst posn-timestamp (position) 1175(defsubst posn-timestamp (position)
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 5e074191577..be3b1fa94b5 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -433,7 +433,8 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc."
433 ;; previous node was in a different directory. 433 ;; previous node was in a different directory.
434 (let* ((rd (file-relative-name entrydir)) 434 (let* ((rd (file-relative-name entrydir))
435 (prev-node (ewoc-prev vc-ewoc node)) 435 (prev-node (ewoc-prev vc-ewoc node))
436 (prev-dir (vc-dir-node-directory prev-node))) 436 (prev-dir (if prev-node
437 (vc-dir-node-directory prev-node))))
437 (unless (string-equal entrydir prev-dir) 438 (unless (string-equal entrydir prev-dir)
438 (ewoc-enter-before 439 (ewoc-enter-before
439 vc-ewoc node (vc-dir-create-fileinfo rd nil nil nil entrydir)))) 440 vc-ewoc node (vc-dir-create-fileinfo rd nil nil nil entrydir))))
diff --git a/src/ChangeLog b/src/ChangeLog
index 2654abd32d4..4e01e155c2e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12014-09-08 Eli Zaretskii <eliz@gnu.org>
2
3 * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
4 always make sure the marginal areas of the row are in sync with
5 what the window wants. (Bug#18419)
6
7 * data.c (set_internal): Use assq_no_quit, not Fassq, to find an
8 existing binding of a variable, to avoid silently aborting
9 commands that use specbind. (Bug#18331)
10
12014-09-07 Paul Eggert <eggert@cs.ucla.edu> 112014-09-07 Paul Eggert <eggert@cs.ucla.edu>
2 12
3 Fix bug uncovered by changing alloca to auto buffer (Bug#18410). 13 Fix bug uncovered by changing alloca to auto buffer (Bug#18410).
diff --git a/src/data.c b/src/data.c
index a155fe6f84a..fd515af5003 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1311,10 +1311,10 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
1311 1311
1312 /* Find the new binding. */ 1312 /* Find the new binding. */
1313 XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */ 1313 XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */
1314 tem1 = Fassq (symbol, 1314 tem1 = assq_no_quit (symbol,
1315 (blv->frame_local 1315 (blv->frame_local
1316 ? XFRAME (where)->param_alist 1316 ? XFRAME (where)->param_alist
1317 : BVAR (XBUFFER (where), local_var_alist))); 1317 : BVAR (XBUFFER (where), local_var_alist)));
1318 set_blv_where (blv, where); 1318 set_blv_where (blv, where);
1319 blv->found = 1; 1319 blv->found = 1;
1320 1320
diff --git a/src/dispnew.c b/src/dispnew.c
index 73b6253e124..bc5164f3ba8 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -1082,8 +1082,7 @@ prepare_desired_row (struct window *w, struct glyph_row *row, bool mode_line_p)
1082 if (w->right_margin_cols > 0) 1082 if (w->right_margin_cols > 0)
1083 row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA]; 1083 row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA];
1084 } 1084 }
1085 else if (row == MATRIX_MODE_LINE_ROW (w->desired_matrix) 1085 else
1086 || row == MATRIX_HEADER_LINE_ROW (w->desired_matrix))
1087 { 1086 {
1088 /* The real number of glyphs reserved for the margins is 1087 /* The real number of glyphs reserved for the margins is
1089 recorded in the glyph matrix, and can be different from 1088 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)
1093 int right = w->desired_matrix->right_margin_glyphs; 1092 int right = w->desired_matrix->right_margin_glyphs;
1094 1093
1095 /* Make sure the marginal areas of this row are in sync with 1094 /* Make sure the marginal areas of this row are in sync with
1096 what the window wants, when the 1st/last row of the matrix 1095 what the window wants, when the row actually displays text
1097 actually displays text and not header/mode line. */ 1096 and not header/mode line. */
1098 if (w->left_margin_cols > 0 1097 if (w->left_margin_cols > 0
1099 && (left != row->glyphs[TEXT_AREA] - row->glyphs[LEFT_MARGIN_AREA])) 1098 && (left != row->glyphs[TEXT_AREA] - row->glyphs[LEFT_MARGIN_AREA]))
1100 row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA] + left; 1099 row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA] + left;
diff --git a/src/sysdep.c b/src/sysdep.c
index 34fd8b1044b..24cc5cb0b40 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2457,7 +2457,7 @@ emacs_full_write (int fildes, char const *buf, ptrdiff_t nbyte,
2457 { 2457 {
2458 if (errno == EINTR) 2458 if (errno == EINTR)
2459 { 2459 {
2460 /* I originally used `QUIT' but that might causes files to 2460 /* I originally used `QUIT' but that might cause files to
2461 be truncated if you hit C-g in the middle of it. --Stef */ 2461 be truncated if you hit C-g in the middle of it. --Stef */
2462 if (process_signals && pending_signals) 2462 if (process_signals && pending_signals)
2463 process_pending_signals (); 2463 process_pending_signals ();