Skip to content

Commit

Permalink
feat: Add mic-filter-mode-hydra+
Browse files Browse the repository at this point in the history
  • Loading branch information
ROCKTAKEY committed Jul 25, 2023
1 parent 7d0a31a commit 95dcc9f
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 4 deletions.
34 changes: 33 additions & 1 deletion README.org
Original file line number Diff line number Diff line change
Expand Up @@ -1094,8 +1094,10 @@ Each element of the value of the keyword is passed to =major-mode-hydra-define=

#+begin_src emacs-lisp :tangle yes
(mic-defmic mic-with-mode-hydra mic
:filters '(mic-filter-mode-hydra))
:filters '(mic-filter-mode-hydra
mic-filter-mode-hydra+))

;;; `:mode-hydra'
(mic-with-mode-hydra package-name
:mode-hydra
(( c-mode (:title "C Mode" :quit-key "q")
Expand Down Expand Up @@ -1125,6 +1127,36 @@ Each element of the value of the keyword is passed to =major-mode-hydra-define=
("<up>" enlarge-window "enlarge-window")
("<right>" enlarge-window-horizontally "enlarge-window-horizontally")
("<left>" shrink-window-horizontally "shrink-window-horizontally"))))))

;;; `:mode-hydra+'
(mic-with-mode-hydra package-name
:mode-hydra+
(( c-mode (:title "C Mode" :quit-key "q")
("Alphabet"
(("p" shrink-window "shrink")
("n" enlarge-window "enlarge")
("f" enlarge-window-horizontally "enlarge-horizontally")
("b" shrink-window-horizontally "shrink-horizontally"))
"Arrow"
(("<down>" shrink-window)
("<up>" enlarge-window)
("<right>" enlarge-window-horizontally)
("<left>" shrink-window-horizontally))))))

;; Expanded to:
(mic package-name :eval
((major-mode-hydra-define+ c-mode
(:title "C Mode" :quit-key "q" :hint nil :color teal :separator "═")
("Alphabet"
(("p" shrink-window "shrink")
("n" enlarge-window "enlarge")
("f" enlarge-window-horizontally "enlarge-horizontally")
("b" shrink-window-horizontally "shrink-horizontally"))
"Arrow"
(("<down>" shrink-window "shrink-window")
("<up>" enlarge-window "enlarge-window")
("<right>" enlarge-window-horizontally "enlarge-window-horizontally")
("<left>" shrink-window-horizontally "shrink-window-horizontally"))))))
#+end_src

**** Alternative of filters
Expand Down
11 changes: 11 additions & 0 deletions mic-filter.el
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,17 @@ This filter use `:mode-hydra' keyword."
(plist-get plist :mode-hydra)))
(mic-plist-delete plist :mode-hydra))

(defun mic-filter-mode-hydra+ (plist)
"Make `major-mode-hydra-define+' sexp from PLIST and append to value of `:eval'.
This filter use `:mode-hydra+' keyword."
(mic-plist-put-append
plist :eval
(mapcar
(lambda (arg)
`(major-mode-hydra-define+ ,@arg))
(plist-get plist :mode-hydra+)))
(mic-plist-delete plist :mode-hydra+))

