diff options
| author | Stefan Monnier | 2021-03-19 19:04:27 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2021-03-19 19:04:27 -0400 |
| commit | 64f37487e2e7f71701451097e16bcb910f5f91fd (patch) | |
| tree | d0c127a21c4cb54ef9fbef24e40a11a71529418c | |
| parent | 115c7bcfc6b297e3da1c358c841dc68d6c7aa23a (diff) | |
| download | emacs-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.el | 92 |
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 @@ | |||
| 85 | If nil, WDired doesn't require confirmation to change the file names, | 85 | If nil, WDired doesn't require confirmation to change the file names, |
| 86 | and the variable `wdired-confirm-overwrite' controls whether it is ok | 86 | and the variable `wdired-confirm-overwrite' controls whether it is ok |
| 87 | to overwrite files without asking." | 87 | to 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. |
| 93 | This variable has no effect at all if `wdired-use-interactive-rename' | 92 | This variable has no effect at all if `wdired-use-interactive-rename' |
| 94 | is not nil." | 93 | is 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. | |||
| 106 | If nil, \"up\" and \"down\" movement is done as in any other buffer." | 104 | If 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. |
| 114 | In systems without symbolic links support, this variable has no effect | 111 | In systems without symbolic links support, this variable has no effect |
| 115 | at all." | 112 | at 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 | |||
| 135 | program `dired-chmod-program', which must exist." | 131 | program `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 | |||
| 149 | renamed by `dired-do-rename' and `dired-do-rename-regexp'." | 144 | renamed 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 | |||
| 159 | necessary. When nil, attempts to rename a file into a | 153 | necessary. When nil, attempts to rename a file into a |
| 160 | nonexistent directory will fail." | 154 | nonexistent 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 |