diff --git a/README.org b/README.org index ff06f72..0f40cea 100644 --- a/README.org +++ b/README.org @@ -48,7 +48,7 @@ It will link all dotfiles to their correct place. + wmctrl + redshift-gtk ** special stuff -+ fcitx5 (=fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-mozc fcitx-qt=) ++ fcitx5 (=fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-mozc fcitx5-qt=) + hunspell-de (=hunspell-en= should be installed) ** GTK theming + papirus icons diff --git a/files/emacs/.emacs.d/init.el b/files/emacs/.emacs.d/init.el index c484177..b54fd53 100644 --- a/files/emacs/.emacs.d/init.el +++ b/files/emacs/.emacs.d/init.el @@ -1,610 +1,4 @@ -;;; -*- lexical-binding: t -*- - -(defun tangle-init () - (when (equal (buffer-file-name) - (expand-file-name (concat (getenv "HOME") "/dots/files/init.org"))) - ;; Avoid running hooks when tangling. - (let ((prog-mode-hook nil)) - (org-babel-tangle)))) - -(add-hook 'after-save-hook 'tangle-init) - -(setq gc-cons-threshold most-positive-fixnum) -(add-hook 'emacs-startup-hook - (lambda () - (setq gc-cons-threshold (* 32 1024 1024)))) - -(setq read-process-output-max (* 3 1024 1024)) - -(setq-default bidi-display-reordering 'left-to-right - bidi-paragraph-direction 'left-to-right) - -(setq bidi-inhibit-bpa t) - -(setq-default cursor-in-non-selected-windows nil) -(setq highlight-nonselected-windows nil) - -(setq idle-update-delay 1.0) - -(setq redisplay-skip-fontification-on-input t) - -(setq make-backup-files nil - auto-mode-case-fold nil - auto-save-default nil - inhibit-startup-screen t - tramp-default-method "ssh" - initial-major-mode 'fundamental-mode - initial-scratch-message nil - fast-but-imprecise-scrolling t) - -(add-hook 'doc-view-mode-hook 'auto-revert-mode) - -(fset 'yes-or-no-p 'y-or-n-p) - -(global-set-key (kbd "") 'keyboard-escape-quit) - -(global-visual-line-mode t) - -(setq straight-check-for-modifications 'live) -(defvar bootstrap-version) - -(let ((bootstrap-file - (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) - (bootstrap-version 5)) - (unless (file-exists-p bootstrap-file) - (with-current-buffer - (url-retrieve-synchronously - "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" - 'silent 'inhibit-cookies) - (goto-char (point-max)) - (eval-print-last-sexp))) - (load bootstrap-file nil 'nomessage)) - -(setq package-enable-at-startup nil) -(straight-use-package 'use-package) - -(use-package general - :straight t - :init - (general-create-definer vim-leader-def :prefix "SPC")) - -(use-package which-key - :straight t - :init - (which-key-mode) - :diminish - (which-key-mode) - :config - (setq which-key-idle-delay 1)) - -(use-package evil - :straight t - :bind - (:map evil-motion-state-map - ("C-y" . nil)) - (:map evil-insert-state-map - ("C-y" . nil)) - :init - ;; so C-z works for background - (setq evil-toggle-key "C-~" - evil-want-C-d-scroll t - evil-want-C-u-scroll t - evil-want-integration t - evil-want-keybinding nil) - :config - (evil-mode)) - -(use-package evil-collection - :straight t - :after evil - :config - (evil-collection-init)) - -(use-package evil-matchit - :straight t - :after evil - :config - (global-evil-matchit-mode 1)) - -(set-face-attribute 'default nil :font "JuliaMono" :height 110) -(set-fontset-font t 'unicode "Noto Color Emoji" nil 'prepend) -(set-fontset-font t 'unicode "Noto Sans Mono CJK JP" nil 'append) - -(set-face-attribute 'variable-pitch nil :family "Roboto") -(set-face-attribute 'fixed-pitch nil :family "JuliaMono") - -(use-package mixed-pitch - :straight t - :hook - (text-mode . mixed-pitch-mode)) - -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) - -(show-paren-mode t) -(setq show-paren-style 'paranthesis) - -(setq-default display-line-numbers 'relative - display-line-numbers-widen t - ;; this is the default - display-line-numbers-current-absolute t) - -;; Display absolute numbers, when in normal mode -(defun noct:relative () - (setq-local display-line-numbers 'relative)) - -(defun noct:absolute () - (setq-local display-line-numbers t)) - -(add-hook 'evil-insert-state-entry-hook #'noct:absolute) -(add-hook 'evil-insert-state-exit-hook #'noct:relative) - -(use-package doom-themes - :straight (doom-themes :type git :host github :repo "hlissner/emacs-doom-themes" - :fork (:host github :repo "CramMK/emacs-doom-themes")) - :config - (setq doom-themes-enable-bold t - doom-themes-enable-italic t) - (load-theme 'doom-ayu-light t) - (doom-themes-org-config) - (doom-themes-treemacs-config)) - -(use-package doom-modeline - :straight t - :config - (doom-modeline-mode 1) - (setq doom-modeline-indent-info t - doom-modeline-buffer-file-name-style 'file-name)) - -(use-package all-the-icons - :straight t) - -(use-package nyan-mode - :straight t - :init - (nyan-mode) - (nyan-start-animation) - ;; (nyan-toggle-wavy-trail) - :config - (setq nyan-cat-face-number 4)) - -(use-package rainbow-mode - :straight t - :hook - (prog-mode . rainbow-mode)) - -(global-whitespace-mode t) -(setq whitespace-style '(face trailing tabs tab-mark)) -(add-hook 'before-save-hook 'whitespace-cleanup) - -(use-package fill-column-indicator - :straight t - :defer 1 - :diminish - (fci-mode) - :config - (setq fci-rule-width 1 - fci-rule-column 80 - fci-rule-color "#A6CC70") - :hook - (prog-mode . fci-mode) - (markdown-mode . fci-mode)) - -(use-package treemacs - :straight t - :defer t - :config - (setq treemacs-follow-after-init t - treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) - treemacs-width 50 - treemacs-project-follow-cleanup t - treemacs-tag-follow-cleanup t - treemacs-expand-after-init nil - treemacs-recenter-after-file-follow t - treemacs-recenter-after-tag-follow t - treemacs-tag-follow-delay 1) - (treemacs-follow-mode t) - (treemacs-load-theme "Default") - (dolist (face '(treemacs-root-face - treemacs-git-unmodified-face - treemacs-git-modified-face - treemacs-git-renamed-face - treemacs-git-ignored-face - treemacs-git-untracked-face - treemacs-git-added-face - treemacs-git-conflict-face - treemacs-directory-face - treemacs-directory-collapsed-face - treemacs-file-face - treemacs-tags-face)) - (set-face-attribute face nil :family "JuliaMono" :height 110)) - :bind - (:map global-map - ("C-x t t" . treemacs))) - -;; C-c C-p -> projectile -;; C-c C-w -> workspace - -(use-package treemacs-evil - :after (treemacs evil) - :straight t) - -(use-package ivy - :straight t - :diminish - :bind (("C-s" . swiper) - :map ivy-minibuffer-map - ("TAB" . ivy-alt-done) - ("C-l" . ivy-alt-done) - ("C-j" . ivy-next-line) - ("C-k" . ivy-previous-line) - :map ivy-switch-buffer-map - ("C-k" . ivy-previous-line) - ("C-l" . ivy-done) - ("C-d" . ivy-switch-buffer-kill) - :map ivy-reverse-i-search-map - ("C-k" . ivy-previous-line) - ("C-d" . ivy-reverse-i-search-kill)) - :config - (ivy-mode 1)) - -(use-package counsel - :straight t - :bind (("M-x" . counsel-M-x) - ("C-x b" . counsel-ibuffer) - ("C-x C-f" . counsel-find-file) - ("C-x C-g" . counsel-git) - :map minibuffer-local-map - ("C-r" . 'counsel-minibuffer-history))) - -(use-package org - :straight t - :general - (vim-leader-def 'normal 'global - "oci" 'org-clock-in - "oco" 'org-clock-out - "oa" 'org-agenda - "oca" 'org-capture - "oes" 'org-edit-src-code - "oti" 'org-toggle-inline-images - "odi" 'org-display-inline-images) - :hook - (org-mode . (lambda () (electric-indent-local-mode -1))) ;; dont make real spaces at the start of a line - (org-mode . org-indent-mode) ;; add virtual spaces - :config - (define-key evil-normal-state-map (kbd "TAB") 'org-cycle)) ;; use TAB to FOLD in every evil-mode - -(setq ;; org-hidden-keywords '(title) ;; hide title - org-startup-with-inline-images t ;; start with inline images enabled - org-image-actual-width nil ;; rescale inline images - org-directory "~/org" ;; set org file directory - org-agenda-files (quote ("~/org")) ;; indexed files by org agenda - org-edit-src-content-indentation 0 ;; don't indent stupidly in org-edit-src-code - org-log-done nil ;; just mark DONE without a time stamp - org-log-repeat nil ;; don't set a time after marking sth DONE - org-agenda-start-on-weekday nil ;; my week starts on a monday - calendar-week-start-day 1 ;; my week starts on a monday -) - -(setq org-todo-keywords '((sequence "TODO" "PROGRESS" "REVIEW" "|" "DONE")) - org-todo-keyword-faces '(("TODO" . "#cc241d") ("PROGRESS" . "#a6cc70") ("REVIEW" . "#b16286") ("DONE" . "#abb0b6"))) - -(setq org-capture-templates - (quote (("w" "Work" entry (file "~/org/work.org") "* TODO %?\n" :empty-lines-before 1) - ("u" "University" entry (file "~/org/uni.org") "* TODO %?\n" :empty-lines-before 1) - ("p" "Personal" entry (file "~/org/personal.org") "* TODO %?\n" :empty-lines-before 1)))) - -(org-babel-do-load-languages 'org-babel-load-languages '((python . t) - (shell . t) - (haskell . t) - (C . t) - (dot . t))) - -(use-package sage-shell-mode - :straight t) - -(use-package ob-sagemath - :straight t) - -(setq org-latex-listings 'minted - org-latex-packages-alist '(("" "minted")) - org-latex-pdf-process - '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f") - org-latex-inputenc-alist '(("utf8" . "utf8x")) - org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist) - org-format-latex-options (plist-put org-format-latex-options :scale 1.5)) - -(defun mth/beamer-bold (contents backend info) - (when (eq backend 'beamer) - (replace-regexp-in-string "\\`\\\\[A-Za-z0-9]+" "\\\\textbf" contents))) - -(use-package ox - :after org - :config - (add-to-list 'org-export-filter-bold-functions 'mth/beamer-bold) - (add-to-list 'org-latex-logfiles-extensions "tex")) - -(use-package org-fragtog - :straight t - :hook - (org-mode . org-fragtog-mode)) - -(use-package graphviz-dot-mode - :straight t - :hook - (graphviz-dot-mode . (lambda () (set-input-method "math"))) - :config - (setq graphviz-dot-indent-width 4)) - -(set-face-attribute 'org-document-title nil :family "Roboto" :weight 'bold :inherit 'default :height 250) -(setq org-ellipsis " ⮷" ;; folding icon - ;; org-hide-emphasis-markers t ;; hide markers such as *, =, _ -) - -(use-package org-superstar - :straight t - :after org - :hook - (org-mode . org-superstar-mode) - :config - (setq org-superstar-remove-leading-stars t)) - -(use-package org-super-agenda - :straight t - :after org - :config - (setq org-super-agenda-groups '((:auto-group t))) - (org-super-agenda-mode)) - -(use-package dtrt-indent - :straight t - :hook - (prog-mode . dtrt-indent-mode) - (text-mode . dtrt-indent-mode) - (org-mode . dtrt-indent-mode) - (markdown-mode . dtrt-indent-mode)) - -(use-package electric-pair - :config - (setq electric-pair-open-newline-between-pairs nil) - :hook - (prog-mode . electric-pair-mode) - (text-mode . electric-pair-mode) - (org-mode . electric-pair-mode) - (markdown-mode . electric-pair-mode)) - -(use-package magit - :straight t - :general - (vim-leader-def 'normal 'global - "gb" 'magit-branch - "gc" 'magit-checkout - "gc" 'magit-commit - "gd" 'magit-diff - "gg" 'counsel-git-grep - "gi" 'magit-gitignore-in-topdir - "gj" 'magit-blame - "gl" 'magit-log - "gp" 'magit-push - "gs" 'magit-status - "gu" 'magit-pull)) - -(use-package treemacs-magit - :after (treemacs magit) - :straight t) - -(use-package hl-todo - :straight t - :hook - (prog-mode . hl-todo-mode) - :config - (defface hl-todo-TODO - '((t :background "#cc241d" :foreground "#ffffff")) - "TODO Face") - (setq hl-todo-highlight-punctuation ":" - hl-todo-color-background t - hl-todo-keyword-faces '(("TODO" . hl-todo-TODO) - ("XXX" . hl-todo-TODO) - ("FIXME" . hl-todo-TODO)))) - -(use-package company - :straight t - :hook - (lsp-mode . company-mode) - (prog-mode . company-mode) - (LaTeX-mode . company-mode) - (org-mode . company-mode) - :custom - (company-minimum-prefix-length 3) - (company-idle-delay 0.5) - :bind (:map company-active-map - ("C-j" . company-select-next-or-abort) - ("C-k" . company-select-previous-or-abort) - ("C-l" . company-complete-selection))) - -(use-package company-box - :straight t - :config - (setq company-box-doc-delay 2.0 - company-box-max-candidates 10) - :hook - (company-mode . company-box-mode)) - -(defun company-mode/backend-with-yas (backend) - (if (and (listp backend) (member 'company-yasnippet backend)) - backend - (append (if (consp backend) backend (list backend)) - '(:with company-yasnippet)))) - -(defun company-mode/add-yasnippet () - (setq company-backends (mapcar #'company-mode/backend-with-yas company-backends))) - -(use-package yasnippet - :straight t - :init - :bind (:map yas-minor-mode-map - ("C-y" . yas-expand)) - :hook - (company-mode . yas-minor-mode) - (company-mode . company-mode/add-yasnippet)) - -(use-package yasnippet-snippets - :straight (yasnippet-snippets :type git :host github :repo "AndreaCrotti/yasnippet-snippets" - :fork (:host github - :repo "marcothms/yasnippet-snippets")) - :after yasnippet) - -(use-package lsp-mode :straight t - :commands (lsp lsp-deferred) - :init - (setq lsp-keymap-prefix "C-l") - :config - (lsp-enable-which-key-integration t) - (setq lsp-rust-server 'rust-analyzer - lsp-auto-guess-root t - lsp-idle-delay 1 - lsp-enable-file-watchers nil) - :hook - (rust-mode . lsp) - (python-mode . lsp) - (haskell-mode . lsp) - (c++-mode . lsp)) - -(use-package flycheck - :straight t - :after lsp) - -(use-package lsp-ivy - :straight t - :after lsp-mode - :bind(:map lsp-mode-map ("C-l g a" . lsp-ivy-workspace-symbol))) - -(use-package projectile - :straight t - :after lsp - :config - (setq projectile-completion-system 'ivy) - (projectile-mode +1)) - -(use-package rust-mode - :straight t - :hook - (rust-mode . prettify-symbols-mode) - (rust-mode . (lambda () - (push '("->" . ?→) prettify-symbols-alist) - (push '("=>" . ?⇒) prettify-symbols-alist) - (push '("!=" . ?≠) prettify-symbols-alist) - (push '("<=" . ?≤) prettify-symbols-alist) - (push '(">=" . ?≥) prettify-symbols-alist)))) - -(use-package haskell-mode - :straight t - :hook - (haskell-mode . interactive-haskell-mode)) - -(use-package lsp-haskell - :straight t - :after lsp - :hook - (haskell-mode . lsp) - (haskell-literate-mode . lsp)) - -(use-package dap-mode - :straight t) - -(require 'dap-python) - -(use-package ispell - :straight t - :if (executable-find "hunspell") - :config - (setq ispell-program-name "hunspell" - ispell-dictionary "de_DE,en_GB,en_US") - (ispell-set-spellchecker-params) - (ispell-hunspell-add-multi-dic "de_DE,en_GB,en_US") - :hook - (org-mode . flyspell-mode) - (markdown-mode . flyspell-mode) - (text-mode . flyspell-mode)) - -(use-package math-symbol-lists - :straight t - :config - (quail-define-package "math" "UTF-8" "Ω" t) - (quail-define-rules - ; Equality and order - ("<=" ?≤) (">=" ?≥) ("\\prec" ?≺) ("\\preceq" ?≼) ("\\succ" ?≻) - ("\\succeq" ?≽) - ("/=" ?≠) ("\\neq" ?≠) ("\\=n" ?≠)("\\equiv" ?≡) ("\\nequiv" ?≢) - ("\\approx" ?≈) ("\\~~" ?≈) ("\\t=" ?≜) ("\\def=" ?≝) - - ; Set theory - ("\\sub" ?⊆) ("\\subset" ?⊂) ("\\subseteq" ?⊆) ("\\in" ?∈) - ("\\inn" ?∉) ("\\:" ?∈) ("\\cap" ?∩) ("\\inter" ?∩) - ("\\cup" ?∪) ("\\uni" ?∪) ("\\emptyset" ?∅) ("\\empty" ?∅) - ("\\times" ?×) ("\\x" ?×) - - ; Number stuff - ("\\mid" ?∣) ("\\infty" ?∞) ("\\sqrt" ?√) ("\\Im" ?ℑ) ("\\Re" ?ℜ) - - ; Logic - ("\\/" ?∨) ("\\and" ?∧) ("/\\" ?∧) ("\\or" ?∨) ("~" ?¬) ("\neg" ?¬) - ("|-" ?⊢) ("|-n" ?⊬) ("\\bot" ?⊥) ("\\top" ?⊤) - ("\\r" ?→) ("\\lr" ?↔) - ("\\R" ?⇒) ("\\Lr" ?⇔) - ("\\qed" ?∎) - - ; Predicate logic - ("\\all" ?∀) ("\\ex" ?∃) ("\\exn" ?∄) - - ; functions - ("\\to" ?→) ("\\mapsto" ?↦) ("\\circ" ?∘) ("\\comp" ?∘) ("\\integral" ?∫) - ("\\fun" ?λ) - - ; Sets of numbers - ("\\nat" ?ℕ) ("\\N" ?ℕ) ("\\int" ?ℤ) ("\\Z" ?ℤ) ("\\rat" ?ℚ) ("\\Q" ?ℚ) - ("\\real" ?ℝ) ("\\R" ?ℝ) ("\\complex" ?ℂ) ("\\C" ?ℂ) ("\\prime" ?ℙ) - ("\\P" ?ℙ) - - ; Complexity - ("\\bigo" ?𝒪) - - ; Greek - ("\\Ga" ?α) ("\\GA" ?Α) ("\\a" ?α) - ("\\Gb" ?β) ("\\GB" ?Β) ("\\b" ?β) - ("\\Gg" ?γ) ("\\GG" ?Γ) ("\\g" ?γ) ("\\Gamma" ?Γ) - ("\\Gd" ?δ) ("\\GD" ?Δ) ("\\delta" ?δ) ("\\Delta" ?Δ) - ("\\Ge" ?ε) ("\\GE" ?Ε) ("\\epsilon" ?ε) - ("\\Gz" ?ζ) ("\\GZ" ?Ζ) - ("\\Gh" ?η) ("\\Gh" ?Η) ("\\mu" ?μ) - ("\\Gth" ?θ) ("\\GTH" ?Θ) ("\\theta" ?θ) ("\\Theta" ?Θ) - ("\\Gi" ?ι) ("\\GI" ?Ι) ("\\iota" ?ι) - ("\\Gk" ?κ) ("\\GK" ?Κ) - ("\\Gl" ?λ) ("\\GL" ?Λ) ("\\lam" ?λ) - ("\\Gm" ?μ) ("\\GM" Μ) ("\\mu" ?μ) - ("\\Gx" ?ξ) ("\\GX" ?Ξ) ("\\xi" ?ξ) ("\\Xi" ?Ξ) - ("\\Gp" ?π) ("\\GP" ?Π) ("\\pi" ?π) ("\\Pi" ?Π) - ("\\Gr" ?ρ) ("\\GR" ?Ρ) ("\\rho" ?ρ) - ("\\Gs" ?σ) ("\\GS" ?Σ) ("\\sig" ?σ) ("\\Sig" ?Σ) - ("\\Gt" ?τ) ("\\GT" ?Τ) ("\\tau" ?τ) - ("\\Gph" ?ϕ) ("\\GPH" ?Φ) ("\\phi" ?ϕ) ("\\Phi" ?Φ) - ("\\Gc" ?χ) ("\\GC" ?Χ) ("\\chi" ?χ) - ("\\Gp" ?ψ) ("\\GP" ?Ψ) ("\\psi" ?ψ) - ("\\Go" ?ω) ("\\GO" ?Ω) ("\\omega" ?ω) ("\\Omega" ?Ω) - ) - (mapc (lambda (x) - (if (cddr x) - (quail-defrule (cadr x) (car (cddr x))))) - (append math-symbol-list-superscripts - math-symbol-list-subscripts))) - -(use-package pdf-tools - :straight t - :config - (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward-regexp)) - -;; load necessary things, when a PDF gets opened -(pdf-tools-install) +(require 'org) +(find-file (concat (getenv "HOME") "/dots/files/init.org")) +(org-babel-tangle) +(load-file (concat (getenv "HOME") "/dots/files/init.el")) diff --git a/files/init.el b/files/init.el deleted file mode 100644 index b54fd53..0000000 --- a/files/init.el +++ /dev/null @@ -1,4 +0,0 @@ -(require 'org) -(find-file (concat (getenv "HOME") "/dots/files/init.org")) -(org-babel-tangle) -(load-file (concat (getenv "HOME") "/dots/files/init.el"))