6e8cfc9ec3
updated everything
469 lines
20 KiB
EmacsLisp
469 lines
20 KiB
EmacsLisp
(beacon-mode 1)
|
|
|
|
(map! :leader
|
|
(:prefix ("b". "buffer")
|
|
:desc "List bookmarks" "L" #'list-bookmarks
|
|
:desc "Save current bookmarks to bookmark file" "w" #'bookmark-save))
|
|
|
|
(evil-define-key 'normal ibuffer-mode-map
|
|
(kbd "f c") 'ibuffer-filter-by-content
|
|
(kbd "f d") 'ibuffer-filter-by-directory
|
|
(kbd "f f") 'ibuffer-filter-by-filename
|
|
(kbd "f m") 'ibuffer-filter-by-mode
|
|
(kbd "f n") 'ibuffer-filter-by-name
|
|
(kbd "f x") 'ibuffer-filter-disable
|
|
(kbd "g h") 'ibuffer-do-kill-lines
|
|
(kbd "g H") 'ibuffer-update)
|
|
|
|
;; https://stackoverflow.com/questions/9547912/emacs-calendar-show-more-than-3-months
|
|
(defun dt/year-calendar (&optional year)
|
|
(interactive)
|
|
(require 'calendar)
|
|
(let* (
|
|
(current-year (number-to-string (nth 5 (decode-time (current-time)))))
|
|
(month 0)
|
|
(year (if year year (string-to-number (format-time-string "%Y" (current-time))))))
|
|
(switch-to-buffer (get-buffer-create calendar-buffer))
|
|
(when (not (eq major-mode 'calendar-mode))
|
|
(calendar-mode))
|
|
(setq displayed-month month)
|
|
(setq displayed-year year)
|
|
(setq buffer-read-only nil)
|
|
(erase-buffer)
|
|
;; horizontal rows
|
|
(dotimes (j 4)
|
|
;; vertical columns
|
|
(dotimes (i 3)
|
|
(calendar-generate-month
|
|
(setq month (+ month 1))
|
|
year
|
|
;; indentation / spacing between months
|
|
(+ 5 (* 25 i))))
|
|
(goto-char (point-max))
|
|
(insert (make-string (- 10 (count-lines (point-min) (point-max))) ?\n))
|
|
(widen)
|
|
(goto-char (point-max))
|
|
(narrow-to-region (point-max) (point-max)))
|
|
(widen)
|
|
(goto-char (point-min))
|
|
(setq buffer-read-only t)))
|
|
|
|
(defun dt/scroll-year-calendar-forward (&optional arg event)
|
|
"Scroll the yearly calendar by year in a forward direction."
|
|
(interactive (list (prefix-numeric-value current-prefix-arg)
|
|
last-nonmenu-event))
|
|
(unless arg (setq arg 0))
|
|
(save-selected-window
|
|
(if (setq event (event-start event)) (select-window (posn-window event)))
|
|
(unless (zerop arg)
|
|
(let* (
|
|
(year (+ displayed-year arg)))
|
|
(dt/year-calendar year)))
|
|
(goto-char (point-min))
|
|
(run-hooks 'calendar-move-hook)))
|
|
|
|
(defun dt/scroll-year-calendar-backward (&optional arg event)
|
|
"Scroll the yearly calendar by year in a backward direction."
|
|
(interactive (list (prefix-numeric-value current-prefix-arg)
|
|
last-nonmenu-event))
|
|
(dt/scroll-year-calendar-forward (- (or arg 1)) event))
|
|
|
|
(map! :leader
|
|
:desc "Scroll year calendar backward" "<left>" #'dt/scroll-year-calendar-backward
|
|
:desc "Scroll year calendar forward" "<right>" #'dt/scroll-year-calendar-forward)
|
|
|
|
(defalias 'year-calendar 'dt/year-calendar)
|
|
|
|
(use-package! calfw)
|
|
(use-package! calfw-org)
|
|
|
|
(setq centaur-tabs-set-bar 'over
|
|
centaur-tabs-set-icons t
|
|
centaur-tabs-gray-out-icons 'buffer
|
|
centaur-tabs-height 24
|
|
centaur-tabs-set-modified-marker t
|
|
centaur-tabs-style "bar"
|
|
centaur-tabs-modified-marker "•")
|
|
(map! :leader
|
|
:desc "Toggle tabs globally" "t c" #'centaur-tabs-mode
|
|
:desc "Toggle tabs local display" "t C" #'centaur-tabs-local-mode)
|
|
(evil-define-key 'normal centaur-tabs-mode-map (kbd "g <right>") 'centaur-tabs-forward ; default Doom binding is 'g t'
|
|
(kbd "g <left>") 'centaur-tabs-backward ; default Doom binding is 'g T'
|
|
(kbd "g <down>") 'centaur-tabs-forward-group
|
|
(kbd "g <up>") 'centaur-tabs-backward-group)
|
|
|
|
(map! :leader
|
|
(:prefix ("c h" . "Help info from Clippy")
|
|
:desc "Clippy describes function under point" "f" #'clippy-describe-function
|
|
:desc "Clippy describes variable under point" "v" #'clippy-describe-variable))
|
|
|
|
(use-package dashboard
|
|
:init ;; tweak dashboard config before loading it
|
|
(setq dashboard-set-heading-icons t)
|
|
(setq dashboard-set-file-icons t)
|
|
(setq dashboard-banner-logo-title "\nKEYBINDINGS:\
|
|
\nFind file (SPC .) \
|
|
Open buffer list (SPC b i)\
|
|
\nFind recent files (SPC f r) \
|
|
Open the eshell (SPC e s)\
|
|
\nOpen dired file manager (SPC d d) \
|
|
List of keybindings (SPC h b b)")
|
|
;;(setq dashboard-startup-banner 'logo) ;; use standard emacs logo as banner
|
|
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
|
|
(setq dashboard-startup-banner "~/.config/doom/emacs-dash.txt") ;; use custom image as banner
|
|
(setq dashboard-center-content nil) ;; set to 't' for centered content
|
|
(setq dashboard-items '((recents . 5)
|
|
(agenda . 5 )
|
|
(bookmarks . 5)
|
|
(projects . 5)
|
|
(registers . 5)))
|
|
:config
|
|
(dashboard-setup-startup-hook)
|
|
(dashboard-modify-heading-icons '((recents . "file-text")
|
|
(bookmarks . "book"))))
|
|
|
|
(setq doom-fallback-buffer "*dashboard*")
|
|
|
|
(map! :leader
|
|
(:prefix ("d" . "dired")
|
|
:desc "Open dired" "d" #'dired
|
|
:desc "Dired jump to current" "j" #'dired-jump)
|
|
(:after dired
|
|
(:map dired-mode-map
|
|
:desc "Peep-dired image previews" "d p" #'peep-dired
|
|
:desc "Dired view file" "d v" #'dired-view-file)))
|
|
|
|
(evil-define-key 'normal dired-mode-map
|
|
(kbd "M-RET") 'dired-display-file
|
|
(kbd "h") 'dired-up-directory
|
|
(kbd "l") 'dired-open-file ; use dired-find-file instead of dired-open.
|
|
(kbd "m") 'dired-mark
|
|
(kbd "t") 'dired-toggle-marks
|
|
(kbd "u") 'dired-unmark
|
|
(kbd "C") 'dired-do-copy
|
|
(kbd "D") 'dired-do-delete
|
|
(kbd "J") 'dired-goto-file
|
|
(kbd "M") 'dired-do-chmod
|
|
(kbd "O") 'dired-do-chown
|
|
(kbd "P") 'dired-do-print
|
|
(kbd "R") 'dired-do-rename
|
|
(kbd "T") 'dired-do-touch
|
|
(kbd "Y") 'dired-copy-filenamecopy-filename-as-kill ; copies filename to kill ring.
|
|
(kbd "+") 'dired-create-directory
|
|
(kbd "-") 'dired-up-directory
|
|
(kbd "% l") 'dired-downcase
|
|
(kbd "% u") 'dired-upcase
|
|
(kbd "; d") 'epa-dired-do-decrypt
|
|
(kbd "; e") 'epa-dired-do-encrypt)
|
|
;; Get file icons in dired
|
|
(add-hook 'dired-mode-hook 'all-the-icons-dired-mode)
|
|
;; With dired-open plugin, you can launch external programs for certain extensions
|
|
;; For example, I set all .png files to open in 'sxiv' and all .mp4 files to open in 'mpv'
|
|
(setq dired-open-extensions '(("gif" . "sxiv")
|
|
("jpg" . "sxiv")
|
|
("png" . "sxiv")
|
|
("mkv" . "mpv")
|
|
("mp4" . "mpv")))
|
|
|
|
(evil-define-key 'normal peep-dired-mode-map
|
|
(kbd "j") 'peep-dired-next-file
|
|
(kbd "k") 'peep-dired-prev-file)
|
|
(add-hook 'peep-dired-hook 'evil-normalize-keymaps)
|
|
|
|
(setq delete-by-moving-to-trash t
|
|
trash-directory "~/.local/share/Trash/files/")
|
|
|
|
(setq doom-theme 'doom-gruvbox)
|
|
(map! :leader
|
|
:desc "Load new theme" "h t" #'counsel-load-theme)
|
|
|
|
(use-package! elfeed-goodies)
|
|
(elfeed-goodies/setup)
|
|
(setq elfeed-goodies/entry-pane-size 0.5)
|
|
(add-hook 'elfeed-show-mode-hook 'visual-line-mode)
|
|
(evil-define-key 'normal elfeed-show-mode-map
|
|
(kbd "J") 'elfeed-goodies/split-show-next
|
|
(kbd "K") 'elfeed-goodies/split-show-prev)
|
|
(evil-define-key 'normal elfeed-search-mode-map
|
|
(kbd "J") 'elfeed-goodies/split-show-next
|
|
(kbd "K") 'elfeed-goodies/split-show-prev)
|
|
(setq elfeed-feeds (quote
|
|
(("https://www.reddit.com/r/linux.rss" reddit linux)
|
|
("https://www.reddit.com/r/commandline.rss" reddit commandline)
|
|
("https://www.reddit.com/r/distrotube.rss" reddit distrotube)
|
|
("https://www.reddit.com/r/emacs.rss" reddit emacs)
|
|
("https://www.gamingonlinux.com/article_rss.php" gaming linux)
|
|
("https://hackaday.com/blog/feed/" hackaday linux)
|
|
("https://opensource.com/feed" opensource linux)
|
|
("https://linux.softpedia.com/backend.xml" softpedia linux)
|
|
("https://itsfoss.com/feed/" itsfoss linux)
|
|
("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux)
|
|
("https://www.phoronix.com/rss.php" phoronix linux)
|
|
("http://feeds.feedburner.com/d0od" omgubuntu linux)
|
|
("https://www.computerworld.com/index.rss" computerworld linux)
|
|
("https://www.networkworld.com/category/linux/index.rss" networkworld linux)
|
|
("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux)
|
|
("https://betanews.com/feed" betanews linux)
|
|
("http://lxer.com/module/newswire/headlines.rss" lxer linux)
|
|
("https://archlinux.org/feeds/news/" arch linux)
|
|
("https://distrowatch.com/news/dwd.xml" distrowatch linux))))
|
|
|
|
(emms-all)
|
|
(emms-default-players)
|
|
(emms-mode-line 1)
|
|
(emms-playing-time 1)
|
|
(setq emms-source-file-default-directory "/run/media/Storage/multimedia/music"
|
|
emms-playlist-buffer-name "*Music*"
|
|
emms-info-asynchronously t
|
|
emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find)
|
|
(map! :leader
|
|
(:prefix ("a" . "EMMS audio player")
|
|
:desc "Go to emms playlist" "a" #'emms-playlist-mode-go
|
|
:desc "Emms pause track" "x" #'emms-pause
|
|
:desc "Emms stop track" "s" #'emms-stop
|
|
:desc "Emms play previous track" "p" #'emms-previous
|
|
:desc "Emms play next track" "n" #'emms-next))
|
|
|
|
(use-package emojify
|
|
:hook (after-init . global-emojify-mode))
|
|
|
|
(map! :leader
|
|
(:prefix ("e". "evaluate/EWW")
|
|
:desc "Evaluate elisp in buffer" "b" #'eval-buffer
|
|
:desc "Evaluate defun" "d" #'eval-defun
|
|
:desc "Evaluate elisp expression" "e" #'eval-expression
|
|
:desc "Evaluate last sexpression" "l" #'eval-last-sexp
|
|
:desc "Evaluate elisp in region" "r" #'eval-region))
|
|
|
|
(setq browse-url-browser-function 'eww-browse-url)
|
|
(map! :leader
|
|
:desc "Search web for text between BEG/END"
|
|
"s w" #'eww-search-words
|
|
(:prefix ("e" . "evaluate/EWW")
|
|
:desc "Eww web browser" "w" #'eww
|
|
:desc "Eww reload page" "R" #'eww-reload))
|
|
|
|
(setq doom-font (font-spec :family "mononoki Nerd Font" :size 15)
|
|
doom-variable-pitch-font (font-spec :family "Ubuntu" :size 15)
|
|
doom-big-font (font-spec :family "mononoki Nerd Font" :size 20))
|
|
(after! doom-themes
|
|
(setq doom-themes-enable-bold t
|
|
doom-themes-enable-italic t))
|
|
(custom-set-faces!
|
|
'(font-lock-comment-face :slant italic)
|
|
'(font-lock-keyword-face :slant italic))
|
|
|
|
(defun dt/insert-todays-date (prefix)
|
|
(interactive "P")
|
|
(let ((format (cond
|
|
((not prefix) "%A, %B %d, %Y")
|
|
((equal prefix '(4)) "%m-%d-%Y")
|
|
((equal prefix '(16)) "%Y-%m-%d"))))
|
|
(insert (format-time-string format))))
|
|
|
|
(require 'calendar)
|
|
(defun dt/insert-any-date (date)
|
|
"Insert DATE using the current locale."
|
|
(interactive (list (calendar-read-date)))
|
|
(insert (calendar-date-string date)))
|
|
|
|
(map! :leader
|
|
(:prefix ("i d" . "Insert date")
|
|
:desc "Insert any date" "a" #'dt/insert-any-date
|
|
:desc "Insert todays date" "t" #'dt/insert-todays-date))
|
|
|
|
(setq ivy-posframe-display-functions-alist
|
|
'((swiper . ivy-posframe-display-at-point)
|
|
(complete-symbol . ivy-posframe-display-at-point)
|
|
(counsel-M-x . ivy-display-function-fallback)
|
|
(counsel-esh-history . ivy-posframe-display-at-window-center)
|
|
(counsel-describe-function . ivy-display-function-fallback)
|
|
(counsel-describe-variable . ivy-display-function-fallback)
|
|
(counsel-find-file . ivy-display-function-fallback)
|
|
(counsel-recentf . ivy-display-function-fallback)
|
|
(counsel-register . ivy-posframe-display-at-frame-bottom-window-center)
|
|
(dmenu . ivy-posframe-display-at-frame-top-center)
|
|
(nil . ivy-posframe-display))
|
|
ivy-posframe-height-alist
|
|
'((swiper . 20)
|
|
(dmenu . 20)
|
|
(t . 10)))
|
|
(ivy-posframe-mode 1) ; 1 enables posframe-mode, 0 disables it.
|
|
|
|
(map! :leader
|
|
(:prefix ("v" . "Ivy")
|
|
:desc "Ivy push view" "v p" #'ivy-push-view
|
|
:desc "Ivy switch view" "v s" #'ivy-switch-view))
|
|
|
|
(setq display-line-numbers-type t)
|
|
(map! :leader
|
|
:desc "Comment or uncomment lines" "TAB TAB" #'comment-line
|
|
(:prefix ("t" . "toggle")
|
|
:desc "Toggle line numbers" "l" #'doom/toggle-line-numbers
|
|
:desc "Toggle line highlight in frame" "h" #'hl-line-mode
|
|
:desc "Toggle line highlight globally" "H" #'global-hl-line-mode
|
|
:desc "Toggle truncate lines" "t" #'toggle-truncate-lines))
|
|
|
|
(setq minimap-window-location 'right)
|
|
(map! :leader
|
|
(:prefix ("t" . "toggle")
|
|
:desc "Toggle minimap-mode" "m" #'minimap-mode))
|
|
|
|
(set-face-attribute 'mode-line nil :font "Ubuntu Mono-13")
|
|
(setq doom-modeline-height 30 ;; sets modeline height
|
|
doom-modeline-bar-width 5 ;; sets right bar width
|
|
doom-modeline-persp-name t ;; adds perspective name to modeline
|
|
doom-modeline-persp-icon t) ;; adds folder icon next to persp name
|
|
|
|
(xterm-mouse-mode 1)
|
|
|
|
(after! neotree
|
|
(setq neo-smart-open t
|
|
neo-window-fixed-size nil))
|
|
(after! doom-themes
|
|
(setq doom-neotree-enable-variable-pitch t))
|
|
(map! :leader
|
|
:desc "Toggle neotree file viewer" "t n" #'neotree-toggle
|
|
:desc "Open directory in neotree" "d n" #'neotree-dir)
|
|
|
|
(map! :leader
|
|
(:prefix ("=" . "open file")
|
|
:desc "Edit agenda file" "a" #'(lambda () (interactive) (find-file "~/Org/agenda.org"))
|
|
:desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org"))
|
|
:desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el"))
|
|
:desc "Edit doom packages.el" "p" #'(lambda () (interactive) (find-file "~/.config/doom/packages.el"))))
|
|
(map! :leader
|
|
(:prefix ("= e" . "open eshell files")
|
|
:desc "Edit eshell aliases" "a" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/aliases"))
|
|
:desc "Edit eshell profile" "p" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/profile"))))
|
|
|
|
(map! :leader
|
|
:desc "Org babel tangle" "m B" #'org-babel-tangle)
|
|
(after! org
|
|
(setq org-directory "~/nc/Org/"
|
|
org-agenda-files '("~/nc/Org/agenda.org")
|
|
org-default-notes-file (expand-file-name "notes.org" org-directory)
|
|
org-ellipsis " ▼ "
|
|
org-superstar-headline-bullets-list '("◉" "●" "○" "◆" "●" "○" "◆")
|
|
org-superstar-item-bullet-alist '((?+ . ?➤) (?- . ?✦)) ; changes +/- symbols in item lists
|
|
org-log-done 'time
|
|
org-hide-emphasis-markers t
|
|
;; ex. of org-link-abbrev-alist in action
|
|
;; [[arch-wiki:Name_of_Page][Description]]
|
|
org-link-abbrev-alist ; This overwrites the default Doom org-link-abbrev-list
|
|
'(("google" . "http://www.google.com/search?q=")
|
|
("arch-wiki" . "https://wiki.archlinux.org/index.php/")
|
|
("ddg" . "https://duckduckgo.com/?q=")
|
|
("wiki" . "https://en.wikipedia.org/wiki/"))
|
|
org-todo-keywords ; This overwrites the default Doom org-todo-keywords
|
|
'((sequence
|
|
"TODO(t)" ; A task that is ready to be tackled
|
|
"BLOG(b)" ; Blog writing assignments
|
|
"GYM(g)" ; Things to accomplish at the gym
|
|
"PROJ(p)" ; A project that contains other tasks
|
|
"VIDEO(v)" ; Video assignments
|
|
"WAIT(w)" ; Something is holding up this task
|
|
"|" ; The pipe necessary to separate "active" states and "inactive" states
|
|
"DONE(d)" ; Task has been completed
|
|
"CANCELLED(c)" )))) ; Task has been cancelled
|
|
|
|
(custom-set-faces
|
|
'(org-level-1 ((t (:inherit outline-1 :height 1.4))))
|
|
'(org-level-2 ((t (:inherit outline-2 :height 1.3))))
|
|
'(org-level-3 ((t (:inherit outline-3 :height 1.2))))
|
|
'(org-level-4 ((t (:inherit outline-4 :height 1.1))))
|
|
'(org-level-5 ((t (:inherit outline-5 :height 1.0))))
|
|
)
|
|
|
|
(use-package ox-man)
|
|
(use-package ox-gemini)
|
|
|
|
(setq org-journal-dir "~/nc/Org/journal/"
|
|
org-journal-date-prefix "* "
|
|
org-journal-time-prefix "** "
|
|
org-journal-date-format "%B %d, %Y (%A) "
|
|
org-journal-file-format "%Y-%m-%d.org")
|
|
|
|
(setq org-publish-use-timestamps-flag nil)
|
|
(setq org-export-with-broken-links t)
|
|
(setq org-publish-project-alist
|
|
'(("distro.tube"
|
|
:base-directory "~/nc/gitlab-repos/distro.tube/"
|
|
:base-extension "org"
|
|
:publishing-directory "~/nc/gitlab-repos/distro.tube/html/"
|
|
:recursive t
|
|
:exclude "org-html-themes/.*"
|
|
:publishing-function org-html-publish-to-html
|
|
:headline-levels 4 ; Just the default for this project.
|
|
:auto-preamble t)
|
|
("org-static"
|
|
:base-directory "~/Org/website"
|
|
:base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
|
|
:publishing-directory "~/public_html/"
|
|
:recursive t
|
|
:exclude ".*/org-html-themes/.*"
|
|
:publishing-function org-publish-attachment)
|
|
))
|
|
|
|
(after! org-roam
|
|
(setq org-roam-directory "~/nc/Roam"))
|
|
|
|
(use-package! password-store)
|
|
|
|
(map! :leader
|
|
:desc "Switch to perspective NAME" "DEL" #'persp-switch
|
|
:desc "Switch to buffer in perspective" "," #'persp-switch-to-buffer
|
|
:desc "Switch to next perspective" "]" #'persp-next
|
|
:desc "Switch to previous perspective" "[" #'persp-prev
|
|
:desc "Add a buffer current perspective" "+" #'persp-add-buffer
|
|
:desc "Remove perspective by name" "-" #'persp-remove-by-name)
|
|
|
|
(define-globalized-minor-mode global-rainbow-mode rainbow-mode
|
|
(lambda () (rainbow-mode 1)))
|
|
(global-rainbow-mode 1 )
|
|
|
|
(map! :leader
|
|
(:prefix ("r" . "registers")
|
|
:desc "Copy to register" "c" #'copy-to-register
|
|
:desc "Frameset to register" "f" #'frameset-to-register
|
|
:desc "Insert contents of register" "i" #'insert-register
|
|
:desc "Jump to register" "j" #'jump-to-register
|
|
:desc "List registers" "l" #'list-registers
|
|
:desc "Number to register" "n" #'number-to-register
|
|
:desc "Interactively choose a register" "r" #'counsel-register
|
|
:desc "View a register" "v" #'view-register
|
|
:desc "Window configuration to register" "w" #'window-configuration-to-register
|
|
:desc "Increment register" "+" #'increment-register
|
|
:desc "Point to register" "SPC" #'point-to-register))
|
|
|
|
(setq shell-file-name "/bin/bash"
|
|
vterm-max-scrollback 5000)
|
|
(setq eshell-rc-script "~/.config/doom/eshell/profile"
|
|
eshell-aliases-file "~/.config/doom/eshell/aliases"
|
|
eshell-history-size 5000
|
|
eshell-buffer-maximum-lines 5000
|
|
eshell-hist-ignoredups t
|
|
eshell-scroll-to-bottom-on-input t
|
|
eshell-destroy-buffer-when-process-dies t
|
|
eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh"))
|
|
(map! :leader
|
|
:desc "Eshell" "e s" #'eshell
|
|
:desc "Eshell popup toggle" "e t" #'+eshell/toggle
|
|
:desc "Counsel eshell history" "e h" #'counsel-esh-history
|
|
:desc "Vterm popup toggle" "v t" #'+vterm/toggle)
|
|
|
|
(defun prefer-horizontal-split ()
|
|
(set-variable 'split-height-threshold nil t)
|
|
(set-variable 'split-width-threshold 40 t)) ; make this as low as needed
|
|
(add-hook 'markdown-mode-hook 'prefer-horizontal-split)
|
|
(map! :leader
|
|
:desc "Clone indirect buffer other window" "b c" #'clone-indirect-buffer-other-window)
|
|
|
|
(map! :leader
|
|
(:prefix ("w" . "window")
|
|
:desc "Winner redo" "<right>" #'winner-redo
|
|
:desc "Winner undo" "<left>" #'winner-undo))
|
|
|
|
(map! :leader
|
|
:desc "Zap to char" "z" #'zap-to-char
|
|
:desc "Zap up to char" "Z" #'zap-up-to-char)
|