summaryrefslogtreecommitdiff
path: root/lisp/files.el
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-12-07 12:40:43 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2016-12-07 12:40:43 -0800
commitc5532f5a5c304134ecb0367997402c2935d6030c (patch)
treecff0c6b05099fcaa51dae8e1c042528cdb318925 /lisp/files.el
parent32b46fc82f1275d8e0c86340546db366dea48c8c (diff)
parent39809036d39711fb5d01105739dd301ac046b151 (diff)
Merge from origin/emacs-25
3980903 ; Update ChangeLog.2, etc/AUTHORS and ldef-boot.el for Emacs ... 5878abf Fix 'expand-file-name' during startup on MS-Windows
Diffstat (limited to 'lisp/files.el')
-rw-r--r--lisp/files.el39
1 files changed, 28 insertions, 11 deletions
diff --git a/lisp/files.el b/lisp/files.el
index 84f8dc7db94..54e8495abc7 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -51,20 +51,21 @@ when it has unsaved changes."
nil
"Alist of abbreviations for file directories.
A list of elements of the form (FROM . TO), each meaning to replace
-FROM with TO when it appears in a directory name. This replacement is
-done when setting up the default directory of a newly visited file.
+a match for FROM with TO when a directory name matches FROM. This
+replacement is done when setting up the default directory of a
+newly visited file buffer.
-FROM is matched against directory names anchored at the first
-character, so it should start with a \"\\\\\\=`\", or, if directory
-names cannot have embedded newlines, with a \"^\".
+FROM is a regexp that is matched against directory names anchored at
+the first character, so it should start with a \"\\\\\\=`\", or, if
+directory names cannot have embedded newlines, with a \"^\".
FROM and TO should be equivalent names, which refer to the
-same directory. Do not use `~' in the TO strings;
-they should be ordinary absolute directory names.
+same directory. TO should be an absolute directory name.
+Do not use `~' in the TO strings.
Use this feature when you have directories which you normally refer to
via absolute symbolic links. Make TO the name of the link, and FROM
-the name it is linked to."
+a regexp matching the name it is linked to."
:type '(repeat (cons :format "%v"
:value ("\\`" . "")
(regexp :tag "From")
@@ -1784,7 +1785,8 @@ Choose the buffer's name using `generate-new-buffer-name'."
(make-obsolete-variable 'automount-dir-prefix 'directory-abbrev-alist "24.3")
(defvar abbreviated-home-dir nil
- "The user's homedir abbreviated according to `directory-abbrev-alist'.")
+ "Regexp matching the user's homedir at the beginning of file name.
+The value includes abbreviation according to `directory-abbrev-alist'.")
(defun abbreviate-file-name (filename)
"Return a version of FILENAME shortened using `directory-abbrev-alist'.
@@ -1815,8 +1817,23 @@ home directory is a root directory) and removes automounter prefixes
(or abbreviated-home-dir
(setq abbreviated-home-dir
(let ((abbreviated-home-dir "$foo"))
- (concat "\\`" (abbreviate-file-name (expand-file-name "~"))
- "\\(/\\|\\'\\)"))))
+ (setq abbreviated-home-dir
+ (concat "\\`"
+ (abbreviate-file-name (expand-file-name "~"))
+ "\\(/\\|\\'\\)"))
+ ;; Depending on whether default-directory does or
+ ;; doesn't include non-ASCII characters, the value
+ ;; of abbreviated-home-dir could be multibyte or
+ ;; unibyte. In the latter case, we need to decode
+ ;; it. Note that this function is called for the
+ ;; first time (from startup.el) when
+ ;; locale-coding-system is already set up.
+ (if (multibyte-string-p abbreviated-home-dir)
+ abbreviated-home-dir
+ (decode-coding-string abbreviated-home-dir
+ (if (eq system-type 'windows-nt)
+ 'utf-8
+ locale-coding-system))))))
;; If FILENAME starts with the abbreviated homedir,
;; make it start with `~' instead.