]> code.delx.au - gnu-emacs/blobdiff - lisp/gnus/gnus-kill.el
Merge from origin/emacs-25
[gnu-emacs] / lisp / gnus / gnus-kill.el
index fdbe125ff10b1de8ba0dfd2f99e4e52497deee96..b4b74c98f9f7775c15793d6f334de8ea091fcce3 100644 (file)
@@ -1,6 +1,6 @@
 ;;; gnus-kill.el --- kill commands for Gnus
 
-;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2016 Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
   :type 'hook)
 
 (defcustom gnus-kill-expiry-days 7
-  "*Number of days before expiring unused kill file entries."
+  "Number of days before expiring unused kill file entries."
   :group 'gnus-score-kill
   :group 'gnus-score-expire
   :type 'integer)
 
 (defcustom gnus-kill-save-kill-file nil
-  "*If non-nil, will save kill files after processing them."
+  "If non-nil, will save kill files after processing them."
   :group 'gnus-score-kill
   :type 'boolean)
 
-(defcustom gnus-winconf-kill-file nil
+(defvar gnus-winconf-kill-file nil
   "What does this do, Lars?
-I don't know, Per."
-  :group 'gnus-score-kill
-  :type 'sexp)
+I don't know, Per.")
 
 (defcustom gnus-kill-killed t
-  "*If non-nil, Gnus will apply kill files to already killed articles.
+  "If non-nil, Gnus will apply kill files to already killed articles.
 If it is nil, Gnus will never apply kill files to articles that have
 already been through the scoring process, which might very well save lots
 of time."
@@ -75,20 +73,20 @@ of time."
 ;;; Gnus Kill File Mode
 ;;;
 
-(defvar gnus-kill-file-mode-map nil)
-
-(unless gnus-kill-file-mode-map
-  (gnus-define-keymap (setq gnus-kill-file-mode-map
-                           (copy-keymap emacs-lisp-mode-map))
-    "\C-c\C-k\C-s" gnus-kill-file-kill-by-subject
-    "\C-c\C-k\C-a" gnus-kill-file-kill-by-author
-    "\C-c\C-k\C-t" gnus-kill-file-kill-by-thread
-    "\C-c\C-k\C-x" gnus-kill-file-kill-by-xref
-    "\C-c\C-a" gnus-kill-file-apply-buffer
-    "\C-c\C-e" gnus-kill-file-apply-last-sexp
-    "\C-c\C-c" gnus-kill-file-exit))
-
-(defun gnus-kill-file-mode ()
+(defvar gnus-kill-file-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map emacs-lisp-mode-map)
+    (gnus-define-keymap map
+      "\C-c\C-k\C-s" gnus-kill-file-kill-by-subject
+      "\C-c\C-k\C-a" gnus-kill-file-kill-by-author
+      "\C-c\C-k\C-t" gnus-kill-file-kill-by-thread
+      "\C-c\C-k\C-x" gnus-kill-file-kill-by-xref
+      "\C-c\C-a" gnus-kill-file-apply-buffer
+      "\C-c\C-e" gnus-kill-file-apply-last-sexp
+      "\C-c\C-c" gnus-kill-file-exit)
+    map))
+
+(define-derived-mode gnus-kill-file-mode emacs-lisp-mode "Kill"
   "Major mode for editing kill files.
 
 If you are using this mode - you probably shouldn't.  Kill files
@@ -151,15 +149,7 @@ which are marked as read in the previous Gnus sessions.  Marks other
 than `D' should be used for articles which should really be deleted.
 
 Entry to this mode calls emacs-lisp-mode-hook and
-gnus-kill-file-mode-hook with no arguments, if that value is non-nil."
-  (interactive)
-  (kill-all-local-variables)
-  (use-local-map gnus-kill-file-mode-map)
-  (set-syntax-table emacs-lisp-mode-syntax-table)
-  (setq major-mode 'gnus-kill-file-mode)
-  (setq mode-name "Kill")
-  (lisp-mode-variables nil)
-  (gnus-run-mode-hooks 'emacs-lisp-mode-hook 'gnus-kill-file-mode-hook))
+gnus-kill-file-mode-hook with no arguments, if that value is non-nil.")
 
 (defun gnus-kill-file-edit-file (newsgroup)
   "Begin editing a kill file for NEWSGROUP.
@@ -175,10 +165,10 @@ If NEWSGROUP is nil, the global kill file is selected."
     (let ((buffer (find-file-noselect file)))
       (cond ((get-buffer-window buffer)
             (pop-to-buffer buffer))
-           ((eq major-mode 'gnus-group-mode)
+           ((derived-mode-p 'gnus-group-mode)
             (gnus-configure-windows 'group) ;Take all windows.
             (pop-to-buffer buffer))
-           ((eq major-mode 'gnus-summary-mode)
+           ((derived-mode-p 'gnus-summary-mode)
             (gnus-configure-windows 'article)
             (pop-to-buffer gnus-article-buffer)
             (bury-buffer gnus-article-buffer)
@@ -201,7 +191,7 @@ If NEWSGROUP is nil, the global kill file is selected."
   ;; REGEXP: The string to kill.
   (save-excursion
     (let (string)
-      (unless (eq major-mode 'gnus-kill-file-mode)
+      (unless (derived-mode-p 'gnus-kill-file-mode)
        (gnus-kill-set-kill-buffer))
       (unless dont-move
        (goto-char (point-max)))
@@ -328,24 +318,6 @@ If NEWSGROUP is nil, the global kill file is selected."
 
 ;; For kill files
 
-(defun gnus-Newsgroup-kill-file (newsgroup)
-  "Return the name of a kill file for NEWSGROUP.
-If NEWSGROUP is nil, return the global kill file instead."
-  (cond ((or (null newsgroup)
-            (string-equal newsgroup ""))
-        ;; The global kill file is placed at top of the directory.
-        (expand-file-name gnus-kill-file-name gnus-kill-files-directory))
-       (gnus-use-long-file-name
-        ;; Append ".KILL" to capitalized newsgroup name.
-        (expand-file-name (concat (gnus-capitalize-newsgroup newsgroup)
-                                  "." gnus-kill-file-name)
-                          gnus-kill-files-directory))
-       (t
-        ;; Place "KILL" under the hierarchical directory.
-        (expand-file-name (concat (gnus-newsgroup-directory-form newsgroup)
-                                  "/" gnus-kill-file-name)
-                          gnus-kill-files-directory))))
-
 (defun gnus-expunge (marks)
   "Remove lines marked with MARKS."
   (with-current-buffer gnus-summary-buffer
@@ -538,7 +510,7 @@ COMMAND must be a Lisp expression or a string representing a key sequence."
                  (setq kill-list (cdr kill-list))))
            (gnus-execute field kill-list command nil (not all))))))
     (switch-to-buffer old-buffer)
-    (when (and (eq major-mode 'gnus-kill-file-mode) regexp (not silent))
+    (when (and (derived-mode-p 'gnus-kill-file-mode) regexp (not silent))
       (gnus-pp-gnus-kill
        (nconc (list 'gnus-kill field
                    (if (consp regexp) (list 'quote regexp) regexp))