Skip to content

Commit

Permalink
vterm; ivy-hydra; update emacs to 28
Browse files Browse the repository at this point in the history
  • Loading branch information
JJPandari committed Mar 31, 2023
1 parent 8e1d4e1 commit 5747e61
Show file tree
Hide file tree
Showing 31 changed files with 481 additions and 235 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/url/cache
/.emacs.desktop
/*.desktop
/auto-save-list
/network-security.data
/.session
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@
[submodule "company-anywhere"]
path = extensions/company-anywhere
url = https://github.com/zk-phi/company-anywhere.git
[submodule "popweb"]
path = extensions/popweb
url = https://github.com/manateelazycat/popweb.git
1 change: 1 addition & 0 deletions extensions/popweb
Submodule popweb added at e830b3
15 changes: 1 addition & 14 deletions init.el
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
;;----------------------------------------------------------------------------
;; Load configs for specific features and modes
;;----------------------------------------------------------------------------
(require 'init-emacs-server) ; need to put this first to know which instance/server we are in, for initing other features

(require 'init-frame-hooks)
(require 'init-themes)
Expand Down Expand Up @@ -138,20 +139,6 @@
(maybe-require-package 'daemons))


;;----------------------------------------------------------------------------
;; Allow access from emacsclient
;;----------------------------------------------------------------------------
(require 'server)
;; "unless running" is to avoid prompting error when starting a second Emacs
;; when app opened as main editor, start default server
(unless (server-running-p)
(server-start))
;; when opened as maid, start server with name "maid"
(when (string= (getenv "EMACS_SOCKET") "maid")
(unless (server-running-p "maid")
(setq server-name "maid")
(server-start)))

;;----------------------------------------------------------------------------
;; Variables configured via the interactive 'customize' interface
;;----------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions modes/init-avy.el
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(use-package avy
:init
(setq avy-all-windows nil)
(jester/with-leader "j j" 'avy-goto-char-timer)
(setq avy-all-windows t)
;; (jester/with-leader "j j" 'avy-goto-char-timer)
:commands (avy-goto-char-timer))

(use-package link-hint
Expand Down
7 changes: 7 additions & 0 deletions modes/init-chinese.el
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
:bind ("C-c y" . youdao-dictionary-search-at-point+)
:hook (youdao-dictionary-mode . evil-motion-state))


(push (expand-file-name "popweb" jester-submodules-dir) load-path)
(push (expand-file-name "popweb/extension/dict" jester-submodules-dir) load-path)
(use-package popweb-dict
:ensure nil
:commands popweb-dict-bing-pointer)


(use-package pyim
:demand t
Expand Down
2 changes: 1 addition & 1 deletion modes/init-compile.el
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
(jester/with-leader
;; TODO assign a key to "cargo check"?
"c i" 'compile ; "compile it!"
"c l" (lambda! (switch-to-buffer "*compilation*")) ; "compilation log"
"b c" (lambda! (switch-to-buffer "*compilation*"))
"c r" 'jester/run-project
"c t" 'jester/run-test)

Expand Down
4 changes: 4 additions & 0 deletions modes/init-dired.el
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@
:hook ((dired-mode . all-the-icons-dired-mode)
(ranger-mode . all-the-icons-dired-mode)))

;; (use-package dirvish
;; )


(provide 'init-dired)
2 changes: 1 addition & 1 deletion modes/init-docker.el
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(use-package docker
:init
(jester/with-leader "d d" 'docker)
;; (jester/with-leader "d d" 'docker)
:commands docker
:config
(fullframe docker-images tablist-quit)
Expand Down
4 changes: 2 additions & 2 deletions modes/init-elpa.el
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
(setq package-archives
'(("melpa-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")
("org-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/org/")
("gnu-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
("melpa-stable-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/melpa-stable/")))
("gnu-elpa-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
("melpa-stable-tuna" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/stable-melpa/")))



Expand Down
18 changes: 18 additions & 0 deletions modes/init-emacs-server.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
;;----------------------------------------------------------------------------
;; Allow access from emacsclient
;;----------------------------------------------------------------------------
(require 'server)
;; "unless running" is to avoid prompting error when starting a second Emacs
;; when app opened as main editor, start default server
(unless (server-running-p)
(server-start))
;; when opened as maid, start server with name "maid"
(when (string= (getenv "EMACS_SOCKET") "maid")
(unless (server-running-p "maid")
(setq server-name "maid")
(setq frame-title-format "maid")
(setq desktop-base-file-name ".emacs.maid.desktop"
desktop-base-lock-name ".emacs.maid.desktop.lock")
(server-start)))

(provide 'init-emacs-server)
99 changes: 75 additions & 24 deletions modes/init-evil.el
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
(evil-want-visual-char-semi-exclusive t "don't include line feed in visual select")
(evil-move-beyond-eol nil "stay at eol but no further")
(evil-undo-system 'undo-tree "use undo-tree, evil")
(evil-want-keybinding nil) ; required by evil-collection
:init
:config
(evil-mode 1)
Expand Down Expand Up @@ -215,8 +216,8 @@
(general-define-key
:states '(normal visual)
"R" 'jester/evil-multiedit-match-all
"C-n" 'evil-multiedit-match-symbol-and-next
"C-p" 'evil-multiedit-match-symbol-and-prev)
"C-n" 'evil-multiedit-match-and-next
"C-p" 'evil-multiedit-match-and-prev)
(defun jester/evil-multiedit-match-all ()
"Match all occurences. with prefix arg, exclude those in comments or strings."
(interactive)
Expand All @@ -233,14 +234,22 @@
(evil-multiedit-toggle-or-restrict-region)))))))
:config
(general-define-key
:keymaps 'evil-multiedit-state-map
:keymaps 'evil-multiedit-mode-map
"<return>" 'evil-multiedit-toggle-or-restrict-region
"<S-tab>" 'evil-multiedit-prev
"C-a" 'evil-multiedit--beginning-of-line
"C-e" 'evil-multiedit--end-of-line)
"<S-tab>" 'evil-multiedit-prev)
;; these have to be loaded before company so they don't shadow tab bindings in `company-active-map'
(define-key evil-multiedit-state-map (kbd "<tab>") 'evil-multiedit-next)
(define-key evil-multiedit-insert-state-map (kbd "<tab>") 'jester/yas-or-company-or-hippie)
(general-define-key
:states '(normal)
:keymaps 'evil-multiedit-mode-map
"<tab>" 'evil-multiedit-next
"C-n" 'evil-multiedit-match-and-next
"C-p" 'evil-multiedit-match-and-prev)
(general-define-key
:states '(insert emacs)
:keymaps 'evil-multiedit-mode-map
"<tab>" 'jester/yas-or-company-or-hippie
"C-a" 'evil-multiedit-beginning-of-line
"C-e" 'evil-multiedit-end-of-line)
)


Expand Down Expand Up @@ -279,9 +288,20 @@
evil-mc-custom-known-commands)))


(use-package evil-ediff
:init
(evil-ediff-init))
(use-package evil-collection
:demand t
:after evil
:config
;; modes I don't want evil-collection to setup
(dolist (mode '(vterm (term term ansi-term multi-term)))
(setq evil-collection-mode-list (delete mode evil-collection-mode-list)))
(evil-collection-init)

;; modify a bit after evil-collection setup
(general-define-key
:states '(normal)
:keymaps 'magit-mode-map
"/" 'jester/swiper-dwim))


(use-package evil-numbers
Expand Down Expand Up @@ -342,7 +362,18 @@
(evil-goggles-use-diff-refine-faces))


;; TODO use more "y i remote o"; bind it to be "y i m"?
(use-package evil-escape
:init
(setq evil-escape-excluded-states '(normal visual multiedit emacs motion)
evil-escape-excluded-major-modes '(neotree-mode treemacs-mode vterm-mode)
evil-escape-key-sequence "fd"
evil-escape-unordered-key-sequence t)
;; (evil-define-key* '(insert replace visual operator) 'global "\C-g" #'evil-escape)
:demand t
:config
(evil-escape-mode))


(push (expand-file-name "targets" jester-submodules-dir) load-path)
(require 'targets)
;; not needed if `targets-setup'?
Expand Down Expand Up @@ -399,9 +430,6 @@
;;----------------------------------------------------------------------------
(evil-set-initial-state 'debugger-mode 'motion)
(evil-set-initial-state 'messages-buffer-mode 'motion)
;; special mode is for viewing info, e.g. "q" is bound to quit,
;; but it's normal state there so we lose the bindings. Use motion state.
(evil-set-initial-state 'special-mode 'motion)

(advice-add
'yas-new-snippet :after
Expand All @@ -417,15 +445,12 @@
;; With-leader keys...
;;----------------------------------------------------------------------------
(jester/with-leader
"u" 'universal-argument
"f i" (lambda! (find-file (expand-file-name "init.el" user-emacs-directory)))
"f a" 'find-alternate-file
"j f" 'find-function
"j k" 'find-function-on-key
"j v" 'find-variable
"h f" 'describe-function
"h F" 'list-faces-display
"h v" 'describe-variable
"h s" 'describe-symbol
"h c" 'describe-char
"h k" 'describe-key
"h p" 'describe-package
Expand All @@ -439,7 +464,7 @@
"q q" 'save-buffers-kill-terminal
"t o" 'just-one-space
"t a" 'aggressive-indent-mode
;; NOTE: "a" "d" "'" are still there for the taking
;; NOTE: "a" "'" are still there for the taking
"," 'evil-indent
"." 'jester/evil-portal-set-portal-location
">" 'jester/evil-portal-clear-portal-location
Expand All @@ -459,10 +484,12 @@
(eval `(jester/major-leader-def ,jester-mode-leader-emacs (general-key "C-c C-c")))

;;----------------------------------------------------------------------------
;; Other evil keys...
;; other evil keys / keys for specific evil states
;;----------------------------------------------------------------------------
(general-define-key
:states '(normal)
"r" 'evil-redo
"t" 'evil-replace
"Q" "@q"
"gJ" 'jester/evil-join-no-whitespace
"<" nil
Expand Down Expand Up @@ -512,9 +539,6 @@

(general-define-key
:states '(normal motion visual)
"C-u" 'evil-scroll-up
"C-j" 'evil-scroll-line-down
"C-k" 'evil-scroll-line-up
"'" 'evil-goto-mark)

(general-define-key
Expand All @@ -535,6 +559,8 @@
"C-k" 'kill-line
"C-w" 'evil-delete-backward-word
"C-v" 'yank
;; leave C-r for commands similar to backward-search
"C-y" 'evil-paste-from-register
"M-d" 'backward-word
"M-b" 'kill-word
"H-x" 'kill-region)
Expand Down Expand Up @@ -579,8 +605,21 @@
"z p" 'jester/evil-paste-after--from-copy-register
"z P" 'jester/evil-paste-before--from-copy-register)


(setq isearch-lazy-count t)
;; TODO use symbol-overlay ... or?
;; (defun jester/evil-search-region-or-symbol-forward (count forward)
;; "Search the region."
;; (isearch-forward nil ))

;; (evil-define-command jester/evil-search-under-point-forward (&optional count)
;; "Search symbol under point forward."
;; :repeat nil
;; (interactive "p")
;; (jester/evil-search-region-or-symbol-forward (or count 1) t))



(evil-define-command jester/evil-normal-search-forward (&optional count)
"Search symbol under point forward."
:repeat nil
Expand Down Expand Up @@ -643,6 +682,18 @@
(dolist (cmd '(evil-yank evil-delete lispyville-yank lispyville-delete))
(advice-add cmd :after 'jester/evil-portal-jump-advice))

(defun jester/goto-line-beginning-or-end ()
"Go to line text beginning, line end, line very beginning, in turn."
(interactive)
(cl-block 'my-return
(when (and (looking-at "[^\s]") (looking-back "^\s+")) (evil-end-of-line) (cl-return-from 'my-return)) ; at beg of line text
(when (looking-at ".$") (evil-beginning-of-line) (cl-return-from 'my-return)) ; at end of line
(when (bolp) (evil-first-non-blank) (cl-return-from 'my-return)) ; at very beg of line
(evil-first-non-blank)))
(general-define-key
:states '(normal visual operator)
"0" 'jester/goto-line-beginning-or-end)

;; TODO try citre-read

;; TODO "vio" vs "yio": make visual "auto line-wise"?
Expand Down
13 changes: 4 additions & 9 deletions modes/init-git.el
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,13 @@
:hook (magit-post-refresh . diff-hl-magit-post-refresh)
:config
(jester/with-leader
"d n" 'diff-hl-next-hunk
"d p" 'diff-hl-previous-hunk))
"v n" 'diff-hl-next-hunk
"v p" 'diff-hl-previous-hunk))

;;----------------------------------------------------------------------------
;; major modes for git files.
;;----------------------------------------------------------------------------
(use-package gitignore-mode
:mode "\\.gitignore\\'")
(use-package gitconfig-mode
:mode "\\.gitconfig\\'")
(use-package git-modes)

;;----------------------------------------------------------------------------
;; browse current file history
Expand Down Expand Up @@ -54,6 +51,7 @@
:init
(setq magit-diff-refine-hunk t
magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1
magit-bury-buffer-function 'magit-restore-window-configuration
magit-log-margin '(t "周%u %Y-%m-%d %H:%M:%S %z" magit-log-margin-width t 18))
(jester/with-leader
"g s" 'magit-status
Expand All @@ -73,9 +71,6 @@
:keymaps 'transient-base-map
"<escape>" 'transient-quit-one))

(use-package evil-magit
:hook (magit-mode . evil-magit-init))

;; not using this for now: 1. only 1 hunk per file because magit no longer does the hunking 2. colors not fit theme well
;; (use-package magit-delta
;; :hook (magit-mode . magit-delta-mode))
Expand Down
2 changes: 2 additions & 0 deletions modes/init-gui-frames.el
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@

(setq frame-title-format "看,灰机! ✈✈✈✈✈✈✈✈✈"
frame-resize-pixelwise t)
(when (and (boundp 'server-name) (string= server-name "maid"))
(setq frame-title-format "maid"))

;; Non-zero values for `line-spacing' can mess up ansi-term and co,
;; so we zero it explicitly in those cases.
Expand Down
3 changes: 3 additions & 0 deletions modes/init-hydra.el
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
(use-package hydra
:demand t)

;; hydras are defined in other files grouped by their functionalities.


(provide 'init-hydra)
Loading

0 comments on commit 5747e61

Please sign in to comment.