# HG changeset patch # User Eli Zaretskii # Date 1266067126 18000 # Node ID 7e1441b44e8465f2da6190131a9741a86d21145c # Parent a2c01839283be314ac7d1bbbea50b549a70761a6# Parent 0c8d4cc6d8b659413791ecf9d31cb5ea69b6f2f3 Merge from mainline. diff -r a2c01839283b -r 7e1441b44e84 doc/emacs/ChangeLog --- a/doc/emacs/ChangeLog Sat Feb 06 12:50:45 2010 -0500 +++ b/doc/emacs/ChangeLog Sat Feb 13 08:18:46 2010 -0500 @@ -1,3 +1,7 @@ +2010-02-08 Glenn Morris + + * buffers.texi (Uniquify): Must explicitly load library. (Bug#5529) + 2010-02-01 Stefan Monnier * display.texi (Useless Whitespace, Text Display): diff -r a2c01839283b -r 7e1441b44e84 doc/emacs/buffers.texi --- a/doc/emacs/buffers.texi Sat Feb 06 12:50:45 2010 -0500 +++ b/doc/emacs/buffers.texi Sat Feb 13 08:18:46 2010 -0500 @@ -583,7 +583,8 @@ @vindex uniquify-buffer-name-style Other methods work by adding parts of each file's directory to the -buffer name. To select one, customize the variable +buffer name. To select one, load the library @file{uniquify} (e.g. +using @code{(require 'uniquify)}), and customize the variable @code{uniquify-buffer-name-style} (@pxref{Easy Customization}). To begin with, the @code{forward} naming method includes part of the diff -r a2c01839283b -r 7e1441b44e84 etc/NEWS --- a/etc/NEWS Sat Feb 06 12:50:45 2010 -0500 +++ b/etc/NEWS Sat Feb 13 08:18:46 2010 -0500 @@ -273,6 +273,11 @@ To disable this check, set compose-mail-user-agent-warnings to nil. +** The default value of mail-interactive is t, since Emacs 23.1. +(This was not announced at the time.) It means that when sending mail, +Emacs will wait for the process sending mail to return. If you +experience delays when sending mail, you may wish to set this to nil. + ** nXML mode is now the default for editing XML files. ** Shell diff -r a2c01839283b -r 7e1441b44e84 lisp/ChangeLog --- a/lisp/ChangeLog Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/ChangeLog Sat Feb 13 08:18:46 2010 -0500 @@ -1,3 +1,87 @@ +2010-02-12 Juri Linkov + + * arc-mode.el (archive-unique-fname): Make directories for nested + archives. (Bug#5540) + +2010-02-12 Juri Linkov + + * ffap.el (dired-at-point): Fix docstring. (Bug#5565) + +2010-02-11 Stefan Monnier + + * subr.el (copy-overlay): Handle deleted overlays. + + * man.el (Man-completion-table): Don't signal an error if we can't run + manual-program (bug#4056). + +2010-02-10 Juanma Barranquero + + * textmodes/artist.el (artist-mt): Fix typos in docstring. + +2010-02-10 Thierry Volpiatto + + * info.el (Info-bookmark-jump): Simplify. + + * bookmark.el (bookmark-handle-bookmark): Catch the right error. + (bookmark-default-handler): Accept new bookmark field `buffer'. + +2010-02-10 Chong Yidong + + * iswitchb.el (iswitchb-completions): Revert last change. + +2010-02-10 Michael Albinus + + * ls-lisp.el (ls-lisp-insert-directory): When WILDCARD-REGEXP and + FULL-DIRECTORY-P are nil, and FILE is absolute, expand it. + This prevents file names like "~/" being listed literally. + +2010-02-10 Dan Nicolaescu + + * term/xterm.el (xterm-maybe-set-dark-background-mode): + Remove dead code. (Bug#5546) + +2010-02-09 Chong Yidong + + * eshell/em-ls.el (eshell-ls-applicable): Frob file attributes + correctly (Bug#5548). + +2010-02-08 Jose E. Marchesi + + * progmodes/ada-mode.el (ada-in-numeric-literal-p): New function. + (ada-adjust-case): Don't adjust case in hexadecimal number + literals. + +2010-02-08 Kenichi Handa + + * international/mule-util.el (with-coding-priority): Add autoload + cookie for putting `lisp-indent-function'. + +2010-02-07 Glenn Morris + + * progmodes/f90.el (f90-font-lock-keywords-1, f90-font-lock-keywords-2): + Move F2003 named interfaces from keywords-2 to keywords-1, and + use function-name-face rather than constant-face. + Simplify "abstract interface" regexp. + +2010-02-07 Chong Yidong + + * eshell/esh-util.el (eshell-file-attributes): New optional arg + ID-FORMAT. Pass it to `file-attributes'. + + * eshell/em-ls.el (eshell-do-ls): Use it (Bug#5528). + +2010-02-07 sj (tiny change) + + * faces.el (set-face-attribute): Allow calling + internal-set-lisp-face-attribute with 'unspecified family and + foundry argument (Bug#5536). + +2010-02-07 Glenn Morris + + * progmodes/f90.el (f90-font-lock-keywords-2) + (f90-looking-at-type-like, f90-looking-at-program-block-end): + Handle F2003 named interfaces. + 2010-02-06 Chong Yidong * progmodes/cc-mode.el (c-common-init): Bind temporary variables @@ -246,10 +330,9 @@ 2010-01-25 Mark A. Hershberger - * progmodes/python.el: Replace reference to obsolete - c-subward-mode. - - * vc-bzr.el: (vc-bzr-revision-table) New function. + * progmodes/python.el: Replace reference to obsolete c-subword-mode. + + * vc-bzr.el (vc-bzr-revision-table): New function. 2010-01-25 Eric Hanchrow (tiny change) @@ -282,7 +365,7 @@ 2010-01-23 Stephen Leake - * progmodes/ada-mode.el (ada-in-paramlist-p): Pragma syntax + * progmodes/ada-mode.el (ada-in-paramlist-p): Pragma syntax is the same as subprogram call, not declaration. (Bug#5435). 2010-01-23 Michael Albinus @@ -3678,7 +3761,7 @@ (verilog-read-decls): Fix AUTOREG not detecting "assign {a,b}". Reported by Wade Smith. - (verilog-batch-execute-func) Comment on function usage. + (verilog-batch-execute-func): Comment on function usage. 2009-11-05 Michael McNamara @@ -4335,7 +4418,7 @@ (tramp-handle-file-truename): Use it. (tramp-handle-file-exists-p): Check file-attributes cache, assume file exists if cache value present. - (tramp-check-cached-permissions) New defun. + (tramp-check-cached-permissions): New defun. (tramp-handle-file-readable-p): Use it. (tramp-handle-file-writable-p): Likewise. (tramp-handle-file-executable-p): Likewise. @@ -4566,7 +4649,7 @@ from `rfn-eshadow-update-overlay-hook' when unloading. (tramp-methods): Add `tramp-copy-keep-tmpfile' for "rsync" and "rsyncc". Adjust doc string. - (tramp-temp-buffer-file-name) New buffer-local defvar. + (tramp-temp-buffer-file-name): New buffer-local defvar. (tramp-handle-insert-file-contents, tramp-handle-write-region): Keep temporary file when indicated by method ("rsync" and "rsyncc"). @@ -7978,7 +8061,7 @@ Don't modify last-coding-system-used by accident. (tramp-completion-file-name-handler): Apply the checks here, instead during registration. - (tramp-register-file-name-handlers) Renamed from + (tramp-register-file-name-handlers): Renamed from `tramp-register-file-name-handler'. Register both `tramp-file-name-handler' and `tramp-completion-file-name-handler'. (tramp-register-completion-file-name-handler): Remove. (Bug#4260) @@ -10072,7 +10155,7 @@ * net/tramp.el (tramp-do-copy-or-rename-file-directly): Handle also the 'rename case, when setting file modes. (Bug#3712) - (tramp-default-file-modes) Remove execute permissions. + (tramp-default-file-modes): Remove execute permissions. * net/tramp-gvfs.el (tramp-gvfs-methods): Add "synce" method. (top): Add a default for "synce" in `tramp-default-user-alist'. @@ -10097,7 +10180,7 @@ * language/chinese.el ("Chinese-GB", "Chinese-BIG5") ("Chinese-CNS", "Chinese-EUC-TW", "Chinese-GBK"): Add a - setup-funcion to make char-widht-table suitable for respective + setup-function to make char-width-table suitable for respective environments, and an exit-function to cancel that. * language/japan-util.el (setup-japanese-environment-internal): @@ -10157,7 +10240,7 @@ to support safe execution at almost anyline. (verilog-calc-1): Properly support indenting deep inside generate blocks. - (verilog-init-font) Remove definition & use of verilog-init-font, + (verilog-init-font): Remove definition & use of verilog-init-font, as it is redundant with font-lock-defaults. (verilog-mode): Alter the definition of verilog-font-lock-defaults to avoid circular calls if syntax-ppss is a function (as is the @@ -10171,7 +10254,7 @@ (verilog-defun-level-not-generate-re, verilog-defun-level-re) (verilog-defun-level-generate-only-re): Really fix the defun-list compilation issue. - (verilog-calc-1) (verilog-beg-of-statement): Enhance support for + (verilog-calc-1, verilog-beg-of-statement): Enhance support for coverpoint, constraint and cross statements. (verilog-defun-level-list, verilog-generate-defun-level-list) (verilog-all-defun-level-list): Redo these specifications - it is diff -r a2c01839283b -r 7e1441b44e84 lisp/arc-mode.el --- a/lisp/arc-mode.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/arc-mode.el Sat Feb 13 08:18:46 2010 -0500 @@ -834,6 +834,11 @@ ;; reconstructed in the temporary directory. (make-directory (file-name-directory tmpfile) t) (make-temp-file tmpfile)) + ;; Maked sure all the leading directories in `fullname' exist + ;; under archive-tmpdir. This is necessary for nested archives + ;; (`archive-extract' sets `archive-remote' to t in case + ;; an archive occurs inside another archive). + (make-directory (file-name-directory fullname) t) fullname))) (defun archive-maybe-copy (archive) diff -r a2c01839283b -r 7e1441b44e84 lisp/bookmark.el --- a/lisp/bookmark.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/bookmark.el Sat Feb 13 08:18:46 2010 -0500 @@ -1068,7 +1068,7 @@ (funcall (or (bookmark-get-handler bookmark) 'bookmark-default-handler) (bookmark-get-bookmark bookmark)) - (file-error + (bookmark-error-no-filename ;file-error ;; We were unable to find the marked file, so ask if user wants to ;; relocate the bookmark, else remind them to consider deletion. (when (stringp bookmark) @@ -1116,24 +1116,28 @@ BMK-RECORD is a bookmark record, not a bookmark name (i.e., not a string). Changes current buffer and point and returns nil, or signals a `file-error'." (let ((file (bookmark-get-filename bmk-record)) + (buf (bookmark-prop-get bmk-record 'buffer)) (forward-str (bookmark-get-front-context-string bmk-record)) (behind-str (bookmark-get-rear-context-string bmk-record)) (place (bookmark-get-position bmk-record))) - (if (not file) - (signal 'bookmark-error-no-filename (list 'stringp file)) - (set-buffer (find-file-noselect file)) - (if place (goto-char place)) - ;; Go searching forward first. Then, if forward-str exists and - ;; was found in the file, we can search backward for behind-str. - ;; Rationale is that if text was inserted between the two in the - ;; file, it's better to be put before it so you can read it, - ;; rather than after and remain perhaps unaware of the changes. - (if forward-str - (if (search-forward forward-str (point-max) t) - (goto-char (match-beginning 0)))) - (if behind-str - (if (search-backward behind-str (point-min) t) - (goto-char (match-end 0))))) + (set-buffer + (cond + ((and file (file-readable-p file) (not (buffer-live-p buf))) + (find-file-noselect file)) + ;; No file found. See if buffer BUF have been created. + ((and buf (get-buffer buf))) + (t ;; If not, raise error. + (signal 'bookmark-error-no-filename (list 'stringp file))))) + (if place (goto-char place)) + ;; Go searching forward first. Then, if forward-str exists and + ;; was found in the file, we can search backward for behind-str. + ;; Rationale is that if text was inserted between the two in the + ;; file, it's better to be put before it so you can read it, + ;; rather than after and remain perhaps unaware of the changes. + (when (and forward-str (search-forward forward-str (point-max) t)) + (goto-char (match-beginning 0))) + (when (and behind-str (search-backward behind-str (point-min) t)) + (goto-char (match-end 0))) nil)) ;;;###autoload diff -r a2c01839283b -r 7e1441b44e84 lisp/erc/ChangeLog --- a/lisp/erc/ChangeLog Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/erc/ChangeLog Sat Feb 13 08:18:46 2010 -0500 @@ -1,3 +1,7 @@ +2010-02-07 Vivek Dasmohapatra + + * erc-services.el (erc-nickserv-alist): Fix defcustom type (Bug#5520). + 2010-01-25 Vivek Dasmohapatra * erc-backend.el (erc-session-connector): New var. diff -r a2c01839283b -r 7e1441b44e84 lisp/erc/erc-services.el --- a/lisp/erc/erc-services.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/erc/erc-services.el Sat Feb 13 08:18:46 2010 -0500 @@ -303,7 +303,11 @@ (boolean :tag "Use current nick in identify message?") (choice :tag "Command to use (optional)" (string :tag "Command") - (const :tag "No special command necessary" nil))))) + (const :tag "No special command necessary" nil)) + (choice :tag "Detect Success" + (regexp :tag "Pattern to match") + (const :tag "Do not try to detect success" nil))))) + (defsubst erc-nickserv-alist-sender (network &optional entry) (nth 1 (or entry (assoc network erc-nickserv-alist)))) diff -r a2c01839283b -r 7e1441b44e84 lisp/eshell/em-ls.el --- a/lisp/eshell/em-ls.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/eshell/em-ls.el Sat Feb 13 08:18:46 2010 -0500 @@ -225,18 +225,28 @@ (eq (aref (nth 8 attrs) 0) type))) (defmacro eshell-ls-applicable (attrs index func file) - "Test whether, for ATTRS, the user UID can do what corresponds to INDEX. -This is really just for efficiency, to avoid having to stat the file -yet again." - `(if (numberp (nth 2 ,attrs)) - (if (= (user-uid) (nth 2 ,attrs)) - (not (eq (aref (nth 8 ,attrs) ,index) ?-)) - (,(eval func) ,file)) - (not (eq (aref (nth 8 ,attrs) - (+ ,index (if (member (nth 2 ,attrs) - (eshell-current-ange-uids)) - 0 6))) - ?-)))) + "Test whether, for ATTRS, the user can do what corresponds to INDEX. +ATTRS is a string of file modes. See `file-attributes'. +If we cannot determine the answer using ATTRS (e.g., if we need +to know what group the user is in), compute the return value by +calling FUNC with FILE as an argument." + `(let ((owner (nth 2 ,attrs)) + (modes (nth 8 ,attrs))) + (cond ((cond ((numberp owner) + (= owner (user-uid))) + ((stringp owner) + (or (string-equal owner (user-login-name)) + (member owner (eshell-current-ange-uids))))) + ;; The user owns this file. + (not (eq (aref modes ,index) ?-))) + ((eq (aref modes (+ ,index 3)) + (aref modes (+ ,index 6))) + ;; If the "group" and "other" fields give identical + ;; results, use that. + (not (eq (aref modes (+ ,index 3)) ?-))) + (t + ;; Otherwise call FUNC. + (,(eval func) ,file))))) (defcustom eshell-ls-highlight-alist nil "*This alist correlates test functions to color. @@ -393,13 +403,13 @@ (eshell-glob-regexp ignore-pattern)))) ;; list the files! (eshell-ls-entries - (mapcar (function - (lambda (arg) - (cons (if (and (eshell-under-windows-p) - (file-name-absolute-p arg)) - (expand-file-name arg) - arg) - (eshell-file-attributes arg)))) + (mapcar (lambda (arg) + (cons (if (and (eshell-under-windows-p) + (file-name-absolute-p arg)) + (expand-file-name arg) + arg) + (eshell-file-attributes + arg (if numeric-uid-gid 'integer 'string)))) args) t (expand-file-name default-directory))) (funcall flush-func))) @@ -710,7 +720,7 @@ (funcall insert-func need-return "\n")))))) (defun eshell-ls-entries (entries &optional separate root-dir) - "Output PATH's directory ENTRIES, formatted according to OPTIONS. + "Output PATH's directory ENTRIES. Each member of ENTRIES may either be a string or a cons cell, the car of which is the file name, and the cdr of which is the list of attributes. diff -r a2c01839283b -r 7e1441b44e84 lisp/eshell/esh-util.el --- a/lisp/eshell/esh-util.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/eshell/esh-util.el Sat Feb 13 08:18:46 2010 -0500 @@ -701,8 +701,11 @@ (forward-line))) entry)) -(defun eshell-file-attributes (file) - "Return the attributes of FILE, playing tricks if it's over ange-ftp." +(defun eshell-file-attributes (file &optional id-format) + "Return the attributes of FILE, playing tricks if it's over ange-ftp. +The optional argument ID-FORMAT specifies the preferred uid and +gid format. Valid values are 'string and 'integer, defaulting to +'integer. See `file-attributes'." (let* ((file (expand-file-name file)) entry) (if (string-equal (file-remote-p file 'method) "ftp") @@ -723,7 +726,7 @@ (setq entry (cdr fentry)) (setq entry nil))))) entry) - (file-attributes file)))) + (file-attributes file id-format)))) (defalias 'eshell-copy-tree 'copy-tree) diff -r a2c01839283b -r 7e1441b44e84 lisp/faces.el --- a/lisp/faces.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/faces.el Sat Feb 13 08:18:46 2010 -0500 @@ -735,10 +735,10 @@ (unless foundry (setq foundry (match-string 1 family))) (setq family (match-string 2 family))) - (when (stringp family) + (when (or (stringp family) (eq family 'unspecified)) (internal-set-lisp-face-attribute face :family (purecopy family) where)) - (when (stringp foundry) + (when (or (stringp foundry) (eq foundry 'unspecified)) (internal-set-lisp-face-attribute face :foundry (purecopy foundry) where))) (while args diff -r a2c01839283b -r 7e1441b44e84 lisp/ffap.el --- a/lisp/ffap.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/ffap.el Sat Feb 13 08:18:46 2010 -0500 @@ -1796,7 +1796,8 @@ ;;;###autoload (defun dired-at-point (&optional filename) - "Start Dired, defaulting to file at point. See `ffap'." + "Start Dired, defaulting to file at point. See `ffap'. +If `dired-at-point-require-prefix' is set, the prefix meaning is reversed." (interactive) (if (and (called-interactively-p 'interactive) (if dired-at-point-require-prefix diff -r a2c01839283b -r 7e1441b44e84 lisp/info.el --- a/lisp/info.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/info.el Sat Feb 13 08:18:46 2010 -0500 @@ -4797,7 +4797,7 @@ ;; Use bookmark-default-handler to move to the appropriate location ;; within the node. (bookmark-default-handler - (list* "" `(buffer . ,buf) (bookmark-get-bookmark-record bmk))))) + `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk))))) (provide 'info) diff -r a2c01839283b -r 7e1441b44e84 lisp/international/mule-util.el --- a/lisp/international/mule-util.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/international/mule-util.el Sat Feb 13 08:18:46 2010 -0500 @@ -323,7 +323,7 @@ (unwind-protect (progn ,@body) (apply #'set-coding-system-priority ,current))))) -(put 'with-coding-priority 'lisp-indent-function 1) +;;;###autoload(put 'with-coding-priority 'lisp-indent-function 1) (put 'with-coding-priority 'edebug-form-spec t) ;;;###autoload diff -r a2c01839283b -r 7e1441b44e84 lisp/iswitchb.el --- a/lisp/iswitchb.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/iswitchb.el Sat Feb 13 08:18:46 2010 -0500 @@ -1274,7 +1274,7 @@ ;; consult the list of past visited files, to see if we can find ;; the file which the user might thought was still open. (when (and iswitchb-use-virtual-buffers (null comps) - (or recentf-list bookmark-alist)) + recentf-list) (setq iswitchb-virtual-buffers nil) (let ((head recentf-list) name) (while head @@ -1289,30 +1289,15 @@ (setq iswitchb-virtual-buffers (cons (cons name (car head)) iswitchb-virtual-buffers))) - (setq head (cdr head)))) - (let ((head bookmark-alist) name path) - (while head - (if (and (setq path (cdr (assq 'filename (cdar head)))) - (setq name (file-name-nondirectory path)) - (string-match (if iswitchb-regexp - iswitchb-text - (regexp-quote iswitchb-text)) name) - (null (get-file-buffer path)) - (not (assoc name iswitchb-virtual-buffers)) - (not (iswitchb-ignore-buffername-p name)) - (file-exists-p path)) - (setq iswitchb-virtual-buffers - (cons (cons name path) - iswitchb-virtual-buffers))) - (setq head (cdr head)))) - (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers) - comps (mapcar 'car iswitchb-virtual-buffers)) + (setq head (cdr head))) + (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers) + comps (mapcar 'car iswitchb-virtual-buffers)) (let ((comp comps)) (while comp (put-text-property 0 (length (car comp)) 'face 'iswitchb-virtual-matches (car comp)) - (setq comp (cdr comp))))) + (setq comp (cdr comp)))))) (cond ((null comps) (format " %sNo match%s" open-bracket-determined diff -r a2c01839283b -r 7e1441b44e84 lisp/ls-lisp.el --- a/lisp/ls-lisp.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/ls-lisp.el Sat Feb 13 08:18:46 2010 -0500 @@ -400,6 +400,7 @@ ;; If not full-directory-p, FILE *must not* end in /, as ;; file-attributes will not recognize a symlink to a directory, ;; so must make it a relative filename as ls does: + (if (file-name-absolute-p file) (setq file (expand-file-name file))) (if (eq (aref file (1- (length file))) ?/) (setq file (substring file 0 -1))) (let ((fattr (file-attributes file 'string))) diff -r a2c01839283b -r 7e1441b44e84 lisp/man.el --- a/lisp/man.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/man.el Sat Feb 13 08:18:46 2010 -0500 @@ -771,8 +771,13 @@ ;; quote anything. (let ((process-environment (copy-sequence process-environment))) (setenv "COLUMNS" "999") ;; don't truncate long names - (call-process manual-program nil '(t nil) nil - "-k" (concat "^" prefix))) + ;; manual-program might not even exist. And since it's + ;; run differently in Man-getpage-in-background, an error + ;; here may not necessarily mean that we'll also get an + ;; error later. + (ignore-errors + (call-process manual-program nil '(t nil) nil + "-k" (concat "^" prefix)))) (goto-char (point-min)) (while (re-search-forward "^\\([^ \t\n]+\\)\\(?: ?\\((.+?)\\)\\(?:[ \t]+- \\(.*\\)\\)?\\)?" nil t) (push (propertize (concat (match-string 1) (match-string 2)) diff -r a2c01839283b -r 7e1441b44e84 lisp/progmodes/ada-mode.el --- a/lisp/progmodes/ada-mode.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/progmodes/ada-mode.el Sat Feb 13 08:18:46 2010 -0500 @@ -1017,6 +1017,9 @@ (line-beginning-position) (point)))) (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result))) +(defsubst ada-in-numeric-literal-p () + "Return t if point is after a prefix of a numeric literal." + (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)")) ;;------------------------------------------------------------------ ;; Contextual menus @@ -1606,6 +1609,8 @@ (eq (char-syntax (char-before)) ?w) ;; if in a string or a comment (not (ada-in-string-or-comment-p)) + ;; if in a numeric literal + (not (ada-in-numeric-literal-p)) ) (if (save-excursion (forward-word -1) diff -r a2c01839283b -r 7e1441b44e84 lisp/progmodes/f90.el --- a/lisp/progmodes/f90.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/progmodes/f90.el Sat Feb 13 08:18:46 2010 -0500 @@ -158,10 +158,8 @@ ;; 3. Support for align. ;; Font-locking: ;; 1. OpenMP, OpenMPI?, preprocessor highlighting. -;; 2. interface blah - Highlight "blah" in function-name face? -;; Need to avoid "interface operator (+)" etc. -;; 3. integer_name = 1 -;; 4. Labels for "else" statements (F2003)? +;; 2. integer_name = 1 +;; 3. Labels for "else" statements (F2003)? (defvar comment-auto-fill-only-comments) (defvar font-lock-keywords) @@ -467,22 +465,21 @@ ;;; (1 font-lock-keyword-face) (3 font-lock-function-name-face)) '(f90-typedef-matcher (1 font-lock-keyword-face) (2 font-lock-function-name-face)) - ;; Other functions and declarations. + ;; F2003. Prevent operators being highlighted as functions. + '("\\<\\(\\(?:end[ \t]*\\)?interface[ \t]*\\(?:assignment\\|operator\\|\ +read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t)) + ;; Other functions and declarations. Named interfaces = F2003. '("\\<\\(\\(?:end[ \t]*\\)?\\(program\\|module\\|function\\|associate\\|\ -subroutine\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?" +subroutine\\|interface\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?" (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) ;; F2003. '("\\<\\(use\\)[ \t]*,[ \t]*\\(\\(?:non_\\)?intrinsic\\)[ \t]*::[ \t]*\ \\(\\sw+\\)" (1 font-lock-keyword-face) (2 font-lock-keyword-face) (3 font-lock-function-name-face)) - "\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\|\ -end[ \t]*interface\\)\\>" - ;; "abstract interface" is F2003. Must come after previous entry. - '("\\<\\(\\(?:abstract[ \t]*\\)?interface\\)\\>" - ;; [ \t]*\\(\\(\\sw+\\)[ \t]*[^(]\\)?" - ;; (2) messes up "interface operator ()", etc. - (1 font-lock-keyword-face))) ;(2 font-lock-function-name-face nil t))) + "\\<\\(\\(end[ \t]*\\)?block[ \t]*data\\|contains\\)\\>" + ;; "abstract interface" is F2003. + '("\\" (0 font-lock-keyword-face t))) "This does fairly subdued highlighting of comments and function calls.") ;; NB not explicitly handling this, yet it seems to work. @@ -1229,7 +1226,7 @@ (defsubst f90-looking-at-type-like () "Return (KIND NAME) if a type/enum/interface/block-data starts after point. -NAME is non-nil only for type." +NAME is non-nil only for type and certain interfaces." (cond ((save-excursion (and (looking-at "\\[ \t]*") @@ -1242,7 +1239,15 @@ ;;; ((and (not (looking-at f90-typeis-re)) ;;; (looking-at f90-type-def-re)) ;;; (list (match-string 1) (match-string 2))) - ((looking-at "\\(enum\\|interface\\|block[ \t]*data\\)\\>") + ((looking-at "\\<\\(interface\\)\\>[ \t]*") + (list (match-string 1) + (save-excursion + (goto-char (match-end 0)) + (if (or (looking-at "\\(operator\\|assignment\\|read\\|\ +write\\)[ \t]*([^)\n]*)") + (looking-at "\\sw+")) + (match-string 0))))) + ((looking-at "\\(enum\\|block[ \t]*data\\)\\>") (list (match-string 1) nil)) ((looking-at "abstract[ \t]*\\(interface\\)\\>") (list (match-string 1) nil)))) @@ -1270,9 +1275,12 @@ (defsubst f90-looking-at-program-block-end () "Return (KIND NAME) if a block with name NAME ends after point." - (if (looking-at (concat "end[ \t]*" f90-blocks-re - "?\\([ \t]+\\(\\sw+\\)\\)?\\>")) - (list (match-string 1) (match-string 3)))) + (cond ((looking-at "end[ \t]*\\(interface\\)[ \t]*\\(\ +\\(?:assignment\\|operator\\|read\\|write\\)[ \t]*([^)\n]*)\\)") + (list (match-string 1) (match-string 2))) + ((looking-at (concat "end[ \t]*" f90-blocks-re + "?\\([ \t]+\\(\\sw+\\)\\)?\\>")) + (list (match-string 1) (match-string 3))))) (defsubst f90-comment-indent () "Return the indentation to be used for a comment starting at point. diff -r a2c01839283b -r 7e1441b44e84 lisp/subr.el --- a/lisp/subr.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/subr.el Sat Feb 13 08:18:46 2010 -0500 @@ -2232,10 +2232,14 @@ (defun copy-overlay (o) "Return a copy of overlay O." - (let ((o1 (make-overlay (overlay-start o) (overlay-end o) - ;; FIXME: there's no easy way to find the - ;; insertion-type of the two markers. - (overlay-buffer o))) + (let ((o1 (if (overlay-buffer o) + (make-overlay (overlay-start o) (overlay-end o) + ;; FIXME: there's no easy way to find the + ;; insertion-type of the two markers. + (overlay-buffer o)) + (let ((o1 (make-overlay (point-min) (point-min)))) + (delete-overlay o1) + o1))) (props (overlay-properties o))) (while props (overlay-put o1 (pop props) (pop props))) diff -r a2c01839283b -r 7e1441b44e84 lisp/term/xterm.el --- a/lisp/term/xterm.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/term/xterm.el Sat Feb 13 08:18:46 2010 -0500 @@ -679,7 +679,6 @@ ;; Use the heuristic in `frame-set-background-mode' to decide if a ;; frame is dark. (when (< (+ redc greenc bluec) (* .6 (+ 65535 65535 65535))) - (setq xterm-background-mode-changed t) (set-terminal-parameter nil 'background-mode 'dark) t)) diff -r a2c01839283b -r 7e1441b44e84 lisp/textmodes/artist.el --- a/lisp/textmodes/artist.el Sat Feb 06 12:50:45 2010 -0500 +++ b/lisp/textmodes/artist.el Sat Feb 13 08:18:46 2010 -0500 @@ -859,15 +859,15 @@ can have arrows. The function is called with no arguments and must return nil or t. ARROW-SET-FN is a function that is called to set arrow end-points. - Arguments and return values for this funcion are described below. + Arguments and return values for this function are described below. INIT-FN is, if non-nil, a function that is called when the first point of the shape is set. Arguments and return values for - this funcion are described below. + this function are described below. PREP-FILL-FN is, if non-nil, a function that is called after the last point is set, but before the filling is done. - Arguments and return values for this funcion are described below. + Arguments and return values for this function are described below. EXIT-FN is, if non-nil, a function that is called after filling - is done. Arguments and return values for this funcion are + is done. Arguments and return values for this function are described below. DRAW-HOW defines the kind of shape. The kinds of shapes are: `artist-do-continously' -- Do drawing operation continuously, @@ -876,7 +876,7 @@ 1 -- Do drawing operation only once. 2 -- The drawing operation requires two points. DRAW-FN is the function to call for drawing. Arguments and - return values for this funcion are described below. + return values for this function are described below. EXTRA-DRAW-INFO the layout of this depends on the value of DRAW-HOW: If DRAW-HOW is `artist-do-continously': @@ -894,20 +894,20 @@ (UNDRAW-FN FILL-PRED FILL-FN) UNDRAW-FN is a function to call for undrawing the shape. - Arguments and return values for this funcion are + Arguments and return values for this function are described below. FILL-PRED is a function that is called to find out if the shape can have arrows. The function must take no arguments and return nil or t. FILL-FN is a function to call for filling the shape. - Arguments and return values for this funcion are + Arguments and return values for this function are described below. If DRAW-HOW is 1: () -Note! All symbols and keywords (both in the `funcion-call' INFO-PART +Note! All symbols and keywords (both in the `function-call' INFO-PART as well as in the `graphics-operation' INFO-PART) must be unique. The following table describe function arguments and return value diff -r a2c01839283b -r 7e1441b44e84 src/ChangeLog --- a/src/ChangeLog Sat Feb 06 12:50:45 2010 -0500 +++ b/src/ChangeLog Sat Feb 13 08:18:46 2010 -0500 @@ -1,3 +1,25 @@ +2010-02-13 Jan Djärv + + * xterm.c (x_clear_frame_area): Cal gtk_widget_queue_draw if USE_GTK, + bug #5571. + +2010-02-10 Jan Djärv + + * xsmfns.c (x_session_initialize): Move initialization of ice_fd and + doing_interact here. + (ice_connection_closed): New function. + (x_session_check_input, smc_die_CB, ice_io_error_handler) + (ice_conn_watch_CB, x_session_close): Call ice_connection_closed. + (x_session_check_input): Call IceCloseConnection if IceProcessMessages + returns I/O error. + (ice_conn_watch_CB): Call add_keyboard_wait_descriptor on ice_fd, + bug #5512. + +2010-02-08 Francis Devereux (tiny change) + + * nsfont.m (nsfont_open): The system's value for the font descent + is negative, so round it down to avoid clipping. + 2010-02-06 Chong Yidong * charset.c (load_charset_map_from_file) @@ -78,7 +100,7 @@ 2010-01-25 Jan Djärv * xfns.c (Fx_create_frame): If frame height is too big, try - sizes 24 and 10. Bug #3643. + sizes 24 and 10. Bug #3643. 2010-01-24 Stefan Monnier @@ -165,7 +187,7 @@ * xfns.c (x_get_current_desktop, x_get_desktop_workarea): New functions. (Fx_create_frame): Call x_get_current_desktop and x_get_desktop_workarea to find out usable size of the desktop. Don't make frames larger than - this. Bug #3643. + this. Bug #3643. 2010-01-15 Kenichi Handa @@ -310,7 +332,7 @@ 2010-01-08 Jan Djärv - * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must + * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must also be true before we can return early (bug #5339). 2010-01-06 David Reitter @@ -342,7 +364,7 @@ * xterm.c (x_new_font): Move code for setting rows/cols before resizing ... - (x_set_window_size): ... to here. bug #2568. + (x_set_window_size): ... to here. Bug #2568. * gtkutil.c (xg_clear_under_internal_border): New function. (xg_frame_resized, xg_frame_set_char_size): @@ -1581,7 +1603,7 @@ Fix printf format. (ns_query_color): Use CGFloat where appropriate. (EmacsView, EmacsScroller): Fix method signatures. - (EmacsScroller-mouseDown:) Use long format in printf, and cast + (EmacsScroller-mouseDown:): Use long format in printf, and cast argument. * config.in (NS_HAVE_NSINTEGER): Drop. @@ -4057,7 +4079,7 @@ 2009-02-12 Stefan Monnier - * keyboard.c (adjust_point_for_property): Allow stopping betwen two + * keyboard.c (adjust_point_for_property): Allow stopping between two invisible areas. 2009-02-12 Jason Rumney diff -r a2c01839283b -r 7e1441b44e84 src/nsfont.m --- a/src/nsfont.m Sat Feb 06 12:50:45 2010 -0500 +++ b/src/nsfont.m Sat Feb 13 08:18:46 2010 -0500 @@ -844,8 +844,10 @@ /* max bounds */ font_info->max_bounds.ascent = lrint (hshrink * [sfont ascender] + expand * hd/2); + /* [sfont descender] is usually negative. Use floor to avoid + clipping descenders. */ font_info->max_bounds.descent = - -lrint (hshrink* [sfont descender] - expand*hd/2); + -lrint (floor(hshrink* [sfont descender] - expand*hd/2)); font_info->height = font_info->max_bounds.ascent + font_info->max_bounds.descent; font_info->max_bounds.width = lrint (font_info->width); @@ -880,8 +882,8 @@ #endif /* set up metrics portion of font struct */ - font->ascent = [sfont ascender]; - font->descent = -[sfont descender]; + font->ascent = lrint([sfont ascender]); + font->descent = -lrint(floor([sfont descender])); font->min_width = ns_char_width(sfont, '|'); font->space_width = lrint (ns_char_width (sfont, ' ')); font->average_width = lrint (font_info->width); diff -r a2c01839283b -r 7e1441b44e84 src/xsmfns.c --- a/src/xsmfns.c Sat Feb 06 12:50:45 2010 -0500 +++ b/src/xsmfns.c Sat Feb 13 08:18:46 2010 -0500 @@ -52,11 +52,11 @@ /* The descriptor that we use to check for data from the session manager. */ -static int ice_fd = -1; +static int ice_fd; /* A flag that says if we are in shutdown interactions or not. */ -static int doing_interact = False; +static int doing_interact; /* The session manager object for the session manager connection. */ @@ -90,6 +90,14 @@ #define NOSPLASH_OPT "--no-splash" +static void +ice_connection_closed () +{ + if (ice_fd >= 0) + delete_keyboard_wait_descriptor (ice_fd); + ice_fd = -1; +} + /* Handle any messages from the session manager. If no connection is open to a session manager, just return 0. @@ -101,9 +109,9 @@ { SELECT_TYPE read_fds; EMACS_TIME tmout; + int ret; if (ice_fd == -1) return 0; - FD_ZERO (&read_fds); FD_SET (ice_fd, &read_fds); @@ -116,26 +124,33 @@ will be called. */ emacs_event.kind = NO_EVENT; - if (select (ice_fd+1, &read_fds, - (SELECT_TYPE *)0, (SELECT_TYPE *)0, &tmout) < 0) + ret = select (ice_fd+1, &read_fds, + (SELECT_TYPE *)0, (SELECT_TYPE *)0, &tmout); + + if (ret < 0) { - ice_fd = -1; - return 0; + ice_connection_closed (); } - + else if (ret > 0 && FD_ISSET (ice_fd, &read_fds)) + { + ret = IceProcessMessages (SmcGetIceConnection (smc_conn), + (IceReplyWaitInfo *)0, (Bool *)0); + if (ret != IceProcessMessagesSuccess) + { + /* Either IO error or Connection closed. */ + if (ret == IceProcessMessagesIOError) + IceCloseConnection (SmcGetIceConnection (smc_conn)); - if (FD_ISSET (ice_fd, &read_fds)) - IceProcessMessages (SmcGetIceConnection (smc_conn), - (IceReplyWaitInfo *)0, (Bool *)0); - + ice_connection_closed (); + } + } /* Check if smc_interact_CB was called and we shall generate a SAVE_SESSION_EVENT. */ - if (emacs_event.kind == NO_EVENT) - return 0; + if (emacs_event.kind != NO_EVENT) + bcopy (&emacs_event, bufp, sizeof (struct input_event)); - bcopy (&emacs_event, bufp, sizeof (struct input_event)); - return 1; + return emacs_event.kind != NO_EVENT ? 1 : 0; } /* Return non-zero if we have a connection to a session manager. */ @@ -284,7 +299,7 @@ SmPointer clientData; { SmcCloseConnection (smcConn, 0, 0); - ice_fd = -1; + ice_connection_closed (); } /* We don't use the next two but they are mandatory, leave them empty. @@ -356,7 +371,7 @@ IceConn iceConn; { /* Connection probably gone. */ - ice_fd = -1; + ice_connection_closed (); } /* This is called when the ICE connection is created or closed. The SM library @@ -371,7 +386,7 @@ { if (! opening) { - ice_fd = -1; + ice_connection_closed (); return; } @@ -384,6 +399,8 @@ if (interrupt_input) init_sigio (ice_fd); #endif /* ! defined (SIGIO) */ + + add_keyboard_wait_descriptor (ice_fd); } /* Create the client leader window. */ @@ -426,6 +443,9 @@ SmcCallbacks callbacks; int name_len = 0; + ice_fd = -1; + doing_interact = False; + /* Check if we where started by the session manager. If so, we will have a previous id. */ if (! EQ (Vx_session_previous_id, Qnil) && STRINGP (Vx_session_previous_id)) @@ -497,7 +517,7 @@ void x_session_close () { - ice_fd = -1; + ice_connection_closed (); } diff -r a2c01839283b -r 7e1441b44e84 src/xterm.c --- a/src/xterm.c Sat Feb 06 12:50:45 2010 -0500 +++ b/src/xterm.c Sat Feb 13 08:18:46 2010 -0500 @@ -7446,6 +7446,11 @@ { x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), x, y, width, height, False); +#ifdef USE_GTK + /* Must queue a redraw, because scroll bars might have been cleared. */ + if (FRAME_GTK_WIDGET (f)) + gtk_widget_queue_draw (FRAME_GTK_WIDGET (f)); +#endif }