Merge branch 'main' of git.sr.ht:~marcuskammer/emacs.d
This commit is contained in:
commit
0b42a735bd
8 changed files with 355 additions and 380 deletions
96
bundle/bundle--ct.el
Normal file
96
bundle/bundle--ct.el
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
;;; bundle--ct.el --- Bunch of capture tempates -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2024 Marcus Kammer
|
||||||
|
|
||||||
|
;; Author: Marcus Kammer <marcus.kammer@mailbox.org>
|
||||||
|
;; Keywords:
|
||||||
|
|
||||||
|
;; This program is free software; you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
|
||||||
|
;; This program is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(defun mk/link-to-current-task ()
|
||||||
|
"Return an Org link to the current clocked-in task, if any, or prompt for manual entry."
|
||||||
|
(if (org-clock-is-active)
|
||||||
|
(with-current-buffer (marker-buffer org-clock-marker)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char org-clock-marker)
|
||||||
|
(format ":TASK_ID: [[id:%s][%s]]" (org-id-get) (org-get-heading t t))))
|
||||||
|
(let ((manual-id (read-string "Enter Task ID (leave empty if not applicable): ")))
|
||||||
|
(unless (string-empty-p manual-id)
|
||||||
|
(format ":TASK_ID: [[id:%s][Task]]\n" manual-id)))))
|
||||||
|
|
||||||
|
(setq org-capture-templates
|
||||||
|
'(("T" "Task Management")
|
||||||
|
("Tt" "Task" entry (file "agenda/tasks.org")
|
||||||
|
"* TODO %? :TASK:\n:PROPERTIES:\n:ID: %(org-id-new)\n:Project: %^{Project}\n:END:\nEntered on %U\n")
|
||||||
|
("Tp" "Project" entry (file "agenda/projects.org")
|
||||||
|
"* %^{Project Name} :PROJECT:\n:PROPERTIES:\n:ID: %(org-id-new)\n:Start Date: %T\n:End Date: %^{End Date}\n:END:\n** Objective\n%?\n** Challenges\n- [ ] %^{Challenge 1}\n- [ ] %^{Challenge 2}\n")
|
||||||
|
("Tv" "Achievement" entry (file+olp+datetree "achievements.org")
|
||||||
|
"* %^{Achievement Title} :ACHIEVEMENT:\n:PROPERTIES:\n:Project: %^{Project}\n:Date: %T\n:END:\n- Description: %?\n- Impact: %^{Impact}\n- Associated Tasks: %^{Tasks}\n")
|
||||||
|
|
||||||
|
("N" "Notes and Journaling")
|
||||||
|
("Nn" "Note" entry (file "notes.org")
|
||||||
|
"* %? :NOTE:\n:PROPERTIES:\n:ID: %(org-id-new)\n%(mk/link-to-current-task):END:\nEntered on: %U\n")
|
||||||
|
("Nj" "Journal" entry (file+olp+datetree "agenda/journal.org")
|
||||||
|
"* %T - End of Day Reflection :JOURNAL:\n- Was ist heute gut gelaufen?\n %?\n- Was könnte verbessert werden?\n \n- Worauf konzentriere ich mich morgen?\n ")
|
||||||
|
("Nl" "Log" entry (file+olp+datetree "logbook.org")
|
||||||
|
"* %T - %^{Activity} :LOG:\n%?" :clock-in t :empty-lines 1)
|
||||||
|
|
||||||
|
("M" "Meetings and Appointments")
|
||||||
|
("Ma" "Appointment" entry (file "agenda/appt.org")
|
||||||
|
"* %^{Title} %^g\n:PROPERTIES:\n:LOCATION: %^{Location}\n:ATTENDEES: %^{Attendees}\n:END:\n%^{Date}t\n** Agenda\n%?\n** Preparation Tasks\n- [ ]\n- [ ]\n- [ ]\n** Notes\n")
|
||||||
|
("Mm" "Meeting" entry (file "agenda/meetings.org")
|
||||||
|
"* %^{Topic} \n%T\n%?" :clock-in t :empty-lines 1)
|
||||||
|
|
||||||
|
("R" "Research and Information Gathering")
|
||||||
|
("Rb" "Bookmark" table-line (file+headline "bookmarks.org" "Bookmarks")
|
||||||
|
"| %^{URL} | %^{Tags} | %u |" :prepend t)
|
||||||
|
("Rc" "Code Snippet" entry (file+headline "code.org" "Snippets")
|
||||||
|
"* %?\n#+begin_src %^{language}\n%i\n#+end_src")
|
||||||
|
("Rs" "Stock Recommendation" entry (file+headline "stocks.org" "Stock Recommendations")
|
||||||
|
"* %^{Stock Name} :STOCK:\n:PROPERTIES:\n:Date: %T\n:WKN: %^{WKN}\n:ISIN: %^{ISIN}\n:END:\n%?")
|
||||||
|
("Ru" "UTM Parameters" entry (file+headline "utm.org" "UTM Parameters")
|
||||||
|
"* %^{Campaign Name}\n:PROPERTIES:\n:Source: %^{utm_source}\n:Medium: %^{utm_medium}\n:Term: %^{utm_term}\n:Content: %^{utm_content}\n:END:\n")
|
||||||
|
|
||||||
|
("I" "Interviews")
|
||||||
|
("Ih" "How Might We" entry (file+headline "interviews.org" "HMW Questions")
|
||||||
|
"* WKW/HMW %? :HMW:\n%U\n:PROPERTIES:\n:Interviewee: %^{Interviewee}\n:Context: %^{Context}\n:END:")
|
||||||
|
("Iq" "Interview Question" entry (file+headline "interviews.org" "Interview Questions")
|
||||||
|
"* %^{Interview Topic} :INTERVIEW:\n:PROPERTIES:\n:Project: %^{Project Name}\n:Date: %T\n:END:\n- %?\n")
|
||||||
|
("Io" "Quote from User Interview" entry (file+headline "interviews.org" "Quotes")
|
||||||
|
"* %^{Quote} :QUOTE:\n:PROPERTIES:\n:Interviewee: %^{Interviewee}\n:Timestamp: %^{Timestamp in Video}\n:Project: %^{Project}\n:Context: %^{Context}\n:END:\n")
|
||||||
|
|
||||||
|
("A" "Accounting")
|
||||||
|
("Ae" "Expense" table-line (file+headline "accounting.org" "Expenses")
|
||||||
|
"| %U | %^{Amount} | %^{Category} | %? |")
|
||||||
|
("Ai" "Income" table-line (file+headline "accounting.org" "Income")
|
||||||
|
"| %U | %^{Amount} | %^{Source} | %? |")
|
||||||
|
("AI" "Invoice" table-line (file+headline "accounting.org" "Invoices")
|
||||||
|
"| %T | %^{Client} | %^{Amount} | %^{Due Date} | %? |")
|
||||||
|
("Ab" "Budget" table-line (file+headline "accounting.org" "Budget")
|
||||||
|
"| %(format-time-string \"%Y\") | %(format-time-string \"%B\") | %^{Estimated Income} | %^{Estimated Expenses} | %? |")
|
||||||
|
("Av" "Investment" table-line (file+headline "accounting.org" "Investments")
|
||||||
|
"| %U | %^{Type} | %^{Amount} | %? |")
|
||||||
|
|
||||||
|
("P" "Personal")
|
||||||
|
("Pb" "Book" table-line (file+headline "books.org" "Meine Bücherliste")
|
||||||
|
"| %^{Buchtitel} | %^{Autor} | %^{Status||Geplant|In Bearbeitung|Fertig} | %U |" :kill-buffer t)))
|
||||||
|
|
||||||
|
(provide 'bundle--ct)
|
||||||
|
;;; bundle--ct.el ends here
|
|
@ -48,16 +48,6 @@
|
||||||
|
|
||||||
(add-hook 'org-agenda-finalize-hook #'org-agenda-log-mode-colorize-block)
|
(add-hook 'org-agenda-finalize-hook #'org-agenda-log-mode-colorize-block)
|
||||||
|
|
||||||
(defun mk/link-to-current-task ()
|
|
||||||
"Return an Org link to the current clocked-in task, if any, or prompt for manual entry."
|
|
||||||
(if (org-clock-is-active)
|
|
||||||
(with-current-buffer (marker-buffer org-clock-marker)
|
|
||||||
(save-excursion
|
|
||||||
(goto-char org-clock-marker)
|
|
||||||
(format ":TASK_ID: [[id:%s][%s]]" (org-id-get) (org-get-heading t t))))
|
|
||||||
(let ((manual-id (read-string "Enter Task ID (leave empty if not applicable): ")))
|
|
||||||
(unless (string-empty-p manual-id)
|
|
||||||
(format ":TASK_ID: [[id:%s][Task]]\n" manual-id)))))
|
|
||||||
|
|
||||||
(defun mk/extract-headlines-by-tag (tag)
|
(defun mk/extract-headlines-by-tag (tag)
|
||||||
"Extract headlines and their content from current buffer by TAG."
|
"Extract headlines and their content from current buffer by TAG."
|
||||||
|
@ -123,6 +113,9 @@
|
||||||
(dotimes (i (1- count-windows))
|
(dotimes (i (1- count-windows))
|
||||||
(split-window-below (- height)))))
|
(split-window-below (- height)))))
|
||||||
|
|
||||||
|
(defun mk/split ()
|
||||||
|
(mk/split-h3))
|
||||||
|
|
||||||
(defun mk/split-h3 ()
|
(defun mk/split-h3 ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(mk/split-windows-horizontal 3))
|
(mk/split-windows-horizontal 3))
|
||||||
|
@ -520,5 +513,21 @@ an ALIAS and SERVICE as arguments and call
|
||||||
|
|
||||||
(global-set-key (kbd "<f12>") 'mk/toggle-frame-decorations)
|
(global-set-key (kbd "<f12>") 'mk/toggle-frame-decorations)
|
||||||
|
|
||||||
|
(defun mk/set-frame-size-85x50 ()
|
||||||
|
"Set the current frame's size to 85 columns by 50 rows."
|
||||||
|
(interactive)
|
||||||
|
(set-frame-size (selected-frame) 92 58))
|
||||||
|
|
||||||
|
(global-set-key (kbd "M-<f11>") #'mk/set-frame-size-85x50)
|
||||||
|
|
||||||
|
(defun shell-new-bottom ()
|
||||||
|
"Open a shell window in the bottom third of the current window."
|
||||||
|
(interactive)
|
||||||
|
(let* ((current-window (selected-window))
|
||||||
|
(new-window (split-window-below (- (window-height) (/ (window-height) 3)))))
|
||||||
|
(select-window new-window)
|
||||||
|
(shell)
|
||||||
|
(select-window current-window)))
|
||||||
|
|
||||||
(provide 'bundle-mk)
|
(provide 'bundle-mk)
|
||||||
;;; bundle-mk.el ends here
|
;;; bundle-mk.el ends here
|
||||||
|
|
|
@ -34,6 +34,10 @@
|
||||||
("FIXME" . "#dc752f")
|
("FIXME" . "#dc752f")
|
||||||
("XXX+" . "#dc752f")
|
("XXX+" . "#dc752f")
|
||||||
("\\?\\?\\?+" . "#dc752f")))
|
("\\?\\?\\?+" . "#dc752f")))
|
||||||
|
'(ignored-local-variable-values
|
||||||
|
'((Base . 10)
|
||||||
|
(Package . HUNCHENTOOT)
|
||||||
|
(Syntax . COMMON-LISP)))
|
||||||
'(inferior-lisp-program "/usr/bin/sbcl --noinform" t)
|
'(inferior-lisp-program "/usr/bin/sbcl --noinform" t)
|
||||||
'(initial-buffer-choice "~/Documents/org/agenda/tasks.org")
|
'(initial-buffer-choice "~/Documents/org/agenda/tasks.org")
|
||||||
'(initial-frame-alist '((fullscreen . maximized) (undecorated . t)))
|
'(initial-frame-alist '((fullscreen . maximized) (undecorated . t)))
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
'(ol-bbdb ol-bibtex ol-docview ol-eww ol-gnus ol-info ol-irc ol-mhe ol-rmail org-tempo ol-w3m))
|
'(ol-bbdb ol-bibtex ol-docview ol-eww ol-gnus ol-info ol-irc ol-mhe ol-rmail org-tempo ol-w3m))
|
||||||
'(org-roam-directory "~/OneDrive - Siemens AG/org/")
|
'(org-roam-directory "~/OneDrive - Siemens AG/org/")
|
||||||
'(package-selected-packages
|
'(package-selected-packages
|
||||||
'(paredit auto-complete terraform-mode wallabag anki dockerfile-mode docker erc-image erc-hl-nicks common-lisp-snippets yasnippet yaml-mode which-key web-mode typescript-mode ssh-config-mode slime simple-httpd shrface rainbow-delimiters plantuml-mode ox-reveal org-web-tools org-tree-slide org-roam olivetti ob-restclient ob-http nov nginx-mode mastodon markdown-mode magit json-navigator js2-mode jq-format jabber htmlize helpful gptel go-translate go-mode flymake-json emojify elfeed doom-themes doom-modeline csv-mode auctex all-the-icons-dired ace-window))
|
'(yaml-mode which-key web-mode typescript-mode terraform-mode ssh-config-mode slime simple-httpd shrface rainbow-delimiters plantuml-mode paredit ox-reveal org-web-tools org-tree-slide org-roam olivetti ob-restclient ob-powershell ob-http nov nginx-mode mastodon markdown-mode magit js2-mode jq-format jabber htmlize helpful gptel go-translate gnuplot flymake-json erc-image erc-hl-nicks emojify elfeed doom-themes dockerfile-mode docker dashboard csv-mode auctex all-the-icons-dired ace-window))
|
||||||
'(reb-re-syntax 'string)
|
'(reb-re-syntax 'string)
|
||||||
'(ring-bell-function 'ignore)
|
'(ring-bell-function 'ignore)
|
||||||
'(scroll-step 5)
|
'(scroll-step 5)
|
||||||
|
@ -67,4 +67,4 @@
|
||||||
;; If you edit it by hand, you could mess it up, so be careful.
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
;; Your init file should contain only one such instance.
|
;; Your init file should contain only one such instance.
|
||||||
;; If there is more than one, they won't work right.
|
;; If there is more than one, they won't work right.
|
||||||
'(variable-pitch ((t (:height 114 :family "Noto Serif")))))
|
)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
;; Auto-generated file; don't edit -*- mode: lisp-data -*-
|
;; Auto-generated file; don't edit -*- mode: lisp-data -*-
|
||||||
((:url "https://netzpolitik.org/2024/aktionismus-gegen-deepfakes-da-wuerde-eine-neue-technik-pauschal-unter-strafe-gestellt/" :title "Aktionismus gegen Deepfakes: „Da würde eine neue Technik pauschal unter Strafe gestellt“" :time "Wed Jul 10 09:26:37 2024")
|
((:url "https://www.w3.org/TR/activitystreams-vocabulary/" :title "Activity Vocabulary" :time "Sat Oct 5 11:20:16 2024")
|
||||||
|
(:url "https://netzpolitik.org/2024/aktionismus-gegen-deepfakes-da-wuerde-eine-neue-technik-pauschal-unter-strafe-gestellt/" :title "Aktionismus gegen Deepfakes: „Da würde eine neue Technik pauschal unter Strafe gestellt“" :time "Wed Jul 10 09:26:37 2024")
|
||||||
(:url "https://sqlite.org/cli.html" :title "Command Line Shell For SQLite" :time "Mon Oct 23 15:13:18 2023")
|
(:url "https://sqlite.org/cli.html" :title "Command Line Shell For SQLite" :time "Mon Oct 23 15:13:18 2023")
|
||||||
(:url "https://mercurial-book.readthedocs.io/en/latest/index.html" :title "Mercurial: the definitive guide — Mercurial Book" :time "Fri Jun 16 09:31:32 2023")
|
(:url "https://mercurial-book.readthedocs.io/en/latest/index.html" :title "Mercurial: the definitive guide — Mercurial Book" :time "Fri Jun 16 09:31:32 2023")
|
||||||
(:url "https://diataxis.fr/#" :title "Diátaxis" :time "Thu Jan 26 22:00:45 2023")
|
(:url "https://diataxis.fr/#" :title "Diátaxis" :time "Thu Jan 26 22:00:45 2023")
|
||||||
|
|
500
init.el
500
init.el
|
@ -1,4 +1,5 @@
|
||||||
(setq package-quickstart t)
|
(setq gc-cons-threshold 100000000)
|
||||||
|
(add-hook 'after-init-hook (lambda () (setq gc-cons-threshold 800000)))
|
||||||
|
|
||||||
;; (add-hook 'emacs-startup-hook
|
;; (add-hook 'emacs-startup-hook
|
||||||
;; (lambda ()
|
;; (lambda ()
|
||||||
|
@ -203,12 +204,12 @@
|
||||||
:box '(:line-width 8 :style flat-button)))
|
:box '(:line-width 8 :style flat-button)))
|
||||||
|
|
||||||
(setq default-frame-alist
|
(setq default-frame-alist
|
||||||
`((font . "MonoLisa-11")
|
'((fullscreen . maximized)
|
||||||
|
(font . "MonoLisa-11")
|
||||||
(width . 85)
|
(width . 85)
|
||||||
(height . 50)
|
(height . 50)
|
||||||
(vertical-scroll-bars)
|
(and (eq system-type 'gnu/linux)
|
||||||
,@(cond ((eq system-type 'gnu/linux)
|
(undecorated . t))))
|
||||||
'((fullscreen . maximized))))))
|
|
||||||
|
|
||||||
(setq frame-resize-pixelwise t)
|
(setq frame-resize-pixelwise t)
|
||||||
|
|
||||||
|
@ -241,10 +242,11 @@
|
||||||
:commands emojify-mode
|
:commands emojify-mode
|
||||||
:config
|
:config
|
||||||
(when (member "Segoe UI Emoji" (font-family-list))
|
(when (member "Segoe UI Emoji" (font-family-list))
|
||||||
;; https://ianyepan.github.io/posts/emacs-emojis/
|
(set-fontset-font
|
||||||
(set-fontset-font t 'symbol (font-spec :family "Segoe UI Emoji") nil 'prepend)
|
t 'symbol (font-spec :family "Segoe UI Emoji") nil 'prepend))
|
||||||
(setq emojify-display-style 'unicode)
|
(setq emojify-display-style 'unicode)
|
||||||
(setq emojify-emoji-styles '(unicode))))
|
(setq emojify-emoji-styles '(unicode))
|
||||||
|
(bind-key* (kbd "C-c .") #'emojify-insert-emoji))
|
||||||
|
|
||||||
;; (defun my-vc-info ()
|
;; (defun my-vc-info ()
|
||||||
;; (when vc-mode
|
;; (when vc-mode
|
||||||
|
@ -462,6 +464,7 @@
|
||||||
(require 'shrface))
|
(require 'shrface))
|
||||||
|
|
||||||
(use-package nov
|
(use-package nov
|
||||||
|
:defer t
|
||||||
:hook ((nov-mode . visual-line-mode)
|
:hook ((nov-mode . visual-line-mode)
|
||||||
(nov-mode . mk/nov-font-settings))
|
(nov-mode . mk/nov-font-settings))
|
||||||
:mode ("\\.epub\\'" . nov-mode)
|
:mode ("\\.epub\\'" . nov-mode)
|
||||||
|
@ -487,6 +490,7 @@
|
||||||
|
|
||||||
|
|
||||||
(use-package sql
|
(use-package sql
|
||||||
|
:defer t
|
||||||
:config
|
:config
|
||||||
(setq sql-connection-alist
|
(setq sql-connection-alist
|
||||||
'((finance-db
|
'((finance-db
|
||||||
|
@ -594,6 +598,10 @@
|
||||||
("\\.j2" . python-mode))
|
("\\.j2" . python-mode))
|
||||||
:hook (python-mode . abbrev-mode)
|
:hook (python-mode . abbrev-mode)
|
||||||
:init
|
:init
|
||||||
|
(setq python-interpreter
|
||||||
|
(cond ((executable-find "python3") "python3")
|
||||||
|
((executable-find "python") "python")
|
||||||
|
(t "python3")))
|
||||||
(setq python-indent-guess-indent-offset nil)
|
(setq python-indent-guess-indent-offset nil)
|
||||||
(setq python-indent-offset 4)
|
(setq python-indent-offset 4)
|
||||||
(setq python-shell-interpreter "ipython")
|
(setq python-shell-interpreter "ipython")
|
||||||
|
@ -616,6 +624,7 @@
|
||||||
:render (gt-buffer-render))))
|
:render (gt-buffer-render))))
|
||||||
|
|
||||||
(use-package magit
|
(use-package magit
|
||||||
|
:defer t
|
||||||
:bind ("C-x g" . magit-status)
|
:bind ("C-x g" . magit-status)
|
||||||
:init
|
:init
|
||||||
(when (eq system-type 'windows-nt)
|
(when (eq system-type 'windows-nt)
|
||||||
|
@ -674,14 +683,13 @@
|
||||||
(jabber-muc-autojoin
|
(jabber-muc-autojoin
|
||||||
'("lisp@conference.a3.pm"
|
'("lisp@conference.a3.pm"
|
||||||
"emacs@conference.conversations.im"
|
"emacs@conference.conversations.im"
|
||||||
"community@conference.jabber.fsfe.org"
|
"userexperience@conference.mailbox.org"
|
||||||
"ml-survey@conference.mailbox.org"
|
"metalisp@conference.mailbox.org"))
|
||||||
"userexperience@conference.mailbox.org"))
|
|
||||||
(jabber-muc-default-nicknames
|
(jabber-muc-default-nicknames
|
||||||
'(("lisp@conference.a3.pm" . "marcus")
|
'(("lisp@conference.a3.pm" . "marcus")
|
||||||
("emacs@conference.conversations.im" . "marcus")
|
("emacs@conference.conversations.im" . "marcus")
|
||||||
("ml-survey@conference.mailbox.org" . "marcus")
|
("userexperience@conference.mailbox.org" . "marcus")
|
||||||
("userexperience@conference.mailbox.org" . "marcus"))))
|
("metalisp@conference.mailbox.org" . "marcus"))))
|
||||||
|
|
||||||
;; (use-package hyperbole
|
;; (use-package hyperbole
|
||||||
;; :config
|
;; :config
|
||||||
|
@ -703,7 +711,6 @@
|
||||||
|
|
||||||
(use-package tex-mode
|
(use-package tex-mode
|
||||||
:defer t
|
:defer t
|
||||||
:ensure auctex
|
|
||||||
:config
|
:config
|
||||||
;; TeX mode settings for editing .tex files
|
;; TeX mode settings for editing .tex files
|
||||||
(setq TeX-auto-save t) ; Enable auto-save
|
(setq TeX-auto-save t) ; Enable auto-save
|
||||||
|
@ -718,12 +725,12 @@
|
||||||
(setq TeX-engine 'luatex) ; Set engine to XeTeX
|
(setq TeX-engine 'luatex) ; Set engine to XeTeX
|
||||||
(setq TeX-command-extra-options "-shell-escape")) ; Allow shell escape
|
(setq TeX-command-extra-options "-shell-escape")) ; Allow shell escape
|
||||||
|
|
||||||
(use-package auctex
|
;; (use-package auctex
|
||||||
:hook ((LaTeX-mode . turn-on-reftex)
|
;; :hook ((LaTeX-mode . turn-on-reftex)
|
||||||
(LaTeX-mode . LaTeX-math-mode))
|
;; (LaTeX-mode . LaTeX-math-mode))
|
||||||
:custom
|
;; :custom
|
||||||
(LaTeX-indent-level 4)
|
;; (LaTeX-indent-level 4)
|
||||||
(LaTeX-item-indent 0))
|
;; (LaTeX-item-indent 0))
|
||||||
|
|
||||||
(use-package epg
|
(use-package epg
|
||||||
:ensure nil
|
:ensure nil
|
||||||
|
@ -781,11 +788,12 @@
|
||||||
(setq gptel-model "claude-3-5-sonnet-20240620")
|
(setq gptel-model "claude-3-5-sonnet-20240620")
|
||||||
(setq gptel-backend (gptel-make-anthropic "Claude" :stream t :key gptel-api-key))
|
(setq gptel-backend (gptel-make-anthropic "Claude" :stream t :key gptel-api-key))
|
||||||
(setq gptel-directives
|
(setq gptel-directives
|
||||||
'((default . "You are an expert Common Lisp developer specializing in web development with Hunchentoot and functional programming. Emphasize functional programming principles throughout, including pure functions, immutability, and higher-order functions. Provide concise code examples and best practices for each topic. You are using the following common lisp libraries: spinneret for html generation, hunchentoot as web server, and mito as ORM. If needed choose more libraries for different cases.")
|
(append gptel-directives
|
||||||
(bash . "You are an experienced Bash scripting teacher. I want to learn how to write Bash scripts. Please explain concepts clearly, provide examples, and guide me through writing scripts step-by-step. Let's start with the basics and gradually move to more advanced topics. If I have questions or need further clarification, help me understand the material thoroughly.")
|
'((lisp-dev . "You are an expert Common Lisp developer specializing in web development with Hunchentoot and functional programming. Emphasize functional programming principles throughout, including pure functions, immutability, and higher-order functions. Provide concise code examples and best practices for each topic. You are using the following common lisp libraries: spinneret for html generation, hunchentoot as web server, and mito as ORM. If needed choose more libraries for different cases.")
|
||||||
(cs-teacher . "You are a virtual teaching assistant for a high school computer science course. The course focuses on functional programming, data structures, and algorithms using Common Lisp. Your goal is to provide clear, engaging, and educational explanations, examples, and exercises to help students grasp complex concepts. Your responses should be appropriate for high school students, keeping explanations simple yet thorough.")
|
(bash . "You are an experienced Bash scripting teacher. I want to learn how to write Bash scripts. Please explain concepts clearly, provide examples, and guide me through writing scripts step-by-step. Let's start with the basics and gradually move to more advanced topics. If I have questions or need further clarification, help me understand the material thoroughly.")
|
||||||
(statistic-teacher . "You are a virtual teaching assistant for a high school statistic and math course. The course focuses on statistics. Your goal is to provide clear, engaging, and educational explanations, examples, and exercises to help students grasp complex concepts. Your responses should be appropriate for high school students, keeping explanations simple yet thorough. Apply the theoretical concepts you are explaining to the field of user experience and usability and provide short examples.")
|
(cs-teacher . "You are a virtual teaching assistant for a high school computer science course. The course focuses on functional programming, data structures, and algorithms using Common Lisp. Your goal is to provide clear, engaging, and educational explanations, examples, and exercises to help students grasp complex concepts. Your responses should be appropriate for high school students, keeping explanations simple yet thorough.")
|
||||||
(cl-stats . "You are a high school math teacher specializing in teaching statistics. Your students are new to the subject and are eager to learn through clear, step-by-step explanations. Use simple language and real-world examples to make complex statistical concepts understandable. Focus on breaking down key ideas like mean, median, mode, standard deviation, probability, and hypothesis testing. Additionally, when providing coding examples, use Common Lisp with an emphasis on functional programming techniques. Ensure that the code is well-commented and easy for beginners to follow. Introduce students to basic functional programming concepts such as higher-order functions, recursion, and immutability within the context of statistical problems. Make sure to: Start with basic concepts and gradually progress to more advanced topics. Include practical examples and exercises that students can try on their own. Encourage critical thinking and exploration by posing questions and challenges related to the statistical material. Use functional programming principles when writing Common Lisp code, explaining how these principles apply to the statistical problem at hand. Be patient, encouraging, and supportive, as you would be in a real classroom."))))
|
(statistic-teacher . "You are a virtual teaching assistant for a high school statistic and math course. The course focuses on statistics. Your goal is to provide clear, engaging, and educational explanations, examples, and exercises to help students grasp complex concepts. Your responses should be appropriate for high school students, keeping explanations simple yet thorough. Apply the theoretical concepts you are explaining to the field of user experience and usability and provide short examples.")
|
||||||
|
(cl-stats . "You are a high school math teacher specializing in teaching statistics. Your students are new to the subject and are eager to learn through clear, step-by-step explanations. Use simple language and real-world examples to make complex statistical concepts understandable. Focus on breaking down key ideas like mean, median, mode, standard deviation, probability, and hypothesis testing. Additionally, when providing coding examples, use Common Lisp with an emphasis on functional programming techniques. Ensure that the code is well-commented and easy for beginners to follow. Introduce students to basic functional programming concepts such as higher-order functions, recursion, and immutability within the context of statistical problems. Make sure to: Start with basic concepts and gradually progress to more advanced topics. Include practical examples and exercises that students can try on their own. Encourage critical thinking and exploration by posing questions and challenges related to the statistical material. Use functional programming principles when writing Common Lisp code, explaining how these principles apply to the statistical problem at hand. Be patient, encouraging, and supportive, as you would be in a real classroom.")))))
|
||||||
|
|
||||||
(use-package gnuplot
|
(use-package gnuplot
|
||||||
:defer t)
|
:defer t)
|
||||||
|
@ -1142,13 +1150,23 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
(add-hook 'lisp-mode-hook 'g-init-lisp-font-lock))
|
(add-hook 'lisp-mode-hook 'g-init-lisp-font-lock))
|
||||||
|
|
||||||
(when (eq system-type 'gnu/linux)
|
(when (eq system-type 'gnu/linux)
|
||||||
|
(use-package cider
|
||||||
|
:defer t)
|
||||||
(use-package geiser
|
(use-package geiser
|
||||||
|
:defer t
|
||||||
:init
|
:init
|
||||||
(setq geiser-repl-prompt-read-only t)
|
(setq geiser-repl-prompt-read-only t)
|
||||||
(setq geiser-repl-highlight-error-messages t)
|
(setq geiser-repl-highlight-error-messages t)
|
||||||
(setq geiser-active-implementations '(racket guile))
|
(setq geiser-active-implementations '(chez guile))
|
||||||
(setq geiser-default-implementation 'guile)
|
(setq geiser-default-implementation 'guile)
|
||||||
:hook (scheme-mode . geiser-mode)))
|
:hook (scheme-mode . geiser-mode))
|
||||||
|
(use-package geiser-chez
|
||||||
|
:defer t
|
||||||
|
:after geiser)
|
||||||
|
(use-package geiser-guile
|
||||||
|
:defer t
|
||||||
|
:after geiser
|
||||||
|
:custom (geiser-guile-binary "guile")))
|
||||||
|
|
||||||
;; (use-package racket-mode
|
;; (use-package racket-mode
|
||||||
;; :mode "\\.rkt\\'")
|
;; :mode "\\.rkt\\'")
|
||||||
|
@ -1160,12 +1178,6 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
;; (when (eq system-type 'windows-nt)
|
;; (when (eq system-type 'windows-nt)
|
||||||
;; (setq geiser-racket-binary "c:/Program Files/Racket/Racket.exe")))
|
;; (setq geiser-racket-binary "c:/Program Files/Racket/Racket.exe")))
|
||||||
|
|
||||||
(when (eq system-type 'gnu/linux)
|
|
||||||
(use-package geiser-guile
|
|
||||||
:defer t
|
|
||||||
:after geiser
|
|
||||||
:custom (geiser-guile-binary "guile")))
|
|
||||||
|
|
||||||
;; (use-package ac-slime
|
;; (use-package ac-slime
|
||||||
;; :after (slime auto-complete)
|
;; :after (slime auto-complete)
|
||||||
;; :config
|
;; :config
|
||||||
|
@ -1244,99 +1256,105 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
|
|
||||||
(use-package elfeed
|
(use-package elfeed
|
||||||
:bind ("C-x w" . elfeed)
|
:bind ("C-x w" . elfeed)
|
||||||
:init
|
:init (setq elfeed-feeds
|
||||||
(setq elfeed-feeds
|
'(("https://netzpolitik.org/feed/" netz politik news)
|
||||||
'(("https://netzpolitik.org/feed/" netz politik news)
|
("https://www.marcuskammer.dev/weblog/index.xml" personal)
|
||||||
("https://www.marcuskammer.dev/weblog/index.xml" personal)
|
("https://www.guyrutenberg.com/feed/" linux blog)
|
||||||
("https://www.guyrutenberg.com/feed/" linux blog)
|
("https://blog.mozilla.org/en/feed/" browser web)
|
||||||
("https://blog.mozilla.org/en/feed/" browser web)
|
("https://blog.chromium.org/feeds/posts/default" browser web)
|
||||||
("https://blog.chromium.org/feeds/posts/default" browser web)
|
("https://hacks.mozilla.org/feed/" browser web)
|
||||||
("https://hacks.mozilla.org/feed/" browser web)
|
("https://mailbox.org/share/feed-de-mailbox.xml" email mailbox web)
|
||||||
("https://mailbox.org/share/feed-de-mailbox.xml" email mailbox web)
|
("https://feeds.feedburner.com/GoogleWebFonts" fonts blog google)
|
||||||
("https://feeds.feedburner.com/GoogleWebFonts" fonts blog google)
|
("https://twobithistory.org/feed.xml" history blog coding)
|
||||||
("https://twobithistory.org/feed.xml" history blog coding)
|
("https://blog.getbootstrap.com/feed.xml" web bootstrap blog)
|
||||||
("https://blog.getbootstrap.com/feed.xml" web bootstrap blog)
|
("https://blog.mozilla.org/en/feed/" web firefox blog)
|
||||||
("https://blog.mozilla.org/en/feed/" web firefox blog)
|
("https://fsfe.org/news/news.de.rss" fsfe news free-software)
|
||||||
("https://fsfe.org/news/news.de.rss" fsfe news free-software)
|
("https://planet.lisp.org/rss20.xml" planet lisp)
|
||||||
("https://planet.lisp.org/rss20.xml" planet lisp)
|
("https://emacsconf.org/index.atom" emacs lisp conference)
|
||||||
("https://emacsconf.org/index.atom" emacs lisp conference)
|
("https://jameshunt.us/feeds/main" lisp blog)
|
||||||
("https://jameshunt.us/feeds/main" lisp blog)
|
("https://xenodium.com/rss.xml" emacs blog)
|
||||||
("https://xenodium.com/rss.xml" emacs blog)
|
("https://stevelosh.com/rss.xml" lisp blog personal)
|
||||||
("https://stevelosh.com/rss.xml" lisp blog personal)
|
("https://planet.lisp.org/rss20.xml" lisp blogs)
|
||||||
("https://planet.lisp.org/rss20.xml" lisp blogs)
|
("https://m-x-erlangen.gitlab.io/atom.xml" lisp meetup)
|
||||||
("https://m-x-erlangen.gitlab.io/atom.xml" lisp meetup)
|
("https://takeonrules.com/index.atom" lisp emacs blog)
|
||||||
("https://takeonrules.com/index.atom" lisp emacs blog)
|
("https://emacsredux.com/atom.xml" emacs blog)
|
||||||
("https://emacsredux.com/atom.xml" emacs blog)
|
("https://planet.emacslife.com/atom.xml" emacs)
|
||||||
("https://planet.emacslife.com/atom.xml" emacs)
|
("https://yiming.dev/rss.xml" coding emacs lisp blog)
|
||||||
("https://yiming.dev/rss.xml" coding emacs lisp blog)
|
("https://endlessparentheses.com/atom.xml" emacs elisp blog)
|
||||||
("https://endlessparentheses.com/atom.xml" emacs elisp blog)
|
("https://www.philnewton.net/blog/feed/" emacs blog)
|
||||||
("https://www.philnewton.net/blog/feed/" emacs blog)
|
("https://emacsredux.com/atom.xml" emacs blog)
|
||||||
("https://emacsredux.com/atom.xml" emacs blog)
|
("https://marcus3santos.github.io/index.xml" emacs blog)
|
||||||
("https://marcus3santos.github.io/index.xml" emacs blog)
|
("https://olddeuteronomy.github.io/index.xml" emacs blog)
|
||||||
("https://olddeuteronomy.github.io/index.xml" emacs blog)
|
("https://www.colinmclear.net/posts/index.xml" research emacs blog)
|
||||||
("https://www.colinmclear.net/posts/index.xml" research emacs blog)
|
("https://howardism.org/index.xml" emacs blog)
|
||||||
("https://howardism.org/index.xml" emacs blog)
|
("https://www.timmons.dev/rss.xml" lisp blog)
|
||||||
("https://www.timmons.dev/rss.xml" lisp blog)
|
("https://batsov.com/atom.xml" lisp emacs blog)
|
||||||
("https://batsov.com/atom.xml" lisp emacs blog)
|
("https://notes.eatonphil.com/rss.xml" lisp emacs blog)
|
||||||
("https://notes.eatonphil.com/rss.xml" lisp emacs blog)
|
("https://stackoverflow.com/feeds/tag?tagnames=hunchentoot&sort=newest" lisp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=hunchentoot&sort=newest" lisp stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=common-lisp&sort=newest" lisp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=common-lisp&sort=newest" lisp stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=elisp&sort=newest" lisp emacs stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=elisp&sort=newest" lisp emacs stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=org-mode&sort=newest" emacs orgmode stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=org-mode&sort=newest" emacs orgmode stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=xmpp&sort=newest" xmpp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=xmpp&sort=newest" xmpp stackoverflow)
|
;;("https://stackoverflow.com/feeds/tag?tagnames=postgresql&sort=newest" sql stackoverflow)
|
||||||
;;("https://stackoverflow.com/feeds/tag?tagnames=postgresql&sort=newest" sql stackoverflow)
|
;;("https://stackoverflow.com/feeds/tag?tagnames=mariadb&sort=newest" sql stackoverflow)
|
||||||
;;("https://stackoverflow.com/feeds/tag?tagnames=mariadb&sort=newest" sql stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=guile&sort=newest" guile scheme lisp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=guile&sort=newest" guile scheme lisp stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=sbcl&sort=newest" sbcl lisp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=sbcl&sort=newest" sbcl lisp stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=sbcl+emacs&sort=newest" sbcl emacs lisp stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=sbcl+emacs&sort=newest" sbcl emacs lisp stackoverflow)
|
("https://stackoverflow.com/feeds/tag?tagnames=sbcl+common-lisp+linux&sort=newest" sbcl lisp linux stackoverflow)
|
||||||
("https://stackoverflow.com/feeds/tag?tagnames=sbcl+common-lisp+linux&sort=newest" sbcl lisp linux stackoverflow)
|
("https://sourceforge.net/p/sbcl/activity/feed" lisp sbcl)
|
||||||
("https://sourceforge.net/p/sbcl/activity/feed" lisp sbcl)
|
("https://fukamachi.hashnode.dev/rss.xml" lisp blog)
|
||||||
("https://fukamachi.hashnode.dev/rss.xml" lisp blog)
|
("https://sourceforge.net/projects/sbcl/rss?path=/sbcl" lisp sbcl sourceforge)
|
||||||
("https://sourceforge.net/projects/sbcl/rss?path=/sbcl" lisp sbcl sourceforge)
|
("https://threatpost.com/feed/" security)
|
||||||
("https://threatpost.com/feed/" security)
|
("https://krebsonsecurity.com/feed/" security blog)
|
||||||
("https://krebsonsecurity.com/feed/" security blog)
|
("https://www.schneier.com/feed/atom/" security blog)
|
||||||
("https://www.schneier.com/feed/atom/" security blog)
|
("https://www.nngroup.com/feed/rss/" ux design)
|
||||||
("https://www.nngroup.com/feed/rss/" ux design)
|
("https://feedpress.me/UXmatters" ux design)
|
||||||
("https://feedpress.me/UXmatters" ux design)
|
("https://uxmovement.com/feed" ux design)
|
||||||
("https://uxmovement.com/feed" ux design)
|
("https://www.uxbeginner.com/feed/" ux design)
|
||||||
("https://www.uxbeginner.com/feed/" ux design)
|
("https://jeffgothelf.com/feed/" lean ux design blog)
|
||||||
("https://jeffgothelf.com/feed/" lean ux design blog)
|
("https://uxwritinghub.com/feed/" ux writing blog)
|
||||||
("https://uxwritinghub.com/feed/" ux writing blog)
|
("https://www.w3.org/WAI/feed.xml" ux wai aria w3c)
|
||||||
("https://www.w3.org/WAI/feed.xml" ux wai aria w3c)
|
("https://measuringu.com/feed/" ux blog)
|
||||||
("https://measuringu.com/feed/" ux blog)
|
("https://ux.stackexchange.com/feeds" ux stackexchange)
|
||||||
("https://ux.stackexchange.com/feeds" ux stackexchange)
|
("https://emacs.stackexchange.com/feeds" emacs stackexchange)
|
||||||
("https://emacs.stackexchange.com/feeds" emacs stackexchange)
|
("https://www.mdr.de/nachrichten/podcast/general/russland-angriff-krieg-ukraine100-podcast.xml" krieg ukraine podcast)
|
||||||
("https://www.mdr.de/nachrichten/podcast/general/russland-angriff-krieg-ukraine100-podcast.xml" krieg ukraine podcast)
|
("https://www.deutschlandfunk.de/umwelt-und-verbraucher-100.rss" umwelt verbraucher klima podcast)
|
||||||
("https://www.deutschlandfunk.de/umwelt-und-verbraucher-100.rss" umwelt verbraucher klima podcast)
|
("https://jung-naiv.podigee.io/feed/mp3" politik podcast)
|
||||||
("https://jung-naiv.podigee.io/feed/mp3" politik podcast)
|
("https://www.ndr.de/nachrichten/info/podcast4696.xml" podcast umwelt klima)
|
||||||
("https://www.ndr.de/nachrichten/info/podcast4696.xml" podcast umwelt klima)
|
("https://ct-uplink.podigee.io/feed/mp3" podcast technik computer)
|
||||||
("https://ct-uplink.podigee.io/feed/mp3" podcast technik computer)
|
("https://feeds.soundcloud.com/users/soundcloud:users:261098918/sounds.rss" podcast osint)
|
||||||
("https://feeds.soundcloud.com/users/soundcloud:users:261098918/sounds.rss" podcast osint)
|
("https://hacks.mozilla.org/feed/" blog firefox web)
|
||||||
("https://hacks.mozilla.org/feed/" blog firefox web)
|
("https://karthinks.com/index.xml" blog emacs)
|
||||||
("https://karthinks.com/index.xml" blog emacs)
|
("https://www.destatis.de/SiteGlobals/Functions/RSSFeed/DE/RSSNewsfeed/Aktuell.xml" destatis aktuelles presse)
|
||||||
("https://www.destatis.de/SiteGlobals/Functions/RSSFeed/DE/RSSNewsfeed/Aktuell.xml" destatis aktuelles presse)
|
("http://www.umweltbundesamt.de/rss/presse" uba aktuelles presse)
|
||||||
("http://www.umweltbundesamt.de/rss/presse" uba aktuelles presse)
|
("https://www.test.de/rss/geldanlage-banken/" test geld finanzen)
|
||||||
("https://www.test.de/rss/geldanlage-banken/" test geld finanzen)
|
("https://www.test.de/rss/steuern-recht/" test steuern recht)
|
||||||
("https://www.test.de/rss/steuern-recht/" test steuern recht)
|
("https://thefetishistas.com/feed/" latex fetish news)
|
||||||
("https://thefetishistas.com/feed/" latex fetish news)
|
("https://tonsky.me/atom.xml" blog computer)
|
||||||
("https://tonsky.me/atom.xml" blog computer)
|
("https://www.copernicus.eu/news/rss" klima)
|
||||||
("https://www.copernicus.eu/news/rss" klima)
|
("https://gegenblende.dgb.de/@@rss?count=10&feed=b3b8f76e-53f1-11e6-a380-525400e5a74a" arbeit gewerkschaft news)
|
||||||
("https://gegenblende.dgb.de/@@rss?count=10&feed=b3b8f76e-53f1-11e6-a380-525400e5a74a" arbeit gewerkschaft news)
|
("https://drewdevault.com/blog/index.xml" blog programming computer)
|
||||||
("https://drewdevault.com/blog/index.xml" blog programming computer)
|
("https://inkppl.com/en/rss.xml" tattoo magazin people culture)
|
||||||
("https://inkppl.com/en/rss.xml" tattoo magazin people culture)
|
("https://novaramedia.com/feed/" politics capitalism climate left media)
|
||||||
("https://novaramedia.com/feed/" politics capitalism climate left media)
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCN29LJGZ8FY30ysxdTnDsaw" youtube video)
|
||||||
("https://www.youtube.com/feeds/videos.xml?channel_id=UCN29LJGZ8FY30ysxdTnDsaw" youtube video)
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UC5Ghe5TBQGYIOANuiNW4hDQ" youtube video)
|
||||||
("https://www.youtube.com/feeds/videos.xml?channel_id=UC5Ghe5TBQGYIOANuiNW4hDQ" youtube video)
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UC0p5jTq6Xx_DosDFxVXnWaQ" youtube video)
|
||||||
("https://www.youtube.com/feeds/videos.xml?channel_id=UC0p5jTq6Xx_DosDFxVXnWaQ" youtube video)
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UC0p5jTq6Xx_DosDFxVXnWaQ" youtube video)
|
||||||
("https://www.youtube.com/feeds/videos.xml?channel_id=UC0p5jTq6Xx_DosDFxVXnWaQ" youtube video)
|
("https://www.vag.de/rss/meldungen" ubahn opnv vag)
|
||||||
("https://www.vag.de/rss/meldungen" ubahn opnv vag)
|
("https://feeds.feedblitz.com/sethsblog" management author blog)
|
||||||
("https://feeds.feedblitz.com/sethsblog" management author blog)
|
("https://ourworldindata.org/atom-data-insights.xml" data world)
|
||||||
("https://ourworldindata.org/atom-data-insights.xml" data world)
|
("https://ourworldindata.org/atom.xml" data world)
|
||||||
("https://ourworldindata.org/atom.xml" data world)
|
("https://www.amazon.science/index.rss" science blog amazon data)
|
||||||
("https://www.amazon.science/index.rss" science blog amazon data)
|
("https://feed.theregister.com/atom?a=Liam%20Proven" register foss)
|
||||||
("https://feed.theregister.com/atom?a=Liam%20Proven" register foss)
|
("https://benswift.me/feed.xml" blog creative technology emacs computing)
|
||||||
))
|
("https://media.rss.com/l0wl1f3podcast/feed.xml" cyberpunk podcast)
|
||||||
(setq elfeed-search-filter "@7-day-ago +unread")
|
("https://sachachua.com/blog/feed/" emacs blog lisp programming)
|
||||||
|
("https://peertube.tv/feeds/videos.xml?videoChannelId=3483" lisp video)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCYg6qFXDE5SGT_YXhuJPU0A" programming video lisp)
|
||||||
|
))
|
||||||
|
:custom
|
||||||
|
(elfeed-search-filter "@7-day-ago +unread")
|
||||||
|
:config
|
||||||
(let ((feeds (expand-file-name "~/feeds.el")))
|
(let ((feeds (expand-file-name "~/feeds.el")))
|
||||||
(when (file-exists-p feeds)
|
(when (file-exists-p feeds)
|
||||||
(load-file feeds))))
|
(load-file feeds))))
|
||||||
|
@ -1654,6 +1672,7 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
("columns" "fullflexible")))
|
("columns" "fullflexible")))
|
||||||
(org-latex-inputenc-alist '((\"utf8\" . \"utf8x\")))
|
(org-latex-inputenc-alist '((\"utf8\" . \"utf8x\")))
|
||||||
:config
|
:config
|
||||||
|
(add-to-list 'org-file-apps '("\\.pdf\\'" . emacs))
|
||||||
(if (eq system-type 'windows-nt)
|
(if (eq system-type 'windows-nt)
|
||||||
(setq org-babel-python-command "python")
|
(setq org-babel-python-command "python")
|
||||||
(setq org-babel-python-command "python3"))
|
(setq org-babel-python-command "python3"))
|
||||||
|
@ -1681,13 +1700,11 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
;; work with org-agenda dispatcher [c] "Today Clocked Tasks" to view today's clocked tasks.
|
;; work with org-agenda dispatcher [c] "Today Clocked Tasks" to view today's clocked tasks.
|
||||||
:custom-face
|
:custom-face
|
||||||
(org-tag ((t (:weight normal :height 0.8))))
|
(org-tag ((t (:weight normal :height 0.8))))
|
||||||
(org-level-1 ((t (:inherit outline-1 :height 1.6))))
|
(org-level-1 ((t (:slant italic :inherit outline-1 :height 1.5))))
|
||||||
(org-level-2 ((t (:inherit outline-2 :height 1.4))))
|
(org-level-2 ((t (:slant italic :inherit outline-2 :height 1.4))))
|
||||||
(org-level-3 ((t (:inherit outline-3 :height 1.2))))
|
(org-level-3 ((t (:slant italic :inherit outline-3 :height 1.3))))
|
||||||
(org-level-4 ((t (:inherit outline-4 :height 1.0))))
|
(org-level-4 ((t (:slant italic :inherit outline-4 :height 1.2))))
|
||||||
(org-level-5 ((t (:inherit outline-5 :height 1.0)))))
|
(org-level-5 ((t (:slant italic :inherit outline-5 :height 1.1)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; Define custom LaTeX class with specific formatting
|
;; Define custom LaTeX class with specific formatting
|
||||||
(with-eval-after-load 'ox-latex
|
(with-eval-after-load 'ox-latex
|
||||||
|
@ -1728,220 +1745,10 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
(":-)" . "😊")
|
(":-)" . "😊")
|
||||||
(":-(" . "😞")))
|
(":-(" . "😞")))
|
||||||
|
|
||||||
;; Note Capture Template
|
|
||||||
;; Purpose: To capture general notes. These notes can optionally be linked to a currently clocked-in task.
|
|
||||||
;; Fields: Heading, optional task link, initial content, and a timestamp.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
`("n" "Note" entry (file "notes.org")
|
|
||||||
,(concat "* %? :NOTE:\n"
|
|
||||||
":PROPERTIES:\n"
|
|
||||||
":ID: %(org-id-new)\n"
|
|
||||||
"%(mk/link-to-current-task)"
|
|
||||||
":END:\n"
|
|
||||||
"Entered on: %U\n")))
|
|
||||||
|
|
||||||
;; Task Capture Template
|
|
||||||
;; Purpose: To capture tasks and automatically assign a unique ID to each task.
|
|
||||||
;; Fields: Heading, unique ID, timestamp, and link to where the capture was made.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
`("t" "Task" entry (file "agenda/tasks.org")
|
|
||||||
,(format "* TODO %%? :TASK:\n:PROPERTIES:\n:ID: %s\n:Project: %%^{Project}\n:END:\nEntered on %%U\n" (org-id-new))))
|
|
||||||
|
|
||||||
;; Journal Capture Template
|
|
||||||
;; Purpose: To capture end-of-day reflections.
|
|
||||||
;; Fields: Heading, timestamp, and prompts for what went well, what could be improved, and focus for tomorrow.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("j" "Journal" entry (file+olp+datetree "agenda/journal.org")
|
|
||||||
"* %T - End of Day Reflection :JOURNAL:\n- Was ist heute gut gelaufen?\n %?\n- Was könnte verbessert werden?\n \n- Worauf konzentriere ich mich morgen?\n "
|
|
||||||
:empty-lines 1))
|
|
||||||
|
|
||||||
;; Updated Appointment Capture Template
|
|
||||||
;; Purpose: To capture and plan detailed appointments with agenda and preparation tasks.
|
|
||||||
;; Fields: Title, Date/Time, Location, Attendees, Agenda Items, Preparation Tasks, Notes.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("a" "Appointment" entry (file "agenda/appt.org")
|
|
||||||
"* %^{Title} %^g
|
|
||||||
:PROPERTIES:
|
|
||||||
:LOCATION: %^{Location}
|
|
||||||
:ATTENDEES: %^{Attendees}
|
|
||||||
:END:
|
|
||||||
%^{Date}t
|
|
||||||
** Agenda
|
|
||||||
%?
|
|
||||||
** Preparation Tasks
|
|
||||||
- [ ]
|
|
||||||
- [ ]
|
|
||||||
- [ ]
|
|
||||||
** Notes
|
|
||||||
" :empty-lines 1))
|
|
||||||
|
|
||||||
;; Meeting Capture Template
|
|
||||||
;; Purpose: To capture meeting notes and automatically start a clock for time tracking.
|
|
||||||
;; Fields: Topic, timestamp, and additional notes.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("m" "Meeting" entry (file "agenda/meetings.org")
|
|
||||||
"* %^{Topic} \n%T\n%?"
|
|
||||||
:clock-in t
|
|
||||||
:empty-lines 1))
|
|
||||||
|
|
||||||
;; Log Capture Template
|
|
||||||
;; Purpose: To capture activities in a chronological order and automatically start a clock for time tracking.
|
|
||||||
;; Fields: Timestamp, activity description.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("l" "Log" entry (file+olp+datetree "logbook.org")
|
|
||||||
"* %T - %^{Activity} :LOG:\n%?"
|
|
||||||
:clock-in t
|
|
||||||
:empty-lines 1))
|
|
||||||
|
|
||||||
;; UTM Parameters Capture Template
|
|
||||||
;; Purpose: To capture UTM parameters for marketing tracking.
|
|
||||||
;; Fields: Campaign name, source, medium, term, and content.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("u" "UTM Parameters" entry (file+headline "utm.org" "UTM Parameters")
|
|
||||||
"* %^{Campaign Name}\n:PROPERTIES:\n:Source: %^{utm_source}\n:Medium: %^{utm_medium}\n:Term: %^{utm_term}\n:Content: %^{utm_content}\n:END:\n"))
|
|
||||||
|
|
||||||
;; Bookmark Capture Template
|
|
||||||
;; Purpose: To capture bookmarks with tags and a timestamp.
|
|
||||||
;; Fields: URL, tags, timestamp.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("b" "Bookmark" table-line (file+headline "bookmarks.org" "Bookmarks")
|
|
||||||
"| %^{URL} | %^{Tags} | %u |" :prepend t))
|
|
||||||
|
|
||||||
;; Code Snippet Capture Template
|
|
||||||
;; Purpose: To capture code snippets and specify the programming language.
|
|
||||||
;; Fields: Code snippet, language specification.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("c" "Code Snippet" entry (file+headline "code.org" "Snippets")
|
|
||||||
"* %?\n#+begin_src %^{language}\n%i\n#+end_src"))
|
|
||||||
|
|
||||||
;; Capture Templates for Interviews
|
|
||||||
;;
|
|
||||||
;; The following capture templates are designed to facilitate the collection
|
|
||||||
;; of questions and insights for user interviews. Given the importance of
|
|
||||||
;; user-centered design in experience architecture, these templates aim to
|
|
||||||
;; streamline the preparation process for interviews.
|
|
||||||
|
|
||||||
;; Interview Sub-menu
|
|
||||||
;;
|
|
||||||
;; This entry serves as a sub-menu for all interview-related capture templates.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("i" "Interviews"))
|
|
||||||
|
|
||||||
;; How Might We (HMW) Template
|
|
||||||
;;
|
|
||||||
;; This template is designed to capture "How Might We" questions that are often
|
|
||||||
;; used to frame problems and opportunities in user interviews. These questions
|
|
||||||
;; can be crucial for guiding the interview in a direction that yields
|
|
||||||
;; actionable insights.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("ih" "How Might We" entry (file+headline "interviews.org" "HMW Questions")
|
|
||||||
"* WKW/HMW %? :HMW:\n%U\n:PROPERTIES:\n:Interviewee: %^{Interviewee}\n:Context: %^{Context}\n:END:"))
|
|
||||||
|
|
||||||
;; Interview Question Template
|
|
||||||
;;
|
|
||||||
;; Use this template to quickly capture questions that you intend to ask during
|
|
||||||
;; user interviews. The template prompts for the topic of the interview and
|
|
||||||
;; the project it is associated with, allowing for easy categorization and
|
|
||||||
;; retrieval later.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("iq" "Interview Question" entry (file+headline "interviews.org" "Interview Questions")
|
|
||||||
"* %^{Interview Topic} :INTERVIEW:\n:PROPERTIES:\n:Project: %^{Project Name}\n:Date: %T\n:END:\n- %?\n"))
|
|
||||||
|
|
||||||
;; User Interview Quotes Capture Template
|
|
||||||
;; Purpose: To capture important quotes from user interviews.
|
|
||||||
;; Fields: Quote, Interviewee, Timestamp in Video, Project, Context
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("io" "Quote from User Interview" entry (file+headline "interviews.org" "Quotes")
|
|
||||||
"* %^{Quote} :QUOTE:\n:PROPERTIES:\n:Interviewee: %^{Interviewee}\n:Timestamp: %^{Timestamp in Video}\n:Project: %^{Project}\n:Context: %^{Context}\n:END:\n"))
|
|
||||||
|
|
||||||
;; Capture Templates for Project Management and Achievements
|
|
||||||
;;
|
|
||||||
;; These templates are designed to facilitate the tracking of project details
|
|
||||||
;; and individual achievements. Given the focus on agile methodologies and
|
|
||||||
;; continuous improvement, these templates aim to provide a structured way
|
|
||||||
;; to capture essential information.
|
|
||||||
|
|
||||||
;; Project Template
|
|
||||||
;;
|
|
||||||
;; This template captures the essential details of a new project. It prompts
|
|
||||||
;; for the project name, start date, and end date, and provides sections for
|
|
||||||
;; outlining the project's objectives and challenges. Each project is assigned
|
|
||||||
;; a unique ID for easy referencing.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
`("p" "Project" entry (file "agenda/projects.org")
|
|
||||||
,(format "* %%^{Project Name} :PROJECT:\n:PROPERTIES:\n:ID: %s\n:Start Date: %%T\n:End Date: %%^{End Date}\n:END:\n** Objective\n%%?\n** Challenges\n- [ ] %%^{Challenge 1}\n- [ ] %%^{Challenge 2}\n" (org-id-new))))
|
|
||||||
|
|
||||||
;; Achievement Template
|
|
||||||
;;
|
|
||||||
;; This template is designed to capture individual achievements. It prompts for
|
|
||||||
;; the title of the achievement, the project it is associated with, and the date.
|
|
||||||
;; Additionally, it provides fields for describing the achievement, its impact,
|
|
||||||
;; and any associated tasks. This can be particularly useful for end-of-year
|
|
||||||
;; reviews or for maintaining a portfolio of accomplishments.
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
`("v" "Achievement" entry (file+olp+datetree "achievements.org")
|
|
||||||
,(concat "* %^{Achievement Title} :ACHIEVEMENT:\n"
|
|
||||||
":PROPERTIES:\n"
|
|
||||||
":Project: %^{Project}\n"
|
|
||||||
":Date: %T\n"
|
|
||||||
":END:\n"
|
|
||||||
"- Description: %?\n"
|
|
||||||
"- Impact: %^{Impact}\n"
|
|
||||||
"- Associated Tasks: %^{Tasks}\n")))
|
|
||||||
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("A" "Accounting"))
|
|
||||||
|
|
||||||
;; Expense Tracking
|
|
||||||
;; Purpose: To capture individual expenses for accounting in a table.
|
|
||||||
;; Fields: Amount, Category, Note, Date
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("Ae" "Expense" table-line (file+headline "accounting.org" "Expenses")
|
|
||||||
"| %U | %^{Amount} | %^{Category} | %? |"))
|
|
||||||
|
|
||||||
;; Income Tracking
|
|
||||||
;; Purpose: To capture instances of income for accounting in a table.
|
|
||||||
;; Fields: Amount, Source, Date
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("Ai" "Income" table-line (file+headline "accounting.org" "Income")
|
|
||||||
"| %U | %^{Amount} | %^{Source} | %? |"))
|
|
||||||
|
|
||||||
;; Invoice Tracking
|
|
||||||
;; Purpose: To capture invoices sent for services or products in a table.
|
|
||||||
;; Fields: Client, Amount, Due Date
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("AI" "Invoice" table-line (file+headline "accounting.org" "Invoices")
|
|
||||||
"| %T | %^{Client} | %^{Amount} | %^{Due Date} | %? |"))
|
|
||||||
|
|
||||||
;; Budget Planning
|
|
||||||
;; Purpose: To capture budget plans for personal or business accounting in a table.
|
|
||||||
;; Fields: Estimated Income, Estimated Expenses
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
`("Ab" "Budget" table-line (file+headline "accounting.org" "Budget")
|
|
||||||
,(concat "| " (format-time-string "%Y") " | " (format-time-string "%B") " | %^{Estimated Income} | %^{Estimated Expenses} | %? |")))
|
|
||||||
|
|
||||||
;; Investment Tracking
|
|
||||||
;; Purpose: To capture investment details for accounting in a table.
|
|
||||||
;; Fields: Type, Amount, Notes
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("Av" "Investment" table-line (file+headline "accounting.org" "Investments")
|
|
||||||
"| %U | %^{Type} | %^{Amount} | %? |"))
|
|
||||||
|
|
||||||
;; Stock Recommendation Capture Template
|
|
||||||
;; Purpose: To capture stock recommendations for potential investment.
|
|
||||||
;; Fields: Stock Symbol, Recommender, Notes, Date
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("s" "Stock Recommendation" entry (file+headline "stocks.org" "Stock Recommendations")
|
|
||||||
"* %^{Stock Name} :STOCK:\n:PROPERTIES:\n:Date: %T\n:WKN: %^{WKN}\n:ISIN: %^{ISIN}\n:END:\n%?"))
|
|
||||||
|
|
||||||
(add-to-list 'org-capture-templates
|
|
||||||
'("B" "Bücherliste" table-line
|
|
||||||
(file+headline "books.org" "Meine Bücherliste")
|
|
||||||
"| %^{Buchtitel} | %^{Autor} | %^{Status||Geplant|In Bearbeitung|Fertig} | %U |" :kill-buffer t))
|
|
||||||
|
|
||||||
(require 'request)
|
(require 'request)
|
||||||
|
|
||||||
(use-package org-roam
|
(use-package org-roam
|
||||||
|
:defer t
|
||||||
:after org
|
:after org
|
||||||
:init
|
:init
|
||||||
(setq org-roam-db-autosync-mode t)
|
(setq org-roam-db-autosync-mode t)
|
||||||
|
@ -2047,4 +1854,5 @@ Uses `mk/hyperspec-dir-locations' to find the directory."
|
||||||
(let ((bundle-dir (expand-file-name "~/.emacs.d/bundle/")))
|
(let ((bundle-dir (expand-file-name "~/.emacs.d/bundle/")))
|
||||||
(when (file-directory-p bundle-dir)
|
(when (file-directory-p bundle-dir)
|
||||||
(add-to-list 'load-path bundle-dir)
|
(add-to-list 'load-path bundle-dir)
|
||||||
(load "bundle--mk")))
|
(load "bundle--ct")
|
||||||
|
(load "bundle--mk")))
|
||||||
|
|
|
@ -1,11 +1,29 @@
|
||||||
|
;; -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
(TeX-add-style-hook
|
(TeX-add-style-hook
|
||||||
"komageneral"
|
"komageneral"
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(setq TeX-command-extra-options
|
(setq TeX-command-extra-options
|
||||||
"-shell-escape")
|
"-shell-escape")
|
||||||
|
(TeX-add-to-alist 'LaTeX-provided-package-options
|
||||||
|
'(("fontspec" "") ("geometry" "") ("scrlayer-scrpage" "") ("titlesec" "") ("enumitem" "") ("caption" "") ("fancyhdr" "") ("microtype" "") ("biblatex" "") ("graphicx" "") ("etoolbox" "")))
|
||||||
(TeX-run-style-hooks
|
(TeX-run-style-hooks
|
||||||
"fontspec"
|
"fontspec"
|
||||||
"geometry"
|
"geometry"
|
||||||
"scrlayer-scrpage"))
|
"scrlayer-scrpage"
|
||||||
|
"titlesec"
|
||||||
|
"enumitem"
|
||||||
|
"caption"
|
||||||
|
"fancyhdr"
|
||||||
|
"microtype"
|
||||||
|
"biblatex"
|
||||||
|
"graphicx"
|
||||||
|
"etoolbox")
|
||||||
|
(TeX-add-symbols
|
||||||
|
'("TitlePage" 2)
|
||||||
|
'("code" 1)
|
||||||
|
'("important" 1))
|
||||||
|
(LaTeX-add-bibliographies
|
||||||
|
"yourbibliography"))
|
||||||
:latex)
|
:latex)
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,63 @@
|
||||||
\ProvidesPackage{komageneral}
|
\ProvidesPackage{komageneral}
|
||||||
% Font settings
|
|
||||||
|
% Base packages
|
||||||
\usepackage{fontspec}
|
\usepackage{fontspec}
|
||||||
\defaultfontfeatures{Ligatures=TeX, RawFeature={+zero, +liga}}
|
|
||||||
\setmainfont{Noto Serif Regular}[BoldFont={Noto Serif Bold},ItalicFont={Noto Serif Italic}]
|
|
||||||
\setsansfont{Noto Sans Regular}[BoldFont={Noto Sans Bold},ItalicFont={Noto Sans Italic}]
|
|
||||||
\setmonofont{Noto Sans Mono Condensed}[BoldFont={Noto Sans Mono Condensed Bold},Scale=0.8]
|
|
||||||
% Geometry settings
|
|
||||||
\usepackage{geometry}
|
\usepackage{geometry}
|
||||||
\geometry{a4paper,left=2cm,right=2cm,top=1.6cm,bottom=1.6cm}
|
|
||||||
% Header and section settings
|
|
||||||
\usepackage{scrlayer-scrpage}
|
\usepackage{scrlayer-scrpage}
|
||||||
\pagestyle{scrheadings}
|
\usepackage{titlesec}
|
||||||
\clearpairofpagestyles
|
\usepackage{enumitem}
|
||||||
\automark{section}
|
\usepackage{caption}
|
||||||
\ihead{\headmark}
|
\usepackage{fancyhdr}
|
||||||
\ohead{\thepage}
|
\usepackage{microtype}
|
||||||
% Section command redeclarations
|
\usepackage{biblatex}
|
||||||
\setkomafont{section}{\Large\bfseries\sffamily}
|
\usepackage{graphicx} % Added for including images
|
||||||
\setkomafont{subsection}{\large\bfseries\sffamily}
|
\addbibresource{yourbibliography.bib}
|
||||||
\setkomafont{subsubsection}{\normalsize\bfseries\sffamily}
|
|
||||||
\RedeclareSectionCommand[beforeskip=-2\baselineskip,afterskip=0.5\baselineskip]{section}
|
% Font settings
|
||||||
\RedeclareSectionCommand[beforeskip=-1.5\baselineskip,afterskip=0.25\baselineskip]{subsection}
|
\defaultfontfeatures{Ligatures=TeX, RawFeature={+zero, +liga}}
|
||||||
\RedeclareSectionCommand[beforeskip=-1\baselineskip,afterskip=0.1\baselineskip]{subsubsection}
|
\setmainfont{Noto Serif Regular}[BoldFont={Noto Serif Bold}, ItalicFont={Noto Serif Italic}]
|
||||||
|
\setsansfont{Noto Sans Regular}[BoldFont={Noto Sans Bold}, ItalicFont={Noto Sans Italic}]
|
||||||
|
\setmonofont{Noto Sans Mono}[BoldFont={Noto Sans Mono Bold}, Scale=0.8]
|
||||||
|
|
||||||
|
% Geometry settings
|
||||||
|
\geometry{a4paper, left=2cm, right=2cm, top=1.6cm, bottom=1.6cm}
|
||||||
|
|
||||||
|
% Header and footer settings with fancyhdr
|
||||||
|
\pagestyle{fancy}
|
||||||
|
\fancyhf{}
|
||||||
|
\fancyhead[L]{\nouppercase{\leftmark}}
|
||||||
|
\fancyhead[R]{\thepage}
|
||||||
|
|
||||||
|
% Section formatting with titlesec
|
||||||
|
\titleformat{\section}{\Large\bfseries\sffamily}{\thesection}{1em}{}
|
||||||
|
\titleformat{\subsection}{\large\bfseries\sffamily}{\thesubsection}{1em}{}
|
||||||
|
\titleformat{\subsubsection}{\normalsize\bfseries\sffamily}{\thesubsubsection}{1em}{}
|
||||||
|
|
||||||
|
% List formatting with enumitem
|
||||||
|
\setlist[itemize]{noitemsep, topsep=0pt}
|
||||||
|
\setlist[enumerate]{noitemsep, topsep=0pt}
|
||||||
|
|
||||||
|
% Caption settings
|
||||||
|
\captionsetup{font=small, labelfont=bf}
|
||||||
|
|
||||||
|
% Custom quote environment
|
||||||
|
\usepackage{etoolbox}
|
||||||
|
\AtBeginEnvironment{quote}{\itshape}
|
||||||
|
|
||||||
|
% Custom formatting commands
|
||||||
|
\newcommand{\important}[1]{\textbf{#1}}
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
|
||||||
|
% Title page settings
|
||||||
|
\newcommand{\TitlePage}[2]{ % #1 - Logo file, #2 - Company name
|
||||||
|
\begin{titlepage}
|
||||||
|
\centering
|
||||||
|
\vspace*{1cm}
|
||||||
|
\includegraphics[width=0.3\textwidth]{#1}\par\vspace{1cm}
|
||||||
|
{\Huge\bfseries\sffamily #2\par}
|
||||||
|
\vspace{2cm}
|
||||||
|
{\Large\itshape An Elegant and Professional Document\par}
|
||||||
|
\vfill
|
||||||
|
{\large \today\par}
|
||||||
|
\end{titlepage}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue