aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2010-02-13 08:18:46 -0500
committerEli Zaretskii2010-02-13 08:18:46 -0500
commit36447e8d1f292611ce4db90e8fda8f3e25333747 (patch)
treeff731eb7f0b9651d55808eaa167e2e6dd5bc3fa1
parent9a0d7cf1aaffb76aaf4a94f5124795dd9d7c8aed (diff)
parent98599f74d03c2dd4b6ac90d68266c508c5e0342e (diff)
downloademacs-36447e8d1f292611ce4db90e8fda8f3e25333747.tar.gz
emacs-36447e8d1f292611ce4db90e8fda8f3e25333747.zip
Merge from mainline.
-rw-r--r--doc/emacs/ChangeLog4
-rw-r--r--doc/emacs/buffers.texi3
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/ChangeLog107
-rw-r--r--lisp/arc-mode.el5
-rw-r--r--lisp/bookmark.el36
-rw-r--r--lisp/erc/ChangeLog4
-rw-r--r--lisp/erc/erc-services.el6
-rw-r--r--lisp/eshell/em-ls.el50
-rw-r--r--lisp/eshell/esh-util.el9
-rw-r--r--lisp/faces.el4
-rw-r--r--lisp/ffap.el3
-rw-r--r--lisp/info.el2
-rw-r--r--lisp/international/mule-util.el2
-rw-r--r--lisp/iswitchb.el25
-rw-r--r--lisp/ls-lisp.el1
-rw-r--r--lisp/man.el9
-rw-r--r--lisp/progmodes/ada-mode.el5
-rw-r--r--lisp/progmodes/f90.el44
-rw-r--r--lisp/subr.el12
-rw-r--r--lisp/term/xterm.el1
-rw-r--r--lisp/textmodes/artist.el16
-rw-r--r--src/ChangeLog34
-rw-r--r--src/nsfont.m8
-rw-r--r--src/xsmfns.c62
-rw-r--r--src/xterm.c5
26 files changed, 321 insertions, 141 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a039e632d5a..4f5140d3253 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,7 @@
12010-02-08 Glenn Morris <rgm@gnu.org>
2
3 * buffers.texi (Uniquify): Must explicitly load library. (Bug#5529)
4
12010-02-01 Stefan Monnier <monnier@iro.umontreal.ca> 52010-02-01 Stefan Monnier <monnier@iro.umontreal.ca>
2 6
3 * display.texi (Useless Whitespace, Text Display): 7 * display.texi (Useless Whitespace, Text Display):
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 89196a89544..499556401fc 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -583,7 +583,8 @@ names (all but one of them).
583 583
584@vindex uniquify-buffer-name-style 584@vindex uniquify-buffer-name-style
585 Other methods work by adding parts of each file's directory to the 585 Other methods work by adding parts of each file's directory to the
586buffer name. To select one, customize the variable 586buffer name. To select one, load the library @file{uniquify} (e.g.
587using @code{(require 'uniquify)}), and customize the variable
587@code{uniquify-buffer-name-style} (@pxref{Easy Customization}). 588@code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
588 589
589 To begin with, the @code{forward} naming method includes part of the 590 To begin with, the @code{forward} naming method includes part of the
diff --git a/etc/NEWS b/etc/NEWS
index 7d864d15fd5..5b07f8efdf2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -273,6 +273,11 @@ unaware that their mail configuration has changed.
273 273
274To disable this check, set compose-mail-user-agent-warnings to nil. 274To disable this check, set compose-mail-user-agent-warnings to nil.
275 275
276** The default value of mail-interactive is t, since Emacs 23.1.
277(This was not announced at the time.) It means that when sending mail,
278Emacs will wait for the process sending mail to return. If you
279experience delays when sending mail, you may wish to set this to nil.
280
276** nXML mode is now the default for editing XML files. 281** nXML mode is now the default for editing XML files.
277 282
278** Shell 283** Shell
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index cbada0d62c6..702f283a9ff 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,87 @@
12010-02-12 Juri Linkov <juri@jurta.org>
2
3 * arc-mode.el (archive-unique-fname): Make directories for nested
4 archives. (Bug#5540)
5
62010-02-12 Juri Linkov <juri@jurta.org>
7
8 * ffap.el (dired-at-point): Fix docstring. (Bug#5565)
9
102010-02-11 Stefan Monnier <monnier@iro.umontreal.ca>
11
12 * subr.el (copy-overlay): Handle deleted overlays.
13
14 * man.el (Man-completion-table): Don't signal an error if we can't run
15 manual-program (bug#4056).
16
172010-02-10 Juanma Barranquero <lekktu@gmail.com>
18
19 * textmodes/artist.el (artist-mt): Fix typos in docstring.
20
212010-02-10 Thierry Volpiatto <thierry.volpiatto@gmail.com>
22
23 * info.el (Info-bookmark-jump): Simplify.
24
25 * bookmark.el (bookmark-handle-bookmark): Catch the right error.
26 (bookmark-default-handler): Accept new bookmark field `buffer'.
27
282010-02-10 Chong Yidong <cyd@stupidchicken.com>
29
30 * iswitchb.el (iswitchb-completions): Revert last change.
31
322010-02-10 Michael Albinus <michael.albinus@gmx.de>
33
34 * ls-lisp.el (ls-lisp-insert-directory): When WILDCARD-REGEXP and
35 FULL-DIRECTORY-P are nil, and FILE is absolute, expand it.
36 This prevents file names like "~/" being listed literally.
37
382010-02-10 Dan Nicolaescu <dann@ics.uci.edu>
39
40 * term/xterm.el (xterm-maybe-set-dark-background-mode):
41 Remove dead code. (Bug#5546)
42
432010-02-09 Chong Yidong <cyd@stupidchicken.com>
44
45 * eshell/em-ls.el (eshell-ls-applicable): Frob file attributes
46 correctly (Bug#5548).
47
482010-02-08 Jose E. Marchesi <jemarch@gnu.org>
49
50 * progmodes/ada-mode.el (ada-in-numeric-literal-p): New function.
51 (ada-adjust-case): Don't adjust case in hexadecimal number
52 literals.
53
542010-02-08 Kenichi Handa <handa@m17n.org>
55
56 * international/mule-util.el (with-coding-priority): Add autoload
57 cookie for putting `lisp-indent-function'.
58
592010-02-07 Glenn Morris <rgm@gnu.org>
60
61 * progmodes/f90.el (f90-font-lock-keywords-1, f90-font-lock-keywords-2):
62 Move F2003 named interfaces from keywords-2 to keywords-1, and
63 use function-name-face rather than constant-face.
64 Simplify "abstract interface" regexp.
65
662010-02-07 Chong Yidong <cyd@stupidchicken.com>
67
68 * eshell/esh-util.el (eshell-file-attributes): New optional arg
69 ID-FORMAT. Pass it to `file-attributes'.
70
71 * eshell/em-ls.el (eshell-do-ls): Use it (Bug#5528).
72
732010-02-07 sj <prime.wizard+emacs@gmail.com> (tiny change)
74
75 * faces.el (set-face-attribute): Allow calling
76 internal-set-lisp-face-attribute with 'unspecified family and
77 foundry argument (Bug#5536).
78
792010-02-07 Glenn Morris <rgm@gnu.org>
80
81 * progmodes/f90.el (f90-font-lock-keywords-2)
82 (f90-looking-at-type-like, f90-looking-at-program-block-end):
83 Handle F2003 named interfaces.
84
12010-02-06 Chong Yidong <cyd@stupidchicken.com> 852010-02-06 Chong Yidong <cyd@stupidchicken.com>
2 86
3 * progmodes/cc-mode.el (c-common-init): Bind temporary variables 87 * progmodes/cc-mode.el (c-common-init): Bind temporary variables
@@ -246,10 +330,9 @@
246 330
2472010-01-25 Mark A. Hershberger <mah@everybody.org> 3312010-01-25 Mark A. Hershberger <mah@everybody.org>
248 332
249 * progmodes/python.el: Replace reference to obsolete 333 * progmodes/python.el: Replace reference to obsolete c-subword-mode.
250 c-subward-mode.
251 334
252 * vc-bzr.el: (vc-bzr-revision-table) New function. 335 * vc-bzr.el (vc-bzr-revision-table): New function.
253 336
2542010-01-25 Eric Hanchrow <eric.hanchrow@gmail.com> (tiny change) 3372010-01-25 Eric Hanchrow <eric.hanchrow@gmail.com> (tiny change)
255 338
@@ -282,7 +365,7 @@
282 365
2832010-01-23 Stephen Leake <stephen_leake@member.fsf.org> 3662010-01-23 Stephen Leake <stephen_leake@member.fsf.org>
284 367
285 * progmodes/ada-mode.el (ada-in-paramlist-p): Pragma syntax 368 * progmodes/ada-mode.el (ada-in-paramlist-p): Pragma syntax
286 is the same as subprogram call, not declaration. (Bug#5435). 369 is the same as subprogram call, not declaration. (Bug#5435).
287 370
2882010-01-23 Michael Albinus <michael.albinus@gmx.de> 3712010-01-23 Michael Albinus <michael.albinus@gmx.de>
@@ -3678,7 +3761,7 @@
3678 (verilog-read-decls): Fix AUTOREG not detecting "assign {a,b}". 3761 (verilog-read-decls): Fix AUTOREG not detecting "assign {a,b}".
3679 Reported by Wade Smith. 3762 Reported by Wade Smith.
3680 3763
3681 (verilog-batch-execute-func) Comment on function usage. 3764 (verilog-batch-execute-func): Comment on function usage.
3682 3765
36832009-11-05 Michael McNamara <mac@mail.brushroad.com> 37662009-11-05 Michael McNamara <mac@mail.brushroad.com>
3684 3767
@@ -4335,7 +4418,7 @@
4335 (tramp-handle-file-truename): Use it. 4418 (tramp-handle-file-truename): Use it.
4336 (tramp-handle-file-exists-p): Check file-attributes cache, assume 4419 (tramp-handle-file-exists-p): Check file-attributes cache, assume
4337 file exists if cache value present. 4420 file exists if cache value present.
4338 (tramp-check-cached-permissions) New defun. 4421 (tramp-check-cached-permissions): New defun.
4339 (tramp-handle-file-readable-p): Use it. 4422 (tramp-handle-file-readable-p): Use it.
4340 (tramp-handle-file-writable-p): Likewise. 4423 (tramp-handle-file-writable-p): Likewise.
4341 (tramp-handle-file-executable-p): Likewise. 4424 (tramp-handle-file-executable-p): Likewise.
@@ -4566,7 +4649,7 @@
4566 from `rfn-eshadow-update-overlay-hook' when unloading. 4649 from `rfn-eshadow-update-overlay-hook' when unloading.
4567 (tramp-methods): Add `tramp-copy-keep-tmpfile' for "rsync" and 4650 (tramp-methods): Add `tramp-copy-keep-tmpfile' for "rsync" and
4568 "rsyncc". Adjust doc string. 4651 "rsyncc". Adjust doc string.
4569 (tramp-temp-buffer-file-name) New buffer-local defvar. 4652 (tramp-temp-buffer-file-name): New buffer-local defvar.
4570 (tramp-handle-insert-file-contents, tramp-handle-write-region): 4653 (tramp-handle-insert-file-contents, tramp-handle-write-region):
4571 Keep temporary file when indicated by method ("rsync" and 4654 Keep temporary file when indicated by method ("rsync" and
4572 "rsyncc"). 4655 "rsyncc").
@@ -7978,7 +8061,7 @@
7978 Don't modify last-coding-system-used by accident. 8061 Don't modify last-coding-system-used by accident.
7979 (tramp-completion-file-name-handler): Apply the checks here, 8062 (tramp-completion-file-name-handler): Apply the checks here,
7980 instead during registration. 8063 instead during registration.
7981 (tramp-register-file-name-handlers) Renamed from 8064 (tramp-register-file-name-handlers): Renamed from
7982 `tramp-register-file-name-handler'. Register both 8065 `tramp-register-file-name-handler'. Register both
7983 `tramp-file-name-handler' and `tramp-completion-file-name-handler'. 8066 `tramp-file-name-handler' and `tramp-completion-file-name-handler'.
7984 (tramp-register-completion-file-name-handler): Remove. (Bug#4260) 8067 (tramp-register-completion-file-name-handler): Remove. (Bug#4260)
@@ -10072,7 +10155,7 @@
10072 10155
10073 * net/tramp.el (tramp-do-copy-or-rename-file-directly): 10156 * net/tramp.el (tramp-do-copy-or-rename-file-directly):
10074 Handle also the 'rename case, when setting file modes. (Bug#3712) 10157 Handle also the 'rename case, when setting file modes. (Bug#3712)
10075 (tramp-default-file-modes) Remove execute permissions. 10158 (tramp-default-file-modes): Remove execute permissions.
10076 10159
10077 * net/tramp-gvfs.el (tramp-gvfs-methods): Add "synce" method. 10160 * net/tramp-gvfs.el (tramp-gvfs-methods): Add "synce" method.
10078 (top): Add a default for "synce" in `tramp-default-user-alist'. 10161 (top): Add a default for "synce" in `tramp-default-user-alist'.
@@ -10097,7 +10180,7 @@
10097 10180
10098 * language/chinese.el ("Chinese-GB", "Chinese-BIG5") 10181 * language/chinese.el ("Chinese-GB", "Chinese-BIG5")
10099 ("Chinese-CNS", "Chinese-EUC-TW", "Chinese-GBK"): Add a 10182 ("Chinese-CNS", "Chinese-EUC-TW", "Chinese-GBK"): Add a
10100 setup-funcion to make char-widht-table suitable for respective 10183 setup-function to make char-width-table suitable for respective
10101 environments, and an exit-function to cancel that. 10184 environments, and an exit-function to cancel that.
10102 10185
10103 * language/japan-util.el (setup-japanese-environment-internal): 10186 * language/japan-util.el (setup-japanese-environment-internal):
@@ -10157,7 +10240,7 @@
10157 to support safe execution at almost anyline. 10240 to support safe execution at almost anyline.
10158 (verilog-calc-1): Properly support indenting deep inside generate 10241 (verilog-calc-1): Properly support indenting deep inside generate
10159 blocks. 10242 blocks.
10160 (verilog-init-font) Remove definition & use of verilog-init-font, 10243 (verilog-init-font): Remove definition & use of verilog-init-font,
10161 as it is redundant with font-lock-defaults. 10244 as it is redundant with font-lock-defaults.
10162 (verilog-mode): Alter the definition of verilog-font-lock-defaults 10245 (verilog-mode): Alter the definition of verilog-font-lock-defaults
10163 to avoid circular calls if syntax-ppss is a function (as is the 10246 to avoid circular calls if syntax-ppss is a function (as is the
@@ -10171,7 +10254,7 @@
10171 (verilog-defun-level-not-generate-re, verilog-defun-level-re) 10254 (verilog-defun-level-not-generate-re, verilog-defun-level-re)
10172 (verilog-defun-level-generate-only-re): Really fix the defun-list 10255 (verilog-defun-level-generate-only-re): Really fix the defun-list
10173 compilation issue. 10256 compilation issue.
10174 (verilog-calc-1) (verilog-beg-of-statement): Enhance support for 10257 (verilog-calc-1, verilog-beg-of-statement): Enhance support for
10175 coverpoint, constraint and cross statements. 10258 coverpoint, constraint and cross statements.
10176 (verilog-defun-level-list, verilog-generate-defun-level-list) 10259 (verilog-defun-level-list, verilog-generate-defun-level-list)
10177 (verilog-all-defun-level-list): Redo these specifications - it is 10260 (verilog-all-defun-level-list): Redo these specifications - it is
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index ee32d893654..5942e920a65 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -834,6 +834,11 @@ using `make-temp-file', and the generated name is returned."
834 ;; reconstructed in the temporary directory. 834 ;; reconstructed in the temporary directory.
835 (make-directory (file-name-directory tmpfile) t) 835 (make-directory (file-name-directory tmpfile) t)
836 (make-temp-file tmpfile)) 836 (make-temp-file tmpfile))
837 ;; Maked sure all the leading directories in `fullname' exist
838 ;; under archive-tmpdir. This is necessary for nested archives
839 ;; (`archive-extract' sets `archive-remote' to t in case
840 ;; an archive occurs inside another archive).
841 (make-directory (file-name-directory fullname) t)
837 fullname))) 842 fullname)))
838 843
839(defun archive-maybe-copy (archive) 844(defun archive-maybe-copy (archive)
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 5af6ab91cc3..49abea5d3e3 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -1068,7 +1068,7 @@ that file no longer exists, then offer interactively to relocate BOOKMARK."
1068 (funcall (or (bookmark-get-handler bookmark) 1068 (funcall (or (bookmark-get-handler bookmark)
1069 'bookmark-default-handler) 1069 'bookmark-default-handler)
1070 (bookmark-get-bookmark bookmark)) 1070 (bookmark-get-bookmark bookmark))
1071 (file-error 1071 (bookmark-error-no-filename ;file-error
1072 ;; We were unable to find the marked file, so ask if user wants to 1072 ;; We were unable to find the marked file, so ask if user wants to
1073 ;; relocate the bookmark, else remind them to consider deletion. 1073 ;; relocate the bookmark, else remind them to consider deletion.
1074 (when (stringp bookmark) 1074 (when (stringp bookmark)
@@ -1116,24 +1116,28 @@ that file no longer exists, then offer interactively to relocate BOOKMARK."
1116BMK-RECORD is a bookmark record, not a bookmark name (i.e., not a string). 1116BMK-RECORD is a bookmark record, not a bookmark name (i.e., not a string).
1117Changes current buffer and point and returns nil, or signals a `file-error'." 1117Changes current buffer and point and returns nil, or signals a `file-error'."
1118 (let ((file (bookmark-get-filename bmk-record)) 1118 (let ((file (bookmark-get-filename bmk-record))
1119 (buf (bookmark-prop-get bmk-record 'buffer))
1119 (forward-str (bookmark-get-front-context-string bmk-record)) 1120 (forward-str (bookmark-get-front-context-string bmk-record))
1120 (behind-str (bookmark-get-rear-context-string bmk-record)) 1121 (behind-str (bookmark-get-rear-context-string bmk-record))
1121 (place (bookmark-get-position bmk-record))) 1122 (place (bookmark-get-position bmk-record)))
1122 (if (not file) 1123 (set-buffer
1123 (signal 'bookmark-error-no-filename (list 'stringp file)) 1124 (cond
1124 (set-buffer (find-file-noselect file)) 1125 ((and file (file-readable-p file) (not (buffer-live-p buf)))
1125 (if place (goto-char place)) 1126 (find-file-noselect file))
1126 ;; Go searching forward first. Then, if forward-str exists and 1127 ;; No file found. See if buffer BUF have been created.
1127 ;; was found in the file, we can search backward for behind-str. 1128 ((and buf (get-buffer buf)))
1128 ;; Rationale is that if text was inserted between the two in the 1129 (t ;; If not, raise error.
1129 ;; file, it's better to be put before it so you can read it, 1130 (signal 'bookmark-error-no-filename (list 'stringp file)))))
1130 ;; rather than after and remain perhaps unaware of the changes. 1131 (if place (goto-char place))
1131 (if forward-str 1132 ;; Go searching forward first. Then, if forward-str exists and
1132 (if (search-forward forward-str (point-max) t) 1133 ;; was found in the file, we can search backward for behind-str.
1133 (goto-char (match-beginning 0)))) 1134 ;; Rationale is that if text was inserted between the two in the
1134 (if behind-str 1135 ;; file, it's better to be put before it so you can read it,
1135 (if (search-backward behind-str (point-min) t) 1136 ;; rather than after and remain perhaps unaware of the changes.
1136 (goto-char (match-end 0))))) 1137 (when (and forward-str (search-forward forward-str (point-max) t))
1138 (goto-char (match-beginning 0)))
1139 (when (and behind-str (search-backward behind-str (point-min) t))
1140 (goto-char (match-end 0)))
1137 nil)) 1141 nil))
1138 1142
1139;;;###autoload 1143;;;###autoload
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 8daf590ee89..c192b3400b4 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,7 @@
12010-02-07 Vivek Dasmohapatra <vivek@etla.org>
2
3 * erc-services.el (erc-nickserv-alist): Fix defcustom type (Bug#5520).
4
12010-01-25 Vivek Dasmohapatra <vivek@etla.org> 52010-01-25 Vivek Dasmohapatra <vivek@etla.org>
2 6
3 * erc-backend.el (erc-session-connector): New var. 7 * erc-backend.el (erc-session-connector): New var.
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index c917a5692b8..50a100d6932 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -303,7 +303,11 @@ The last two elements are optional."
303 (boolean :tag "Use current nick in identify message?") 303 (boolean :tag "Use current nick in identify message?")
304 (choice :tag "Command to use (optional)" 304 (choice :tag "Command to use (optional)"
305 (string :tag "Command") 305 (string :tag "Command")
306 (const :tag "No special command necessary" nil))))) 306 (const :tag "No special command necessary" nil))
307 (choice :tag "Detect Success"
308 (regexp :tag "Pattern to match")
309 (const :tag "Do not try to detect success" nil)))))
310
307 311
308(defsubst erc-nickserv-alist-sender (network &optional entry) 312(defsubst erc-nickserv-alist-sender (network &optional entry)
309 (nth 1 (or entry (assoc network erc-nickserv-alist)))) 313 (nth 1 (or entry (assoc network erc-nickserv-alist))))
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index 094f3ad9bb3..860ad5c77d8 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -225,18 +225,28 @@ really need to stick around for very long."
225 (eq (aref (nth 8 attrs) 0) type))) 225 (eq (aref (nth 8 attrs) 0) type)))
226 226
227(defmacro eshell-ls-applicable (attrs index func file) 227(defmacro eshell-ls-applicable (attrs index func file)
228 "Test whether, for ATTRS, the user UID can do what corresponds to INDEX. 228 "Test whether, for ATTRS, the user can do what corresponds to INDEX.
229This is really just for efficiency, to avoid having to stat the file 229ATTRS is a string of file modes. See `file-attributes'.
230yet again." 230If we cannot determine the answer using ATTRS (e.g., if we need
231 `(if (numberp (nth 2 ,attrs)) 231to know what group the user is in), compute the return value by
232 (if (= (user-uid) (nth 2 ,attrs)) 232calling FUNC with FILE as an argument."
233 (not (eq (aref (nth 8 ,attrs) ,index) ?-)) 233 `(let ((owner (nth 2 ,attrs))
234 (,(eval func) ,file)) 234 (modes (nth 8 ,attrs)))
235 (not (eq (aref (nth 8 ,attrs) 235 (cond ((cond ((numberp owner)
236 (+ ,index (if (member (nth 2 ,attrs) 236 (= owner (user-uid)))
237 (eshell-current-ange-uids)) 237 ((stringp owner)
238 0 6))) 238 (or (string-equal owner (user-login-name))
239 ?-)))) 239 (member owner (eshell-current-ange-uids)))))
240 ;; The user owns this file.
241 (not (eq (aref modes ,index) ?-)))
242 ((eq (aref modes (+ ,index 3))
243 (aref modes (+ ,index 6)))
244 ;; If the "group" and "other" fields give identical
245 ;; results, use that.
246 (not (eq (aref modes (+ ,index 3)) ?-)))
247 (t
248 ;; Otherwise call FUNC.
249 (,(eval func) ,file)))))
240 250
241(defcustom eshell-ls-highlight-alist nil 251(defcustom eshell-ls-highlight-alist nil
242 "*This alist correlates test functions to color. 252 "*This alist correlates test functions to color.
@@ -393,13 +403,13 @@ Sort entries alphabetically across.")
393 (eshell-glob-regexp ignore-pattern)))) 403 (eshell-glob-regexp ignore-pattern))))
394 ;; list the files! 404 ;; list the files!
395 (eshell-ls-entries 405 (eshell-ls-entries
396 (mapcar (function 406 (mapcar (lambda (arg)
397 (lambda (arg) 407 (cons (if (and (eshell-under-windows-p)
398 (cons (if (and (eshell-under-windows-p) 408 (file-name-absolute-p arg))
399 (file-name-absolute-p arg)) 409 (expand-file-name arg)
400 (expand-file-name arg) 410 arg)
401 arg) 411 (eshell-file-attributes
402 (eshell-file-attributes arg)))) 412 arg (if numeric-uid-gid 'integer 'string))))
403 args) 413 args)
404 t (expand-file-name default-directory))) 414 t (expand-file-name default-directory)))
405 (funcall flush-func))) 415 (funcall flush-func)))
@@ -710,7 +720,7 @@ Each member of FILES is either a string or a cons cell of the form
710 (funcall insert-func need-return "\n")))))) 720 (funcall insert-func need-return "\n"))))))
711 721
712(defun eshell-ls-entries (entries &optional separate root-dir) 722(defun eshell-ls-entries (entries &optional separate root-dir)
713 "Output PATH's directory ENTRIES, formatted according to OPTIONS. 723 "Output PATH's directory ENTRIES.
714Each member of ENTRIES may either be a string or a cons cell, the car 724Each member of ENTRIES may either be a string or a cons cell, the car
715of which is the file name, and the cdr of which is the list of 725of which is the file name, and the cdr of which is the list of
716attributes. 726attributes.
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 7c21e2e3302..1a4c5e1021b 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -701,8 +701,11 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
701 (forward-line))) 701 (forward-line)))
702 entry)) 702 entry))
703 703
704(defun eshell-file-attributes (file) 704(defun eshell-file-attributes (file &optional id-format)
705 "Return the attributes of FILE, playing tricks if it's over ange-ftp." 705 "Return the attributes of FILE, playing tricks if it's over ange-ftp.
706The optional argument ID-FORMAT specifies the preferred uid and
707gid format. Valid values are 'string and 'integer, defaulting to
708'integer. See `file-attributes'."
706 (let* ((file (expand-file-name file)) 709 (let* ((file (expand-file-name file))
707 entry) 710 entry)
708 (if (string-equal (file-remote-p file 'method) "ftp") 711 (if (string-equal (file-remote-p file 'method) "ftp")
@@ -723,7 +726,7 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
723 (setq entry (cdr fentry)) 726 (setq entry (cdr fentry))
724 (setq entry nil))))) 727 (setq entry nil)))))
725 entry) 728 entry)
726 (file-attributes file)))) 729 (file-attributes file id-format))))
727 730
728(defalias 'eshell-copy-tree 'copy-tree) 731(defalias 'eshell-copy-tree 'copy-tree)
729 732
diff --git a/lisp/faces.el b/lisp/faces.el
index 8edd2851b88..a5bc7b1c965 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -735,10 +735,10 @@ like an underlying face would be, with higher priority than underlying faces."
735 (unless foundry 735 (unless foundry
736 (setq foundry (match-string 1 family))) 736 (setq foundry (match-string 1 family)))
737 (setq family (match-string 2 family))) 737 (setq family (match-string 2 family)))
738 (when (stringp family) 738 (when (or (stringp family) (eq family 'unspecified))
739 (internal-set-lisp-face-attribute face :family (purecopy family) 739 (internal-set-lisp-face-attribute face :family (purecopy family)
740 where)) 740 where))
741 (when (stringp foundry) 741 (when (or (stringp foundry) (eq foundry 'unspecified))
742 (internal-set-lisp-face-attribute face :foundry (purecopy foundry) 742 (internal-set-lisp-face-attribute face :foundry (purecopy foundry)
743 where))) 743 where)))
744 (while args 744 (while args
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 324094e334e..23caae74962 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1796,7 +1796,8 @@ ffap most of the time."
1796 1796
1797;;;###autoload 1797;;;###autoload
1798(defun dired-at-point (&optional filename) 1798(defun dired-at-point (&optional filename)
1799 "Start Dired, defaulting to file at point. See `ffap'." 1799 "Start Dired, defaulting to file at point. See `ffap'.
1800If `dired-at-point-require-prefix' is set, the prefix meaning is reversed."
1800 (interactive) 1801 (interactive)
1801 (if (and (called-interactively-p 'interactive) 1802 (if (and (called-interactively-p 'interactive)
1802 (if dired-at-point-require-prefix 1803 (if dired-at-point-require-prefix
diff --git a/lisp/info.el b/lisp/info.el
index 4789d67e659..93001496b5c 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -4797,7 +4797,7 @@ type returned by `Info-bookmark-make-record', which see."
4797 ;; Use bookmark-default-handler to move to the appropriate location 4797 ;; Use bookmark-default-handler to move to the appropriate location
4798 ;; within the node. 4798 ;; within the node.
4799 (bookmark-default-handler 4799 (bookmark-default-handler
4800 (list* "" `(buffer . ,buf) (bookmark-get-bookmark-record bmk))))) 4800 `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk)))))
4801 4801
4802(provide 'info) 4802(provide 'info)
4803 4803
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el
index 74ef25e147b..da9baef266c 100644
--- a/lisp/international/mule-util.el
+++ b/lisp/international/mule-util.el
@@ -323,7 +323,7 @@ operations such as `find-coding-systems-region'."
323 (unwind-protect 323 (unwind-protect
324 (progn ,@body) 324 (progn ,@body)
325 (apply #'set-coding-system-priority ,current))))) 325 (apply #'set-coding-system-priority ,current)))))
326(put 'with-coding-priority 'lisp-indent-function 1) 326;;;###autoload(put 'with-coding-priority 'lisp-indent-function 1)
327(put 'with-coding-priority 'edebug-form-spec t) 327(put 'with-coding-priority 'edebug-form-spec t)
328 328
329;;;###autoload 329;;;###autoload
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index ee06db6f78f..ea4b00dc90d 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -1274,7 +1274,7 @@ Modified from `icomplete-completions'."
1274 ;; consult the list of past visited files, to see if we can find 1274 ;; consult the list of past visited files, to see if we can find
1275 ;; the file which the user might thought was still open. 1275 ;; the file which the user might thought was still open.
1276 (when (and iswitchb-use-virtual-buffers (null comps) 1276 (when (and iswitchb-use-virtual-buffers (null comps)
1277 (or recentf-list bookmark-alist)) 1277 recentf-list)
1278 (setq iswitchb-virtual-buffers nil) 1278 (setq iswitchb-virtual-buffers nil)
1279 (let ((head recentf-list) name) 1279 (let ((head recentf-list) name)
1280 (while head 1280 (while head
@@ -1289,30 +1289,15 @@ Modified from `icomplete-completions'."
1289 (setq iswitchb-virtual-buffers 1289 (setq iswitchb-virtual-buffers
1290 (cons (cons name (car head)) 1290 (cons (cons name (car head))
1291 iswitchb-virtual-buffers))) 1291 iswitchb-virtual-buffers)))
1292 (setq head (cdr head)))) 1292 (setq head (cdr head)))
1293 (let ((head bookmark-alist) name path) 1293 (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers)
1294 (while head 1294 comps (mapcar 'car iswitchb-virtual-buffers))
1295 (if (and (setq path (cdr (assq 'filename (cdar head))))
1296 (setq name (file-name-nondirectory path))
1297 (string-match (if iswitchb-regexp
1298 iswitchb-text
1299 (regexp-quote iswitchb-text)) name)
1300 (null (get-file-buffer path))
1301 (not (assoc name iswitchb-virtual-buffers))
1302 (not (iswitchb-ignore-buffername-p name))
1303 (file-exists-p path))
1304 (setq iswitchb-virtual-buffers
1305 (cons (cons name path)
1306 iswitchb-virtual-buffers)))
1307 (setq head (cdr head))))
1308 (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers)
1309 comps (mapcar 'car iswitchb-virtual-buffers))
1310 (let ((comp comps)) 1295 (let ((comp comps))
1311 (while comp 1296 (while comp
1312 (put-text-property 0 (length (car comp)) 1297 (put-text-property 0 (length (car comp))
1313 'face 'iswitchb-virtual-matches 1298 'face 'iswitchb-virtual-matches
1314 (car comp)) 1299 (car comp))
1315 (setq comp (cdr comp))))) 1300 (setq comp (cdr comp))))))
1316 1301
1317 (cond ((null comps) (format " %sNo match%s" 1302 (cond ((null comps) (format " %sNo match%s"
1318 open-bracket-determined 1303 open-bracket-determined
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 284e9db97ee..2e061558466 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -400,6 +400,7 @@ not contain `d', so that a full listing is expected."
400 ;; If not full-directory-p, FILE *must not* end in /, as 400 ;; If not full-directory-p, FILE *must not* end in /, as
401 ;; file-attributes will not recognize a symlink to a directory, 401 ;; file-attributes will not recognize a symlink to a directory,
402 ;; so must make it a relative filename as ls does: 402 ;; so must make it a relative filename as ls does:
403 (if (file-name-absolute-p file) (setq file (expand-file-name file)))
403 (if (eq (aref file (1- (length file))) ?/) 404 (if (eq (aref file (1- (length file))) ?/)
404 (setq file (substring file 0 -1))) 405 (setq file (substring file 0 -1)))
405 (let ((fattr (file-attributes file 'string))) 406 (let ((fattr (file-attributes file 'string)))
diff --git a/lisp/man.el b/lisp/man.el
index e729e11b6ca..dd64fbda574 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -771,8 +771,13 @@ POS defaults to `point'."
771 ;; quote anything. 771 ;; quote anything.
772 (let ((process-environment (copy-sequence process-environment))) 772 (let ((process-environment (copy-sequence process-environment)))
773 (setenv "COLUMNS" "999") ;; don't truncate long names 773 (setenv "COLUMNS" "999") ;; don't truncate long names
774 (call-process manual-program nil '(t nil) nil 774 ;; manual-program might not even exist. And since it's
775 "-k" (concat "^" prefix))) 775 ;; run differently in Man-getpage-in-background, an error
776 ;; here may not necessarily mean that we'll also get an
777 ;; error later.
778 (ignore-errors
779 (call-process manual-program nil '(t nil) nil
780 "-k" (concat "^" prefix))))
776 (goto-char (point-min)) 781 (goto-char (point-min))
777 (while (re-search-forward "^\\([^ \t\n]+\\)\\(?: ?\\((.+?)\\)\\(?:[ \t]+- \\(.*\\)\\)?\\)?" nil t) 782 (while (re-search-forward "^\\([^ \t\n]+\\)\\(?: ?\\((.+?)\\)\\(?:[ \t]+- \\(.*\\)\\)?\\)?" nil t)
778 (push (propertize (concat (match-string 1) (match-string 2)) 783 (push (propertize (concat (match-string 1) (match-string 2))
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index a08e31e2016..95f9f6babf3 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -1017,6 +1017,9 @@ If PARSE-RESULT is non-nil, use it instead of calling `parse-partial-sexp'."
1017 (line-beginning-position) (point)))) 1017 (line-beginning-position) (point))))
1018 (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result))) 1018 (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result)))
1019 1019
1020(defsubst ada-in-numeric-literal-p ()
1021 "Return t if point is after a prefix of a numeric literal."
1022 (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)"))
1020 1023
1021;;------------------------------------------------------------------ 1024;;------------------------------------------------------------------
1022;; Contextual menus 1025;; Contextual menus
@@ -1606,6 +1609,8 @@ If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier."
1606 (eq (char-syntax (char-before)) ?w) 1609 (eq (char-syntax (char-before)) ?w)
1607 ;; if in a string or a comment 1610 ;; if in a string or a comment
1608 (not (ada-in-string-or-comment-p)) 1611 (not (ada-in-string-or-comment-p))
1612 ;; if in a numeric literal
1613 (not (ada-in-numeric-literal-p))
1609 ) 1614 )
1610 (if (save-excursion 1615 (if (save-excursion
1611 (forward-word -1) 1616 (forward-word -1)
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index eda9f4e0155..21273359486 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -158,10 +158,8 @@
158;; 3. Support for align. 158;; 3. Support for align.
159;; Font-locking: 159;; Font-locking:
160;; 1. OpenMP, OpenMPI?, preprocessor highlighting. 160;; 1. OpenMP, OpenMPI?, preprocessor highlighting.
161;; 2. interface blah - Highlight "blah" in function-name face? 161;; 2. integer_name = 1
162;; Need to avoid "interface operator (+)" etc. 162;; 3. Labels for "else" statements (F2003)?
163;; 3. integer_name = 1
164;; 4. Labels for "else" statements (F2003)?
165 163
166(defvar comment-auto-fill-only-comments) 164(defvar comment-auto-fill-only-comments)
167(defvar font-lock-keywords) 165(defvar font-lock-keywords)
@@ -467,22 +465,21 @@ type-name parts, respectively."
467;;; (1 font-lock-keyword-face) (3 font-lock-function-name-face)) 465;;; (1 font-lock-keyword-face) (3 font-lock-function-name-face))
468 '(f90-typedef-matcher 466 '(f90-typedef-matcher
469 (1 font-lock-keyword-face) (2 font-lock-function-name-face)) 467 (1 font-lock-keyword-face) (2 font-lock-function-name-face))
470 ;; Other functions and declarations. 468 ;; F2003. Prevent operators being highlighted as functions.
469 '("\\<\\(\\(?:end[ \t]*\\)?interface[ \t]*\\(?:assignment\\|operator\\|\
470read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t))
471 ;; Other functions and declarations. Named interfaces = F2003.
471 '("\\<\\(\\(?:end[ \t]*\\)?\\(program\\|module\\|function\\|associate\\|\ 472 '("\\<\\(\\(?:end[ \t]*\\)?\\(program\\|module\\|function\\|associate\\|\
472subroutine\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?" 473subroutine\\|interface\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?"
473 (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) 474 (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t))
474 ;; F2003. 475 ;; F2003.
475 '("\\<\\(use\\)[ \t]*,[ \t]*\\(\\(?:non_\\)?intrinsic\\)[ \t]*::[ \t]*\ 476 '("\\<\\(use\\)[ \t]*,[ \t]*\\(\\(?:non_\\)?intrinsic\\)[ \t]*::[ \t]*\
476\\(\\sw+\\)" 477\\(\\sw+\\)"
477 (1 font-lock-keyword-face) (2 font-lock-keyword-face) 478 (1 font-lock-keyword-face) (2 font-lock-keyword-face)
478 (3 font-lock-function-name-face)) 479 (3 font-lock-function-name-face))
479 "\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\|\ 480 "\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\)\\>"
480end[ \t]*interface\\)\\>" 481 ;; "abstract interface" is F2003.
481 ;; "abstract interface" is F2003. Must come after previous entry. 482 '("\\<abstract[ \t]*interface\\>" (0 font-lock-keyword-face t)))
482 '("\\<\\(\\(?:abstract[ \t]*\\)?interface\\)\\>"
483 ;; [ \t]*\\(\\(\\sw+\\)[ \t]*[^(]\\)?"
484 ;; (2) messes up "interface operator ()", etc.
485 (1 font-lock-keyword-face))) ;(2 font-lock-function-name-face nil t)))
486 "This does fairly subdued highlighting of comments and function calls.") 483 "This does fairly subdued highlighting of comments and function calls.")
487 484
488;; NB not explicitly handling this, yet it seems to work. 485;; NB not explicitly handling this, yet it seems to work.
@@ -1229,7 +1226,7 @@ NAME is nil if the statement has no label."
1229 1226
1230(defsubst f90-looking-at-type-like () 1227(defsubst f90-looking-at-type-like ()
1231 "Return (KIND NAME) if a type/enum/interface/block-data starts after point. 1228 "Return (KIND NAME) if a type/enum/interface/block-data starts after point.
1232NAME is non-nil only for type." 1229NAME is non-nil only for type and certain interfaces."
1233 (cond 1230 (cond
1234 ((save-excursion 1231 ((save-excursion
1235 (and (looking-at "\\<type\\>[ \t]*") 1232 (and (looking-at "\\<type\\>[ \t]*")
@@ -1242,7 +1239,15 @@ NAME is non-nil only for type."
1242;;; ((and (not (looking-at f90-typeis-re)) 1239;;; ((and (not (looking-at f90-typeis-re))
1243;;; (looking-at f90-type-def-re)) 1240;;; (looking-at f90-type-def-re))
1244;;; (list (match-string 1) (match-string 2))) 1241;;; (list (match-string 1) (match-string 2)))
1245 ((looking-at "\\(enum\\|interface\\|block[ \t]*data\\)\\>") 1242 ((looking-at "\\<\\(interface\\)\\>[ \t]*")
1243 (list (match-string 1)
1244 (save-excursion
1245 (goto-char (match-end 0))
1246 (if (or (looking-at "\\(operator\\|assignment\\|read\\|\
1247write\\)[ \t]*([^)\n]*)")
1248 (looking-at "\\sw+"))
1249 (match-string 0)))))
1250 ((looking-at "\\(enum\\|block[ \t]*data\\)\\>")
1246 (list (match-string 1) nil)) 1251 (list (match-string 1) nil))
1247 ((looking-at "abstract[ \t]*\\(interface\\)\\>") 1252 ((looking-at "abstract[ \t]*\\(interface\\)\\>")
1248 (list (match-string 1) nil)))) 1253 (list (match-string 1) nil))))
@@ -1270,9 +1275,12 @@ NAME is non-nil only for type."
1270 1275
1271(defsubst f90-looking-at-program-block-end () 1276(defsubst f90-looking-at-program-block-end ()
1272 "Return (KIND NAME) if a block with name NAME ends after point." 1277 "Return (KIND NAME) if a block with name NAME ends after point."
1273 (if (looking-at (concat "end[ \t]*" f90-blocks-re 1278 (cond ((looking-at "end[ \t]*\\(interface\\)[ \t]*\\(\
1274 "?\\([ \t]+\\(\\sw+\\)\\)?\\>")) 1279\\(?:assignment\\|operator\\|read\\|write\\)[ \t]*([^)\n]*)\\)")
1275 (list (match-string 1) (match-string 3)))) 1280 (list (match-string 1) (match-string 2)))
1281 ((looking-at (concat "end[ \t]*" f90-blocks-re
1282 "?\\([ \t]+\\(\\sw+\\)\\)?\\>"))
1283 (list (match-string 1) (match-string 3)))))
1276 1284
1277(defsubst f90-comment-indent () 1285(defsubst f90-comment-indent ()
1278 "Return the indentation to be used for a comment starting at point. 1286 "Return the indentation to be used for a comment starting at point.
diff --git a/lisp/subr.el b/lisp/subr.el
index b80988ad723..d2363099b7c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2232,10 +2232,14 @@ If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
2232 2232
2233(defun copy-overlay (o) 2233(defun copy-overlay (o)
2234 "Return a copy of overlay O." 2234 "Return a copy of overlay O."
2235 (let ((o1 (make-overlay (overlay-start o) (overlay-end o) 2235 (let ((o1 (if (overlay-buffer o)
2236 ;; FIXME: there's no easy way to find the 2236 (make-overlay (overlay-start o) (overlay-end o)
2237 ;; insertion-type of the two markers. 2237 ;; FIXME: there's no easy way to find the
2238 (overlay-buffer o))) 2238 ;; insertion-type of the two markers.
2239 (overlay-buffer o))
2240 (let ((o1 (make-overlay (point-min) (point-min))))
2241 (delete-overlay o1)
2242 o1)))
2239 (props (overlay-properties o))) 2243 (props (overlay-properties o)))
2240 (while props 2244 (while props
2241 (overlay-put o1 (pop props) (pop props))) 2245 (overlay-put o1 (pop props) (pop props)))
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index d881e6fcc7d..ccedf4045e4 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -679,7 +679,6 @@ versions of xterm."
679 ;; Use the heuristic in `frame-set-background-mode' to decide if a 679 ;; Use the heuristic in `frame-set-background-mode' to decide if a
680 ;; frame is dark. 680 ;; frame is dark.
681 (when (< (+ redc greenc bluec) (* .6 (+ 65535 65535 65535))) 681 (when (< (+ redc greenc bluec) (* .6 (+ 65535 65535 65535)))
682 (setq xterm-background-mode-changed t)
683 (set-terminal-parameter nil 'background-mode 'dark) 682 (set-terminal-parameter nil 'background-mode 'dark)
684 t)) 683 t))
685 684
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index e1d7b053491..bc5f29482e7 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -859,15 +859,15 @@ ARROW-PRED is a function that is called to find out if the shape
859 can have arrows. The function is called with no arguments and 859 can have arrows. The function is called with no arguments and
860 must return nil or t. 860 must return nil or t.
861ARROW-SET-FN is a function that is called to set arrow end-points. 861ARROW-SET-FN is a function that is called to set arrow end-points.
862 Arguments and return values for this funcion are described below. 862 Arguments and return values for this function are described below.
863INIT-FN is, if non-nil, a function that is called when the first 863INIT-FN is, if non-nil, a function that is called when the first
864 point of the shape is set. Arguments and return values for 864 point of the shape is set. Arguments and return values for
865 this funcion are described below. 865 this function are described below.
866PREP-FILL-FN is, if non-nil, a function that is called after 866PREP-FILL-FN is, if non-nil, a function that is called after
867 the last point is set, but before the filling is done. 867 the last point is set, but before the filling is done.
868 Arguments and return values for this funcion are described below. 868 Arguments and return values for this function are described below.
869EXIT-FN is, if non-nil, a function that is called after filling 869EXIT-FN is, if non-nil, a function that is called after filling
870 is done. Arguments and return values for this funcion are 870 is done. Arguments and return values for this function are
871 described below. 871 described below.
872DRAW-HOW defines the kind of shape. The kinds of shapes are: 872DRAW-HOW defines the kind of shape. The kinds of shapes are:
873 `artist-do-continously' -- Do drawing operation continuously, 873 `artist-do-continously' -- Do drawing operation continuously,
@@ -876,7 +876,7 @@ DRAW-HOW defines the kind of shape. The kinds of shapes are:
876 1 -- Do drawing operation only once. 876 1 -- Do drawing operation only once.
877 2 -- The drawing operation requires two points. 877 2 -- The drawing operation requires two points.
878DRAW-FN is the function to call for drawing. Arguments and 878DRAW-FN is the function to call for drawing. Arguments and
879 return values for this funcion are described below. 879 return values for this function are described below.
880EXTRA-DRAW-INFO the layout of this depends on the value of DRAW-HOW: 880EXTRA-DRAW-INFO the layout of this depends on the value of DRAW-HOW:
881 If DRAW-HOW is `artist-do-continously': 881 If DRAW-HOW is `artist-do-continously':
882 882
@@ -894,20 +894,20 @@ EXTRA-DRAW-INFO the layout of this depends on the value of DRAW-HOW:
894 (UNDRAW-FN FILL-PRED FILL-FN) 894 (UNDRAW-FN FILL-PRED FILL-FN)
895 895
896 UNDRAW-FN is a function to call for undrawing the shape. 896 UNDRAW-FN is a function to call for undrawing the shape.
897 Arguments and return values for this funcion are 897 Arguments and return values for this function are
898 described below. 898 described below.
899 FILL-PRED is a function that is called to find out if the shape 899 FILL-PRED is a function that is called to find out if the shape
900 can have arrows. The function must take no arguments and 900 can have arrows. The function must take no arguments and
901 return nil or t. 901 return nil or t.
902 FILL-FN is a function to call for filling the shape. 902 FILL-FN is a function to call for filling the shape.
903 Arguments and return values for this funcion are 903 Arguments and return values for this function are
904 described below. 904 described below.
905 905
906 If DRAW-HOW is 1: 906 If DRAW-HOW is 1:
907 907
908 () 908 ()
909 909
910Note! All symbols and keywords (both in the `funcion-call' INFO-PART 910Note! All symbols and keywords (both in the `function-call' INFO-PART
911 as well as in the `graphics-operation' INFO-PART) must be unique. 911 as well as in the `graphics-operation' INFO-PART) must be unique.
912 912
913The following table describe function arguments and return value 913The following table describe function arguments and return value
diff --git a/src/ChangeLog b/src/ChangeLog
index 4837d8ecb06..a48194a90aa 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,25 @@
12010-02-13 Jan Djärv <jan.h.d@swipnet.se>
2
3 * xterm.c (x_clear_frame_area): Cal gtk_widget_queue_draw if USE_GTK,
4 bug #5571.
5
62010-02-10 Jan Djärv <jan.h.d@swipnet.se>
7
8 * xsmfns.c (x_session_initialize): Move initialization of ice_fd and
9 doing_interact here.
10 (ice_connection_closed): New function.
11 (x_session_check_input, smc_die_CB, ice_io_error_handler)
12 (ice_conn_watch_CB, x_session_close): Call ice_connection_closed.
13 (x_session_check_input): Call IceCloseConnection if IceProcessMessages
14 returns I/O error.
15 (ice_conn_watch_CB): Call add_keyboard_wait_descriptor on ice_fd,
16 bug #5512.
17
182010-02-08 Francis Devereux <francis@devrx.org> (tiny change)
19
20 * nsfont.m (nsfont_open): The system's value for the font descent
21 is negative, so round it down to avoid clipping.
22
12010-02-06 Chong Yidong <cyd@stupidchicken.com> 232010-02-06 Chong Yidong <cyd@stupidchicken.com>
2 24
3 * charset.c (load_charset_map_from_file) 25 * charset.c (load_charset_map_from_file)
@@ -78,7 +100,7 @@
782010-01-25 Jan Djärv <jan.h.d@swipnet.se> 1002010-01-25 Jan Djärv <jan.h.d@swipnet.se>
79 101
80 * xfns.c (Fx_create_frame): If frame height is too big, try 102 * xfns.c (Fx_create_frame): If frame height is too big, try
81 sizes 24 and 10. Bug #3643. 103 sizes 24 and 10. Bug #3643.
82 104
832010-01-24 Stefan Monnier <monnier@iro.umontreal.ca> 1052010-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
84 106
@@ -165,7 +187,7 @@
165 * xfns.c (x_get_current_desktop, x_get_desktop_workarea): New functions. 187 * xfns.c (x_get_current_desktop, x_get_desktop_workarea): New functions.
166 (Fx_create_frame): Call x_get_current_desktop and x_get_desktop_workarea 188 (Fx_create_frame): Call x_get_current_desktop and x_get_desktop_workarea
167 to find out usable size of the desktop. Don't make frames larger than 189 to find out usable size of the desktop. Don't make frames larger than
168 this. Bug #3643. 190 this. Bug #3643.
169 191
1702010-01-15 Kenichi Handa <handa@m17n.org> 1922010-01-15 Kenichi Handa <handa@m17n.org>
171 193
@@ -310,7 +332,7 @@
310 332
3112010-01-08 Jan Djärv <jan.h.d@swipnet.se> 3332010-01-08 Jan Djärv <jan.h.d@swipnet.se>
312 334
313 * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must 335 * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must
314 also be true before we can return early (bug #5339). 336 also be true before we can return early (bug #5339).
315 337
3162010-01-06 David Reitter <david.reitter@gmail.com> 3382010-01-06 David Reitter <david.reitter@gmail.com>
@@ -342,7 +364,7 @@
342 364
343 * xterm.c (x_new_font): Move code for setting rows/cols before 365 * xterm.c (x_new_font): Move code for setting rows/cols before
344 resizing ... 366 resizing ...
345 (x_set_window_size): ... to here. bug #2568. 367 (x_set_window_size): ... to here. Bug #2568.
346 368
347 * gtkutil.c (xg_clear_under_internal_border): New function. 369 * gtkutil.c (xg_clear_under_internal_border): New function.
348 (xg_frame_resized, xg_frame_set_char_size): 370 (xg_frame_resized, xg_frame_set_char_size):
@@ -1581,7 +1603,7 @@
1581 Fix printf format. 1603 Fix printf format.
1582 (ns_query_color): Use CGFloat where appropriate. 1604 (ns_query_color): Use CGFloat where appropriate.
1583 (EmacsView<NSTextInput>, EmacsScroller): Fix method signatures. 1605 (EmacsView<NSTextInput>, EmacsScroller): Fix method signatures.
1584 (EmacsScroller-mouseDown:) Use long format in printf, and cast 1606 (EmacsScroller-mouseDown:): Use long format in printf, and cast
1585 argument. 1607 argument.
1586 1608
1587 * config.in (NS_HAVE_NSINTEGER): Drop. 1609 * config.in (NS_HAVE_NSINTEGER): Drop.
@@ -4057,7 +4079,7 @@
4057 4079
40582009-02-12 Stefan Monnier <monnier@iro.umontreal.ca> 40802009-02-12 Stefan Monnier <monnier@iro.umontreal.ca>
4059 4081
4060 * keyboard.c (adjust_point_for_property): Allow stopping betwen two 4082 * keyboard.c (adjust_point_for_property): Allow stopping between two
4061 invisible areas. 4083 invisible areas.
4062 4084
40632009-02-12 Jason Rumney <jasonr@gnu.org> 40852009-02-12 Jason Rumney <jasonr@gnu.org>
diff --git a/src/nsfont.m b/src/nsfont.m
index d5107f376dd..97d74a82f2b 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -844,8 +844,10 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
844 /* max bounds */ 844 /* max bounds */
845 font_info->max_bounds.ascent = 845 font_info->max_bounds.ascent =
846 lrint (hshrink * [sfont ascender] + expand * hd/2); 846 lrint (hshrink * [sfont ascender] + expand * hd/2);
847 /* [sfont descender] is usually negative. Use floor to avoid
848 clipping descenders. */
847 font_info->max_bounds.descent = 849 font_info->max_bounds.descent =
848 -lrint (hshrink* [sfont descender] - expand*hd/2); 850 -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
849 font_info->height = 851 font_info->height =
850 font_info->max_bounds.ascent + font_info->max_bounds.descent; 852 font_info->max_bounds.ascent + font_info->max_bounds.descent;
851 font_info->max_bounds.width = lrint (font_info->width); 853 font_info->max_bounds.width = lrint (font_info->width);
@@ -880,8 +882,8 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
880#endif 882#endif
881 883
882 /* set up metrics portion of font struct */ 884 /* set up metrics portion of font struct */
883 font->ascent = [sfont ascender]; 885 font->ascent = lrint([sfont ascender]);
884 font->descent = -[sfont descender]; 886 font->descent = -lrint(floor([sfont descender]));
885 font->min_width = ns_char_width(sfont, '|'); 887 font->min_width = ns_char_width(sfont, '|');
886 font->space_width = lrint (ns_char_width (sfont, ' ')); 888 font->space_width = lrint (ns_char_width (sfont, ' '));
887 font->average_width = lrint (font_info->width); 889 font->average_width = lrint (font_info->width);
diff --git a/src/xsmfns.c b/src/xsmfns.c
index 55035816bfd..ec5ca3b1a9f 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -52,11 +52,11 @@ static struct input_event emacs_event;
52 52
53/* The descriptor that we use to check for data from the session manager. */ 53/* The descriptor that we use to check for data from the session manager. */
54 54
55static int ice_fd = -1; 55static int ice_fd;
56 56
57/* A flag that says if we are in shutdown interactions or not. */ 57/* A flag that says if we are in shutdown interactions or not. */
58 58
59static int doing_interact = False; 59static int doing_interact;
60 60
61/* The session manager object for the session manager connection. */ 61/* The session manager object for the session manager connection. */
62 62
@@ -90,6 +90,14 @@ Lisp_Object Vx_session_previous_id;
90 90
91#define NOSPLASH_OPT "--no-splash" 91#define NOSPLASH_OPT "--no-splash"
92 92
93static void
94ice_connection_closed ()
95{
96 if (ice_fd >= 0)
97 delete_keyboard_wait_descriptor (ice_fd);
98 ice_fd = -1;
99}
100
93 101
94/* Handle any messages from the session manager. If no connection is 102/* Handle any messages from the session manager. If no connection is
95 open to a session manager, just return 0. 103 open to a session manager, just return 0.
@@ -101,9 +109,9 @@ x_session_check_input (bufp)
101{ 109{
102 SELECT_TYPE read_fds; 110 SELECT_TYPE read_fds;
103 EMACS_TIME tmout; 111 EMACS_TIME tmout;
112 int ret;
104 113
105 if (ice_fd == -1) return 0; 114 if (ice_fd == -1) return 0;
106
107 FD_ZERO (&read_fds); 115 FD_ZERO (&read_fds);
108 FD_SET (ice_fd, &read_fds); 116 FD_SET (ice_fd, &read_fds);
109 117
@@ -116,26 +124,33 @@ x_session_check_input (bufp)
116 will be called. */ 124 will be called. */
117 emacs_event.kind = NO_EVENT; 125 emacs_event.kind = NO_EVENT;
118 126
119 if (select (ice_fd+1, &read_fds, 127 ret = select (ice_fd+1, &read_fds,
120 (SELECT_TYPE *)0, (SELECT_TYPE *)0, &tmout) < 0) 128 (SELECT_TYPE *)0, (SELECT_TYPE *)0, &tmout);
129
130 if (ret < 0)
121 { 131 {
122 ice_fd = -1; 132 ice_connection_closed ();
123 return 0; 133 }
134 else if (ret > 0 && FD_ISSET (ice_fd, &read_fds))
135 {
136 ret = IceProcessMessages (SmcGetIceConnection (smc_conn),
137 (IceReplyWaitInfo *)0, (Bool *)0);
138 if (ret != IceProcessMessagesSuccess)
139 {
140 /* Either IO error or Connection closed. */
141 if (ret == IceProcessMessagesIOError)
142 IceCloseConnection (SmcGetIceConnection (smc_conn));
143
144 ice_connection_closed ();
145 }
124 } 146 }
125
126
127 if (FD_ISSET (ice_fd, &read_fds))
128 IceProcessMessages (SmcGetIceConnection (smc_conn),
129 (IceReplyWaitInfo *)0, (Bool *)0);
130
131 147
132 /* Check if smc_interact_CB was called and we shall generate a 148 /* Check if smc_interact_CB was called and we shall generate a
133 SAVE_SESSION_EVENT. */ 149 SAVE_SESSION_EVENT. */
134 if (emacs_event.kind == NO_EVENT) 150 if (emacs_event.kind != NO_EVENT)
135 return 0; 151 bcopy (&emacs_event, bufp, sizeof (struct input_event));
136 152
137 bcopy (&emacs_event, bufp, sizeof (struct input_event)); 153 return emacs_event.kind != NO_EVENT ? 1 : 0;
138 return 1;
139} 154}
140 155
141/* Return non-zero if we have a connection to a session manager. */ 156/* Return non-zero if we have a connection to a session manager. */
@@ -284,7 +299,7 @@ smc_die_CB (smcConn, clientData)
284 SmPointer clientData; 299 SmPointer clientData;
285{ 300{
286 SmcCloseConnection (smcConn, 0, 0); 301 SmcCloseConnection (smcConn, 0, 0);
287 ice_fd = -1; 302 ice_connection_closed ();
288} 303}
289 304
290/* We don't use the next two but they are mandatory, leave them empty. 305/* We don't use the next two but they are mandatory, leave them empty.
@@ -356,7 +371,7 @@ ice_io_error_handler (iceConn)
356 IceConn iceConn; 371 IceConn iceConn;
357{ 372{
358 /* Connection probably gone. */ 373 /* Connection probably gone. */
359 ice_fd = -1; 374 ice_connection_closed ();
360} 375}
361 376
362/* This is called when the ICE connection is created or closed. The SM library 377/* This is called when the ICE connection is created or closed. The SM library
@@ -371,7 +386,7 @@ ice_conn_watch_CB (iceConn, clientData, opening, watchData)
371{ 386{
372 if (! opening) 387 if (! opening)
373 { 388 {
374 ice_fd = -1; 389 ice_connection_closed ();
375 return; 390 return;
376 } 391 }
377 392
@@ -384,6 +399,8 @@ ice_conn_watch_CB (iceConn, clientData, opening, watchData)
384 if (interrupt_input) 399 if (interrupt_input)
385 init_sigio (ice_fd); 400 init_sigio (ice_fd);
386#endif /* ! defined (SIGIO) */ 401#endif /* ! defined (SIGIO) */
402
403 add_keyboard_wait_descriptor (ice_fd);
387} 404}
388 405
389/* Create the client leader window. */ 406/* Create the client leader window. */
@@ -426,6 +443,9 @@ x_session_initialize (dpyinfo)
426 SmcCallbacks callbacks; 443 SmcCallbacks callbacks;
427 int name_len = 0; 444 int name_len = 0;
428 445
446 ice_fd = -1;
447 doing_interact = False;
448
429 /* Check if we where started by the session manager. If so, we will 449 /* Check if we where started by the session manager. If so, we will
430 have a previous id. */ 450 have a previous id. */
431 if (! EQ (Vx_session_previous_id, Qnil) && STRINGP (Vx_session_previous_id)) 451 if (! EQ (Vx_session_previous_id, Qnil) && STRINGP (Vx_session_previous_id))
@@ -497,7 +517,7 @@ x_session_initialize (dpyinfo)
497void 517void
498x_session_close () 518x_session_close ()
499{ 519{
500 ice_fd = -1; 520 ice_connection_closed ();
501} 521}
502 522
503 523
diff --git a/src/xterm.c b/src/xterm.c
index 1add3c415e7..9ed98deb7b5 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -7446,6 +7446,11 @@ x_clear_frame_area (f, x, y, width, height)
7446{ 7446{
7447 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 7447 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7448 x, y, width, height, False); 7448 x, y, width, height, False);
7449#ifdef USE_GTK
7450 /* Must queue a redraw, because scroll bars might have been cleared. */
7451 if (FRAME_GTK_WIDGET (f))
7452 gtk_widget_queue_draw (FRAME_GTK_WIDGET (f));
7453#endif
7449} 7454}
7450 7455
7451 7456