• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/emacs-92/emacs/lisp/gnus/

Lines Matching +defs:gnus +defs:eval +defs:in +defs:buffer +defs:window

0 ;;; gnus-util.el --- utility functions for Gnus
6 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
16 ;; GNU Emacs is distributed in the hope that it will be useful,
28 ;; Nothing in this file depends on any other parts of Gnus -- all
29 ;; functions and macros in this file are utility functions that are
39 (eval-when-compile
41 ;; Fixme: this should be a gnus variable, not nnmail-.
46 (defvar gnus-emphasize-whitespace-regexp)
47 (defvar gnus-original-article-buffer)
48 (defvar gnus-user-agent)
53 (eval-and-compile
55 (autoload 'gnus-get-buffer-window "gnus-win")
60 (autoload 'nnheader-replace-chars-in-string "nnheader"))
62 (eval-and-compile
64 ;; Prefer `replace-regexp-in-string' (present in Emacs, XEmacs 21.5,
65 ;; SXEmacs 22.1.4) over `replace-in-string'. The later leads to inf-loops
67 ;; (replace-in-string "foo" "/*$" "/")
68 ;; (replace-in-string "xe" "\\(x\\)?" "")
69 ((fboundp 'replace-regexp-in-string)
70 (defun gnus-replace-in-string (string regexp newtext &optional literal)
71 "Replace all matches for REGEXP with NEWTEXT in STRING.
76 (replace-regexp-in-string regexp newtext string nil literal)))
77 ((fboundp 'replace-in-string)
78 (defalias 'gnus-replace-in-string 'replace-in-string))
80 (defun gnus-replace-in-string (string regexp newtext &optional literal)
81 "Replace all matches for REGEXP with NEWTEXT in STRING.
93 ;;; bring in the netrc functions as aliases
94 (defalias 'gnus-netrc-get 'netrc-get)
95 (defalias 'gnus-netrc-machine 'netrc-machine)
96 (defalias 'gnus-parse-netrc 'netrc-parse)
98 (defun gnus-boundp (variable)
103 (defmacro gnus-eval-in-buffer-window (buffer &rest forms)
104 "Pop to BUFFER, evaluate FORMS, and then return to the original window."
108 `(let* ((,tempvar (selected-window))
109 (,buf ,buffer)
110 (,w (gnus-get-buffer-window ,buf 'visible)))
115 (select-window ,w)
116 (set-buffer (window-buffer ,w)))
117 (pop-to-buffer ,buf))
119 (select-window ,tempvar)))))
121 (put 'gnus-eval-in-buffer-window 'lisp-indent-function 1)
122 (put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body))
124 (defmacro gnus-intern-safe (string hashtable)
135 (defsubst gnus-limit-string (str width)
140 (defsubst gnus-goto-char (point)
143 (defmacro gnus-buffer-exists-p (buffer)
144 `(let ((buffer ,buffer))
145 (when buffer
146 (funcall (if (stringp buffer) 'get-buffer 'buffer-name)
147 buffer))))
149 (defalias 'gnus-point-at-bol
154 (defalias 'gnus-point-at-eol
159 ;; The LOCAL arg to `add-hook' is interpreted differently in Emacs and
163 (defalias 'gnus-make-local-hook
169 (defun gnus-delete-first (elt list)
182 (defmacro gnus-delete-line (&optional n)
183 `(delete-region (gnus-point-at-bol)
186 (defun gnus-byte-code (func)
187 "Return a form that can be `eval'ed based on FUNC."
195 (defun gnus-extract-address-components (from)
202 ;; First find the address - the thing with the @ in it. This may
203 ;; not be accurate in mail addresses, but does the trick most of
204 ;; the time in news messages.
205 (cond (;; Check ``<foo@bar>'' first in order to handle the quite common
234 (defun gnus-fetch-field (field)
243 (defun gnus-fetch-original-field (field)
245 (with-current-buffer gnus-original-article-buffer
246 (gnus-fetch-field field)))
249 (defun gnus-goto-colon ()
251 (let ((eol (gnus-point-at-eol)))
252 (goto-char (or (text-property-any (point) eol 'gnus-position t)
256 (defun gnus-decode-newsgroups (newsgroups group &optional method)
257 (let ((method (or method (gnus-find-method-for-group group))))
259 (gnus-group-name-decode group (gnus-group-name-charset
264 (defun gnus-remove-text-with-property (prop)
265 "Delete all text in the current buffer with text property PROP."
273 (defun gnus-newsgroup-directory-form (newsgroup)
275 (let* ((newsgroup (gnus-newsgroup-savable-name newsgroup))
280 (nnheader-replace-chars-in-string
284 (defun gnus-newsgroup-savable-name (group)
285 ;; Replace any slashes in a group name (eg. an ange-ftp nndoc group)
287 (nnheader-replace-chars-in-string group ?/ ?.))
289 (defun gnus-string> (s1 s2)
295 (defun gnus-file-newer-than (file date)
303 (defmacro gnus-local-set-keys (&rest plist)
304 "Set the keys in PLIST in the current keymap."
305 `(gnus-define-keys-1 (current-local-map) ',plist))
307 (defmacro gnus-define-keys (keymap &rest plist)
308 "Define all keys in PLIST in KEYMAP."
309 `(gnus-define-keys-1 (quote ,keymap) (quote ,plist)))
311 (defmacro gnus-define-keys-safe (keymap &rest plist)
312 "Define all keys in PLIST in KEYMAP without overwriting previous definitions."
313 `(gnus-define-keys-1 (quote ,keymap) (quote ,plist) t))
315 (put 'gnus-define-keys 'lisp-indent-function 1)
316 (put 'gnus-define-keys-safe 'lisp-indent-function 1)
317 (put 'gnus-local-set-keys 'lisp-indent-function 1)
319 (defmacro gnus-define-keymap (keymap &rest plist)
320 "Define all keys in PLIST in KEYMAP."
321 `(gnus-define-keys-1 ,keymap (quote ,plist)))
323 (put 'gnus-define-keymap 'lisp-indent-function 1)
325 (defun gnus-define-keys-1 (keymap plist &optional safe)
327 (error "Can't set keys in a null keymap"))
345 (defun gnus-completing-read-with-default (default prompt &rest args)
357 (defun gnus-y-or-n-p (prompt)
362 (defun gnus-yes-or-no-p (prompt)
372 (defun gnus-seconds-today ()
377 (defun gnus-seconds-month ()
383 (defun gnus-seconds-year ()
390 (defvar gnus-user-date-format-alist
391 '(((gnus-seconds-today) . "%k:%M")
393 ((gnus-seconds-month) . "%a %d")
394 ((gnus-seconds-year) . "%b %d")
409 You can use the functions `gnus-seconds-today', `gnus-seconds-month'
410 and `gnus-seconds-year' in the AGE spec. They return the number of
414 (defun gnus-user-date (messy-date)
415 "Format the messy-date according to gnus-user-date-format-alist.
424 (templist gnus-user-date-format-alist)
425 (top (eval (caar templist))))
429 (setq top (eval (caar templist)))))
432 (format-time-string (eval my-format) (seconds-to-time messy-date)))
435 (defun gnus-dd-mmm (messy-date)
441 (defmacro gnus-date-get-time (date)
443 Cache the result as a text property stored in DATE."
448 (or (get-text-property 0 'gnus-time d)
451 ;; and store it back in the string.
452 (put-text-property 0 1 'gnus-time time d)
455 (defsubst gnus-time-iso8601 (time)
456 "Return a string of TIME in YYYYMMDDTHHMMSS format."
459 (defun gnus-date-iso8601 (date)
462 (gnus-time-iso8601 (gnus-date-get-time date))
465 (defun gnus-mode-string-quote (string)
466 "Quote all \"%\"'s in STRING."
467 (gnus-replace-in-string string "%" "%%"))
471 (defun gnus-make-hashtable (&optional hashsize)
472 (make-vector (if hashsize (max (gnus-create-hash-size hashsize) 256) 256) 0))
476 ;; hardware modulo operation, so they implement it in software. On
477 ;; many sparcs over 50% of the time to intern is spent in the modulo.
480 (defun gnus-create-hash-size (min)
486 (defcustom gnus-verbose 7
492 :group 'gnus-start
495 (defun gnus-message (level &rest args)
496 "If LEVEL is lower than `gnus-verbose' print ARGS using `message'.
502 (if (<= level gnus-verbose)
509 (defun gnus-error (level &rest args)
510 "Beep an error if LEVEL is equal to or less than `gnus-verbose'.
512 (when (<= (floor level) gnus-verbose)
521 (defun gnus-split-references (references)
522 "Return a list of Message-IDs in REFERENCES."
530 (defsubst gnus-parent-id (references &optional n)
531 "Return the last Message-ID in REFERENCES.
536 (let ((ids (inline (gnus-split-references references))))
543 (defun gnus-buffer-live-p (buffer)
545 (and buffer
546 (get-buffer buffer)
547 (buffer-name (get-buffer buffer))))
549 (defun gnus-horizontal-recenter ()
550 "Recenter the current buffer horizontally."
551 (if (< (current-column) (/ (window-width) 2))
552 (set-window-hscroll (gnus-get-buffer-window (current-buffer) t) 0)
554 (end (window-end (gnus-get-buffer-window (current-buffer) t)))
557 ;; Find the longest line currently displayed in the window.
558 (goto-char (window-start))
566 (if (> max (window-width))
567 (set-window-hscroll
568 (gnus-get-buffer-window (current-buffer) t)
569 (min (- (current-column) (/ (window-width) 3))
570 (+ 2 (- max (window-width)))))
571 (set-window-hscroll (gnus-get-buffer-window (current-buffer) t) 0))
574 (defun gnus-read-event-char (&optional prompt)
577 ;; should be gnus-characterp, but this can't be called in XEmacs anyway
580 (defun gnus-sortable-date (date)
582 (gnus-time-iso8601 (date-to-time date)))
584 (defun gnus-copy-file (file &optional to)
596 (defvar gnus-work-buffer " *gnus work*")
598 (defun gnus-set-work-buffer ()
599 "Put point in the empty Gnus work buffer."
600 (if (get-buffer gnus-work-buffer)
602 (set-buffer gnus-work-buffer)
603 (erase-buffer))
604 (set-buffer (gnus-get-buffer-create gnus-work-buffer))
608 (defmacro gnus-group-real-name (group)
615 (defmacro gnus-group-server (group)
617 For example, (gnus-group-server \"nnimap+yxa:INBOX.foo\") would
624 (format "%s:%s" (car gnus-select-method) (cadr gnus-select-method)))))
626 (defun gnus-make-sort-function (funs)
627 "Return a composite sort condition based on the functions in FUNS."
636 (gnus-byte-compile
638 ,(gnus-make-sort-function-1 (reverse funs)))))
643 (defun gnus-make-sort-function-1 (funs)
644 "Return a composite sort condition based on the functions in FUNS."
663 ,(gnus-make-sort-function-1 (cdr funs))))
666 (defun gnus-turn-off-edit-menu (type)
667 "Turn off edit menu in `gnus-TYPE-mode-map'."
668 (define-key (symbol-value (intern (format "gnus-%s-mode-map" type)))
671 (defmacro gnus-bind-print-variables (&rest forms)
673 This macro is used with `prin1', `pp', etc. in order to ensure printed
691 (defun gnus-prin1 (form)
692 "Use `prin1' on FORM in the current buffer.
694 `print-level' to nil. See also `gnus-bind-print-variables'."
695 (gnus-bind-print-variables (prin1 form (current-buffer))))
697 (defun gnus-prin1-to-string (form)
700 `print-level' to nil. See also `gnus-bind-print-variables'."
701 (gnus-bind-print-variables (prin1-to-string form)))
703 (defun gnus-pp (form)
704 "Use `pp' on FORM in the current buffer.
706 `print-level' to nil. See also `gnus-bind-print-variables'."
707 (gnus-bind-print-variables (pp form (current-buffer))))
709 (defun gnus-pp-to-string (form)
712 `print-level' to nil. See also `gnus-bind-print-variables'."
713 (gnus-bind-print-variables (pp-to-string form)))
715 (defun gnus-make-directory (directory)
724 (defun gnus-write-buffer (file)
725 "Write the current buffer's contents to FILE."
727 (gnus-make-directory (file-name-directory file))
729 ;; Write the buffer.
732 (defun gnus-delete-file (file)
737 (defun gnus-delete-directory (directory)
738 "Delete files in DIRECTORY. Subdirectories remain.
754 ;; The following two functions are used in gnus-registry.
756 (defun gnus-alist-to-hashtable (alist)
757 "Build a hashtable from the values in ALIST."
767 (defun gnus-hashtable-to-alist (hash)
768 "Build an alist from the values in HASH."
776 (defun gnus-strip-whitespace (string)
782 (defsubst gnus-put-text-property-excluding-newlines (beg end prop val)
783 "The same as `put-text-property', but don't put this prop on any newlines in the region."
788 (while (re-search-forward gnus-emphasize-whitespace-regexp end 'move)
789 (gnus-put-text-property beg (match-beginning 0) prop val)
791 (gnus-put-text-property beg (point) prop val)))))
793 (defsubst gnus-put-overlay-excluding-newlines (beg end prop val)
794 "The same as `put-text-property', but don't put this prop on any newlines in the region."
799 (while (re-search-forward gnus-emphasize-whitespace-regexp end 'move)
800 (gnus-overlay-put
801 (gnus-make-overlay beg (match-beginning 0))
804 (gnus-overlay-put (gnus-make-overlay beg (point)) prop val)))))
806 (defun gnus-put-text-property-excluding-characters-with-faces (beg end
808 "The same as `put-text-property', but don't put props on characters with the `gnus-face' property."
811 (when (get-text-property b 'gnus-face)
812 (setq b (next-single-property-change b 'gnus-face nil end)))
815 (gnus-put-text-property
816 b (setq b (next-single-property-change b 'gnus-face nil end))
819 (defmacro gnus-faces-at (position)
824 nil (current-buffer) pos pos nil 'face))
835 ;;; similar blows up. Often in Gnus multiple tables/lists need to be
838 (defvar gnus-atomic-be-safe t
841 (defmacro gnus-atomic-progn (&rest forms)
849 `(let ((inhibit-quit gnus-atomic-be-safe))
852 (put 'gnus-atomic-progn 'lisp-indent-function 0)
854 (defmacro gnus-atomic-progn-assign (protect &rest forms)
855 "Evaluate FORMS, but insure that the variables listed in PROTECT
856 are not changed if anything in FORMS signals an error or otherwise
857 non-locally exits. The variables listed in PROTECT are updated atomically.
858 It is safe to use gnus-atomic-progn-assign with long computations.
860 Note that if any of the symbols in PROTECT were unbound, they will be
883 (let ((inhibit-quit gnus-atomic-be-safe))
887 (put 'gnus-atomic-progn-assign 'lisp-indent-function 1)
888 ;(put 'gnus-atomic-progn-assign 'edebug-form-spec '(sexp body))
890 (defmacro gnus-atomic-setq (&rest pairs)
894 see gnus-atomic-progn-assign. It is safe to use gnus-atomic-setq
901 `(gnus-atomic-progn-assign ,syms
904 ;(put 'gnus-atomic-setq 'edebug-form-spec '(body))
909 (eval-when-compile
920 `(eval '(rmail-select-summary ,@body)))
930 (defun gnus-output-to-rmail (filename &optional ask)
937 (let ((artbuf (current-buffer))
938 (tmpbuf (get-buffer-create " *Gnus-output*")))
940 (or (get-file-buffer filename)
943 (gnus-yes-or-no-p
945 (let ((file-buffer (create-file-buffer filename)))
947 (set-buffer file-buffer)
951 (gnus-write-buffer filename)))
952 (kill-buffer file-buffer))
954 (set-buffer tmpbuf)
955 (erase-buffer)
956 (insert-buffer-substring artbuf)
957 (gnus-convert-article-to-rmail)
958 ;; Decide whether to append to a file or to an Emacs buffer.
959 (let ((outbuf (get-file-buffer filename)))
963 ;; File has been visited, in buffer OUTBUF.
964 (set-buffer outbuf)
965 (let ((buffer-read-only nil)
968 ;; If MSG is non-nil, buffer is in RMAIL mode.
972 (insert-buffer-substring tmpbuf)
984 (save-buffer)))))
985 (kill-buffer tmpbuf)))
987 (defun gnus-output-to-mail (filename &optional ask)
990 (let ((artbuf (current-buffer))
991 (tmpbuf (get-buffer-create " *Gnus-output*")))
994 (when (and (not (get-file-buffer filename))
997 (gnus-y-or-n-p
999 (let ((file-buffer (create-file-buffer filename)))
1001 (set-buffer file-buffer)
1004 (gnus-write-buffer filename)))
1005 (kill-buffer file-buffer))
1007 (set-buffer tmpbuf)
1008 (erase-buffer)
1009 (insert-buffer-substring artbuf)
1018 ;; Decide whether to append to a file or to an Emacs buffer.
1019 (let ((outbuf (get-file-buffer filename)))
1021 (let ((buffer-read-only nil))
1033 ;; File has been visited, in buffer OUTBUF.
1034 (set-buffer outbuf)
1035 (let ((buffer-read-only nil))
1040 (insert-buffer-substring tmpbuf)))))
1041 (kill-buffer tmpbuf)))
1043 (defun gnus-convert-article-to-rmail ()
1044 "Convert article in current buffer to Rmail message format."
1045 (let ((buffer-read-only nil))
1054 (defun gnus-map-function (funs arg)
1055 "Apply the result of the first function in FUNS to the second, and so on.
1061 (defun gnus-run-hooks (&rest funcs)
1062 "Does the same as `run-hooks', but saves the current buffer."
1063 (save-current-buffer
1066 (defun gnus-run-mode-hooks (&rest funcs)
1068 This function saves the current buffer."
1070 (save-current-buffer (apply 'run-mode-hooks funcs))
1071 (save-current-buffer (apply 'run-hooks funcs))))
1075 (defvar gnus-group-buffer) ; Compiler directive
1076 (defun gnus-alive-p ()
1078 (and (boundp 'gnus-group-buffer)
1079 (get-buffer gnus-group-buffer)
1081 (set-buffer gnus-group-buffer)
1082 (eq major-mode 'gnus-group-mode))))
1084 (defun gnus-remove-if (predicate list)
1094 (defalias 'gnus-delete-alist 'assq-delete-all)
1095 (defun gnus-delete-alist (key alist)
1103 (defmacro gnus-pull (key alist &optional assoc-p)
1110 (defun gnus-globalify-regexp (re)
1116 (defun gnus-set-window-start (&optional point)
1117 "Set the window start to POINT, or (point) if nil."
1118 (let ((win (gnus-get-buffer-window (current-buffer) t)))
1120 (set-window-start win (or point (point))))))
1122 (defun gnus-annotation-in-region-p (b e)
1124 (eq (cadr (memq 'gnus-undeletable (text-properties-at b))) t)
1125 (text-property-any b e 'gnus-undeletable t)))
1127 (defun gnus-or (&rest elems)
1134 (defun gnus-and (&rest elems)
1142 (defun gnus-write-active-file (file hashtb &optional full-names)
1153 (intern (gnus-group-real-name (symbol-name sym))))
1162 ;; Fixme: Why not use `with-output-to-temp-buffer'?
1163 (defmacro gnus-with-output-to-file (file &rest body)
1164 (let ((buffer (make-symbol "output-buffer"))
1165 (size (make-symbol "output-buffer-size"))
1166 (leng (make-symbol "output-buffer-length"))
1167 (append (make-symbol "output-buffer-append")))
1169 (,buffer (make-string ,size 0))
1174 (aset ,buffer ,leng c)
1177 (progn (write-region ,buffer nil ,file ,append 'no-msg)
1183 (write-region (substring ,buffer 0 ,leng) nil ,file
1186 (put 'gnus-with-output-to-file 'lisp-indent-function 1)
1187 (put 'gnus-with-output-to-file 'edebug-form-spec '(form body))
1190 (defalias 'gnus-union 'union)
1191 (defun gnus-union (l1 l2)
1205 (defun gnus-add-text-properties-when
1207 "Like `gnus-add-text-properties', only applied on where PROPERTY is VALUE."
1212 (gnus-add-text-properties start point properties object)
1215 (gnus-add-text-properties start end properties object))))
1217 (defun gnus-remove-text-properties-when
1230 ;; This might use `compare-strings' to reduce consing in the
1233 (defun gnus-string-equal (x y)
1239 (defcustom gnus-use-byte-compile t
1241 Setting it to nil has no effect after the first time `gnus-byte-compile'
1245 :group 'gnus-various)
1247 (defun gnus-byte-compile (form)
1248 "Byte-compile FORM if `gnus-use-byte-compile' is non-nil."
1249 (if gnus-use-byte-compile
1252 ;; Work around a bug in XEmacs 21.4
1256 (defalias 'gnus-byte-compile
1260 (gnus-byte-compile form))
1263 (defun gnus-remassoc (key alist)
1267 by side effect; therefore, write `(setq foo (gnus-remassoc key foo))' to be
1272 (setcdr alist (gnus-remassoc key (cdr alist)))
1275 (defun gnus-update-alist-soft (key value alist)
1277 (cons (cons key value) (gnus-remassoc key alist))
1278 (gnus-remassoc key alist)))
1280 (defun gnus-create-info-command (node)
1286 (setq gnus-info-buffer (current-buffer))
1287 (gnus-configure-windows 'info)))
1289 (defun gnus-not-ignore (&rest args)
1292 (defvar gnus-directory-sep-char-regexp "/"
1297 (defun gnus-url-unhex (x)
1305 (defun gnus-url-unhex-string (str &optional allow-newlines)
1306 "Remove %XX, embedded spaces, etc in a url.
1308 decoding of carriage returns and line feeds in the string, which is normally
1309 forbidden in URL encoding."
1314 (ch1 (gnus-url-unhex (elt str (+ start 1))))
1316 (gnus-url-unhex (elt str (+ start 2))))))
1329 (defun gnus-make-predicate (spec)
1333 `(lambda (elem) ,(gnus-make-predicate-1 spec)))
1335 (defun gnus-make-predicate-1 (spec)
1341 `(,(car spec) ,@(mapcar 'gnus-make-predicate-1 (cdr spec)))
1344 (defun gnus-local-map-property (map)
1354 (defmacro gnus-completing-read-maybe-default (prompt table &optional predicate
1357 "Like `completing-read', allowing for non-existent 7th arg in older XEmacsen."
1364 (defun gnus-completing-read (prompt table &optional predicate require-match
1369 (gnus-completing-read-maybe-default
1380 (defun gnus-graphic-display-p ()
1387 (put 'gnus-parse-without-error 'lisp-indent-function 0)
1388 (put 'gnus-parse-without-error 'edebug-form-spec '(body))
1390 (defmacro gnus-parse-without-error (&rest body)
1398 (gnus-error 4 "Invalid data on line %d"
1402 (defun gnus-cache-file-contents (file variable function)
1403 "Cache the contents of FILE in VARIABLE. The contents come from FUNCTION."
1415 (defun gnus-multiple-choice (prompt choice &optional idx)
1419 (save-window-excursion
1430 (setq buf (get-buffer-create "*Gnus Help*"))
1431 (pop-to-buffer buf)
1433 (buffer-disable-undo)
1434 (erase-buffer)
1449 (setq n (/ (1- (window-width)) max)) ; items per line
1450 (setq width (/ (1- (window-width)) n)) ; width of each item
1451 ;; insert `n' items, each in a field of width `width'
1463 (if (buffer-live-p buf)
1464 (kill-buffer buf))
1467 (defun gnus-select-frame-set-input-focus (frame)
1475 ;; `select-frame-set-input-focus' defined in Emacs 21 will not
1482 (cond ((memq window-system '(x mac))
1484 ((eq window-system 'w32)
1489 (defun gnus-frame-or-window-display-name (object)
1490 "Given a frame or window, return the associated display name.
1496 (setq object (window-frame object))))
1504 (eval-when-compile
1507 (defun gnus-tool-bar-update (&rest ignore)
1516 ((fboundp 'force-window-update)
1517 'force-window-update)
1524 ;; Fixme: This has only one use (in gnus-agent), which isn't worthwhile.
1525 (defmacro gnus-mapcar (function seq1 &rest seqs2_n)
1560 (defalias 'gnus-merge 'merge)
1562 (defun gnus-merge (type list1 list2 pred)
1574 (eval-when-compile
1579 (defun gnus-emacs-version ()
1581 (let* ((lst (if (listp gnus-user-agent)
1582 gnus-user-agent
1583 '(gnus emacs type)))
1619 (defun gnus-rename-file (old-path new-path &optional trim)
1628 (gnus-make-directory new-dir)
1641 (defalias 'gnus-set-process-query-on-exit-flag
1643 (defalias 'gnus-set-process-query-on-exit-flag
1647 (defalias 'gnus-with-local-quit 'with-local-quit)
1648 (defmacro gnus-with-local-quit (&rest body)
1650 When a quit terminates BODY, `gnus-with-local-quit' returns nil but
1659 ;; in case inhibit-quit is nil.
1663 (eval '(ignore nil))))))
1665 (provide 'gnus-util)
1668 ;;; gnus-util.el ends here