diff --git a/config.org b/config.org index 92b4fe5..3d9c7cb 100644 --- a/config.org +++ b/config.org @@ -5,28 +5,29 @@ * Init ** Package management #+begin_src emacs-lisp -;; This is only needed once, near the top of the file + ;; This is only needed once, near the top of the file -(require 'package) -(add-to-list 'package-archives - '("melpa" . "https://melpa.org/packages/") t) -(package-initialize) + (require 'package) + (add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/") t) + (package-initialize) - (setq package-archives - '(("GNU ELPA" . "https://elpa.gnu.org/packages/") - ("MELPA Stable" . "https://stable.melpa.org/packages/") - ("MELPA" . "https://melpa.org/packages/")) - package-archive-priorities - '(("GNU ELPA" . 10) - ("MELPA" . 5) - ("MELPA Stable" . 0))) + (setq package-archives + '(("GNU ELPA" . "https://elpa.gnu.org/packages/") + ("MELPA Stable" . "https://stable.melpa.org/packages/") + ("MELPA" . "https://melpa.org/packages/")) + package-archive-priorities + '(("GNU ELPA" . 10) + ("MELPA" . 5) + ("MELPA Stable" . 0))) -(unless (package-install 'use-package) - (package-refresh-contents) - (package-install 'use-package)) + (unless (package-install 'use-package) + (package-refresh-contents) + (package-install 'use-package)) - (eval-when-compile (require 'use-package)) - (setq use-package-always-ensure t) + (eval-when-compile (require 'use-package)) + (setq use-package-always-ensure t) +(pdf-tools-install) #+end_src @@ -41,72 +42,74 @@ ("\\.m$" . mercury-mode)) auto-mode-alist)) #+end_src - ** Dired #+begin_src emacs-lisp - (use-package dired-git - :hook - (dired-mode . dired-git-mode)) + (use-package dired-preview) + (use-package dired-git + :hook + (dired-mode . dired-git-mode)) #+end_src ** Theme #+BEGIN_SRC emacs-lisp (use-package zenburn-theme) - (load-theme 'zenburn t) + (use-package doom-themes) + + (load-theme 'doom-one t) (use-package vertico - :custom - (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' - :init - (vertico-mode)) - + :custom + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' + :init + (vertico-mode)) + (use-package savehist - :init - (savehist-mode)) + :init + (savehist-mode)) (use-package emacs - :custom - ;; Support opening new minibuffers from inside existing minibuffers. - (enable-recursive-minibuffers t) - ;; Hide commands in M-x which do not work in the current mode. Vertico - ;; commands are hidden in normal buffers. This setting is useful beyond - ;; Vertico. - (read-extended-command-predicate #'command-completion-default-include-p) - :init - ;; Add prompt indicator to `completing-read-multiple'. - ;; We display [CRM], e.g., [CRM,] if the separator is a comma. - (defun crm-indicator (args) - (cons (format "[CRM%s] %s" - (replace-regexp-in-string "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" crm-separator) - (car args)) - (cdr args))) - (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + :custom + ;; Support opening new minibuffers from inside existing minibuffers. + (enable-recursive-minibuffers t) + ;; Hide commands in M-x which do not work in the current mode. Vertico + ;; commands are hidden in normal buffers. This setting is useful beyond + ;; Vertico. + (read-extended-command-predicate #'command-completion-default-include-p) + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) - (setq minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)) - (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)) + (setq minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)) (use-package vertico-directory - :after vertico - :ensure nil - ;; More convenient directory navigation commands - :bind (:map vertico-map - ("RET" . vertico-directory-enter) - ("DEL" . vertico-directory-delete-char) - ("M-DEL" . vertico-directory-delete-word)) - ;; Tidy shadowed file names - :hook (rfn-eshadow-update-overlay . vertico-directory-tidy)) + :after vertico + :ensure nil + ;; More convenient directory navigation commands + :bind (:map vertico-map + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-char) + ("M-DEL" . vertico-directory-delete-word)) + ;; Tidy shadowed file names + :hook (rfn-eshadow-update-overlay . vertico-directory-tidy)) (use-package vertico-multiform - :after vertico - :load-path "~/.emacs.d/elpa/vertico-1.9/") + :after vertico + :load-path "~/.emacs.d/elpa/vertico-1.9/") (vertico-multiform-mode 1) (use-package vertico-posframe - :ensure t) - (setq vertico-posframe-parameters - '((left-fringe . 8) - (right-fringe . 8))) + :ensure t) + (setq vertico-posframe-parameters + '((left-fringe . 8) + (right-fringe . 8))) #+END_SRC ** Encoding @@ -177,36 +180,46 @@ ** LSP #+begin_src emacs-lisp - (use-package lsp-mode - :init - ;;set prefix - (setq lsp-keymap-prefix "C-c l") - (setq lsp-diagnostics-provider :flycheck) ; Use flycheck for diagnostics - (setq lsp-enable-snippet t) ; Enable snippet support - (setq company-idle-delay 0.2) ; Set delay for completion pop-up - (setq company-minimum-prefix-length 1) - (setq lsp-clients-clangd-executable "clangd") + ;; Java + (use-package exec-path-from-shell) + (use-package lsp-java) + (require 'lsp-java) + (add-hook 'java-mode-hook #'lsp) + (use-package hydra) + (setq lsp-java-jdt-download-url "https://download.eclipse.org/jdtls/milestones/0.57.0/jdt-language-server-0.57.0-202006172108.tar.gz") - :hook - ((prog-mode . lsp) - (c-mode . lsp) - (latex-mode . lsp) - (python-mode . lsp) - (lsp-mode . lsp-enable-which-key-integration) - ;;(before-save . lsp-format-buffer) - ) - :commands lsp - :bind - ("C-" . ff-find-other-file) - :custom - (lsp-prefer-capf t)) - - (use-package helm-lsp - :commands helm-lsp-workspace-symbol) + (use-package lsp-mode + :init + ;;set prefix + (setq lsp-keymap-prefix "C-c l") + (setq lsp-diagnostics-provider :flycheck) ; Use flycheck for diagnostics + (setq lsp-enable-snippet t) ; Enable snippet support + (setq company-idle-delay 0.2) ; Set delay for completion pop-up + (setq company-minimum-prefix-length 1) + (setq lsp-clients-clangd-executable "clangd") - (use-package which-key - :config - (which-key-mode)) + :hook + ((prog-mode . lsp) + (c-mode . lsp) + (emacs-lisp-mode . lsp) + (java-mode . lsp) + (latex-mode . lsp) + (python-mode . lsp) + (lsp-mode . lsp-enable-which-key-integration) + (before-save . lsp-format-buffer) + ) + :commands lsp + :bind + ("C-" . ff-find-other-file) + :custom + (lsp-prefer-capf t)) + + (use-package helm-lsp + :commands helm-lsp-workspace-symbol) + + (use-package which-key + :config + (which-key-mode)) #+end_src * Key-binds @@ -214,6 +227,13 @@ #+begin_src emacs-lisp (keymap-global-set "M-a" 'switch-to-buffer) #+end_src + +** Dired +#+begin_src emacs-lisp + (add-hook 'dired-mode-hook (lambda () (local-key-binding "-" 'dired-jump))) +#+end_src + + ** C *** Dereference arrow @@ -271,17 +291,107 @@ #+end_src * Org - -** Org bullets #+begin_src emacs-lisp + (defun my/buffer-face-mode-variable () + "Set font to a variable width (proportional) fonts in current buffer" + (interactive) + (setq buffer-face-mode-face '(:family "Roboto Slab" + :height 150 + :width normal)) + (buffer-face-mode)) (use-package org-bullets - :config - (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) -#+end_src + :config + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) -** Emphasis markers -#+begin_src emacs-lisp (setq org-hide-emphasis-markers t) + (defun my/set-general-faces-org () + (my/buffer-face-mode-variable) + (setq line-spacing 0.1 + org-pretty-entities t + org-startup-indented t + org-adapt-indentation nil) + (variable-pitch-mode +1) + (mapc + (lambda (face) ;; Other fonts that require it are set to fixed-pitch. + (set-face-attribute face nil :inherit 'fixed-pitch)) + (list 'org-block + 'org-table + 'org-verbatim + 'org-block-begin-line + 'org-block-end-line + 'org-meta-line + 'org-date + 'org-drawer + 'org-property-value + 'org-special-keyword + 'org-document-info-keyword)) + (mapc ;; This sets the fonts to a smaller size + (lambda (face) + (set-face-attribute face nil :height 0.8)) + (list 'org-document-info-keyword + 'org-block-begin-line + 'org-block-end-line + 'org-meta-line + 'org-drawer + 'org-property-value + ))) + + (defun my/set-specific-faces-org () + (set-face-attribute 'org-code nil + :inherit '(shadow fixed-pitch)) + ;; Without indentation the headlines need to be different to be visible + (set-face-attribute 'org-level-1 nil + :height 1.25 + :foreground "#BEA4DB") + (set-face-attribute 'org-level-2 nil + :height 1.15 + :foreground "#A382FF" + :slant 'italic) + (set-face-attribute 'org-level-3 nil + :height 1.1 + :foreground "#5E65CC" + :slant 'italic) + (set-face-attribute 'org-level-4 nil + :height 1.05 + :foreground "#ABABFF") + (set-face-attribute 'org-level-5 nil + :foreground "#2843FB") + (set-face-attribute 'org-date nil + :foreground "#ECBE7B" + :height 0.8) + (set-face-attribute 'org-document-title nil + :foreground "DarkOrange3" + :height 1.3) + (set-face-attribute 'org-ellipsis nil + :foreground "#4f747a" :underline nil) + (set-face-attribute 'variable-pitch nil + :family "Roboto Slab" :height 1.2)) + + + + (defun my/set-keyword-faces-org () + (mapc (lambda (pair) (push pair prettify-symbols-alist)) + '(;; Syntax + ("TODO" . "") + ("DONE" . "") + ("WAITING" . "") + ("HOLD" . "") + ("NEXT" . "") + ("CANCELLED" . "") + ("#+begin_quote" . "“") + ("#+end_quote" . "”"))) + (prettify-symbols-mode +1) + (org-superstar-mode +1) + ) + + (defun my/style-org () + (my/set-general-faces-org) + (my/set-specific-faces-org) + (my/set-keyword-faces-org) + ) + (add-hook 'org-mode-hook 'my/style-org) + + (setq org-return-follows-link t) #+end_src * Hooks @@ -309,10 +419,11 @@ (add-hook 'before-make-frame-hook (lambda () (scroll-bar-mode -1))) #+END_SRC - * Terminal #+begin_src emacs-lisp - (use-package vterm) + (use-package vterm + :bind + ("C-x t" . vterm)) #+end_src * Projectile @@ -322,14 +433,30 @@ :init (projectile-mode +1) :bind (:map projectile-mode-map - ("s-p" . projectile-command-map) + ("M-z" . projectile-command-map) ("C-c p" . projectile-command-map))) #+end_src * Misceleaneous +** Music +#+begin_src emacs-lisp + (use-package emms) +(emms-all) +(setq emms-player-list '(emms-player-vlc) + emms-info-functions '(emms-info-native)) +#+end_src + +** Indentation +#+begin_src emacs-lisp + (use-package rainbow-delimiters) + (use-package highlight-indent-guides) + (add-hook 'prog-mode-hook 'highlight-indent-guides-mode) + (set-variable highlight-indent-guides-method 'column) +#+end_src + ** Global font #+begin_src emacs-lisp - (set-face-attribute 'default nil :family "Cascadia Mono" :height 200) + (set-face-attribute 'default nil :family "Cascadia Mono" :height 140) #+end_src ** Icons #+begin_src emacs-lisp @@ -346,5 +473,7 @@ ** Line numberring #+begin_src emacs-lisp (add-hook 'prog-mode-hook 'display-line-numbers-mode) -(setq-default tab-width 4) + (add-hook 'prog-mode-hook #'rainbow-delimiters-mode) + (setq-default indent-tabs-mode nil) + (setq-default tab-width 4) #+end_src