chore: Push current state

This commit is contained in:
Philip Gaber 2025-06-25 09:20:32 +02:00
parent 94ec3f0eef
commit 51788861d2
No known key found for this signature in database
GPG Key ID: 8D49EBCA3F8B797C
9 changed files with 268 additions and 134 deletions

View File

@ -1,5 +1,186 @@
* How To Use * How To Use
#+begin_src sh :results output scalar #+begin_src sh :results output scalar
ln -sf <THIS_REPO> ~/.emacs.d cp -r <USB_MOUNT> ~/.emacs.d
chown -R <YOUR_USER> ~/.emacs.d
# ln -sf <THIS_REPO> ~/.emacs.d
#+end_src
* Introduction
*"Original" EMACS:*
- 1976
- David A. Moon & Guy L. Steele Jr.
- Set of macros for the TECO editor (char based editor)
*Gosling Emacs:*
- 1981
- James Gosling (the Java® guy)
*GNU Emacs:*
- 1984
- Richard Stallman aka. [[http://stallman.org/saint.html][Saint IGNUcius]] /(saint in the Church of Emacs)/
*Latest Release*: Emacs 30.1
*Released:* February, 2025
Emacs uses ~emacs-lisp~:
- lisp dialect
- functional (not pure though)
- specially developed to configure Emacs
** Variables
#+begin_src emacs-lisp :results output scalar
(defvar my/var nil "My very own variable")
(setq my/var "Hey Emacs!")
(print my/var)
;; There are more... (setq-local, setq-default)
#+end_src
#+RESULTS:
: "
: \"Hey Emacs!\"
: "
** Functions
#+begin_src emacs-lisp :results output scalar
(defun test ()
"Docstring"
(interactive)
(print my/var))
(test)
#+end_src
#+begin_src emacs-lisp :results output scalar
(defun more (a b &optional c d &rest e)
(interactive)
; 'a 'b 'c 'd '(...)
(print (concat a b c d (mapconcat #'identity e ""))))
(more "1" "2" "3" "4" "5" "6" "7")
(more "1" "2" "3")
#+end_src
#+RESULTS:
: "
: \"1234567\"
:
: \"123\"
: "
#+begin_src emacs-lisp :results output scalar
(defun print-name (&rest args)
(interactive)
(let ((first (plist-get args :first))
(last (or (plist-get args :last) "?")))
(princ last)
(when first
(princ ", ")
(princ first))))
(print-name :first "Philip" :last "B1")
#+end_src
#+RESULTS:
: "B1, Philip"
** Let Bindings
#+begin_src emacs-lisp :results output scalar
(defun another-test (a b)
"Multiplies `A' times `B' and adds them afterwards"
(interactive)
(let* ((x a)
(y (* x b)))
(+ x y)))
(print (another-test 2 4))
#+end_src
#+RESULTS:
: "
: 10
: "
** Hooks
#+begin_src emacs-lisp :results output scalar
(defun my/fun () (message "Emacs is cool!"))
(add-hook 'after-save-hook #'my/fun)
;; (remove-hook 'after-save-hook 'my/fun)
#+end_src
** Package Management & Configuration
*Package Manager*
- https://github.com/radian-software/straight.el
#+begin_src emacs-lisp :results output scalar
; Standard is package.el
(straight-use-package 'nix-mode)
#+end_src
#+RESULTS:
: ""
*Configuration Macro*
- https://github.com/jwiegley/use-package
#+begin_src emacs-lisp :results output scalar
(straight-use-package 'use-package)
;; Macro that provides syntactic sugar
(use-package color-moccur
;; Creates autoloads for these commands
;; Defers loading of the module until command is used
:commands (isearch-moccur isearch-all)
;; Keybindings
:bind (("M-s O" . moccur)
:map isearch-mode-map
("M-o" . isearch-moccur)
("M-O" . isearch-moccur-all))
;; Before package is loaded
:init
(setq isearch-lazy-highlight t)
;; After package is loaded
:config
(use-package moccur-edit))
#+end_src
** Tour de Emacs Config
.emacs.d/
├── early-init.el
├── init.el
└── cnf/
├── app
└── lang
** Tasks
*** Keybinding
- Create a new keybinding for the ~emacs-lisp-mode~ that executes ~eval-last-sexp~ with the binding ~SPC x e~ while in ~normal~ mode
**** Possible Solution
#+begin_src emacs-lisp :results output scalar
(my-leader
:keymaps 'emacs-lisp-mode-map
:states 'normal
"x" '(:ignore t :which-key "Eval")
"x e" 'eval-last-sexp
"x b" 'eval-buffer)
#+end_src
*** Package
- Install a new package using straight, e.g. ~swiper~ (or something else)
**** Possible Solution
#+begin_src emacs-lisp :results output scalar
(straight-use-package 'swiper)
#+end_src #+end_src

View File

@ -5,21 +5,7 @@
;; ORD-MODE: Basically jupiter notebooks/markdown on steroids ;; ORD-MODE: Basically jupiter notebooks/markdown on steroids
(with-eval-after-load 'org (require 'a-orgmode)) (with-eval-after-load 'org (require 'a-orgmode))
;; MAGIT: A nice git frontend (require 'a-magit)
(straight-use-package 'magit)
(setq magit-bury-buffer-function #'quit-window
magit-display-buffer-function #'display-buffer)
(with-eval-after-load 'magit
(transient-append-suffix 'magit-push "-u"
'(1 "=s" "Skip gitlab pipeline" "--push-option=ci.skip"))
(transient-append-suffix 'magit-push "=s"
'(1 "=D" "DEBUG" "--push-option=ci.variable=DEBUG=1")) ;; no special meaning for gitlab
(transient-append-suffix 'magit-push "=D"
'(1 "=V" "Set CI variable" "--push-option=ci.variable=")) ;; Will prompt, can only set one extra variable
(transient-append-suffix 'magit-push "=V"
'(1 "=O" "Set push option" "--push-option="))
)
;; YASNIPPET: snippets ;; YASNIPPET: snippets
(straight-use-package 'yasnippet) (straight-use-package 'yasnippet)
@ -144,4 +130,4 @@ modified and not saved. `ARGS' is the rest of the arguments."
;; Width used to draw the column indicator + used in fill-paragraph ;; Width used to draw the column indicator + used in fill-paragraph
(setq-default fill-column 90) (setq-default fill-column 90)
(provide 'additionals) (provide 'additionals)

View File

@ -5,32 +5,7 @@
(setq dired-listing-switches "-lFahv --group-directories-first" (setq dired-listing-switches "-lFahv --group-directories-first"
dired-dwim-target t dired-dwim-target t
delete-by-moving-to-trash t delete-by-moving-to-trash t
dired-ls-F-marks-symlinks t dired-ls-F-marks-symlinks t)
dired-compress-files-alist '(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o")
("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o")
("\\.tar\\.xz\\'" . "tar -cf - %i | xz -c9 > %o")
("\\.tar\\.zst\\'" . "tar -cf - %i | zstd -19 -o %o")
("\\.tar\\.lz\\'" . "tar -cf - %i | lzip -c9 > %o")
("\\.tar\\.lzo\\'" . "tar -cf - %i | lzop -c9 > %o")
("\\.zip\\'" . "zip %o -r --filesync %i")
("\\.pax\\'" . "pax -wf %o %i"))
dired-compress-file-suffixes '(("\\.tar\\.gz\\'" #1="" "gzip -dc %i | tar -xf -")
("\\.tar\\.xz\\'" #1# "xz -dc %i | tar -xf -")
("\\.tgz\\'" #1# "gzip -dc %i | tar -xf -")
("\\.gz\\'" #1# "gzip -d")
("\\.lz\\'" #1# "lzip -d")
("\\.Z\\'" #1# "uncompress")
("\\.z\\'" #1# "gzip -d")
("\\.dz\\'" #1# "dictunzip")
("\\.tbz\\'" ".tar" "bunzip2")
("\\.bz2\\'" #1# "bunzip2")
("\\.xz\\'" #1# "unxz")
("\\.zip\\'" #1# "7z x -aoa -o%o %i")
("\\.tar\\.zst\\'" #1# "unzstd -c %i | tar -xf -")
("\\.tzst\\'" #1# "unzstd -c %i | tar -xf -")
("\\.zst\\'" #1# "unzstd --rm")
("\\.7z\\'" #1# "7z x -aoa -o%o %i")
("\\.tar\\'" ".tgz" nil)))
(add-hook 'dired-mode-hook (add-hook 'dired-mode-hook
(lambda () (lambda ()
@ -68,8 +43,7 @@
(straight-use-package 'dired-launch) (straight-use-package 'dired-launch)
(setq dired-launch-command '("xdg-open")) (setq dired-launch-command '("xdg-open"))
(setf dired-launch-extensions-map (setf dired-launch-extensions-map
'(;; xml files with bpmn in it '(("xopp" ("xournalpp"))
("xopp" ("xournalpp"))
("drawio.html" ("drawio")) ("drawio.html" ("drawio"))
("drawio" ("drawio")))) ("drawio" ("drawio"))))
@ -80,4 +54,4 @@
:keymaps 'dired-mode-map :keymaps 'dired-mode-map
"W" 'dired-launch-command))) "W" 'dired-launch-command)))
(provide 'a-dired) (provide 'a-dired)

View File

@ -2,6 +2,9 @@
;; NOTE: org-mode is required in essentials.el so we use the git instead of the shipped version ; ;; NOTE: org-mode is required in essentials.el so we use the git instead of the shipped version ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FIXME: A recent org version introduced this feature which currently breaks stuff
(setq org-element-cache-persistent nil)
;; HTMLIZE: html export for orgmode ;; HTMLIZE: html export for orgmode
(straight-use-package 'htmlize) (straight-use-package 'htmlize)
@ -87,7 +90,7 @@ modified here."
org-export-in-background nil org-export-in-background nil
org-html-htmlize-output-type 'inline-css org-html-htmlize-output-type 'inline-css
;; REQUIRES: y -S plantuml graphviz ;; REQUIRES: plantuml graphviz
;; org-plantuml-jar-path (expand-file-name "/usr/share/java/plantuml/plantuml.jar") ;; org-plantuml-jar-path (expand-file-name "/usr/share/java/plantuml/plantuml.jar")
;; Visuals like nice looking headings, fontification (bold, italic, etc.) ;; Visuals like nice looking headings, fontification (bold, italic, etc.)
@ -234,11 +237,11 @@ modified here."
;; ORG-DOWNLOAD ;; ORG-DOWNLOAD
;; TODO: Setup for seemless insertion of screenshots ;; TODO: Setup for seemless insertion of screenshots
(setq org-download-screenshot-file "~/sync/screenshots/tmp/orgcapture.png" ;; (setq org-download-screenshot-file "~/sync/screenshots/tmp/orgcapture.png"
org-download-screenshot-method "grim -g $(slurp -b '#000000a0' -c '#00000000') -o %s" ;; org-download-screenshot-method "grim -g $(slurp -b '#000000a0' -c '#00000000') -o %s"
org-download-image-attr-list '("#+ATTR_ORG: :width 600") ;; org-download-image-attr-list '("#+ATTR_ORG: :width 600")
org-download-annotate-function (lambda(link) "")) ;; org-download-annotate-function (lambda(link) ""))
(setq-default org-download-image-dir "./ORGPICS") ;; (setq-default org-download-image-dir "./ORGPICS")
;; KEYBINDINGS ;; KEYBINDINGS
(my-leader (my-leader

View File

@ -14,83 +14,87 @@
;; "<XF86AudioLowerVolume>" 'evil-scroll-down ;; "<XF86AudioLowerVolume>" 'evil-scroll-down
;; "<XF86AudioRaiseVolume>" 'evil-scroll-up ;; "<XF86AudioRaiseVolume>" 'evil-scroll-up
) )
;; This is a reference to the leader key defined in essentials.el ;; This is a reference to the leader key defined in essentials.el
;; It basically means: <YOUR-LEADER> + whatever is configured below ;; It basically means: <YOUR-LEADER> + whatever is configured below
;; E.g. "SPC SPC" actually means "SPC SPC SPC" because it is prefix with `my-leader' ;; E.g. "SPC SPC" actually means "SPC SPC SPC" because it is prefix with `my-leader'
(my-leader (my-leader
;; These are the states for which the keybinding should work ;; These are the states for which the keybinding should work
:states '(normal visual emacs) :states '(normal visual emacs)
;; This is the keymap for which the keybinding should work. ;; This is the keymap for which the keybinding should work.
;; Override is the GLOBAL keymap but there are specific ones for each mode ;; Override is the GLOBAL keymap but there are specific ones for each mode
:keymaps 'override :keymaps 'override
;; This ignores the sole keybinding of "SPC SPC" to use this "namespace" for mode specific bindings ;; This ignores the sole keybinding of "SPC SPC" to use this "namespace" for mode specific bindings
"SPC" '(:ignore t :which-key "Mode Specific Binds") "SPC" '(:ignore t :which-key "Mode Specific Binds")
"SPC SPC" 'counsel-M-x "SPC SPC" 'counsel-M-x
"f" 'counsel-find-file "u" '(lambda ()
"g" 'magit-status (interactive)
"h" 'evil-avy-goto-line (let ((current-prefix-arg 1))
"i" 'counsel-imenu (call-interactively #'eval-last-sexp)))
"y" 'counsel-yank-pop
";" 'evilnc-comment-or-uncomment-lines
"." 'save-buffer
;; window stuff "f" 'counsel-find-file
"w" '(:ignore t :which-key "Window") "g" 'magit-status
;; quick switch to other window "h" 'evil-avy-goto-line
"a" 'ace-window "i" 'counsel-imenu
"w v" 'split-window-right "y" 'counsel-yank-pop
"w h" 'split-window-below ";" 'evilnc-comment-or-uncomment-lines
"w f" 'toggle-maximize-buffer "." 'save-buffer
"w L" 'windsize-right
"w H" 'windsize-left
"w J" 'windsize-down
"w K" 'windsize-up
;; switch stuff ;; window stuff
"s" '(:ignore t :which-key "Switch") "w" '(:ignore t :which-key "Window")
"s b" 'switch-to-buffer ;; quick switch to other window
"s n" 'switch-to-next-buffer "a" 'ace-window
"s p" 'switch-to-prev-buffer "w v" 'split-window-right
"s s" 'counsel-switch-buffer "w h" 'split-window-below
"s a" 'ace-swap-window "w f" 'toggle-maximize-buffer
;; kill stuff "w L" 'windsize-right
"k" '(:ignore t :which-key "Kill") "w H" 'windsize-left
"k b" 'kill-buffer "w J" 'windsize-down
"k w" 'delete-window "w K" 'windsize-up
"k W" 'kill-buffer-and-window
"k o b" 'kill-some-buffers
"k o w" 'delete-other-windows
"k q q" 'kill-emacs
"k k" 'kill-current-buffer
;; buffer stuff ;; switch stuff
"b" '(:ignore t :which-key "Buffer (revert)") "s" '(:ignore t :which-key "Switch")
"b r" 'revert-buffer "s b" 'switch-to-buffer
"b a r" 'auto-revert-mode "s n" 'switch-to-next-buffer
"s p" 'switch-to-prev-buffer
"s s" 'counsel-switch-buffer
"s a" 'ace-swap-window
;; kill stuff
"k" '(:ignore t :which-key "Kill")
"k b" 'kill-buffer
"k w" 'delete-window
"k W" 'kill-buffer-and-window
"k o b" 'kill-some-buffers
"k o w" 'delete-other-windows
"k q q" 'kill-emacs
"k k" 'kill-current-buffer
;; edit stuff ;; buffer stuff
"e" '(:ignore t :which-key "Edit") "b" '(:ignore t :which-key "Buffer (revert)")
"e c" '((lambda() (interactive) (dired my/emacsconf)) :which-key "edit emacs config") "b r" 'revert-buffer
"b a r" 'auto-revert-mode
;; ui stuff ;; edit stuff
"q" '(:ignore t :which-key "Quality :)") "e" '(:ignore t :which-key "Edit")
"q t" 'phga/cycle-themes "e c" '((lambda() (interactive) (dired (concat user-emacs-directory))) :which-key "edit emacs config")
"q =" 'phga/text-scale-adjust
;; tools ;; ui stuff
"t u" 'vundo "q" '(:ignore t :which-key "Quality :)")
"q t" 'phga/cycle-themes
"q =" 'phga/text-scale-adjust
;; describe stuff ;; tools
"?" '(:ignore t :which-key "Describe") "t u" 'vundo
"? v" 'describe-variable
"? f" 'describe-function
"? c" 'describe-char
"? m" 'describe-mode
"? k" 'describe-key
"? F" 'describe-face
)
(provide 'global-keybindings) ;; describe stuff
"?" '(:ignore t :which-key "Describe")
"? v" 'describe-variable
"? f" 'describe-function
"? c" 'describe-char
"? m" 'describe-mode
"? k" 'describe-key
"? F" 'describe-face
)
(provide 'global-keybindings)

View File

@ -6,8 +6,7 @@
;; Defer garbage collection further back in the startup process ;; Defer garbage collection further back in the startup process
(setq gc-cons-threshold most-positive-fixnum) (setq gc-cons-threshold most-positive-fixnum)
;; In Emacs 27+, package initialization occurs before `user-init-file' is ;; In Emacs 27+, package initialization occurs before `user-init-file' is
;; loaded, but after `early-init-file'. Doom handles package initialization, so ;; loaded, but after `early-init-file'. We use `straight' as our package manager
;; we must prevent Emacs from doing it early!
(setq package-enable-at-startup nil) (setq package-enable-at-startup nil)
(advice-add #'package--ensure-init-file :override #'ignore) (advice-add #'package--ensure-init-file :override #'ignore)

View File

@ -26,6 +26,7 @@
(require 'additionals) (require 'additionals)
(require 'global-keybindings) (require 'global-keybindings)
(require 'functions) (require 'functions)
(require 'programming)
;; set gc values back to smth reasonable ;; set gc values back to smth reasonable
(setq gc-cons-threshold 104857600) ;; 100 MegaByte (LSP) (setq gc-cons-threshold 104857600) ;; 100 MegaByte (LSP)

View File

@ -1,7 +0,0 @@
# -*- mode: snippet -*-
# name: clocktable
# key: <ct
# --
#+BEGIN: clocktable :scope file :compact t :emphasize t :lang de :link t :block week$0
#+END

View File

@ -1,7 +0,0 @@
# -*- mode: snippet -*-
# name: drill
# key: <d
# --
*** $1 :drill:
$2
**** Answer