(defun mic-filter-mykie (plist)
"Create `mykie:define-key' sexp from PLIST and append to value of `:eval'.
This filter use `:mykie' keyword."
Expand Down
38 changes: 35 additions & 3 deletions mic.el
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
;;; mic.el --- Minimal and combinable configuration manager -*- lexical-binding: t; -*-

;; Copyright (C) 2022 ROCKTAKEY
;; Copyright (C) 2022-2023 ROCKTAKEY

;; Author: ROCKTAKEY <rocktakey@gmail.com>
;; Keywords: convenience

;; Version: 0.36.0
;; Version: 0.37.0
;; Package-Requires: ((emacs "26.1"))
;; URL: https://github.com/ROCKTAKEY/mic

Expand Down Expand Up @@ -1286,8 +1286,10 @@

;; ,----
;; | (mic-defmic mic-with-mode-hydra mic
;; | :filters '(mic-filter-mode-hydra))
;; | :filters '(mic-filter-mode-hydra
;; | mic-filter-mode-hydra+))
;; |
;; | ;;; `:mode-hydra'
;; | (mic-with-mode-hydra package-name
;; | :mode-hydra
;; | (( c-mode (:title "C Mode" :quit-key "q")
Expand Down Expand Up @@ -1317,6 +1319,36 @@
;; | ("<up>" enlarge-window "enlarge-window")
;; | ("<right>" enlarge-window-horizontally "enlarge-window-horizontally")
;; | ("<left>" shrink-window-horizontally "shrink-window-horizontally"))))))
;; |
;; | ;;; `:mode-hydra+'
;; | (mic-with-mode-hydra package-name
;; | :mode-hydra+
;; | (( c-mode (:title "C Mode" :quit-key "q")
;; | ("Alphabet"
;; | (("p" shrink-window "shrink")
;; | ("n" enlarge-window "enlarge")
;; | ("f" enlarge-window-horizontally "enlarge-horizontally")
;; | ("b" shrink-window-horizontally "shrink-horizontally"))
;; | "Arrow"
;; | (("<down>" shrink-window)
;; | ("<up>" enlarge-window)
;; | ("<right>" enlarge-window-horizontally)
;; | ("<left>" shrink-window-horizontally))))))
;; |
;; | ;; Expanded to:
;; | (mic package-name :eval
;; | ((major-mode-hydra-define+ c-mode
;; | (:title "C Mode" :quit-key "q" :hint nil :color teal :separator "═")
;; | ("Alphabet"
;; | (("p" shrink-window "shrink")
;; | ("n" enlarge-window "enlarge")
;; | ("f" enlarge-window-horizontally "enlarge-horizontally")
;; | ("b" shrink-window-horizontally "shrink-horizontally"))
;; | "Arrow"
;; | (("<down>" shrink-window "shrink-window")
;; | ("<up>" enlarge-window "enlarge-window")
;; | ("<right>" enlarge-window-horizontally "enlarge-window-horizontally")
;; | ("<left>" shrink-window-horizontally "shrink-window-horizontally"))))))
;; `----


Expand Down
27 changes: 27 additions & 0 deletions test/mic-filter-test.el
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,33 @@
("<right>" enlarge-window-horizontally)
("<left>" shrink-window-horizontally)))))))))

(ert-deftest mic-filter-mode-hydra+ ()
(should (equal (mic-filter-mode-hydra+
'(:mode-hydra+
(( c-mode (:title "C Mode" :quit-key "q")
("Alphabet"
(("p" shrink-window "shrink")
("n" enlarge-window "enlarge")
("f" enlarge-window-horizontally "enlarge-horizontally")
("b" shrink-window-horizontally "shrink-horizontally"))
"Arrow"
(("<down>" shrink-window)
("<up>" enlarge-window)
("<right>" enlarge-window-horizontally)
("<left>" shrink-window-horizontally)))))))
'(:eval
((major-mode-hydra-define+ c-mode (:title "C Mode" :quit-key "q")
("Alphabet"
(("p" shrink-window "shrink")
("n" enlarge-window "enlarge")
("f" enlarge-window-horizontally "enlarge-horizontally")
("b" shrink-window-horizontally "shrink-horizontally"))
"Arrow"
(("<down>" shrink-window)
("<up>" enlarge-window)
("<right>" enlarge-window-horizontally)
("<left>" shrink-window-horizontally)))))))))

(ert-deftest mic-filter-mykie ()
(should (equal (mic-filter-mykie
'(:mykie ((global-map ("C-w" :default hydra-window-resizer/body :region kill-region)))))
Expand Down

0 comments on commit 95dcc9f

Please sign in to comment.