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:
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