diff options
| author | Richard M. Stallman | 1994-10-13 18:20:15 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1994-10-13 18:20:15 +0000 |
| commit | c171b42fcfb693344d102f615abef6d565e5db44 (patch) | |
| tree | 85d89aff32f575b7698a83de2d04222c02a44867 | |
| parent | ec2970a281e92d10a2c8561f7158034a8aec6517 (diff) | |
| download | emacs-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.el | 76 |
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)))))) |