From: Dominik Kaiser Date: Mon, 10 Feb 2025 09:21:25 +0000 (+0100) Subject: Add 42 header X-Git-Url: https://git.dkaiser.de/?a=commitdiff_plain;h=f977d908766c077319a096527278674fd2267856;p=config%2Femacs.git Add 42 header --- 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) diff --git a/README.org b/README.org index f88135a..a792943 100644 --- a/README.org +++ b/README.org @@ -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 diff --git a/init.el b/init.el index cbd3b7e..a50b37a 100644 --- a/init.el +++ b/init.el @@ -65,3 +65,5 @@ '(org-block-end-line ((t (:inherit default :background nil))))) (setq org-startup-indented t) + +(load "~/.config/emacs/42header.el")