• Stefan Kangas's avatar
    Base bookmark-bmenu-mode on tabulated-list-mode (Bug#39293) · 61e51fee
    Stefan Kangas authored
    Rewriting bookmark-bmenu-mode to be based on 'tabulated-list-mode'
    allows us to greatly simplify the code in several cases.  In addition,
    we get some features for free, such as sorting by column.
    
    The only functional step backwards is that we no longer support the
    optional "inline" header line, a bookmark.el-specific feature to have
    a header without using 'header-line-format'.  This feature is believed
    to be not very useful or widely used.
    
    * lisp/bookmark.el (tabulated-list): Require.
    (bookmark-bmenu-mode): Inherit from 'tabulated-list-mode' instead of
    'special-mode' and make the necessary changes to support that.
    (bookmark-bmenu-mode-map): Inherit from 'tabulated-list-mode-map'
    instead of 'special-mode-map'.  Remove now duplicate key bindings.
    (bookmark-bmenu--revert): New function to show the bookmark list using
    'tabulated-list-mode'.
    (bookmark-bmenu-list): Simplify by using above new function.
    (bookmark-bmenu-bookmark): Adapt to 'tabulated-list-mode'.
    (bookmark-bmenu--name-predicate)
    (bookmark-bmenu--file-predicate): New functions used by
    'tabulated-list-mode' to sort.
    
    (bookmark-bmenu-set-header): Redefine as obsolete function alias for
    'tabulated-list-init-header'.
    (bookmark-bmenu-toggle-filenames, bookmark-bmenu-show-filenames)
    (bookmark-bmenu-hide-filenames, bookmark-bmenu-mark)
    (bookmark-bmenu-mark-all, bookmark-bmenu-unmark-all)
    (bookmark-bmenu-delete-all, bookmark-bmenu-unmark)
    (bookmark-bmenu-delete, bookmark-bmenu-delete-backwards): Simplify now
    that we can depend on 'tabulated-list-mode' to do more work.
    
    (bookmark-bmenu-use-header-line)
    (bookmark-bmenu-inline-header-height): Declare variables relating to
    the now unsupported "inline" header obsolete.
    (bookmark-bmenu-ensure-position)
    (bookmark-bmenu-execute-deletions): Remove code to handle "inline" header.
    
    * test/lisp/bookmark-tests.el
    (bookmark-test-bmenu-edit-annotation/show-annotation)
    (bookmark-test-bmenu-unmark, bookmark-test-bmenu-mark): Update tests
    for minor changes when using 'tabulated-list-mode'.
    61e51fee
bookmark.el 91.4 KB