From: Glenn Morris Date: Fri, 23 Aug 2013 17:34:09 +0000 (-0400) Subject: * lisp/files.el (create-file-buffer): Rework previous change. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1686^2~139 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bb35f42f61663c47d3443a87665462f75dfd3b2c;p=emacs.git * lisp/files.el (create-file-buffer): Rework previous change. --- 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 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.