Whitespaces, Treemacs, Company und Projectile

This commit is contained in:
2020-12-27 12:26:48 +01:00
parent 24c5306512
commit d1be362230

View File

@@ -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 ("<f12>" . '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