dotfiles

Linux and macOS dotfiles
git clone https://github.com/michaelneuper/dotfiles.git
README | Files | Log | Refs

commit 2e74ead39a8f4dd95f281dfec593fb6246c5fc07
parent fd0a831f642c367043098dc29cbc84073d1522ce
Author: Michael Neuper <73108749+michaelneuper@users.noreply.github.com>
Date:   Thu, 15 Jun 2023 19:31:42 +0200

Add ligatures and move configs into use-package!

Diffstat:
M.config/doom/config.el | 308++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
M.config/doom/config.org | 380+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
2 files changed, 496 insertions(+), 192 deletions(-)

diff --git a/.config/doom/config.el b/.config/doom/config.el @@ -7,7 +7,7 @@ ;; The exceptions to this rule: ;; - Setting file/directory variables (like `org-directory') ;; - Setting variables which explicitly tell you to set them before their -;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). +;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). ;; - Setting doom variables (which start with 'doom-' or '+'). ;; Here are some additional functions/macros that will help you configure Doom. @@ -16,8 +16,8 @@ ;; - `use-package!' for configuring packages ;; - `after!' for running code after a package has loaded ;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. +;; this file. Emacs searches the `load-path' when you load packages with +;; `require' or `use-package'. ;; - `map!' for binding new keys ;; To get information about any of these functions/macros, move the cursor over @@ -40,6 +40,8 @@ (setq user-full-name "Michael Neuper" user-mail-address "michael@michaelneuper.com") +(load! "api-keys.el") + (setq evil-split-window-below t evil-vsplit-window-right t) @@ -51,7 +53,8 @@ (custom-set-faces! '(doom-dashboard-banner :inherit default) - '(doom-dashboard-loaded :inherit default)) + '(doom-dashboard-loaded :inherit default) + '(dashboard-banner :inherrit default)) (custom-set-faces! '(dashboard-startup-banner :inherit default)) @@ -61,8 +64,8 @@ (setq display-fill-column-indicator-column 80) (add-hook 'prog-mode-hook #'display-fill-column-indicator-mode) -(when (version< "29.0.50" emacs-version) - (pixel-scroll-precision-mode)) +;; (when (version< "29.0.50" emacs-version) +;; (pixel-scroll-precision-mode)) ;; (unless (eq system-type 'darwin) ;; (require 'good-scroll) @@ -92,25 +95,100 @@ :list nil ) +(after! org + (setq org-ellipsis " ▾ ") + (appendq! +ligatures-extra-symbols + `(:checkbox "☐" + :pending "◼" + :checkedbox "☑" + :list_property "∷" + :em_dash "—" + :ellipses "…" + :arrow_right "→" + :arrow_left "←" + :begin_quote "❝" + :end_quote "❞" + :header "›" + :priority_a ,(propertize "⚑" 'face 'all-the-icons-red) + :priority_b ,(propertize "⬆" 'face 'all-the-icons-orange) + :priority_c ,(propertize "■" 'face 'all-the-icons-yellow) + :priority_d ,(propertize "⬇" 'face 'all-the-icons-green) + :priority_e ,(propertize "❓" 'face 'all-the-icons-blue) + :roam_tags nil + :filetags nil)) + (set-ligatures! 'org-mode + :merge t + :checkbox "[ ]" + :pending "[-]" + :checkedbox "[X]" + :list_property "::" + :em_dash "---" + :ellipsis "..." + :arrow_right "->" + :arrow_left "<-" + :title "#+title:" + :subtitle "#+subtitle:" + :author "#+author:" + :date "#+date:" + :property "#+property:" + :options "#+options:" + :startup "#+startup:" + :macro "#+macro:" + :html_head "#+html_head:" + :html "#+html:" + :latex_class "#+latex_class:" + :latex_header "#+latex_header:" + :beamer_header "#+beamer_header:" + :latex "#+latex:" + :attr_latex "#+attr_latex:" + :attr_html "#+attr_html:" + :attr_org "#+attr_org:" + :begin_quote "#+begin_quote" + :end_quote "#+end_quote" + :caption "#+caption:" + :header "#+header:" + :begin_export "#+begin_export" + :end_export "#+end_export" + :results "#+RESULTS:" + :property ":PROPERTIES:" + :end ":END:" + :priority_a "[#A]" + :priority_b "[#B]" + :priority_c "[#C]" + :priority_d "[#D]" + :priority_e "[#E]" + :roam_tags "#+roam_tags:" + :filetags "#+filetags:") + (plist-put +ligatures-extra-symbols :name "⁍")) + (use-package! info-colors :commands (info-colors-fontify-node)) (add-hook 'Info-selection-hook 'info-colors-fontify-node) +(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) (setq doom-fallback-buffer-name "*dashboard*") (use-package! dashboard - :ensure t + :custom-face + (dashboard-heading ((t (:inherit (font-lock-string-face bold))))) + (dashboard-banner ((t (:inherit default)))) + :hook + (dashboard-mode . (lambda () + ;; Enable `page-break-lines-mode' + (when (fboundp 'page-break-lines-mode) + (page-break-lines-mode 1)))) :init - (setq dashboard-items '((recents . 3) + (setq dashboard-items '((recents . 4) (projects . 3) (bookmarks . 5)) dashboard-show-shortcuts t dashboard-center-content t - dashboard-startup-banner (concat doom-user-dir - "doom-banners/splashes/emacs/M-x_butterfly.png") - dashboard-banner-logo-title "Welcome back to Emacs!" + dashboard-startup-banner 'official + ;; dashboard-startup-banner (concat doom-user-dir "doom-banners/splashes/emacs/emacs-e-logo.png") + dashboard-banner-logo-title "Welcome Back to Emacs!" + dashboard-page-separator "\n\f\n" dashboard-display-icons-p t dashboard-set-file-icons t dashboard-set-heading-icons t @@ -134,14 +212,25 @@ :config (dashboard-setup-startup-hook)) -(nyan-mode) -(setq nyan-animate-nyancat t - nyan-wavy-trail t) +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/elpa") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/.local/etc/workspaces/autosave") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/bookmarks") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/recentf") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/ido.last") +(add-to-list 'recentf-exclude "~/.cache/treemacs-persist") -(setq doom-modeline-enable-word-count t - doom-modeline-persp-name t - doom-modeline-persp-icon t - doom-modeline-major-mode-icon t) +(use-package! nyan-mode + :init + (nyan-mode) + :config + (setq nyan-animate-nyancat t + nyan-wavy-trail t)) + +(after! doom-modeline + (setq doom-modeline-enable-word-count t + doom-modeline-persp-name t + doom-modeline-persp-icon t + doom-modeline-major-mode-icon t)) (after! centaur-tabs :ensure t @@ -185,6 +274,10 @@ (":\\([A-Za-z0-9]+\\)" . ((lambda (tag) (svg-tag-make tag)))) (":\\([A-Za-z0-9]+[ \-]\\)" . ((lambda (tag) tag))) + ;; Org tags #+author + ("#\+\\([A-Za-z0-9]+\\)" . ((lambda (tag) (svg-tag-make tag)))) + ("#\+\\([A-Za-z0-9]+[ \-]\\)" . ((lambda (tag) tag))) + ;; Task priority [#A] [#B] [#C] ("\\[#[A-Z]\\]" . ( (lambda (tag) (svg-tag-make tag :face 'org-priority @@ -234,17 +327,22 @@ ((lambda (tag) (svg-tag-make tag :end -1 :inverse t :crop-left t :margin 0 :face 'org-date)))))) -(add-hook! 'org-mode-hook '(svg-tag-mode t)) +;; (add-hook! 'org-mode-hook '(svg-tag-mode t)) -(setq lsp-enable-symbol-highlighting t - lsp-ui-doc-enable t - lsp-lens-enable t - lsp-headerline-breadcrumb-enable t - lsp-modeline-code-actions-enable t - lsp-diagnostics-provider :flycheck - lsp-ui-sideline-enable t - lsp-completion-show-detail t - lsp-completion-show-kind t) +(use-package! lsp-mode + :init + (setq lsp-enable-symbol-highlighting t + lsp-lens-enable t + lsp-headerline-breadcrumb-enable t + lsp-modeline-code-actions-enable t + lsp-diagnostics-provider :flycheck + lsp-completion-show-detail t + lsp-completion-show-kind t)) + +(use-package! lsp-ui + :init + (setq lsp-ui-doc-enable t + lsp-ui-sideline-enable t)) (add-hook 'after-init-hook 'global-company-mode) ;; from modules/completion/company/config.el @@ -258,13 +356,28 @@ company-dabbrev-ignore-case nil) [...]) -(require 'org) -(add-to-list 'org-latex-packages-alist '("" "amsmath" t)) -(add-to-list 'org-latex-packages-alist '("" "amssymb" t)) -(setq org-preview-latex-default-process 'dvipng) +;; (require 'company-tabnine) +;; (add-to-list 'company-backends #'company-tabnine) + +;; (setq company-idle-delay 0 +;; company-show-numbers t) + +(add-hook! 'latex-mode-hook + (setq TeX-engine 'xelatex) 99) + +(setq TeX-auto-save t + TeX-parse-self t) +(setq-default TeX-master nil) + +(setq +latex-viewers '(pdf-tools zathura)) + +(setq auto-revert-interval 0.5) + +(map! :map cdlatex-mode-map + :i "TAB" #'cdlatex-tab) (map! :after latex - :map latex-mode-map + :map cdlatex-mode-map :localleader :desc "Insert math symbol" "i" #'cdlatex-math-symbol @@ -294,12 +407,25 @@ tab-width 4 indent-tabs-mode nil)))) -(setq lsp-java-format-on-type-enabled nil - lsp-java-format-enabled nil) -;; Set path to the language server executable -;; (set-lsp-priority! 'eclipse-jdt .80) -;; (setq lsp-java-server-install-dir "/bin/jdtls") -;; (setq lsp-java-workspace-dir "~/Projects/java") +(map! :after lsp-java + :map java-mode-map + :localleader + :desc "Add missings imports" + "i" #'lsp-java-add-import + :desc "Organize imports" + "o" #'lsp-java-organize-imports + :desc "Build project" + "b" #'lsp-java-build-project + :desc "Add toString()" + "t" #'lsp-java-generate-to-string + :desc "Generate getters and setters" + "g" #'lsp-java-generate-getters-and-setters + :desc "Extract to method" + "m" #'lsp-java-extract-method + :desc "Extract to constant" + "c" #'lsp-java-extract-to-constant + :desc "Extract to local variable" + "v" #'lsp-java-extract-to-local-variable) (after! text-mode (add-hook! 'text-mode-hook @@ -307,53 +433,56 @@ (with-silent-modifications (ansi-color-apply-on-region (point-min) (point-max) t))))) -(require 'smudge) -(load! "spotify-credentials.el") -(setq smudge-status-location 'modeline) - -(map! :leader - (:prefix ("m" . "music") - :desc "Toggle shuffle" - "s" #'smudge-controller-toggle-shuffle - :desc "Toggle repeat" - "r" #'smudge-controller-toggle-repeat - :desc "Play/pause" - "SPC" #'smudge-controller-toggle-play - :desc "Next track" - "f" #'smudge-controller-next-track - :desc "Previous track" - "b" #'smudge-controller-previous-track - :desc "My playlists" - "m" #'smudge-my-playlists - :desc "Select playback device" - "d" #'smudge-select-device)) - -(map! :leader - (:prefix ("m p" . "playlists") - :desc "Featured playlists" - "f" #'smudge-featured-playlists - :desc "Search playlists" - "s" #'smudge-playlist-search - :desc "Show user's playlists" - "u" #'smudge-user-playlists - :desc "Create new playlist" - "c" #'smudge-create-playlist)) - -(map! :leader - (:prefix ("m t" . "tracks") - :desc "List recently played tracks" - "r" #'smudge-recently-played - :desc "Search for trakcs" - "s" #'smudge-track-search)) - -(map! :leader - (:prefix ("m v" . "volume") - :desc "Increase volume" - "u" #'smudge-controller-volume-up - :desc "Decrease volume" - "d" #'smudge-controller-volume-down - :desc "Toggle mute" - "m" #'smudge-controller-voume-mute-unmute)) +(use-package! smudge + :init + (setq smudge-status-location 'modeline + smudge-transport 'connect) ; requires spotify premium + :config + ;; General keybindings + (map! :leader + (:prefix ("m" . "music") + :desc "Toggle shuffle" + "s" #'smudge-controller-toggle-shuffle + :desc "Toggle repeat" + "r" #'smudge-controller-toggle-repeat + :desc "Play/pause" + "SPC" #'smudge-controller-toggle-play + :desc "Next track" + "f" #'smudge-controller-next-track + :desc "Next track" + "n" #'smudge-controller-next-track + :desc "Previous track" + "b" #'smudge-controller-previous-track + :desc "My playlists" + "m" #'smudge-my-playlists + :desc "Select playback device")) + ;; Playlist keybindings + (map! :leader + (:prefix ("m p" . "playlists") + :desc "Featured playlists" + "f" #'smudge-featured-playlists + :desc "Search playlists" + "s" #'smudge-playlist-search + :desc "Show user's playlists" + "u" #'smudge-user-playlists + :desc "Create new playlist" + "c" #'smudge-create-playlist)) + ;; Track keybindings + (map! :leader + (:prefix ("m t" . "tracks") + :desc "List recently played tracks" + "r" #'smudge-recently-played + :desc "Search for trakcs" + "s" #'smudge-track-search)) + ;; Volume keybindings + (map! :leader + (:prefix ("m v" . "volume") + :desc "Increase volume" + "u" #'smudge-controller-volume-up + :desc "Decrease volume" + "d" #'smudge-controller-volume-down + :desc "Toggle mute" + "m" #'smudge-controller-voume-mute-unmute))) (setq undo-limit 80000000) @@ -364,6 +493,11 @@ org-startup-with-inline-images t org-startup-with-latex-preview t) +(require 'org) +(add-to-list 'org-latex-packages-alist '("" "amsmath" t)) +(add-to-list 'org-latex-packages-alist '("" "amssymb" t)) +(setq org-preview-latex-default-process 'dvipng) + (after! org (setq org-agenda-files '("~/Org/" "~/Documents/Org/agenda.org"))) @@ -396,4 +530,4 @@ org-roam-ui-update-on-save t org-roam-ui-open-on-start t)) -(setq org-roam-database-connector 'sqlite3) +;; (setq org-roam-database-connector 'sqlite3) diff --git a/.config/doom/config.org b/.config/doom/config.org @@ -12,7 +12,7 @@ ;; The exceptions to this rule: ;; - Setting file/directory variables (like `org-directory') ;; - Setting variables which explicitly tell you to set them before their -;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). +;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). ;; - Setting doom variables (which start with 'doom-' or '+'). ;; Here are some additional functions/macros that will help you configure Doom. @@ -21,8 +21,8 @@ ;; - `use-package!' for configuring packages ;; - `after!' for running code after a package has loaded ;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. +;; this file. Emacs searches the `load-path' when you load packages with +;; `require' or `use-package'. ;; - `map!' for binding new keys ;; To get information about any of these functions/macros, move the cursor over @@ -63,6 +63,14 @@ Kill emacs without confirming. user-mail-address "michael@michaelneuper.com") #+end_src +** API Keys +Import API keys used for various programs. + +#+begin_src emacs-lisp +(load! "api-keys.el") +#+end_src + + * Window Management ** Split Window Behaviour Focus split window. @@ -94,7 +102,8 @@ Use doom-one theme. #+begin_src emacs-lisp (custom-set-faces! '(doom-dashboard-banner :inherit default) - '(doom-dashboard-loaded :inherit default)) + '(doom-dashboard-loaded :inherit default) + '(dashboard-banner :inherrit default)) (custom-set-faces! '(dashboard-startup-banner :inherit default)) @@ -119,8 +128,8 @@ Display column indicator after 80 characters in programming mode. Enable pixel precision scrolling. #+begin_src emacs-lisp -(when (version< "29.0.50" emacs-version) - (pixel-scroll-precision-mode)) +;; (when (version< "29.0.50" emacs-version) +;; (pixel-scroll-precision-mode)) #+end_src Enable smooth scrolling @@ -168,6 +177,76 @@ Disable certain ligatures. ) #+end_src +Enable certain ligatures. + +#+begin_src emacs-lisp +(after! org + (setq org-ellipsis " ▾ ") + (appendq! +ligatures-extra-symbols + `(:checkbox "☐" + :pending "◼" + :checkedbox "☑" + :list_property "∷" + :em_dash "—" + :ellipses "…" + :arrow_right "→" + :arrow_left "←" + :begin_quote "❝" + :end_quote "❞" + :header "›" + :priority_a ,(propertize "⚑" 'face 'all-the-icons-red) + :priority_b ,(propertize "⬆" 'face 'all-the-icons-orange) + :priority_c ,(propertize "■" 'face 'all-the-icons-yellow) + :priority_d ,(propertize "⬇" 'face 'all-the-icons-green) + :priority_e ,(propertize "❓" 'face 'all-the-icons-blue) + :roam_tags nil + :filetags nil)) + (set-ligatures! 'org-mode + :merge t + :checkbox "[ ]" + :pending "[-]" + :checkedbox "[X]" + :list_property "::" + :em_dash "---" + :ellipsis "..." + :arrow_right "->" + :arrow_left "<-" + :title "#+title:" + :subtitle "#+subtitle:" + :author "#+author:" + :date "#+date:" + :property "#+property:" + :options "#+options:" + :startup "#+startup:" + :macro "#+macro:" + :html_head "#+html_head:" + :html "#+html:" + :latex_class "#+latex_class:" + :latex_header "#+latex_header:" + :beamer_header "#+beamer_header:" + :latex "#+latex:" + :attr_latex "#+attr_latex:" + :attr_html "#+attr_html:" + :attr_org "#+attr_org:" + :begin_quote "#+begin_quote" + :end_quote "#+end_quote" + :caption "#+caption:" + :header "#+header:" + :begin_export "#+begin_export" + :end_export "#+end_export" + :results "#+RESULTS:" + :property ":PROPERTIES:" + :end ":END:" + :priority_a "[#A]" + :priority_b "[#B]" + :priority_c "[#C]" + :priority_d "[#D]" + :priority_e "[#E]" + :roam_tags "#+roam_tags:" + :filetags "#+filetags:") + (plist-put +ligatures-extra-symbols :name "⁍")) +#+end_src + *** Info-Colors #+begin_src emacs-lisp (use-package! info-colors @@ -181,6 +260,7 @@ Disable certain ligatures. Switch to dashboard from doom-dashboard. #+begin_src emacs-lisp +(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) (setq doom-fallback-buffer-name "*dashboard*") #+end_src @@ -188,16 +268,24 @@ Configure dashboard #+begin_src emacs-lisp (use-package! dashboard - :ensure t + :custom-face + (dashboard-heading ((t (:inherit (font-lock-string-face bold))))) + (dashboard-banner ((t (:inherit default)))) + :hook + (dashboard-mode . (lambda () + ;; Enable `page-break-lines-mode' + (when (fboundp 'page-break-lines-mode) + (page-break-lines-mode 1)))) :init - (setq dashboard-items '((recents . 3) + (setq dashboard-items '((recents . 4) (projects . 3) (bookmarks . 5)) dashboard-show-shortcuts t dashboard-center-content t - dashboard-startup-banner (concat doom-user-dir - "doom-banners/splashes/emacs/M-x_butterfly.png") - dashboard-banner-logo-title "Welcome back to Emacs!" + dashboard-startup-banner 'official + ;; dashboard-startup-banner (concat doom-user-dir "doom-banners/splashes/emacs/emacs-e-logo.png") + dashboard-banner-logo-title "Welcome Back to Emacs!" + dashboard-page-separator "\n\f\n" dashboard-display-icons-p t dashboard-set-file-icons t dashboard-set-heading-icons t @@ -222,22 +310,37 @@ Configure dashboard (dashboard-setup-startup-hook)) #+end_src +Exclude files from showing in recents. + +#+begin_src emacs-lisp +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/elpa") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/.local/etc/workspaces/autosave") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/bookmarks") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/recentf") +(add-to-list 'recentf-exclude "~/Repos/dotfiles/.config/emacs/ido.last") +(add-to-list 'recentf-exclude "~/.cache/treemacs-persist") +#+end_src + ** Modeline Enable nyan-cat in modeline. #+begin_src emacs-lisp -(nyan-mode) -(setq nyan-animate-nyancat t - nyan-wavy-trail t) +(use-package! nyan-mode + :init + (nyan-mode) + :config + (setq nyan-animate-nyancat t + nyan-wavy-trail t)) #+end_src Enable extra icons in doom-modeline. #+begin_src emacs-lisp -(setq doom-modeline-enable-word-count t - doom-modeline-persp-name t - doom-modeline-persp-icon t - doom-modeline-major-mode-icon t) +(after! doom-modeline + (setq doom-modeline-enable-word-count t + doom-modeline-persp-name t + doom-modeline-persp-icon t + doom-modeline-major-mode-icon t)) #+end_src ** Tabs @@ -254,7 +357,8 @@ Enable extra icons in doom-modeline. (centaur-tabs-mode t) (centaur-tabs-group-by-projectile-project)) #+end_src -** SVG Tags + +** TODO SVG Tags Enable SVG tags in org mode. #+begin_src emacs-lisp @@ -288,6 +392,10 @@ Enable SVG tags in org mode. (":\\([A-Za-z0-9]+\\)" . ((lambda (tag) (svg-tag-make tag)))) (":\\([A-Za-z0-9]+[ \-]\\)" . ((lambda (tag) tag))) + ;; Org tags #+author + ("#\+\\([A-Za-z0-9]+\\)" . ((lambda (tag) (svg-tag-make tag)))) + ("#\+\\([A-Za-z0-9]+[ \-]\\)" . ((lambda (tag) tag))) + ;; Task priority [#A] [#B] [#C] ("\\[#[A-Z]\\]" . ( (lambda (tag) (svg-tag-make tag :face 'org-priority @@ -337,21 +445,27 @@ Enable SVG tags in org mode. ((lambda (tag) (svg-tag-make tag :end -1 :inverse t :crop-left t :margin 0 :face 'org-date)))))) -(add-hook! 'org-mode-hook '(svg-tag-mode t)) +;; (add-hook! 'org-mode-hook '(svg-tag-mode t)) #+end_src * Programming ** LSP #+begin_src emacs-lisp -(setq lsp-enable-symbol-highlighting t - lsp-ui-doc-enable t - lsp-lens-enable t - lsp-headerline-breadcrumb-enable t - lsp-modeline-code-actions-enable t - lsp-diagnostics-provider :flycheck - lsp-ui-sideline-enable t - lsp-completion-show-detail t - lsp-completion-show-kind t) + +(use-package! lsp-mode + :init + (setq lsp-enable-symbol-highlighting t + lsp-lens-enable t + lsp-headerline-breadcrumb-enable t + lsp-modeline-code-actions-enable t + lsp-diagnostics-provider :flycheck + lsp-completion-show-detail t + lsp-completion-show-kind t)) + +(use-package! lsp-ui + :init + (setq lsp-ui-doc-enable t + lsp-ui-sideline-enable t)) #+end_src ** Company @@ -369,20 +483,64 @@ Enable SVG tags in org mode. [...]) #+end_src +** Tabnine +Enable tabnine. + +#+begin_src emacs-lisp +;; (require 'company-tabnine) +;; (add-to-list 'company-backends #'company-tabnine) +#+end_src + +Configure tabnine. + +#+begin_src emacs-lisp +;; (setq company-idle-delay 0 +;; company-show-numbers t) +#+end_src + + ** Languages *** LaTeX +Change LaTeX compiler to XeLaTeX. + #+begin_src emacs-lisp -(require 'org) -(add-to-list 'org-latex-packages-alist '("" "amsmath" t)) -(add-to-list 'org-latex-packages-alist '("" "amssymb" t)) -(setq org-preview-latex-default-process 'dvipng) +(add-hook! 'latex-mode-hook + (setq TeX-engine 'xelatex) 99) +#+end_src + + +Make AUCTeX aware of syle files and multi-file documents right away. + +#+begin_src emacs-lisp +(setq TeX-auto-save t + TeX-parse-self t) +(setq-default TeX-master nil) +#+end_src + +Reorder list of pdf viewers. + +#+begin_src emacs-lisp +(setq +latex-viewers '(pdf-tools zathura)) +#+end_src + +Make pdf-tools automatically update the buffer. + +#+begin_src emacs-lisp +(setq auto-revert-interval 0.5) +#+end_src + +Use cdlatex completion indtead of yasnippet. + +#+begin_src emacs-lisp +(map! :map cdlatex-mode-map + :i "TAB" #'cdlatex-tab) #+end_src CDLaTeX keybindings. #+begin_src emacs-lisp (map! :after latex - :map latex-mode-map + :map cdlatex-mode-map :localleader :desc "Insert math symbol" "i" #'cdlatex-math-symbol @@ -425,13 +583,30 @@ Configure LSP java. (setq c-basic-offset 4 tab-width 4 indent-tabs-mode nil)))) +#+end_src + +Keybindings for java. -(setq lsp-java-format-on-type-enabled nil - lsp-java-format-enabled nil) -;; Set path to the language server executable -;; (set-lsp-priority! 'eclipse-jdt .80) -;; (setq lsp-java-server-install-dir "/bin/jdtls") -;; (setq lsp-java-workspace-dir "~/Projects/java") +#+begin_src emacs-lisp +(map! :after lsp-java + :map java-mode-map + :localleader + :desc "Add missings imports" + "i" #'lsp-java-add-import + :desc "Organize imports" + "o" #'lsp-java-organize-imports + :desc "Build project" + "b" #'lsp-java-build-project + :desc "Add toString()" + "t" #'lsp-java-generate-to-string + :desc "Generate getters and setters" + "g" #'lsp-java-generate-getters-and-setters + :desc "Extract to method" + "m" #'lsp-java-extract-method + :desc "Extract to constant" + "c" #'lsp-java-extract-to-constant + :desc "Extract to local variable" + "v" #'lsp-java-extract-to-local-variable) #+end_src Display ansi colour codes in java output. @@ -444,72 +619,59 @@ Display ansi colour codes in java output. (ansi-color-apply-on-region (point-min) (point-max) t))))) #+end_src * Spotify -Enable smudge. - -#+begin_src emacs-lisp -(require 'smudge) -(load! "spotify-credentials.el") -(setq smudge-status-location 'modeline) -#+end_src - -Keybindings - -#+begin_src emacs-lisp -(map! :leader - (:prefix ("m" . "music") - :desc "Toggle shuffle" - "s" #'smudge-controller-toggle-shuffle - :desc "Toggle repeat" - "r" #'smudge-controller-toggle-repeat - :desc "Play/pause" - "SPC" #'smudge-controller-toggle-play - :desc "Next track" - "f" #'smudge-controller-next-track - :desc "Previous track" - "b" #'smudge-controller-previous-track - :desc "My playlists" - "m" #'smudge-my-playlists - :desc "Select playback device" - "d" #'smudge-select-device)) -#+end_src - -Playlist keybindings. - -#+begin_src emacs-lisp -(map! :leader - (:prefix ("m p" . "playlists") - :desc "Featured playlists" - "f" #'smudge-featured-playlists - :desc "Search playlists" - "s" #'smudge-playlist-search - :desc "Show user's playlists" - "u" #'smudge-user-playlists - :desc "Create new playlist" - "c" #'smudge-create-playlist)) -#+end_src - -Track keybindings. - -#+begin_src emacs-lisp -(map! :leader - (:prefix ("m t" . "tracks") - :desc "List recently played tracks" - "r" #'smudge-recently-played - :desc "Search for trakcs" - "s" #'smudge-track-search)) -#+end_src - -Volume keybindings. +Enable and configure smudge. #+begin_src emacs-lisp -(map! :leader - (:prefix ("m v" . "volume") - :desc "Increase volume" - "u" #'smudge-controller-volume-up - :desc "Decrease volume" - "d" #'smudge-controller-volume-down - :desc "Toggle mute" - "m" #'smudge-controller-voume-mute-unmute)) +(use-package! smudge + :init + (setq smudge-status-location 'modeline + smudge-transport 'connect) ; requires spotify premium + :config + ;; General keybindings + (map! :leader + (:prefix ("m" . "music") + :desc "Toggle shuffle" + "s" #'smudge-controller-toggle-shuffle + :desc "Toggle repeat" + "r" #'smudge-controller-toggle-repeat + :desc "Play/pause" + "SPC" #'smudge-controller-toggle-play + :desc "Next track" + "f" #'smudge-controller-next-track + :desc "Next track" + "n" #'smudge-controller-next-track + :desc "Previous track" + "b" #'smudge-controller-previous-track + :desc "My playlists" + "m" #'smudge-my-playlists + :desc "Select playback device")) + ;; Playlist keybindings + (map! :leader + (:prefix ("m p" . "playlists") + :desc "Featured playlists" + "f" #'smudge-featured-playlists + :desc "Search playlists" + "s" #'smudge-playlist-search + :desc "Show user's playlists" + "u" #'smudge-user-playlists + :desc "Create new playlist" + "c" #'smudge-create-playlist)) + ;; Track keybindings + (map! :leader + (:prefix ("m t" . "tracks") + :desc "List recently played tracks" + "r" #'smudge-recently-played + :desc "Search for trakcs" + "s" #'smudge-track-search)) + ;; Volume keybindings + (map! :leader + (:prefix ("m v" . "volume") + :desc "Increase volume" + "u" #'smudge-controller-volume-up + :desc "Decrease volume" + "d" #'smudge-controller-volume-down + :desc "Toggle mute" + "m" #'smudge-controller-voume-mute-unmute))) #+end_src * Evil Mode @@ -535,6 +697,14 @@ Grandular changes when in insert mode org-startup-with-latex-preview t) #+end_src +*** Org LaTeX +#+begin_src emacs-lisp +(require 'org) +(add-to-list 'org-latex-packages-alist '("" "amsmath" t)) +(add-to-list 'org-latex-packages-alist '("" "amssymb" t)) +(setq org-preview-latex-default-process 'dvipng) +#+end_src + *** Org Agenda #+begin_src emacs-lisp (after! org @@ -581,5 +751,5 @@ Display ansi colour codes in org babel results. org-roam-ui-update-on-save t org-roam-ui-open-on-start t)) -(setq org-roam-database-connector 'sqlite3) +;; (setq org-roam-database-connector 'sqlite3) #+end_src