diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/files.el | 39 | ||||
-rw-r--r-- | lisp/international/mule-cmds.el | 12 |
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 |