diff --git a/lisp/init-meow.el b/lisp/init-meow.el index 6d6a84b..296684f 100644 --- a/lisp/init-meow.el +++ b/lisp/init-meow.el @@ -82,14 +82,12 @@ '("z" . meow-pop-selection) '("'" . repeat) '("" . ignore)) - ;; (meow-define-keys - ;; 'beacon - ;; '("C-g" . meow-grab)) - ;; (meow-define-keys - ;; 'insert - ;; '("ESC" . )) + (meow-define-keys + 'beacon + '("C-g" . meow-grab)) ) + (use-package meow :demand t :hook (elpaca-after-init . meow-global-mode) @@ -100,6 +98,8 @@ (add-to-list 'meow-mode-state-list '(eshell-mode . insert)) (add-to-list 'meow-mode-state-list '(git-commit-elisp-text-mode . insert)) + (define-key input-decode-map (kbd "C-[") [control-bracketleft]) + (define-key meow-insert-state-keymap [control-bracketleft] 'meow-insert-exit) (setq meow-keypad-leader-dispatch "C-c" meow-use-clipboard t) (setq meow-replace-state-name-list @@ -110,4 +110,40 @@ (beacon . ""))) (setq meow-cursor-type-normal 'bar)) +;; Meow jk exit +(use-package meow + :disabled t + :after meow + :config + ;; Use jk to escape from insert state to normal state + (defvar meow-two-char-escape-sequence "jk") + (defvar meow-two-char-escape-delay 0.5) + (defun meow--two-char-exit-insert-state (s) + "Exit meow insert state when pressing consecutive two keys. + +S is string of the two-key sequence." + (when (meow-insert-mode-p) + (let ((modified (buffer-modified-p)) + (undo-list buffer-undo-list)) + (insert (elt s 0)) + (let* ((second-char (elt s 1)) + (event + (if defining-kbd-macro + (read-event nil nil) + (read-event nil nil meow-two-char-escape-delay)))) + (when event + (if (and (characterp event) (= event second-char)) + (progn + (backward-delete-char 1) + (set-buffer-modified-p modified) + (setq buffer-undo-list undo-list) + (meow-insert-exit)) + (push event unread-command-events))))))) + (defun meow-two-char-exit-insert-state () + "Exit meow insert state when pressing consecutive two keys." + (interactive) + (meow--two-char-exit-insert-state meow-two-char-escape-sequence)) + (define-key meow-insert-state-keymap (substring meow-two-char-escape-sequence 0 1) + #'meow-two-char-exit-insert-state)) + (provide 'init-meow) diff --git a/lisp/init-org.el b/lisp/init-org.el index f167b6b..e809379 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -258,6 +258,11 @@ the element after the #+HEADER: tag." :hook (org-latex-preview-mode . org-latex-preview-center-mode) :bind ("C-c C-x SPC" . org-latex-preview-clear-cache) :config + ;; preview buffer on enter + (add-hook 'org-mode-hook + (lambda () + (run-with-idle-timer 0.5 nil + (lambda () (org-latex-preview '(16)))))) ;; Add margin and rescale display math (defvar my/org-latex-display-math-scale 1) (defvar my/org-latex-display-math-margin 8) diff --git a/lisp/init-shell.el b/lisp/init-shell.el index 0b8a8b7..322aa47 100644 --- a/lisp/init-shell.el +++ b/lisp/init-shell.el @@ -41,6 +41,9 @@ :bind (:map eshell-mode-map ([remap recenter-top-bottom] . eshell/clear)) :config + ;; (defun eshell/clear () + ;; (interactive) + ;; (eshell/clear-scrollback)) (setq eshell-banner-message "")) (use-package xterm-color diff --git a/lisp/init-ui.el b/lisp/init-ui.el index 5a41ef3..5079d94 100644 --- a/lisp/init-ui.el +++ b/lisp/init-ui.el @@ -40,8 +40,15 @@ :bind ("" . modus-themes-load-random) :bind ("C-" . modus-themes-load-random-light) :bind ("M-" . modus-themes-load-random-dark) - :init + (setq ef-themes-light-themes '(ef-arbutus ef-cyprus ef-day ef-duo-light ef-eagle ef-elea-light + ef-kassio ef-melissa-light ef-orange ef-reverie + ef-spring ef-summer ef-trio-light ef-tritanopia-light)) + + (setq ef-themes-dark-themes '(ef-autumn ef-bio ef-cherie ef-dark ef-deuteranopia-dark ef-dream + ef-duo-dark ef-elea-dark ef-fig ef-maris-dark + ef-melissa-dark ef-night ef-owl ef-rosa ef-symbiosis + ef-trio-dark ef-tritanopia-dark ef-winter)) ;; This makes the Modus commands listed below consider only the Ef ;; themes. For an alternative that includes Modus and all ;; derivative themes (like Ef), enable the @@ -63,13 +70,13 @@ . (lambda () ;; something to execute when dark mode is detected ;; (doric-themes-load-random 'dark)) - (modus-themes-load-random-dark) + (ef-themes-load-random-dark) )) (auto-dark-light-mode . (lambda () ;; something to execute when light mode is detected ;; (doric-themes-load-random 'light) - (modus-themes-load-random-light) + (ef-themes-load-random-light) )) :hook elpaca-after-init)