diff --git a/config.org b/config.org index d26f812..eaba7d6 100644 --- a/config.org +++ b/config.org @@ -31,7 +31,7 @@ *** Vollbildschirm Das Fenster wird im Vollbild geöffnet. #+BEGIN_SRC emacs-lisp - (setq initial-frame-alist '((fullscreen . maximized))) + (setq initial-frame-alist '((fullscreen . maximized))) #+END_SRC ** Server @@ -45,17 +45,17 @@ Die Backup- und Autosave-Dateien stören eher, da ich sie noch nie gebraucht habe, sollen sie erst gar nicht angelegt werden. [[https://github.com/emacscollective/no-littering][Help keeping ~/.emacs.d clean]] #+BEGIN_SRC emacs-lisp - (use-package no-littering - :config (with-eval-after-load 'recentf - (add-to-list 'recentf-exclude no-littering-var-directory) - (add-to-list 'recentf-exclude no-littering-etc-directory)) + (use-package no-littering + :config (with-eval-after-load 'recentf + (add-to-list 'recentf-exclude no-littering-var-directory) + (add-to-list 'recentf-exclude no-littering-etc-directory)) - (setq auto-save-file-name-transforms ; autosaved-file-name~ - `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)) - custom-file (no-littering-expand-etc-file-name "custom.el")) + (setq auto-save-file-name-transforms ; autosaved-file-name~ + `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)) + custom-file (no-littering-expand-etc-file-name "custom.el")) - (if (file-exists-p custom-file) - (load-file custom-file))) + (if (file-exists-p custom-file) + (load-file custom-file))) #+END_SRC * Konfigurationsdatei @@ -106,74 +106,74 @@ ** Font #+BEGIN_SRC emacs-lisp - ;; for unicode - (when (display-graphic-p) - (set-fontset-font "fontset-default" nil - (font-spec :size 20 :name "Symbola"))) - ;; for emoji - (set-fontset-font - t - '(#x1f300 . #x1fad0) - (cond + ;; for unicode + (when (display-graphic-p) + (set-fontset-font "fontset-default" nil + (font-spec :size 20 :name "Symbola"))) + ;; for emoji + (set-fontset-font + t + '(#x1f300 . #x1fad0) + (cond ((member "Noto Color Emoji" (font-family-list)) "Noto Color Emoji") ((member "Noto Emoji" (font-family-list)) "Noto Emoji") ((member "Segoe UI Emoji" (font-family-list)) "Segoe UI Emoji") ((member "Symbola" (font-family-list)) "Symbola") ((member "Apple Color Emoji" (font-family-list)) "Apple Color Emoji"))) - ;; font to use - (defconst artr/default-font-family "Source Code Pro") - (defconst artr/default-font-size 100) - (defconst artr/default-icon-size 15) + ;; font to use + (defconst artr/default-font-family "Source Code Pro") + (defconst artr/default-font-size 100) + (defconst artr/default-icon-size 15) - (set-face-attribute 'default nil - :family artr/default-font-family - :height artr/default-font-size) + (set-face-attribute 'default nil + :family artr/default-font-family + :height artr/default-font-size) #+END_SRC ** Schriftgröße anpassen #+BEGIN_SRC emacs-lisp - (defun artr/adjust-font-size (height) - "Adjust font size by given height. If height is '0', reset font -size. This function also handles icons and modeline font sizes." - (interactive "nHeight ('0' to reset): ") + (defun artr/adjust-font-size (height) + "Adjust font size by given height. If height is '0', reset font + size. This function also handles icons and modeline font sizes." + (interactive "nHeight ('0' to reset): ") (let ((new-height (if (zerop height) - artr/default-font-size - (+ height (face-attribute 'default :height))))) - (set-face-attribute 'default nil :height new-height) - (set-face-attribute 'mode-line nil :height new-height) - (set-face-attribute 'mode-line-inactive nil :height new-height) - (message "Font size: %s" new-height)) + artr/default-font-size + (+ height (face-attribute 'default :height))))) + (set-face-attribute 'default nil :height new-height) + (set-face-attribute 'mode-line nil :height new-height) + (set-face-attribute 'mode-line-inactive nil :height new-height) + (message "Font size: %s" new-height)) (let ((new-size (if (zerop height) - artr/default-icon-size - (+ (/ height 5) treemacs--icon-size)))) - (when (fboundp 'treemacs-resize-icons) - (treemacs-resize-icons new-size)) - (when (fboundp 'company-box-icons-resize) - (company-box-icons-resize new-size)))) + artr/default-icon-size + (+ (/ height 5) treemacs--icon-size)))) + (when (fboundp 'treemacs-resize-icons) + (treemacs-resize-icons new-size)) + (when (fboundp 'company-box-icons-resize) + (company-box-icons-resize new-size)))) #+END_SRC ** Schrift vergrößern #+BEGIN_SRC emacs-lisp - (defun artr/increase-font-size () - "Increase font size by 0.5 (5 in height)." - (interactive) + (defun artr/increase-font-size () + "Increase font size by 0.5 (5 in height)." + (interactive) (artr/adjust-font-size 5)) #+END_SRC ** Schrift verkleinern #+BEGIN_SRC emacs-lisp - (defun artr/decrease-font-size () - "Decrease font size by 0.5 (5 in height)." - (interactive) + (defun artr/decrease-font-size () + "Decrease font size by 0.5 (5 in height)." + (interactive) (artr/adjust-font-size -5)) #+END_SRC ** Schriftgröße zurücksetzen #+BEGIN_SRC emacs-lisp - (defun artr/reset-font-size () - "Reset font size according to the `artr/default-font-size'." - (interactive) + (defun artr/reset-font-size () + "Reset font size according to the `artr/default-font-size'." + (interactive) (artr/adjust-font-size 0)) #+END_SRC @@ -194,8 +194,8 @@ size. This function also handles icons and modeline font sizes." * Magit Magit ist ein git-Client für Emacs: [[https://magit.vc/manual/magit/#Top][Magit User Manual]] #+BEGIN_SRC emacs-lisp - (use-package magit - :bind ("C-x g" . magit-status)) + (use-package magit + :bind ("C-x g" . magit-status)) #+END_SRC * Fenster @@ -208,21 +208,21 @@ size. This function also handles icons and modeline font sizes." | C-3 | Neues Fenster daneben | #+BEGIN_SRC emacs-lisp - (defun artr/split-window-below-and-switch () - "Split the window below, then switch to the new window." - (interactive) + (defun artr/split-window-below-and-switch () + "Split the window below, then switch to the new window." + (interactive) (split-window-below) (other-window 1)) - (defun artr/split-window-right-and-switch () - "Split the window right, then switch to the new window." - (interactive) + (defun artr/split-window-right-and-switch () + "Split the window right, then switch to the new window." + (interactive) (split-window-right) (other-window 1)) - (global-set-key (kbd "C-1") 'delete-other-windows) - (global-set-key (kbd "C-2") 'artr/split-window-below-and-switch) - (global-set-key (kbd "C-3") 'artr/split-window-right-and-switch) + (global-set-key (kbd "C-1") 'delete-other-windows) + (global-set-key (kbd "C-2") 'artr/split-window-below-and-switch) + (global-set-key (kbd "C-3") 'artr/split-window-right-and-switch) #+END_SRC ** wechseln @@ -236,11 +236,11 @@ size. This function also handles icons and modeline font sizes." | M-O | ace-swap-windows | #+BEGIN_SRC emacs-lisp - (use-package ace-window - :init (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) - aw-scope 'frame) - :bind (("M-o" . ace-window) - ("M-O" . ace-swap-window))) + (use-package ace-window + :init (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) + aw-scope 'frame) + :bind (("M-o" . ace-window) + ("M-O" . ace-swap-window))) #+END_SRC ** anordnen @@ -250,8 +250,8 @@ size. This function also handles icons and modeline font sizes." | C-c | nächste Fensterkonfiguration | #+BEGIN_SRC emacs-lisp - (use-package winner - :config (winner-mode)) + (use-package winner + :config (winner-mode)) #+END_SRC [[https://depp.brause.cc/eyebrowse/][eyebrowse]] @@ -265,38 +265,38 @@ size. This function also handles icons and modeline font sizes." | C-c w , | Fensterkonfiguration benennen | #+BEGIN_SRC emacs-lisp - (use-package eyebrowse - :bind (("C-c w ." . eyebrowse-switch-to-window-config) - ("C-c w ," . eyebrowse-rename-window-config) - ("C-c w DEL" . eyebrowse-close-window-config) - ("C-c w k" . eyebrowse-close-window-config) - ("C-c w n" . eyebrowse-create-window-config)) + (use-package eyebrowse + :bind (("C-c w ." . eyebrowse-switch-to-window-config) + ("C-c w ," . eyebrowse-rename-window-config) + ("C-c w DEL" . eyebrowse-close-window-config) + ("C-c w k" . eyebrowse-close-window-config) + ("C-c w n" . eyebrowse-create-window-config)) :init (setq eyebrowse-keymap-prefix (kbd "C-c w") - eyebrowse-wrap-around t - eyebrowse-mode-line-style 'always - eyebrowse-mode-line-separator "|") - (eyebrowse-mode t)) + eyebrowse-wrap-around t + eyebrowse-mode-line-style 'always + eyebrowse-mode-line-separator "|") + (eyebrowse-mode t)) #+END_SRC ** bezeichnen Die Fenster werden mit "Projektname | Dateiname" bezeichnet. #+BEGIN_SRC emacs-lisp - (setq-default frame-title-format - '((:eval - (let ((project-name (projectile-project-name))) - (unless (string= "-" project-name) - (format "%s| " project-name)))) - "%b")) ; project-name| file-name + (setq-default frame-title-format + '((:eval + (let ((project-name (projectile-project-name))) + (unless (string= "-" project-name) + (format "%s| " project-name)))) + "%b")) ; project-name| file-name #+END_SRC * Help [[https://github.com/Wilfred/helpful][Helpful]] - Eine Context-Hilfe mit mehr Informationen #+BEGIN_SRC emacs-lisp - (use-package helpful - :bind (([remap describe-function] . helpful-callable) - ([remap describe-variable] . helpful-variable) - ([remap describe-key] . helpful-key) - :map emacs-lisp-mode-map - ("C-c C-d" . helpful-at-point))) + (use-package helpful + :bind (([remap describe-function] . helpful-callable) + ([remap describe-variable] . helpful-variable) + ([remap describe-key] . helpful-key) + :map emacs-lisp-mode-map + ("C-c C-d" . helpful-at-point))) #+END_SRC * Modeline @@ -304,21 +304,21 @@ size. This function also handles icons and modeline font sizes." [[https://github.com/tarsius/minions][A minor-mode menu for the mode line]] - minions [[https://github.com/emacsorphanage/anzu][anzu.el]] - displays match information in the mode-line in various search modes #+BEGIN_SRC emacs-lisp - (use-package doom-modeline - :custom (doom-modeline-icon t) - (doom-modeline-minor-modes t) - (doom-modeline-unicode-fallback t) - (doom-modeline-mu4e nil) - (doom-modeline-buffer-encoding nil) - :init - :hook (after-init . doom-modeline-mode)) + (use-package doom-modeline + :custom (doom-modeline-icon t) + (doom-modeline-minor-modes t) + (doom-modeline-unicode-fallback t) + (doom-modeline-mu4e nil) + (doom-modeline-buffer-encoding nil) + :init + :hook (after-init . doom-modeline-mode)) - (use-package minions - :hook (doom-modeline-mode . minions-mode)) + (use-package minions + :hook (doom-modeline-mode . minions-mode)) - (use-package anzu - :after isearch - :config (global-anzu-mode)) + (use-package anzu + :after isearch + :config (global-anzu-mode)) #+END_SRC * Helm @@ -347,143 +347,178 @@ size. This function also handles icons and modeline font sizes." (use-package helm :demand :bind ("M-x" . helm-M-x) - ("C-h a" . helm-apropos) - ("C-c h" . helm-mini) - ("C-x C-f" . helm-find-files) - ("C-x f" . helm-recentf) - ("C-x b" . helm-buffers-list) - ("C-x c b" . helm-filtered-bookmarks) - ("C-x c o" . helm-occur) - ("C-x c s" . helm-swoop) - ("C-x c SPC" . helm-all-mark-rings) - ("M-y" . helm-show-kill-ring) + ("C-h a" . helm-apropos) + ("C-c h" . helm-mini) + ("C-x C-f" . helm-find-files) + ("C-x f" . helm-recentf) + ("C-x b" . helm-buffers-list) + ("C-x c b" . helm-filtered-bookmarks) + ("C-x c o" . helm-occur) + ("C-x c s" . helm-swoop) + ("C-x c SPC" . helm-all-mark-rings) + ("M-y" . helm-show-kill-ring) :preface (require 'helm-config) :config (helm-mode 1)) - (use-package helm-icons - :after helm - :config + (use-package helm-icons + :after helm + :config (treemacs-resize-icons artr/default-icon-size) (helm-icons-enable)) - (use-package helm-swoop - :after helm - :chords + (use-package helm-swoop + :after helm + :chords ("js" . helm-swoop) ("jp" . helm-swoop-back-to-last-point) - :init + :init (bind-key "M-m" 'helm-swoop-from-isearch isearch-mode-map)) + + (use-package helm-descbinds + :init + (setq helm-descbinds-window-style 'split-window) + :bind ("C-h b" . helm-descbinds)) #+END_SRC * Dateien und Buffer ** Dired [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html][Dired, the Directory Editor]] #+BEGIN_SRC emacs-lisp - (use-package dired - :ensure nil - :config + (use-package dired + :ensure nil + :config ;; Always delete and copy recursively (setq dired-recursive-deletes 'always - dired-recursive-copies 'always) + dired-recursive-copies 'always) (when (executable-find "ls") - ;; Using `insert-directory-program' - (setq ls-lisp-use-insert-directory-program t) - ;; Show directory first - (setq dired-listing-switches "-alh --group-directories-first"))) - ;; Show git info in dired - (use-package dired-git-info - :bind (:map dired-mode-map - (")" . dired-git-info-mode))) - ;; Allow rsync from dired buffers - (use-package dired-rsync - :bind (:map dired-mode-map - ("C-c C-r" . dired-rsync))) - ;;Icons - (use-package all-the-icons-dired - :hook (dired-mode . all-the-icons-dired-mode)) + ;; Using `insert-directory-program' + (setq ls-lisp-use-insert-directory-program t) + ;; Show directory first + (setq dired-listing-switches "-alh --group-directories-first"))) + ;; Show git info in dired + (use-package dired-git-info + :bind (:map dired-mode-map + (")" . dired-git-info-mode))) + ;; Allow rsync from dired buffers + (use-package dired-rsync + :bind (:map dired-mode-map + ("C-c C-r" . dired-rsync))) + ;;Icons + (use-package all-the-icons-dired + :hook (dired-mode . all-the-icons-dired-mode)) #+END_SRC ** Treemacs [[https://github.com/Alexander-Miller/treemacs][Treemacs - a tree layout file explorer for Emacs]] #+BEGIN_SRC emacs-lisp - (use-package treemacs - :diminish - :commands (treemacs-follow-mode - treemacs-filewatch-mode - treemacs-fringe-indicator-mode - treemacs-git-mode - treemacs) - :bind (([f8] . treemacs) - ("M-0" . treemacs-select-window) - ("C-x 1" . treemacs-delete-other-windows) - ("C-x t 1" . treemacs-delete-other-windows) - ("C-x t t" . treemacs) - ("C-x t b" . treemacs-bookmark) - ("C-x t C-t" . treemacs-find-file) - ("C-x t M-t" . treemacs-find-tag))) - #+END_SRC + (use-package treemacs + :diminish + :commands (treemacs-follow-mode + treemacs-filewatch-mode + treemacs-fringe-indicator-mode + treemacs-git-mode + treemacs) + :bind (([f8] . treemacs) + ("M-0" . treemacs-select-window) + ("C-x 1" . treemacs-delete-other-windows) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t b" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + #+END_SRC * Text ** Textbreite - Der Text wird nach 90 Zeichen umgebrochen. Jedoch nur in der Ansicht! - [[https://github.com/luisgerhorst/virtual-auto-fill][virtual-auto-fill]] - display unfilled text in a readable way #+BEGIN_SRC emacs-lisp - (setq-default fill-column 90) - (setq column-number-mode t) - (use-package virtual-auto-fill - :hook (text-mode . virtual-auto-fill-mode)) + (setq-default fill-column 90) + (setq column-number-mode t) #+END_SRC -* Snippets - Mit Yasnippet lassen sich Templates definieren und mit einer Tastenkombination belegen. - Die Templates werden im Ordner /snippets/ jeweils unter einem Mode-spezifischen Ordner gespeichert. - Das Paket /yasnippet-snippets/ stellt eine Auswahl an Templates zur Verfügung. Mit /helm-c-yasnippet/ lassen sich die Snippets mit Helm durchsuchen und filtern. +** Whitespace + #+BEGIN_SRC emacs-lisp + (use-package whitespace + :hook (before-save . whitespace-cleanup)) + (setq-default sentence-end-double-space nil) + #+END_SRC - | Key | Aktion | - |-----------+------------------------| - | C-c & C-n | neues Template anlegen | - | C-c & C-s | Template einfügen | - | C-c & C-v | Template öffnen | - |-----------+------------------------| - | C-c y | Templates auswählen | +** Tabulators + #+BEGIN_SRC emacs-lisp + (setq-default + indent-tabs-mode nil ; Use spaces instead of tabs + tab-width 4) + #+END_SRC - #+BEGIN_SRC emacs-lisp - (use-package yasnippet - :diminish yas-minor-mode - :hook (after-init . yas-global-mode)) +** Copy/Paste + #+BEGIN_SRC emacs-lisp + (delete-selection-mode) + #+END_SRC - (use-package yasnippet-snippets - :after yasnippet) +** Klammern + #+BEGIN_SRC emacs-lisp + (electric-pair-mode) + (show-paren-mode 1) + + (use-package rainbow-delimiters + :hook + (prog-mode . rainbow-delimiters-mode)) + #+END_SRC - (use-package helm-c-yasnippet - :bind (("C-c y" . helm-yas-complete))) - #+END_SRC * Completion - #+BEGIN_SRC emacs-lisp - (use-package company - :bind ("M-/" . company-complete) - :hook (after-init . global-company-mode) - :init (setq company-idle-delay 0)) +** Company + #+BEGIN_SRC emacs-lisp + (use-package company + :bind ("M-/" . company-complete) + :hook (after-init . global-company-mode) + :init (setq company-idle-delay 0)) + + (use-package helm-company + :after company helm + :bind (:map company-mode-map + ("C-:" . helm-company) + :map company-active-map + ("C-:" . helm-company))) + #+END_SRC +** Snippets + Mit Yasnippet lassen sich Templates definieren und mit einer Tastenkombination belegen. + Die Templates werden im Ordner /snippets/ jeweils unter einem Mode-spezifischen Ordner gespeichert. + + Das Paket /yasnippet-snippets/ stellt eine Auswahl an Templates zur Verfügung. Mit /helm-c-yasnippet/ lassen sich die Snippets mit Helm durchsuchen und filtern. + + | Key | Aktion | + |-----------+------------------------| + | C-c & C-n | neues Template anlegen | + | C-c & C-s | Template einfügen | + | C-c & C-v | Template öffnen | + |-----------+------------------------| + | C-c y | Templates auswählen | + + #+BEGIN_SRC emacs-lisp + (use-package yasnippet + :diminish yas-minor-mode + :hook (after-init . yas-global-mode)) + + (use-package yasnippet-snippets + :after yasnippet) + + (use-package helm-c-yasnippet + :bind (("C-c y" . helm-yas-complete))) + #+END_SRC - (use-package helm-company - :after company helm - :bind (:map company-mode-map - ("C-:" . helm-company) - :map company-active-map - ("C-:" . helm-company))) - #+END_SRC * Projectile #+BEGIN_SRC emacs-lisp - (use-package projectile - :config + (use-package projectile + :config (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) (projectile-mode 1) - :init + :init (setq projectile-completion-system 'helm)) - #+END_SRC -* Whitespace - #+BEGIN_SRC emacs-lisp - (use-package whitespace - :hook (before-save . whitespace-cleanup)) + #+END_SRC + +* Which-Key + #+BEGIN_SRC emacs-lisp + (use-package which-key + :init + (which-key-mode)) #+END_SRC