Mercurial > emacs
comparison lisp/buff-menu.el @ 10593:7ae93c2ee7a2
(list-buffers-noselect): Handle read-only properly.
Select each buffer just once to get all necessary info about it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 30 Jan 1995 02:15:37 +0000 |
parents | bbb68f0d31c6 |
children | 638d2df80894 |
comparison
equal
deleted
inserted
replaced
10592:bbb68f0d31c6 | 10593:7ae93c2ee7a2 |
---|---|
471 ") | 471 ") |
472 (let ((bl (buffer-list))) | 472 (let ((bl (buffer-list))) |
473 (while bl | 473 (while bl |
474 (let* ((buffer (car bl)) | 474 (let* ((buffer (car bl)) |
475 (name (buffer-name buffer)) | 475 (name (buffer-name buffer)) |
476 (file (buffer-file-name buffer))) | 476 (file (buffer-file-name buffer)) |
477 this-buffer-read-only | |
478 this-buffer-size | |
479 this-buffer-mode-name | |
480 this-buffer-directory) | |
481 (save-excursion | |
482 (set-buffer buffer) | |
483 (setq this-buffer-read-only buffer-read-only) | |
484 (setq this-buffer-size (buffer-size)) | |
485 (setq this-buffer-mode-name | |
486 (if (eq buffer standard-output) | |
487 "Buffer Menu" mode-name)) | |
488 (or file | |
489 ;; No visited file. Check local value of | |
490 ;; list-buffers-directory. | |
491 (if (and (boundp 'list-buffers-directory) | |
492 list-buffers-directory) | |
493 (setq this-buffer-directory list-buffers-directory)))) | |
477 (cond | 494 (cond |
478 ;; Don't mention internal buffers. | 495 ;; Don't mention internal buffers. |
479 ((string= (substring name 0 1) " ")) | 496 ((string= (substring name 0 1) " ")) |
480 ;; Maybe don't mention buffers without files. | 497 ;; Maybe don't mention buffers without files. |
481 ((and files-only (not file))) | 498 ((and files-only (not file))) |
490 ;; Identify modified buffers. | 507 ;; Identify modified buffers. |
491 (princ (if (buffer-modified-p buffer) "*" " ")) | 508 (princ (if (buffer-modified-p buffer) "*" " ")) |
492 ;; Handle readonly status. The output buffer is special | 509 ;; Handle readonly status. The output buffer is special |
493 ;; cased to be readonly; it is actually made so at a later | 510 ;; cased to be readonly; it is actually made so at a later |
494 ;; date. | 511 ;; date. |
495 (princ (if (or (eq buffer standard-output) buffer-read-only) | 512 (princ (if (or (eq buffer standard-output) |
513 this-buffer-read-only) | |
496 "% " | 514 "% " |
497 " ")) | 515 " ")) |
498 (princ name) | 516 (princ name) |
499 (indent-to 17 2) | 517 (indent-to 17 2) |
500 (let (size | 518 (let (size |
501 mode | 519 mode |
502 (excess (- (current-column) 17))) | 520 (excess (- (current-column) 17))) |
503 (save-excursion | 521 (setq size (format "%8d" this-buffer-size)) |
504 (set-buffer buffer) | 522 ;; Ack -- if looking at the *Buffer List* buffer, |
505 (setq size (format "%8d" (buffer-size))) | 523 ;; always use "Buffer Menu" mode. Otherwise the |
506 ;; Ack -- if looking at the *Buffer List* buffer, | 524 ;; first time the buffer is created, the mode will be wrong. |
507 ;; always use "Buffer Menu" mode. Otherwise the | 525 (setq mode this-buffer-mode-name) |
508 ;; first time the buffer is created, the mode will | 526 (while (and (> excess 0) (= (aref size 0) ?\ )) |
509 ;; be wrong. | 527 (setq size (substring size 1)) |
510 (setq mode (if (eq buffer standard-output) | 528 (setq excess (1- excess))) |
511 "Buffer Menu" | |
512 mode-name)) | |
513 (while (and (> excess 0) (= (aref size 0) ?\ )) | |
514 (setq size (substring size 1)) | |
515 (setq excess (1- excess)))) | |
516 (princ size) | 529 (princ size) |
517 (indent-to 27 1) | 530 (indent-to 27 1) |
518 (princ mode)) | 531 (princ mode)) |
519 (indent-to 40 1) | 532 (indent-to 40 1) |
520 (or file | 533 (or file (setq file this-buffer-directory)) |
521 ;; No visited file. Check local value of | |
522 ;; list-buffers-directory. | |
523 (save-excursion | |
524 (set-buffer buffer) | |
525 (if (and (boundp 'list-buffers-directory) | |
526 list-buffers-directory) | |
527 (setq file list-buffers-directory)))) | |
528 (if file | 534 (if file |
529 (princ file)) | 535 (princ file)) |
530 (princ "\n")))) | 536 (princ "\n")))) |
531 (setq bl (cdr bl)))) | 537 (setq bl (cdr bl)))) |
532 (Buffer-menu-mode) | 538 (Buffer-menu-mode) |