all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Matthias Meulien <orontee@gmail.com>
To: Karl Fogel <kfogel@red-bean.com>
Cc: emacs-devel@gnu.org
Subject: Re: Patch to bookmark.el
Date: Wed, 21 Dec 2011 00:03:44 +0100	[thread overview]
Message-ID: <1324422224.1891.12.camel@localhost.localdomain> (raw)
In-Reply-To: <87vcpbi05a.fsf@kwarm.red-bean.com>

[-- Attachment #1: Type: text/plain, Size: 577 bytes --]

> Sorry -- I don't know what happend, but I only ever got one version from
> you (as far as I know), which is the one my patch was based on.

Don't be sorry; I have many troubles with the ethernet card of my laptop
and won't be surprised if the mails I sent to you were not sent at
all...

Here are log files and patches. Note that header-line.patch is the
result of a diff against the latest pristine bookmark.el; But
dedicated-faces.patch was made after header-line.patch was applied to
bookmark.el. Tell me if you are expecting anything else.

Have a nice day,
-- 
Matthias

[-- Attachment #2: header-line.log --]
[-- Type: text/x-log, Size: 897 bytes --]

[[[
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>
          Karl Fogel <kfogel {_AT_} red-bean.com>

* lisp/bookmark.el
  (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.
]]]

[-- Attachment #3: header-line.patch --]
[-- Type: text/x-patch, Size: 4726 bytes --]

diff --git a/bookmark.el b/bookmark.el
index 4d93e01..99816d2 100644
--- a/bookmark.el
+++ b/bookmark.el
@@ -127,9 +127,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,
@@ -1543,7 +1549,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))
@@ -1568,8 +1575,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))))
 
@@ -1578,7 +1587,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.
@@ -1631,7 +1658,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)
@@ -1644,7 +1673,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))
@@ -1672,7 +1702,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))
@@ -1696,9 +1727,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))))
 

[-- Attachment #4: dedicated-faces.log --]
[-- Type: text/x-log, Size: 580 bytes --]

[[[
Define a face to highlight bookmark names in bookmark menu buffers,
where the default is a bold face similarly to buffer names in buffer
menu buffers.

Patch by: Matthias Meulien <orontee {_AT_} gmail.com>
          Karl Fogel <kfogel {_AT_} red-bean.com>

* lisp/bookmark.el
  (bookmark-menu-bookmark): New face to highlight bookmark names.
  (bookmark-insert-location): Removes dupplicated text property to conform
    to buffer list (see `list-buffers')
  (bookmark-bmenu-list, bookmark-bmenu-hide-filenames):
    Apply face `bookmark-menu-bookmark' to bookmark names.
]]]

[-- Attachment #5: dedicated-faces.patch --]
[-- Type: text/x-patch, Size: 2159 bytes --]

diff --git a/bookmark.el b/bookmark.el
index 99816d2..d27fd46 100644
--- a/bookmark.el
+++ b/bookmark.el
@@ -157,6 +157,10 @@ following in your `.emacs' file:
   :type 'boolean
   :group 'bookmark)
 
+(defface bookmark-menu-bookmark
+  '((t (:weight bold)))
+  "Face used to highlight bookmark names in bookmark menu buffers."
+  :group 'bookmark)
 
 (defcustom bookmark-menu-length 70
   "Maximum length of a bookmark name displayed on a popup menu."
@@ -1178,18 +1182,7 @@ Optional second arg NO-HISTORY means don't record this in the
 minibuffer history list `bookmark-history'."
   (interactive (list (bookmark-completing-read "Insert bookmark location")))
   (or no-history (bookmark-maybe-historicize-string bookmark-name))
-  (let ((start (point)))
-    (prog1
-	(insert (bookmark-location bookmark-name))
-      (if (display-mouse-p)
-	  (add-text-properties
-	   start
-	   (save-excursion (re-search-backward
-			    "[^ \t]")
-                           (1+ (point)))
-	   '(mouse-face highlight
-	     follow-link t
-	     help-echo "mouse-2: go to this bookmark in other window"))))))
+  (insert (bookmark-location bookmark-name)))
 
 ;;;###autoload
 (defalias 'bookmark-locate 'bookmark-insert-location)
@@ -1569,7 +1562,8 @@ deletion, or > if it is flagged for displaying."
         (when (display-mouse-p)
           (add-text-properties
            (+ bookmark-bmenu-marks-width start) end
-           '(mouse-face highlight
+           '(font-lock-face bookmark-menu-bookmark
+	     mouse-face highlight
              follow-link t
              help-echo "mouse-2: go to this bookmark in other window")))
         (insert "\n")))
@@ -1717,8 +1711,9 @@ mainly for debugging, and should not be necessary in normal use."
              (if (display-mouse-p)
                  (add-text-properties
                   start (point)
-                  '(mouse-face
-                    highlight follow-link t help-echo
+                  '(font-lock-face bookmark-menu-bookmark
+		    mouse-face highlight
+		    follow-link t help-echo
                     "mouse-2: go to this bookmark in other window"))))
            (forward-line 1)))))))
 

  reply	other threads:[~2011-12-20 23:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAFEQCfBwuU54R4+dcDC4qHzX4gRrtA4yAhExDzot0iq9anvg1w@mail.gmail.com>
2011-12-17 21:36 ` Patch to bookmark.el Karl Fogel
2011-12-17 22:22   ` Stefan Monnier
2011-12-17 22:23     ` Karl Fogel
2011-12-19 19:30       ` Glenn Morris
2011-12-19 21:16         ` Matthias Meulien
2011-12-19 21:25           ` Glenn Morris
2011-12-18  5:30     ` Karl Fogel
2011-12-19 21:14       ` Matthias Meulien
2011-12-20 18:11         ` Karl Fogel
2011-12-20 23:03           ` Matthias Meulien [this message]
2011-12-20 23:29             ` Karl Fogel
2013-03-07 15:37               ` Matthias Meulien
2013-03-07 22:37                 ` Karl Fogel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1324422224.1891.12.camel@localhost.localdomain \
    --to=orontee@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=kfogel@red-bean.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.