2

By default speedbar displays buffers as they are in the buffer list. Is there a way to sort them by their name alphabetically, either automatically or by triggering the sorting?

Drew
  • 75,699
  • 9
  • 109
  • 225
Paralife
  • 121
  • 3

1 Answers1

2
(require 'speedbar)

(defun speedbar-buffer-buttons-engine (temp)
  "Create speedbar buffer buttons.
If TEMP is non-nil, then clicking on a buffer restores the previous display."
  (speedbar-insert-separator "Active Buffers:")
  (let* ((bl (buffer-list))
         (abl ;; alphabetized buffer-list
           (sort
              bl
              #'(lambda (e1 e2)
                  (string-lessp (buffer-name e1) (buffer-name e2)))))
          (case-fold-search t))
    (while abl
      (if (string-match "^[ *]" (buffer-name (car abl)))
    nil
  (let* ((known (string-match speedbar-file-regexp
            (buffer-name (car abl))))
         (expchar (if known ?+ ??))
         (fn (if known 'speedbar-tag-file nil))
         (fname (with-current-buffer (car abl)
                        (buffer-file-name))))
    (speedbar-make-tag-line 'bracket expchar fn
          (if fname (file-name-nondirectory fname))
          (buffer-name (car abl))
          'speedbar-buffer-click temp
          'speedbar-file-face 0)
    (speedbar-buffers-tail-notes (car abl))))
      (setq abl (cdr abl)))
    (setq bl (buffer-list)
          abl ;; alphabetized buffer-list
           (sort
              bl
              #'(lambda (e1 e2)
                  (string-lessp (buffer-name e1) (buffer-name e2)))))
    (speedbar-insert-separator "Scratch Buffers:")
    (while abl
      (if (not (string-match "^\\*" (buffer-name (car abl))))
    nil
  (if (eq (car abl) speedbar-buffer)
      nil
    (speedbar-make-tag-line 'bracket ?? nil nil
          (buffer-name (car abl))
          'speedbar-buffer-click temp
          'speedbar-file-face 0)
    (speedbar-buffers-tail-notes (car abl))))
      (setq abl (cdr abl)))
    ;; Need to research why this last line is needed (if at all)?
    (setq bl (buffer-list))))
lawlist
  • 18,826
  • 5
  • 37
  • 118