diff --git a/emacs/.emacs b/emacs/.emacs index ab2e4b4..140b73a 100644 --- a/emacs/.emacs +++ b/emacs/.emacs @@ -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