Files
emacs.d/config.org

195 lines
7.0 KiB
Org Mode

#+TODO: | DISABLED(d)
#+STARTUP: overview
#+TITLE: Meine Emacs-Konfiguration
* Benutzerangaben
Name und Emailadresse
#+BEGIN_SRC emacs-lisp
(setq user-full-name "Ariane Troche")
(setq user-mail-address "ariane@familie-troche.de")
#+END_SRC
* Start
** Startfenster
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.
#+BEGIN_SRC emacs-lisp
(setq inhibit-splash-screen t)
(setq initial-scratch-message nil)
#+END_SRC
*** Scrollbar, Toolbar, Menubar
Scrollbar, Toolbar und Menubar werden ausgeblendet.
#+BEGIN_SRC emacs-lisp
(scroll-bar-mode -1)
(tool-bar-mode -1)
(menu-bar-mode -1)
#+END_SRC
*** Vollbildschirm
Das Fenster wird im Vollbild geöffnet.
#+BEGIN_SRC emacs-lisp
(setq initial-frame-alist '((fullscreen . maximized)))
#+END_SRC
** Server
Damit beim Start von Emacs nicht immer ein neuer Prozess gestartet wird, wird Emacs hier schon als Server aufgesetzt.
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html][Using Emacs as a Server]]
#+BEGIN_SRC emacs-lisp
(server-start)
#+END_SRC
** Backup und Autosave
Die Backup- und Autosave-Dateien stören eher, da ich sie noch nie gebraucht habe, sollen sie erst gar nicht angelegt werden.
#+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))
(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)))
#+END_SRC
* Konfigurationsdatei
** Konfigurationsdatei
Ich bastel sehr gerne an meiner Konfigurationsdatei herum. Mit <f1> kann ich sie ganz schnell öffnen und mit <f2> neu laden.
| Key | Funktion |
|-----+----------------------------------------------|
| F1 | Öffne Konfigurationsdatei in anderem Fenster |
| F2 | Konfiguration neu laden, ohne Emacs-Neustart |
#+BEGIN_SRC emacs-lisp
;; Pfade
(setq my/file-init (expand-file-name "init.el" user-emacs-directory))
(setq my/file-config (expand-file-name "config.org" user-emacs-directory))
;; Öffnen
(defun my/find-config-file ()
"Edit my init file in another window."
(interactive)
(find-file my/file-config))
;; Laden
(defun my/reload-emacs-configuration ()
"Reload init.el"
(interactive)
(load-file my/file-init))
;; Keys
(global-set-key (kbd "<f1>") 'my/find-config-file)
(global-set-key (kbd "<f2>") 'my/reload-emacs-configuration)
#+END_SRC
** Neustart
Mit <F12> kann ich Emacs neu starten.
| Key | Funktion |
|-----+----------------|
| F12 | Emacs-Neustart |
#+BEGIN_SRC emacs-lisp
(use-package restart-emacs
:ensure t
:bind ("<f12>" . 'restart-emacs))
#+END_SRC
* 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))
#+END_SRC
* Fenster
** teilen
Funktionen/Tastenkombination um neue Fenster zu erzeugen. Wenn ein neues Fenster erzeugt wird auch direkt dahin wechseln.
| Key | Funktion |
|-----+--------------------------------|
| C-1 | Alle anderen Fenster schließen |
| C-2 | Neues Fenster unterhalb |
| 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)
(split-window-below)
(other-window 1))
(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)
#+END_SRC
** wechseln
[[https://github.com/abo-abo/ace-window][ace-window]]
Bei mehr als 2 Fenstern in der Konfiguration werden die Fenster "durchnummeriert". So können Aktionen gezielt durchgeführt werden.
Die möglichen Aktionen werden mit ? aufgelistet.
Bei 2 Fenstern wird das Fenster einfach gewechselt.
| Key | Funktion |
|-----+-----------------------------------------|
| M-o | ace-windows (? zeigt mögliche Aktionen) |
| 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)))
#+END_SRC
** anordnen
| Key | Funktion |
|-------------+--------------------------------|
| C-c <left> | vorherige Fensterkonfiguration |
| C-c <right> | nächste Fensterkonfiguration |
#+BEGIN_SRC emacs-lisp
(use-package winner
:config (winner-mode))
#+END_SRC
[[https://depp.brause.cc/eyebrowse/][eyebrowse]]
Es können Fensterkonfigurationen angelegt und wiederhergestellt werden. Das Speichern der Konfigurationen passiert in sogenannten Slots, die von 0,... durchnummeriert werden.
Mit C-c w 0 kann dann direkt die zugehörige Konfiguration wiederhergestellt werden.
| Key | Funktion |
|---------+-------------------------------|
| C-c w | key-map |
| C-c w n | neue Fensterkonfiguration |
| C-c w . | Fensterkonfiguration wechseln |
| 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))
: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))
#+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
#+END_SRC