aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1994-10-13 18:20:15 +0000
committerRichard M. Stallman1994-10-13 18:20:15 +0000
commitc171b42fcfb693344d102f615abef6d565e5db44 (patch)
tree85d89aff32f575b7698a83de2d04222c02a44867
parentec2970a281e92d10a2c8561f7158034a8aec6517 (diff)
downloademacs-c171b42fcfb693344d102f615abef6d565e5db44.tar.gz
emacs-c171b42fcfb693344d102f615abef6d565e5db44.zip
(menu-bar-update-buffers-1): New subroutine
broken out of menu-bar-update-buffers. Truncate the file name and discard the nondirectory part. (menu-bar-update-buffers): Discard middle of long buffer names.
-rw-r--r--lisp/menu-bar.el76
1 files changed, 51 insertions, 25 deletions
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 45a880a8468..958b67fcfe3 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -292,6 +292,28 @@ A large number or nil slows down menu responsiveness.")
292 (raise-frame last-command-event) 292 (raise-frame last-command-event)
293 (select-frame last-command-event)) 293 (select-frame last-command-event))
294 294
295(defun menu-bar-update-buffers-1 (elt)
296 (cons (format
297 (format "%%%ds %%s%%s %%s" maxbuf)
298 (cdr elt)
299 (if (buffer-modified-p (car elt))
300 "*" " ")
301 (save-excursion
302 (set-buffer (car elt))
303 (if buffer-read-only "%" " "))
304 (let ((file
305 (or (buffer-file-name (car elt))
306 (save-excursion
307 (set-buffer (car elt))
308 list-buffers-directory)
309 "")))
310 (setq file (or (file-name-directory file)
311 ""))
312 (if (> (length file) 20)
313 (setq file (concat "..." (substring file -17))))
314 file))
315 (car elt)))
316
295(defun menu-bar-update-buffers () 317(defun menu-bar-update-buffers ()
296 ;; If user discards the Buffers item, play along. 318 ;; If user discards the Buffers item, play along.
297 (and (lookup-key (current-global-map) [menu-bar buffer]) 319 (and (lookup-key (current-global-map) [menu-bar buffer])
@@ -308,38 +330,42 @@ A large number or nil slows down menu responsiveness.")
308 ;; Make the menu of buffers proper. 330 ;; Make the menu of buffers proper.
309 (setq buffers-menu 331 (setq buffers-menu
310 (cons "Select Buffer" 332 (cons "Select Buffer"
311 (let ((tail buffers) 333 (let* ((buffer-list
312 (maxbuf 0) 334 (mapcar 'list buffers))
313 (maxlen 0) 335 tail
314 alist 336 (maxbuf 0)
315 head) 337 (maxlen 0)
338 alist
339 head)
340 ;; Put into each element of buffer-list
341 ;; the name for actual display,
342 ;; perhaps truncated in the middle.
343 (setq tail buffer-list)
344 (while tail
345 (let ((name (buffer-name (car (car tail)))))
346 (setcdr (car tail)
347 (if (> (length name) 27)
348 (concat (substring name 0 12)
349 "..."
350 (substring name -12))
351 name)))
352 (setq tail (cdr tail)))
353 ;; Compute the maximum length of any name.
354 (setq tail buffer-list)
316 (while tail 355 (while tail
317 (or (eq ?\ (aref (buffer-name (car tail)) 0)) 356 (or (eq ?\ (aref (cdr (car tail)) 0))
318 (setq maxbuf 357 (setq maxbuf
319 (max maxbuf 358 (max maxbuf
320 (length (buffer-name (car tail)))))) 359 (length (cdr (car tail))))))
321 (setq tail (cdr tail))) 360 (setq tail (cdr tail)))
322 (setq tail buffers) 361 ;; Set ALIST to an alist of the form
362 ;; ITEM-STRING . BUFFER
363 (setq tail buffer-list)
323 (while tail 364 (while tail
324 (let ((elt (car tail))) 365 (let ((elt (car tail)))
325 (or (eq ?\ (aref (buffer-name elt) 0)) 366 (or (eq ?\ (aref (cdr elt) 0))
326 (setq alist (cons 367 (setq alist (cons
327 (cons 368 (menu-bar-update-buffers-1 elt)
328 (format
329 (format "%%%ds %%s%%s %%s"
330 maxbuf)
331 (buffer-name elt)
332 (if (buffer-modified-p elt)
333 "*" " ")
334 (save-excursion
335 (set-buffer elt)
336 (if buffer-read-only "%" " "))
337 (or (buffer-file-name elt)
338 (save-excursion
339 (set-buffer elt)
340 list-buffers-directory)
341 ""))
342 elt)
343 alist))) 369 alist)))
344 (and alist (> (length (car (car alist))) maxlen) 370 (and alist (> (length (car (car alist))) maxlen)
345 (setq maxlen (length (car (car alist)))))) 371 (setq maxlen (length (car (car alist))))))