[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/better-jumper 2c04d4bc09 25/48: Add minor mode + cleanup
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/better-jumper 2c04d4bc09 25/48: Add minor mode + cleanup |
Date: |
Sun, 9 Jan 2022 22:58:10 -0500 (EST) |
branch: elpa/better-jumper
commit 2c04d4bc09da88c5b8b276c87d3f9f56e517144e
Author: Bryan Gilbert <gilbertw1@gmail.com>
Commit: Bryan Gilbert <gilbertw1@gmail.com>
Add minor mode + cleanup
---
Readme.md | 32 ++++++++++++++++++++++++++
better-jumper.el | 69 +++++++++++++++++++++++++++++++++++++++++---------------
2 files changed, 83 insertions(+), 18 deletions(-)
diff --git a/Readme.md b/Readme.md
index 51bb07d0e0..41eadb9675 100644
--- a/Readme.md
+++ b/Readme.md
@@ -6,6 +6,38 @@ jump back to previous locations.
# Usage
+## Install
+
+Better-jumper is available on MELPA.
+
+`M-x package-install better-jumper`
+
+```emacs-lisp
+(require 'better-jumper)
+```
+
+`better-jumper` comes with two global modes: `better-jumper-mode` and
+`better-jumper-override-mode`, and two local modes: `better-jumper-local-mode`
and
+`better-jumper-override-local-mode`.
+
+You can either a) enable one or both globally:
+
+```elisp
+(better-jumper-mode +1)
+
+;; and disable in specific modes
+(push 'python-mode better-jumper-disabled-modes)
+
+;; or disable it manually
+(add-hook 'python-mode-hook #'turn-off-better-jumper-mode)
+```
+
+Or b) enable one or both locally, where you need it:
+
+```elisp
+(add-hook 'python-mode-hook 'turn-on-better-jumper-mode
+```
+
## Getting started
Once `better-jumper` has been loaded it is ready to start tracking jump
history.
diff --git a/better-jumper.el b/better-jumper.el
index 1ef5770357..977791aa9d 100644
--- a/better-jumper.el
+++ b/better-jumper.el
@@ -7,7 +7,7 @@
;; Version: 1.0.0
;; Keywords: convenience, jump, history, evil
;; Homepage: https://github.com/gilbertw1/better-jumper
-;; Package-Requires: ((emacs "25.1") (cl-lib "0.5"))
+;; Package-Requires: ((emacs "25.1"))
;;
;; This file is not part of GNU Emacs.
@@ -37,6 +37,7 @@
;; To enable globally:
;;
;; (require 'better-jumper)
+;; (better-jumper-mode 1)
;;
;; See included README.md for more information.
;;
@@ -47,7 +48,7 @@
(defgroup better-jumper nil
"Better jumper configuration options."
:prefix "better-jumper"
- :group 'jump)
+ :group 'convenience)
(defcustom better-jumper-context 'window
"Determines the context that better jumper operates within."
@@ -96,6 +97,12 @@
:type '(repeat string)
:group 'better-jumper)
+(defcustom better-jumper-disabled-modes
+ '(org-agenda-mode magit-mode git-rebase-mode)
+ "A list of modes in which the global better-jumper minor mode will not be
turned on."
+ :group 'better-jumper
+ :type '(list symbol))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -133,10 +140,9 @@
(defun better-jumper--get-current-context ()
"Get current context item. Either current window or buffer."
- (cond ((eq better-jumper-context 'buffer)
- (current-buffer))
- ((eq better-jumper-context 'window)
- (frame-selected-window))))
+ (pcase better-jumper-context
+ (`buffer (current-buffer))
+ (`window (frame-selected-window))))
(defun better-jumper--set-window-struct (window struct)
"Set jump struct for WINDOW to STRUCT."
@@ -148,10 +154,9 @@
(defun better-jumper--set-struct (context struct)
"Set jump struct for CONTEXT to STRUCT."
- (cond ((eq better-jumper-context 'buffer)
- (better-jumper--set-buffer-struct context struct))
- ((eq better-jumper-context 'window)
- (better-jumper--set-window-struct context struct))))
+ (pcase better-jumper-context
+ (`buffer (better-jumper--set-buffer-struct context struct))
+ (`window (better-jumper--set-window-struct context struct))))
(defun better-jumper--find-buffer-struct-savehist (buffer)
"Look for BUFFER jump history in savehist variable."
@@ -212,10 +217,9 @@ buffer if CONTEXT parameter is missing."
(defun better-jumper--set-marker-table (context table)
"Set marker table for CONTEXT to TABLE."
- (cond ((eq better-jumper-context 'buffer)
- (better-jumper--set-buffer-marker-table context table))
- ((eq better-jumper-context 'window)
- (better-jumper--set-window-marker-table context table))))
+ (pcase better-jumper-context
+ (`buffer (better-jumper--set-buffer-marker-table context table))
+ (`window (better-jumper--set-window-marker-table context table))))
(defun better-jumper--get-buffer-marker-table (&optional buffer)
"Get current marker table for BUFFER.
@@ -408,7 +412,8 @@ The argument should be either a window or buffer depending
on the context."
"Run on window configuration change (Ignore ARGS).
Cleans up deleted windows and copies history to newly created windows."
(ignore args)
- (when (and (eq better-jumper-context 'window)
+ (when (and better-jumper-mode
+ (eq better-jumper-context 'window)
(eq better-jumper-new-window-behavior 'copy)
(not better-jumper-switching-perspectives))
(let* ((window-list (window-list-1 nil nil t))
@@ -432,7 +437,8 @@ Cleans up deleted windows and copies history to newly
created windows."
(defun better-jumper--load-savehist ()
"Load savehist state if savehist is enabled."
- (when (and better-jumper-use-savehist
+ (when (and better-jumper-mode
+ better-jumper-use-savehist
(eq better-jumper-context 'buffer))
(add-to-list 'savehist-additional-variables 'better-jumper-savehist)
(dolist (entry better-jumper-savehist)
@@ -456,7 +462,8 @@ Cleans up deleted windows and copies history to newly
created windows."
(defun better-jumper--sync-savehist ()
"Store current jump state in savehist variable if savehist is enabled."
- (when (and better-jumper-use-savehist
+ (when (and better-jumper-mode
+ better-jumper-use-savehist
(eq better-jumper-context 'buffer))
(let ((buffers (seq-take
(seq-filter #'better-jumper--is-local-file-buffer
@@ -479,10 +486,36 @@ Cleans up deleted windows and copies history to newly
created windows."
(with-eval-after-load 'evil
(defadvice evil-set-jump (before better-jumper activate)
- (when better-jumper-use-evil-jump-advice
+ (when (and better-jumper-local-mode better-jumper-use-evil-jump-advice)
(better-jumper-set-jump))))
(push '(better-jumper-struct . writable) window-persistent-parameters)
+;;;;;;;;;;;;;;;;;;;;;
+;;; MINOR MODE ;;;
+;;;;;;;;;;;;;;;;;;;;;
+
+;;;###autoload
+(defun turn-on-better-jumper-mode ()
+ "Enable better-jumper-mode in the current buffer."
+ (unless (or (minibufferp)
+ (apply #'derived-mode-p better-jumper-disabled-modes))
+ (better-jumper-local-mode +1)))
+
+;;;###autoload
+(defun turn-off-better-jumper-mode ()
+ "Disable `better-jumper-local-mode' in the current buffer."
+ (better-jumper-local-mode -1))
+
+;;;###autoload
+(define-minor-mode better-jumper-local-mode
+ "better-jumper minor mode."
+ :lighter " better-jumper"
+ :group 'better-jumper)
+
+;;;###autoload
+(define-globalized-minor-mode better-jumper-mode
+ better-jumper-local-mode turn-on-better-jumper-mode)
+
(provide 'better-jumper)
;;; better-jumper.el ends here
- [nongnu] branch elpa/better-jumper created (now 205e7a539d), ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 73cc1939fe 06/48: add `evil-jump` configuration example, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper c5d0c727bc 08/48: Refactor to use window parameters, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper e5a1b4a58a 10/48: Update doc with recent configuration changes, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 3ad6930b16 12/48: refactor evil jump advice, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper e7826affb8 17/48: Improve readme formatting, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 3a0d02071a 18/48: Embed license in elisp comments, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 7926fff2c7 19/48: minor refactors, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 3bbd0a5889 20/48: Use markers in jump list w/ point fallback, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 2c04d4bc09 25/48: Add minor mode + cleanup,
ELPA Syncer <=
- [nongnu] elpa/better-jumper 3aa1a8a766 28/48: Merge pull request #1 from hlissner/patch-1, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper ca6edffe62 30/48: Add new jump behavior config option, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 5600174ba9 02/48: Create LICENSE, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 8e82f33309 01/48: initial WIP implementation, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 06a98185e8 04/48: propertly maintain / cleanup buffer + window jumps, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 3624896c72 05/48: add documentation, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper d6ecaa1f96 07/48: minor refactors + cleanup, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper 719e412f43 03/48: Add support restricting jump list to contexts, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper c307a253d9 09/48: Fixup copy struct function, ELPA Syncer, 2022/01/09
- [nongnu] elpa/better-jumper f9f0180894 13/48: update documentation, ELPA Syncer, 2022/01/09