diff --git a/.emacs.d/config.org b/.emacs.d/config.org index 26e2b1c..17df68c 100644 --- a/.emacs.d/config.org +++ b/.emacs.d/config.org @@ -338,7 +338,8 @@ On the fly syntax checking. :defer t :hook ((org-mode - prog-mode) + prog-mode + tex-mode) . yas-minor-mode) :custom (yas-prompt-functions '(yas-ido-prompt yas-completing-prompt)) @@ -422,21 +423,47 @@ Irony requires M-x =irony-install-server=. Possible modern replacement for column-enforce-mode: https://github.com/laishulu/hl-fill-column +*** RSS + +#+BEGIN_SRC emacs-lisp + (use-package elfeed + :custom + (elfeed-db-directory "~/.emacs.d/elfeed/") + (elfeed-enclosure-default-dir "~/downloads/") + (elfeed-search-filter "@6-months-ago +unread") + (elfeed-search-clipboard-type 'CLIPBOARD) + (elfeed-search-title-max-width 100) + (elfeed-search-title-min-width 30) + (elfeed-search-trailing-width 50) + (elfeed-show-unique-buffers t) + (elfeed-feeds + '(("https://www.youtube.com/feeds/videos.xml?user=linustechtips" comedy reviews youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA" boomer linux shell youtube) + ("https://phoronix.com/rss.php" linux news reviews) + )) + :hook + (elfeed-search-mode . (lambda (&rest _) (display-line-numbers-mode 0))) + (elfeed-show-mode . (lambda (&rest _) (display-line-numbers-mode 0)))) +#+END_SRC + * General #+BEGIN_SRC emacs-lisp + ;; Columns start at 1 + (setq column-number-indicator-zero-based nil) + + ;; Custom thems, do not ask if safe + (setq custom-safe-themes t) + ;; Scrolling (setq scroll-conservatively 1) (setq mouse-wheel-scroll-amount '(5)) (setq mouse-wheel-progressive-speed nil) - ;; Columns start at 1 - (setq column-number-indicator-zero-based nil) - ;; Automatically add newline on save at the end of the file (setq require-final-newline t) - ;; Change parenthesis behavior + ;; Parenthesis, set behavior (setq show-paren-delay 0) (setq show-paren-style 'mixed) @@ -754,6 +781,9 @@ Evil command aliases. ;; PHP, set correct tab mode (add-hook 'php-mode-hook (lambda () (setq indent-tabs-mode t))) + + ;; LaTeX, set correct tab mode + (add-hook 'latex-mode-hook (lambda () (setq indent-tabs-mode t))) #+END_SRC * Key Bindings @@ -814,202 +844,237 @@ Disable spacebar in evil motion. ** Package #+BEGIN_SRC emacs-lisp - ;; Buffers - (global-set-key (kbd "M-h") 'centaur-tabs-backward-tab) - (global-set-key (kbd "M-l") 'centaur-tabs-forward-tab) - (global-set-key (kbd "C-M-h") 'centaur-tabs-move-current-tab-to-left) - (global-set-key (kbd "C-M-l") 'centaur-tabs-move-current-tab-to-right) - - (global-set-key (kbd "M-x") 'smex) - - ;; Company completion selection - (with-eval-after-load 'company - (define-key company-active-map (kbd "M-n") nil) - (define-key company-active-map (kbd "M-p") nil) - (define-key company-active-map (kbd "M-h") #'company-abort) - (define-key company-active-map (kbd "M-j") #'company-select-next) - (define-key company-active-map (kbd "M-k") #'company-select-previous) - (define-key company-active-map (kbd "M-l") #'company-complete-selection) - (define-key company-active-map (kbd "") #'company-abort)) - ;https://github.com/company-mode/company-mode/blob/master/company.el#L661 - - ;; Evil command history selection - (with-eval-after-load 'evil-ex - (define-key evil-ex-completion-map (kbd "M-h") 'abort-recursive-edit) - (define-key evil-ex-completion-map (kbd "M-j") #'next-complete-history-element) - (define-key evil-ex-completion-map (kbd "M-k") #'previous-complete-history-element) - (define-key evil-ex-completion-map (kbd "M-l") 'exit-minibuffer)) - - ; Overwrite evil keymaps - ;(evil-global-set-key 'motion (kbd "C-w") 'kill-this-buffer) - ;(evil-define-key 'motion 'global (kbd "C-w") 'kill-this-buffer) - ;(define-key evil-motion-state-map (kbd "C-w") 'kill-this-buffer) ; @Todo test this with nil - ;https://github.com/noctuid/evil-guide#global-keybindings-and-evil-states - - (with-eval-after-load 'evil-states - (general-define-key - :keymaps 'evil-normal-state-map - - ;; Neotree - "C-n" 'neotree-toggle-in-project-root) - - (general-define-key - :states 'normal - :keymaps 'neotree-mode-map - "RET" 'neotree-enter - "" 'neotree-collapse-all ; - "c" 'neotree-create-node - "r" 'neotree-rename-node - "d" 'neotree-delete-node - "h" 'neotree-select-previous-sibling-node - "j" 'neotree-next-line - "k" 'neotree-previous-line - "l" 'neotree-enter - "R" 'neotree-refresh - "C" 'neotree-change-root - "H" 'neotree-hidden-file-toggle - "q" 'neotree-hide - ) - - ;; Dashboard - (general-define-key - :states 'normal - :keymaps 'dashboard-mode-map - [down-mouse-1] 'widget-button-click - "g" 'dashboard-refresh-buffer - "m" 'dashboard-goto-bookmarks - "p" 'dashboard-goto-projects - "r" 'dashboard-goto-recent-files - )) + ;; Buffers + (global-set-key (kbd "M-h") 'centaur-tabs-backward-tab) + (global-set-key (kbd "M-l") 'centaur-tabs-forward-tab) + (global-set-key (kbd "C-M-h") 'centaur-tabs-move-current-tab-to-left) + (global-set-key (kbd "C-M-l") 'centaur-tabs-move-current-tab-to-right) + + (global-set-key (kbd "M-x") 'smex) + + ;; Company completion selection + (with-eval-after-load 'company + (define-key company-active-map (kbd "M-n") nil) + (define-key company-active-map (kbd "M-p") nil) + (define-key company-active-map (kbd "M-h") #'company-abort) + (define-key company-active-map (kbd "M-j") #'company-select-next) + (define-key company-active-map (kbd "M-k") #'company-select-previous) + (define-key company-active-map (kbd "M-l") #'company-complete-selection) + (define-key company-active-map (kbd "") #'company-abort)) + ; https://github.com/company-mode/company-mode/blob/master/company.el#L661 + + ;; Evil command history selection + (with-eval-after-load 'evil-ex + (define-key evil-ex-completion-map (kbd "M-h") 'abort-recursive-edit) + (define-key evil-ex-completion-map (kbd "M-j") #'next-complete-history-element) + (define-key evil-ex-completion-map (kbd "M-k") #'previous-complete-history-element) + (define-key evil-ex-completion-map (kbd "M-l") 'exit-minibuffer)) + + ; Overwrite evil keymaps + ;(evil-global-set-key 'motion (kbd "C-w") 'kill-this-buffer) + ;(evil-define-key 'motion 'global (kbd "C-w") 'kill-this-buffer) + ;(define-key evil-motion-state-map (kbd "C-w") 'kill-this-buffer) ; @Todo test this with nil + ;https://github.com/noctuid/evil-guide#global-keybindings-and-evil-states + + (with-eval-after-load 'evil-states + (general-define-key + :keymaps 'evil-normal-state-map + + ;; Neotree + "C-n" 'neotree-toggle-in-project-root) + + (general-define-key + :states 'normal + :keymaps 'neotree-mode-map + "RET" 'neotree-enter + "" 'neotree-collapse-all ; + "c" 'neotree-create-node + "r" 'neotree-rename-node + "d" 'neotree-delete-node + "h" 'neotree-select-previous-sibling-node + "j" 'neotree-next-line + "k" 'neotree-previous-line + "l" 'neotree-enter + "R" 'neotree-refresh + "C" 'neotree-change-root + "H" 'neotree-hidden-file-toggle + "q" 'neotree-hide + ) + + ;; Dashboard + (general-define-key + :states 'normal + :keymaps 'dashboard-mode-map + [down-mouse-1] 'widget-button-click + "g" 'dashboard-refresh-buffer + "m" 'dashboard-goto-bookmarks + "p" 'dashboard-goto-projects + "r" 'dashboard-goto-recent-files + ) + + ;; Elfeed + (general-define-key + :states 'normal + :keymaps 'elfeed-search-mode-map + "gr" 'elfeed-search-update--force + "gR" 'elfeed-search-fetch + "q" 'kill-this-buffer + ) + + (general-define-key + :states 'normal + :keymaps 'elfeed-show-mode-map + "g" 'elfeed-show-refresh + "q" 'kill-this-buffer + )) #+END_SRC ** Leader General.el ~leader key binds. +*** Global + #+BEGIN_SRC emacs-lisp - (with-eval-after-load 'general - (general-create-definer space-leader - :prefix "SPC" - :non-normal-prefix "M-SPC" - :global-prefix "M-SPC" - :states '(normal visual insert motion emacs)) - - (general-create-definer comma-leader - :prefix "," - :states '(normal visual)) - - (space-leader - "SPC" '(smex :which-key "Smex") - "RET" '(bookmark-jump-ido :which-key "Jump to bookmark") - - ;; Buffer / bookmark - "b" '(:ignore t :which-key "buffer/bookmark") - "b b" '(ido-switch-buffer :which-key "Switch buffer") - "b B" '(ibuffer :which-key "List buffers") - "b d" '(kill-current-buffer :which-key "Kill buffer") - "b h" '(previous-buffer :which-key "Previous buffer") - "b k" '(kill-current-buffer :which-key "Kill buffer") - "b l" '(next-buffer :which-key "Next buffer") - "b m" '(bookmark-set :which-key "Make bookmark") - "b M" '(bookmark-delete-ido :which-key "Delete bookmark") - "b n" '(evil-buffer-new :which-key "New empty buffer") - "b r" '(revert-buffer :which-key "Revert buffer") - "b s" '(basic-save-buffer :which-key "Save buffer") - "b S" '(evil-write-all :which-key "Save all buffers") - "b " '(previous-buffer :which-key "Previous buffer") - "b " '(next-buffer :which-key "Next buffer") - - ;; Comments / config - "c" '(:ignore t :which-key "comment/config") - "c c" '(evilnc-comment-or-uncomment-lines :which-key "Toggle comment") - "c p" '(evilnc-comment-or-uncomment-paragraphs :which-key "Toggle comment paragraph") - "c r" '(config-reload :which-key "Config reload") - "c v" '(config-visit :which-key "Config visit") - "c y" '(evilnc-comment-and-kill-ring-save :which-key "Comment and copy") - - ;; LSP - "d" '(:ignore t :which-key "lsp") - "d c" '(lsp-describe-thing-at-point :which-key "LSP Describe under cursor") - "d d" '(lsp-find-definition :which-key "LSP Find definition") - "d e" '(lsp-execute-code-action :which-key "LSP Execute code action") - "d f" '(lsp-format-region-or-buffer :which-key "LSP Format region/buffer") - "d r" '(lsp-find-references :which-key "LSP Find references") - "d R" '(lsp-rename :which-key "LSP Rename") - "d s" '(lsp :which-key "Start LSP") - - ;; Find file - "f" '(:ignore t :which-key "file") - "f f" '(find-file-in-project-root :which-key "Find file") - "f r" '(rename-file-and-buffer :which-key "Rename file") - "f s" '(basic-save-buffer :which-key "Save file") - - ;; Tabs - "h" '(centaur-tabs-backward-group :which-key "Tab backward group") - "j" '(centaur-tabs-select-end-tab :which-key "Tab select first") - "k" '(centaur-tabs-select-beg-tab :which-key "Tab select last") - "l" '(centaur-tabs-forward-group :which-key "Tab forward group") - - ;; Insert - "i" '(:ignore t :which-key "insert") - "i s" '(yas-insert-snippet :which-key "Snippet") - - ;; Neotree - "n" '(neotree-toggle-in-project-root :which-key "Toggle Neotree") - - ;; Projectile - "p" '(:keymap projectile-command-map :which-key "projectile") - - ;; Quit - "q" '(:ignore t :which-key "quit") - "q q" '(save-buffers-kill-terminal :which-key "Quit Emacs") - "q Q" '(save-buffers-kill-emacs :which-key "Quit Emacs (and daemon)") - "q f" '(delete-frame :which-key "Close frame") - "q o" '(delete-other-frames :which-key "Close other frames") - - ;; Reformat region - "r" '(:ignore t :which-key "region") - "r r" '(indent-region :which-key "Indent region") - - ;; Search - "s" '(:ignore t :which-key "search") - "s a" '(avy-goto-char-timer :which-key "Avy goto char") - "s b" '(bookmark-jump-ido :which-key "Jump to bookmark") - - ;; Tabs - "t" '(:ignore t :which-key "tabs") - "t b" '(centaur-tabs-group-buffer-groups :which-key "Group tabs by buffer") - "t p" '(centaur-tabs-group-by-projectile-project :which-key "Group tabs by project") - - ;; Update packages - "u" '(auto-package-update-now :which-key "Update packages") - - ;; Window - ;; "w" '(:keymap evil-window-map :which-key "window") - "w" '(:ignore t :which-key "window") - "w h" '(evil-window-left :which-key "Focus window left") - "w j" '(evil-window-down :which-key "Focus window down") - "w k" '(evil-window-up :which-key "Focus window up") - "w l" '(evil-window-right :which-key "Focus window right") - "w o" '(delete-other-windows :which-key "Close other windows") - "w s" '(:ignore t :which-key "split") - "w s h" '(split-follow-horizontally :which-key "Split horizontal") - "w s v" '(split-follow-vertically :which-key "Split vertical") - "w w" '(other-window :which-key "Focus other window") - "w q" '(delete-window :which-key "Close window") - "w " '(evil-window-left :which-key "Focus window left") - "w " '(evil-window-right :which-key "Focus window down") - "w " '(evil-window-up :which-key "Focus window up") - "w " '(evil-window-down :which-key "Focus window right") - - "x" '(smex-major-mode-commands :which-key "Smex major mode") - )) + (with-eval-after-load 'general + (general-create-definer space-leader + :prefix "SPC" + :non-normal-prefix "M-SPC" + :global-prefix "M-SPC" + :states '(normal visual insert motion emacs)) + + (space-leader + "SPC" '(smex :which-key "Smex") + "RET" '(bookmark-jump-ido :which-key "Jump to bookmark") + + ;; Buffer / bookmark + "b" '(:ignore t :which-key "buffer/bookmark") + "b b" '(ido-switch-buffer :which-key "Switch buffer") + "b B" '(ibuffer :which-key "List buffers") + "b d" '(kill-current-buffer :which-key "Kill buffer") + "b h" '(previous-buffer :which-key "Previous buffer") + "b k" '(kill-current-buffer :which-key "Kill buffer") + "b l" '(next-buffer :which-key "Next buffer") + "b m" '(bookmark-set :which-key "Make bookmark") + "b M" '(bookmark-delete-ido :which-key "Delete bookmark") + "b n" '(evil-buffer-new :which-key "New empty buffer") + "b r" '(revert-buffer :which-key "Revert buffer") + "b s" '(basic-save-buffer :which-key "Save buffer") + "b S" '(evil-write-all :which-key "Save all buffers") + "b " '(previous-buffer :which-key "Previous buffer") + "b " '(next-buffer :which-key "Next buffer") + + ;; Comments / config + "c" '(:ignore t :which-key "comment/config") + "c c" '(evilnc-comment-or-uncomment-lines :which-key "Toggle comment") + "c p" '(evilnc-comment-or-uncomment-paragraphs :which-key "Toggle comment paragraph") + "c r" '(config-reload :which-key "Config reload") + "c v" '(config-visit :which-key "Config visit") + "c y" '(evilnc-comment-and-kill-ring-save :which-key "Comment and copy") + + ;; LSP + "d" '(:ignore t :which-key "lsp") + "d c" '(lsp-describe-thing-at-point :which-key "LSP Describe under cursor") + "d d" '(lsp-find-definition :which-key "LSP Find definition") + "d e" '(lsp-execute-code-action :which-key "LSP Execute code action") + "d f" '(lsp-format-region-or-buffer :which-key "LSP Format region/buffer") + "d r" '(lsp-find-references :which-key "LSP Find references") + "d R" '(lsp-rename :which-key "LSP Rename") + "d s" '(lsp :which-key "Start LSP") + + ;; Find file + "f" '(:ignore t :which-key "file") + "f f" '(find-file-in-project-root :which-key "Find file") + "f r" '(rename-file-and-buffer :which-key "Rename file") + "f s" '(basic-save-buffer :which-key "Save file") + + ;; Tabs + "h" '(centaur-tabs-backward-group :which-key "Tab backward group") + "j" '(centaur-tabs-select-end-tab :which-key "Tab select first") + "k" '(centaur-tabs-select-beg-tab :which-key "Tab select last") + "l" '(centaur-tabs-forward-group :which-key "Tab forward group") + + ;; Insert + "i" '(:ignore t :which-key "insert") + "i s" '(yas-insert-snippet :which-key "Snippet") + + ;; Neotree + "n" '(neotree-toggle-in-project-root :which-key "Toggle Neotree") + + ;; Projectile + "p" '(:keymap projectile-command-map :which-key "projectile") + + ;; Quit + "q" '(:ignore t :which-key "quit") + "q q" '(save-buffers-kill-terminal :which-key "Quit Emacs") + "q Q" '(save-buffers-kill-emacs :which-key "Quit Emacs (and daemon)") + "q f" '(delete-frame :which-key "Close frame") + "q o" '(delete-other-frames :which-key "Close other frames") + + ;; Reformat region + "r" '(:ignore t :which-key "region") + "r r" '(indent-region :which-key "Indent region") + + ;; Search + "s" '(:ignore t :which-key "search") + "s a" '(avy-goto-char-timer :which-key "Avy goto char") + "s b" '(bookmark-jump-ido :which-key "Jump to bookmark") + + ;; Tabs + "t" '(:ignore t :which-key "tabs") + "t b" '(centaur-tabs-group-buffer-groups :which-key "Group tabs by buffer") + "t p" '(centaur-tabs-group-by-projectile-project :which-key "Group tabs by project") + + ;; Update packages + "u" '(auto-package-update-now :which-key "Update packages") + + ;; Window + ;; "w" '(:keymap evil-window-map :which-key "window") + "w" '(:ignore t :which-key "window") + "w h" '(windmove-left :which-key "Focus window left") + "w j" '(windmove-down :which-key "Focus window down") + "w k" '(windmove-up :which-key "Focus window up") + "w l" '(windmove-right :which-key "Focus window right") + "w o" '(delete-other-windows :which-key "Close other windows") + "w s" '(:ignore t :which-key "split") + "w s h" '(split-follow-horizontally :which-key "Split horizontal") + "w s v" '(split-follow-vertically :which-key "Split vertical") + "w w" '(other-window :which-key "Focus other window") + "w q" '(delete-window :which-key "Close window") + "w " '(windmove-left :which-key "Focus window left") + "w " '(windmove-right :which-key "Focus window right") + "w " '(windmove-up :which-key "Focus window up") + "w " '(windmove-down :which-key "Focus window down") + ;; winner-redo (built-in window history) + ;; winner-undo + + "x" '(smex-major-mode-commands :which-key "Smex major mode") + )) #+END_SRC Source: https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-evil.el#L712 https://github.com/suyashbire1/emacs.d/blob/master/init.el +*** Major mode + +#+BEGIN_SRC emacs-lisp + (general-create-definer comma-leader + :prefix "SPC ," + :states '(normal visual)) + + (comma-leader elfeed-search-mode-map + "" '(:ignore t :which-key "elfeed") + "g" 'elfeed-search-update--force + "G" 'elfeed-search-fetch + ) + + (comma-leader elfeed-show-mode-map + "" '(:ignore t :which-key "elfeed") + "g" 'elfeed-show-refresh + ) +#+END_SRC + * Notes Org mode keybinds: