mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Don't over-normalize file names starting with "~" in Eshell
Previously, this would call 'expand-file-name' on the file name, but that normalizes the value, turning something like "~/." into "/home/user". As a result, Pcomplete didn't work for dotfiles after "~/" (bug#28064). * lisp/eshell/em-dirs.el (eshell-expand-user-reference): New function... (eshell-expand-user-reference): ... use it.
This commit is contained in:
parent
4234e204ec
commit
6afa91f796
1 changed files with 8 additions and 2 deletions
|
|
@ -253,11 +253,17 @@ Thus, this does not include the current directory.")
|
|||
(throw 'eshell-replace-command
|
||||
(eshell-parse-command "cd" (flatten-tree args)))))
|
||||
|
||||
(defun eshell-expand-user-reference (file)
|
||||
"Expand a user reference in FILE to its real directory name."
|
||||
(replace-regexp-in-string
|
||||
(rx bos (group "~" (*? anychar)) (or "/" eos))
|
||||
#'expand-file-name file))
|
||||
|
||||
(defun eshell-parse-user-reference ()
|
||||
"An argument beginning with ~ is a filename to be expanded."
|
||||
(when (and (not eshell-current-argument)
|
||||
(eq (char-after) ?~))
|
||||
(add-to-list 'eshell-current-modifiers 'expand-file-name)
|
||||
(eq (char-after) ?~))
|
||||
(add-to-list 'eshell-current-modifiers #'eshell-expand-user-reference)
|
||||
(forward-char)
|
||||
(char-to-string (char-before))))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue