Compare commits

...

5 Commits

Author SHA1 Message Date
Frieder Schlesier 785aa0bb85 add initial draft for fschl-ide (rustic)
Signed-off-by: Frieder Schlesier <frieder@fschl.de>
2023-07-27 23:57:28 +02:00
Frieder Schlesier 8740ea8854 TODO.org: add links for org-mode beauty
Signed-off-by: Frieder Schlesier <frieder@fschl.de>
2023-07-19 22:50:12 +02:00
Frieder Schlesier afe85d9516 update keymap for org-mode
Signed-off-by: Frieder Schlesier <frieder@fschl.de>
2023-07-19 22:29:48 +02:00
Frieder Schlesier b3baf67eb4 add org-cv, fix capturing letter
Signed-off-by: Frieder Schlesier <frieder@fschl.de>
2023-07-19 22:29:03 +02:00
Frieder Schlesier fc9a69a894 custom.el: y-n-p, dired switches
Signed-off-by: Frieder Schlesier <frieder@fschl.de>
2023-07-19 22:24:59 +02:00
8 changed files with 333 additions and 94 deletions

View File

@ -15,7 +15,16 @@ solution, e.g. set it up to auto-tangle all .org files within/below
** Missing Features
*** TODO flyspell languages
*** TODO IDE
**** TODO LSP per language
**** TODO AutoComplete, easy compile, unit test
**** TODO Debugging of some sort
*** TODO flyspell languages (de, en)
is it possible to detect based on existing content?
*** TODO snippets?
@ -31,6 +40,13 @@ solution, e.g. set it up to auto-tangle all .org files within/below
*** TODO make org-roam work with simple key chords
*** TODO beautify org-mode
- https://zhangda.wordpress.com/2016/02/15/configurations-for-beautifying-emacs-org-mode/
- https://zzamboni.org/post/beautifying-org-mode-in-emacs/
- https://lucidmanager.org/productivity/ricing-org-mode/
- beautiful checkboxes https://out-of-cheese-error.netlify.app/spacemacs-config#org70b3e7c
- probably from here: https://jft.home.blog/2019/07/17/use-unicode-symbol-to-display-org-mode-checkboxes/
*** TODO org-roam export to static site (fschl.de/pkb)
*** TODO get used to archive subtrees after tasks are done
@ -55,7 +71,6 @@ e.g. HN, golem, fefe, tagesschau
** LaTeX setup
*** TODO make letters export work
*** DONE make letters export work
*** TODO make export for other texbased documents work

View File

@ -9,6 +9,7 @@
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(fset 'yes-or-no-p 'y-or-n-p) ;; shorten yes-no answers
(defun org-babel-tangle-config ()
"Tangle all Org-mode files in `user-emacs-directory` after save."
@ -24,11 +25,6 @@
(lambda ()
(add-hook 'after-save-hook #'org-babel-tangle-config)))
(defvar fschl-org-file (expand-file-name "fschl-org.el" user-emacs-directory))
(when (and fschl-org-file
(file-exists-p fschl-org-file))
(load fschl-org-file nil :nomessage))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
@ -43,7 +39,7 @@
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(LaTeX-electric-left-right-brace t)
'(Man-notify-method 'aggressive t)
'(Man-notify-method 'aggressive)
'(TeX-auto-save t)
'(TeX-electric-math '("$" . "$"))
'(TeX-electric-sub-and-superscript t)
@ -59,6 +55,7 @@
'(corfu-echo-documentation 0.25 t)
'(dired-auto-revert-buffer t)
'(dired-dwim-target t)
'(dired-listing-switches "-alh")
'(ediff-window-setup-function 'ediff-setup-windows-plain t)
'(eglot-autoshutdown t t)
'(eshell-scroll-to-bottom-on-input 'this t)
@ -88,7 +85,7 @@
("melpa" . 0)))
'(package-selected-packages
'(auctex pandoc-mode markdown-mode combobulate treesit-auto ibuffer-project aggressive-indent editorconfig tree-sitter-langs tree-sitter-ispell tree-sitter-indent tree-sitter eglot magit helpful elisp-demos all-the-icons org-appear denote evil-nerd-commenter evil-collection evil vertico orderless marginalia embark-consult embark corfu-terminal corfu consult cape))
'(reftex-plug-into-AUCTeX t t)
'(reftex-plug-into-AUCTeX t)
'(safe-local-variable-values
'((vc-prepare-patches-separately)
(diff-add-log-use-relative-names . t)

82
fschl-ide.el Normal file
View File

