X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b4fbd69b66a927ad8ff479bee6ca57e977d7e649..1bd74554970450054c874dbb69837b43f783c6bd:/lisp/wdired.el diff --git a/lisp/wdired.el b/lisp/wdired.el index d943dada03..5b23f843e0 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -1,4 +1,4 @@ -;;; wdired.el --- Rename files editing their names in dired buffers +;;; wdired.el --- Rename files editing their names in dired buffers -*- coding: utf-8; -*- ;; Copyright (C) 2004-2016 Free Software Foundation, Inc. @@ -304,14 +304,15 @@ or \\[wdired-abort-changes] to abort changes"))) (put-text-property b-protection (point-max) 'read-only t)))) ;; This code is a copy of some dired-get-filename lines. -(defsubst wdired-normalize-filename (file) - (setq file - ;; FIXME: shouldn't we check for a `b' argument or somesuch before - ;; doing such unquoting? --Stef - (read (concat - "\"" (replace-regexp-in-string - "\\([^\\]\\|\\`\\)\"" "\\1\\\\\"" file) - "\""))) +(defsubst wdired-normalize-filename (file unquotep) + (when unquotep + (setq file + ;; FIXME: shouldn't we check for a `b' argument or somesuch before + ;; doing such unquoting? --Stef + (read (concat + "\"" (replace-regexp-in-string + "\\([^\\]\\|\\`\\)\"" "\\1\\\\\"" file) + "\"")))) (and file buffer-file-coding-system (not file-name-coding-system) (not default-file-name-coding-system) @@ -339,7 +340,8 @@ non-nil means return old filename." ;; deletion. (setq end (next-single-property-change beg 'end-name)) (setq file (buffer-substring-no-properties (1+ beg) end))) - (and file (setq file (wdired-normalize-filename file)))) + ;; Don't unquote the old name, it wasn't quoted in the first place + (and file (setq file (wdired-normalize-filename file (not old))))) (if (or no-dir old) file (and file (> (length file) 0) @@ -588,7 +590,7 @@ Optional arguments are ignored." "Move down lines then position at filename or the current column. See `wdired-use-dired-vertical-movement'. Optional prefix ARG says how many lines to move; default is one line." - (interactive "p") + (interactive "^p") (with-no-warnings (next-line arg)) (if (or (eq wdired-use-dired-vertical-movement t) (and wdired-use-dired-vertical-movement @@ -601,7 +603,7 @@ says how many lines to move; default is one line." "Move up lines then position at filename or the current column. See `wdired-use-dired-vertical-movement'. Optional prefix ARG says how many lines to move; default is one line." - (interactive "p") + (interactive "^p") (with-no-warnings (previous-line arg)) (if (or (eq wdired-use-dired-vertical-movement t) (and wdired-use-dired-vertical-movement @@ -644,7 +646,7 @@ If OLD, return the old target. If MOVE, move point before it." (setq end (next-single-property-change beg 'end-link)) (setq target (buffer-substring-no-properties (1+ beg) end))) (if move (goto-char (1- beg))))) - (and target (wdired-normalize-filename target)))) + (and target (wdired-normalize-filename target t)))) (declare-function make-symbolic-link "fileio.c") @@ -683,7 +685,7 @@ If OLD, return the old target. If MOVE, move point before it." (funcall command 1) (setq arg (1- arg))) (error - (if (forward-word) + (if (forward-word-strictly) ;; Skip any non-word characters to avoid triggering a read-only ;; error which would cause skipping the next word characters too. (skip-syntax-forward "^w")