emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 23ee78b 1/2: Support bookmarking Eshell buffers


From: Stefan Kangas
Subject: master 23ee78b 1/2: Support bookmarking Eshell buffers
Date: Thu, 3 Sep 2020 08:39:04 -0400 (EDT)

branch: master
commit 23ee78b00512ea0001f8e21646a725ac13c96e17
Author: Stefan Kangas <stefankangas@gmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    Support bookmarking Eshell buffers
    
    * lisp/eshell/esh-mode.el (eshell-bookmark-name)
    (eshell-bookmark-make-record, eshell-bookmark-jump): New defuns.
    (eshell-mode): Set up bookmark handler.
---
 lisp/eshell/esh-mode.el | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 8799007..791d472 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -329,6 +329,8 @@ and the hook `eshell-exit-hook'."
       (if mode-line-elt
          (setcar mode-line-elt 'eshell-command-running-string))))
 
+  (set (make-local-variable 'bookmark-make-record-function)
+       'eshell-bookmark-make-record)
   (setq local-abbrev-table eshell-mode-abbrev-table)
 
   (set (make-local-variable 'list-buffers-directory)
@@ -1015,5 +1017,28 @@ This function could be in the list 
`eshell-output-filter-functions'."
 (custom-add-option 'eshell-output-filter-functions
                   'eshell-handle-ansi-color)
 
+;;; Bookmark support:
+
+(declare-function bookmark-make-record-default
+                  "bookmark" (&optional no-file no-context posn))
+(declare-function bookmark-prop-get "bookmark" (bookmark prop))
+
+(defun eshell-bookmark-name ()
+  (format "eshell-%s"
+          (file-name-nondirectory
+           (directory-file-name
+            (file-name-directory default-directory)))))
+
+(defun eshell-bookmark-make-record ()
+  "Create a bookmark for the current Eshell buffer."
+  `(,(eshell-bookmark-name)
+    (location . ,default-directory)
+    (handler . eshell-bookmark-jump)))
+
+(defun eshell-bookmark-jump (bookmark)
+  "Default bookmark handler for Eshell buffers."
+  (let ((default-directory (bookmark-prop-get bookmark 'location)))
+    (eshell)))
+
 (provide 'esh-mode)
 ;;; esh-mode.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]