[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