@ -0,0 +1,82 @@
;;; fschl-ide.el -- Fschl Crafted Emacs user customization file -*- lexical-binding: t; -*-
;; This file is generated from the .org-file with the same name. If you want to edit the
;; configuration, DO NOT edit this .el-file, edit .org, instead.
(add-to-list 'package-selected-packages 'cargo)
(add-to-list 'package-selected-packages 'rustic)
(add-to-list 'package-selected-packages 'ob-rust)
(add-to-list 'package-selected-packages 'ob-rust)
(package-install-selected-packages :noconfirm)
(use-package rustic
:ensure
:bind (:map rustic-mode-map
("M-j" . lsp-ui-imenu)
("M-ö" . lsp-find-references)
("C-c C-c l" . flycheck-list-errors)
("C-c C-c a" . lsp-execute-code-action)
("C-c C-c r" . lsp-rename)
("C-c C-c q" . lsp-workspace-restart)
("C-c C-c Q" . lsp-workspace-shutdown)
("C-c C-c s" . lsp-rust-analyzer-status))
:config
;; uncomment for less flashiness
;; (setq lsp-eldoc-hook nil)
;; (setq lsp-enable-symbol-highlighting nil)
;; (setq lsp-signature-auto-activate nil)
;; comment to disable rustfmt on save
(setq rustic-format-on-save t)
(add-hook 'rustic-mode-hook 'rk/rustic-mode-hook))
(defun rk/rustic-mode-hook ()
;; so that run C-c C-c C-r works without having to confirm, but don't try to
;; save rust buffers that are not file visiting. Once
;; https://github.com/brotzeit/rustic/issues/253 has been resolved this should
;; no longer be necessary.
(when buffer-file-name
(setq-local buffer-save-without-query t))
(add-hook 'before-save-hook 'lsp-format-buffer nil t))
(use-package lsp-mode
:ensure
:commands lsp
:custom
;; what to use when checking on-save. "check" is default, I prefer clippy
(lsp-rust-analyzer-cargo-watch-command "clippy")
(lsp-eldoc-render-all t)
(lsp-idle-delay 0.6)
;; enable / disable the hints as you prefer:
(lsp-inlay-hint-enable t)
;; These are optional configurations. See https://emacs-lsp.github.io/lsp-mode/page/lsp-rust-analyzer/#lsp-rust-analyzer-display-chaining-hints for a full list
(lsp-rust-analyzer-display-lifetime-elision-hints-enable "skip_trivial")
(lsp-rust-analyzer-display-chaining-hints t)
(lsp-rust-analyzer-display-lifetime-elision-hints-use-parameter-names nil)
(lsp-rust-analyzer-display-closure-return-type-hints t)
(lsp-rust-analyzer-display-parameter-hints nil)
(lsp-rust-analyzer-display-reborrow-hints nil)
:config
(add-hook 'lsp-mode-hook 'lsp-ui-mode))
(use-package lsp-ui
:ensure
:commands lsp-ui-mode
:custom
(lsp-ui-peek-always-show t)
(lsp-ui-sideline-show-hover t)
(lsp-ui-doc-enable nil))
(use-package company
:ensure
:custom
(company-idle-delay 0.5) ;; how long to wait until popup
;; (company-begin-commands nil) ;; uncomment to disable popup
:bind
(:map company-active-map
("C-n". company-select-next)
("C-p". company-select-previous)
("M-<". company-select-first)
("M->". company-select-last)))
(use-package flycheck :ensure)
(setq lsp-inlay-hint-enable t)

108
fschl-ide.org Normal file
View File

@ -0,0 +1,108 @@
#+title: Setup Fschl Ide Configuration
#+PROPERTY: header-args:emacs-lisp :tangle ./fschl-ide.el :mkdirp yes
* Basic configuration
** Additional Packages
#+begin_src emacs-lisp
;;; fschl-ide.el -- Fschl Crafted Emacs user customization file -*- lexical-binding: t; -*-
;; This file is generated from the .org-file with the same name. If you want to edit the
;; configuration, DO NOT edit this .el-file, edit .org, instead.
(add-to-list 'package-selected-packages 'cargo)
(add-to-list 'package-selected-packages 'rustic)
(add-to-list 'package-selected-packages 'ob-rust)
(add-to-list 'package-selected-packages 'ob-rust)
(package-install-selected-packages :noconfirm)
#+end_src
** Setup Rustic
This is borrowed from https://robert.kra.hn/posts/rust-emacs-setup/
#+begin_src emacs-lisp
(use-package rustic
:ensure
:bind (:map rustic-mode-map
("M-j" . lsp-ui-imenu)
("M-ö" . lsp-find-references)
("C-c C-c l" . flycheck-list-errors)
("C-c C-c a" . lsp-execute-code-action)
("C-c C-c r" . lsp-rename)
("C-c C-c q" . lsp-workspace-restart)
("C-c C-c Q" . lsp-workspace-shutdown)
("C-c C-c s" . lsp-rust-analyzer-status))
:config
;; uncomment for less flashiness
;; (setq lsp-eldoc-hook nil)
;; (setq lsp-enable-symbol-highlighting nil)
;; (setq lsp-signature-auto-activate nil)
;; comment to disable rustfmt on save
(setq rustic-format-on-save t)
(add-hook 'rustic-mode-hook 'rk/rustic-mode-hook))
(defun rk/rustic-mode-hook ()
;; so that run C-c C-c C-r works without having to confirm, but don't try to
;; save rust buffers that are not file visiting. Once
;; https://github.com/brotzeit/rustic/issues/253 has been resolved this should
;; no longer be necessary.
(when buffer-file-name
(setq-local buffer-save-without-query t))
(add-hook 'before-save-hook 'lsp-format-buffer nil t))
#+end_src
** Setup LSP-mode and LSP-ui
#+begin_src emacs-lisp
(use-package lsp-mode
:ensure
:commands lsp
:custom
;; what to use when checking on-save. "check" is default, I prefer clippy
(lsp-rust-analyzer-cargo-watch-command "clippy")
(lsp-eldoc-render-all t)
(lsp-idle-delay 0.6)
;; enable / disable the hints as you prefer:
(lsp-inlay-hint-enable t)
;; These are optional configurations. See https://emacs-lsp.github.io/lsp-mode/page/lsp-rust-analyzer/#lsp-rust-analyzer-display-chaining-hints for a full list
(lsp-rust-analyzer-display-lifetime-elision-hints-enable "skip_trivial")
(lsp-rust-analyzer-display-chaining-hints t)
(lsp-rust-analyzer-display-lifetime-elision-hints-use-parameter-names nil)
(lsp-rust-analyzer-display-closure-return-type-hints t)
(lsp-rust-analyzer-display-parameter-hints nil)
(lsp-rust-analyzer-display-reborrow-hints nil)
:config
(add-hook 'lsp-mode-hook 'lsp-ui-mode))
(use-package lsp-ui
:ensure
:commands lsp-ui-mode
:custom
(lsp-ui-peek-always-show t)
(lsp-ui-sideline-show-hover t)
(lsp-ui-doc-enable nil))
#+end_src
** Auto-completion
lsp-mode integrates with company mode
#+begin_src emacs-lisp
(use-package company
:ensure
:custom
(company-idle-delay 0.5) ;; how long to wait until popup
;; (company-begin-commands nil) ;; uncomment to disable popup
:bind
(:map company-active-map
("C-n". company-select-next)
("C-p". company-select-previous)
("M-<". company-select-first)
("M->". company-select-last)))
#+end_src
** Inline stuff
hints and errors
#+begin_src emacs-lisp
(use-package flycheck :ensure)
(setq lsp-inlay-hint-enable t)
#+end_src

View File

