Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 101894. ------------------------------------------------------------ revno: 101894 committer: Dan Nicolaescu branch nick: trunk timestamp: Sat 2010-10-09 20:40:58 -0700 message: * lisp/vc/log-view.el (log-view-mode-map): Bind revert-buffer. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-10 01:45:45 +0000 +++ lisp/ChangeLog 2010-10-10 03:40:58 +0000 @@ -1,3 +1,7 @@ +2010-10-10 Dan Nicolaescu + + * vc/log-view.el (log-view-mode-map): Bind revert-buffer. + 2010-10-10 Daiki Ueno * epa.el (epa-passphrase-callback-function): Display filename === modified file 'lisp/vc/log-view.el' --- lisp/vc/log-view.el 2010-06-11 19:09:57 +0000 +++ lisp/vc/log-view.el 2010-10-10 03:40:58 +0000 @@ -128,6 +128,7 @@ (easy-mmode-defmap log-view-mode-map '(("z" . kill-this-buffer) ("q" . quit-window) + ("g" . revert-buffer) ("m" . log-view-toggle-mark-entry) ("e" . log-view-modify-change-comment) ("d" . log-view-diff) ------------------------------------------------------------ revno: 101893 committer: Daiki Ueno branch nick: trunk timestamp: Sun 2010-10-10 10:45:45 +0900 message: Simplify r101871. * epa.el (epa-passphrase-callback-function): Display filename passed as the 3rd arg. * epa-file.el (epa-file-passphrase-callback-function): Pass filename to epa-passphrase-callback-function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 21:54:20 +0000 +++ lisp/ChangeLog 2010-10-10 01:45:45 +0000 @@ -1,3 +1,10 @@ +2010-10-10 Daiki Ueno + + * epa.el (epa-passphrase-callback-function): Display filename + passed as the 3rd arg. + * epa-file.el (epa-file-passphrase-callback-function): Pass + filename to epa-passphrase-callback-function. + 2010-10-09 Chong Yidong * cus-edit.el (custom-face-widget-to-spec) === modified file 'lisp/epa-file.el' --- lisp/epa-file.el 2010-09-13 10:44:07 +0000 +++ lisp/epa-file.el 2010-10-10 01:45:45 +0000 @@ -67,10 +67,11 @@ (cons entry epa-file-passphrase-alist))) (setq passphrase (epa-passphrase-callback-function context - key-id nil)) + key-id + file)) (setcdr entry (copy-sequence passphrase)) passphrase)))) - (epa-passphrase-callback-function context key-id nil))) + (epa-passphrase-callback-function context key-id file))) ;;;###autoload (defun epa-file-handler (operation &rest args) === modified file 'lisp/epa.el' --- lisp/epa.el 2010-10-09 13:27:24 +0000 +++ lisp/epa.el 2010-10-10 01:45:45 +0000 @@ -637,12 +637,10 @@ (if (eq key-id 'SYM) (read-passwd (format "Passphrase for symmetric encryption%s: " - (let ((elem (epg-context-passphrase-callback context))) - ;; Add the file name to the prompt, if any. - (if (and (consp elem) - (stringp (cdr elem))) - (format " for %s" (cdr elem)) - ""))) + ;; Add the file name to the prompt, if any. + (if (stringp handback) + (format " for %s" handback) + "")) (eq (epg-context-operation context) 'encrypt)) (read-passwd (if (eq key-id 'PIN) ------------------------------------------------------------ revno: 101892 author: Gnus developers committer: Katsumi Yamaoka branch nick: trunk timestamp: Sun 2010-10-10 00:15:21 +0000 message: Merge changes made in Gnus trunk. nnimap.el (nnimap-open-connection): If we have gnutls loaded, then try to use that for the tls stream. nnimap.el (nnimap-retrieve-group-data-early): Rework the marks code to heed UIDVALIDITY and find out which groups are read-only and not. nnimap.el (nnimap-get-flags): Use the same marks parsing code as the rest of nnimap. nnimap.el (nnmail-expiry-target-group): Say that every expiry target group is the "last". nnir.el (nnir-engines): Fix too many arguments. nnimap.el: Start implementing QRESYNC support. gnus.el (gnus-group-set-parameter): Fix typo. shr.el: Rework the way things are indented by
  • slightly. spam.el (gnus-summary-mode-map): Bind to "$". diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 21:38:04 +0000 +++ doc/misc/ChangeLog 2010-10-10 00:15:21 +0000 @@ -1,3 +1,7 @@ +2010-10-09 Lars Magne Ingebrigtsen + + * gnus.texi (Spam Package Introduction): Mention `$'. + 2010-10-09 Eli Zaretskii * makefile.w32-in (emacsdir): New variable. === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2010-10-09 04:22:17 +0000 +++ doc/misc/gnus.texi 2010-10-10 00:15:21 +0000 @@ -23750,12 +23750,14 @@ group: @table @kbd -@item M-d +@item $ +@itemx M-d @itemx M s x @itemx S x -@kindex M-d -@kindex S x -@kindex M s x +@kindex $ (Summary) +@kindex M-d (Summary) +@kindex S x (Summary) +@kindex M s x (Summary) @findex gnus-summary-mark-as-spam @findex gnus-summary-mark-as-spam Mark current article as spam, showing it with the @samp{$} mark === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-10-09 09:14:46 +0000 +++ lisp/gnus/ChangeLog 2010-10-10 00:15:21 +0000 @@ -1,3 +1,31 @@ +2010-10-09 Lars Magne Ingebrigtsen + + * spam.el (gnus-summary-mode-map): Bind to "$". Suggested by Russ + Allbery. + + * shr.el: Rework the way things are indented by
  • slightly. + + * gnus.el (gnus-group-set-parameter): Fix typo. + + * nnimap.el: Start implementing QRESYNC support. + +2010-10-09 Julien Danjou + + * nnir.el (nnir-engines): Fix too many arguments. + +2010-10-09 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-expiry-target-group): Say that every expiry target + group is the "last", so that the backends like nnfolder actually save + their folders. + + * nnimap.el (nnimap-open-connection): If we have gnutls loaded, then + try to use that for the tls stream. + (nnimap-retrieve-group-data-early): Rework the marks code to heed + UIDVALIDITY and find out which groups are read-only and not. + (nnimap-get-flags): Use the same marks parsing code as the rest of + nnimap. + 2010-10-09 Julien Danjou * nnir.el (nnir-read-parm): Fix call to gnus-completing-read. === modified file 'lisp/gnus/gnus.el' --- lisp/gnus/gnus.el 2010-10-08 23:55:33 +0000 +++ lisp/gnus/gnus.el 2010-10-10 00:15:21 +0000 @@ -3391,14 +3391,14 @@ (defun gnus-news-group-p (group &optional article) "Return non-nil if GROUP (and ARTICLE) come from a news server." (cond ((gnus-member-of-valid 'post group) ;Ordinary news group - t) ;is news of course. + t) ;is news of course. ((not (gnus-member-of-valid 'post-mail group)) ;Non-combined. nil) ;must be mail then. ((vectorp article) ;Has header info. (eq (gnus-request-type group (mail-header-id article)) 'news)) - ((null article) ;Hasn't header info + ((null article) ;Hasn't header info (eq (gnus-request-type group) 'news)) ;(unknown ==> mail) - ((< article 0) ;Virtual message + ((< article 0) ;Virtual message nil) ;we don't know, guess mail. (t ;Has positive number (eq (gnus-request-type group article) 'news)))) ;use it. @@ -3923,8 +3923,11 @@ group 'params)))) (defun gnus-group-set-parameter (group name value) - "Set parameter NAME to VALUE in GROUP." - (let ((info (gnus-get-info group))) + "Set parameter NAME to VALUE in GROUP. +GROUP can also be an INFO structure." + (let ((info (if (listp group) + group + (gnus-get-info group)))) (when info (gnus-group-remove-parameter group name) (let ((old-params (gnus-info-params info)) @@ -3934,11 +3937,14 @@ (not (eq (caar old-params) name))) (setq new-params (append new-params (list (car old-params))))) (setq old-params (cdr old-params))) - (gnus-group-set-info new-params group 'params))))) + (gnus-group-set-info new-params (gnus-info-group info) 'params))))) (defun gnus-group-remove-parameter (group name) - "Remove parameter NAME from GROUP." - (let ((info (gnus-get-info group))) + "Remove parameter NAME from GROUP. +GROUP can also be an INFO structure." + (let ((info (if (listp group) + group + (gnus-get-info group)))) (when info (let ((params (gnus-info-params info))) (when params === modified file 'lisp/gnus/nnimap.el' --- lisp/gnus/nnimap.el 2010-10-07 22:26:11 +0000 +++ lisp/gnus/nnimap.el 2010-10-10 00:15:21 +0000 @@ -317,8 +317,7 @@ 'starttls)) '("imap")) ((memq nnimap-stream '(ssl tls)) - (funcall (if (and nil - (fboundp 'open-gnutls-stream)) + (funcall (if (fboundp 'open-gnutls-stream) 'open-gnutls-stream 'open-tls-stream) "*nnimap*" (current-buffer) nnimap-address @@ -338,7 +337,8 @@ '(open run)))) (nnheader-report 'nnimap "Unable to contact %s:%s via %s" nnimap-address port nnimap-stream) - (gnus-set-process-query-on-exit-flag (nnimap-process nnimap-object) nil) + (gnus-set-process-query-on-exit-flag + (nnimap-process nnimap-object) nil) (if (not (setq connection-result (nnimap-wait-for-connection))) (nnheader-report 'nnimap "%s" (buffer-substring @@ -626,8 +626,10 @@ (setq marks (nnimap-flags-to-marks (nnimap-parse-flags - (list (list group-sequence flag-sequence 1 group))))) - (when info + (list (list group-sequence flag-sequence + 1 group "SELECT"))))) + (when (and info + marks) (nnimap-update-infos marks (list info))) (goto-char (point-max)) (let ((uidnext (nth 5 (car marks)))) @@ -655,7 +657,8 @@ (deffoo nnimap-request-rename-group (group new-name &optional server) (when (nnimap-possibly-change-group nil server) (with-current-buffer (nnimap-buffer) - (car (nnimap-command "RENAME %S %S" (utf7-encode group t) (utf7-encode new-name t)))))) + (car (nnimap-command "RENAME %S %S" + (utf7-encode group t) (utf7-encode new-name t)))))) (deffoo nnimap-request-expunge-group (group &optional server) (when (nnimap-possibly-change-group group server) @@ -664,16 +667,19 @@ (defun nnimap-get-flags (spec) (let ((articles nil) - elems) + elems end) (with-current-buffer (nnimap-buffer) (erase-buffer) (nnimap-wait-for-response (nnimap-send-command "UID FETCH %s FLAGS" spec)) + (setq end (point)) + (subst-char-in-region (point-min) (point-max) + ?\\ ?% t) (goto-char (point-min)) - (while (re-search-forward "^\\* [0-9]+ FETCH (\\(.*\\))" nil t) - (setq elems (nnimap-parse-line (match-string 1))) - (push (cons (string-to-number (cadr (member "UID" elems))) - (cadr (member "FLAGS" elems))) + (while (search-forward " FETCH " end t) + (setq elems (read (current-buffer))) + (push (cons (cadr (memq 'UID elems)) + (cadr (memq 'FLAGS elems))) articles))) (nreverse articles))) @@ -940,41 +946,45 @@ (deffoo nnimap-retrieve-group-data-early (server infos) (when (nnimap-possibly-change-group nil server) (with-current-buffer (nnimap-buffer) + (erase-buffer) + (setf (nnimap-group nnimap-object) nil) ;; QRESYNC handling isn't implemented. (let ((qresyncp (member "notQRESYNC" (nnimap-capabilities nnimap-object))) - marks groups sequences) + params groups sequences active uidvalidity modseq group) ;; Go through the infos and gather the data needed to know ;; what and how to request the data. (dolist (info infos) - (setq marks (gnus-info-marks info)) - (push (list (gnus-group-real-name (gnus-info-group info)) - (cdr (assq 'active marks)) - (cdr (assq 'uid marks))) - groups)) - ;; Then request the data. - (erase-buffer) - (setf (nnimap-group nnimap-object) nil) - (dolist (elem groups) + (setq params (gnus-info-params info) + group (gnus-group-real-name (gnus-info-group info)) + active (cdr (assq 'active params)) + uidvalidity (cdr (assq 'uidvalidity params)) + modseq (cdr (assq 'modseq params))) (if (and qresyncp - (nth 2 elem)) + uidvalidity + modseq) (push - (list 'qresync - (nnimap-send-command "EXAMINE %S (QRESYNC (%s %s))" - (car elem) - (car (nth 2 elem)) - (cdr (nth 2 elem))) - nil - (car elem)) + (list (nnimap-send-command "EXAMINE %S (QRESYNC (%s %s))" + group uidvalidity modseq) + 'qresync + nil group 'qresync) sequences) (let ((start - (if (nth 1 elem) + (if (and active uidvalidity) ;; Fetch the last 100 flags. - (max 1 (- (cdr (nth 1 elem)) 100)) - 1))) - (push (list (nnimap-send-command "EXAMINE %S" (car elem)) + (max 1 (- (cdr active) 100)) + 1)) + (command + (if uidvalidity + "EXAMINE" + ;; If we don't have a UIDVALIDITY, then this is + ;; the first time we've seen the group, so we + ;; have to do a SELECT (which is slower than an + ;; examine), but will tell us whether the group + ;; is read-only or not. + "SELECT"))) + (push (list (nnimap-send-command "%s %S" command group) (nnimap-send-command "UID FETCH %d:* FLAGS" start) - start - (car elem)) + start group command) sequences))) ;; Some servers apparently can't have many outstanding ;; commands, so throttle them. @@ -988,10 +998,13 @@ (nnimap-possibly-change-group nil server)) (with-current-buffer (nnimap-buffer) ;; Wait for the final data to trickle in. - (when (nnimap-wait-for-response (cadar sequences) t) - ;; Now we should have all the data we need, no matter whether - ;; we're QRESYNCING, fetching all the flags from scratch, or - ;; just fetching the last 100 flags per group. + (when (nnimap-wait-for-response (if (eq (cadar sequences) 'qresync) + (caar sequences) + (cadar sequences)) + t) + ;; Now we should have most of the data we need, no matter + ;; whether we're QRESYNCING, fetching all the flags from + ;; scratch, or just fetching the last 100 flags per group. (nnimap-update-infos (nnimap-flags-to-marks (nnimap-parse-flags (nreverse sequences))) @@ -1011,17 +1024,33 @@ (defun nnimap-update-infos (flags infos) (dolist (info infos) - (let ((group (gnus-group-real-name (gnus-info-group info)))) - (nnimap-update-info info (cdr (assoc group flags)))))) + (let* ((group (gnus-group-real-name (gnus-info-group info))) + (marks (cdr (assoc group flags)))) + (when marks + (nnimap-update-info info marks))))) (defun nnimap-update-info (info marks) - (when (and marks - ;; Ignore groups with no UIDNEXT/marks. This happens for - ;; completely empty groups. - (or (car marks) - (nth 4 marks))) - (destructuring-bind (existing flags high low uidnext start-article - permanent-flags) marks + (destructuring-bind (existing flags high low uidnext start-article + permanent-flags uidvalidity + vanished highestmodseq) marks + (cond + ;; Ignore groups with no UIDNEXT/marks. This happens for + ;; completely empty groups. + ((and (not existing) + (not uidnext)) + ) + ;; We have a mismatch between the old and new UIDVALIDITY + ;; identifiers, so we have to re-request the group info (the next + ;; time). This virtually never happens. + ((let ((old-uidvalidity + (cdr (assq 'uidvalidity (gnus-info-params info))))) + (and old-uidvalidity + (not (equal old-uidvalidity uidvalidity)) + (> start-article 1))) + (gnus-group-remove-parameter info 'uidvalidity) + (gnus-group-remove-parameter info 'modseq)) + ;; We have the data needed to update. + (t (let ((group (gnus-info-group info)) (completep (and start-article (= start-article 1)))) @@ -1046,52 +1075,89 @@ group (cons (car (gnus-active group)) (or high (1- uidnext))))) - ;; Then update the list of read articles. - (let* ((unread - (gnus-compress-sequence - (gnus-set-difference - (gnus-set-difference - existing - (cdr (assoc '%Seen flags))) - (cdr (assoc '%Flagged flags))))) - (read (gnus-range-difference - (cons start-article high) unread))) - (when (> start-article 1) - (setq read - (gnus-range-nconcat - (if (> start-article 1) - (gnus-sorted-range-intersection - (cons 1 (1- start-article)) - (gnus-info-read info)) - (gnus-info-read info)) - read))) - (gnus-info-set-read info read) - ;; Update the marks. - (setq marks (gnus-info-marks info)) - ;; Note the active level for the next run-through. - (let ((active (assq 'active marks))) - (if active - (setcdr active (gnus-active group)) - (push (cons 'active (gnus-active group)) marks))) - (dolist (type (cdr nnimap-mark-alist)) - (let ((old-marks (assoc (car type) marks)) - (new-marks - (gnus-compress-sequence - (cdr (or (assoc (caddr type) flags) ; %Flagged - (assoc (intern (cadr type) obarray) flags) - (assoc (cadr type) flags)))))) ; "\Flagged" - (setq marks (delq old-marks marks)) - (pop old-marks) - (when (and old-marks - (> start-article 1)) - (setq old-marks (gnus-range-difference - old-marks - (cons start-article high))) - (setq new-marks (gnus-range-nconcat old-marks new-marks))) - (when new-marks - (push (cons (car type) new-marks) marks))) - (gnus-info-set-marks info marks t) - (nnimap-store-info info (gnus-active group)))))))) + ;; See whether this is a read-only group. + (unless (eq permanent-flags 'not-scanned) + (gnus-group-set-parameter + info 'permanent-flags + (if (memq '%* permanent-flags) + t + nil))) + ;; Update marks and read articles if this isn't a + ;; read-only IMAP group. + (when (cdr (assq 'permanent-flags (gnus-info-params info))) + (if (and highestmodseq + (not start-article)) + ;; We've gotten the data by QRESYNCing. + (nnimap-update-qresync-info + info (nnimap-imap-ranges-to-gnus-ranges vanished) flags) + ;; Do normal non-QRESYNC flag updates. + ;; Update the list of read articles. + (let* ((unread + (gnus-compress-sequence + (gnus-set-difference + (gnus-set-difference + existing + (cdr (assoc '%Seen flags))) + (cdr (assoc '%Flagged flags))))) + (read (gnus-range-difference + (cons start-article high) unread))) + (when (> start-article 1) + (setq read + (gnus-range-nconcat + (if (> start-article 1) + (gnus-sorted-range-intersection + (cons 1 (1- start-article)) + (gnus-info-read info)) + (gnus-info-read info)) + read))) + (gnus-info-set-read info read) + ;; Update the marks. + (setq marks (gnus-info-marks info)) + (dolist (type (cdr nnimap-mark-alist)) + (let ((old-marks (assoc (car type) marks)) + (new-marks + (gnus-compress-sequence + (cdr (or (assoc (caddr type) flags) ; %Flagged + (assoc (intern (cadr type) obarray) flags) + (assoc (cadr type) flags)))))) ; "\Flagged" + (setq marks (delq old-marks marks)) + (pop old-marks) + (when (and old-marks + (> start-article 1)) + (setq old-marks (gnus-range-difference + old-marks + (cons start-article high))) + (setq new-marks (gnus-range-nconcat old-marks new-marks))) + (when new-marks + (push (cons (car type) new-marks) marks))) + (gnus-info-set-marks info marks t))))) + ;; Note the active level for the next run-through. + (gnus-group-set-parameter info 'active (gnus-active group)) + (gnus-group-set-parameter info 'uidvalidity uidvalidity) + (gnus-group-set-parameter info 'modseq highestmodseq) + (nnimap-store-info info (gnus-active group))))))) + +(defun nnimap-update-qresync-info (info vanished flags) + ;; Add all the vanished articles to the list of read articles. + (gnus-info-set-read + info + (gnus-range-add (gnus-info-read info) + vanished)) + ) + +(defun nnimap-imap-ranges-to-gnus-ranges (irange) + (if (zerop (length irange)) + nil + (let ((result nil)) + (dolist (elem (split-string irange ",")) + (push + (if (string-match ":" elem) + (let ((numbers (split-string elem ":"))) + (cons (string-to-number (car numbers)) + (string-to-number (cadr numbers)))) + (string-to-number elem)) + result)) + (nreverse result)))) (defun nnimap-store-info (info active) (let* ((group (gnus-group-real-name (gnus-info-group info))) @@ -1101,13 +1167,17 @@ (push (list group info active) nnimap-current-infos)))) (defun nnimap-flags-to-marks (groups) - (let (data group totalp uidnext articles start-article mark permanent-flags) + (let (data group totalp uidnext articles start-article mark permanent-flags + uidvalidity vanished highestmodseq) (dolist (elem groups) (setq group (car elem) uidnext (nth 1 elem) start-article (nth 2 elem) permanent-flags (nth 3 elem) - articles (nthcdr 4 elem)) + uidvalidity (nth 4 elem) + vanished (nth 5 elem) + highestmodseq (nth 6 elem) + articles (nthcdr 7 elem)) (let ((high (caar articles)) marks low existing) (dolist (article articles) @@ -1119,7 +1189,7 @@ (push (list flag (car article)) marks) (setcdr mark (cons (car article) (cdr mark)))))) (push (list group existing marks high low uidnext start-article - permanent-flags) + permanent-flags uidvalidity vanished highestmodseq) data))) data)) @@ -1128,38 +1198,69 @@ ;; Change \Delete etc to %Delete, so that the reader can read it. (subst-char-in-region (point-min) (point-max) ?\\ ?% t) - (let (start end articles groups uidnext elems permanent-flags) + (let (start end articles groups uidnext elems permanent-flags + uidvalidity vanished highestmodseq) (dolist (elem sequences) - (destructuring-bind (group-sequence flag-sequence totalp group) elem + (destructuring-bind (group-sequence flag-sequence totalp group command) + elem (setq start (point)) - ;; The EXAMINE was successful. - (when (and (search-forward (format "\n%d OK " group-sequence) nil t) - (progn - (forward-line 1) - (setq end (point)) - (goto-char start) - (setq permanent-flags + (when (and + ;; The EXAMINE was successful. + (search-forward (format "\n%d OK " group-sequence) nil t) + (progn + (forward-line 1) + (setq end (point)) + (goto-char start) + (setq permanent-flags + (if (equal command "SELECT") (and (search-forward "PERMANENTFLAGS " - (or end (point-min)) t) - (read (current-buffer)))) - (goto-char start) - (setq uidnext - (and (search-forward "UIDNEXT " - (or end (point-min)) t) - (read (current-buffer)))) - (goto-char end) - (forward-line -1)) - ;; The UID FETCH FLAGS was successful. - (search-forward (format "\n%d OK " flag-sequence) nil t)) - (setq start (point)) - (goto-char end) + (or end (point-min)) t) + (read (current-buffer))) + 'not-scanned)) + (goto-char start) + (setq uidnext + (and (search-forward "UIDNEXT " + (or end (point-min)) t) + (read (current-buffer)))) + (goto-char start) + (setq uidvalidity + (and (re-search-forward "UIDVALIDITY \\([0-9]+\\)" + (or end (point-min)) t) + ;; Store UIDVALIDITY as a string, as it's + ;; too big for 32-bit Emacsen, usually. + (match-string 1))) + (goto-char start) + (setq vanished + (and (eq flag-sequence 'qresync) + (re-search-forward "VANISHED.* \\([0-9:,]+\\)" + (or end (point-min)) t) + (match-string 1))) + (goto-char start) + (setq highestmodseq + (and (search-forward "HIGHESTMODSEQ " + (or end (point-min)) t) + (read (current-buffer)))) + (goto-char end) + (forward-line -1)) + ;; The UID FETCH FLAGS was successful. + (or (eq flag-sequence 'qresync) + (search-forward (format "\n%d OK " flag-sequence) nil t))) + (if (eq flag-sequence 'qresync) + (progn + (goto-char start) + (setq start end)) + (setq start (point)) + (goto-char end)) (while (search-forward " FETCH " start t) (setq elems (read (current-buffer))) (push (cons (cadr (memq 'UID elems)) (cadr (memq 'FLAGS elems))) articles)) - (push (nconc (list group uidnext totalp permanent-flags) articles) + (push (nconc (list group uidnext totalp permanent-flags uidvalidity + vanished highestmodseq) + articles) groups) + (goto-char end) (setq articles nil)))) groups)) @@ -1293,13 +1394,15 @@ (push (cond ((eql char ?\[) - (split-string (buffer-substring - (1+ (point)) - (1- (search-forward "]" (line-end-position) 'move))))) + (split-string + (buffer-substring + (1+ (point)) + (1- (search-forward "]" (line-end-position) 'move))))) ((eql char ?\() - (split-string (buffer-substring - (1+ (point)) - (1- (search-forward ")" (line-end-position) 'move))))) + (split-string + (buffer-substring + (1+ (point)) + (1- (search-forward ")" (line-end-position) 'move))))) ((eql char ?\") (forward-char 1) (buffer-substring === modified file 'lisp/gnus/nnir.el' --- lisp/gnus/nnir.el 2010-10-09 09:14:46 +0000 +++ lisp/gnus/nnir.el 2010-10-10 00:15:21 +0000 @@ -377,7 +377,6 @@ ((criteria "Search in: " ; Prompt ,(mapcar 'car nnir-imap-search-arguments) ; alist for completing - nil ; no filtering nil ; allow any user input nil ; initial value nnir-imap-search-argument-history ; the history to use === modified file 'lisp/gnus/nnmail.el' --- lisp/gnus/nnmail.el 2010-10-01 23:08:25 +0000 +++ lisp/gnus/nnmail.el 2010-10-10 00:15:21 +0000 @@ -1914,7 +1914,7 @@ (unless (eq target 'delete) (when (or (gnus-request-group target) (gnus-request-create-group target)) - (let ((group-art (gnus-request-accept-article target nil nil t))) + (let ((group-art (gnus-request-accept-article target nil t t))) (when (consp group-art) (gnus-group-mark-article-read target (cdr group-art)))))))) === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2010-10-09 08:44:12 +0000 +++ lisp/gnus/shr.el 2010-10-10 00:15:21 +0000 @@ -230,7 +230,7 @@ (defun shr-ensure-paragraph () (unless (bobp) - (if (bolp) + (if (<= (current-column) shr-indentation) (unless (save-excursion (forward-line -1) (looking-at " *$")) @@ -242,7 +242,8 @@ (insert "\n\n"))))) (defun shr-indent () - (insert (make-string shr-indentation ? ))) + (when (> shr-indentation 0) + (insert (make-string shr-indentation ? )))) (defun shr-fontize-cont (cont &rest types) (let (shr-start) @@ -332,6 +333,7 @@ (defun shr-tag-p (cont) (shr-ensure-paragraph) + (shr-indent) (shr-generic cont) (shr-ensure-paragraph)) @@ -404,11 +406,13 @@ (defun shr-tag-pre (cont) (let ((shr-folding-mode 'none)) (shr-ensure-newline) + (shr-indent) (shr-generic cont) (shr-ensure-newline))) (defun shr-tag-blockquote (cont) (shr-ensure-paragraph) + (shr-indent) (let ((shr-indentation (+ shr-indentation 4))) (shr-generic cont)) (shr-ensure-paragraph)) @@ -426,7 +430,8 @@ (shr-ensure-paragraph)) (defun shr-tag-li (cont) - (shr-ensure-newline) + (shr-ensure-paragraph) + (shr-indent) (let* ((bullet (if (numberp shr-list-mode) (prog1 @@ -439,7 +444,8 @@ (defun shr-tag-br (cont) (unless (bobp) - (insert "\n")) + (insert "\n") + (shr-indent)) (shr-generic cont)) (defun shr-tag-h1 (cont) === modified file 'lisp/gnus/spam.el' --- lisp/gnus/spam.el 2010-09-18 10:02:19 +0000 +++ lisp/gnus/spam.el 2010-10-10 00:15:21 +0000 @@ -689,7 +689,8 @@ "Sx" gnus-summary-mark-as-spam "Mst" spam-generic-score "Msx" gnus-summary-mark-as-spam - "\M-d" gnus-summary-mark-as-spam) + "\M-d" gnus-summary-mark-as-spam + "$" gnus-summary-mark-as-spam) (defvar spam-cache-lookups t "Whether spam.el will try to cache lookups using `spam-caches'.") ------------------------------------------------------------ revno: 101891 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 15:40:30 -0700 message: * doc/misc/Makefile.in: Missed a few spots in the earlier $< change. diff: === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 21:19:09 +0000 +++ doc/misc/Makefile.in 2010-10-09 22:40:30 +0000 @@ -314,11 +314,11 @@ ediff : $(infodir)/ediff $(infodir)/ediff: ediff.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) ediff.texi -ediff.dvi: ediff.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi -ediff.pdf: ediff.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi + cd $(srcdir); $(MAKEINFO) $< +ediff.dvi: ${srcdir}/ediff.texi + $(ENVADD) $(TEXI2DVI) $< +ediff.pdf: ${srcdir}/ediff.texi + $(ENVADD) $(TEXI2PDF) $< edt : $(infodir)/edt $(infodir)/edt: edt.texi @@ -350,11 +350,11 @@ epa : $(infodir)/epa $(infodir)/epa: epa.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) epa.texi -epa.dvi: epa.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi -epa.pdf: epa.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi + cd $(srcdir); $(MAKEINFO) $< +epa.dvi: ${srcdir}/epa.texi + $(ENVADD) $(TEXI2DVI) $< +epa.pdf: ${srcdir}/epa.texi + $(ENVADD) $(TEXI2PDF) $< erc : $(infodir)/erc $(infodir)/erc: erc.texi ------------------------------------------------------------ revno: 101890 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-10-09 17:54:20 -0400 message: Interface improvements to cus-theme.el. * cus-edit.el (custom-face-widget-to-spec) (custom-face-get-current-spec, custom-face-state): New functions. (custom-face-set, custom-face-mark-to-save) (custom-face-value-create, custom-face-state-set): Use them. * cus-theme.el (custom-theme--listed-faces): New var. (customize-create-theme): Use *Custom Theme* as the buffer name. Set revert-buffer-function. Optional arg BUFFER. Insert all faces listed in custom-theme--listed-faces. (custom-theme-revert): New function. (custom-theme-add-variable, custom-theme-add-face): Insert at the bottom of the list. (custom-theme-write): Prompt for theme name if empty. (custom-theme-write-variables): Use dolist. (custom-theme-write-faces): Handle hidden (collapsed) widgets. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 19:58:28 +0000 +++ lisp/ChangeLog 2010-10-09 21:54:20 +0000 @@ -1,3 +1,21 @@ +2010-10-09 Chong Yidong + + * cus-edit.el (custom-face-widget-to-spec) + (custom-face-get-current-spec, custom-face-state): New functions. + (custom-face-set, custom-face-mark-to-save) + (custom-face-value-create, custom-face-state-set): Use them. + + * cus-theme.el (custom-theme--listed-faces): New var. + (customize-create-theme): Use *Custom Theme* as the buffer name. + Set revert-buffer-function. Optional arg BUFFER. Insert all + faces listed in custom-theme--listed-faces. + (custom-theme-revert): New function. + (custom-theme-add-variable, custom-theme-add-face): Insert at the + bottom of the list. + (custom-theme-write): Prompt for theme name if empty. + (custom-theme-write-variables): Use dolist. + (custom-theme-write-faces): Handle hidden (collapsed) widgets. + 2010-10-09 Alan Mackenzie Enhance fontification of declarators to take account of the === modified file 'lisp/cus-edit.el' --- lisp/cus-edit.el 2010-10-09 03:23:38 +0000 +++ lisp/cus-edit.el 2010-10-09 21:54:20 +0000 @@ -3379,6 +3379,30 @@ "Return the customized SPEC in a form suitable for setting the face." (custom-filter-face-spec spec 3)) +(defun custom-face-widget-to-spec (widget) + "Return a face spec corresponding to WIDGET. +WIDGET should be a `custom-face' widget." + (unless (eq (widget-type widget) 'custom-face) + (error "Invalid widget")) + (let ((child (car (widget-get widget :children)))) + (custom-post-filter-face-spec + (if (eq (widget-type child) 'custom-face-edit) + `((t ,(widget-value child))) + (widget-value child))))) + +(defun custom-face-get-current-spec (face) + (let ((spec (or (get face 'customized-face) + (get face 'saved-face) + (get face 'face-defface-spec) + ;; Attempt to construct it. + `((t ,(custom-face-attributes-get + face (selected-frame))))))) + ;; If the user has changed this face in some other way, + ;; edit it as the user has specified it. + (if (not (face-spec-match-p face spec (selected-frame))) + (setq spec `((t ,(face-attr-construct face (selected-frame)))))) + (custom-pre-filter-face-spec spec))) + (defun custom-face-value-create (widget) "Create a list of the display specifications for WIDGET." (let* ((buttons (widget-get widget :buttons)) @@ -3464,21 +3488,10 @@ (unless (widget-get widget :custom-form) (widget-put widget :custom-form custom-face-default-form)) - (let* ((spec (or (get symbol 'customized-face) - (get symbol 'saved-face) - (get symbol 'face-defface-spec) - ;; Attempt to construct it. - (list (list t (custom-face-attributes-get - symbol (selected-frame)))))) + (let* ((spec (custom-face-get-current-spec symbol)) (form (widget-get widget :custom-form)) (indent (widget-get widget :indent)) face-alist face-entry spec-default spec-match editor) - ;; If the user has changed this face in some other way, - ;; edit it as the user has specified it. - (if (not (face-spec-match-p symbol spec (selected-frame))) - (setq spec `((t ,(face-attr-construct symbol - (selected-frame)))))) - (setq spec (custom-pre-filter-face-spec spec)) ;; Find a display in SPEC matching the selected display. ;; This will use the usual face customization interface. @@ -3570,43 +3583,43 @@ (widget-put widget :custom-form 'lisp) (custom-redraw widget)) +(defun custom-face-state (face) + "Return the current state of the face FACE. +This is one of `set', `saved', `changed', `themed', or `rogue'." + (let* ((comment (get face 'face-comment)) + (state + (cond + ((or (get face 'customized-face) + (get face 'customized-face-comment)) + (if (equal (get face 'customized-face-comment) comment) + 'set + 'changed)) + ((or (get face 'saved-face) + (get face 'saved-face-comment)) + (if (equal (get face 'saved-face-comment) comment) + (cond + ((eq 'user (caar (get face 'theme-face))) + 'saved) + ((eq 'changed (caar (get face 'theme-face))) + 'changed) + (t 'themed)) + 'changed)) + ((get face 'face-defface-spec) + (if (equal comment nil) + 'standard + 'changed)) + (t 'rogue)))) + ;; If the user called set-face-attribute to change the default for + ;; new frames, this face is "set outside of Customize". + (if (and (not (eq state 'rogue)) + (get face 'face-modified)) + 'changed + state))) + (defun custom-face-state-set (widget) "Set the state of WIDGET." - (let* ((symbol (widget-value widget)) - (comment (get symbol 'face-comment)) - tmp temp - (state - (cond ((progn - (setq tmp (get symbol 'customized-face)) - (setq temp (get symbol 'customized-face-comment)) - (or tmp temp)) - (if (equal temp comment) - 'set - 'changed)) - ((progn - (setq tmp (get symbol 'saved-face)) - (setq temp (get symbol 'saved-face-comment)) - (or tmp temp)) - (if (equal temp comment) - (cond - ((eq 'user (caar (get symbol 'theme-face))) - 'saved) - ((eq 'changed (caar (get symbol 'theme-face))) - 'changed) - (t 'themed)) - 'changed)) - ((get symbol 'face-defface-spec) - (if (equal comment nil) - 'standard - 'changed)) - (t - 'rogue)))) - ;; If the user called set-face-attribute to change the default - ;; for new frames, this face is "set outside of Customize". - (if (and (not (eq state 'rogue)) - (get symbol 'face-modified)) - (setq state 'changed)) - (widget-put widget :custom-state state))) + (widget-put widget :custom-state + (custom-face-state (widget-value widget)))) (defun custom-face-action (widget &optional event) "Show the menu for `custom-face' WIDGET. @@ -3626,11 +3639,7 @@ (defun custom-face-set (widget) "Make the face attributes in WIDGET take effect." (let* ((symbol (widget-value widget)) - (child (car (widget-get widget :children))) - (value (custom-post-filter-face-spec - (if (eq (widget-type child) 'custom-face-edit) - `((t ,(widget-value child))) - (widget-value child)))) + (value (custom-face-widget-to-spec widget)) (comment-widget (widget-get widget :comment-widget)) (comment (widget-value comment-widget))) (when (equal comment "") @@ -3652,11 +3661,7 @@ (defun custom-face-mark-to-save (widget) "Mark for saving the face edited by WIDGET." (let* ((symbol (widget-value widget)) - (child (car (widget-get widget :children))) - (value (custom-post-filter-face-spec - (if (eq (widget-type child) 'custom-face-edit) - `((t ,(widget-value child))) - (widget-value child)))) + (value (custom-face-widget-to-spec widget)) (comment-widget (widget-get widget :comment-widget)) (comment (widget-value comment-widget))) (when (equal comment "") === modified file 'lisp/cus-theme.el' --- lisp/cus-theme.el 2010-08-29 16:17:13 +0000 +++ lisp/cus-theme.el 2010-10-09 21:54:20 +0000 @@ -50,6 +50,7 @@ (set (make-local-variable 'widget-button-face) custom-button) (set (make-local-variable 'widget-button-pressed-face) custom-button-pressed) (set (make-local-variable 'widget-mouse-face) custom-button-mouse) + (set (make-local-variable 'revert-buffer-function) 'custom-theme-revert) (when custom-raised-buttons (set (make-local-variable 'widget-push-button-prefix) "") (set (make-local-variable 'widget-push-button-suffix) "") @@ -60,95 +61,118 @@ (defvar custom-theme-name nil) (defvar custom-theme-variables nil) (defvar custom-theme-faces nil) -(defvar custom-theme-description) -(defvar custom-theme-insert-variable-marker) -(defvar custom-theme-insert-face-marker) +(defvar custom-theme-description nil) +(defvar custom-theme-insert-variable-marker nil) +(defvar custom-theme-insert-face-marker nil) + +(defvar custom-theme--listed-faces '(default fixed-pitch + variable-pitch escape-glyph minibuffer-prompt highlight region + shadow secondary-selection trailing-whitespace + font-lock-builtin-face font-lock-comment-delimiter-face + font-lock-comment-face font-lock-constant-face + font-lock-doc-face font-lock-function-name-face + font-lock-keyword-face font-lock-negation-char-face + font-lock-preprocessor-face font-lock-regexp-grouping-backslash + font-lock-regexp-grouping-construct font-lock-string-face + font-lock-type-face font-lock-variable-name-face + font-lock-warning-face button link link-visited fringe + header-line tooltip mode-line mode-line-buffer-id + mode-line-emphasis mode-line-highlight mode-line-inactive + isearch isearch-fail lazy-highlight match next-error + query-replace) + "Faces listed by default in the *Custom Theme* buffer.") ;;;###autoload -(defun customize-create-theme () - "Create a custom theme." +(defun customize-create-theme (&optional buffer) + "Create a custom theme. +BUFFER, if non-nil, should be a buffer to use." (interactive) - (switch-to-buffer (generate-new-buffer "*New Custom Theme*")) + (switch-to-buffer (or buffer (generate-new-buffer "*Custom Theme*"))) + ;; Save current faces (let ((inhibit-read-only t)) (erase-buffer)) (custom-new-theme-mode) (make-local-variable 'custom-theme-name) - (make-local-variable 'custom-theme-variables) - (make-local-variable 'custom-theme-faces) - (make-local-variable 'custom-theme-description) + (set (make-local-variable 'custom-theme-faces) nil) + (set (make-local-variable 'custom-theme-variables) nil) + (set (make-local-variable 'custom-theme-description) "") + (make-local-variable 'custom-theme-insert-face-marker) (make-local-variable 'custom-theme-insert-variable-marker) - (make-local-variable 'custom-theme-insert-face-marker) - (widget-insert "This buffer helps you write a custom theme elisp file. -This will help you share your customizations with other people. + (make-local-variable 'custom-theme--listed-faces) -Insert the names of all variables and faces you want the theme to include. -Invoke \"Save Theme\" to save the theme. The theme file will be saved to -the directory " custom-theme-directory "\n\n") (widget-create 'push-button - :tag "Visit Theme" + :tag " Visit Theme " :help-echo "Insert the settings of a pre-defined theme." :action (lambda (widget &optional event) (call-interactively 'custom-theme-visit-theme))) (widget-insert " ") (widget-create 'push-button - :tag "Merge Theme" + :tag " Merge Theme " :help-echo "Merge in the settings of a pre-defined theme." :action (lambda (widget &optional event) (call-interactively 'custom-theme-merge-theme))) (widget-insert " ") - (widget-create 'push-button - :notify (lambda (&rest ignore) - (when (y-or-n-p "Discard current changes? ") - (kill-buffer (current-buffer)) - (customize-create-theme))) - "Reset Buffer") - (widget-insert " ") - (widget-create 'push-button - :notify (function custom-theme-write) - "Save Theme") - (widget-insert "\n") + (widget-create 'push-button :notify 'revert-buffer " Revert ") - (widget-insert "\n\nTheme name: ") + (widget-insert "\n\nTheme name : ") (setq custom-theme-name - (widget-create 'editable-field - :size 10 - user-login-name)) - (widget-insert "\n\nDocumentation:\n") + (widget-create 'editable-field)) + (widget-insert "Description: ") (setq custom-theme-description (widget-create 'text :value (format-time-string "Created %Y-%m-%d."))) - (widget-insert "\n") + (widget-insert " ") + (widget-create 'push-button + :notify (function custom-theme-write) + " Save Theme ") + ;; Face widgets + (widget-insert "\n\n Theme faces:\n") + (let (widget) + (dolist (face custom-theme--listed-faces) + (widget-insert " ") + (setq widget (widget-create 'custom-face + :documentation-shown t + :tag (custom-unlispify-tag-name face) + :value face + :display-style 'concise + :custom-state 'hidden + :sample-indent 34)) + (custom-magic-reset widget) + (push (cons face widget) custom-theme-faces))) + (insert " ") + (setq custom-theme-insert-face-marker (point-marker)) + (insert " ") + (widget-create 'push-button + :tag "Insert Additional Face" + :help-echo "Add another face to this theme." + :follow-link 'mouse-face + :button-face 'custom-link + :mouse-face 'highlight + :pressed-face 'highlight + :action (lambda (widget &optional event) + (call-interactively 'custom-theme-add-face))) + (widget-insert "\n\n Theme variables:\n ") + (setq custom-theme-insert-variable-marker (point-marker)) + (widget-insert ?\s) (widget-create 'push-button :tag "Insert Variable" :help-echo "Add another variable to this theme." + :follow-link 'mouse-face + :button-face 'custom-link + :mouse-face 'highlight + :pressed-face 'highlight :action (lambda (widget &optional event) (call-interactively 'custom-theme-add-variable))) - (widget-insert "\n") - (setq custom-theme-insert-variable-marker (point-marker)) - (widget-insert "\n") - (widget-create 'push-button - :tag "Insert Face" - :help-echo "Add another face to this theme." - :action (lambda (widget &optional event) - (call-interactively 'custom-theme-add-face))) - (widget-insert "\n") - (setq custom-theme-insert-face-marker (point-marker)) - (widget-insert "\n") - (widget-create 'push-button - :notify (lambda (&rest ignore) - (when (y-or-n-p "Discard current changes? ") - (kill-buffer (current-buffer)) - (customize-create-theme))) - "Reset Buffer") - (widget-insert " ") - (widget-create 'push-button - :notify (function custom-theme-write) - "Save Theme") - (widget-insert "\n") + (widget-insert ?\n) (widget-setup) (goto-char (point-min)) (message "")) +(defun custom-theme-revert (ignore-auto noconfirm) + (when (or noconfirm (y-or-n-p "Discard current changes? ")) + (erase-buffer) + (customize-create-theme (current-buffer)))) + ;;; Theme variables (defun custom-theme-add-variable (symbol) @@ -162,7 +186,7 @@ (t (save-excursion (goto-char custom-theme-insert-variable-marker) - (widget-insert "\n") + (widget-insert " ") (let ((widget (widget-create 'custom-variable :tag (custom-unlispify-tag-name symbol) :custom-level 0 @@ -171,6 +195,8 @@ :value symbol))) (push (cons symbol widget) custom-theme-variables) (custom-magic-reset widget)) + (widget-insert " ") + (move-marker custom-theme-insert-variable-marker (point)) (widget-setup))))) (defvar custom-theme-variable-menu @@ -231,15 +257,19 @@ (t (save-excursion (goto-char custom-theme-insert-face-marker) - (widget-insert "\n") + (widget-insert " ") (let ((widget (widget-create 'custom-face :tag (custom-unlispify-tag-name symbol) :custom-level 0 :action 'custom-theme-face-action :custom-state 'unknown + :display-style 'concise + :sample-indent 34 :value symbol))) (push (cons symbol widget) custom-theme-faces) (custom-magic-reset widget) + (widget-insert " ") + (move-marker custom-theme-insert-face-marker (point)) (widget-setup)))))) (defvar custom-theme-face-menu @@ -288,9 +318,10 @@ (defun custom-theme-visit-theme () (interactive) - (when (or (null custom-theme-variables) - (if (y-or-n-p "Discard current changes? ") - (progn (customize-create-theme) t))) + (when (or (and (null custom-theme-variables) + (null custom-theme-faces)) + (and (y-or-n-p "Discard current changes? ") + (progn (revert-buffer) t))) (let ((theme (call-interactively 'custom-theme-merge-theme))) (unless (eq theme 'user) (widget-value-set custom-theme-name (symbol-name theme))) @@ -313,21 +344,26 @@ (defun custom-theme-write (&rest ignore) (let* ((name (widget-value custom-theme-name)) - (filename (expand-file-name (concat name "-theme.el") - custom-theme-directory)) (doc (widget-value custom-theme-description)) - (vars custom-theme-variables) - (faces custom-theme-faces)) + (vars custom-theme-variables) + (faces custom-theme-faces) + filename) + (when (string-equal name "") + (setq name (read-from-minibuffer "Theme name: " (user-login-name))) + (widget-value-set custom-theme-name name)) (cond ((or (string-equal name "") - (string-equal name "user") - (string-equal name "changed")) + (string-equal name "user") + (string-equal name "changed")) (error "Custom themes cannot be named `%s'" name)) ((string-match " " name) - (error "Custom theme names should not contain spaces")) - ((if (file-exists-p filename) - (not (y-or-n-p - (format "File %s exists. Overwrite? " filename)))) - (error "Aborted"))) + (error "Custom theme names should not contain spaces"))) + + (setq filename (expand-file-name (concat name "-theme.el") + custom-theme-directory)) + (and (file-exists-p filename) + (not (y-or-n-p (format "File %s exists. Overwrite? " filename))) + (error "Aborted")) + (with-temp-buffer (emacs-lisp-mode) (unless (file-exists-p custom-theme-directory) @@ -342,11 +378,13 @@ (insert "\n(provide-theme '" name ")\n") (save-buffer)) (dolist (var vars) - (widget-put (cdr var) :custom-state 'saved) - (custom-redraw-magic (cdr var))) - (dolist (face faces) - (widget-put (cdr face) :custom-state 'saved) - (custom-redraw-magic (cdr face))))) + (when (widget-get (cdr var) :children) + (widget-put (cdr var) :custom-state 'saved) + (custom-redraw-magic (cdr var)))) + (dolist (face custom-theme-faces) + (when (widget-get (cdr face) :children) + (widget-put (cdr face) :custom-state 'saved) + (custom-redraw-magic (cdr face)))))) (defun custom-theme-write-variables (theme vars) "Write a `custom-theme-set-variables' command for THEME. @@ -357,22 +395,21 @@ (princ " '") (princ theme) (princ "\n") - (mapc (lambda (spec) - (let* ((symbol (car spec)) - (child (car-safe (widget-get (cdr spec) :children))) - (value (if child - (widget-value child) - ;; For hidden widgets, use the standard value - (get symbol 'standard-value)))) - (when (boundp symbol) - (unless (bolp) - (princ "\n")) - (princ " '(") - (prin1 symbol) - (princ " ") - (prin1 (custom-quote value)) - (princ ")")))) - vars) + (dolist (spec vars) + (let* ((symbol (car spec)) + (child (car-safe (widget-get (cdr spec) :children))) + (value (if child + (widget-value child) + ;; For hidden widgets, use the standard value + (get symbol 'standard-value)))) + (when (boundp symbol) + (unless (bolp) + (princ "\n")) + (princ " '(") + (prin1 symbol) + (princ " ") + (prin1 (custom-quote value)) + (princ ")")))) (if (bolp) (princ " ")) (princ ")") @@ -388,19 +425,31 @@ (princ " '") (princ theme) (princ "\n") - (mapc (lambda (spec) - (let* ((symbol (car spec)) - (child (car-safe (widget-get (cdr spec) :children))) - (value (if child (widget-value child)))) - (when (and (facep symbol) child) - (unless (bolp) - (princ "\n")) - (princ " '(") - (prin1 symbol) - (princ " ") - (prin1 value) - (princ ")")))) - faces) + (dolist (spec faces) + (let* ((symbol (car spec)) + (widget (cdr spec)) + (child (car-safe (widget-get widget :children))) + (state (if child + (widget-get widget :custom-state) + (custom-face-state symbol))) + (value + (cond ((eq state 'standard) + nil) ; do nothing + (child + (custom-face-widget-to-spec widget)) + (t + ;; Widget is closed (hidden), but the face has + ;; a non-standard value. Try to extract that + ;; value and save it. + (custom-face-get-current-spec symbol))))) + (when (and (facep symbol) value) + (if (bolp) + (princ " '(") + (princ "\n '(")) + (prin1 symbol) + (princ " ") + (prin1 value) + (princ ")")))) (if (bolp) (princ " ")) (princ ")") ------------------------------------------------------------ revno: 101889 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-10-09 23:38:04 +0200 message: Fix building manuals on MS-Windows using emacsver.texi. misc/makefile.w32-in (emacsdir): New variable. ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi. (ENVADD, $(infodir)/efaq): Add -I$(emacsdir). emacs/makefile.w32-in (EMACSSOURCES): Add emacsver.texi. lispref/makefile.w32-in (emacsdir): New variable. (srcs): Add emacsver.texi. ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir). diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 21:19:09 +0000 +++ doc/emacs/ChangeLog 2010-10-09 21:38:04 +0000 @@ -1,3 +1,7 @@ +2010-10-09 Eli Zaretskii + + * makefile.w32-in (EMACSSOURCES): Add emacsver.texi. + 2010-10-09 Glenn Morris * Makefile.in (VPATH): Remove. === modified file 'doc/emacs/makefile.w32-in' --- doc/emacs/makefile.w32-in 2010-01-13 08:35:10 +0000 +++ doc/emacs/makefile.w32-in 2010-10-09 21:38:04 +0000 @@ -56,6 +56,7 @@ EMACSSOURCES= \ $(srcdir)/emacs.texi \ + $(srcdir)/emacsver.texi \ $(srcdir)/doclicense.texi \ $(srcdir)/screen.texi \ $(srcdir)/commands.texi \ === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 21:19:09 +0000 +++ doc/lispref/ChangeLog 2010-10-09 21:38:04 +0000 @@ -1,3 +1,9 @@ +2010-10-09 Eli Zaretskii + + * makefile.w32-in (emacsdir): New variable. + (srcs): Add emacsver.texi. + ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir). + 2010-10-09 Glenn Morris * Makefile.in (VPATH): Remove. === modified file 'doc/lispref/makefile.w32-in' --- doc/lispref/makefile.w32-in 2010-01-13 08:35:10 +0000 +++ doc/lispref/makefile.w32-in 2010-10-09 21:38:04 +0000 @@ -25,6 +25,9 @@ infodir = $(srcdir)/../../info usermanualdir = $(srcdir)/../emacs +# Directory with emacsver.texi. +emacsdir = $(srcdir)/../emacs + # Redefine `TEX' if `tex' does not invoke plain TeX. For example: # TEX=platex TEX=tex @@ -43,6 +46,7 @@ # List of all the texinfo files in the manual: srcs = \ + $(emacsdir)/emacsver.texi \ $(srcdir)/abbrevs.texi \ $(srcdir)/advice.texi \ $(srcdir)/anti.texi \ @@ -107,10 +111,12 @@ $(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/elisp $(infodir)/elisp: $(srcs) - $(MAKEINFO) -I. -I$(srcdir) -o $(infodir)/elisp $(srcdir)/elisp.texi + $(MAKEINFO) -I. -I$(srcdir) -I$(emacsdir) \ + -o $(infodir)/elisp $(srcdir)/elisp.texi elisp.dvi: $(srcs) - $(texinputdir) $(TEX) -I $(usermanualdir) $(srcdir)/elisp.texi + $(texinputdir) $(TEX) -I $(usermanualdir) -I$(emacsdir) \ + $(srcdir)/elisp.texi clean: - $(DEL) *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \ === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 20:14:43 +0000 +++ doc/misc/ChangeLog 2010-10-09 21:38:04 +0000 @@ -1,3 +1,9 @@ +2010-10-09 Eli Zaretskii + + * makefile.w32-in (emacsdir): New variable. + ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi. + (ENVADD, $(infodir)/efaq): Add -I$(emacsdir). + 2010-10-09 Glenn Morris * Makefile.in (mostlyclean): Delete *.toc. === modified file 'doc/misc/makefile.w32-in' --- doc/misc/makefile.w32-in 2010-01-13 08:35:10 +0000 +++ doc/misc/makefile.w32-in 2010-10-09 21:38:04 +0000 @@ -27,6 +27,10 @@ infodir = $(srcdir)/../../info +## Directory with emacsver.texi. +## Currently only used by efaq; could be added to MAKEINFO. +emacsdir = $(srcdir)/../emacs + # The makeinfo program is part of the Texinfo distribution. MAKEINFO = makeinfo --force MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat @@ -66,7 +70,7 @@ TEXI2DVI = texi2dvi ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \ - "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C + "MAKEINFO=$(MAKEINFO) -I$(srcdir) -I$(emacsdir)" /C info: $(INFO_TARGETS) @@ -213,9 +217,9 @@ widget.dvi: widget.texi $(ENVADD) $(TEXI2DVI) $(srcdir)/widget.texi -$(infodir)/efaq: faq.texi - $(MAKEINFO) faq.texi -faq.dvi: faq.texi +$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi + $(MAKEINFO) -I$(emacsdir) faq.texi +faq.dvi: faq.texi $(emacsdir)/emacsver.texi $(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi $(infodir)/autotype: autotype.texi ------------------------------------------------------------ revno: 101888 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 14:19:09 -0700 message: Replace use of VPATH in most doc/ Makefiles. * doc/lispref/Makefile.in (VPATH): Remove. (infodir): Make it absolute. (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir. * doc/lispintro/Makefile.in (VPATH): Remove. (infodir): Make it absolute. (mkinfodir, $(infodir)/eintr, infoclean): No need to cd $srcdir. * doc/emacs/Makefile.in (VPATH): Remove. (infodir): Make it absolute. (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir. * doc/misc/Makefile.in: Comment. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 20:36:14 +0000 +++ doc/emacs/ChangeLog 2010-10-09 21:19:09 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * Makefile.in (VPATH): Remove. + (infodir): Make it absolute. + (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir. + * Makefile.in (dist): Anchor regexps. * Makefile.in (EMACSSOURCES): Put emacs.texi first. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 20:36:14 +0000 +++ doc/emacs/Makefile.in 2010-10-09 21:19:09 +0000 @@ -25,9 +25,6 @@ # of the source tree. This is set by configure's `--srcdir' option. srcdir=@srcdir@ -# Tell make where to find source files; this is needed for the makefiles. -VPATH=@srcdir@ - # Only for make dist. version=@version@ @@ -35,10 +32,8 @@ ## Note that the setfilename command in the .texi files assumes this. ## This is a bit funny. Because the info files are in the ## distribution tarfiles, they are always made in $scrdir/../../info, -## even for out-of-tree builds. So infodir is really relative to srcdir. -## The use of VPATH makes it work out, but why not set -## infodir = $(srcdir)/../../info and make it explicit? -infodir=../../info +## even for out-of-tree builds. +infodir = $(srcdir)/../../info # Directory with the (customized) texinfo.tex file. texinfodir = $(srcdir)/../misc @@ -121,7 +116,7 @@ ## repository and the release tarfiles. We do not use any ## equivalent of mkdir -p/mkinstalldirs, so this is not a general ## solution anyway. The second test -d is for parallel builds. -mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf @@ -135,7 +130,7 @@ $(infodir)/emacs: ${EMACSSOURCES} $(mkinfodir) - cd $(srcdir); $(MAKEINFO) $< -o $@ + $(MAKEINFO) $< -o $@ emacs.dvi: ${EMACSSOURCES} $(ENVADD) $(TEXI2DVI) $< @@ -166,7 +161,7 @@ ## In the standalone tarfile, the clean rule runs this. infoclean: - -cd $(srcdir) && cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9] + -cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9] maintainer-clean: distclean infoclean === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2010-10-09 20:36:14 +0000 +++ doc/lispintro/ChangeLog 2010-10-09 21:19:09 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * Makefile.in (VPATH): Remove. + (infodir): Make it absolute. + (mkinfodir, $(infodir)/eintr, infoclean): No need to cd $srcdir. + * Makefile.in (dist): Anchor regexps. * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi) === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 20:36:14 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 21:19:09 +0000 @@ -22,10 +22,9 @@ SHELL = /bin/sh srcdir = @srcdir@ -VPATH = @srcdir@ version=@version@ -infodir = ../../info +infodir = $(srcdir)/../../info # Directory with the (customized) texinfo.tex file. texinfodir = $(srcdir)/../misc @@ -34,7 +33,7 @@ TEXI2PDF = texi2pdf DVIPS = dvips -mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .SUFFIXES: .dvi .ps .texi @@ -50,7 +49,7 @@ # -NN extensions to fit into DOS 8+3 limits without clashing. ${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) $< -o $@ + $(MAKEINFO) $< -o $@ emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $< @@ -78,7 +77,7 @@ distclean: clean infoclean: - -cd $(srcdir) && cd $(infodir) && rm -f eintr eintr-[1-9] + -cd $(infodir) && rm -f eintr eintr-[1-9] maintainer-clean: distclean infoclean === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 20:36:14 +0000 +++ doc/lispref/ChangeLog 2010-10-09 21:19:09 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * Makefile.in (VPATH): Remove. + (infodir): Make it absolute. + (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir. + * Makefile.in (dist): Anchor regexps. * Makefile.in (srcs): Put elisp.texi first. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 20:36:14 +0000 +++ doc/lispref/Makefile.in 2010-10-09 21:19:09 +0000 @@ -24,12 +24,9 @@ # Standard configure variables. srcdir = @srcdir@ -# Tell make where to find source files; this is needed for the makefiles. -VPATH=@srcdir@ - version=@version@ -infodir = ../../info +infodir = $(srcdir)/../../info # Directory with the (customized) texinfo.tex file. texinfodir = $(srcdir)/../misc # Directory with emacsver.texi. @@ -96,7 +93,7 @@ $(srcdir)/gpl.texi \ $(srcdir)/doclicense.texi -mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf @@ -107,7 +104,7 @@ $(infodir)/elisp: $(srcs) $(mkinfodir) - cd $(srcdir); $(MAKEINFO) -I. -I$(texinfodir) $< -o $@ + $(MAKEINFO) -I. -I$(texinfodir) $< -o $@ elisp.dvi: $(srcs) $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $< @@ -130,7 +127,7 @@ distclean: clean infoclean: - -cd $(srcdir) && cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9] + -cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9] maintainer-clean: distclean infoclean === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 20:14:43 +0000 +++ doc/misc/Makefile.in 2010-10-09 21:19:09 +0000 @@ -27,6 +27,10 @@ srcdir=@srcdir@ # Tell make where to find source files; this is needed for the makefiles. +# Note the other doc Makefiles do not use VPATH anymore, instead +# they set infodir to an absolute path. Not doing that here in +# case INFO_TARGETS gets too long for some feeble shells. +# (cf src/Makefile.in's shortlisp) VPATH=@srcdir@ ## Where the output files go. ------------------------------------------------------------ revno: 101887 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 13:36:14 -0700 message: Anchor regexps in doc/ `make dist' rules. * doc/emacs/Makefile.in (dist): Anchor regexps. * doc/lispintro/Makefile.in (dist): Anchor regexps. * doc/lsipref/Makefile.in (dist): Anchor regexps. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 20:22:11 +0000 +++ doc/emacs/ChangeLog 2010-10-09 20:36:14 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (dist): Anchor regexps. + * Makefile.in (EMACSSOURCES): Put emacs.texi first. ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi) (emacs-xtra.pdf): Use $<. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 20:22:11 +0000 +++ doc/emacs/Makefile.in 2010-10-09 20:36:14 +0000 @@ -179,8 +179,8 @@ mkdir emacs-manual-${version} cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \ ${srcdir}/ChangeLog* emacs-manual-${version}/ - sed -e 's/@sr[c]dir@/./' -e 's/\(texinfodir *=\).*/\1 ./' \ - -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ + sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \ + -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile tar -cf emacs-manual-${version}.tar emacs-manual-${version} === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2010-10-09 19:39:42 +0000 +++ doc/lispintro/ChangeLog 2010-10-09 20:36:14 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (dist): Anchor regexps. + * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi) (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<. === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 19:39:42 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 20:36:14 +0000 @@ -90,8 +90,8 @@ cp ${srcdir}/*.texi ${srcdir}/*.eps ${srcdir}/*.pdf \ ${texinfodir}/texinfo.tex \ ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispintro-${version}/ - sed -e 's/@sr[c]dir@/./' -e 's/\(texinfodir *=\).*/\1 ./' \ - -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ + sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \ + -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-lispintro-${version}/Makefile tar -cf emacs-lispintro-${version}.tar emacs-lispintro-${version} === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 20:28:34 +0000 +++ doc/lispref/ChangeLog 2010-10-09 20:36:14 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (dist): Anchor regexps. + * Makefile.in (srcs): Put elisp.texi first. ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 20:28:34 +0000 +++ doc/lispref/Makefile.in 2010-10-09 20:36:14 +0000 @@ -143,9 +143,9 @@ cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \ $(emacsdir)/emacsver.texi ${srcdir}/ChangeLog* \ ${srcdir}/README emacs-lispref-${version}/ - sed -e 's/@sr[c]dir@/./' -e 's/\(texinfodir *=\).*/\1 ./' \ - -e 's/\(emacsdir *=\).*/\1 ./' \ - -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ + sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \ + -e 's/^\(emacsdir *=\).*/\1 ./' \ + -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile tar -cf emacs-lispref-${version}.tar emacs-lispref-${version} ------------------------------------------------------------ revno: 101886 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 13:28:34 -0700 message: * doc/lispref/Makefile.in (dist): Also copy emacsver.texi, and edit $emacsdir. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 20:22:11 +0000 +++ doc/lispref/ChangeLog 2010-10-09 20:28:34 +0000 @@ -10,6 +10,7 @@ ($(infodir)/elisp): Use $mkinfodir instead of infodir. * Makefile.in (dist): Remove reference to emacsver.texi.in. + Also copy emacsver.texi, and edit $emacsdir. 2010-10-09 Glenn Morris === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 20:22:11 +0000 +++ doc/lispref/Makefile.in 2010-10-09 20:28:34 +0000 @@ -141,8 +141,10 @@ rm -rf emacs-lispref-${version} mkdir emacs-lispref-${version} cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \ - ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispref-${version}/ + $(emacsdir)/emacsver.texi ${srcdir}/ChangeLog* \ + ${srcdir}/README emacs-lispref-${version}/ sed -e 's/@sr[c]dir@/./' -e 's/\(texinfodir *=\).*/\1 ./' \ + -e 's/\(emacsdir *=\).*/\1 ./' \ -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile ------------------------------------------------------------ revno: 101885 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 13:22:11 -0700 message: Remove references to emacsver.texi.in in doc/ `make dist' rules. * doc/emacs/Makefile.in (dist): Remove reference to emacsver.texi.in. * doc/lispref/Makefile.in (dist): Remove reference to emacsver.texi.in. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 19:39:42 +0000 +++ doc/emacs/ChangeLog 2010-10-09 20:22:11 +0000 @@ -11,6 +11,7 @@ ($(infodir)/emacs): Use $mkinfodir instead of infodir. * Makefile.in (distclean): Do not delete emacsver.texi. + (dist): Remove reference to emacsver.texi.in. * emacsver.texi: New file, replacing emacsver.texi.in. 2010-10-09 Glenn Morris === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 19:39:42 +0000 +++ doc/emacs/Makefile.in 2010-10-09 20:22:11 +0000 @@ -183,8 +183,6 @@ -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile - sed -e "s/@ver[s]ion@/${version}/" \ - ${srcdir}/emacsver.texi.in > emacs-manual-${version}/emacsver.texi tar -cf emacs-manual-${version}.tar emacs-manual-${version} rm -rf emacs-manual-${version} === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 19:39:42 +0000 +++ doc/lispref/ChangeLog 2010-10-09 20:22:11 +0000 @@ -9,6 +9,8 @@ (mkinfodir): New. ($(infodir)/elisp): Use $mkinfodir instead of infodir. + * Makefile.in (dist): Remove reference to emacsver.texi.in. + 2010-10-09 Glenn Morris * Makefile.in (emacsdir): New variable. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 19:39:42 +0000 +++ doc/lispref/Makefile.in 2010-10-09 20:22:11 +0000 @@ -146,8 +146,6 @@ -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \ -e "s/@ver[s]ion@/${version}/" \ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile - sed -e "s/@ver[s]ion@/${version}/" \ - ${emacsdir}/emacsver.texi.in > emacs-lispref-${version}/emacsver.texi tar -cf emacs-lispref-${version}.tar emacs-lispref-${version} rm -rf emacs-lispref-${version} ------------------------------------------------------------ revno: 101884 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 13:14:43 -0700 message: * doc/misc/Makefile.in (mostlyclean): Delete *.toc. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 20:12:18 +0000 +++ doc/misc/ChangeLog 2010-10-09 20:14:43 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (mostlyclean): Delete *.toc. + * Makefile.in: Use $< in rules. * Makefile.in (maintainer-clean): Remove harmless, long-standing error. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 20:12:18 +0000 +++ doc/misc/Makefile.in 2010-10-09 20:14:43 +0000 @@ -665,7 +665,7 @@ .PHONY: mostlyclean clean distclean maintainer-clean mostlyclean: - rm -f *.aux *.log *.cp *.cps *.fn *.fns *.ky *.kys \ + rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs rm -f gnustmp.* ------------------------------------------------------------ revno: 101883 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 13:12:18 -0700 message: * doc/misc/Makefile.in: Use $< in rules. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 18:39:01 +0000 +++ doc/misc/ChangeLog 2010-10-09 20:12:18 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in: Use $< in rules. + * Makefile.in (maintainer-clean): Remove harmless, long-standing error. * Makefile.in ($(infodir)): Delete rule. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 19:27:22 +0000 +++ doc/misc/Makefile.in 2010-10-09 20:12:18 +0000 @@ -220,92 +220,92 @@ ada-mode : $(infodir)/ada-mode $(infodir)/ada-mode: ada-mode.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) ada-mode.texi -ada-mode.dvi: ada-mode.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi -ada-mode.pdf: ada-mode.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi + cd $(srcdir); $(MAKEINFO) $< +ada-mode.dvi: ${srcdir}/ada-mode.texi + $(ENVADD) $(TEXI2DVI) $< +ada-mode.pdf: ${srcdir}/ada-mode.texi + $(ENVADD) $(TEXI2PDF) $< auth : $(infodir)/auth $(infodir)/auth: auth.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) auth.texi -auth.dvi: auth.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi -auth.pdf: auth.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi + cd $(srcdir); $(MAKEINFO) $< +auth.dvi: ${srcdir}/auth.texi + $(ENVADD) $(TEXI2DVI) $< +auth.pdf: ${srcdir}/auth.texi + $(ENVADD) $(TEXI2PDF) $< autotype : $(infodir)/autotype $(infodir)/autotype: autotype.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) autotype.texi -autotype.dvi: autotype.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi -autotype.pdf: autotype.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi + cd $(srcdir); $(MAKEINFO) $< +autotype.dvi: ${srcdir}/autotype.texi + $(ENVADD) $(TEXI2DVI) $< +autotype.pdf: ${srcdir}/autotype.texi + $(ENVADD) $(TEXI2PDF) $< calc : $(infodir)/calc $(infodir)/calc: calc.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) calc.texi -calc.dvi: calc.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi -calc.pdf: calc.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi + cd $(srcdir); $(MAKEINFO) $< +calc.dvi: ${srcdir}/calc.texi + $(ENVADD) $(TEXI2DVI) $< +calc.pdf: ${srcdir}/calc.texi + $(ENVADD) $(TEXI2PDF) $< ccmode : $(infodir)/ccmode $(infodir)/ccmode: cc-mode.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) cc-mode.texi -cc-mode.dvi: cc-mode.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi -cc-mode.pdf: cc-mode.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi + cd $(srcdir); $(MAKEINFO) $< +cc-mode.dvi: ${srcdir}/cc-mode.texi + $(ENVADD) $(TEXI2DVI) $< +cc-mode.pdf: ${srcdir}/cc-mode.texi + $(ENVADD) $(TEXI2PDF) $< cl : $(infodir)/cl $(infodir)/cl: cl.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) cl.texi -cl.dvi: cl.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi -cl.pdf: cl.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi + cd $(srcdir); $(MAKEINFO) $< +cl.dvi: ${srcdir}/cl.texi + $(ENVADD) $(TEXI2DVI) $< +cl.pdf: ${srcdir}/cl.texi + $(ENVADD) $(TEXI2PDF) $< dbus : $(infodir)/dbus $(infodir)/dbus: dbus.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) dbus.texi -dbus.dvi: dbus.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi -dbus.pdf: dbus.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi + cd $(srcdir); $(MAKEINFO) $< +dbus.dvi: ${srcdir}/dbus.texi + $(ENVADD) $(TEXI2DVI) $< +dbus.pdf: ${srcdir}/dbus.texi + $(ENVADD) $(TEXI2PDF) $< dired-x : $(infodir)/dired-x $(infodir)/dired-x: dired-x.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) dired-x.texi -dired-x.dvi: dired-x.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi -dired-x.pdf: dired-x.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi + cd $(srcdir); $(MAKEINFO) $< +dired-x.dvi: ${srcdir}/dired-x.texi + $(ENVADD) $(TEXI2DVI) $< +dired-x.pdf: ${srcdir}/dired-x.texi + $(ENVADD) $(TEXI2PDF) $< ebrowse : $(infodir)/ebrowse $(infodir)/ebrowse: ebrowse.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) ebrowse.texi -ebrowse.dvi: ebrowse.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi -ebrowse.pdf: ebrowse.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi + cd $(srcdir); $(MAKEINFO) $< +ebrowse.dvi: ${srcdir}/ebrowse.texi + $(ENVADD) $(TEXI2DVI) $< +ebrowse.pdf: ${srcdir}/ebrowse.texi + $(ENVADD) $(TEXI2PDF) $< ede : $(infodir)/ede $(infodir)/ede: ede.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) ede.texi -ede.dvi: ede.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi -ede.pdf: ede.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi + cd $(srcdir); $(MAKEINFO) $< +ede.dvi: ${srcdir}/ede.texi + $(ENVADD) $(TEXI2DVI) $< +ede.pdf: ${srcdir}/ede.texi + $(ENVADD) $(TEXI2PDF) $< ediff : $(infodir)/ediff $(infodir)/ediff: ediff.texi @@ -319,29 +319,29 @@ edt : $(infodir)/edt $(infodir)/edt: edt.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) edt.texi -edt.dvi: edt.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi -edt.pdf: edt.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi + cd $(srcdir); $(MAKEINFO) $< +edt.dvi: ${srcdir}/edt.texi + $(ENVADD) $(TEXI2DVI) $< +edt.pdf: ${srcdir}/edt.texi + $(ENVADD) $(TEXI2PDF) $< eieio : $(infodir)/eieio $(infodir)/eieio: eieio.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) eieio.texi -eieio.dvi: eieio.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi -eieio.pdf: eieio.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi + cd $(srcdir); $(MAKEINFO) $< +eieio.dvi: ${srcdir}/eieio.texi + $(ENVADD) $(TEXI2DVI) $< +eieio.pdf: ${srcdir}/eieio.texi + $(ENVADD) $(TEXI2PDF) $< emacs-mime : $(infodir)/emacs-mime $(infodir)/emacs-mime: emacs-mime.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi -emacs-mime.dvi: emacs-mime.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi -emacs-mime.pdf: emacs-mime.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi + cd $(srcdir); $(MAKEINFO) --enable-encoding $< +emacs-mime.dvi: ${srcdir}/emacs-mime.texi + $(ENVADD) $(TEXI2DVI) $< +emacs-mime.pdf: ${srcdir}/emacs-mime.texi + $(ENVADD) $(TEXI2PDF) $< epa : $(infodir)/epa $(infodir)/epa: epa.texi @@ -355,69 +355,69 @@ erc : $(infodir)/erc $(infodir)/erc: erc.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) erc.texi -erc.dvi: erc.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi -erc.pdf: erc.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi + cd $(srcdir); $(MAKEINFO) $< +erc.dvi: ${srcdir}/erc.texi + $(ENVADD) $(TEXI2DVI) $< +erc.pdf: ${srcdir}/erc.texi + $(ENVADD) $(TEXI2PDF) $< eshell : $(infodir)/eshell $(infodir)/eshell: eshell.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) eshell.texi -eshell.dvi: eshell.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi -eshell.pdf: eshell.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi + cd $(srcdir); $(MAKEINFO) $< +eshell.dvi: ${srcdir}/eshell.texi + $(ENVADD) $(TEXI2DVI) $< +eshell.pdf: ${srcdir}/eshell.texi + $(ENVADD) $(TEXI2PDF) $< eudc : $(infodir)/eudc $(infodir)/eudc: eudc.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) eudc.texi -eudc.dvi: eudc.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi -eudc.pdf: eudc.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi + cd $(srcdir); $(MAKEINFO) $< +eudc.dvi: ${srcdir}/eudc.texi + $(ENVADD) $(TEXI2DVI) $< +eudc.pdf: ${srcdir}/eudc.texi + $(ENVADD) $(TEXI2PDF) $< efaq : $(infodir)/efaq $(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) -I $(emacsdir) faq.texi -faq.dvi: faq.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi -faq.pdf: faq.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/faq.texi + cd $(srcdir); $(MAKEINFO) -I $(emacsdir) $< +faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi + $(ENVADD) $(TEXI2DVI) $< +faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi + $(ENVADD) $(TEXI2PDF) $< flymake : $(infodir)/flymake $(infodir)/flymake: flymake.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) flymake.texi -flymake.dvi: flymake.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi -flymake.pdf: flymake.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi + cd $(srcdir); $(MAKEINFO) $< +flymake.dvi: ${srcdir}/flymake.texi + $(ENVADD) $(TEXI2DVI) $< +flymake.pdf: ${srcdir}/flymake.texi + $(ENVADD) $(TEXI2PDF) $< forms : $(infodir)/forms $(infodir)/forms: forms.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) forms.texi -forms.dvi: forms.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi -forms.pdf: forms.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi + cd $(srcdir); $(MAKEINFO) $< +forms.dvi: ${srcdir}/forms.texi + $(ENVADD) $(TEXI2DVI) $< +forms.pdf: ${srcdir}/forms.texi + $(ENVADD) $(TEXI2PDF) $< # gnus/message/emacs-mime/sieve/pgg are part of Gnus: gnus : $(infodir)/gnus $(infodir)/gnus: gnus.texi gnus-faq.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) gnus.texi -gnus.dvi: gnus.texi gnus-faq.texi - sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi + cd $(srcdir); $(MAKEINFO) $< +gnus.dvi: ${srcdir}/gnus.texi gnus-faq.texi + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi $(ENVADD) $(TEXI2DVI) gnustmp.texi cp gnustmp.dvi $*.dvi rm gnustmp.* -gnus.pdf: gnus.texi gnus-faq.texi - sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi +gnus.pdf: ${srcdir}/gnus.texi gnus-faq.texi + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi $(ENVADD) $(TEXI2PDF) gnustmp.texi cp gnustmp.pdf $@ rm gnustmp.* @@ -427,11 +427,11 @@ idlwave : $(infodir)/idlwave $(infodir)/idlwave: idlwave.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi -idlwave.dvi: idlwave.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi -idlwave.pdf: idlwave.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi + cd $(srcdir); $(MAKEINFO) --no-split $< +idlwave.dvi: ${srcdir}/idlwave.texi + $(ENVADD) $(TEXI2DVI) $< +idlwave.pdf: ${srcdir}/idlwave.texi + $(ENVADD) $(TEXI2PDF) $< # The following target uses an explicit -o switch to work around # the @setfilename directive in info.texi, which is required for @@ -439,227 +439,227 @@ ###info : $(infodir)/info # circular! $(infodir)/info: info.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@ -info.dvi: info.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi -info.pdf: info.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi + cd $(srcdir); $(MAKEINFO) --no-split $< -o $@ +info.dvi: ${srcdir}/info.texi + $(ENVADD) $(TEXI2DVI) $< +info.pdf: ${srcdir}/info.texi + $(ENVADD) $(TEXI2PDF) $< mairix-el : $(infodir)/mairix-el $(infodir)/mairix-el: mairix-el.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) mairix-el.texi -mairix-el.dvi: mairix-el.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi -mairix-el.pdf: mairix-el.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi + cd $(srcdir); $(MAKEINFO) $< +mairix-el.dvi: ${srcdir}/mairix-el.texi + $(ENVADD) $(TEXI2DVI) $< +mairix-el.pdf: ${srcdir}/mairix-el.texi + $(ENVADD) $(TEXI2PDF) $< message : $(infodir)/message $(infodir)/message: message.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) message.texi -message.dvi: message.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi -message.pdf: message.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi + cd $(srcdir); $(MAKEINFO) $< +message.dvi: ${srcdir}/message.texi + $(ENVADD) $(TEXI2DVI) $< +message.pdf: ${srcdir}/message.texi + $(ENVADD) $(TEXI2PDF) $< mh-e : $(infodir)/mh-e $(infodir)/mh-e: mh-e.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) mh-e.texi -mh-e.dvi: mh-e.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi -mh-e.pdf: mh-e.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi + cd $(srcdir); $(MAKEINFO) $< +mh-e.dvi: ${srcdir}/mh-e.texi + $(ENVADD) $(TEXI2DVI) $< +mh-e.pdf: ${srcdir}/mh-e.texi + $(ENVADD) $(TEXI2PDF) $< newsticker : $(infodir)/newsticker $(infodir)/newsticker: newsticker.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) newsticker.texi -newsticker.dvi: newsticker.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi -newsticker.pdf: newsticker.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi + cd $(srcdir); $(MAKEINFO) $< +newsticker.dvi: ${srcdir}/newsticker.texi + $(ENVADD) $(TEXI2DVI) $< +newsticker.pdf: ${srcdir}/newsticker.texi + $(ENVADD) $(TEXI2PDF) $< nxml-mode : $(infodir)/nxml-mode $(infodir)/nxml-mode: nxml-mode.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) nxml-mode.texi -nxml-mode.dvi: nxml-mode.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi -nxml-mode.pdf: nxml-mode.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi + cd $(srcdir); $(MAKEINFO) $< +nxml-mode.dvi: ${srcdir}/nxml-mode.texi + $(ENVADD) $(TEXI2DVI) $< +nxml-mode.pdf: ${srcdir}/nxml-mode.texi + $(ENVADD) $(TEXI2PDF) $< org : $(infodir)/org $(infodir)/org: org.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) org.texi -org.dvi: org.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi -org.pdf: org.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi + cd $(srcdir); $(MAKEINFO) $< +org.dvi: ${srcdir}/org.texi + $(ENVADD) $(TEXI2DVI) $< +org.pdf: ${srcdir}/org.texi + $(ENVADD) $(TEXI2PDF) $< pcl-cvs : $(infodir)/pcl-cvs $(infodir)/pcl-cvs: pcl-cvs.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) pcl-cvs.texi -pcl-cvs.dvi: pcl-cvs.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi -pcl-cvs.pdf: pcl-cvs.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi + cd $(srcdir); $(MAKEINFO) $< +pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi + $(ENVADD) $(TEXI2DVI) $< +pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi + $(ENVADD) $(TEXI2PDF) $< pgg : $(infodir)/pgg $(infodir)/pgg: pgg.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) pgg.texi -pgg.dvi: pgg.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi -pgg.pdf: pgg.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi + cd $(srcdir); $(MAKEINFO) $< +pgg.dvi: ${srcdir}/pgg.texi + $(ENVADD) $(TEXI2DVI) $< +pgg.pdf: ${srcdir}/pgg.texi + $(ENVADD) $(TEXI2PDF) $< rcirc : $(infodir)/rcirc $(infodir)/rcirc: rcirc.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) rcirc.texi -rcirc.dvi: rcirc.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi -rcirc.pdf: rcirc.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi + cd $(srcdir); $(MAKEINFO) $< +rcirc.dvi: ${srcdir}/rcirc.texi + $(ENVADD) $(TEXI2DVI) $< +rcirc.pdf: ${srcdir}/rcirc.texi + $(ENVADD) $(TEXI2PDF) $< reftex : $(infodir)/reftex $(infodir)/reftex: reftex.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) reftex.texi -reftex.dvi: reftex.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi -reftex.pdf: reftex.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi + cd $(srcdir); $(MAKEINFO) $< +reftex.dvi: ${srcdir}/reftex.texi + $(ENVADD) $(TEXI2DVI) $< +reftex.pdf: ${srcdir}/reftex.texi + $(ENVADD) $(TEXI2PDF) $< remember : $(infodir)/remember $(infodir)/remember: remember.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) remember.texi -remember.dvi: remember.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi -remember.pdf: remember.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi + cd $(srcdir); $(MAKEINFO) $< +remember.dvi: ${srcdir}/remember.texi + $(ENVADD) $(TEXI2DVI) $< +remember.pdf: ${srcdir}/remember.texi + $(ENVADD) $(TEXI2PDF) $< sasl : $(infodir)/sasl $(infodir)/sasl: sasl.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) sasl.texi -sasl.dvi: sasl.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi -sasl.pdf: sasl.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi + cd $(srcdir); $(MAKEINFO) $< +sasl.dvi: ${srcdir}/sasl.texi + $(ENVADD) $(TEXI2DVI) $< +sasl.pdf: ${srcdir}/sasl.texi + $(ENVADD) $(TEXI2PDF) $< sc : $(infodir)/sc $(infodir)/sc: sc.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) sc.texi -sc.dvi: sc.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi -sc.pdf: sc.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi + cd $(srcdir); $(MAKEINFO) $< +sc.dvi: ${srcdir}/sc.texi + $(ENVADD) $(TEXI2DVI) $< +sc.pdf: ${srcdir}/sc.texi + $(ENVADD) $(TEXI2PDF) $< semantic : $(infodir)/semantic $(infodir)/semantic: semantic.texi sem-user.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) semantic.texi -semantic.dvi: semantic.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi -semantic.pdf: semantic.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi + cd $(srcdir); $(MAKEINFO) $< +semantic.dvi: ${srcdir}/semantic.texi sem-user.texi + $(ENVADD) $(TEXI2DVI) $< +semantic.pdf: ${srcdir}/semantic.texi sem-user.texi + $(ENVADD) $(TEXI2PDF) $< ses : $(infodir)/ses $(infodir)/ses: ses.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) ses.texi -ses.dvi: ses.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi -ses.pdf: ses.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi + cd $(srcdir); $(MAKEINFO) $< +ses.dvi: ${srcdir}/ses.texi + $(ENVADD) $(TEXI2DVI) $< +ses.pdf: ${srcdir}/ses.texi + $(ENVADD) $(TEXI2PDF) $< sieve : $(infodir)/sieve $(infodir)/sieve: sieve.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) sieve.texi -sieve.dvi: sieve.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi -sieve.pdf: sieve.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi + cd $(srcdir); $(MAKEINFO) $< +sieve.dvi: ${srcdir}/sieve.texi + $(ENVADD) $(TEXI2DVI) $< +sieve.pdf: ${srcdir}/sieve.texi + $(ENVADD) $(TEXI2PDF) $< smtpmail : $(infodir)/smtpmail $(infodir)/smtpmail: smtpmail.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) smtpmail.texi -smtpmail.dvi: smtpmail.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi -smtpmail.pdf: smtpmail.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi + cd $(srcdir); $(MAKEINFO) $< +smtpmail.dvi: ${srcdir}/smtpmail.texi + $(ENVADD) $(TEXI2DVI) $< +smtpmail.pdf: ${srcdir}/smtpmail.texi + $(ENVADD) $(TEXI2PDF) $< speedbar : $(infodir)/speedbar $(infodir)/speedbar: speedbar.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) speedbar.texi -speedbar.dvi: speedbar.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi -speedbar.pdf: speedbar.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi + cd $(srcdir); $(MAKEINFO) $< +speedbar.dvi: ${srcdir}/speedbar.texi + $(ENVADD) $(TEXI2DVI) $< +speedbar.pdf: ${srcdir}/speedbar.texi + $(ENVADD) $(TEXI2PDF) $< tramp : $(infodir)/tramp $(infodir)/tramp: tramp.texi trampver.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi -tramp.dvi: tramp.texi trampver.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi -tramp.pdf: tramp.texi trampver.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi + cd $(srcdir); $(MAKEINFO) -D emacs $< +tramp.dvi: ${srcdir}/tramp.texi trampver.texi + $(ENVADD) $(TEXI2DVI) $< +tramp.pdf: ${srcdir}/tramp.texi trampver.texi + $(ENVADD) $(TEXI2PDF) $< url : $(infodir)/url $(infodir)/url: url.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) url.texi -url.dvi: url.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi -url.pdf: url.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi + cd $(srcdir); $(MAKEINFO) $< +url.dvi: ${srcdir}/url.texi + $(ENVADD) $(TEXI2DVI) $< +url.pdf: ${srcdir}/url.texi + $(ENVADD) $(TEXI2PDF) $< vip : $(infodir)/vip $(infodir)/vip: vip.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) vip.texi -vip.dvi: vip.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi -vip.pdf: vip.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi + cd $(srcdir); $(MAKEINFO) $< +vip.dvi: ${srcdir}/vip.texi + $(ENVADD) $(TEXI2DVI) $< +vip.pdf: ${srcdir}/vip.texi + $(ENVADD) $(TEXI2PDF) $< viper : $(infodir)/viper $(infodir)/viper: viper.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) viper.texi -viper.dvi: viper.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi -viper.pdf: viper.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi + cd $(srcdir); $(MAKEINFO) $< +viper.dvi: ${srcdir}/viper.texi + $(ENVADD) $(TEXI2DVI) $< +viper.pdf: ${srcdir}/viper.texi + $(ENVADD) $(TEXI2PDF) $< widget : $(infodir)/widget $(infodir)/widget: widget.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) widget.texi -widget.dvi: widget.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi -widget.pdf: widget.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi + cd $(srcdir); $(MAKEINFO) $< +widget.dvi: ${srcdir}/widget.texi + $(ENVADD) $(TEXI2DVI) $< +widget.pdf: ${srcdir}/widget.texi + $(ENVADD) $(TEXI2PDF) $< woman : $(infodir)/woman $(infodir)/woman: woman.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) woman.texi -woman.dvi: woman.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi -woman.pdf: woman.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi + cd $(srcdir); $(MAKEINFO) $< +woman.dvi: ${srcdir}/woman.texi + $(ENVADD) $(TEXI2DVI) $< +woman.pdf: ${srcdir}/woman.texi + $(ENVADD) $(TEXI2PDF) $< .PHONY: mostlyclean clean distclean maintainer-clean ------------------------------------------------------------ revno: 101882 committer: Alan Mackenzie branch nick: trunk timestamp: Sat 2010-10-09 19:58:28 +0000 message: Enhance fontification of declarators to take account of the presence/absence of "typedef". cc-engine.el (c-forward-type): New &optional param "brace-block-too". (c-forward-decl-or-cast-1): cdr of return value now indicates the presence of either or both of a "struct"-like keyword and "typedef". cc-fonts.el (c-complex-decl-matchers): Remove the heuristic fontification of declarators which follow a "}". (c-font-lock-declarations): Fontify declarators according to the presence/absence of "typedef". cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable for "typedef". (c-typedef-decl-key): New lang variable built from c-typedef-decl-kwds. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 15:44:44 +0000 +++ lisp/ChangeLog 2010-10-09 19:58:28 +0000 @@ -1,3 +1,24 @@ +2010-10-09 Alan Mackenzie + + Enhance fontification of declarators to take account of the + presence/absence of "typedef". + + * cc-engine.el (c-forward-type): New &optional param + "brace-block-too". + (c-forward-decl-or-cast-1): cdr of return value now indicates the + presence of either or both of a "struct"-like keyword and + "typedef". + + * cc-fonts.el (c-complex-decl-matchers): Remove the heuristic + fontification of declarators which follow a "}". + (c-font-lock-declarations): Fontify declarators according to the + presence/absence of "typedef". + + * cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable + for "typedef". + (c-typedef-decl-key): New lang variable built from + c-typedef-decl-kwds. + 2010-10-09 Lars Magne Ingebrigtsen * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys, === modified file 'lisp/progmodes/cc-engine.el' --- lisp/progmodes/cc-engine.el 2010-09-15 18:03:25 +0000 +++ lisp/progmodes/cc-engine.el 2010-10-09 19:58:28 +0000 @@ -5646,17 +5646,23 @@ (defun c-forward-name () ;; Move forward over a complete name if at the beginning of one, - ;; stopping at the next following token. If the point is not at - ;; something that are recognized as name then it stays put. A name - ;; could be something as simple as "foo" in C or something as + ;; stopping at the next following token. A keyword, as such, + ;; doesn't count as a name. If the point is not at something that + ;; is recognized as a name then it stays put. + ;; + ;; A name could be something as simple as "foo" in C or something as ;; complex as "X::B, BIT_MAX >> b>, ::operator<> :: ;; Z<(a>b)> :: operator const X<&foo>::T Q::G::*volatile const" in C++ (this function is actually little ;; more than a `looking-at' call in all modes except those that, - ;; like C++, have `c-recognize-<>-arglists' set). Return nil if no - ;; name is found, 'template if it's an identifier ending with an - ;; angle bracket arglist, 'operator of it's an operator identifier, - ;; or t if it's some other kind of name. + ;; like C++, have `c-recognize-<>-arglists' set). + ;; + ;; Return + ;; o - nil if no name is found; + ;; o - 'template if it's an identifier ending with an angle bracket + ;; arglist; + ;; o - 'operator of it's an operator identifier; + ;; o - t if it's some other kind of name. ;; ;; This function records identifier ranges on ;; `c-record-type-identifiers' and `c-record-ref-identifiers' if @@ -5808,16 +5814,28 @@ (goto-char pos) res)) -(defun c-forward-type () +(defun c-forward-type (&optional brace-block-too) ;; Move forward over a type spec if at the beginning of one, - ;; stopping at the next following token. Return t if it's a known - ;; type that can't be a name or other expression, 'known if it's an - ;; otherwise known type (according to `*-font-lock-extra-types'), - ;; 'prefix if it's a known prefix of a type, 'found if it's a type - ;; that matches one in `c-found-types', 'maybe if it's an identfier - ;; that might be a type, or nil if it can't be a type (the point - ;; isn't moved then). The point is assumed to be at the beginning - ;; of a token. + ;; stopping at the next following token. The keyword "typedef" + ;; isn't part of a type spec here. + ;; + ;; BRACE-BLOCK-TOO, when non-nil, means move over the brace block in + ;; constructs like "struct foo {...} bar ;" or "struct {...} bar;". + ;; The current (2009-03-10) intention is to convert all uses of + ;; `c-forward-type' to call with this parameter set, then to + ;; eliminate it. + ;; + ;; Return + ;; o - t if it's a known type that can't be a name or other + ;; expression; + ;; o - 'known if it's an otherwise known type (according to + ;; `*-font-lock-extra-types'); + ;; o - 'prefix if it's a known prefix of a type; + ;; o - 'found if it's a type that matches one in `c-found-types'; + ;; o - 'maybe if it's an identfier that might be a type; or + ;; o - nil if it can't be a type (the point isn't moved then). + ;; + ;; The point is assumed to be at the beginning of a token. ;; ;; Note that this function doesn't skip past the brace definition ;; that might be considered part of the type, e.g. @@ -5836,32 +5854,39 @@ ;; Skip leading type modifiers. If any are found we know it's a ;; prefix of a type. - (when c-opt-type-modifier-key + (when c-opt-type-modifier-key ; e.g. "const" "volatile", but NOT "typedef" (while (looking-at c-opt-type-modifier-key) (goto-char (match-end 1)) (c-forward-syntactic-ws) (setq res 'prefix))) (cond - ((looking-at c-type-prefix-key) - ;; Looking at a keyword that prefixes a type identifier, - ;; e.g. "class". + ((looking-at c-type-prefix-key) ; e.g. "struct", "class", but NOT + ; "typedef". (goto-char (match-end 1)) (c-forward-syntactic-ws) (setq pos (point)) - (if (memq (setq name-res (c-forward-name)) '(t template)) - (progn - (when (eq name-res t) - ;; In many languages the name can be used without the - ;; prefix, so we add it to `c-found-types'. - (c-add-type pos (point)) - (when (and c-record-type-identifiers - c-last-identifier-range) - (c-record-type-id c-last-identifier-range))) - (setq res t)) - ;; Invalid syntax. - (goto-char start) - (setq res nil))) + + (setq name-res (c-forward-name)) + (setq res (not (null name-res))) + (when (eq name-res t) + ;; In many languages the name can be used without the + ;; prefix, so we add it to `c-found-types'. + (c-add-type pos (point)) + (when (and c-record-type-identifiers + c-last-identifier-range) + (c-record-type-id c-last-identifier-range))) + (when (and brace-block-too + (memq res '(t nil)) + (eq (char-after) ?\{) + (save-excursion + (c-safe + (progn (c-forward-sexp) + (c-forward-syntactic-ws) + (setq pos (point)))))) + (goto-char pos) + (setq res t)) + (unless res (goto-char start))) ; invalid syntax ((progn (setq pos nil) @@ -5951,14 +5976,13 @@ (setq res nil))))) (when res - ;; Skip trailing type modifiers. If any are found we know it's + ;; Skip trailing type modifiers. If any are found we know it's ;; a type. (when c-opt-type-modifier-key - (while (looking-at c-opt-type-modifier-key) + (while (looking-at c-opt-type-modifier-key) ; e.g. "const", "volatile" (goto-char (match-end 1)) (c-forward-syntactic-ws) (setq res t))) - ;; Step over any type suffix operator. Do not let the existence ;; of these alter the classification of the found type, since ;; these operators typically are allowed in normal expressions @@ -5968,7 +5992,7 @@ (goto-char (match-end 1)) (c-forward-syntactic-ws))) - (when c-opt-type-concat-key + (when c-opt-type-concat-key ; Only/mainly for pike. ;; Look for a trailing operator that concatenates the type ;; with a following one, and if so step past that one through ;; a recursive call. Note that we don't record concatenated @@ -6119,11 +6143,15 @@ ;; car ^ ^ point ;; Foo::Foo (int b) : Base (b) {} ;; car ^ ^ point - ;; - ;; The cdr of the return value is non-nil iff a `c-typedef-decl-kwds' - ;; specifier (e.g. class, struct, enum, typedef) is found in the - ;; declaration, i.e. the declared identifier(s) are types. - ;; + ;; + ;; The cdr of the return value is non-nil when a + ;; `c-typedef-decl-kwds' specifier is found in the declaration. + ;; Specifically it is a dotted pair (A . B) where B is t when a + ;; `c-typedef-kwds' ("typedef") is present, and A is t when some + ;; other `c-typedef-decl-kwds' (e.g. class, struct, enum) + ;; specifier is present. I.e., (some of) the declared + ;; identifier(s) are types. + ;; ;; If a cast is parsed: ;; ;; The point is left at the first token after the closing paren of @@ -6181,9 +6209,11 @@ ;; If `backup-at-type' is nil then the other variables have ;; undefined values. backup-at-type backup-type-start backup-id-start - ;; Set if we've found a specifier that makes the defined - ;; identifier(s) types. + ;; Set if we've found a specifier (apart from "typedef") that makes + ;; the defined identifier(s) types. at-type-decl + ;; Set if we've a "typedef" keyword. + at-typedef ;; Set if we've found a specifier that can start a declaration ;; where there's no type. maybe-typeless @@ -6223,12 +6253,14 @@ ;; Look for a specifier keyword clause. (when (looking-at c-prefix-spec-kwds-re) + (if (looking-at c-typedef-key) + (setq at-typedef t)) (setq kwd-sym (c-keyword-sym (match-string 1))) (save-excursion (c-forward-keyword-clause 1) (setq kwd-clause-end (point)))) - (when (setq found-type (c-forward-type)) + (when (setq found-type (c-forward-type t)) ; brace-block-too ;; Found a known or possible type or a prefix of a known type. (when at-type @@ -6293,6 +6325,8 @@ (setq backup-maybe-typeless t))) (when (c-keyword-member kwd-sym 'c-typedef-decl-kwds) + ;; This test only happens after we've scanned a type. + ;; So, with valid syntax, kwd-sym can't be 'typedef. (setq at-type-decl t)) (when (c-keyword-member kwd-sym 'c-typeless-decl-kwds) (setq maybe-typeless t)) @@ -6892,7 +6926,9 @@ (goto-char type-start) (c-forward-type)))) - (cons id-start at-type-decl)) + (cons id-start + (and (or at-type-decl at-typedef) + (cons at-type-decl at-typedef)))) (t ;; False alarm. Restore the recorded ranges. === modified file 'lisp/progmodes/cc-fonts.el' --- lisp/progmodes/cc-fonts.el 2010-08-29 16:17:13 +0000 +++ lisp/progmodes/cc-fonts.el 2010-10-09 19:58:28 +0000 @@ -289,7 +289,7 @@ ;; bit of the overhead compared to a real matcher. The main reason ;; is however to pass the real search limit to the anchored ;; matcher(s), since most (if not all) font-lock implementations - ;; arbitrarily limits anchored matchers to the same line, and also + ;; arbitrarily limit anchored matchers to the same line, and also ;; to insulate against various other irritating differences between ;; the different (X)Emacs font-lock packages. ;; @@ -310,7 +310,7 @@ ;; covered by the font-lock context.) ;; Note: Replace `byte-compile' with `eval' to debug the generated - ;; lambda easier. + ;; lambda more easily. (byte-compile `(lambda (limit) (let (;; The font-lock package in Emacs is known to clobber @@ -721,16 +721,26 @@ ;; Clear the list of found types if we start from the start of the ;; buffer, to make it easier to get rid of misspelled types and - ;; variables that has gotten recognized as types in malformed code. + ;; variables that have gotten recognized as types in malformed code. (when (bobp) (c-clear-found-types)) - ;; Clear the c-type char properties in the region to recalculate - ;; them properly. This is necessary e.g. to handle constructs that - ;; might been required as declarations temporarily during editing. - ;; The interesting properties are anyway those put on the closest - ;; token before the region. - (c-clear-char-properties (point) limit 'c-type) + ;; Clear the c-type char properties which mark the region, to recalculate + ;; them properly. The most interesting properties are those put on the + ;; closest token before the region. + (save-excursion + (let ((pos (point))) + (c-backward-syntactic-ws) + (c-clear-char-properties + (if (and (not (bobp)) + (memq (c-get-char-property (1- (point)) 'c-type) + '(c-decl-arg-start + c-decl-end + c-decl-id-start + c-decl-type-start))) + (1- (point)) + pos) + limit 'c-type))) ;; Update `c-state-cache' to the beginning of the region. This will ;; make `c-beginning-of-syntax' go faster when it's used later on, @@ -739,6 +749,8 @@ ;; Check if the fontified region starts inside a declarator list so ;; that `c-font-lock-declarators' should be called at the start. + ;; The declared identifiers are font-locked correctly as types, if + ;; that is what they are. (let ((prop (save-excursion (c-backward-syntactic-ws) (unless (bobp) @@ -831,12 +843,19 @@ nil) (defun c-font-lock-declarators (limit list types) - ;; Assuming the point is at the start of a declarator in a - ;; declaration, fontify it. If LIST is non-nil, fontify also all - ;; following declarators in a comma separated list (e.g. "foo" and - ;; "bar" in "int foo = 17, bar;"). Stop at LIMIT. If TYPES is - ;; non-nil, fontify all identifiers as types. Nil is always - ;; returned. + ;; Assuming the point is at the start of a declarator in a declaration, + ;; fontify the identifier it declares. (If TYPES is set, it does this via + ;; the macro `c-fontify-types-and-refs'.) + ;; + ;; If LIST is non-nil, also fontify the ids in any following declarators in + ;; a comma separated list (e.g. "foo" and "*bar" in "int foo = 17, *bar;"); + ;; additionally, mark the commas with c-type property 'c-decl-id-start or + ;; 'c-decl-type-start (according to TYPES). Stop at LIMIT. + ;; + ;; If TYPES is non-nil, fontify all identifiers as types. + ;; + ;; Nil is always returned. The function leaves point at the delimiter after + ;; the last declarator it processes. ;; ;; This function might do hidden buffer changes. @@ -848,18 +867,31 @@ c-last-identifier-range (separator-prop (if types 'c-decl-type-start 'c-decl-id-start))) - (while (and + ;; The following `while' fontifies a single declarator id each time round. + ;; It loops only when LIST is non-nil. + (while + ;; Inside the following "condition form", we move forward over the + ;; declarator's identifier up as far as any opening bracket (for array + ;; size) or paren (for parameters of function-type) or brace (for + ;; array/struct initialisation) or "=" or terminating delimiter + ;; (e.g. "," or ";" or "}"). + (and pos (< (point) limit) + ;; The following form moves forward over the declarator's + ;; identifier (and what precedes it), returning t. If there + ;; wasn't one, it returns nil, terminating the `while'. (let (got-identifier) (setq paren-depth 0) - ;; Skip over type decl prefix operators. (Note similar - ;; code in `c-forward-decl-or-cast-1'.) + ;; Skip over type decl prefix operators, one for each iteration + ;; of the while. These are, e.g. "*" in "int *foo" or "(" and + ;; "*" in "int (*foo) (void)" (Note similar code in + ;; `c-forward-decl-or-cast-1'.) (while (and (looking-at c-type-decl-prefix-key) (if (and (c-major-mode-is 'c++-mode) - (match-beginning 2)) - ;; If the second submatch matches in C++ then + (match-beginning 3)) + ;; If the third submatch matches in C++ then ;; we're looking at an identifier that's a ;; prefix only if it specifies a member pointer. (progn @@ -882,7 +914,7 @@ (goto-char (match-end 1))) (c-forward-syntactic-ws)) - ;; If we didn't pass the identifier above already, do it now. + ;; If we haven't passed the identifier already, do it now. (unless got-identifier (setq id-start (point)) (c-forward-name)) @@ -890,12 +922,14 @@ (/= id-end pos)) - ;; Skip out of the parens surrounding the identifier. + ;; Skip out of the parens surrounding the identifier. If closing + ;; parens are missing, this form returns nil. (or (= paren-depth 0) (c-safe (goto-char (scan-lists (point) 1 paren-depth)))) (<= (point) limit) + ;; Skip over any trailing bit, such as "__attribute__". (progn (when (looking-at c-decl-hangon-key) (c-forward-keyword-clause 1)) @@ -936,7 +970,7 @@ id-face))) (goto-char next-pos) - (setq pos nil) + (setq pos nil) ; So as to terminate the enclosing `while' form. (when list ;; Jump past any initializer or function prototype to see if ;; there's a ',' to continue at. @@ -944,11 +978,11 @@ (cond ((eq id-face 'font-lock-function-name-face) ;; Skip a parenthesized initializer (C++) or a function ;; prototype. - (if (c-safe (c-forward-sexp 1) t) + (if (c-safe (c-forward-sexp 1) t) ; over the parameter list. (c-forward-syntactic-ws limit) - (goto-char limit))) + (goto-char limit))) ; unbalanced parens - (got-init + (got-init ; "=" sign OR opening "(", "[", or "{" ;; Skip an initializer expression. If we're at a '=' ;; then accept a brace list directly after it to cope ;; with array initializers. Otherwise stop at braces @@ -956,7 +990,7 @@ (and (if (and (eq got-init ?=) (= (c-forward-token-2 1 nil limit) 0) (looking-at "{")) - (c-safe (c-forward-sexp) t) + (c-safe (c-forward-sexp) t) ; over { .... } t) ;; FIXME: Should look for c-decl-end markers here; ;; we might go far into the following declarations @@ -971,7 +1005,7 @@ (c-put-char-property (point) 'c-type separator-prop) (forward-char) (c-forward-syntactic-ws limit) - (setq pos (point)))))) + (setq pos (point)))))) ; acts to make the `while' form continue. nil) (defconst c-font-lock-maybe-decl-faces @@ -984,27 +1018,29 @@ font-lock-keyword-face)) (defun c-font-lock-declarations (limit) - ;; This function will be called from font-lock for a region bounded by POINT - ;; and LIMIT, as though it were to identify a keyword for - ;; font-lock-keyword-face. It always returns NIL to inhibit this and - ;; prevent a repeat invocation. See elisp/lispref page "Search-based - ;; Fontification". - ;; ;; Fontify all the declarations, casts and labels from the point to LIMIT. ;; Assumes that strings and comments have been fontified already. ;; + ;; This function will be called from font-lock for a region bounded by POINT + ;; and LIMIT, as though it were to identify a keyword for + ;; font-lock-keyword-face. It always returns NIL to inhibit this and + ;; prevent a repeat invocation. See elisp/lispref page "Search-based + ;; Fontification". + ;; ;; This function might do hidden buffer changes. ;;(message "c-font-lock-declarations search from %s to %s" (point) limit) (save-restriction - (let (;; The position where `c-find-decl-spots' stopped. + (let (;; The position where `c-find-decl-spots' last stopped. start-pos - ;; 'decl if we're in an arglist containing declarations (but - ;; if `c-recognize-paren-inits' is set it might also be an - ;; initializer arglist), '<> if the arglist is of angle - ;; bracket type, 'arglist if it's some other arglist, or nil - ;; if not in an arglist at all. + ;; o - 'decl if we're in an arglist containing declarations + ;; (but if `c-recognize-paren-inits' is set it might also be + ;; an initializer arglist); + ;; o - '<> if the arglist is of angle bracket type; + ;; o - 'arglist if it's some other arglist; + ;; o - nil, if not in an arglist at all. This includes the + ;; parenthesised condition which follows "if", "while", etc. context ;; The position of the next token after the closing paren of ;; the last detected cast. @@ -1082,57 +1118,106 @@ ;; can't start a declaration. t - ;; Set `context'. Look for "<" for the sake of C++-style template - ;; arglists. - (if (memq (char-before match-pos) '(?\( ?, ?\[ ?<)) - - ;; Find out the type of the arglist. - (if (<= match-pos (point-min)) - (setq context 'arglist) - (let ((type (c-get-char-property (1- match-pos) 'c-type))) - (cond ((eq type 'c-decl-arg-start) - ;; Got a cached hit in a declaration arglist. - (setq context 'decl)) - ((or (eq type 'c-<>-arg-sep) - (eq (char-before match-pos) ?<)) - ;; Inside an angle bracket arglist. - (setq context '<>)) - (type - ;; Got a cached hit in some other type of arglist. - (setq context 'arglist)) - ((if inside-macro - (< match-pos max-type-decl-end-before-token) - (< match-pos max-type-decl-end)) - ;; The point is within the range of a previously - ;; encountered type decl expression, so the arglist - ;; is probably one that contains declarations. - ;; However, if `c-recognize-paren-inits' is set it - ;; might also be an initializer arglist. - (setq context 'decl) - ;; The result of this check is cached with a char - ;; property on the match token, so that we can look - ;; it up again when refontifying single lines in a - ;; multiline declaration. - (c-put-char-property (1- match-pos) - 'c-type 'c-decl-arg-start)) - (t - (setq context 'arglist))))) - - (setq context nil)) - - ;; If we're in a normal arglist context we don't want to - ;; recognize commas in nested angle bracket arglists since - ;; those commas could be part of our own arglist. - (setq c-restricted-<>-arglists (and c-recognize-<>-arglists - (eq context 'arglist)) - - ;; Now analyze the construct. - decl-or-cast (c-forward-decl-or-cast-1 + ;; Set `context' and `c-restricted-<>-arglists'. Look for + ;; "<" for the sake of C++-style template arglists. + ;; Ignore "(" when it's part of a control flow construct + ;; (e.g. "for ("). + (let ((type (and (> match-pos (point-min)) + (c-get-char-property (1- match-pos) 'c-type)))) + (cond ((not (memq (char-before match-pos) '(?\( ?, ?\[ ?<))) + (setq context nil + c-restricted-<>-arglists nil)) + ;; A control flow expression + ((and (eq (char-before match-pos) ?\() + (save-excursion + (goto-char match-pos) + (backward-char) + (c-backward-token-2) + (looking-at c-block-stmt-2-key))) + (setq context nil + c-restricted-<>-arglists t)) + ;; Near BOB. + ((<= match-pos (point-min)) + (setq context 'arglist + c-restricted-<>-arglists t)) + ;; Got a cached hit in a declaration arglist. + ((eq type 'c-decl-arg-start) + (setq context 'decl + c-restricted-<>-arglists nil)) + ;; Inside an angle bracket arglist. + ((or (eq type 'c-<>-arg-sep) + (eq (char-before match-pos) ?<)) + (setq context '<> + c-restricted-<>-arglists nil)) + ;; Got a cached hit in some other type of arglist. + (type + (setq context 'arglist + c-restricted-<>-arglists t)) + ((if inside-macro + (< match-pos max-type-decl-end-before-token) + (< match-pos max-type-decl-end)) + ;; The point is within the range of a previously + ;; encountered type decl expression, so the arglist + ;; is probably one that contains declarations. + ;; However, if `c-recognize-paren-inits' is set it + ;; might also be an initializer arglist. + (setq context 'decl + c-restricted-<>-arglists nil) + ;; The result of this check is cached with a char + ;; property on the match token, so that we can look + ;; it up again when refontifying single lines in a + ;; multiline declaration. + (c-put-char-property (1- match-pos) + 'c-type 'c-decl-arg-start)) + (t (setq context 'arglist + c-restricted-<>-arglists t)))) + + ;; Check we haven't missed a preceding "typedef". + (when (not (looking-at c-typedef-key)) + (c-backward-syntactic-ws) + (c-backward-token-2) + (or (looking-at c-typedef-key) + (goto-char start-pos))) + + ;; Now analyze the construct. + (setq decl-or-cast (c-forward-decl-or-cast-1 match-pos context last-cast-end)) (if (not decl-or-cast) - ;; False alarm. Return t to go on to the next check. - t + ;; Are we at a declarator? + ;; Try to go back to the declaration to check this. + (let (paren-state bod-res lim encl-pos is-typedef) + (goto-char start-pos) + (save-excursion + (setq lim (and (c-syntactic-skip-backward "^;" nil t) + (point)))) + (save-excursion + (setq bod-res (car (c-beginning-of-decl-1 lim))) + (if (and (eq bod-res 'same) + (progn + (c-backward-syntactic-ws) + (eq (char-before) ?\}))) + (c-beginning-of-decl-1 lim)) + ;; We're now putatively at the declaration. + (setq paren-state (c-parse-state)) + ;; At top level or inside a "{"? + (if (or (not (setq encl-pos + (c-most-enclosing-brace paren-state))) + (eq (char-after encl-pos) ?\{)) + (progn + (when (looking-at c-typedef-key) ; "typedef" + (setq is-typedef t) + (goto-char (match-end 0)) + (c-forward-syntactic-ws)) + ;; At a real declaration? + (if (memq (c-forward-type t) '(t known found)) + (progn + (c-font-lock-declarators limit t is-typedef) + nil) + ;; False alarm. Return t to go on to the next check. + (goto-char start-pos) + t)) + t))) (if (eq decl-or-cast 'cast) ;; Save the position after the previous cast so we can feed @@ -1296,7 +1381,7 @@ "Complex font lock matchers for types and declarations. Used on level 3 and higher." - ;; Note: This code in this form dumps a number of funtions into the + ;; Note: This code in this form dumps a number of functions into the ;; resulting constant, `c-matchers-3'. At run time, font lock will call ;; each of them as a "FUNCTION" (see Elisp page "Search-based ;; Fontification"). The font lock region is delimited by POINT and the @@ -1348,7 +1433,7 @@ `(,(concat "\\<\\(" re "\\)\\>") 1 'font-lock-type-face))) - ;; Fontify types preceded by `c-type-prefix-kwds'. + ;; Fontify types preceded by `c-type-prefix-kwds' (e.g. "struct"). ,@(when (c-lang-const c-type-prefix-kwds) `((,(byte-compile `(lambda (limit) @@ -1396,23 +1481,25 @@ ;; override it if it turns out to be an new declaration, but ;; it will be wrong if it's an expression (see the test ;; decls-8.cc). - ,@(when (c-lang-const c-opt-block-decls-with-vars-key) - `((,(c-make-font-lock-search-function - (concat "}" - (c-lang-const c-single-line-syntactic-ws) - "\\(" ; 1 + c-single-line-syntactic-ws-depth - (c-lang-const c-type-decl-prefix-key) - "\\|" - (c-lang-const c-symbol-key) - "\\)") - `((c-font-lock-declarators limit t nil) - (progn - (c-put-char-property (match-beginning 0) 'c-type - 'c-decl-id-start) - (goto-char (match-beginning - ,(1+ (c-lang-const - c-single-line-syntactic-ws-depth))))) - (goto-char (match-end 0))))))) +;; ,@(when (c-lang-const c-opt-block-decls-with-vars-key) +;; `((,(c-make-font-lock-search-function +;; (concat "}" +;; (c-lang-const c-single-line-syntactic-ws) +;; "\\(" ; 1 + c-single-line-syntactic-ws-depth +;; (c-lang-const c-type-decl-prefix-key) +;; "\\|" +;; (c-lang-const c-symbol-key) +;; "\\)") +;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face'; +;; ; `t' would mean `font-lock-function-name-face'. +;; (progn +;; (c-put-char-property (match-beginning 0) 'c-type +;; 'c-decl-id-start) +;; ; 'c-decl-type-start) +;; (goto-char (match-beginning +;; ,(1+ (c-lang-const +;; c-single-line-syntactic-ws-depth))))) +;; (goto-char (match-end 0))))))) ;; Fontify the type in C++ "new" expressions. ,@(when (c-major-mode-is 'c++-mode) @@ -1660,6 +1747,10 @@ ;;; C++. (defun c-font-lock-c++-new (limit) + ;; FIXME!!! Put in a comment about the context of this function's + ;; invocation. I think it's called as an ANCHORED-MATCHER within an + ;; ANCHORED-HIGHLIGHTER. (2007/2/10). + ;; ;; Assuming point is after a "new" word, check that it isn't inside ;; a string or comment, and if so try to fontify the type in the ;; allocation expression. Nil is always returned. === modified file 'lisp/progmodes/cc-langs.el' --- lisp/progmodes/cc-langs.el 2010-08-29 16:17:13 +0000 +++ lisp/progmodes/cc-langs.el 2010-10-09 19:58:28 +0000 @@ -1565,6 +1565,17 @@ ;; In CORBA PSDL: "strong")) +(c-lang-defconst c-typedef-kwds + "Prefix keyword\(s\) like \"typedef\" which make a type declaration out +of a variable declaration." + t '("typedef") + (awk idl java) nil) + +(c-lang-defconst c-typedef-key + ;; Adorned regexp matching `c-typedef-kwds'. + t (c-make-keywords-re t (c-lang-const c-typedef-kwds))) +(c-lang-defvar c-typedef-key (c-lang-const c-typedef-key)) + (c-lang-defconst c-type-prefix-kwds "Keywords where the following name - if any - is a type name, and where the keyword together with the symbol works as a type in @@ -1731,6 +1742,10 @@ ;; types in IDL since they only can occur in "raises" specs. idl (delete "exception" (append (c-lang-const c-typedef-decl-kwds) nil))) +(c-lang-defconst c-typedef-decl-key + t (c-make-keywords-re t (c-lang-const c-typedef-decl-kwds))) +(c-lang-defvar c-typedef-decl-key (c-lang-const c-typedef-decl-key)) + (c-lang-defconst c-typeless-decl-kwds "Keywords introducing declarations where the \(first) identifier \(declarator) follows directly after the keyword, without any type. ------------------------------------------------------------ revno: 101881 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 12:39:42 -0700 message: Use $< in some doc/*/Makefile rules. * doc/lispref/Makefile.in (srcs): Put elisp.texi first. ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<. * doc/lispintro/Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi) (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<. * doc/emacs/Makefile.in (EMACSSOURCES): Put emacs.texi first. ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi) (emacs-xtra.pdf): Use $<. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 18:39:01 +0000 +++ doc/emacs/ChangeLog 2010-10-09 19:39:42 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * Makefile.in (EMACSSOURCES): Put emacs.texi first. + ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi) + (emacs-xtra.pdf): Use $<. + * Makefile.in (infoclean): Remove harmless, long-standing error. * Makefile.in ($(infodir)): Delete rule. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 19:27:22 +0000 +++ doc/emacs/Makefile.in 2010-10-09 19:39:42 +0000 @@ -70,8 +70,8 @@ $(srcdir)/msdog-xtra.texi EMACSSOURCES= \ + ${srcdir}/emacs.texi \ ${srcdir}/emacsver.texi \ - ${srcdir}/emacs.texi \ ${srcdir}/doclicense.texi \ ${srcdir}/gpl.texi \ ${srcdir}/screen.texi \ @@ -135,20 +135,20 @@ $(infodir)/emacs: ${EMACSSOURCES} $(mkinfodir) - cd $(srcdir); $(MAKEINFO) emacs.texi -o $@ + cd $(srcdir); $(MAKEINFO) $< -o $@ emacs.dvi: ${EMACSSOURCES} - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi + $(ENVADD) $(TEXI2DVI) $< emacs.pdf: ${EMACSSOURCES} - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi + $(ENVADD) $(TEXI2PDF) $< emacs-xtra.dvi: $(EMACS_XTRA) - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi + $(ENVADD) $(TEXI2DVI) $< emacs-xtra.pdf: $(EMACS_XTRA) - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi + $(ENVADD) $(TEXI2PDF) $< .PHONY: mostlyclean clean distclean maintainer-clean infoclean === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2010-10-09 18:39:01 +0000 +++ doc/lispintro/ChangeLog 2010-10-09 19:39:42 +0000 @@ -1,5 +1,8 @@ 2010-10-09 Glenn Morris + * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi) + (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<. + * Makefile.in (infoclean): Remove harmless, long-standing error. * Makefile.in ($(infodir)): Delete rule. === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 19:27:22 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 19:39:42 +0000 @@ -50,16 +50,16 @@ # -NN extensions to fit into DOS 8+3 limits without clashing. ${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi $(mkinfodir) - cd $(srcdir); $(MAKEINFO) emacs-lisp-intro.texi -o $@ + cd $(srcdir); $(MAKEINFO) $< -o $@ emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi - $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $^ + $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $< emacs-lisp-intro.pdf: ${srcdir}/emacs-lisp-intro.texi - $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $^ + $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $< emacs-lisp-intro.html: ${srcdir}/emacs-lisp-intro.texi - $(MAKEINFO) --html -o $@ $^ + $(MAKEINFO) --html -o $@ $< .dvi.ps: $(DVIPS) $< -o $@ === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 18:39:01 +0000 +++ doc/lispref/ChangeLog 2010-10-09 19:39:42 +0000 @@ -1,5 +1,8 @@ 2010-10-09 Glenn Morris + * Makefile.in (srcs): Put elisp.texi first. + ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<. + * Makefile.in (infoclean): Remove harmless, long-standing error. * Makefile.in ($(infodir)): Delete rule. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 19:27:22 +0000 +++ doc/lispref/Makefile.in 2010-10-09 19:39:42 +0000 @@ -42,6 +42,7 @@ # List of all the texinfo files in the manual: srcs = \ + $(srcdir)/elisp.texi \ $(emacsdir)/emacsver.texi \ $(srcdir)/abbrevs.texi \ $(srcdir)/advice.texi \ @@ -56,7 +57,6 @@ $(srcdir)/debugging.texi \ $(srcdir)/display.texi \ $(srcdir)/edebug.texi \ - $(srcdir)/elisp.texi \ $(srcdir)/errors.texi \ $(srcdir)/eval.texi \ $(srcdir)/files.texi \ @@ -107,13 +107,13 @@ $(infodir)/elisp: $(srcs) $(mkinfodir) - cd $(srcdir); $(MAKEINFO) -I. -I$(texinfodir) elisp.texi -o $@ + cd $(srcdir); $(MAKEINFO) -I. -I$(texinfodir) $< -o $@ elisp.dvi: $(srcs) - $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi + $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $< elisp.pdf: $(srcs) - $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi + $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $< .PHONY: mostlyclean clean distclean maintainer-clean infoclean ------------------------------------------------------------ revno: 101880 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 12:27:22 -0700 message: Fix previous doc/*/Makefile.in change. diff: === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 18:39:01 +0000 +++ doc/emacs/Makefile.in 2010-10-09 19:27:22 +0000 @@ -121,7 +121,7 @@ ## repository and the release tarfiles. We do not use any ## equivalent of mkdir -p/mkinstalldirs, so this is not a general ## solution anyway. The second test -d is for parallel builds. -mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 18:39:01 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 19:27:22 +0000 @@ -34,7 +34,7 @@ TEXI2PDF = texi2pdf DVIPS = dvips -mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .SUFFIXES: .dvi .ps .texi === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 18:39:01 +0000 +++ doc/lispref/Makefile.in 2010-10-09 19:27:22 +0000 @@ -96,7 +96,7 @@ $(srcdir)/gpl.texi \ $(srcdir)/doclicense.texi -mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 18:39:01 +0000 +++ doc/misc/Makefile.in 2010-10-09 19:27:22 +0000 @@ -201,7 +201,7 @@ ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)" -mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} +mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf ------------------------------------------------------------ revno: 101879 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 11:51:21 -0700 message: * doc/man/b2m.1: Remove file. diff: === modified file 'doc/man/ChangeLog' --- doc/man/ChangeLog 2010-09-25 21:42:48 +0000 +++ doc/man/ChangeLog 2010-10-09 18:51:21 +0000 @@ -1,3 +1,7 @@ +2010-10-09 Glenn Morris + + * b2m.1: Remove file. + 2010-09-25 Ulrich Mueller * etags.1: xz compression is now supported. === removed file 'doc/man/b2m.1' --- doc/man/b2m.1 2010-01-13 08:35:10 +0000 +++ doc/man/b2m.1 1970-01-01 00:00:00 +0000 @@ -1,64 +0,0 @@ -.\" See section COPYING for copyright and redistribution information. -.TH b2m 1 -.SH NAME -b2m \- convert old Emacs Rmail Babyl format to mbox format -.SH SYNOPSIS -.B b2m -< -.I babyl-file -> -.I mbox-file -.SH DESCRIPTION -.B b2m -accepts Babyl format mail (as used by older versions of -.BR Rmail -in -.BR "GNU Emacs" ) -on standard input, and converts it to mbox format on standard output. -Babyl was the storage format used by Rmail prior to Emacs 23.1. Since -then, it uses standard mbox format. This program is distributed with -.BR "GNU Emacs" . -.PP -.SH OPTIONS -The program accepts unambiguous abbreviations for long option names. -.TP -.B \-V, \-\-version -Display version information. -.TP -.B \-h, \-\-help -Display basic usage information. -. -.SH SEE ALSO -The Babyl format is described in the file -.B etc/BABYL -in the Emacs distribution. -.B Rmail -is documented in the GNU Emacs manual, which you can read using -.BR Info , -either from Emacs or as a standalone program. -. -.SH AUTHORS -.I b2m -was originally written by Ed Wilkinson. Francesco Potorti updated it -according to the GNU coding standards. -.SH COPYING -Copyright -.if t \(co -.if n (C) -2008, 2009, 2010 Free Software Foundation, Inc. -.PP -Permission is granted to make and distribute verbatim copies of this -document provided the copyright notice and this permission notice are -preserved on all copies. -.PP -Permission is granted to copy and distribute modified versions of -this document under the conditions for verbatim copying, provided that -the entire resulting derived work is distributed under the terms of -a permission notice identical to this one. -.PP -Permission is granted to copy and distribute translations of this -document into another language, under the above conditions for -modified versions, except that this permission notice may be stated -in a translation approved by the Free Software Foundation. -. -.\" arch-tag: 7586e605-c400-447e-82ff-4d38e3c0a37d ------------------------------------------------------------ revno: 101878 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 11:46:57 -0700 message: * make-dist: No more doc/emacs/*.texi.in. diff: === modified file 'ChangeLog' --- ChangeLog 2010-10-09 17:59:55 +0000 +++ ChangeLog 2010-10-09 18:46:57 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * make-dist: No more doc/emacs/*.texi.in. + * configure.in (AC_OUTPUT): Remove doc/emacs/emacsver.texi. 2010-10-09 Glenn Morris === modified file 'make-dist' --- make-dist 2010-10-09 01:41:21 +0000 +++ make-dist 2010-10-09 18:46:57 +0000 @@ -669,7 +669,7 @@ # FIXME ? Why including *.aux etc? echo "Making links to \`doc/emacs'" (cd doc/emacs - ln *.texi *.texi.in *.aux *.fns *.kys *.vrs ../../${tempdir}/doc/emacs + ln *.texi *.aux *.fns *.kys *.vrs ../../${tempdir}/doc/emacs ln makefile.w32-in ../../${tempdir}/doc/emacs test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/emacs ln ChangeLog ../../${tempdir}/doc/emacs ------------------------------------------------------------ revno: 101877 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 11:39:01 -0700 message: Quieten emacs-devel. * doc/misc/Makefile.in (maintainer-clean): Remove harmless, long-standing error. * doc/lispref/Makefile.in (infoclean): Remove harmless, long-standing error. * doc/lispintro/Makefile.in (infoclean): Remove harmless, long-standing error. * doc/emacs/Makefile.in (infoclean): Remove harmless, long-standing error. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 18:31:12 +0000 +++ doc/emacs/ChangeLog 2010-10-09 18:39:01 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (infoclean): Remove harmless, long-standing error. + * Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/emacs): Use $mkinfodir instead of infodir. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 18:31:12 +0000 +++ doc/emacs/Makefile.in 2010-10-09 18:39:01 +0000 @@ -166,7 +166,7 @@ ## In the standalone tarfile, the clean rule runs this. infoclean: - -cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9] + -cd $(srcdir) && cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9] maintainer-clean: distclean infoclean === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2010-10-09 18:31:12 +0000 +++ doc/lispintro/ChangeLog 2010-10-09 18:39:01 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (infoclean): Remove harmless, long-standing error. + * Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/eintr): Use $mkinfodir instead of infodir. === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 18:31:12 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 18:39:01 +0000 @@ -78,7 +78,7 @@ distclean: clean infoclean: - -cd $(infodir) && rm -f eintr eintr-[1-9] + -cd $(srcdir) && cd $(infodir) && rm -f eintr eintr-[1-9] maintainer-clean: distclean infoclean === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 18:31:12 +0000 +++ doc/lispref/ChangeLog 2010-10-09 18:39:01 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (infoclean): Remove harmless, long-standing error. + * Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/elisp): Use $mkinfodir instead of infodir. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 18:31:12 +0000 +++ doc/lispref/Makefile.in 2010-10-09 18:39:01 +0000 @@ -130,7 +130,7 @@ distclean: clean infoclean: - -cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9] + -cd $(srcdir) && cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9] maintainer-clean: distclean infoclean === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 18:31:12 +0000 +++ doc/misc/ChangeLog 2010-10-09 18:39:01 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Glenn Morris + * Makefile.in (maintainer-clean): Remove harmless, long-standing error. + * Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. Use it in all the info rules, rather than depending on infodir. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 18:31:12 +0000 +++ doc/misc/Makefile.in 2010-10-09 18:39:01 +0000 @@ -675,8 +675,9 @@ distclean: clean # rm -f Makefile +## infodir is relative to srcdir. maintainer-clean: distclean - for file in $(INFO_TARGETS); do \ + cd $(srcdir); for file in $(INFO_TARGETS); do \ rm -f $${file} $${file}-[1-9] $${file}-[1-9][0-9]; \ done ------------------------------------------------------------ revno: 101876 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 11:31:12 -0700 message: Avoid having a directory as a prerequisite in doc Makefiles. It does not play well with time-stamping. * doc/misc/Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. Use it in all the info rules, rather than depending on infodir. * doc/lispref/Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/elisp): Use $mkinfodir instead of infodir. * doc/lispintro/Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/eintr): Use $mkinfodir instead of infodir. * doc/emacs/Makefile.in ($(infodir)): Delete rule. (mkinfodir): New. ($(infodir)/emacs): Use $mkinfodir instead of infodir. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 17:59:55 +0000 +++ doc/emacs/ChangeLog 2010-10-09 18:31:12 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * Makefile.in ($(infodir)): Delete rule. + (mkinfodir): New. + ($(infodir)/emacs): Use $mkinfodir instead of infodir. + * Makefile.in (distclean): Do not delete emacsver.texi. * emacsver.texi: New file, replacing emacsver.texi.in. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 17:59:55 +0000 +++ doc/emacs/Makefile.in 2010-10-09 18:31:12 +0000 @@ -117,13 +117,15 @@ ${srcdir}/kmacro.texi \ $(EMACS_XTRA) +## This seems pointless. The info/ directory exists in both the +## repository and the release tarfiles. We do not use any +## equivalent of mkdir -p/mkinstalldirs, so this is not a general +## solution anyway. The second test -d is for parallel builds. +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} + .PHONY: info dvi pdf info: $(infodir)/emacs - -$(infodir): - mkdir $@ || test -d $@ - dvi: emacs.dvi pdf: emacs.pdf @@ -131,7 +133,8 @@ # There is no provision for Info files to exist in the build directory. # In a distribution of Emacs, the Info files should be up to date. -$(infodir)/emacs: $(infodir) ${EMACSSOURCES} +$(infodir)/emacs: ${EMACSSOURCES} + $(mkinfodir) cd $(srcdir); $(MAKEINFO) emacs.texi -o $@ emacs.dvi: ${EMACSSOURCES} === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2010-10-09 01:02:21 +0000 +++ doc/lispintro/ChangeLog 2010-10-09 18:31:12 +0000 @@ -1,5 +1,11 @@ 2010-10-09 Glenn Morris + * Makefile.in ($(infodir)): Delete rule. + (mkinfodir): New. + ($(infodir)/eintr): Use $mkinfodir instead of infodir. + +2010-10-09 Glenn Morris + * Makefile.in (.PHONY): Declare info, dvi, html, pdf, dist. 2010-10-07 Glenn Morris === modified file 'doc/lispintro/Makefile.in' --- doc/lispintro/Makefile.in 2010-10-09 01:02:21 +0000 +++ doc/lispintro/Makefile.in 2010-10-09 18:31:12 +0000 @@ -34,22 +34,22 @@ TEXI2PDF = texi2pdf DVIPS = dvips +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} + .SUFFIXES: .dvi .ps .texi .PHONY: info dvi html pdf info: ${infodir}/eintr -$(infodir): - mkdir $@ || test -d $@ - dvi: emacs-lisp-intro.dvi html: emacs-lisp-intro.html pdf: emacs-lisp-intro.pdf # The file name eintr must fit within 5 characters, to allow for # -NN extensions to fit into DOS 8+3 limits without clashing. -${infodir}/eintr: $(infodir) ${srcdir}/emacs-lisp-intro.texi +${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) emacs-lisp-intro.texi -o $@ emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2010-10-09 02:09:46 +0000 +++ doc/lispref/ChangeLog 2010-10-09 18:31:12 +0000 @@ -1,5 +1,11 @@ 2010-10-09 Glenn Morris + * Makefile.in ($(infodir)): Delete rule. + (mkinfodir): New. + ($(infodir)/elisp): Use $mkinfodir instead of infodir. + +2010-10-09 Glenn Morris + * Makefile.in (emacsdir): New variable. (MAKEINFO): Add -I $emacsdir. (dist): Copy emacsver.texi. === modified file 'doc/lispref/Makefile.in' --- doc/lispref/Makefile.in 2010-10-09 02:09:46 +0000 +++ doc/lispref/Makefile.in 2010-10-09 18:31:12 +0000 @@ -96,6 +96,8 @@ $(srcdir)/gpl.texi \ $(srcdir)/doclicense.texi +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} + .PHONY: info dvi pdf # The info file is named `elisp'. @@ -103,10 +105,8 @@ dvi: elisp.dvi pdf: elisp.pdf -$(infodir): - mkdir $@ || test -d $@ - -$(infodir)/elisp: $(infodir) $(srcs) +$(infodir)/elisp: $(srcs) + $(mkinfodir) cd $(srcdir); $(MAKEINFO) -I. -I$(texinfodir) elisp.texi -o $@ elisp.dvi: $(srcs) === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2010-10-09 02:09:46 +0000 +++ doc/misc/ChangeLog 2010-10-09 18:31:12 +0000 @@ -1,5 +1,11 @@ 2010-10-09 Glenn Morris + * Makefile.in ($(infodir)): Delete rule. + (mkinfodir): New. Use it in all the info rules, rather than depending + on infodir. + +2010-10-09 Glenn Morris + * gnus.texi (Article Washing): Fix previous change. * Makefile.in (emacsdir): New variable. === modified file 'doc/misc/Makefile.in' --- doc/misc/Makefile.in 2010-10-09 02:09:46 +0000 +++ doc/misc/Makefile.in 2010-10-09 18:31:12 +0000 @@ -201,14 +201,12 @@ ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)" +mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir} .PHONY: info dvi pdf info: $(INFO_TARGETS) -$(infodir): - mkdir $@ || test -d $@ - dvi: $(DVI_TARGETS) pdf: $(PDF_TARGETS) @@ -220,7 +218,8 @@ ## "short" target names for convenience, to just rebuild one manual. ada-mode : $(infodir)/ada-mode -$(infodir)/ada-mode: ada-mode.texi $(infodir) +$(infodir)/ada-mode: ada-mode.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) ada-mode.texi ada-mode.dvi: ada-mode.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi @@ -228,7 +227,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi auth : $(infodir)/auth -$(infodir)/auth: auth.texi $(infodir) +$(infodir)/auth: auth.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) auth.texi auth.dvi: auth.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi @@ -236,7 +236,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi autotype : $(infodir)/autotype -$(infodir)/autotype: autotype.texi $(infodir) +$(infodir)/autotype: autotype.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) autotype.texi autotype.dvi: autotype.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi @@ -244,7 +245,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi calc : $(infodir)/calc -$(infodir)/calc: calc.texi $(infodir) +$(infodir)/calc: calc.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) calc.texi calc.dvi: calc.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi @@ -252,7 +254,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi ccmode : $(infodir)/ccmode -$(infodir)/ccmode: cc-mode.texi $(infodir) +$(infodir)/ccmode: cc-mode.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) cc-mode.texi cc-mode.dvi: cc-mode.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi @@ -260,7 +263,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi cl : $(infodir)/cl -$(infodir)/cl: cl.texi $(infodir) +$(infodir)/cl: cl.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) cl.texi cl.dvi: cl.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi @@ -268,7 +272,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi dbus : $(infodir)/dbus -$(infodir)/dbus: dbus.texi $(infodir) +$(infodir)/dbus: dbus.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) dbus.texi dbus.dvi: dbus.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi @@ -276,7 +281,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi dired-x : $(infodir)/dired-x -$(infodir)/dired-x: dired-x.texi $(infodir) +$(infodir)/dired-x: dired-x.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) dired-x.texi dired-x.dvi: dired-x.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi @@ -284,7 +290,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi ebrowse : $(infodir)/ebrowse -$(infodir)/ebrowse: ebrowse.texi $(infodir) +$(infodir)/ebrowse: ebrowse.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) ebrowse.texi ebrowse.dvi: ebrowse.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi @@ -292,7 +299,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi ede : $(infodir)/ede -$(infodir)/ede: ede.texi $(infodir) +$(infodir)/ede: ede.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) ede.texi ede.dvi: ede.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi @@ -300,7 +308,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi ediff : $(infodir)/ediff -$(infodir)/ediff: ediff.texi $(infodir) +$(infodir)/ediff: ediff.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) ediff.texi ediff.dvi: ediff.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi @@ -308,7 +317,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi edt : $(infodir)/edt -$(infodir)/edt: edt.texi $(infodir) +$(infodir)/edt: edt.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) edt.texi edt.dvi: edt.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi @@ -316,7 +326,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi eieio : $(infodir)/eieio -$(infodir)/eieio: eieio.texi $(infodir) +$(infodir)/eieio: eieio.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) eieio.texi eieio.dvi: eieio.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi @@ -324,7 +335,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi emacs-mime : $(infodir)/emacs-mime -$(infodir)/emacs-mime: emacs-mime.texi $(infodir) +$(infodir)/emacs-mime: emacs-mime.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi emacs-mime.dvi: emacs-mime.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi @@ -332,7 +344,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi epa : $(infodir)/epa -$(infodir)/epa: epa.texi $(infodir) +$(infodir)/epa: epa.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) epa.texi epa.dvi: epa.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi @@ -340,7 +353,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi erc : $(infodir)/erc -$(infodir)/erc: erc.texi $(infodir) +$(infodir)/erc: erc.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) erc.texi erc.dvi: erc.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi @@ -348,7 +362,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi eshell : $(infodir)/eshell -$(infodir)/eshell: eshell.texi $(infodir) +$(infodir)/eshell: eshell.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) eshell.texi eshell.dvi: eshell.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi @@ -357,6 +372,7 @@ eudc : $(infodir)/eudc $(infodir)/eudc: eudc.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) eudc.texi eudc.dvi: eudc.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi @@ -364,7 +380,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi efaq : $(infodir)/efaq -$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi $(infodir) +$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) -I $(emacsdir) faq.texi faq.dvi: faq.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi @@ -373,6 +390,7 @@ flymake : $(infodir)/flymake $(infodir)/flymake: flymake.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) flymake.texi flymake.dvi: flymake.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi @@ -380,7 +398,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi forms : $(infodir)/forms -$(infodir)/forms: forms.texi $(infodir) +$(infodir)/forms: forms.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) forms.texi forms.dvi: forms.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi @@ -389,7 +408,8 @@ # gnus/message/emacs-mime/sieve/pgg are part of Gnus: gnus : $(infodir)/gnus -$(infodir)/gnus: gnus.texi gnus-faq.texi $(infodir) +$(infodir)/gnus: gnus.texi gnus-faq.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) gnus.texi gnus.dvi: gnus.texi gnus-faq.texi sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi @@ -405,7 +425,8 @@ # This is produced with --no-split to avoid making files whose # names clash on DOS 8+3 filesystems idlwave : $(infodir)/idlwave -$(infodir)/idlwave: idlwave.texi $(infodir) +$(infodir)/idlwave: idlwave.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi idlwave.dvi: idlwave.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi @@ -416,7 +437,8 @@ # the @setfilename directive in info.texi, which is required for # the Texinfo distribution. ###info : $(infodir)/info # circular! -$(infodir)/info: info.texi $(infodir) +$(infodir)/info: info.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@ info.dvi: info.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi @@ -424,7 +446,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi mairix-el : $(infodir)/mairix-el -$(infodir)/mairix-el: mairix-el.texi $(infodir) +$(infodir)/mairix-el: mairix-el.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) mairix-el.texi mairix-el.dvi: mairix-el.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi @@ -432,7 +455,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi message : $(infodir)/message -$(infodir)/message: message.texi $(infodir) +$(infodir)/message: message.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) message.texi message.dvi: message.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi @@ -440,7 +464,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi mh-e : $(infodir)/mh-e -$(infodir)/mh-e: mh-e.texi $(infodir) +$(infodir)/mh-e: mh-e.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) mh-e.texi mh-e.dvi: mh-e.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi @@ -448,7 +473,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi newsticker : $(infodir)/newsticker -$(infodir)/newsticker: newsticker.texi $(infodir) +$(infodir)/newsticker: newsticker.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) newsticker.texi newsticker.dvi: newsticker.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi @@ -456,7 +482,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi nxml-mode : $(infodir)/nxml-mode -$(infodir)/nxml-mode: nxml-mode.texi $(infodir) +$(infodir)/nxml-mode: nxml-mode.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) nxml-mode.texi nxml-mode.dvi: nxml-mode.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi @@ -464,7 +491,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi org : $(infodir)/org -$(infodir)/org: org.texi $(infodir) +$(infodir)/org: org.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) org.texi org.dvi: org.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi @@ -472,7 +500,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi pcl-cvs : $(infodir)/pcl-cvs -$(infodir)/pcl-cvs: pcl-cvs.texi $(infodir) +$(infodir)/pcl-cvs: pcl-cvs.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) pcl-cvs.texi pcl-cvs.dvi: pcl-cvs.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi @@ -480,7 +509,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi pgg : $(infodir)/pgg -$(infodir)/pgg: pgg.texi $(infodir) +$(infodir)/pgg: pgg.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) pgg.texi pgg.dvi: pgg.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi @@ -488,7 +518,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi rcirc : $(infodir)/rcirc -$(infodir)/rcirc: rcirc.texi $(infodir) +$(infodir)/rcirc: rcirc.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) rcirc.texi rcirc.dvi: rcirc.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi @@ -496,7 +527,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi reftex : $(infodir)/reftex -$(infodir)/reftex: reftex.texi $(infodir) +$(infodir)/reftex: reftex.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) reftex.texi reftex.dvi: reftex.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi @@ -504,7 +536,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi remember : $(infodir)/remember -$(infodir)/remember: remember.texi $(infodir) +$(infodir)/remember: remember.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) remember.texi remember.dvi: remember.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi @@ -512,7 +545,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi sasl : $(infodir)/sasl -$(infodir)/sasl: sasl.texi $(infodir) +$(infodir)/sasl: sasl.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) sasl.texi sasl.dvi: sasl.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi @@ -520,7 +554,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi sc : $(infodir)/sc -$(infodir)/sc: sc.texi $(infodir) +$(infodir)/sc: sc.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) sc.texi sc.dvi: sc.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi @@ -528,7 +563,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi semantic : $(infodir)/semantic -$(infodir)/semantic: semantic.texi sem-user.texi $(infodir) +$(infodir)/semantic: semantic.texi sem-user.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) semantic.texi semantic.dvi: semantic.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi @@ -536,7 +572,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi ses : $(infodir)/ses -$(infodir)/ses: ses.texi $(infodir) +$(infodir)/ses: ses.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) ses.texi ses.dvi: ses.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi @@ -544,7 +581,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi sieve : $(infodir)/sieve -$(infodir)/sieve: sieve.texi $(infodir) +$(infodir)/sieve: sieve.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) sieve.texi sieve.dvi: sieve.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi @@ -552,7 +590,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi smtpmail : $(infodir)/smtpmail -$(infodir)/smtpmail: smtpmail.texi $(infodir) +$(infodir)/smtpmail: smtpmail.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) smtpmail.texi smtpmail.dvi: smtpmail.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi @@ -560,7 +599,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi speedbar : $(infodir)/speedbar -$(infodir)/speedbar: speedbar.texi $(infodir) +$(infodir)/speedbar: speedbar.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) speedbar.texi speedbar.dvi: speedbar.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi @@ -568,7 +608,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi tramp : $(infodir)/tramp -$(infodir)/tramp: tramp.texi trampver.texi $(infodir) +$(infodir)/tramp: tramp.texi trampver.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi tramp.dvi: tramp.texi trampver.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi @@ -576,7 +617,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi url : $(infodir)/url -$(infodir)/url: url.texi $(infodir) +$(infodir)/url: url.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) url.texi url.dvi: url.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi @@ -584,7 +626,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi vip : $(infodir)/vip -$(infodir)/vip: vip.texi $(infodir) +$(infodir)/vip: vip.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) vip.texi vip.dvi: vip.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi @@ -592,7 +635,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi viper : $(infodir)/viper -$(infodir)/viper: viper.texi $(infodir) +$(infodir)/viper: viper.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) viper.texi viper.dvi: viper.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi @@ -600,7 +644,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi widget : $(infodir)/widget -$(infodir)/widget: widget.texi $(infodir) +$(infodir)/widget: widget.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) widget.texi widget.dvi: widget.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi @@ -608,7 +653,8 @@ $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi woman : $(infodir)/woman -$(infodir)/woman: woman.texi $(infodir) +$(infodir)/woman: woman.texi + $(mkinfodir) cd $(srcdir); $(MAKEINFO) woman.texi woman.dvi: woman.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi ------------------------------------------------------------ revno: 101875 committer: Glenn Morris branch nick: trunk timestamp: Sat 2010-10-09 10:59:55 -0700 message: * configure.in (AC_OUTPUT): Remove doc/emacs/emacsver.texi. * configure: Regenerate. * .bzrignore: Remove doc/emacs/emacsver.texi. * doc/emacs/Makefile.in (distclean): Do not delete emacsver.texi. * doc/emacs/emacsver.texi: New file, replacing emacsver.texi.in. * admin/admin.el (set-version): Add doc/emacs/emacsver.texi. diff: === modified file '.bzrignore' --- .bzrignore 2010-10-09 02:13:20 +0000 +++ .bzrignore 2010-10-09 17:59:55 +0000 @@ -29,7 +29,6 @@ TAGS-LISP info/* admin/unidata/unidata.txt -doc/emacs/emacsver.texi leim/leim-list.el leim/quail/*.el leim/changed.misc === modified file 'ChangeLog' --- ChangeLog 2010-10-09 02:16:38 +0000 +++ ChangeLog 2010-10-09 17:59:55 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * configure.in (AC_OUTPUT): Remove doc/emacs/emacsver.texi. + +2010-10-09 Glenn Morris + * configure.in: Combine some conditionals. * configure.in (AC_OUTPUT): Add doc/emacs/emacsver.texi. === modified file 'admin/ChangeLog' --- admin/ChangeLog 2010-10-09 01:41:21 +0000 +++ admin/ChangeLog 2010-10-09 17:59:55 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Glenn Morris + * admin.el (set-version): Add doc/emacs/emacsver.texi. + +2010-10-09 Glenn Morris + * admin.el (set-version): No need to act on doc/ files any more. * quick-install-emacs (PUBLIC_LIBSRC_BINARIES): Remove b2m. === modified file 'admin/admin.el' --- admin/admin.el 2010-10-09 01:41:21 +0000 +++ admin/admin.el 2010-10-09 17:59:55 +0000 @@ -70,6 +70,9 @@ (rx (and "AC_INIT" (1+ (not (in ?,))) ?, (0+ space) (submatch (1+ (in "0-9.")))))) + (set-version-in-file root "doc/emacs/emacsver.texi" version + (rx (and "EMACSVER" (1+ space) + (submatch (1+ (in "0-9.")))))) (set-version-in-file root "doc/man/emacs.1" version (rx (and ".TH EMACS" (1+ not-newline) "GNU Emacs" (1+ space) === modified file 'configure' --- configure 2010-10-09 01:59:50 +0000 +++ configure 2010-10-09 17:59:55 +0000 @@ -15017,7 +15017,7 @@ test "${exec_prefix}" != NONE && exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'` -ac_config_files="$ac_config_files Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile doc/emacs/emacsver.texi" +ac_config_files="$ac_config_files Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile" ac_config_commands="$ac_config_commands default" @@ -15726,7 +15726,6 @@ "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;; "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;; "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;; - "doc/emacs/emacsver.texi") CONFIG_FILES="$CONFIG_FILES doc/emacs/emacsver.texi" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; === modified file 'configure.in' --- configure.in 2010-10-09 02:16:38 +0000 +++ configure.in 2010-10-09 17:59:55 +0000 @@ -3771,8 +3771,7 @@ AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile \ doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \ doc/lispref/Makefile src/Makefile \ - lwlib/Makefile lisp/Makefile leim/Makefile \ - doc/emacs/emacsver.texi, [ + lwlib/Makefile lisp/Makefile leim/Makefile, [ ### Make the necessary directories, if they don't exist. for dir in etc lisp ; do === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2010-10-09 02:09:46 +0000 +++ doc/emacs/ChangeLog 2010-10-09 17:59:55 +0000 @@ -1,5 +1,10 @@ 2010-10-09 Glenn Morris + * Makefile.in (distclean): Do not delete emacsver.texi. + * emacsver.texi: New file, replacing emacsver.texi.in. + +2010-10-09 Glenn Morris + * emacsver.texi.in: New file. * emacs.texi: Set EMACSVER by including emacsver.texi. * Makefile.in (distclean): Delete emacsver.texi. === modified file 'doc/emacs/Makefile.in' --- doc/emacs/Makefile.in 2010-10-09 02:09:46 +0000 +++ doc/emacs/Makefile.in 2010-10-09 17:59:55 +0000 @@ -160,7 +160,6 @@ rm -f emacs-manual-${version}.tar* distclean: clean - rm -f emacsver.texi ## In the standalone tarfile, the clean rule runs this. infoclean: === renamed file 'doc/emacs/emacsver.texi.in' => 'doc/emacs/emacsver.texi' --- doc/emacs/emacsver.texi.in 2010-10-09 01:41:21 +0000 +++ doc/emacs/emacsver.texi 2010-10-09 17:59:55 +0000 @@ -1,1 +1,4 @@ -@set EMACSVER @version@ +@c It would be nicer to generate this using configure and @version@. +@c However, that would mean emacsver.texi would always be newer +@c then the info files in release tarfiles. +@set EMACSVER 24.0.50 ------------------------------------------------------------ revno: 101874 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 17:44:44 +0200 message: (ibuffer-mode-map): Don't redefine the cursor keys, since that's too annoying. Move the filter groups commands to TAB/backtab. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 13:27:24 +0000 +++ lisp/ChangeLog 2010-10-09 15:44:44 +0000 @@ -1,5 +1,9 @@ 2010-10-09 Lars Magne Ingebrigtsen + * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys, + since that's too annoying. Move the filter groups commands to + TAB/backtab. + * epa.el (epa-passphrase-callback-function): Say what we're querying the password for. === modified file 'lisp/ibuffer.el' --- lisp/ibuffer.el 2010-10-09 13:23:29 +0000 +++ lisp/ibuffer.el 2010-10-09 15:44:44 +0000 @@ -433,10 +433,8 @@ ;; immediate operations (define-key map (kbd "n") 'ibuffer-forward-line) - (define-key map (kbd "") 'ibuffer-forward-line) (define-key map (kbd "SPC") 'forward-line) (define-key map (kbd "p") 'ibuffer-backward-line) - (define-key map (kbd "") 'ibuffer-backward-line) (define-key map (kbd "M-}") 'ibuffer-forward-next-marked) (define-key map (kbd "M-{") 'ibuffer-backwards-next-marked) (define-key map (kbd "l") 'ibuffer-redisplay) @@ -477,9 +475,9 @@ (define-key map (kbd "/ /") 'ibuffer-filter-disable) (define-key map (kbd "M-n") 'ibuffer-forward-filter-group) - (define-key map (kbd "") 'ibuffer-forward-filter-group) + (define-key map "\t" 'ibuffer-forward-filter-group) (define-key map (kbd "M-p") 'ibuffer-backward-filter-group) - (define-key map (kbd "") 'ibuffer-backward-filter-group) + (define-key map [backtab] 'ibuffer-backward-filter-group) (define-key map (kbd "M-j") 'ibuffer-jump-to-filter-group) (define-key map (kbd "C-k") 'ibuffer-kill-line) (define-key map (kbd "C-y") 'ibuffer-yank) ------------------------------------------------------------ revno: 101873 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 16:31:56 +0200 message: Don't use foo() to talk about functions. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-10-09 13:54:57 +0000 +++ src/ChangeLog 2010-10-09 14:31:56 +0000 @@ -1,9 +1,9 @@ 2010-10-09 Lars Magne Ingebrigtsen * gnutls.c (syms_of_gnutls): All the bootprops are keywords. - (emacs_gnutls_write): Remove the debuggin fsync() call. + (emacs_gnutls_write): Remove the debuggin fsync call. (emacs_gnutls_read): Return -1 if we got an error from - gnutls_read(). This allows us to actually read lots of data from + gnutls_read. This allows us to actually read lots of data from the GnuTLS stream. (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR. According to the documentation, this is correct, and it seems to ------------------------------------------------------------ revno: 101872 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 15:54:57 +0200 message: (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR. According to the documentation, this is correct, and it seems to make things work. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-10-09 13:19:30 +0000 +++ src/ChangeLog 2010-10-09 13:54:57 +0000 @@ -5,6 +5,9 @@ (emacs_gnutls_read): Return -1 if we got an error from gnutls_read(). This allows us to actually read lots of data from the GnuTLS stream. + (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR. + According to the documentation, this is correct, and it seems to + make things work. 2010-10-09 Chong Yidong === modified file 'src/gnutls.c' --- src/gnutls.c 2010-10-09 13:19:30 +0000 +++ src/gnutls.c 2010-10-09 13:54:57 +0000 @@ -86,9 +86,9 @@ { rtnval = gnutls_write (state, buf, nbyte); - if (rtnval == -1) + if (rtnval < 0) { - if (errno == EINTR) + if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED) continue; else return (bytes_written ? bytes_written : -1); ------------------------------------------------------------ revno: 101871 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 15:27:24 +0200 message: (epa-passphrase-callback-function): Say what we're querying the password for. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 13:23:29 +0000 +++ lisp/ChangeLog 2010-10-09 13:27:24 +0000 @@ -1,5 +1,8 @@ 2010-10-09 Lars Magne Ingebrigtsen + * epa.el (epa-passphrase-callback-function): Say what we're + querying the password for. + * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers behaviour, don't bury the ibuffer buffer when visiting other buffers. === modified file 'lisp/epa.el' --- lisp/epa.el 2010-05-25 17:53:37 +0000 +++ lisp/epa.el 2010-10-09 13:27:24 +0000 @@ -635,8 +635,15 @@ (defun epa-passphrase-callback-function (context key-id handback) (if (eq key-id 'SYM) - (read-passwd "Passphrase for symmetric encryption: " - (eq (epg-context-operation context) 'encrypt)) + (read-passwd + (format "Passphrase for symmetric encryption%s: " + (let ((elem (epg-context-passphrase-callback context))) + ;; Add the file name to the prompt, if any. + (if (and (consp elem) + (stringp (cdr elem))) + (format " for %s" (cdr elem)) + ""))) + (eq (epg-context-operation context) 'encrypt)) (read-passwd (if (eq key-id 'PIN) "Passphrase for PIN: " ------------------------------------------------------------ revno: 101870 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 15:23:29 +0200 message: * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers behaviour, don't bury the ibuffer buffer when visiting other buffers. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-10-09 03:23:38 +0000 +++ lisp/ChangeLog 2010-10-09 13:23:29 +0000 @@ -1,3 +1,9 @@ +2010-10-09 Lars Magne Ingebrigtsen + + * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers + behaviour, don't bury the ibuffer buffer when visiting other + buffers. + 2010-10-08 Chong Yidong * cus-edit.el (custom-commands, custom-buffer-create-internal) === modified file 'lisp/ibuffer.el' --- lisp/ibuffer.el 2010-09-25 21:42:48 +0000 +++ lisp/ibuffer.el 2010-10-09 13:23:29 +0000 @@ -1053,7 +1053,6 @@ one window." (interactive "P") (let ((buf (ibuffer-current-buffer t))) - (bury-buffer (current-buffer)) (switch-to-buffer buf) (when single (delete-other-windows)))) ------------------------------------------------------------ revno: 101869 committer: Lars Magne Ingebrigtsen branch nick: trunk timestamp: Sat 2010-10-09 15:19:30 +0200 message: Make emacs_gnutls_read() return the expected on errors. Also interface cleanups. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-10-09 03:30:31 +0000 +++ src/ChangeLog 2010-10-09 13:19:30 +0000 @@ -1,3 +1,11 @@ +2010-10-09 Lars Magne Ingebrigtsen + + * gnutls.c (syms_of_gnutls): All the bootprops are keywords. + (emacs_gnutls_write): Remove the debuggin fsync() call. + (emacs_gnutls_read): Return -1 if we got an error from + gnutls_read(). This allows us to actually read lots of data from + the GnuTLS stream. + 2010-10-09 Chong Yidong * xterm.c (x_draw_relief_rect): Clear corner pixels. === modified file 'src/gnutls.c' --- src/gnutls.c 2010-10-03 22:37:37 +0000 +++ src/gnutls.c 2010-10-09 13:19:30 +0000 @@ -98,7 +98,6 @@ nbyte -= rtnval; bytes_written += rtnval; } - fsync (STDOUT_FILENO); return (bytes_written); } @@ -120,7 +119,7 @@ if (rtnval >= 0) return rtnval; else - return 0; + return -1; } /* convert an integer error to a Lisp_Object; it will be either a @@ -578,19 +577,19 @@ Qgnutls_x509pki = intern_c_string ("gnutls-x509pki"); staticpro (&Qgnutls_x509pki); - Qgnutls_bootprop_priority = intern_c_string ("priority"); + Qgnutls_bootprop_priority = intern_c_string (":priority"); staticpro (&Qgnutls_bootprop_priority); - Qgnutls_bootprop_trustfiles = intern_c_string ("trustfiles"); + Qgnutls_bootprop_trustfiles = intern_c_string (":trustfiles"); staticpro (&Qgnutls_bootprop_trustfiles); - Qgnutls_bootprop_keyfiles = intern_c_string ("keyfiles"); + Qgnutls_bootprop_keyfiles = intern_c_string (":keyfiles"); staticpro (&Qgnutls_bootprop_keyfiles); - Qgnutls_bootprop_callbacks = intern_c_string ("callbacks"); + Qgnutls_bootprop_callbacks = intern_c_string (":callbacks"); staticpro (&Qgnutls_bootprop_callbacks); - Qgnutls_bootprop_loglevel = intern_c_string ("loglevel"); + Qgnutls_bootprop_loglevel = intern_c_string (":loglevel"); staticpro (&Qgnutls_bootprop_loglevel); Qgnutls_e_interrupted = intern_c_string ("gnutls-e-interrupted"); ------------------------------------------------------------ revno: 101868 author: Julien Danjou committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-10-09 09:14:46 +0000 message: nnir.el (nnir-read-parm): Fix call to gnus-completing-read. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-10-09 08:44:12 +0000 +++ lisp/gnus/ChangeLog 2010-10-09 09:14:46 +0000 @@ -1,5 +1,7 @@ 2010-10-09 Julien Danjou + * nnir.el (nnir-read-parm): Fix call to gnus-completing-read. + * gnus-gravatar.el (gnus-gravatar-transform-address): Error errors when retrieving gravatars. === modified file 'lisp/gnus/nnir.el' --- lisp/gnus/nnir.el 2010-10-06 12:38:45 +0000 +++ lisp/gnus/nnir.el 2010-10-09 09:14:46 +0000 @@ -376,7 +376,7 @@ (imap nnir-run-imap ((criteria "Search in: " ; Prompt - ,nnir-imap-search-arguments ; alist for completing + ,(mapcar 'car nnir-imap-search-arguments) ; alist for completing nil ; no filtering nil ; allow any user input nil ; initial value @@ -1579,7 +1579,7 @@ (let ((sym (car parmspec)) (prompt (cdr parmspec))) (if (listp prompt) - (let* ((result (gnus-completing-read prompt nil)) + (let* ((result (apply 'gnus-completing-read prompt)) (mapping (or (assoc result nnir-imap-search-arguments) (assoc nil nnir-imap-search-arguments)))) (cons sym (format (cdr mapping) result))) ------------------------------------------------------------ revno: 101867 author: Julien Danjou committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-10-09 08:44:12 +0000 message: shr,el: Allow shr table char to be customized. gnus-gravatar.el (gnus-gravatar-transform-address): Error errors when retrieving gravatars. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-10-08 23:55:33 +0000 +++ lisp/gnus/ChangeLog 2010-10-09 08:44:12 +0000 @@ -1,3 +1,12 @@ +2010-10-09 Julien Danjou + + * gnus-gravatar.el (gnus-gravatar-transform-address): Error errors when + retrieving gravatars. + + * shr.el (shr-table-corner): Add. + (shr-table-line): Add. + (shr-insert-table-ruler): Use the above defcustoms to insert tables. + 2010-10-08 Julien Danjou * mm-decode.el (mm-text-html-renderer): Add mm-shr in choice list. === modified file 'lisp/gnus/gnus-gravatar.el' --- lisp/gnus/gnus-gravatar.el 2010-10-08 07:35:21 +0000 +++ lisp/gnus/gnus-gravatar.el 2010-10-09 08:44:12 +0000 @@ -68,10 +68,11 @@ (and (cdr address) (string-match gnus-gravatar-too-ugly (cdr address))))) - (gravatar-retrieve - (car address) - 'gnus-gravatar-insert - (list header address category)))))))) + (ignore-errors + (gravatar-retrieve + (car address) + 'gnus-gravatar-insert + (list header address category))))))))) (defun gnus-gravatar-insert (gravatar header address category) "Insert GRAVATAR for ADDRESS in HEADER in current article buffer. === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2010-10-08 23:55:33 +0000 +++ lisp/gnus/shr.el 2010-10-09 08:44:12 +0000 @@ -53,6 +53,16 @@ :group 'shr :type 'regexp) +(defcustom shr-table-line ?- + "Character used to draw table line." + :group 'shr + :type 'char) + +(defcustom shr-table-corner ?+ + "Charater used to draw table corner." + :group 'shr + :type 'char) + (defvar shr-content-function nil "If bound, this should be a function that will return the content. This is used for cid: URLs, and the function is called with the @@ -532,9 +542,9 @@ (defun shr-insert-table-ruler (widths) (shr-indent) - (insert "+") + (insert shr-table-corner) (dotimes (i (length widths)) - (insert (make-string (aref widths i) ?-) ?+)) + (insert (make-string (aref widths i) shr-table-line) shr-table-corner)) (insert "\n")) (defun shr-table-widths (table suggested-widths) ------------------------------------------------------------ revno: 101866 committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-10-09 04:22:17 +0000 message: gnus.texi: untabify. diff: === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2010-10-09 01:49:20 +0000 +++ doc/misc/gnus.texi 2010-10-09 04:22:17 +0000 @@ -25510,8 +25510,8 @@ (setq gnus-refer-article-method '(current - (nnregistry) - (nnweb "gmane" (nnweb-type gmane)))) + (nnregistry) + (nnweb "gmane" (nnweb-type gmane)))) @end example The example above instructs Gnus to first look up the article in the