aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2013-03-20 17:08:34 +0900
committerKenichi Handa2013-03-20 17:08:34 +0900
commit47077837aff40030430e3d1d0522fee5db62ee1e (patch)
tree330da0edce9c8fc596e0d9f2ee8284ba9560422f
parentc0a17406acd4b9db561ba99f8a02bf5461130e82 (diff)
parentfaaecb52470ebc949e2e01e221270656c6f39b70 (diff)
downloademacs-47077837aff40030430e3d1d0522fee5db62ee1e.tar.gz
emacs-47077837aff40030430e3d1d0522fee5db62ee1e.zip
merge trunk
-rw-r--r--leim/ChangeLog4
-rw-r--r--leim/Makefile.in5
-rw-r--r--lisp/ChangeLog35
-rw-r--r--lisp/ido.el6
-rw-r--r--lisp/international/ja-dic-cnv.el21
-rw-r--r--lisp/mouse.el9
-rw-r--r--lisp/whitespace.el39
-rw-r--r--src/ChangeLog11
-rw-r--r--src/alloc.c2
-rw-r--r--src/coding.c2
-rw-r--r--src/dispextern.h4
-rw-r--r--src/emacs.c7
-rw-r--r--src/image.c6
-rw-r--r--src/lisp.h1
-rw-r--r--src/print.c13
-rw-r--r--src/window.c39
-rw-r--r--src/xfaces.c2
17 files changed, 128 insertions, 78 deletions
diff --git a/leim/ChangeLog b/leim/ChangeLog
index e22eb84cef4..89d686a63de 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,7 @@
12013-03-20 Paul Eggert <eggert@cs.ucla.edu>
2
3 * Makefile.in ($(srcdir)/ja-dic/ja-dic.el): Use batch-skkdic-convert.
4
12013-03-18 Eli Zaretskii <eliz@gnu.org> 52013-03-18 Eli Zaretskii <eliz@gnu.org>
2 6
3 * makefile.w32-in ($(srcdir)/ja-dic/ja-dic.el): New target. 7 * makefile.w32-in ($(srcdir)/ja-dic/ja-dic.el): New target.
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 23b3bc7cbf6..0242244295e 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -146,8 +146,9 @@ leim-list.el: ${TIT_MISC} ${srcdir}/leim-ext.el
146 146
147$(srcdir)/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L 147$(srcdir)/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L
148 @$(MKDIR_P) $(srcdir)/ja-dic 148 @$(MKDIR_P) $(srcdir)/ja-dic
149 $(RUN_EMACS) -l $(buildlisppath)/international/ja-dic-cnv \ 149 $(RUN_EMACS) -batch -l $(buildlisppath)/international/ja-dic-cnv \
150 --eval '(skkdic-convert "$(srcdir)/SKK-DIC/SKK-JISYO.L" "$(srcdir)/ja-dic")' 150 -f batch-skkdic-convert -dir "$(srcdir)/ja-dic" \
151 "$(srcdir)/SKK-DIC/SKK-JISYO.L"
151 152
152## Following adapted from lisp/Makefile.in. 153## Following adapted from lisp/Makefile.in.
153setwins=wins="${srcdir}/ja-dic quail"; \ 154setwins=wins="${srcdir}/ja-dic quail"; \
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 4c2b17ff0fa..392cc9ac2fa 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,38 @@
12013-03-20 Paul Eggert <eggert@cs.ucla.edu>
2
3 Suppress unnecessary non-ASCII chatter during build process.
4 * international/ja-dic-cnv.el (skkdic-collect-okuri-nasi)
5 (batch-skkdic-convert): Suppress most of the chatter.
6 It's not needed so much now that machines are faster,
7 and its non-ASCII component was confusing; see Dmitry Gutov in
8 <http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00508.html>.
9
102013-03-20 Leo Liu <sdl.web@gmail.com>
11
12 * ido.el (ido-chop): Fix bug#10994.
13
142013-03-19 Dmitry Gutov <dgutov@yandex.ru>
15
16 * whitespace.el (whitespace-font-lock, whitespace-font-lock-mode):
17 Remove vars.
18 (whitespace-color-on, whitespace-color-off): Use
19 `font-lock-fontify-buffer' (Bug#13817).
20
212013-03-19 Stefan Monnier <monnier@iro.umontreal.ca>
22
23 * mouse.el (mouse--down-1-maybe-follows-link): Fix follow-link
24 remapping in mode-line.
25 (mouse-on-link-p): Also check [mode-line follow-link] bindings.
26
272013-03-19 Dmitry Gutov <dgutov@yandex.ru>
28
29 * whitespace.el (whitespace-color-on): Use `prepend' OVERRIDE
30 value for `whitespace-line' face (Bug#13875).
31 (whitespace-font-lock-keywords): Change description.
32 (whitespace-color-on): Don't save `font-lock-keywords' value, save
33 the constructed keywords instead.
34 (whitespace-color-off): Use `font-lock-remove-keywords' (Bug#13817).
35
12013-03-19 Leo Liu <sdl.web@gmail.com> 362013-03-19 Leo Liu <sdl.web@gmail.com>
2 37
3 * progmodes/compile.el (compilation-display-error): New command. 38 * progmodes/compile.el (compilation-display-error): New command.
diff --git a/lisp/ido.el b/lisp/ido.el
index 589f44175eb..7ace1811daa 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3150,13 +3150,15 @@ for first matching file."
3150 (exit-minibuffer))) 3150 (exit-minibuffer)))
3151 3151
3152(defun ido-chop (items elem) 3152(defun ido-chop (items elem)
3153 "Remove all elements before ELEM and put them at the end of ITEMS." 3153 "Remove all elements before ELEM and put them at the end of ITEMS.
3154Use `eq' for comparison."
3154 (let ((ret nil) 3155 (let ((ret nil)
3155 (next nil) 3156 (next nil)
3156 (sofar nil)) 3157 (sofar nil))
3157 (while (not ret) 3158 (while (not ret)
3158 (setq next (car items)) 3159 (setq next (car items))
3159 (if (equal next elem) 3160 ;; Use `eq' to avoid bug http://debbugs.gnu.org/10994
3161 (if (eq next elem)
3160 (setq ret (append items (nreverse sofar))) 3162 (setq ret (append items (nreverse sofar)))
3161 ;; else 3163 ;; else
3162 (progn 3164 (progn
diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el
index 5382dbe3ad7..41a31004194 100644
--- a/lisp/international/ja-dic-cnv.el
+++ b/lisp/international/ja-dic-cnv.el
@@ -279,9 +279,9 @@
279 skkdic-okuri-nasi-entries-count 279 skkdic-okuri-nasi-entries-count
280 (1+ skkdic-okuri-nasi-entries-count)) 280 (1+ skkdic-okuri-nasi-entries-count))
281 (setq ratio (floor (/ (* (point) 100.0) (point-max)))) 281 (setq ratio (floor (/ (* (point) 100.0) (point-max))))
282 (if (/= ratio prev-ratio) 282 (if (/= (/ prev-ratio 10) (/ ratio 10))
283 (progn 283 (progn
284 (message "collected %2d%% %s ..." ratio kana) 284 (message "collected %2d%% ..." ratio)
285 (setq prev-ratio ratio))) 285 (setq prev-ratio ratio)))
286 (while candidates 286 (while candidates
287 (let ((entry (lookup-nested-alist (car candidates) 287 (let ((entry (lookup-nested-alist (car candidates)
@@ -304,12 +304,12 @@
304 (while l 304 (while l
305 (let ((kana (car (car l))) 305 (let ((kana (car (car l)))
306 (candidates (cdr (car l)))) 306 (candidates (cdr (car l))))
307 (setq ratio (/ (* count 1000) skkdic-okuri-nasi-entries-count) 307 (setq ratio (/ (* count 100) skkdic-okuri-nasi-entries-count)
308 count (1+ count)) 308 count (1+ count))
309 (if (/= prev-ratio (/ ratio 10)) 309 (if (/= (/ prev-ratio 10) (/ ratio 10))
310 (progn 310 (progn
311 (message "processed %2d%% %s ..." (/ ratio 10) kana) 311 (message "processed %2d%% ..." ratio)
312 (setq prev-ratio (/ ratio 10)))) 312 (setq prev-ratio ratio)))
313 (if (setq candidates 313 (if (setq candidates
314 (skkdic-reduced-candidates skkbuf kana candidates)) 314 (skkdic-reduced-candidates skkbuf kana candidates))
315 (progn 315 (progn
@@ -330,7 +330,7 @@ The name of generated file is specified by the variable `ja-dic-filename'."
330 (interactive "FSKK dictionary file: ") 330 (interactive "FSKK dictionary file: ")
331 (message "Reading file \"%s\" ..." filename) 331 (message "Reading file \"%s\" ..." filename)
332 (let* ((coding-system-for-read 'euc-japan) 332 (let* ((coding-system-for-read 'euc-japan)
333 (skkbuf (get-buffer-create " *skkdic-unnannotated*")) 333 (skkbuf (get-buffer-create " *skkdic-unannotated*"))
334 (buf (get-buffer-create "*skkdic-work*"))) 334 (buf (get-buffer-create "*skkdic-work*")))
335 ;; Set skkbuf to an unannotated copy of the dictionary. 335 ;; Set skkbuf to an unannotated copy of the dictionary.
336 (with-current-buffer skkbuf 336 (with-current-buffer skkbuf
@@ -433,12 +433,7 @@ To get complete usage, invoke:
433 (setq targetdir (expand-file-name (car command-line-args-left))) 433 (setq targetdir (expand-file-name (car command-line-args-left)))
434 (setq command-line-args-left (cdr command-line-args-left)))) 434 (setq command-line-args-left (cdr command-line-args-left))))
435 (setq filename (expand-file-name (car command-line-args-left))) 435 (setq filename (expand-file-name (car command-line-args-left)))
436 (message "Converting %s to %s ..." filename ja-dic-filename) 436 (skkdic-convert filename targetdir)))
437 (message "It takes around 10 minutes even on Sun SS20.")
438 (skkdic-convert filename targetdir)
439 (message "Do byte-compile the created file by:")
440 (message " %% emacs -batch -f batch-byte-compile %s" ja-dic-filename)
441 ))
442 (kill-emacs 0)) 437 (kill-emacs 0))
443 438
444 439
diff --git a/lisp/mouse.el b/lisp/mouse.el
index ea6b1b04de0..333a1cef703 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -128,7 +128,11 @@ Expects to be bound to `down-mouse-1' in `key-translation-map'."
128 (put newup 'event-kind (get (car event) 'event-kind)) 128 (put newup 'event-kind (get (car event) 'event-kind))
129 (put newdown 'event-kind (get (car this-event) 'event-kind)) 129 (put newdown 'event-kind (get (car this-event) 'event-kind))
130 (push (cons newup (cdr event)) unread-command-events) 130 (push (cons newup (cdr event)) unread-command-events)
131 (vector (cons newdown (cdr this-event)))) 131 ;; Modify the event in place, so read-key-sequence doesn't
132 ;; generate a second fake prefix key (see fake_prefixed_keys in
133 ;; src/keyboard.c).
134 (setcar this-event newdown)
135 (vector this-event))
132 (push event unread-command-events) 136 (push event unread-command-events)
133 nil)))))) 137 nil))))))
134 138
@@ -760,6 +764,9 @@ at the same position."
760 mouse-1-click-in-non-selected-windows 764 mouse-1-click-in-non-selected-windows
761 (eq (selected-window) (posn-window pos))) 765 (eq (selected-window) (posn-window pos)))
762 (or (mouse-posn-property pos 'follow-link) 766 (or (mouse-posn-property pos 'follow-link)
767 (let ((area (posn-area pos)))
768 (when area
769 (key-binding (vector area 'follow-link) nil t pos)))
763 (key-binding [follow-link] nil t pos))))) 770 (key-binding [follow-link] nil t pos)))))
764 (cond 771 (cond
765 ((eq action 'mouse-face) 772 ((eq action 'mouse-face)
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index b0bb610aa3a..c32155f5430 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1861,14 +1861,8 @@ cleaning up these problems."
1861;;;; Internal functions 1861;;;; Internal functions
1862 1862
1863 1863
1864(defvar whitespace-font-lock-mode nil
1865 "Used to remember whether a buffer had font lock mode on or not.")
1866
1867(defvar whitespace-font-lock nil
1868 "Used to remember whether a buffer initially had font lock on or not.")
1869
1870(defvar whitespace-font-lock-keywords nil 1864(defvar whitespace-font-lock-keywords nil
1871 "Used to save locally `font-lock-keywords' value.") 1865 "Used to save the value `whitespace-color-on' adds to `font-lock-keywords'.")
1872 1866
1873 1867
1874(defconst whitespace-help-text 1868(defconst whitespace-help-text
@@ -2106,8 +2100,6 @@ resultant list will be returned."
2106 ;; prepare local hooks 2100 ;; prepare local hooks
2107 (add-hook 'write-file-functions 'whitespace-write-file-hook nil t) 2101 (add-hook 'write-file-functions 'whitespace-write-file-hook nil t)
2108 ;; create whitespace local buffer environment 2102 ;; create whitespace local buffer environment
2109 (set (make-local-variable 'whitespace-font-lock-mode) nil)
2110 (set (make-local-variable 'whitespace-font-lock) nil)
2111 (set (make-local-variable 'whitespace-font-lock-keywords) nil) 2103 (set (make-local-variable 'whitespace-font-lock-keywords) nil)
2112 (set (make-local-variable 'whitespace-display-table) nil) 2104 (set (make-local-variable 'whitespace-display-table) nil)
2113 (set (make-local-variable 'whitespace-display-table-was-local) nil) 2105 (set (make-local-variable 'whitespace-display-table-was-local) nil)
@@ -2157,10 +2149,6 @@ resultant list will be returned."
2157(defun whitespace-color-on () 2149(defun whitespace-color-on ()
2158 "Turn on color visualization." 2150 "Turn on color visualization."
2159 (when (whitespace-style-face-p) 2151 (when (whitespace-style-face-p)
2160 (unless whitespace-font-lock
2161 (setq whitespace-font-lock t
2162 whitespace-font-lock-keywords
2163 (copy-sequence font-lock-keywords)))
2164 ;; save current point and refontify when necessary 2152 ;; save current point and refontify when necessary
2165 (set (make-local-variable 'whitespace-point) 2153 (set (make-local-variable 'whitespace-point)
2166 (point)) 2154 (point))
@@ -2174,13 +2162,9 @@ resultant list will be returned."
2174 nil) 2162 nil)
2175 (add-hook 'post-command-hook #'whitespace-post-command-hook nil t) 2163 (add-hook 'post-command-hook #'whitespace-post-command-hook nil t)
2176 (add-hook 'before-change-functions #'whitespace-buffer-changed nil t) 2164 (add-hook 'before-change-functions #'whitespace-buffer-changed nil t)
2177 ;; turn off font lock
2178 (set (make-local-variable 'whitespace-font-lock-mode)
2179 font-lock-mode)
2180 (font-lock-mode 0)
2181 ;; Add whitespace-mode color into font lock. 2165 ;; Add whitespace-mode color into font lock.
2182 (font-lock-add-keywords 2166 (setq
2183 nil 2167 whitespace-font-lock-keywords
2184 `( 2168 `(
2185 ,@(when (memq 'spaces whitespace-active-style) 2169 ,@(when (memq 'spaces whitespace-active-style)
2186 ;; Show SPACEs. 2170 ;; Show SPACEs.
@@ -2209,7 +2193,7 @@ resultant list will be returned."
2209 ,(if (memq 'lines whitespace-active-style) 2193 ,(if (memq 'lines whitespace-active-style)
2210 0 ; whole line 2194 0 ; whole line
2211 2) ; line tail 2195 2) ; line tail
2212 whitespace-line t))) 2196 whitespace-line prepend)))
2213 ,@(when (or (memq 'space-before-tab whitespace-active-style) 2197 ,@(when (or (memq 'space-before-tab whitespace-active-style)
2214 (memq 'space-before-tab::tab whitespace-active-style) 2198 (memq 'space-before-tab::tab whitespace-active-style)
2215 (memq 'space-before-tab::space whitespace-active-style)) 2199 (memq 'space-before-tab::space whitespace-active-style))
@@ -2257,24 +2241,19 @@ resultant list will be returned."
2257 ((memq 'space-after-tab::space whitespace-active-style) 2241 ((memq 'space-after-tab::space whitespace-active-style)
2258 ;; Show SPACEs after TAB (TABs). 2242 ;; Show SPACEs after TAB (TABs).
2259 (whitespace-space-after-tab-regexp 'space))) 2243 (whitespace-space-after-tab-regexp 'space)))
2260 1 whitespace-space-after-tab t)))) 2244 1 whitespace-space-after-tab t)))))
2261 t) 2245 (font-lock-add-keywords nil whitespace-font-lock-keywords t)
2262 ;; Now turn on font lock and highlight blanks. 2246 (font-lock-fontify-buffer)))
2263 (font-lock-mode 1)))
2264 2247
2265 2248
2266(defun whitespace-color-off () 2249(defun whitespace-color-off ()
2267 "Turn off color visualization." 2250 "Turn off color visualization."
2268 ;; turn off font lock 2251 ;; turn off font lock
2269 (when (whitespace-style-face-p) 2252 (when (whitespace-style-face-p)
2270 (font-lock-mode 0)
2271 (remove-hook 'post-command-hook #'whitespace-post-command-hook t) 2253 (remove-hook 'post-command-hook #'whitespace-post-command-hook t)
2272 (remove-hook 'before-change-functions #'whitespace-buffer-changed t) 2254 (remove-hook 'before-change-functions #'whitespace-buffer-changed t)
2273 (when whitespace-font-lock 2255 (font-lock-remove-keywords nil whitespace-font-lock-keywords)
2274 (setq whitespace-font-lock nil 2256 (font-lock-fontify-buffer)))
2275 font-lock-keywords whitespace-font-lock-keywords))
2276 ;; restore original font lock state
2277 (font-lock-mode whitespace-font-lock-mode)))
2278 2257
2279 2258
2280(defun whitespace-trailing-regexp (limit) 2259(defun whitespace-trailing-regexp (limit)
diff --git a/src/ChangeLog b/src/ChangeLog
index 6de0212109a..2779e5a6ea8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -4,6 +4,17 @@
4 to 1 (temporary workaround until a bug related to ASCII 4 to 1 (temporary workaround until a bug related to ASCII
5 optimization is fixed). 5 optimization is fixed).
6 6
72013-03-19 Dmitry Antipov <dmantipov@yandex.ru>
8
9 * window.c (Fwindow_combination_limit, Fset_window_combination_limit):
10 Signal error if window is not internal. Adjust docstring.
11 (delete_all_child_windows): Use combination_limit to save the buffer.
12 (Fset_window_configuration): Adjust accordingly.
13 * print.c (syms_of_print): Initialize debugging output not here...
14 (init_print_once): ...but in a new function here.
15 * lisp.h (init_print_once): Add prototype.
16 * emacs.c (main): Add call to init_print_once. Adjust comments.
17
72013-03-18 Dmitry Antipov <dmantipov@yandex.ru> 182013-03-18 Dmitry Antipov <dmantipov@yandex.ru>
8 19
9 * window.c (window_resize_check, window_resize_apply) 20 * window.c (window_resize_check, window_resize_apply)
diff --git a/src/alloc.c b/src/alloc.c
index b2703c5f961..5e30c1b20ad 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1162,7 +1162,7 @@ lisp_align_free (void *block)
1162#define INTERVAL_BLOCK_SIZE \ 1162#define INTERVAL_BLOCK_SIZE \
1163 ((1020 - sizeof (struct interval_block *)) / sizeof (struct interval)) 1163 ((1020 - sizeof (struct interval_block *)) / sizeof (struct interval))
1164 1164
1165/* Intervals are allocated in chunks in form of an interval_block 1165/* Intervals are allocated in chunks in the form of an interval_block
1166 structure. */ 1166 structure. */
1167 1167
1168struct interval_block 1168struct interval_block
diff --git a/src/coding.c b/src/coding.c
index a5b07019388..cb81375a043 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -6075,7 +6075,7 @@ complement_process_encoding_system (Lisp_Object coding_system)
6075static Lisp_Object adjust_coding_eol_type (struct coding_system *coding, int eol_seen); 6075static Lisp_Object adjust_coding_eol_type (struct coding_system *coding, int eol_seen);
6076 6076
6077 6077
6078/* Return 1 if all the source bytes are ASCII, and return 0 otherwize. 6078/* Return true iff all the source bytes are ASCII.
6079 By side effects, set coding->head_ascii and coding->eol_seen. The 6079 By side effects, set coding->head_ascii and coding->eol_seen. The
6080 value of coding->eol_seen is "logical or" of EOL_SEEN_LF, 6080 value of coding->eol_seen is "logical or" of EOL_SEEN_LF,
6081 EOL_SEEN_CR, and EOL_SEEN_CRLF, but the value is reliable only when 6081 EOL_SEEN_CR, and EOL_SEEN_CRLF, but the value is reliable only when
diff --git a/src/dispextern.h b/src/dispextern.h
index a696abfddbb..1f269902435 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -602,8 +602,8 @@ struct glyph_pool
602 602
603 2. Window glyph matrices on frames having frame glyph matrices. 603 2. Window glyph matrices on frames having frame glyph matrices.
604 Such matrices are sub-matrices of their corresponding frame matrix, 604 Such matrices are sub-matrices of their corresponding frame matrix,
605 i.e. frame glyph matrices and window glyph matrices share the same 605 i.e., frame glyph matrices and window glyph matrices share the same
606 glyph memory which is allocated in form of a glyph_pool structure. 606 glyph memory, which is allocated in the form of a glyph_pool structure.
607 Glyph rows in such a window matrix are slices of frame matrix rows. 607 Glyph rows in such a window matrix are slices of frame matrix rows.
608 608
609 2. Free-standing window glyph matrices managing their own glyph 609 2. Free-standing window glyph matrices managing their own glyph
diff --git a/src/emacs.c b/src/emacs.c
index bd33583af0c..5115126577b 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1080,7 +1080,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
1080 1080
1081 noninteractive1 = noninteractive; 1081 noninteractive1 = noninteractive;
1082 1082
1083/* Perform basic initializations (not merely interning symbols). */ 1083 /* Perform basic initializations (not merely interning symbols). */
1084 1084
1085 if (!initialized) 1085 if (!initialized)
1086 { 1086 {
@@ -1091,8 +1091,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
1091 init_coding_once (); 1091 init_coding_once ();
1092 init_syntax_once (); /* Create standard syntax table. */ 1092 init_syntax_once (); /* Create standard syntax table. */
1093 init_category_once (); /* Create standard category table. */ 1093 init_category_once (); /* Create standard category table. */
1094 /* Must be done before init_buffer. */ 1094 init_casetab_once (); /* Must be done before init_buffer_once. */
1095 init_casetab_once ();
1096 init_buffer_once (); /* Create buffer table and some buffers. */ 1095 init_buffer_once (); /* Create buffer table and some buffers. */
1097 init_minibuf_once (); /* Create list of minibuffers. */ 1096 init_minibuf_once (); /* Create list of minibuffers. */
1098 /* Must precede init_window_once. */ 1097 /* Must precede init_window_once. */
@@ -1117,6 +1116,8 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
1117 syms_of_fileio (); 1116 syms_of_fileio ();
1118 /* Before syms_of_coding to initialize Vgc_cons_threshold. */ 1117 /* Before syms_of_coding to initialize Vgc_cons_threshold. */
1119 syms_of_alloc (); 1118 syms_of_alloc ();
1119 /* May call Ffuncall and so GC, thus the latter should be initialized. */
1120 init_print_once ();
1120 /* Before syms_of_coding because it initializes Qcharsetp. */ 1121 /* Before syms_of_coding because it initializes Qcharsetp. */
1121 syms_of_charset (); 1122 syms_of_charset ();
1122 /* Before init_window_once, because it sets up the 1123 /* Before init_window_once, because it sets up the
diff --git a/src/image.c b/src/image.c
index 0d4bc82f3b4..2c0f6e3b8c1 100644
--- a/src/image.c
+++ b/src/image.c
@@ -154,15 +154,15 @@ XGetImage (Display *display, Pixmap pixmap, int x, int y,
154 return pixmap; 154 return pixmap;
155} 155}
156 156
157/* use with imgs created by ns_image_for_XPM */ 157/* Use with images created by ns_image_for_XPM. */
158unsigned long 158unsigned long
159XGetPixel (XImagePtr ximage, int x, int y) 159XGetPixel (XImagePtr ximage, int x, int y)
160{ 160{
161 return ns_get_pixel (ximage, x, y); 161 return ns_get_pixel (ximage, x, y);
162} 162}
163 163
164/* use with imgs created by ns_image_for_XPM; alpha set to 1; 164/* Use with images created by ns_image_for_XPM; alpha set to 1;
165 pixel is assumed to be in form RGB */ 165 pixel is assumed to be in RGB form. */
166void 166void
167XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel) 167XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel)
168{ 168{
diff --git a/src/lisp.h b/src/lisp.h
index b2ab5684d4d..f526cd36a6f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3163,6 +3163,7 @@ extern Lisp_Object internal_with_output_to_temp_buffer
3163 (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object); 3163 (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object);
3164enum FLOAT_TO_STRING_BUFSIZE { FLOAT_TO_STRING_BUFSIZE = 350 }; 3164enum FLOAT_TO_STRING_BUFSIZE { FLOAT_TO_STRING_BUFSIZE = 350 };
3165extern int float_to_string (char *, double); 3165extern int float_to_string (char *, double);
3166extern void init_print_once (void);
3166extern void syms_of_print (void); 3167extern void syms_of_print (void);
3167 3168
3168/* Defined in doprnt.c. */ 3169/* Defined in doprnt.c. */
diff --git a/src/print.c b/src/print.c
index 03b46748454..53c0d99f836 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2165,7 +2165,16 @@ print_interval (INTERVAL interval, Lisp_Object printcharfun)
2165 print_object (interval->plist, printcharfun, 1); 2165 print_object (interval->plist, printcharfun, 1);
2166} 2166}
2167 2167
2168 2168/* Initialize debug_print stuff early to have it working from the very
2169 beginning. */
2170
2171void
2172init_print_once (void)
2173{
2174 DEFSYM (Qexternal_debugging_output, "external-debugging-output");
2175 defsubr (&Sexternal_debugging_output);
2176}
2177
2169void 2178void
2170syms_of_print (void) 2179syms_of_print (void)
2171{ 2180{
@@ -2297,12 +2306,10 @@ priorities. */);
2297 defsubr (&Sprint); 2306 defsubr (&Sprint);
2298 defsubr (&Sterpri); 2307 defsubr (&Sterpri);
2299 defsubr (&Swrite_char); 2308 defsubr (&Swrite_char);
2300 defsubr (&Sexternal_debugging_output);
2301#ifdef WITH_REDIRECT_DEBUGGING_OUTPUT 2309#ifdef WITH_REDIRECT_DEBUGGING_OUTPUT
2302 defsubr (&Sredirect_debugging_output); 2310 defsubr (&Sredirect_debugging_output);
2303#endif 2311#endif
2304 2312
2305 DEFSYM (Qexternal_debugging_output, "external-debugging-output");
2306 DEFSYM (Qprint_escape_newlines, "print-escape-newlines"); 2313 DEFSYM (Qprint_escape_newlines, "print-escape-newlines");
2307 DEFSYM (Qprint_escape_multibyte, "print-escape-multibyte"); 2314 DEFSYM (Qprint_escape_multibyte, "print-escape-multibyte");
2308 DEFSYM (Qprint_escape_nonascii, "print-escape-nonascii"); 2315 DEFSYM (Qprint_escape_nonascii, "print-escape-nonascii");
diff --git a/src/window.c b/src/window.c
index df7878f42e5..5dc908f0a4d 100644
--- a/src/window.c
+++ b/src/window.c
@@ -635,30 +635,37 @@ Return nil if WINDOW has no previous sibling. */)
635 635
636DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0, 636DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0,
637 doc: /* Return combination limit of window WINDOW. 637 doc: /* Return combination limit of window WINDOW.
638WINDOW must be a valid window used in horizontal or vertical combination.
638If the return value is nil, child windows of WINDOW can be recombined with 639If the return value is nil, child windows of WINDOW can be recombined with
639WINDOW's siblings. A return value of t means that child windows of 640WINDOW's siblings. A return value of t means that child windows of
640WINDOW are never \(re-)combined with WINDOW's siblings. 641WINDOW are never \(re-)combined with WINDOW's siblings. */)
641
642WINDOW must be a valid window. The return value is meaningful for
643internal windows only. */)
644 (Lisp_Object window) 642 (Lisp_Object window)
645{ 643{
644 struct window *w;
645
646 CHECK_VALID_WINDOW (window); 646 CHECK_VALID_WINDOW (window);
647 w = XWINDOW (window);
648 if (!NILP (w->buffer))
649 error ("Combination limit is meaningful for internal windows only");
647 return XWINDOW (window)->combination_limit; 650 return XWINDOW (window)->combination_limit;
648} 651}
649 652
650DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, 653DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0,
651 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT. 654 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT.
655WINDOW must be a valid window used in horizontal or vertical combination.
652If LIMIT is nil, child windows of WINDOW can be recombined with WINDOW's 656If LIMIT is nil, child windows of WINDOW can be recombined with WINDOW's
653siblings. LIMIT t means that child windows of WINDOW are never 657siblings. LIMIT t means that child windows of WINDOW are never
654\(re-)combined with WINDOW's siblings. Other values are reserved for 658\(re-)combined with WINDOW's siblings. Other values are reserved for
655future use. 659future use. */)
656
657WINDOW must be a valid window. Setting the combination limit is
658meaningful for internal windows only. */)
659 (Lisp_Object window, Lisp_Object limit) 660 (Lisp_Object window, Lisp_Object limit)
660{ 661{
661 wset_combination_limit (decode_valid_window (window), limit); 662 struct window *w;
663
664 CHECK_VALID_WINDOW (window);
665 w = XWINDOW (window);
666 if (!NILP (w->buffer))
667 error ("Combination limit is meaningful for internal windows only");
668 wset_combination_limit (w, limit);
662 return limit; 669 return limit;
663} 670}
664 671
@@ -5711,10 +5718,9 @@ the return value is nil. Otherwise the value is t. */)
5711 } 5718 }
5712 } 5719 }
5713 5720
5714 /* If we squirreled away the buffer in the window's height, 5721 /* If we squirreled away the buffer, restore it now. */
5715 restore it now. */ 5722 if (BUFFERP (w->combination_limit))
5716 if (BUFFERP (w->total_lines)) 5723 wset_buffer (w, w->combination_limit);
5717 wset_buffer (w, w->total_lines);
5718 wset_left_col (w, p->left_col); 5724 wset_left_col (w, p->left_col);
5719 wset_top_line (w, p->top_line); 5725 wset_top_line (w, p->top_line);
5720 wset_total_cols (w, p->total_cols); 5726 wset_total_cols (w, p->total_cols);
@@ -5918,9 +5924,6 @@ delete_all_child_windows (Lisp_Object window)
5918 /* Delete WINDOW's siblings (we traverse postorderly). */ 5924 /* Delete WINDOW's siblings (we traverse postorderly). */
5919 delete_all_child_windows (w->next); 5925 delete_all_child_windows (w->next);
5920 5926
5921 /* See Fset_window_configuration for excuse. */
5922 wset_total_lines (w, w->buffer);
5923
5924 if (!NILP (w->vchild)) 5927 if (!NILP (w->vchild))
5925 { 5928 {
5926 delete_all_child_windows (w->vchild); 5929 delete_all_child_windows (w->vchild);
@@ -5936,6 +5939,10 @@ delete_all_child_windows (Lisp_Object window)
5936 unshow_buffer (w); 5939 unshow_buffer (w);
5937 unchain_marker (XMARKER (w->pointm)); 5940 unchain_marker (XMARKER (w->pointm));
5938 unchain_marker (XMARKER (w->start)); 5941 unchain_marker (XMARKER (w->start));
5942 /* Since combination limit makes sense for an internal windows
5943 only, we use this slot to save the buffer for the sake of
5944 possible resurrection in Fset_window_configuration. */
5945 wset_combination_limit (w, w->buffer);
5939 wset_buffer (w, Qnil); 5946 wset_buffer (w, Qnil);
5940 } 5947 }
5941 5948
diff --git a/src/xfaces.c b/src/xfaces.c
index 71709446c1d..28bccd392dc 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -112,7 +112,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
112 merging faces of that character, that face is `realized'. The 112 merging faces of that character, that face is `realized'. The
113 realization process maps face attributes to what is physically 113 realization process maps face attributes to what is physically
114 available on the system where Emacs runs. The result is a 114 available on the system where Emacs runs. The result is a
115 `realized face' in form of a struct face which is stored in the 115 `realized face' in the form of a struct face which is stored in the
116 face cache of the frame on which it was realized. 116 face cache of the frame on which it was realized.
117 117
118 Face realization is done in the context of the character to display 118 Face realization is done in the context of the character to display