|
|
|
@ -13,13 +13,37 @@ |
|
|
|
|
(setq-default cursor-type 'bar) |
|
|
|
|
(global-hl-line-mode 1) |
|
|
|
|
(toggle-scroll-bar -1) |
|
|
|
|
(scroll-bar-mode -1) |
|
|
|
|
(menu-bar-mode -1) |
|
|
|
|
(tool-bar-mode -1) |
|
|
|
|
(column-number-mode t) |
|
|
|
|
(set-fringe-mode 10) |
|
|
|
|
(set-fringe-mode 5) |
|
|
|
|
(setq doc-view-scale-internally nil) |
|
|
|
|
(setq visible-bell t) |
|
|
|
|
(setq vc-handled-backends nil) |
|
|
|
|
(fset 'yes-or-no-p 'y-or-n-p) |
|
|
|
|
(show-paren-mode t) |
|
|
|
|
(setq show-paren-style 'expression) |
|
|
|
|
(save-place-mode t) |
|
|
|
|
(setq-default indent-tabs-mode nil |
|
|
|
|
tab-width 4) |
|
|
|
|
|
|
|
|
|
(set-language-environment "utf-8") |
|
|
|
|
(prefer-coding-system 'utf-8-unix) |
|
|
|
|
(set-locale-environment "en_US.UTF-8") |
|
|
|
|
(set-default-coding-systems 'utf-8-unix) |
|
|
|
|
(set-selection-coding-system 'utf-8-unix) |
|
|
|
|
(set-buffer-file-coding-system 'utf-8-unix) |
|
|
|
|
(set-clipboard-coding-system 'utf-8) |
|
|
|
|
(set-keyboard-coding-system 'utf-8) |
|
|
|
|
(set-terminal-coding-system 'utf-8) |
|
|
|
|
(setq coding-system-for-read 'utf-8) |
|
|
|
|
(setq coding-system-for-write 'utf-8) |
|
|
|
|
|
|
|
|
|
(defun remove-scratch-buffer () |
|
|
|
|
(if (get-buffer "*scratch*") |
|
|
|
|
(kill-buffer "*scratch*"))) |
|
|
|
|
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer) |
|
|
|
|
|
|
|
|
|
(setf epa-pinentry-mode 'loopback) |
|
|
|
|
|
|
|
|
@ -59,266 +83,211 @@ Return a list of installed packages or nil for every skipped package." |
|
|
|
|
(or (file-exists-p package-user-dir) |
|
|
|
|
(package-refresh-contents)) |
|
|
|
|
|
|
|
|
|
(ensure-package-installed 'use-package 'ivy 'magit 'centaur-tabs 'eglot 'dashboard 'multiple-cursors 'flycheck 'which-key 'doom-themes 'rainbow-mode 'rainbow-delimiters 'all-the-icons 'elpy 'rustic 'simpleclip 'messages-are-flowing 'hl-todo 'powerline 'format-all 'auctex 'counsel 'swiper 'projectile 'org-roam 'smex 'smartparens 'origami 'dumb-jump 'kaolin-themes 'company-quickhelp 'treemacs 'treemacs-projectile 'treemacs-magit 'treemacs-icons-dired 'org-mime 'hydra 'verb 'telephone-line 'bm 'undo-fu 'ranger) |
|
|
|
|
(ensure-package-installed 'use-package 'ivy 'magit 'centaur-tabs 'lsp-mode 'lsp-ui 'lsp-ivy 'dashboard 'flycheck 'which-key 'doom-themes 'rainbow-mode 'rainbow-delimiters 'all-the-icons 'rustic 'simpleclip 'hl-todo 'powerline 'format-all 'auctex 'counsel 'swiper 'projectile 'org-roam 'smex 'smartparens 'origami 'company-quickhelp 'org-mime 'verb 'telephone-line 'undo-fu 'neotree 'restart-emacs 'git-timemachine 'org-super-agenda 'pyvenv) |
|
|
|
|
|
|
|
|
|
;; need it after installation - makes it possible to bootstrap |
|
|
|
|
;; need this after installation - makes it possible to bootstrap |
|
|
|
|
(eval-when-compile |
|
|
|
|
(require 'use-package)) |
|
|
|
|
|
|
|
|
|
(use-package ranger |
|
|
|
|
(use-package flycheck |
|
|
|
|
:hook (prog-mode . flycheck-mode) |
|
|
|
|
:config (setq flycheck-checker-error-threshold 1000)) |
|
|
|
|
|
|
|
|
|
(use-package company |
|
|
|
|
:custom |
|
|
|
|
(company-minimum-prefix-length 1) |
|
|
|
|
(company-idle-delay 0.0) |
|
|
|
|
(company-tooltip-align-annotations t) |
|
|
|
|
:config |
|
|
|
|
(global-company-mode) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(use-package company-quickhelp |
|
|
|
|
:ensure t |
|
|
|
|
:init |
|
|
|
|
(company-quickhelp-mode)) |
|
|
|
|
|
|
|
|
|
(use-package lsp-mode |
|
|
|
|
:after company |
|
|
|
|
:commands lsp |
|
|
|
|
:config |
|
|
|
|
(setq ranger-preview-file nil) |
|
|
|
|
(ranger-override-dired-mode t)) |
|
|
|
|
|
|
|
|
|
(flyspell-prog-mode) |
|
|
|
|
(setq gc-cons-threshold 100000000 |
|
|
|
|
read-process-output-max (* 1024 1024) |
|
|
|
|
lsp-completion-provider :capf |
|
|
|
|
lsp-keep-workspace-alive nil |
|
|
|
|
lsp-enable-xref t |
|
|
|
|
lsp-enable-indentation t |
|
|
|
|
lsp-signature-auto-activate t |
|
|
|
|
lsp-idle-delay 0.2 |
|
|
|
|
create-lockfiles nil |
|
|
|
|
lsp-enable-on-type-formatting t |
|
|
|
|
lsp-before-save-edits t |
|
|
|
|
lsp-enable-imenu nil |
|
|
|
|
lsp-completion-enable t |
|
|
|
|
lsp-enable-snippet nil |
|
|
|
|
lsp-eldoc-render-all t |
|
|
|
|
lsp-enable-file-watchers nil |
|
|
|
|
lsp-enable-folding nil |
|
|
|
|
lsp-modeline-diagnostics-enable nil |
|
|
|
|
lsp-headerline-breadcrumb-enable nil |
|
|
|
|
lsp-semantic-tokens-enable nil) |
|
|
|
|
:hook ((js-mode js-jsx-mode python-mode svelte-mode ) . lsp-deferred) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(with-eval-after-load 'js |
|
|
|
|
(define-key js-mode-map (kbd "M-.") nil)) |
|
|
|
|
|
|
|
|
|
(use-package lsp-pyright |
|
|
|
|
:ensure t |
|
|
|
|
:hook (python-mode . (lambda () |
|
|
|
|
(require 'lsp-pyright) |
|
|
|
|
(lsp-deferred)))) |
|
|
|
|
|
|
|
|
|
(use-package yasnippet |
|
|
|
|
:defer nil |
|
|
|
|
:hook (lsp-mode . yas-minor-mode) |
|
|
|
|
:diminish yas-minor-mode |
|
|
|
|
:custom |
|
|
|
|
(yas-indent-line nil) |
|
|
|
|
(yas-inhibit-overlap-modification-protection t) |
|
|
|
|
:custom-face |
|
|
|
|
(yas-field-highlight-face ((t (:inherit region))))) |
|
|
|
|
|
|
|
|
|
(use-package lsp-ui |
|
|
|
|
:after flycheck |
|
|
|
|
:diminish |
|
|
|
|
:commands lsp-ui-mode |
|
|
|
|
:bind |
|
|
|
|
(:map lsp-ui-mode-map |
|
|
|
|
("M-i" . lsp-ui-doc-focus-frame)) |
|
|
|
|
:custom |
|
|
|
|
(lsp-ui-flycheck-enable t) |
|
|
|
|
(lsp-ui-doc-header t) |
|
|
|
|
(lsp-ui-doc-show-with-cursor t) |
|
|
|
|
(lsp-ui-doc-include-signature t) |
|
|
|
|
(lsp-ui-sideline-show-code-actions t) |
|
|
|
|
(lsp-ui-doc-delay 0.2) |
|
|
|
|
(lsp-ui-peek-enable t) |
|
|
|
|
(lsp-ui-peek-show-directory nil) |
|
|
|
|
:hook |
|
|
|
|
(lsp-mode . lsp-ui-mode) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(use-package pyvenv |
|
|
|
|
:defer t) |
|
|
|
|
|
|
|
|
|
(use-package neotree |
|
|
|
|
:config |
|
|
|
|
(global-set-key [f8] 'neotree-toggle) |
|
|
|
|
(setq neo-show-hidden-files t |
|
|
|
|
neo-theme 'icons |
|
|
|
|
neo-smart-open t)) |
|
|
|
|
|
|
|
|
|
(use-package undo-fu |
|
|
|
|
:config |
|
|
|
|
(global-unset-key (kbd "C-z")) |
|
|
|
|
(global-set-key (kbd "C-z") 'undo-fu-only-undo) |
|
|
|
|
(global-set-key (kbd "C-S-z") 'undo-fu-only-redo)) |
|
|
|
|
(global-unset-key (kbd "C-z")) |
|
|
|
|
(global-set-key (kbd "C-z") 'undo-fu-only-undo) |
|
|
|
|
(global-set-key (kbd "C-S-z") 'undo-fu-only-redo)) |
|
|
|
|
|
|
|
|
|
(use-package telephone-line |
|
|
|
|
:init |
|
|
|
|
(setq telephone-line-primary-left-separator 'telephone-line-cubed-left |
|
|
|
|
telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left |
|
|
|
|
telephone-line-primary-right-separator 'telephone-line-cubed-right |
|
|
|
|
telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) |
|
|
|
|
(setq telephone-line-height 24) |
|
|
|
|
telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left |
|
|
|
|
telephone-line-primary-right-separator 'telephone-line-cubed-right |
|
|
|
|
telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right |
|
|
|
|
telephone-line-height 24) |
|
|
|
|
:config |
|
|
|
|
(telephone-line-mode 1)) |
|
|
|
|
|
|
|
|
|
(use-package magit |
|
|
|
|
:defer |
|
|
|
|
:ensure t) |
|
|
|
|
|
|
|
|
|
(use-package treemacs |
|
|
|
|
:ensure t |
|
|
|
|
:defer t |
|
|
|
|
:init |
|
|
|
|
(with-eval-after-load 'winum |
|
|
|
|
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) |
|
|
|
|
:config |
|
|
|
|
(progn |
|
|
|
|
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) |
|
|
|
|
treemacs-deferred-git-apply-delay 0.5 |
|
|
|
|
treemacs-directory-name-transformer #'identity |
|
|
|
|
treemacs-display-in-side-window t |
|
|
|
|
treemacs-eldoc-display t |
|
|
|
|
treemacs-file-event-delay 5000 |
|
|
|
|
treemacs-file-extension-regex treemacs-last-period-regex-value |
|
|
|
|
treemacs-file-follow-delay 0.2 |
|
|
|
|
treemacs-file-name-transformer #'identity |
|
|
|
|
treemacs-follow-after-init t |
|
|
|
|
treemacs-expand-after-init t |
|
|
|
|
treemacs-git-command-pipe "" |
|
|
|
|
treemacs-goto-tag-strategy 'refetch-index |
|
|
|
|
treemacs-indentation 2 |
|
|
|
|
treemacs-indentation-string " " |
|
|
|
|
treemacs-is-never-other-window nil |
|
|
|
|
treemacs-max-git-entries 5000 |
|
|
|
|
treemacs-missing-project-action 'ask |
|
|
|
|
treemacs-move-forward-on-expand nil |
|
|
|
|
treemacs-no-png-images nil |
|
|
|
|
treemacs-no-delete-other-windows t |
|
|
|
|
treemacs-project-follow-cleanup nil |
|
|
|
|
treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) |
|
|
|
|
treemacs-position 'left |
|
|
|
|
treemacs-read-string-input 'from-child-frame |
|
|
|
|
treemacs-recenter-distance 0.1 |
|
|
|
|
treemacs-recenter-after-file-follow nil |
|
|
|
|
treemacs-recenter-after-tag-follow nil |
|
|
|
|
treemacs-recenter-after-project-jump 'always |
|
|
|
|
treemacs-recenter-after-project-expand 'on-distance |
|
|
|
|
treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") |
|
|
|
|
treemacs-show-cursor nil |
|
|
|
|
treemacs-show-hidden-files t |
|
|
|
|
treemacs-silent-filewatch t |
|
|
|
|
treemacs-silent-refresh t |
|
|
|
|
treemacs-sorting 'alphabetic-asc |
|
|
|
|
treemacs-select-when-already-in-treemacs 'move-back |
|
|
|
|
treemacs-space-between-root-nodes t |
|
|
|
|
treemacs-tag-follow-cleanup t |
|
|
|
|
treemacs-tag-follow-delay 1.5 |
|
|
|
|
treemacs-text-scale nil |
|
|
|
|
treemacs-user-mode-line-format nil |
|
|
|
|
treemacs-user-header-line-format nil |
|
|
|
|
treemacs-wide-toggle-width 70 |
|
|
|
|
treemacs-width 35 |
|
|
|
|
treemacs-width-increment 1 |
|
|
|
|
treemacs-width-is-initially-locked t |
|
|
|
|
treemacs-workspace-switch-cleanup nil) |
|
|
|
|
|
|
|
|
|
;; The default width and height of the icons is 22 pixels. If you are |
|
|
|
|
;; using a Hi-DPI display, uncomment this to double the icon size. |
|
|
|
|
;;(treemacs-resize-icons 44) |
|
|
|
|
|
|
|
|
|
(treemacs-follow-mode t) |
|
|
|
|
(treemacs-filewatch-mode t) |
|
|
|
|
(treemacs-fringe-indicator-mode 'always) |
|
|
|
|
(treemacs-git-mode 'deferred)) |
|
|
|
|
;; (use-package bm |
|
|
|
|
;; :ensure t |
|
|
|
|
;; :demand t |
|
|
|
|
;; :init |
|
|
|
|
;; (setq bm-restore-repository-on-load t) |
|
|
|
|
;; (setq bm-repository-file "~/.emacs.d/bm-repository") |
|
|
|
|
|
|
|
|
|
;; ;; save bookmarks |
|
|
|
|
;; (setq-default bm-buffer-persistence t) |
|
|
|
|
;; :config |
|
|
|
|
;; (add-hook 'after-init-hook 'bm-repository-load) |
|
|
|
|
;; ;; Saving bookmarks |
|
|
|
|
;; (add-hook 'kill-buffer-hook #'bm-buffer-save) |
|
|
|
|
;; (add-hook 'kill-emacs-hook #'(lambda nil |
|
|
|
|
;; (bm-buffer-save-all) |
|
|
|
|
;; (bm-repository-save))) |
|
|
|
|
;; (add-hook 'find-file-hook #'bm-buffer-restore) |
|
|
|
|
;; :bind (("<f2>" . bm-next) |
|
|
|
|
;; ("S-<f2>" . bm-previous) |
|
|
|
|
;; ("C-<f2>" . bm-toggle))) |
|
|
|
|
|
|
|
|
|
;; (global-set-key (kbd "<left-fringe> <mouse-5>") 'bm-next-mouse) |
|
|
|
|
;; (global-set-key (kbd "<left-fringe> <mouse-4>") 'bm-previous-mouse) |
|
|
|
|
;; (global-set-key (kbd "<left-fringe> <mouse-1>") 'bm-toggle-mouse) |
|
|
|
|
|
|
|
|
|
(use-package origami |
|
|
|
|
:bind |
|
|
|
|
(:map global-map |
|
|
|
|
("M-0" . treemacs-select-window) |
|
|
|
|
("C-x t 1" . treemacs-delete-other-windows) |
|
|
|
|
("<f8>" . treemacs) |
|
|
|
|
("C-x t B" . treemacs-bookmark) |
|
|
|
|
("C-x t C-t" . treemacs-find-file) |
|
|
|
|
("C-x t M-t" . treemacs-find-tag))) |
|
|
|
|
|
|
|
|
|
(use-package treemacs-projectile |
|
|
|
|
:after (treemacs projectile) |
|
|
|
|
:ensure t) |
|
|
|
|
|
|
|
|
|
(use-package treemacs-icons-dired |
|
|
|
|
:hook (dired-mode . treemacs-icons-dired-enable-once) |
|
|
|
|
:ensure t) |
|
|
|
|
|
|
|
|
|
(use-package treemacs-magit |
|
|
|
|
:after (treemacs magit) |
|
|
|
|
:ensure t) |
|
|
|
|
|
|
|
|
|
(use-package bm |
|
|
|
|
:ensure t |
|
|
|
|
:demand t |
|
|
|
|
|
|
|
|
|
:init |
|
|
|
|
;; restore on load (even before you require bm) |
|
|
|
|
(setq bm-restore-repository-on-load t) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:config |
|
|
|
|
;; Allow cross-buffer 'next' |
|
|
|
|
(setq bm-cycle-all-buffers t) |
|
|
|
|
|
|
|
|
|
;; where to store persistant files |
|
|
|
|
(setq bm-repository-file "~/.emacs.d/bm-repository") |
|
|
|
|
|
|
|
|
|
;; save bookmarks |
|
|
|
|
(setq-default bm-buffer-persistence t) |
|
|
|
|
|
|
|
|
|
;; Loading the repository from file when on start up. |
|
|
|
|
(add-hook 'after-init-hook 'bm-repository-load) |
|
|
|
|
|
|
|
|
|
;; Saving bookmarks |
|
|
|
|
(add-hook 'kill-buffer-hook #'bm-buffer-save) |
|
|
|
|
|
|
|
|
|
;; Saving the repository to file when on exit. |
|
|
|
|
;; kill-buffer-hook is not called when Emacs is killed, so we |
|
|
|
|
;; must save all bookmarks first. |
|
|
|
|
(add-hook 'kill-emacs-hook #'(lambda nil |
|
|
|
|
(bm-buffer-save-all) |
|
|
|
|
(bm-repository-save))) |
|
|
|
|
|
|
|
|
|
;; The `after-save-hook' is not necessary to use to achieve persistence, |
|
|
|
|
;; but it makes the bookmark data in repository more in sync with the file |
|
|
|
|
;; state. |
|
|
|
|
(add-hook 'after-save-hook #'bm-buffer-save) |
|
|
|
|
|
|
|
|
|
;; Restoring bookmarks |
|
|
|
|
(add-hook 'find-file-hooks #'bm-buffer-restore) |
|
|
|
|
(add-hook 'after-revert-hook #'bm-buffer-restore) |
|
|
|
|
|
|
|
|
|
;; The `after-revert-hook' is not necessary to use to achieve persistence, |
|
|
|
|
;; but it makes the bookmark data in repository more in sync with the file |
|
|
|
|
;; state. This hook might cause trouble when using packages |
|
|
|
|
;; that automatically reverts the buffer (like vc after a check-in). |
|
|
|
|
;; This can easily be avoided if the package provides a hook that is |
|
|
|
|
;; called before the buffer is reverted (like `vc-before-checkin-hook'). |
|
|
|
|
;; Then new bookmarks can be saved before the buffer is reverted. |
|
|
|
|
;; Make sure bookmarks is saved before check-in (and revert-buffer) |
|
|
|
|
(add-hook 'vc-before-checkin-hook #'bm-buffer-save) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:bind (("<f2>" . bm-next) |
|
|
|
|
("S-<f2>" . bm-previous) |
|
|
|
|
("C-<f2>" . bm-toggle)) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(global-set-key (kbd "<left-fringe> <mouse-5>") 'bm-next-mouse) |
|
|
|
|
(global-set-key (kbd "<left-fringe> <mouse-4>") 'bm-previous-mouse) |
|
|
|
|
(global-set-key (kbd "<left-fringe> <mouse-1>") 'bm-toggle-mouse) |
|
|
|
|
|
|
|
|
|
(use-package dumb-jump) |
|
|
|
|
(add-hook 'xref-backend-functions #'dumb-jump-xref-activate) |
|
|
|
|
(setq xref-show-definitions-function #'xref-show-definitions-completing-read) |
|
|
|
|
|
|
|
|
|
(use-package origami) |
|
|
|
|
(bind-keys |
|
|
|
|
:map origami-mode-map |
|
|
|
|
("C-c C-<tab>" . origami-toggle-node)) |
|
|
|
|
(:map origami-mode-map |
|
|
|
|
("C-c C-<tab>" . origami-toggle-node))) |
|
|
|
|
|
|
|
|
|
(add-hook 'prog-mode-hook #'origami-mode) |
|
|
|
|
(use-package smartparens-config |
|
|
|
|
:config |
|
|
|
|
(add-hook 'prog-mode-hook #'smartparens-mode)) |
|
|
|
|
|
|
|
|
|
(bind-keys |
|
|
|
|
:map smartparens-mode-map |
|
|
|
|
("C-M-a" . sp-beginning-of-sexp) |
|
|
|
|
("C-M-e" . sp-end-of-sexp) |
|
|
|
|
|
|
|
|
|
("C-<down>" . sp-down-sexp) |
|
|
|
|
("C-<up>" . sp-up-sexp) |
|
|
|
|
("M-<down>" . sp-backward-down-sexp) |
|
|
|
|
("M-<up>" . sp-backward-up-sexp) |
|
|
|
|
|
|
|
|
|
("C-M-f" . sp-forward-sexp) |
|
|
|
|
("C-M-b" . sp-backward-sexp) |
|
|
|
|
|
|
|
|
|
("C-M-n" . sp-next-sexp) |
|
|
|
|
("C-M-p" . sp-previous-sexp) |
|
|
|
|
|
|
|
|
|
("C-S-f" . sp-forward-symbol) |
|
|
|
|
("C-S-b" . sp-backward-symbol) |
|
|
|
|
|
|
|
|
|
("C-<right>" . sp-forward-slurp-sexp) |
|
|
|
|
("M-<right>" . sp-forward-barf-sexp) |
|
|
|
|
("C-<left>" . sp-backward-slurp-sexp) |
|
|
|
|
("M-<left>" . sp-backward-barf-sexp) |
|
|
|
|
|
|
|
|
|
("C-M-t" . sp-transpose-sexp) |
|
|
|
|
("C-M-k" . sp-kill-sexp) |
|
|
|
|
("C-k" . sp-kill-hybrid-sexp) |
|
|
|
|
("M-k" . sp-backward-kill-sexp) |
|
|
|
|
("C-M-w" . sp-copy-sexp) |
|
|
|
|
("C-M-d" . delete-sexp) |
|
|
|
|
|
|
|
|
|
("M-<backspace>" . backward-kill-word) |
|
|
|
|
("C-<backspace>" . sp-backward-kill-word) |
|
|
|
|
([remap sp-backward-kill-word] . backward-kill-word) |
|
|
|
|
|
|
|
|
|
("M-[" . sp-backward-unwrap-sexp) |
|
|
|
|
("M-]" . sp-unwrap-sexp) |
|
|
|
|
|
|
|
|
|
("C-x C-t" . sp-transpose-hybrid-sexp) |
|
|
|
|
|
|
|
|
|
("C-c (" . wrap-with-parens) |
|
|
|
|
("C-c [" . wrap-with-brackets) |
|
|
|
|
("C-c {" . wrap-with-braces) |
|
|
|
|
("C-c '" . wrap-with-single-quotes) |
|
|
|
|
("C-c \"" . wrap-with-double-quotes) |
|
|
|
|
("C-c _" . wrap-with-underscores) |
|
|
|
|
("C-c `" . wrap-with-back-quotes)) |
|
|
|
|
|
|
|
|
|
(use-package company) |
|
|
|
|
(add-hook 'after-init-hook 'global-company-mode) |
|
|
|
|
(company-quickhelp-mode) |
|
|
|
|
|
|
|
|
|
(use-package eglot :ensure t) |
|
|
|
|
(add-hook 'c++-mode-hook 'eglot-ensure) |
|
|
|
|
(add-hook 'c-mode-hook 'eglot-ensure) |
|
|
|
|
(add-hook 'js-mode-hook 'eglot-ensure) |
|
|
|
|
|
|
|
|
|
(use-package centaur-tabs :init |
|
|
|
|
:bind |
|
|
|
|
(:map smartparens-mode-map |
|
|
|
|
("C-M-a" . sp-beginning-of-sexp) |
|
|
|
|
("C-M-e" . sp-end-of-sexp) |
|
|
|
|
("C-<down>" . sp-down-sexp) |
|
|
|
|
("C-<up>" . sp-up-sexp) |
|
|
|
|
("M-<down>" . sp-backward-down-sexp) |
|
|
|
|
("M-<up>" . sp-backward-up-sexp) |
|
|
|
|
("C-M-f" . sp-forward-sexp) |
|
|
|
|
("C-M-b" . sp-backward-sexp) |
|
|
|
|
("C-M-n" . sp-next-sexp) |
|
|
|
|
("C-M-p" . sp-previous-sexp) |
|
|
|
|
("C-S-f" . sp-forward-symbol) |
|
|
|
|
("C-S-b" . sp-backward-symbol) |
|
|
|
|
("C-<right>" . sp-forward-slurp-sexp) |
|
|
|
|
("M-<right>" . sp-forward-barf-sexp) |
|
|
|
|
("C-<left>" . sp-backward-slurp-sexp) |
|
|
|
|
("M-<left>" . sp-backward-barf-sexp) |
|
|
|
|
("C-M-t" . sp-transpose-sexp) |
|
|
|
|
("C-M-k" . sp-kill-sexp) |
|
|
|
|
("C-k" . sp-kill-hybrid-sexp) |
|
|
|
|
("M-k" . sp-backward-kill-sexp) |
|
|
|
|
("C-M-w" . sp-copy-sexp) |
|
|
|
|
("C-M-d" . delete-sexp) |
|
|
|
|
("M-<backspace>" . backward-kill-word) |
|
|
|
|
("C-<backspace>" . sp-backward-kill-word) |
|
|
|
|
([remap sp-backward-kill-word] . backward-kill-word) |
|
|
|
|
("M-[" . sp-backward-unwrap-sexp) |
|
|
|
|
("M-]" . sp-unwrap-sexp) |
|
|
|
|
("C-x C-t" . sp-transpose-hybrid-sexp) |
|
|
|
|
("C-c (" . wrap-with-parens) |
|
|
|
|
("C-c [" . wrap-with-brackets) |
|
|
|
|
("C-c {" . wrap-with-braces) |
|
|
|
|
("C-c '" . wrap-with-single-quotes) |
|
|
|
|
("C-c \"" . wrap-with-double-quotes) |
|
|
|
|
("C-c _" . wrap-with-underscores) |
|
|
|
|
("C-c `" . wrap-with-back-quotes)) |
|
|
|
|
:config |
|
|
|
|
(add-hook 'prog-mode-hook #'smartparens-mode)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(use-package centaur-tabs |
|
|
|
|
:init |
|
|
|
|
(setq centaur-tabs-enable-key-bindings t |
|
|
|
|
centaur-tabs-set-icons t |
|
|
|
|
centaur-tabs-set-modified-marker t |
|
|
|
|
centaur-tabs-style "chamfer" |
|
|
|
|
centaur-tabs-gray-out-icons 'buffer)) |
|
|
|
|
|
|
|
|
|
;;(centaur-tabs-group-by-projectile-project) breaks w/ buffers unrelated to projects |
|
|
|
|
(centaur-tabs-headline-match) |
|
|
|
|
(centaur-tabs-mode 1) |
|
|
|
|
|
|
|
|
|
(use-package flycheck) |
|
|
|
|
centaur-tabs-style "chamfer" |
|
|
|
|
centaur-tabs-gray-out-icons 'buffer) |
|
|
|
|
:config |
|
|
|
|
(centaur-tabs-group-by-projectile-project) |
|
|
|
|
(centaur-tabs-headline-match) |
|
|
|
|
(centaur-tabs-mode 1)) |
|
|
|
|
|
|
|
|
|
(add-hook 'after-init-hook #'global-flycheck-mode) |
|
|
|
|
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode) |
|
|
|
@ -331,34 +300,14 @@ Return a list of installed packages or nil for every skipped package." |
|
|
|
|
:config |
|
|
|
|
(which-key-mode)) |
|
|
|
|
|
|
|
|
|
(use-package dashboard |
|
|
|
|
:init |
|
|
|
|
(setq dashboard-set-footer nil |
|
|
|
|
dashboard-org-agenda-categories '("Tasks" "appointments") |
|
|
|
|
dashboard-center-content t |
|
|
|
|
dashboard-set-heading-icons t |
|
|
|
|
dashboard-set-file-icons t) |
|
|
|
|
:ensure t |
|
|
|
|
:config (dashboard-setup-startup-hook)) |
|
|
|
|
|
|
|
|
|
(use-package multiple-cursors) |
|
|
|
|
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) |
|
|
|
|
(global-set-key (kbd "C->") 'mc/mark-next-like-this) |
|
|
|
|
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this) |
|
|
|
|
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) |
|
|
|
|
|
|
|
|
|
(use-package elpy |
|
|
|
|
:ensure t |
|
|
|
|
:defer t |
|
|
|
|
:init |
|
|
|
|
(advice-add 'python-mode :before 'elpy-enable) |
|
|
|
|
:config |
|
|
|
|
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) |
|
|
|
|
(add-hook 'elpy-mode-hook 'flycheck-mode)) |
|
|
|
|
;; (use-package multiple-cursors) |
|
|
|
|
;; (global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) |
|
|
|
|
;; (global-set-key (kbd "C->") 'mc/mark-next-like-this) |
|
|
|
|
;; (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) |
|
|
|
|
;; (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) |
|
|
|
|
|
|
|
|
|
(use-package ivy :ensure t |
|
|
|
|
:diminish ivy-mode |
|
|
|
|
:init (setq projectile-completion-system 'ivy) |
|
|
|
|
:config |
|
|
|
|
(ivy-mode 1) |
|
|
|
|
(setq ivy-height 13) |
|
|
|
@ -366,13 +315,15 @@ Return a list of installed packages or nil for every skipped package." |
|
|
|
|
(setq ivy-use-virtual-buffers t) |
|
|
|
|
(setq ivy-count-format "(%d/%d) ")) |
|
|
|
|
|
|
|
|
|
(use-package lsp-ivy |
|
|
|
|
:after lsp-mode ivy |
|
|
|
|
:commands lsp-ivy-workspace-symbol) |
|
|
|
|
|
|
|
|
|
(use-package counsel |
|
|
|
|
:ensure t |
|
|
|
|
:bind* |
|
|
|
|
(("M-x" . counsel-M-x) |
|
|
|
|
("C-c d d" . counsel-descbinds) |
|
|
|
|
("C-c s s" . counsel-ag) |
|
|
|
|
("C-c s d" . counsel-ag-projectile) |
|
|
|
|
("C-c d d" . counsel-descbinds) |
|
|
|
|
("C-x C-f" . counsel-find-file) |
|
|
|
|
("C-x r f" . counsel-recentf) |
|
|
|
|
("C-c g g" . counsel-git) |
|
|
|
@ -393,44 +344,189 @@ Return a list of installed packages or nil for every skipped package." |
|
|
|
|
(use-package projectile |
|
|
|
|
:ensure t |
|
|
|
|
:init |
|
|
|
|
(projectile-mode +1) |
|
|
|
|
(projectile-mode +1) |
|
|
|
|
:config |
|
|
|
|
(setq projectile-sort-order 'recentf |
|
|
|
|
projectile-require-project-root t |
|
|
|
|
projectile-completion-system 'ivy |
|
|
|
|
projectile-switch-project-action 'neotree-projectile-action) |
|
|
|
|
:bind (:map projectile-mode-map |
|
|
|
|
("s-p" . projectile-command-map) |
|
|
|
|
("C-c p" . projectile-command-map))) |
|
|
|
|
|
|
|
|
|
(setq projectile-sort-order 'recentf) |
|
|
|
|
(setq projectile-require-project-root t) |
|
|
|
|
(setq projectile-completion-system 'ivy) |
|
|
|
|
(defun trigger-org-company-complete () |
|
|
|
|
"Begins company-complete in org-mode buffer after pressing #+ chars." |
|
|
|
|
(interactive) |
|
|
|
|
(if (string-equal "#" (string (preceding-char))) |
|
|
|
|
(progn |
|
|
|
|
(insert "+") |
|
|
|
|
(company-complete)) |
|
|
|
|
(insert "+"))) |
|
|
|
|
|
|
|
|
|
;; org settings |
|
|
|
|
(use-package org |
|
|
|
|
:mode ("\\.org\\'" . org-mode) |
|
|
|
|
:config (define-key org-mode-map (kbd "C-c C-r") verb-command-map)) |
|
|
|
|
|
|
|
|
|
(setq org-replace-disputed-keys t) |
|
|
|
|
(define-key global-map "\C-cl" 'org-store-link) |
|
|
|
|
(define-key global-map "\C-ca" 'org-agenda) |
|
|
|
|
(setq org-enforce-todo-dependencies t) |
|
|
|
|
(setq org-enforce-todo-checkbox-dependencies t) |
|
|
|
|
(setq org-log-done t) |
|
|
|
|
(setq org-startup-with-inline-images t) |
|
|
|
|
(setq org-startup-with-latex-preview t) |
|
|
|
|
(setq-default org-display-custom-times t) |
|
|
|
|
(setq org-time-stamp-custom-formats '("<%a %b %e %Y>" . "<%a %b %e %Y %H:%M>")) |
|
|
|
|
|
|
|
|
|
; agenda settings |
|
|
|
|
(setq org-agenda-include-diary t) |
|
|
|
|
(setq org-agenda-skip-scheduled-if-done t) |
|
|
|
|
(setq org-agenda-skip-deadline-if-done t) |
|
|
|
|
(setq org-agenda-todo-ignore-deadlines t) |
|
|
|
|
(setq org-agenda-todo-ignore-with-date t) |
|
|
|
|
(setq org-agenda-todo-ignore-scheduled t) |
|
|
|
|
(setq org-agenda-start-on-weekday nil) |
|
|
|
|
(setq org-agenda-start-day "+0d") |
|
|
|
|
|
|
|
|
|
(add-hook 'diary-list-entries-hook 'diary-sort-entries t) |
|
|
|
|
:bind |
|
|
|
|
(:map org-mode-map |
|
|
|
|
("C-c C-r" . verb-command-map) |
|
|
|
|
("+" . 'trigger-org-company-complete)) |
|
|
|
|
(:map global-map |
|
|
|
|
("C-c a" . org-agenda) |
|
|
|
|
("C-c l" . org-store-link)) |
|
|
|
|
:config |
|
|
|
|
(setq org-replace-disputed-keys t |
|
|
|
|
org-enforce-todo-dependencies t |
|
|
|
|
org-enforce-todo-checkbox-dependencies t |
|
|
|
|
org-log-done nil |
|
|
|
|
org-clock-idle-time 10 |
|
|
|
|
org-startup-with-inline-images t |
|
|
|
|
org-startup-folded t |
|
|
|
|
org-pretty-entities t |
|
|
|
|
org-hide-leading-stars t |
|
|
|
|
org-hide-emphasis-markers t |
|
|
|
|
org-fontify-whole-heading-line t |
|
|
|
|
org-fontify-done-headline t |
|
|
|
|
org-fontify-quote-and-verse-blocks t |
|
|
|
|
org-startup-with-latex-preview t |
|
|
|
|
org-src-tab-acts-natively t |
|
|
|
|
org-src-fontify-natively t |
|
|
|
|
org-confirm-elisp-link-function nil |
|
|
|
|
org-display-custom-times t |
|
|
|
|
org-time-stamp-custom-formats '("<%a %b %e %Y>" . "<%a %b %e %Y %H:%M>") |
|
|
|
|
org-tag-alist '(("bug" . ?b) ("feature" . ?f) ("polish" . ?p) ("optimization" . ?o) ("devops" . ?d) ("reading" . ?r) ("writing" . ?w)) |
|
|
|
|
org-agenda-custom-commands |
|
|
|
|
'(("p" "Projects" todo "TODO" |
|
|
|
|
((org-agenda-files '("~/Documents/org-mode/projects.org")) |
|
|
|
|
(org-agenda-sorting-strategy '(priority-down))) |
|
|
|
|
)) |
|
|
|
|
org-agenda-skip-scheduled-if-done t |
|
|
|
|
org-agenda-skip-deadline-if-done t |
|
|
|
|
org-agenda-todo-ignore-deadlines t |
|
|
|
|
org-agenda-todo-ignore-with-date t |
|
|
|
|
org-agenda-todo-ignore-scheduled t |
|
|
|
|
org-agenda-start-on-weekday nil |
|
|
|
|
org-agenda-skip-additional-timestamps-same-entry nil |
|
|
|
|
org-agenda-compact-blocks t |
|
|
|
|
org-agenda-block-separator nil |
|
|
|
|
org-agenda-start-day "+0d") |
|
|
|
|
:hook |
|
|
|
|
(org-agenda-mode . origami-mode) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(use-package org-super-agenda |
|
|
|
|
:after org |
|
|
|
|
:ensure t |
|
|
|
|
:config |
|
|
|
|
(setq org-super-agenda-groups |
|
|
|
|
'( |
|
|
|
|
(:auto-category t) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
(use-package dashboard |
|
|
|
|
:after org |
|
|
|
|
:init |
|
|
|
|
(setq dashboard-set-footer nil |
|
|
|
|
dashboard-org-agenda-categories '("Tasks" "appointments") |
|
|
|
|
dashboard-center-content t |
|
|
|
|
dashboard-set-heading-icons t |
|
|
|
|
dashboard-set-file-icons t |
|
|
|
|
initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) |
|
|
|
|
:ensure t |
|
|
|
|
:config (dashboard-setup-startup-hook)) |
|
|
|
|
|
|
|
|
|
(use-package org-projectile |
|
|
|
|
:after org |
|
|
|
|
:bind ("C-c n p" . org-projectile-project-todo-completing-read) |
|
|
|
|
:config |
|
|
|
|
(progn |
|
|
|
|
(setq org-projectile-projects-file |
|
|
|
|
"~/Documents/org-mode/projects.org") |
|
|
|
|
;;(setq org-agenda-files (append org-agenda-files (org-projectile-todo-files))) |
|
|
|
|
(push (org-projectile-project-todo-entry) org-capture-templates)) |
|
|
|
|
:ensure t) |
|
|
|
|
|
|
|
|
|
(add-hook 'text-mode-hook 'turn-on-visual-line-mode) |
|
|
|
|
(use-package org-alert |
|
|
|
|
:ensure t |
|
|
|
|
:config |
|
|
|
|
(org-alert-enable) |
|
|
|
|
(setq alert-default-style 'libnotify |
|
|
|
|
org-alert-notify-cutoff 300 |
|
|
|
|
)) |
|
|
|
|
|
|
|
|
|
(add-hook 'org-mode-hook 'flyspell-mode) |
|
|
|
|
|
|
|
|
|
(setq org-agenda-files |
|
|
|
|
(list |
|
|
|
|
"~/Documents/org-mode/school.org" |
|
|
|
|
"~/Documents/org-mode/personal.org" |
|
|
|
|
"~/Documents/org-mode/tweaking.org" |
|
|
|
|
"~/Documents/org-mode/projects.org" |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(use-package org-roam |
|
|
|
|
:ensure t |
|
|
|
|
:after org |
|
|
|
|
:init |
|
|
|
|
(setq org-roam-v2-ack t) |
|
|
|
|
:bind* (("C-c n l" . org-roam-buffer-toggle) |
|
|
|
|
("C-c n f" . org-roam-node-find) |
|
|
|
|
("C-c n c" . org-roam-dailies-capture-today)) |
|
|
|
|
:bind (:map org-mode-map |
|
|
|
|
("C-c n i" . org-roam-node-insert)) |
|
|
|
|
:custom |
|
|
|
|
(org-roam-directory "~/Documents/slipbox") |
|
|
|
|
(org-roam-capture-templates |
|
|
|
|
'(("d" "default" plain |
|
|
|
|
"%?" |
|
|
|
|
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") |
|
|
|
|
:unnarrowed t) |
|
|
|
|
("e" "encrypted" plain "%?" |
|
|
|
|
:target (file+head "${slug}.org.gpg" |
|
|
|
|
"#+title: ${title}\n") |
|
|
|
|
:unnarrowed t) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
(org-roam-completion-everywhere t) |
|
|
|
|
(org-roam-completion-system 'default) |
|
|
|
|
(org-roam-dailies-directory "daily/") |
|
|
|
|
:config |
|
|
|
|
(use-package org-roam-dailies) |
|
|
|
|
(org-roam-setup) |
|
|
|
|
(org-roam-db-autosync-mode)) |
|
|
|
|
|
|
|
|
|
(use-package rustic |
|
|
|
|
:config |
|
|
|
|
(setq rustic-cargo-clippy-trigger-fix 'on-compile)) |
|
|
|
|
|
|
|
|
|
;;(push 'rustic-clippy flycheck-checkers) |
|
|
|
|
|
|
|
|
|
(use-package all-the-icons) |
|
|
|
|
|
|
|
|
|
(defun notify-send (title msg) |
|
|
|
|
(interactive) |
|
|
|
|
;; only the first line of the message is returned |
|
|
|
|
;; (subseq msg 0 (search msg "\n")) |
|
|
|
|
(shell-command (concat "notify-send '" title "' '" msg "'"))) |
|
|
|
|
|
|
|
|
|
(setq TeX-auto-save t) |
|
|
|
|
(setq TeX-parse-self t) |
|
|
|
|
(setq-default TeX-master nil) |
|
|
|
|
|
|
|
|
|
;;(use-package org-notify) |
|
|
|
|
;;(org-notify-start) |
|
|
|
|
|
|
|
|
|
;;(org-notify-add 'appt |
|
|
|
|
;; '(:time "15m" :period "5m" :duration "30s" :action (notify-send org-notify-action-message))) |
|
|
|
|
|
|
|
|
|
;;(add-hook 'org-mode-hook 'flyspell-mode 1) |
|
|
|
|
;;(setq appt-disp-window-function (function facade-notify-appt)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(cond ((file-exists-p "~/.emacs_home.el") (load "~/.emacs_home.el"))) |
|
|
|
|
(cond ((file-exists-p "~/.emacs_work.el") (load "~/.emacs_work.el"))) |
|
|
|
|
;;(load-library ".emacs_home") |
|
|
|
|
;;(cond ((file-exists-p "~/.emacs_home.el") (load "~/.emacs_home.el"))) |
|
|
|
|
;;(cond ((file-exists-p "~/.emacs_work.el") (load "~/.emacs_work.el"))) |
|
|
|
|
;;; .emacs ends here |
|
|
|
|