Skip to content

Commit

Permalink
Change navigation policy and support hiding
Browse files Browse the repository at this point in the history
- Implement navigation policy and hiding changes as described in #6.
- Add Makefile target "status" for git status.
- Fix documentation error for Transit with Transient.
  • Loading branch information
kickingvegas committed Jun 28, 2024
1 parent 688a32b commit 92ea4e9
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 7 deletions.
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ create-merge-development-branch \
create-pr \
create-release-pr \
create-release-tag \
create-gh-release
create-gh-release \
status

## Run test regression
tests:
Expand Down Expand Up @@ -124,3 +125,6 @@ create-release-tag: checkout-main

create-gh-release: create-release-tag
gh release create -t v$(VERSION) --notes-from-tag $(VERSION)

status:
git status
2 changes: 1 addition & 1 deletion README.org
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ If you enjoy using Casual Lib, consider making a modest financial contribution t


* Acknowledgments
A heartfelt thanks to all the contributors to Transit. Casual Lib would not be possible without your efforts.
A heartfelt thanks to all the contributors to [[https://github.com/magit/transient][Transient]]. Casual Lib would not be possible without your efforts.

77 changes: 72 additions & 5 deletions lisp/casual-lib.el
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
;; URL: https://github.com/kickingvegas/casual-lib
;; Keywords: tools
;; Version: 1.0.1
;; Package-Requires: ((emacs "29.1"))
;; Package-Requires: ((emacs "29.1") (transient "0.6.0"))

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
Expand All @@ -29,6 +29,21 @@
(require 'transient)
(require 'casual-lib-version)

(defcustom casual-lib-hide-navigation nil
"If non-nil then hide navigation controls.
If non-nil, customize Casual porcelains to hide navigation controls for
`transient-quit-all' (control-q) and `transient-quit-one' (control-g)."
:type 'boolean
:group 'casual)

(defun casual-lib-customize-casual-lib-hide-navigation ()
"Customize `casual-lib-hide-navigation'.
Customize Casual porcelains to hide navigation commands."
(interactive)
(customize-variable 'casual-lib-hide-navigation))

(defcustom casual-lib-use-unicode nil
"If non-nil then use Unicode symbols whenever appropriate for labels."
:type 'boolean
Expand Down Expand Up @@ -71,6 +86,18 @@ plain ASCII-range string."
"Predicate to test if buffer is writeable and region is active."
(and (casual-lib-buffer-writeable-p) (region-active-p)))

(defun casual-lib-hide-navigation-p ()
"Predicate for variable `casual-lib-hide-navigation'."
(if casual-lib-hide-navigation t nil))

(defun casual-lib-quit-all-hide-navigation-p ()
"Predicate for hiding navigation for the `transient-quit-all' command."
(if casual-lib-hide-navigation
t
(if transient--stack
nil
t)))

;; Labels
(defun casual-lib--variable-to-checkbox (v)
"Checkbox string representation of variable V.
Expand All @@ -91,22 +118,62 @@ V is either nil or non-nil."
"Label constructed with LABEL and SUFFIX separated by a space."
(format "%s %s" label suffix))

;; Transient Navigation
(defun casual-lib--quit-one-suffix-label ()
"Description label for Transient suffix `casual-lib-quit-one'."
(if transient--stack
"‹Back"
"Dismiss"))

;; Transients
(transient-define-suffix casual-lib-quit-all ()
"Dismiss all menus."
"Casual suffix to call `transient-quit-all'."
:transient nil
:if-not #'casual-lib-quit-all-hide-navigation-p
:key "C-q"
:description "Dismiss"
(interactive)
(transient-quit-all))

(transient-define-suffix casual-lib-quit-one ()
"Go back to previous menu."
"Casual suffix to call `transient-quit-one'."
:transient nil
:key "C-g"
:description "‹Back"
:if-not #'casual-lib-hide-navigation-p
:description (casual-lib--quit-one-suffix-label)
(interactive)
(transient-quit-one))

(transient-define-suffix casual-lib-customize-unicode ()
"Customize Casual to use Unicode symbols.
This Transient suffix invokes the customize interface for the
variable `casual-lib-use-unicode'.
Note that this variable affects all Casual porcelains."
:key "u"
:transient nil
:description (lambda ()
(casual-lib-checkbox-label
casual-lib-use-unicode
"Use Unicode Symbols"))
(interactive)
(casual-lib-customize-casual-lib-use-unicode))

(transient-define-suffix casual-lib-customize-hide-navigation ()
"Customize Casual hide navigation controls.
This Transient suffix invokes the customize interface for the
variable `casual-lib-hide-navigation'.
Note that this variable affects all Casual porcelains."
:key "n"
:transient nil
:description (lambda ()
(casual-lib-checkbox-label
casual-lib-hide-navigation
"Hide Navigation Commands"))
(interactive)
(casual-lib-customize-casual-lib-hide-navigation))

(provide 'casual-lib)
;;; casual-lib.el ends here
28 changes: 28 additions & 0 deletions tests/test-casual-lib.el
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,33 @@
;; (end-of-buffer)
;; (should (casual-lib-buffer-writeable-and-region-active-p))))

(ert-deftest test-casual-lib-hide-navigation ()
(should (symbolp 'casual-lib-hide-navigation)))

(ert-deftest test-casual-lib-hide-navigation-p ()
(let ((casual-lib-hide-navigation t))
(should (equal t (casual-lib-hide-navigation-p))))

(let ((casual-lib-hide-navigation nil))
(should (equal nil (casual-lib-hide-navigation-p)))))


(ert-deftest test-casual-lib-quit-all-hide-navigation-p ()
(let ((casual-lib-hide-navigation nil)
(transient--stack nil))
(should (equal (casual-lib-quit-all-hide-navigation-p) t)))

(let ((casual-lib-hide-navigation nil)
(transient--stack t))
(should (equal (casual-lib-quit-all-hide-navigation-p) nil)))

(let ((casual-lib-hide-navigation t)
(transient--stack nil))
(should (equal (casual-lib-quit-all-hide-navigation-p) t)))

(let ((casual-lib-hide-navigation t)
(transient--stack t))
(should (equal (casual-lib-quit-all-hide-navigation-p) t))))

(provide 'test-casual-lib)
;;; test-casual-lib.el ends here

0 comments on commit 92ea4e9

Please sign in to comment.