@ -5,16 +5,15 @@
;;(add-to-list 'package-selected-packages 'org-roam)
(add-to-list 'package-selected-packages 'ox-latex)
(add-to-list 'package-selected-packages 'ox-koma-letter)
(add-to-list 'package-selected-packages 'ox-moderncv)
(package-install-selected-packages :noconfirm)
;;(setq org-roam-directory (file-truename "~/org-roam"))
;;(org-roam-db-autosync-mode)
(keymap-global-set "C-c c" #'org-capture)
(keymap-global-set "C-c l" #'org-store-link)
(global-set-key (kbd "<f8>") #'org-agenda)
(global-set-key (kbd "<f7>") #'org-cycle-agenda-files)
(keymap-global-set "C-c r r" #'org-capture)
(keymap-global-set "C-c r l" #'org-store-link)
(keymap-global-set "C-c r a" #'org-agenda)
(keymap-global-set "<f7>" #'org-cycle-agenda-files)
(setq org-default-notes-file "~/Documents/Org/tasks.org")
(setq org-agenda-files
@ -51,22 +50,48 @@
("PHONE" :foreground "forest green" :weight bold))))
(eval-after-load 'ox '(require 'ox-koma-letter))
(eval-after-load 'ox '(require 'ox-moderncv))
(eval-after-load 'ox-koma-letter
'(progn
(add-to-list 'org-latex-classes
'("Brief-de-modern"
"\\documentclass\[Brief-de-modern\]\{scrlttr2\}
\[DEFAULT-PACKAGES]
\[PACKAGES]
\[EXTRA]"))
(eval-after-load 'ox '(require 'ox-moderncv))
(eval-after-load 'ox '(require 'ox-awesomecv))
(eval-after-load 'ox-koma-letter
'(progn
(add-to-list 'org-latex-classes
'("Brief-de-modern"
"\\documentclass\[Brief-de-modern\]\{scrlttr2\}
\[DEFAULT-PACKAGES]
\[PACKAGES]
\[EXTRA]"))
;; \\usepackage[english]{babel}
;; \\setkomavar{frombank}{(1234)\\,567\\,890}
;; \\usepackage[english]{babel}
;; \\setkomavar{frombank}{(1234)\\,567\\,890}
(setq org-koma-letter-default-class "Brief-de-modern")))
(defvar letter-template
"* Preamble :noexport:
(setq org-koma-letter-default-class "Brief-de-modern")))
(defun fschl/create-org-letter ()
"Create a new letter in ~/Documents/letters/ with filename and date"
(interactive)
(let ((name (read-string "Filename: ")))
(expand-file-name (format "%s.org" name) "~/Documents/letters/") ))
(setq org-capture-templates
'(("t" "todo list item" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n SCHEDULED: %^T"
:tree-type month
)
("T" "todo list item with source" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n %a \n SCHEDULED: %^T \n %^G \n"
:tree-type month
)
("r" "Todo research some website/software" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n SCHEDULED: %^T \n %^L \n"
:tree-type month
)
("l" "letter to Documents/letters/<datetime.org>"
entry (file fschl/create-org-letter)
"* Preamble :noexport:
\# #+TITLE: ?
\# #+DATE:
\
@ -88,28 +113,6 @@
\* Mit freundlichen Grüßen, :closing:
\
Frieder Schlesier")
(setq org-capture-templates
'(("t" "todo list item" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n SCHEDULED: %^T"
:tree-type month
)
("T" "todo list item with source" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n %a \n SCHEDULED: %^T \n %^G \n"
:tree-type month
)
("r" "Todo research some website/software" entry
(file+olp+datetree "~/Documents/Org/tasks.org")
"* TODO %?\n SCHEDULED: %^T \n %^L \n"
:tree-type month
)
("l" "letter to Documents/letters/<datetime.org>"
entry (file fschl/create-org-letter)
letter-template
)
("m" "Schedule a meeting" entry
(file+headline "~/Documents/Org/tasks.org")
"* MEETING %?\n SCHEDULED: %^T\n %a"
@ -128,6 +131,9 @@ Frieder Schlesier")
)
)
(use-package ox-awesomecv
:load-path "~/src/org-cv/"
:init (require 'ox-awesomecv))
(use-package ox-moderncv
:load-path "~/src/org-cv/"
:init (require 'ox-moderncv))

View File

@ -11,7 +11,6 @@
;;(add-to-list 'package-selected-packages 'org-roam)
(add-to-list 'package-selected-packages 'ox-latex)
(add-to-list 'package-selected-packages 'ox-koma-letter)
(add-to-list 'package-selected-packages 'ox-moderncv)
(package-install-selected-packages :noconfirm)
#+end_src
@ -22,10 +21,10 @@
#+end_src
** Setup Org-mode Key Map
#+begin_src emacs-lisp
(keymap-global-set "C-c c" #'org-capture)
(keymap-global-set "C-c l" #'org-store-link)
(global-set-key (kbd "<f8>") #'org-agenda)
(global-set-key (kbd "<f7>") #'org-cycle-agenda-files)
(keymap-global-set "C-c r r" #'org-capture)
(keymap-global-set "C-c r l" #'org-store-link)
(keymap-global-set "C-c r a" #'org-agenda)
(keymap-global-set "<f7>" #'org-cycle-agenda-files)
#+end_src
** Setup Agenda Files
@ -80,44 +79,28 @@
*** Export Letter
#+begin_src emacs-lisp
(eval-after-load 'ox '(require 'ox-koma-letter))
(eval-after-load 'ox '(require 'ox-moderncv))
(eval-after-load 'ox-koma-letter
'(progn
(add-to-list 'org-latex-classes
'("Brief-de-modern"
"\\documentclass\[Brief-de-modern\]\{scrlttr2\}
\[DEFAULT-PACKAGES]
\[PACKAGES]
\[EXTRA]"))
(eval-after-load 'ox '(require 'ox-koma-letter))
(eval-after-load 'ox '(require 'ox-moderncv))
(eval-after-load 'ox '(require 'ox-awesomecv))
(eval-after-load 'ox-koma-letter
'(progn
(add-to-list 'org-latex-classes
'("Brief-de-modern"
"\\documentclass\[Brief-de-modern\]\{scrlttr2\}
\[DEFAULT-PACKAGES]
\[PACKAGES]
\[EXTRA]"))
;; \\usepackage[english]{babel}
;; \\setkomavar{frombank}{(1234)\\,567\\,890}
;; \\usepackage[english]{babel}
;; \\setkomavar{frombank}{(1234)\\,567\\,890}
(setq org-koma-letter-default-class "Brief-de-modern")))
(defvar letter-template
"* Preamble :noexport:
\# #+TITLE: ?
\# #+DATE:
\
\#+SUBJECT: Betreff des Briefs
\
\#+LCO: Absender-Frieder
\# #+LCO: Absender-Marcelle
\# #+LCO: Absender-FamilieSchlesier
\#+LCO: Brief-de-modern
\#+STARTUP: showall
\
\* To-address :to:
\
\# * From :from:
\
\* Sehr geehrte Damen und Herren,
\?
\
\* Mit freundlichen Grüßen, :closing:
\
Frieder Schlesier")
(setq org-koma-letter-default-class "Brief-de-modern")))
(defun fschl/create-org-letter ()
"Create a new letter in ~/Documents/letters/ with filename and date"
(interactive)
(let ((name (read-string "Filename: ")))
(expand-file-name (format "%s.org" name) "~/Documents/letters/") ))
#+end_src
*** Capture Templates
@ -141,8 +124,28 @@
)
("l" "letter to Documents/letters/<datetime.org>"
entry (file fschl/create-org-letter)
letter-template
)
"* Preamble :noexport:
\# #+TITLE: ?
\# #+DATE:
\
\#+SUBJECT: Betreff des Briefs
\
\#+LCO: Absender-Frieder
\# #+LCO: Absender-Marcelle
\# #+LCO: Absender-FamilieSchlesier
\#+LCO: Brief-de-modern
\#+STARTUP: showall
\
\* To-address :to:
\
\# * From :from:
\
\* Sehr geehrte Damen und Herren,
\?
\
\* Mit freundlichen Grüßen, :closing:
\
Frieder Schlesier")
("m" "Schedule a meeting" entry
(file+headline "~/Documents/Org/tasks.org")
"* MEETING %?\n SCHEDULED: %^T\n %a"
@ -165,8 +168,13 @@
** TeX and research
- Write a CV in org-mode: https://titan-c.gitlab.io/org-cv/
cloned to Path =~/src/org-cv=
- requires: ~texlive-latex-extra texlive-xetex~
- =git clone https://github.com/posquit0/Awesome-CV ~/texmf/tex/latex/awesome-cv=
#+begin_src emacs-lisp
(use-package ox-awesomecv
:load-path "~/src/org-cv/"
:init (require 'ox-awesomecv))
(use-package ox-moderncv
:load-path "~/src/org-cv/"
:init (require 'ox-moderncv))

10
init.el
View File

@ -31,3 +31,13 @@
(unless crafted-startup-inhibit-splash
(setq initial-buffer-choice #'crafted-startup-screen))
(defvar fschl-org-file (expand-file-name "fschl-org.el" user-emacs-directory))
(when (and fschl-org-file
(file-exists-p fschl-org-file))
(load fschl-org-file nil :nomessage))
(defvar fschl-ide-file (expand-file-name "fschl-ide.el" user-emacs-directory))
(when (and fschl-ide-file
(file-exists-p fschl-ide-file))
(load fschl-ide-file nil :nomessage))

View File

@ -45,3 +45,16 @@
(unless crafted-startup-inhibit-splash
(setq initial-buffer-choice #'crafted-startup-screen))
#+end_src
** Load my custom files
#+begin_src emacs-lisp
(defvar fschl-org-file (expand-file-name "fschl-org.el" user-emacs-directory))
(when (and fschl-org-file
(file-exists-p fschl-org-file))
(load fschl-org-file nil :nomessage))
(defvar fschl-ide-file (expand-file-name "fschl-ide.el" user-emacs-directory))
(when (and fschl-ide-file
(file-exists-p fschl-ide-file))
(load fschl-ide-file nil :nomessage))
#+end_src