summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/files.el39
-rw-r--r--lisp/international/mule-cmds.el12
2 files changed, 35 insertions, 16 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.
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 7543d0d734a..7672edc0443 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2704,10 +2704,12 @@ See also `locale-charset-language-names', `locale-language-names',
;; terminal-coding-system with the ANSI or console codepage.
(when (and (eq system-type 'windows-nt)
(boundp 'w32-ansi-code-page))
- (let* ((code-page-coding
- (intern (format "cp%d" (if noninteractive
- (w32-get-console-codepage)
- w32-ansi-code-page))))
+ (let* ((ansi-code-page-coding
+ (intern (format "cp%d" w32-ansi-code-page)))
+ (code-page-coding
+ (if noninteractive
+ (intern (format "cp%d" (w32-get-console-codepage)))
+ ansi-code-page-coding))
(output-coding
(if noninteractive
(intern (format "cp%d" (w32-get-console-output-codepage)))
@@ -2717,7 +2719,7 @@ See also `locale-charset-language-names', `locale-language-names',
(unless frame (setq locale-coding-system code-page-coding))
(set-keyboard-coding-system code-page-coding frame)
(set-terminal-coding-system output-coding frame)
- (setq default-file-name-coding-system code-page-coding))))
+ (setq default-file-name-coding-system ansi-code-page-coding))))
(when (eq system-type 'darwin)
;; On Darwin, file names are always encoded in utf-8, no matter