From 88bfa2e405c457e05f6a481344c511fdfde2ebba Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 9 Dec 2007 02:08:47 +0000 Subject: (declare-function): Add compatibility declaration. (mm-append-to-file, w32-focus-frame): Declare as functions. --- lisp/gnus/gnus-util.el | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lisp/gnus/gnus-util.el') diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index de01fb2db11..8a6e8fa71cb 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -35,6 +35,9 @@ ;;; Code: +;; For Emacs < 22.2. +(eval-and-compile + (unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))) (eval-when-compile (require 'cl)) ;; Fixme: this should be a gnus variable, not nnmail-. @@ -987,6 +990,9 @@ with potentially long computations." (defvar rmail-default-rmail-file) (defvar mm-text-coding-system) +(declare-function mm-append-to-file "mm-util" + (start end filename &optional codesys inhibit)) + (defun gnus-output-to-rmail (filename &optional ask) "Append the current article to an Rmail file named FILENAME." (require 'rmail) @@ -1515,6 +1521,8 @@ CHOICE is a list of the choice char and help message at IDX." (kill-buffer buf)) tchar)) +(declare-function w32-focus-frame "../term/w32-win" (frame)) + (defun gnus-select-frame-set-input-focus (frame) "Select FRAME, raise it, and set input focus, if possible." (cond ((featurep 'xemacs) -- cgit v1.2.3 From 5ec7fe1bff1362d0bb58d0bbc854ca815c1bc81d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 11 Dec 2007 08:28:49 +0000 Subject: (gnus-group-name-decode): Autoload. (gnus-find-method-for-group, gnus-group-name-charset) (message-tokenize-header, gnus-get-buffer-create) (mm-enable-multibyte, gnus-put-text-property, gnus-overlay-put) (gnus-make-overlay, mm-disable-multibyte, gnus-add-text-properties): Declare as functions. --- lisp/gnus/ChangeLog | 5 +++++ lisp/gnus/gnus-util.el | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'lisp/gnus/gnus-util.el') diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index a09d3da95c0..cda28979cb1 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -18,6 +18,7 @@ * gnus-ems.el (gnus-alive-p): * gnus-fun.el (message-goto-eoh): + * gnus-util.el (gnus-group-name-decode): * mail-source.el (gnus-compress-sequence): * message.el (Info-goto-node, format-spec): * mm-bodies.el (message-options-get): @@ -48,6 +49,10 @@ * gnus-group.el (nnkiboze-score-file): * gnus-sum.el (turn-on-gnus-mailing-list-mode) (gnus-cache-write-active, mm-uu-dissect, idna-to-unicode): + * gnus-util.el (gnus-find-method-for-group, gnus-group-name-charset) + (message-tokenize-header, gnus-get-buffer-create) + (mm-enable-multibyte, gnus-put-text-property, gnus-overlay-put) + (gnus-make-overlay, mm-disable-multibyte, gnus-add-text-properties): * gnus.el (gnus-group-decoded-name): * mail-source.el (imap-capability): * mm-bodies.el (message-options-set): diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 8a6e8fa71cb..7b36c07da62 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -217,6 +217,13 @@ is slower." (search-forward ":" eol t) (point))))) +(declare-function gnus-find-method-for-group "gnus" (group &optional info)) +(autoload 'gnus-group-name-decode "gnus-group") +(declare-function gnus-group-name-charset "gnus-group" (method group)) +;; gnus-group requires gnus-int which requires message. +(declare-function message-tokenize-header "message" + (header &optional separator)) + (defun gnus-decode-newsgroups (newsgroups group &optional method) (let ((method (or method (gnus-find-method-for-group group)))) (mapconcat (lambda (group) @@ -657,6 +664,10 @@ If N, return the Nth ancestor instead." (defvar gnus-work-buffer " *gnus work*") +(declare-function gnus-get-buffer-create "gnus" (name)) +;; gnus.el requires mm-util. +(declare-function mm-enable-multibyte "mm-util") + (defun gnus-set-work-buffer () "Put point in the empty Gnus work buffer." (if (get-buffer gnus-work-buffer) @@ -841,6 +852,9 @@ If there's no subdirectory, delete DIRECTORY as well." (setq string (replace-match "" t t string))) string) +(declare-function gnus-put-text-property "gnus" + (start end property value &optional object)) + (defsubst gnus-put-text-property-excluding-newlines (beg end prop val) "The same as `put-text-property', but don't put this prop on any newlines in the region." (save-match-data @@ -852,6 +866,10 @@ If there's no subdirectory, delete DIRECTORY as well." (setq beg (point))) (gnus-put-text-property beg (point) prop val))))) +(declare-function gnus-overlay-put "gnus" (overlay prop value)) +(declare-function gnus-make-overlay "gnus" + (beg end &optional buffer front-advance rear-advance)) + (defsubst gnus-put-overlay-excluding-newlines (beg end prop val) "The same as `put-text-property', but don't put this prop on any newlines in the region." (save-match-data @@ -1205,6 +1223,9 @@ Return the modified alist." (throw 'found nil))) t)) +;; gnus.el requires mm-util. +(declare-function mm-disable-multibyte "mm-util") + (defun gnus-write-active-file (file hashtb &optional full-names) ;; `coding-system-for-write' should be `raw-text' or equivalent. (let ((coding-system-for-write nnmail-active-file-coding-system)) @@ -1272,6 +1293,9 @@ Return the modified alist." (pop l2)) l1)))) +(declare-function gnus-add-text-properties "gnus" + (start end properties &optional object)) + (defun gnus-add-text-properties-when (property value start end properties &optional object) "Like `gnus-add-text-properties', only applied on where PROPERTY is VALUE." -- cgit v1.2.3 From bbbe940b6d5834189ea6d48d70a2e8f113cf53e9 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Sun, 16 Dec 2007 04:31:33 +0000 Subject: Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-955 --- doc/misc/ChangeLog | 4 ++ doc/misc/gnus.texi | 2 +- lisp/ChangeLog | 4 ++ lisp/gnus/ChangeLog | 39 ++++++++++++++++ lisp/gnus/gnus-art.el | 124 ++++++++++++++++++++++++++----------------------- lisp/gnus/gnus-sum.el | 10 ++-- lisp/gnus/gnus-util.el | 26 +++++++---- lisp/gnus/mm-decode.el | 31 +++++++++++++ lisp/pgg.el | 32 +++++++------ 9 files changed, 185 insertions(+), 87 deletions(-) (limited to 'lisp/gnus/gnus-util.el') diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 89e4974490d..8e4eab56b15 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,7 @@ +2007-12-14 Sven Joachim + + * gnus.texi (Score Variables): Fix typo. + 2007-12-07 Michael Albinus * dbus.texi (Synchronous Methods): Adapt dbus-call-method. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 8ec39ce81fe..4a165c62b25 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -20529,7 +20529,7 @@ Suffix to add to the group name to arrive at the score file name @vindex gnus-score-uncacheable-files @cindex score cache All score files are normally cached to avoid excessive re-loading of -score files. However, if this might make your Emacs grow big and +score files. However, this might make your Emacs grow big and bloated, so this regexp can be used to weed out score files unlikely to be needed again. It would be a bad idea to deny caching of @file{all.SCORE}, while it might be a good idea to not cache diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fffb1e03f60..fb82a128413 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -18,6 +18,10 @@ * calc/calc.el (calc-set-mode-line): Use `math-lang-name' to set language name. +2007-12-10 Katsumi Yamaoka + + * pgg.el (pgg-run-at-time, pgg-cancel-timer): Use eval-and-compile. + 2007-12-10 Stefan Monnier * server.el (server-select-display): Fix important typo. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index cda28979cb1..d8bb4876269 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,38 @@ +2007-12-15 Reiner Steib + + * gnus-art.el (article-verify-x-pgp-sig): Add reference to X-PGP-Sig + format document. + (gnus-mime-delete-part): Don't write description line if empty. + (gnus-article-encrypt-body): Add confirmation for gnus-novice-user. + +2007-12-14 Johan Bockg,Ae(Brd + + * gnus-sum.el (gnus-summary-mark-unread-as-read) + (gnus-summary-mark-read-and-unread-as-read) + (gnus-summary-mark-current-read-and-unread-as-read) + (gnus-summary-mark-unread-as-ticked): Doc fix. + `gnus-mark-article-hook', not `gnus-summary-mark-article-hook'. + +2007-12-14 Reiner Steib + + * gnus-sum.el (gnus-summary-prev-article): Fix doc string. Reported by + Christoph Conrad . + +2007-12-14 Reiner Steib + + * gnus-util.el (gnus-y-or-n-p, gnus-yes-or-no-p): Alias to y-or-n-p and + yes-or-no-p. + +2007-12-11 Katsumi Yamaoka + + * mm-decode.el (mm-add-meta-html-tag): New function. + (mm-save-part-to-file, mm-pipe-part): Use it + + * gnus-art.el (gnus-article-browse-delete-temp-files): Use + gnus-y-or-n-p instead of y-or-n-p. + (gnus-article-browse-html-parts): Work with message/external-body; use + mm-add-meta-html-tag. + 2007-12-11 Glenn Morris * gnus-cache.el: Require gnus-sum not just when compiling. @@ -74,6 +109,10 @@ * spam.el (gnus-extract-address-components): Declare as functions. +2007-12-10 Katsumi Yamaoka + + * gnus-art.el (gnus-article-browse-html-parts): Decode CTE. + 2007-12-09 Glenn Morris * gnus-uu.el (gnus-uu-yenc-article): Use insert-buffer-substring. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index d8f03ff2cb8..e984372543d 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2782,9 +2782,9 @@ summary buffer." (or how (setq how gnus-article-browse-delete-temp))) (when (and (eq how 'ask) - (y-or-n-p (format - "Delete all %s temporary HTML file(s)? " - (length gnus-article-browse-html-temp-list))) + (gnus-y-or-n-p (format + "Delete all %s temporary HTML file(s)? " + (length gnus-article-browse-html-temp-list))) (setq how t))) (dolist (file gnus-article-browse-html-temp-list) (when (and (file-exists-p file) @@ -2802,61 +2802,63 @@ summary buffer." "View all \"text/html\" parts from LIST. Recurse into multiparts." ;; Internal function used by `gnus-article-browse-html-article'. - (let ((showed)) + (let (type file charset tmp-file showed) ;; Find and show the html-parts. (dolist (handle list) ;; If HTML, show it: - (when (listp handle) - (cond ((and (bufferp (car handle)) - (string-match "text/html" (car (mm-handle-type handle)))) - (let ((tmp-file (mm-make-temp-file - ;; Do we need to care for 8.3 filenames? - "mm-" nil ".html")) - (charset (mail-content-type-get (mm-handle-type handle) - 'charset))) - (if charset - ;; Add a meta html tag to specify charset. - (mm-with-unibyte-buffer - (insert (with-current-buffer (mm-handle-buffer handle) - (if (eq charset 'gnus-decoded) - (mm-encode-coding-string - (buffer-string) - (setq charset 'utf-8)) - (buffer-string)))) - (setq charset (format "\ -" - charset)) - (goto-char (point-min)) - (let ((case-fold-search t)) - (cond (;; Don't modify existing meta tag. - (re-search-forward "\ -]+>" - nil t)) - ((re-search-forward "[\t\n\r ]*" nil t) - (insert charset "\n")) - (t - (re-search-forward "\ -]+\\|[\t\n\r ]*\\)>[\t\n\r ]*" - nil t) - (insert "\n" charset "\n\n")))) + (cond ((not (listp handle))) + ((or (equal (car (setq type (mm-handle-type handle))) "text/html") + (and (equal (car type) "message/external-body") + (setq file (or (mail-content-type-get type 'name) + (mail-content-type-get + (mm-handle-disposition handle) + 'filename))) + (or (mm-handle-cache handle) + (condition-case code + (progn (mm-extern-cache-contents handle) t) + (error + (gnus-message 3 "%s" (error-message-string code)) + (when (>= gnus-verbose 3) (sit-for 2)) + nil))) + (progn + (setq handle (mm-handle-cache handle) + type (mm-handle-type handle)) + (equal (car type) "text/html")))) + (when (or (setq charset (mail-content-type-get type 'charset)) + (not file)) + (setq tmp-file (mm-make-temp-file + ;; Do we need to care for 8.3 filenames? + "mm-" nil ".html"))) + (if charset + ;; Add a meta html tag to specify charset. + (mm-with-unibyte-buffer + (insert (if (eq charset 'gnus-decoded) + (mm-encode-coding-string (mm-get-part handle) + (setq charset 'utf-8)) + (mm-get-part handle))) + (if (or (mm-add-meta-html-tag handle charset) + (not file)) (mm-write-region (point-min) (point-max) - tmp-file nil nil nil 'binary t)) - (mm-save-part-to-file handle tmp-file)) - (add-to-list 'gnus-article-browse-html-temp-list tmp-file) - (add-hook 'gnus-summary-prepare-exit-hook - 'gnus-article-browse-delete-temp-files) - (add-hook 'gnus-exit-gnus-hook - (lambda () - (gnus-article-browse-delete-temp-files t))) - ;; FIXME: Warn if there's an tag? - (browse-url-of-file tmp-file) - (setq showed t))) - ;; If multipart, recurse - ((and (stringp (car handle)) - (string-match "^multipart/" (car handle)) - (setq showed - (or showed - (gnus-article-browse-html-parts handle)))))))) + tmp-file nil nil nil 'binary t) + (setq tmp-file nil))) + (when tmp-file + (mm-save-part-to-file handle tmp-file))) + (when tmp-file + (add-to-list 'gnus-article-browse-html-temp-list tmp-file)) + (add-hook 'gnus-summary-prepare-exit-hook + 'gnus-article-browse-delete-temp-files) + (add-hook 'gnus-exit-gnus-hook + (lambda () + (gnus-article-browse-delete-temp-files t))) + ;; FIXME: Warn if there's an tag? + (browse-url-of-file (or tmp-file (expand-file-name file))) + (setq showed t)) + ;; If multipart, recurse + ((and (stringp (car handle)) + (string-match "^multipart/" (car handle)) + (setq showed + (or showed + (gnus-article-browse-html-parts handle))))))) showed)) ;; FIXME: Documentation in texi/gnus.texi missing. @@ -3916,6 +3918,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is (defun article-verify-x-pgp-sig () "Verify X-PGP-Sig." + ;; (interactive) (if (gnus-buffer-live-p gnus-original-article-buffer) (let ((sig (with-current-buffer gnus-original-article-buffer @@ -4724,8 +4727,9 @@ Deleting parts may malfunction or destroy the article; continue? ")) (handles gnus-article-mime-handles) (none "(none)") (description - (mail-decode-encoded-word-string (or (mm-handle-description data) - none))) + (let ((desc (mm-handle-description data))) + (when desc + (mail-decode-encoded-word-string desc)))) (filename (or (mail-content-type-get (mm-handle-disposition data) 'filename) none)) @@ -4743,7 +4747,8 @@ Deleting parts may malfunction or destroy the article; continue? ")) "| Type: " type "\n" "| Filename: " filename "\n" "| Size (encoded): " bsize " Byte\n" - "| Description: " description "\n" + (when description + (concat "| Description: " description "\n")) "`----\n")) (setcdr data (cdr (mm-make-handle @@ -8003,6 +8008,11 @@ For example: gnus-article-encrypt-protocol-alist nil t)) current-prefix-arg)) + ;; User might hit `K E' instead of `K e', so prompt once. + (when (and gnus-article-encrypt-protocol + gnus-novice-user) + (unless (gnus-y-or-n-p "Really encrypt article(s)? ") + (error "Encrypt aborted."))) (let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist)))) (unless func (error "Can't find the encrypt protocol %s" protocol)) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 2f4ccb7307c..62068d85a80 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -7658,7 +7658,7 @@ If BACKWARD, the previous article is selected instead of the next." (gnus-summary-article-subject)))) (defun gnus-summary-prev-article (&optional unread subject) - "Select the article after the current one. + "Select the article before the current one. If UNREAD is non-nil, only unread articles are selected." (interactive "P") (gnus-summary-next-article unread subject t)) @@ -10830,12 +10830,12 @@ The difference between N and the number of marks cleared is returned." (gnus-summary-mark-forward (- n) gnus-unread-mark)) (defun gnus-summary-mark-unread-as-read () - "Intended to be used by `gnus-summary-mark-article-hook'." + "Intended to be used by `gnus-mark-article-hook'." (when (memq gnus-current-article gnus-newsgroup-unreads) (gnus-summary-mark-article gnus-current-article gnus-read-mark))) (defun gnus-summary-mark-read-and-unread-as-read (&optional new-mark) - "Intended to be used by `gnus-summary-mark-article-hook'." + "Intended to be used by `gnus-mark-article-hook'." (let ((mark (gnus-summary-article-mark))) (when (or (gnus-unread-mark-p mark) (gnus-read-mark-p mark)) @@ -10843,7 +10843,7 @@ The difference between N and the number of marks cleared is returned." (or new-mark gnus-read-mark))))) (defun gnus-summary-mark-current-read-and-unread-as-read (&optional new-mark) - "Intended to be used by `gnus-summary-mark-article-hook'." + "Intended to be used by `gnus-mark-article-hook'." (let ((mark (gnus-summary-article-mark))) (when (or (gnus-unread-mark-p mark) (gnus-read-mark-p mark)) @@ -10851,7 +10851,7 @@ The difference between N and the number of marks cleared is returned." (or new-mark gnus-read-mark))))) (defun gnus-summary-mark-unread-as-ticked () - "Intended to be used by `gnus-summary-mark-article-hook'." + "Intended to be used by `gnus-mark-article-hook'." (when (memq gnus-current-article gnus-newsgroup-unreads) (gnus-summary-mark-article gnus-current-article gnus-ticked-mark))) diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 7b36c07da62..56aacf0d5a6 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -337,15 +337,23 @@ Symbols are also allowed; their print names are used instead." ;; Two silly functions to ensure that all `y-or-n-p' questions clear ;; the echo area. -(defun gnus-y-or-n-p (prompt) - (prog1 - (y-or-n-p prompt) - (message ""))) - -(defun gnus-yes-or-no-p (prompt) - (prog1 - (yes-or-no-p prompt) - (message ""))) +;; +;; Do we really need these aliases? Workarounds for bugs in the corresponding +;; Emacs functions? Maybe these bug are no longer present in any supported +;; (X)Emacs version? Alias them to the original functions and see if anyone +;; reports a problem. If not, replace with original functions. --rsteib +;; +;; (defun gnus-y-or-n-p (prompt) +;; (prog1 +;; (y-or-n-p prompt) +;; (message ""))) +;; (defun gnus-yes-or-no-p (prompt) +;; (prog1 +;; (yes-or-no-p prompt) +;; (message ""))) + +(defalias 'gnus-y-or-n-p 'y-or-n-p) +(defalias 'gnus-yes-or-no-p 'yes-or-no-p) ;; By Frank Schmitt . Allows to have ;; age-depending date representations. (e.g. just the time if it's diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 9de9b3d354e..e2c23d9db5a 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1239,9 +1239,39 @@ PROMPT overrides the default one used to ask user for a file name." (mm-save-part-to-file handle file) file)))) +(defun mm-add-meta-html-tag (handle &optional charset) + "Add meta html tag to specify CHARSET of HANDLE in the current buffer. +CHARSET defaults to the one HANDLE specifies. Existing meta tag that +specifies charset will not be modified. Return t if meta tag is added +or replaced." + (when (equal (mm-handle-media-type handle) "text/html") + (when (or charset + (setq charset (mail-content-type-get (mm-handle-type handle) + 'charset))) + (setq charset (format "\ +" charset)) + (let ((case-fold-search t)) + (goto-char (point-min)) + (if (re-search-forward "\ +]*>" nil t) + (if (and (match-beginning 2) + (string-match "\\`html\\'" (match-string 1))) + ;; Don't modify existing meta tag. + nil + ;; Replace it with the one specifying charset. + (replace-match charset) + t) + (if (re-search-forward "\\s-*" nil t) + (insert charset "\n") + (re-search-forward "]+\\|\\s-*\\)>\\s-*" nil t) + (insert "\n" charset "\n\n")) + t))))) + (defun mm-save-part-to-file (handle file) (mm-with-unibyte-buffer (mm-insert-part handle) + (mm-add-meta-html-tag handle) (let ((current-file-modes (default-file-modes))) (set-default-file-modes mm-attachment-file-modes) (unwind-protect @@ -1258,6 +1288,7 @@ PROMPT overrides the default one used to ask user for a file name." (read-string "Shell command on MIME part: " mm-last-shell-command))) (mm-with-unibyte-buffer (mm-insert-part handle) + (mm-add-meta-html-tag handle) (let ((coding-system-for-write 'binary)) (shell-command-on-region (point-min) (point-max) command nil))))) diff --git a/lisp/pgg.el b/lisp/pgg.el index 74b6ed7cb22..26911974ea6 100644 --- a/lisp/pgg.el +++ b/lisp/pgg.el @@ -42,12 +42,10 @@ ;;; (eval-when-compile - (unless (featurep 'xemacs) - (defalias 'pgg-run-at-time 'run-at-time) - (defalias 'pgg-cancel-timer 'cancel-timer)) - - (when (featurep 'xemacs) - (defmacro pgg-run-at-time-1 (time repeat function args) + ;; Define it as a null macro for Emacs in order to suppress a byte + ;; compile warning that Emacs 21 issues. + (defmacro pgg-run-at-time-1 (time repeat function args) + (when (featurep 'xemacs) (if (condition-case nil (let ((delete-itimer 'delete-itimer) (itimer-driver-start 'itimer-driver-start) @@ -105,19 +103,23 @@ itimer (append (list itimer function) args))))) 1e-9 (if time (max time 1e-9) 1e-9) - nil t itimers ,repeat ,function ,args)))) + nil t itimers ,repeat ,function ,args)))))) - (defun pgg-run-at-time (time repeat function &rest args) - "Emulating function run as `run-at-time'. +(eval-and-compile + (if (featurep 'xemacs) + (progn + (defun pgg-run-at-time (time repeat function &rest args) + "Emulating function run as `run-at-time'. TIME should be nil meaning now, or a number of seconds from now. Return an itimer object which can be used in either `delete-itimer' or `cancel-timer'." - (pgg-run-at-time-1 time repeat function args)) - (defun pgg-cancel-timer (timer) - "Emulate cancel-timer for xemacs." - (let ((delete-itimer 'delete-itimer)) - (funcall delete-itimer timer))) - )) + (pgg-run-at-time-1 time repeat function args)) + (defun pgg-cancel-timer (timer) + "Emulate cancel-timer for xemacs." + (let ((delete-itimer 'delete-itimer)) + (funcall delete-itimer timer)))) + (defalias 'pgg-run-at-time 'run-at-time) + (defalias 'pgg-cancel-timer 'cancel-timer))) (defun pgg-invoke (func scheme &rest args) (progn -- cgit v1.2.3