diff --git a/config.org b/config.org index c550b76..d26f812 100644 --- a/config.org +++ b/config.org @@ -1,5 +1,6 @@ #+TODO: | DISABLED(d) #+STARTUP: overview +#+OPTIONS: \n:t #+TITLE: Meine Emacs-Konfiguration * Benutzerangaben @@ -8,12 +9,12 @@ (setq user-full-name "Ariane Troche") (setq user-mail-address "ariane@familie-troche.de") #+END_SRC - + * Start ** Startfenster - Einige Einstellungen, die den Startbildschirm betreffen: + Einige Einstellungen, die den Startbildschirm betreffen: *** Splash Screen - Der übliche Emacs-Startbildschirm soll nicht angezeigt werden. Damit öffnet sich direkt der scratch-Buffer, welcher komplett leer sein soll. + Der übliche Emacs-Startbildschirm soll nicht angezeigt werden. Damit öffnet sich direkt der scratch-Buffer, welcher komplett leer sein soll. #+BEGIN_SRC emacs-lisp (setq inhibit-splash-screen t) (setq initial-scratch-message nil) @@ -25,7 +26,7 @@ (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) - #+END_SRC + #+END_SRC *** Vollbildschirm Das Fenster wird im Vollbild geöffnet. @@ -46,12 +47,12 @@ #+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-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")) + `((".*" ,(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))) @@ -90,7 +91,7 @@ |-----+----------------| | F12 | Emacs-Neustart | - #+BEGIN_SRC emacs-lisp + #+BEGIN_SRC emacs-lisp (use-package restart-emacs :ensure t :bind ("" . 'restart-emacs)) @@ -108,7 +109,7 @@ ;; for unicode (when (display-graphic-p) (set-fontset-font "fontset-default" nil - (font-spec :size 20 :name "Symbola"))) + (font-spec :size 20 :name "Symbola"))) ;; for emoji (set-fontset-font t @@ -126,8 +127,8 @@ (defconst artr/default-icon-size 15) (set-face-attribute 'default nil - :family artr/default-font-family - :height artr/default-font-size) + :family artr/default-font-family + :height artr/default-font-size) #+END_SRC ** Schriftgröße anpassen @@ -137,12 +138,19 @@ 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 + artr/default-font-size (+ height (face-attribute 'default :height))))) - (set-face-attribute 'default nil :height new-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))) + (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)))) #+END_SRC ** Schrift vergrößern @@ -185,7 +193,7 @@ 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 + #+BEGIN_SRC emacs-lisp (use-package magit :bind ("C-x g" . magit-status)) #+END_SRC @@ -199,7 +207,7 @@ size. This function also handles icons and modeline font sizes." | C-2 | Neues Fenster unterhalb | | C-3 | Neues Fenster daneben | - #+BEGIN_SRC emacs-lisp + #+BEGIN_SRC emacs-lisp (defun artr/split-window-below-and-switch () "Split the window below, then switch to the new window." (interactive) @@ -230,9 +238,9 @@ size. This function also handles icons and modeline font sizes." #+BEGIN_SRC emacs-lisp (use-package ace-window :init (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) - aw-scope 'frame) + aw-scope 'frame) :bind (("M-o" . ace-window) - ("M-O" . ace-swap-window))) + ("M-O" . ace-swap-window))) #+END_SRC ** anordnen @@ -259,33 +267,33 @@ size. This function also handles icons and modeline font sizes." #+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)) + ("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-wrap-around t eyebrowse-mode-line-style 'always eyebrowse-mode-line-separator "|") - (eyebrowse-mode t)) + (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-variable] . helpful-variable) ([remap describe-key] . helpful-key) :map emacs-lisp-mode-map ("C-c C-d" . helpful-at-point))) @@ -298,7 +306,7 @@ size. This function also handles icons and modeline font sizes." #+BEGIN_SRC emacs-lisp (use-package doom-modeline :custom (doom-modeline-icon t) - (doom-modeline-minor-modes t) + (doom-modeline-minor-modes t) (doom-modeline-unicode-fallback t) (doom-modeline-mu4e nil) (doom-modeline-buffer-encoding nil) @@ -339,18 +347,32 @@ 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 + (treemacs-resize-icons artr/default-icon-size) + (helm-icons-enable)) + + (use-package helm-swoop + :after helm + :chords + ("js" . helm-swoop) + ("jp" . helm-swoop-back-to-last-point) + :init + (bind-key "M-m" 'helm-swoop-from-isearch isearch-mode-map)) #+END_SRC * Dateien und Buffer @@ -362,23 +384,23 @@ size. This function also handles icons and modeline font sizes." :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"))) + ;; 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))) + :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))) + :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)) + :hook (dired-mode . all-the-icons-dired-mode)) #+END_SRC ** Treemacs @@ -387,25 +409,81 @@ size. This function also handles icons and modeline font sizes." (use-package treemacs :diminish :commands (treemacs-follow-mode - treemacs-filewatch-mode - treemacs-fringe-indicator-mode - treemacs-git-mode - treemacs) + 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))) + ("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)) #+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 +* Completion + #+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 +* Projectile + #+BEGIN_SRC emacs-lisp + (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 + (setq projectile-completion-system 'helm)) + #+END_SRC +* Whitespace + #+BEGIN_SRC emacs-lisp + (use-package whitespace + :hook (before-save . whitespace-cleanup)) + #+END_SRC