add vi keys for emacs docview

This commit is contained in:
Julin S 2021-10-10 22:43:04 +05:30
parent 5b47a4d827
commit 5821d4204f
1 changed files with 65 additions and 23 deletions

View File

@ -2,6 +2,29 @@
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(defun setup-vi-keys-for-splits (mode-map)
; https://www.gnu.org/software/emacs/manual/html_node/elisp/Conditionals.html
(unless (eq 'mode-map 'eww-mode-map)
(define-key mode-map (kbd "C-w H") 'evil-window-move-far-left)
(define-key mode-map (kbd "C-w L") 'evil-window-move-far-right))
(define-key mode-map (kbd "C-w K") 'evil-window-move-very-top)
(define-key mode-map (kbd "C-w J") 'evil-window-move-very-bottom)
(define-key mode-map (kbd "C-w v") 'evil-window-vsplit)
(define-key mode-map (kbd "C-w s") 'evil-window-split)
(define-key mode-map (kbd "C-w w") 'evil-window-next)
(define-key mode-map (kbd "C-w k") 'evil-window-up)
(define-key mode-map (kbd "C-w h") 'evil-window-left)
(define-key mode-map (kbd "C-w l") 'evil-window-right)
(define-key mode-map (kbd "C-w j") 'evil-window-down)
(define-key mode-map (kbd "C-w <") 'evil-window-decrease-width)
(define-key mode-map (kbd "C-w >") 'evil-window-increase-width)
(define-key mode-map (kbd "C-w -") 'evil-window-decrease-height)
(define-key mode-map (kbd "C-w +") 'evil-window-increase-height)
(define-key mode-map (kbd "C-w =") 'balance-windows)
(define-key mode-map (kbd "C-w |") 'evil-window-set-width))
;;; General
;
@ -15,11 +38,27 @@
;; Enable word wrap
;(setq-default word-wrap t)
;
;; Set default evil-mode state
(setq evil-default-state 'normal)
;
;; Wrap long lines
; https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html
; http://ergoemacs.org/emacs/emacs_long_line_wrap.html
(global-visual-line-mode 1)
;
;; Make pdfs continuous in doc-view
; C-n and C-p gives continuous scrolling anyway?
;(setq doc-view-continuous t)
;
;; Stop crashing when loading Kannada text files in older emacs
;(push "Noto Serif Kannada" face-ignored-fonts)
;
;; Split vertically by default instead of horizontally
; https://www.gnu.org/software/emacs/manual/html_node/elisp/Choosing-Window-Options.html
; https://stackoverflow.com/questions/2081577/setting-emacs-to-split-buffers-side-by-side
;(setq split-height-threshold nil)
;(setq split-width-threshold 0)
;
;; Scroll buffer without moving cursor
; https://www.emacswiki.org/emacs/Scrolling#h5o-2
(defun gcm-scroll-down ()
@ -87,6 +126,11 @@
(load-file "~/.config/emacs/digraphs.el")
;; Themes
; https://github.com/bbatsov/zenburn-emacs
;(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
;(load-theme 'gruvbox t)
;;; Org mode
;
;; Enable org mode
@ -143,27 +187,6 @@
(define-key org-agenda-mode-map (kbd "C-e") 'evil-scroll-line-down)
(define-key org-agenda-mode-map (kbd "C-y") 'evil-scroll-line-up)
; Split navigation
(define-key org-agenda-mode-map (kbd "C-w H") 'evil-window-move-far-left)
(define-key org-agenda-mode-map (kbd "C-w L") 'evil-window-move-far-right)
(define-key org-agenda-mode-map (kbd "C-w K") 'evil-window-move-very-top)
(define-key org-agenda-mode-map (kbd "C-w J") 'evil-window-move-very-bottom)
(define-key org-agenda-mode-map (kbd "C-w v") 'evil-window-vsplit)
(define-key org-agenda-mode-map (kbd "C-w s") 'evil-window-split)
(define-key org-agenda-mode-map (kbd "C-w w") 'evil-window-next)
(define-key org-agenda-mode-map (kbd "C-w k") 'evil-window-up)
(define-key org-agenda-mode-map (kbd "C-w h") 'evil-window-left)
(define-key org-agenda-mode-map (kbd "C-w l") 'evil-window-right)
(define-key org-agenda-mode-map (kbd "C-w j") 'evil-window-down)
; Split resizing
(define-key org-agenda-mode-map (kbd "C-w <") 'evil-window-decrease-width)
(define-key org-agenda-mode-map (kbd "C-w >") 'evil-window-increase-width)
(define-key org-agenda-mode-map (kbd "C-w -") 'evil-window-decrease-height)
(define-key org-agenda-mode-map (kbd "C-w +") 'evil-window-increase-height)
; Misc
(define-key org-agenda-mode-map (kbd "C-c C-g") 'org-agenda-redo-all)
; (define-key org-agenda-mode-map (kbd "g g") 'evil-goto-first-line)
@ -173,7 +196,26 @@
(define-key org-agenda-mode-map (kbd "C-c C-l") 'org-agenda-holidays)
(define-key org-agenda-mode-map (kbd "l") 'evil-forward-char)
(define-key org-agenda-mode-map (kbd "C-c C-l") 'org-agenda-log-mode))
(define-key org-agenda-mode-map (kbd "C-c C-l") 'org-agenda-log-mode)
(setup-vi-keys-for-splits org-agenda-mode-map))
;
;; vi keys for docview
; https://github.com/emacs-evil/evil-collection
; https://emacs.stackexchange.com/questions/7540/doc-view-mode-hook
(with-eval-after-load 'doc-view
(define-key doc-view-mode-map "j" 'doc-view-next-line-or-next-page)
(define-key doc-view-mode-map "k" 'doc-view-previous-line-or-previous-page)
(define-key doc-view-mode-map "l" 'image-forward-hscroll)
(define-key doc-view-mode-map "h" 'image-backward-hscroll)
(define-key doc-view-mode-map (kbd "C-f") 'image-scroll-up)
(define-key doc-view-mode-map (kbd "C-b") 'image-scroll-down)
(define-key doc-view-mode-map "J" 'doc-view-next-page)
(define-key doc-view-mode-map "K" 'doc-view-previous-page)
(define-key doc-view-mode-map (kbd "C-c C-k") 'doc-view-kill-proc)
(setup-vi-keys-for-splits doc-view-mode-map))
;
;; Set agenda files for org-agenda
@ -182,7 +224,7 @@
;; Open pdf in external pdf-viewer
; https://emacs.stackexchange.com/questions/28037/org-mode-file-hyperlinks-always-use-doc-view-cant-force-it-to-use-external-pdf
; Now C-c C-o will open evince and C-u C-u C-c C-o will open docview
(add-to-list 'org-file-apps '("pdf" . "evince %s"))
(add-to-list 'org-file-apps '("pdf" . "zathura %s"))
;;; Added with Custom