summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/files.el8
2 files changed, 11 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index df9fce72dd9..9fd3e687405 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2013-08-23 Glenn Morris <rgm@gnu.org>
+
+ * files.el (create-file-buffer): Handle the vital case of a file
+ whose basename is all spaces. (Bug#15162)
+
2013-08-23 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/fill.el (fill-match-adaptive-prefix): Don't throw away
diff --git a/lisp/files.el b/lisp/files.el
index efd89605b1b..71dc968f160 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1604,12 +1604,16 @@ killed."
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.
(let ((lastname (file-name-nondirectory filename)))
(if (string= lastname "")
(setq lastname filename))
(save-match-data
- (string-match "^ *\\(.*\\)" lastname)
- (generate-new-buffer (match-string 1 lastname)))))
+ (if (string-match "\\` +\\(.*\\)" lastname)
+ (if (zerop (length (setq lastname (match-string 1 lastname))))
+ (setq lastname "SPC")))) ; bug#15162
+ (generate-new-buffer lastname)))
(defun generate-new-buffer (name)
"Create and return a buffer with a name based on NAME.