aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2021-03-19 19:04:27 -0400
committerStefan Monnier2021-03-19 19:04:27 -0400
commit64f37487e2e7f71701451097e16bcb910f5f91fd (patch)
treed0c127a21c4cb54ef9fbef24e40a11a71529418c
parent115c7bcfc6b297e3da1c358c841dc68d6c7aa23a (diff)
downloademacs-64f37487e2e7f71701451097e16bcb910f5f91fd.tar.gz
emacs-64f37487e2e7f71701451097e16bcb910f5f91fd.zip
* lisp/wdired.el: Use lexical-binding
Remove redundant `:group` args. (wdired-change-to-wdired-mode): Use `add-function` to modify `revert-buffer-function`. (wdired-change-to-dired-mode): Adjust accordingly. (wdired-do-renames): Make sure to bind `dired-backup-overwrite` dynamically.
-rw-r--r--lisp/wdired.el92
1 files changed, 42 insertions, 50 deletions
diff --git a/lisp/wdired.el b/lisp/wdired.el
index c495d8de341..e040b526005 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -1,4 +1,4 @@
1;;; wdired.el --- Rename files editing their names in dired buffers -*- coding: utf-8; -*- 1;;; wdired.el --- Rename files editing their names in dired buffers -*- coding: utf-8; lexical-binding: t; -*-
2 2
3;; Copyright (C) 2004-2021 Free Software Foundation, Inc. 3;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
4 4
@@ -85,15 +85,13 @@
85If nil, WDired doesn't require confirmation to change the file names, 85If nil, WDired doesn't require confirmation to change the file names,
86and the variable `wdired-confirm-overwrite' controls whether it is ok 86and the variable `wdired-confirm-overwrite' controls whether it is ok
87to overwrite files without asking." 87to overwrite files without asking."
88 :type 'boolean 88 :type 'boolean)
89 :group 'wdired)
90 89
91(defcustom wdired-confirm-overwrite t 90(defcustom wdired-confirm-overwrite t
92 "If nil the renames can overwrite files without asking. 91 "If nil the renames can overwrite files without asking.
93This variable has no effect at all if `wdired-use-interactive-rename' 92This variable has no effect at all if `wdired-use-interactive-rename'
94is not nil." 93is not nil."
95 :type 'boolean 94 :type 'boolean)
96 :group 'wdired)
97 95
98(defcustom wdired-use-dired-vertical-movement nil 96(defcustom wdired-use-dired-vertical-movement nil
99 "If t, the \"up\" and \"down\" movement works as in Dired mode. 97 "If t, the \"up\" and \"down\" movement works as in Dired mode.
@@ -106,15 +104,13 @@ when editing several filenames.
106If nil, \"up\" and \"down\" movement is done as in any other buffer." 104If nil, \"up\" and \"down\" movement is done as in any other buffer."
107 :type '(choice (const :tag "As in any other mode" nil) 105 :type '(choice (const :tag "As in any other mode" nil)
108 (const :tag "Smart cursor placement" sometimes) 106 (const :tag "Smart cursor placement" sometimes)
109 (other :tag "As in dired mode" t)) 107 (other :tag "As in dired mode" t)))
110 :group 'wdired)
111 108
112(defcustom wdired-allow-to-redirect-links t 109(defcustom wdired-allow-to-redirect-links t
113 "If non-nil, the target of the symbolic links are editable. 110 "If non-nil, the target of the symbolic links are editable.
114In systems without symbolic links support, this variable has no effect 111In systems without symbolic links support, this variable has no effect
115at all." 112at all."
116 :type 'boolean 113 :type 'boolean)
117 :group 'wdired)
118 114
119(defcustom wdired-allow-to-change-permissions nil 115(defcustom wdired-allow-to-change-permissions nil
120 "If non-nil, the permissions bits of the files are editable. 116 "If non-nil, the permissions bits of the files are editable.
@@ -135,8 +131,7 @@ Anyway, the real change of the permissions is done by the external
135program `dired-chmod-program', which must exist." 131program `dired-chmod-program', which must exist."
136 :type '(choice (const :tag "Not allowed" nil) 132 :type '(choice (const :tag "Not allowed" nil)
137 (const :tag "Toggle/set bits" t) 133 (const :tag "Toggle/set bits" t)
138 (other :tag "Bits freely editable" advanced)) 134 (other :tag "Bits freely editable" advanced)))
139 :group 'wdired)
140 135
141(defcustom wdired-keep-marker-rename t 136(defcustom wdired-keep-marker-rename t
142 ;; Use t as default so that renamed files "take their markers with them". 137 ;; Use t as default so that renamed files "take their markers with them".
@@ -149,8 +144,7 @@ See `dired-keep-marker-rename' if you want to do the same for files
149renamed by `dired-do-rename' and `dired-do-rename-regexp'." 144renamed by `dired-do-rename' and `dired-do-rename-regexp'."
150 :type '(choice (const :tag "Keep" t) 145 :type '(choice (const :tag "Keep" t)
151 (character :tag "Mark" :value ?R)) 146 (character :tag "Mark" :value ?R))
152 :version "24.3" 147 :version "24.3")
153 :group 'wdired)
154 148
155(defcustom wdired-create-parent-directories t 149(defcustom wdired-create-parent-directories t
156 "If non-nil, create parent directories of destination files. 150 "If non-nil, create parent directories of destination files.
@@ -159,26 +153,25 @@ nonexistent directory, wdired will create any parent directories
159necessary. When nil, attempts to rename a file into a 153necessary. When nil, attempts to rename a file into a
160nonexistent directory will fail." 154nonexistent directory will fail."
161 :version "26.1" 155 :version "26.1"
162 :type 'boolean 156 :type 'boolean)
163 :group 'wdired)
164 157
165(defvar wdired-mode-map 158(defvar wdired-mode-map
166 (let ((map (make-sparse-keymap))) 159 (let ((map (make-sparse-keymap)))
167 (define-key map "\C-x\C-s" 'wdired-finish-edit) 160 (define-key map "\C-x\C-s" #'wdired-finish-edit)
168 (define-key map "\C-c\C-c" 'wdired-finish-edit) 161 (define-key map "\C-c\C-c" #'wdired-finish-edit)
169 (define-key map "\C-c\C-k" 'wdired-abort-changes) 162 (define-key map "\C-c\C-k" #'wdired-abort-changes)
170 (define-key map "\C-c\C-[" 'wdired-abort-changes) 163 (define-key map "\C-c\C-[" #'wdired-abort-changes)
171 (define-key map "\C-x\C-q" 'wdired-exit) 164 (define-key map "\C-x\C-q" #'wdired-exit)
172 (define-key map "\C-m" 'undefined) 165 (define-key map "\C-m" #'undefined)
173 (define-key map "\C-j" 'undefined) 166 (define-key map "\C-j" #'undefined)
174 (define-key map "\C-o" 'undefined) 167 (define-key map "\C-o" #'undefined)
175 (define-key map [up] 'wdired-previous-line) 168 (define-key map [up] #'wdired-previous-line)
176 (define-key map "\C-p" 'wdired-previous-line) 169 (define-key map "\C-p" #'wdired-previous-line)
177 (define-key map [down] 'wdired-next-line) 170 (define-key map [down] #'wdired-next-line)
178 (define-key map "\C-n" 'wdired-next-line) 171 (define-key map "\C-n" #'wdired-next-line)
179 (define-key map [remap upcase-word] 'wdired-upcase-word) 172 (define-key map [remap upcase-word] #'wdired-upcase-word)
180 (define-key map [remap capitalize-word] 'wdired-capitalize-word) 173 (define-key map [remap capitalize-word] #'wdired-capitalize-word)
181 (define-key map [remap downcase-word] 'wdired-downcase-word) 174 (define-key map [remap downcase-word] #'wdired-downcase-word)
182 map) 175 map)
183 "Keymap used in `wdired-mode'.") 176 "Keymap used in `wdired-mode'.")
184 177
@@ -249,11 +242,11 @@ See `wdired-mode'."
249 (force-mode-line-update) 242 (force-mode-line-update)
250 (setq buffer-read-only nil) 243 (setq buffer-read-only nil)
251 (dired-unadvertise default-directory) 244 (dired-unadvertise default-directory)
252 (add-hook 'kill-buffer-hook 'wdired-check-kill-buffer nil t) 245 (add-hook 'kill-buffer-hook #'wdired-check-kill-buffer nil t)
253 (add-hook 'after-change-functions 'wdired--restore-properties nil t) 246 (add-hook 'after-change-functions #'wdired--restore-properties nil t)
254 (setq major-mode 'wdired-mode) 247 (setq major-mode 'wdired-mode)
255 (setq mode-name "Editable Dired") 248 (setq mode-name "Editable Dired")
256 (setq revert-buffer-function 'wdired-revert) 249 (add-function :override (local revert-buffer-function) #'wdired-revert)
257 ;; I temp disable undo for performance: since I'm going to clear the 250 ;; I temp disable undo for performance: since I'm going to clear the
258 ;; undo list, it can save more than a 9% of time with big 251 ;; undo list, it can save more than a 9% of time with big
259 ;; directories because setting properties modify the undo-list. 252 ;; directories because setting properties modify the undo-list.
@@ -386,10 +379,9 @@ non-nil means return old filename."
386 (setq major-mode 'dired-mode) 379 (setq major-mode 'dired-mode)
387 (setq mode-name "Dired") 380 (setq mode-name "Dired")
388 (dired-advertise) 381 (dired-advertise)
389 (remove-hook 'kill-buffer-hook 'wdired-check-kill-buffer t) 382 (remove-hook 'kill-buffer-hook #'wdired-check-kill-buffer t)
390 (remove-hook 'after-change-functions 'wdired--restore-properties t) 383 (remove-hook 'after-change-functions #'wdired--restore-properties t)
391 (setq-local revert-buffer-function 'dired-revert)) 384 (remove-function (local revert-buffer-function) #'wdired-revert))
392
393 385
394(defun wdired-abort-changes () 386(defun wdired-abort-changes ()
395 "Abort changes and return to dired mode." 387 "Abort changes and return to dired mode."
@@ -537,7 +529,7 @@ non-nil means return old filename."
537 ;; So we must ensure dired-aux is loaded. 529 ;; So we must ensure dired-aux is loaded.
538 (require 'dired-aux) 530 (require 'dired-aux)
539 (condition-case err 531 (condition-case err
540 (let ((dired-backup-overwrite nil)) 532 (dlet ((dired-backup-overwrite nil))
541 (and wdired-create-parent-directories 533 (and wdired-create-parent-directories
542 (wdired-create-parentdirs file-new)) 534 (wdired-create-parentdirs file-new))
543 (dired-rename-file file-ori file-new 535 (dired-rename-file file-ori file-new
@@ -814,18 +806,18 @@ Like original function but it skips read-only words."
814 806
815(defvar wdired-perm-mode-map 807(defvar wdired-perm-mode-map
816 (let ((map (make-sparse-keymap))) 808 (let ((map (make-sparse-keymap)))
817 (define-key map " " 'wdired-toggle-bit) 809 (define-key map " " #'wdired-toggle-bit)
818 (define-key map "r" 'wdired-set-bit) 810 (define-key map "r" #'wdired-set-bit)
819 (define-key map "w" 'wdired-set-bit) 811 (define-key map "w" #'wdired-set-bit)
820 (define-key map "x" 'wdired-set-bit) 812 (define-key map "x" #'wdired-set-bit)
821 (define-key map "-" 'wdired-set-bit) 813 (define-key map "-" #'wdired-set-bit)
822 (define-key map "S" 'wdired-set-bit) 814 (define-key map "S" #'wdired-set-bit)
823 (define-key map "s" 'wdired-set-bit) 815 (define-key map "s" #'wdired-set-bit)
824 (define-key map "T" 'wdired-set-bit) 816 (define-key map "T" #'wdired-set-bit)
825 (define-key map "t" 'wdired-set-bit) 817 (define-key map "t" #'wdired-set-bit)
826 (define-key map "s" 'wdired-set-bit) 818 (define-key map "s" #'wdired-set-bit)
827 (define-key map "l" 'wdired-set-bit) 819 (define-key map "l" #'wdired-set-bit)
828 (define-key map [down-mouse-1] 'wdired-mouse-toggle-bit) 820 (define-key map [mouse-1] #'wdired-mouse-toggle-bit)
829 map)) 821 map))
830 822
831;; Put a keymap property to the permission bits of the files, and store the 823;; Put a keymap property to the permission bits of the files, and store the