summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/files.el15
2 files changed, 9 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f633f5f5de7..6d3b09c3449 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -2,8 +2,8 @@
* files.el (interpreter-mode-alist): Use tcl-mode for expect scripts.
- * files.el (create-file-buffer): Handle the vital case of a file
- whose basename is all spaces. (Bug#15162)
+ * files.el (create-file-buffer): If the result would begin with
+ spaces, prepend a "|" instead of removing them. (Bug#15162)
2013-08-23 Stefan Monnier <monnier@iro.umontreal.ca>
diff --git a/lisp/files.el b/lisp/files.el
index 9adbca10369..04ea47fa6ef 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1603,17 +1603,16 @@ killed."
"Create a suitably named buffer for visiting FILENAME, and return it.
FILENAME (sans directory) is used unchanged if that name is free;
otherwise a string <2> or <3> or ... is appended to get an unused name.
-Spaces at the start of FILENAME (sans directory) are removed."
- ;; ^ Because buffers whose name begins with a space are treated as
- ;; internal Emacs buffers.
+
+Emacs treats buffers whose names begin with a space as internal buffers.
+To avoid confusion when visiting a file whose name begins with a space,
+this function prepends a \"|\" to the final result if necessary."
(let ((lastname (file-name-nondirectory filename)))
(if (string= lastname "")
(setq lastname filename))
- (save-match-data
- (if (string-match "\\` +\\(.*\\)" lastname)
- (if (zerop (length (setq lastname (match-string 1 lastname))))
- (setq lastname "SPC")))) ; bug#15162
- (generate-new-buffer lastname)))
+ (generate-new-buffer (if (string-match-p "\\` " lastname)
+ (concat "|" lastname)
+ lastname))))
(defun generate-new-buffer (name)
"Create and return a buffer with a name based on NAME.