diff options
| author | Dominik Kaiser | 2025-02-10 10:21:25 +0100 |
|---|---|---|
| committer | Dominik Kaiser | 2025-02-10 10:21:25 +0100 |
| commit | f977d908766c077319a096527278674fd2267856 (patch) | |
| tree | 2689eb412c9e4fb0bc2bb885c78f539f5780a22e | |
| parent | 0094d18d7cd55a3a683328042d711f750e078347 (diff) | |
| download | emacs-f977d908766c077319a096527278674fd2267856.tar.gz emacs-f977d908766c077319a096527278674fd2267856.zip | |
Add 42 header
| -rw-r--r-- | 42header.el | 65 | ||||
| -rw-r--r-- | README.org | 5 | ||||
| -rw-r--r-- | init.el | 2 |
3 files changed, 72 insertions, 0 deletions
diff --git a/42header.el b/42header.el new file mode 100644 index 0000000..401fcf2 --- /dev/null +++ b/42header.el @@ -0,0 +1,65 @@ +(defconst 42name "dkaiser") +(defconst 42email "dkaiser@student.42heilbronn.de") + +(defun trim-or-fill-string (string length) + (if (> (length string) length) + (substring string 0 length) + (concat string (make-string (- length (length string)) ?\s)))) + +(defun check-42header () + (save-excursion + (goto-char (point-min)) + (equal (thing-at-point 'line t) + (concat "/* " (make-string 74 ?*) " */\n")))) + +(defun add-42header () + (save-excursion + (goto-char (point-min)) + (insert "/* " (make-string 74 ?*) " */\n") + (insert "/* " (make-string 74 ? ) " */\n") + (insert "/* ::: :::::::: */\n") + (insert "/* " + (trim-or-fill-string (file-name-nondirectory buffer-file-name) 43) + " :+: :+: :+: */\n") + (insert "/* +:+ +:+ +:+ */\n") + (insert "/* By: " + (trim-or-fill-string (concat 42name " <" 42email ">") 39) + " +#+ +:+ +#+ */\n") + (insert "/* +#+#+#+#+#+ +#+ */\n") + (insert "/* Created: " + (format-time-string "%Y/%m/%d %H:%M:%S" (nth 5 (file-attributes buffer-file-name))) + " by " + (trim-or-fill-string 42name 11) + " #+# #+# */\n") + (insert "/* Updated: " + (format-time-string "%Y/%m/%d %H:%M:%S") + " by " + (trim-or-fill-string 42name 11) + " ### ########.fr */\n") + (insert "/* " (make-string 74 ? ) " */\n") + (insert "/* " (make-string 74 ?*) " */\n\n"))) + +(defun update-42header () + (save-excursion + (goto-char (point-min)) + (forward-line 8) + (kill-line) + (insert "/* Updated: " + (format-time-string "%Y/%m/%d %H:%M:%S") + " by " + (trim-or-fill-string 42name 11) + " ### ########.fr */"))) + +(defun add-or-update-42header () + (interactive) + (save-excursion + (if (check-42header) + (funcall #'update-42header) + (funcall #'add-42header)))) + +(defun update-42header-if-existing () + (if (check-42header) + (funcall #'update-42header))) + +(add-hook 'before-save-hook #'update-42header-if-existing) +(global-set-key (kbd "C-c h") 'add-or-update-42header) @@ -107,3 +107,8 @@ These settings ensure that block highlights aren't visible when collapsed. #+begin_src elisp (setq org-startup-indented t) #+end_src +* 42 +** Header +#+begin_src elisp + (load "~/.config/emacs/42header.el") +#+end_src @@ -65,3 +65,5 @@ '(org-block-end-line ((t (:inherit default :background nil))))) (setq org-startup-indented t) + +(load "~/.config/emacs/42header.el") |
