mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-26 10:49:33 +00:00
* bookmark.el: Display the bookmark list header similarly to the
buffer list header (see `list-buffers'), where the default is now an immovable/immutable header line. Patch by Matthias Meulien <orontee {_AT_} gmail.com> with a few tweaks by me. (bookmark-bmenu-use-header-line): New variable. (bookmark-bmenu-inline-header-height): New name for `bookmark-bmenu-header-height', to avoid confusion with the code for the new immovable header. All references changed. (bookmark-bmenu-set-header): New function. (bookmark-bmenu-list, bookmark-bmenu-toggle-filenames): Conditionalize header construction accordingly. (bookmark-bmenu-ensure-position): Conditionalize the skipping of the inline header height. (bookmark-bmenu-show-filenames, bookmark-bmenu-hide-filenames): Conditionalize the skipping of the inline header height.
This commit is contained in:
parent
94e48c7d75
commit
7a78e19f24
@ -1,3 +1,22 @@
|
||||
2013-03-07 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* bookmark.el: Display the bookmark list header similarly to the
|
||||
buffer list header (see `list-buffers'), where the default is now
|
||||
an immovable/immutable header line. Patch by Matthias Meulien
|
||||
<orontee {_AT_} gmail.com> with a few tweaks by me.
|
||||
|
||||
(bookmark-bmenu-use-header-line): New variable.
|
||||
(bookmark-bmenu-inline-header-height): New name for
|
||||
`bookmark-bmenu-header-height', to avoid confusion with the code
|
||||
for the new immovable header. All references changed.
|
||||
(bookmark-bmenu-set-header): New function.
|
||||
(bookmark-bmenu-list, bookmark-bmenu-toggle-filenames):
|
||||
Conditionalize header construction accordingly.
|
||||
(bookmark-bmenu-ensure-position): Conditionalize the skipping of
|
||||
the inline header height.
|
||||
(bookmark-bmenu-show-filenames, bookmark-bmenu-hide-filenames):
|
||||
Conditionalize the skipping of the inline header height.
|
||||
|
||||
2013-03-07 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
* progmodes/js.el (js--multi-line-declaration-indentation): Merge
|
||||
|
@ -129,9 +129,15 @@ recently set ones come first, oldest ones come last)."
|
||||
:type 'boolean
|
||||
:group 'bookmark)
|
||||
|
||||
(defcustom bookmark-bmenu-use-header-line t
|
||||
"Non-nil means to use an immovable header line, as opposed to inline
|
||||
text at the top of the buffer."
|
||||
:type 'boolean
|
||||
:group 'bookmark)
|
||||
|
||||
(defconst bookmark-bmenu-header-height 2
|
||||
"Number of lines used for the *Bookmark List* header.")
|
||||
(defconst bookmark-bmenu-inline-header-height 2
|
||||
"Number of lines used for the *Bookmark List* header
|
||||
\(only significant when `bookmark-bmenu-use-header-line' is nil\).")
|
||||
|
||||
(defconst bookmark-bmenu-marks-width 2
|
||||
"Number of columns (chars) used for the *Bookmark List* marks column,
|
||||
@ -1552,7 +1558,8 @@ deletion, or > if it is flagged for displaying."
|
||||
(set-buffer buf)))
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(insert "% Bookmark\n- --------\n")
|
||||
(if (not bookmark-bmenu-use-header-line)
|
||||
(insert "% Bookmark\n- --------\n"))
|
||||
(add-text-properties (point-min) (point)
|
||||
'(font-lock-face bookmark-menu-heading))
|
||||
(dolist (full-record (bookmark-maybe-sort-alist))
|
||||
@ -1577,8 +1584,10 @@ deletion, or > if it is flagged for displaying."
|
||||
(insert "\n")))
|
||||
(set-buffer-modified-p (not (= bookmark-alist-modification-count 0)))
|
||||
(goto-char (point-min))
|
||||
(forward-line 2)
|
||||
(bookmark-bmenu-mode)
|
||||
(if bookmark-bmenu-use-header-line
|
||||
(bookmark-bmenu-set-header)
|
||||
(forward-line bookmark-bmenu-inline-header-height))
|
||||
(if bookmark-bmenu-toggle-filenames
|
||||
(bookmark-bmenu-toggle-filenames t))))
|
||||
|
||||
@ -1587,7 +1596,25 @@ deletion, or > if it is flagged for displaying."
|
||||
;;;###autoload
|
||||
(defalias 'edit-bookmarks 'bookmark-bmenu-list)
|
||||
|
||||
|
||||
(defun bookmark-bmenu-set-header ()
|
||||
"Sets the immutable header line."
|
||||
(let ((header (concat "%% " "Bookmark")))
|
||||
(when bookmark-bmenu-toggle-filenames
|
||||
(setq header (concat header
|
||||
(make-string (- bookmark-bmenu-file-column
|
||||
(- (length header) 3)) ?\s)
|
||||
"File")))
|
||||
(let ((pos 0))
|
||||
(while (string-match "[ \t\n]+" header pos)
|
||||
(setq pos (match-end 0))
|
||||
(put-text-property (match-beginning 0) pos 'display
|
||||
(list 'space :align-to (- pos 1))
|
||||
header)))
|
||||
(put-text-property 0 2 'face 'fixed-pitch header)
|
||||
(setq header (concat (propertize " " 'display '(space :align-to 0))
|
||||
header))
|
||||
;; Code derived from `buff-menu.el'.
|
||||
(setq header-line-format header)))
|
||||
|
||||
(define-derived-mode bookmark-bmenu-mode special-mode "Bookmark Menu"
|
||||
"Major mode for editing a list of bookmarks.
|
||||
@ -1640,7 +1667,9 @@ Optional argument SHOW means show them unconditionally."
|
||||
(setq bookmark-bmenu-toggle-filenames nil))
|
||||
(t
|
||||
(bookmark-bmenu-show-filenames)
|
||||
(setq bookmark-bmenu-toggle-filenames t))))
|
||||
(setq bookmark-bmenu-toggle-filenames t)))
|
||||
(when bookmark-bmenu-use-header-line
|
||||
(bookmark-bmenu-set-header)))
|
||||
|
||||
|
||||
(defun bookmark-bmenu-show-filenames (&optional force)
|
||||
@ -1653,7 +1682,8 @@ mainly for debugging, and should not be necessary in normal use."
|
||||
(save-excursion
|
||||
(save-window-excursion
|
||||
(goto-char (point-min))
|
||||
(forward-line 2)
|
||||
(if (not bookmark-bmenu-use-header-line)
|
||||
(forward-line bookmark-bmenu-inline-header-height))
|
||||
(setq bookmark-bmenu-hidden-bookmarks ())
|
||||
(let ((inhibit-read-only t))
|
||||
(while (< (point) (point-max))
|
||||
@ -1681,7 +1711,8 @@ mainly for debugging, and should not be necessary in normal use."
|
||||
(with-buffer-modified-unmodified
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(forward-line 2)
|
||||
(if (not bookmark-bmenu-use-header-line)
|
||||
(forward-line bookmark-bmenu-inline-header-height))
|
||||
(setq bookmark-bmenu-hidden-bookmarks
|
||||
(nreverse bookmark-bmenu-hidden-bookmarks))
|
||||
(let ((inhibit-read-only t))
|
||||
@ -1705,9 +1736,11 @@ mainly for debugging, and should not be necessary in normal use."
|
||||
"If point is not on a bookmark line, move it to one.
|
||||
If before the first bookmark line, move to the first; if after the
|
||||
last full line, move to the last full line. The return value is undefined."
|
||||
(cond ((< (count-lines (point-min) (point)) bookmark-bmenu-header-height)
|
||||
(cond ((and (not bookmark-bmenu-use-header-line)
|
||||
(< (count-lines (point-min) (point))
|
||||
bookmark-bmenu-inline-header-height))
|
||||
(goto-char (point-min))
|
||||
(forward-line bookmark-bmenu-header-height))
|
||||
(forward-line bookmark-bmenu-inline-header-height))
|
||||
((and (bolp) (eobp))
|
||||
(beginning-of-line 0))))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user