Merge branch 'master' of github.com:phundrak/dotfiles
This commit is contained in:
commit
4aa81d67da
@ -72,8 +72,6 @@
|
|||||||
####
|
####
|
||||||
u = reset --
|
u = reset --
|
||||||
unstage = reset --
|
unstage = reset --
|
||||||
####
|
|
||||||
webui = !/home/phundrak/.git-webui/release/libexec/git-core/git-webui
|
|
||||||
[magithub]
|
[magithub]
|
||||||
online = true
|
online = true
|
||||||
[magithub "status"]
|
[magithub "status"]
|
||||||
@ -82,8 +80,6 @@
|
|||||||
includeIssuesSection = true
|
includeIssuesSection = true
|
||||||
[gpg]
|
[gpg]
|
||||||
program = gpg2
|
program = gpg2
|
||||||
[webui]
|
|
||||||
autoupdate = true
|
|
||||||
[mergetool.ediff]
|
[mergetool.ediff]
|
||||||
cmd = emacs --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
|
cmd = emacs --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
|
||||||
[merge]
|
[merge]
|
||||||
|
@ -5,7 +5,6 @@ This function is called at the very beginning of Spacemacs startup,
|
|||||||
before layer configuration.
|
before layer configuration.
|
||||||
It should only modify the values of Spacemacs settings."
|
It should only modify the values of Spacemacs settings."
|
||||||
(setq phundrak//dotspacemacs-src-dir (concat (getenv "HOME") "/.config/emacs/private/")
|
(setq phundrak//dotspacemacs-src-dir (concat (getenv "HOME") "/.config/emacs/private/")
|
||||||
phundrak//dotspacemacs-gc (concat (getenv "HOME") "/.gnus.el")
|
|
||||||
phundrak//dotspacemacs-src (concat (getenv "HOME") "/org/config/spacemacs.org")
|
phundrak//dotspacemacs-src (concat (getenv "HOME") "/org/config/spacemacs.org")
|
||||||
phundrak//dotspacemacs-si (concat phundrak//dotspacemacs-src-dir "spacemacs-init.el")
|
phundrak//dotspacemacs-si (concat phundrak//dotspacemacs-src-dir "spacemacs-init.el")
|
||||||
phundrak//dotspacemacs-sl (concat phundrak//dotspacemacs-src-dir "spacemacs-layers.el")
|
phundrak//dotspacemacs-sl (concat phundrak//dotspacemacs-src-dir "spacemacs-layers.el")
|
||||||
@ -14,8 +13,7 @@ It should only modify the values of Spacemacs settings."
|
|||||||
(when (or (file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-si)
|
(when (or (file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-si)
|
||||||
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-sl)
|
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-sl)
|
||||||
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-ui)
|
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-ui)
|
||||||
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-uc)
|
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-uc))
|
||||||
(file-newer-than-file-p phundrak//dotspacemacs-src phundrak//dotspacemacs-gc))
|
|
||||||
(princ "Exporting new Emacs configuration from spacemacs.org through org-babel...")
|
(princ "Exporting new Emacs configuration from spacemacs.org through org-babel...")
|
||||||
(call-process
|
(call-process
|
||||||
(concat invocation-directory invocation-name)
|
(concat invocation-directory invocation-name)
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
- [[#dmenu][Dmenu]]
|
- [[#dmenu][Dmenu]]
|
||||||
- [[#emoji-picker][Emoji picker]]
|
- [[#emoji-picker][Emoji picker]]
|
||||||
- [[#lsl][Lsl]]
|
- [[#lsl][Lsl]]
|
||||||
|
- [[#mp42webm][mp42webm]]
|
||||||
- [[#polybar-launch][Polybar-launch]]
|
- [[#polybar-launch][Polybar-launch]]
|
||||||
- [[#rofi-mount][Rofi-mount]]
|
- [[#rofi-mount][Rofi-mount]]
|
||||||
- [[#get-the-mountable-elements][Get the mountable elements]]
|
- [[#get-the-mountable-elements][Get the mountable elements]]
|
||||||
@ -59,12 +60,18 @@
|
|||||||
|
|
||||||
Please do not forget to run the following before tangling files from this file
|
Please do not forget to run the following before tangling files from this file
|
||||||
to make sure the tangled files will be executables.
|
to make sure the tangled files will be executables.
|
||||||
#+begin_src emacs-lisp :results silent
|
#+begin_src emacs-lisp :results silent
|
||||||
(defun phundrak/make-tangled-files-executable ()
|
(defun phundrak/make-tangled-files-executable ()
|
||||||
(set-file-modes (buffer-file-name) #o755))
|
(set-file-modes (buffer-file-name) #o755))
|
||||||
(add-hook 'org-babel-post-tangle-hook 'phundrak/make-tangled-files-executable)
|
(add-hook 'org-babel-post-tangle-hook 'phundrak/make-tangled-files-executable)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :results silent
|
||||||
|
(defun phundrak/make-tangled-files-not-executable ()
|
||||||
|
(set-file-modes (buffer-file-name) #o644))
|
||||||
|
(add-hook 'org-babel-post-tangle-hook 'phundrak/make-tangled-files-not-executable)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* 4chandl
|
* 4chandl
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-39e14885-9da7-4cba-b24e-c3b181ef5f6b
|
:CUSTOM_ID: h-39e14885-9da7-4cba-b24e-c3b181ef5f6b
|
||||||
@ -354,6 +361,16 @@
|
|||||||
ls -ahlX --group-directories-first $argv | bat
|
ls -ahlX --group-directories-first $argv | bat
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
* mp42webm
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS: :tangle ~/.local/bin/mp42webm
|
||||||
|
:CUSTOM_ID: h-29b8a01c-7499-4a35-be25-f5a593bf40ea
|
||||||
|
:END:
|
||||||
|
#+BEGIN_SRC fish
|
||||||
|
#!/usr/bin/fish
|
||||||
|
ffmpeg -i $argv[1] -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis $argv[1].webm
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* Polybar-launch
|
* Polybar-launch
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-68587918-879b-42db-b304-901d01233f95
|
:CUSTOM_ID: h-68587918-879b-42db-b304-901d01233f95
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's fish config" />
|
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's fish config" />
|
||||||
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's fish config" />
|
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's fish config" />
|
||||||
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the fish config file of Phundrak" />
|
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the fish config file of Phundrak" />
|
||||||
#+PROPERTY: header-args:fish :tangle ~/.config/fish/config.fish :exports code
|
#+PROPERTY: header-args:fish :tangle ~/.config/fish/config.fish :exports code :noweb yes
|
||||||
#+PROPERTY: header-args :exports code :tangle no
|
#+PROPERTY: header-args :exports code :tangle no
|
||||||
|
|
||||||
* Table of Contents :TOC:noexport:
|
* Table of Contents :TOC:noexport:
|
||||||
@ -21,7 +21,7 @@
|
|||||||
- [[#abbreviations][Abbreviations]]
|
- [[#abbreviations][Abbreviations]]
|
||||||
- [[#system-monitoring][System monitoring]]
|
- [[#system-monitoring][System monitoring]]
|
||||||
- [[#system-management-packages-and-services][System management (packages and services)]]
|
- [[#system-management-packages-and-services][System management (packages and services)]]
|
||||||
- [[#package-mangaement][Package mangaement]]
|
- [[#package-management][Package management]]
|
||||||
- [[#service-management][Service management]]
|
- [[#service-management][Service management]]
|
||||||
- [[#development][Development]]
|
- [[#development][Development]]
|
||||||
- [[#cmake][CMake]]
|
- [[#cmake][CMake]]
|
||||||
@ -44,6 +44,7 @@
|
|||||||
- [[#compression][Compression]]
|
- [[#compression][Compression]]
|
||||||
- [[#feh][Feh]]
|
- [[#feh][Feh]]
|
||||||
- [[#network-management][Network Management]]
|
- [[#network-management][Network Management]]
|
||||||
|
- [[#nordvpn][NordVPN]]
|
||||||
- [[#wget][Wget]]
|
- [[#wget][Wget]]
|
||||||
|
|
||||||
* Presentation
|
* Presentation
|
||||||
@ -210,48 +211,44 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-740bd904-3e32-4c09-b0a4-bde16ae2e116
|
:CUSTOM_ID: h-740bd904-3e32-4c09-b0a4-bde16ae2e116
|
||||||
:END:
|
:END:
|
||||||
|
#+NAME: generate-abbr
|
||||||
|
#+BEGIN_SRC python :var table=[] :exports none
|
||||||
|
result = ''
|
||||||
|
for abbr in table:
|
||||||
|
result += "abbr {0} '{1}'\n".format(abbr[0], abbr[1])
|
||||||
|
return result.replace("\\vert{}", "|").replace("\\vert", "|")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
** System monitoring
|
** System monitoring
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-ec910a8c-9154-48a4-b4cd-df28cb4e54d9
|
:CUSTOM_ID: h-ec910a8c-9154-48a4-b4cd-df28cb4e54d9
|
||||||
:END:
|
:END:
|
||||||
Here I have some abbreviations which are quite useful when performing some
|
Here I have some abbreviations which are quite useful when performing some
|
||||||
system monitoring. With =df=, we can get an overview of our filesystem
|
system monitoring. With =df=, we can get an overview of our filesystem usage,
|
||||||
usage, while with =diskspace= we get some more precise information.
|
while with =diskspace= we get some more precise information. =meminfo= is a
|
||||||
#+BEGIN_SRC fish
|
call to =free= with sane defaults, and similar to =meminfo=, we also have
|
||||||
abbr df 'df -H'
|
=gpumeminfo= so we can get a quick look at the memory-related logs of our X
|
||||||
abbr diskspace 'sudo df -h | grep -E "sd|lv|Size"'
|
session. I also declared =cpuinfo= an alias of =lscpu= in order to keep
|
||||||
#+END_SRC
|
consistent with =meminfo=. =pscpu= gives us information on what the CPU is
|
||||||
|
running right now, and =pscpu10= limits that to the top 10 threads.
|
||||||
|
Similarly, =psmem= gives us information on the memory usage of the current
|
||||||
|
threads, and =psmem10= only the ten most important threads in terms of memory
|
||||||
|
usage.
|
||||||
|
#+NAME: mgmt-abbr
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+---------------------------------------------------|
|
||||||
|
| df | df -H |
|
||||||
|
| diskspace | sudo df -h \vert grep -E "sd\vert{}lv\vert{}Size" |
|
||||||
|
| meminfo | free -m -l -t |
|
||||||
|
| gpumeminfo | grep -i --color memory /var/log/Xorg.0.log |
|
||||||
|
| cpuinfo | lscpu |
|
||||||
|
| pscpu | ps auxf \vert sort -nr -k 3 |
|
||||||
|
| pscpu10 | ps auxf \vert sort -nr -k 3 \vert head -10 |
|
||||||
|
| psmem | ps auxf \vert sort -nr -k 4 |
|
||||||
|
| psmem10 | ps auxf \vert sort -nr -k 4 \vert head -10 |
|
||||||
|
|
||||||
=meminfo= is a call to =free= with sane defaults.
|
#+begin_SRC fish
|
||||||
#+BEGIN_SRC fish
|
<<generate-abbr(table=mgmt-abbr)>>
|
||||||
abbr meminfo 'free -m -l -t'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Similar to =meminfo=, we also have =gpumeminfo= so we can get a quick look
|
|
||||||
at the memory-related logs of our X session.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr gpumeminfo 'grep -i --color memory /var/log/Xorg.0.log'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
I also declared =cpuinfo= an alias of =lscpu= in order to keep consistent
|
|
||||||
with =meminfo=.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr cpuinfo lscpu
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
=pscpu= gives us information on what the CPU is running right now, and
|
|
||||||
=pscpu10= limits that to the top 10 threads.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr pscpu 'ps auxf | sort -nr -k 3'
|
|
||||||
abbr pscpu10 'ps auxf | sort -nr -k 3 | head -10'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Similarly, =psmem= gives us information on the memory usage of the current
|
|
||||||
threads, and =psmem10= only the ten most important threads in terms of
|
|
||||||
memory usage.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr psmem 'ps auxf | sort -nr -k 4'
|
|
||||||
abbr psmem10 'ps auxf | sort -nr -k 4 | head -10'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** System management (packages and services)
|
** System management (packages and services)
|
||||||
@ -261,38 +258,26 @@
|
|||||||
I added some of these abbreviations due to how often I have to write the
|
I added some of these abbreviations due to how often I have to write the
|
||||||
whole thing.
|
whole thing.
|
||||||
|
|
||||||
*** Package mangaement
|
*** Package management
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-281a59aa-4ea0-47ab-a4cc-33fff8d38165
|
:CUSTOM_ID: h-281a59aa-4ea0-47ab-a4cc-33fff8d38165
|
||||||
:END:
|
:END:
|
||||||
The first command is =remove= which removes a package from my system, as
|
The first command is =remove= which removes a package from my system, as
|
||||||
well as its dependencies no longer needed.
|
well as its dependencies no longer needed. =p=. =pacman='s or =yay='s. This
|
||||||
#+BEGIN_SRC fish
|
is why I simply type =purge=. And if I want to simply seach among the
|
||||||
abbr remove 'sudo pacman -Rscnd'
|
=pacman= repos, I can type =search=. Otherwise, if I want to include AUR
|
||||||
#+END_SRC
|
results, I’ll use =yay=.
|
||||||
|
|
||||||
But if I just want to run =pacman= as sudo, then I could always just type
|
#+NAME: pm-abbr
|
||||||
=p=.
|
| abbreviation | command |
|
||||||
#+BEGIN_SRC fish
|
|--------------+--------------------|
|
||||||
abbr p 'sudo -A pacman'
|
| remove | sudo pacman -Rscnd |
|
||||||
#+END_SRC
|
| p | sudo pacman |
|
||||||
|
| purge | yay -Sc |
|
||||||
|
| search | yay -Ss |
|
||||||
|
|
||||||
Sometimes, I just want to purge my package manager’s cache, be it
|
|
||||||
=pacman='s or =yay='s. This is why I simply type =purge=.
|
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr purge 'yay -Sc'
|
<<generate-abbr(table=pm-abbr)>>
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
And if I want to simply seach among the =pacman= repos, I can type
|
|
||||||
=search=. Otherwise, if I want to include AUR results, I’ll use =yay=.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr search 'pacman -Ss'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
To update everything from the official repos, I’ll sometimes type =update=
|
|
||||||
instead of the full command.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr update 'sudo pacman -Syu'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Service management
|
*** Service management
|
||||||
@ -301,14 +286,16 @@
|
|||||||
:END:
|
:END:
|
||||||
I don’t have the muscle memory of =systemctl=. So instead, I simply type
|
I don’t have the muscle memory of =systemctl=. So instead, I simply type
|
||||||
=c= when I want to do something user service related.
|
=c= when I want to do something user service related.
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr s 'systemctl --user'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
And if I want to manipulate system services, I can instead type a simple
|
And if I want to manipulate system services, I can instead type a simple
|
||||||
capital =S=.
|
capital =S=.
|
||||||
|
#+NAME: service-abbr
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+------------------|
|
||||||
|
| s | systemctl --user |
|
||||||
|
| S | sudo systemctl |
|
||||||
|
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr S 'sudo systemctl'
|
<<generate-abbr(table=service-abbr)>>
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Development
|
** Development
|
||||||
@ -324,9 +311,15 @@
|
|||||||
:END:
|
:END:
|
||||||
I have the following abbreviations so I can quickly run CMake and create a
|
I have the following abbreviations so I can quickly run CMake and create a
|
||||||
configuration for debug or release profiles.
|
configuration for debug or release profiles.
|
||||||
|
#+NAME: abbr-cmake
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+----------------------------------|
|
||||||
|
| cdebug | cmake -DCMAKE_BUILD_TYPE=Debug |
|
||||||
|
| crelease | cmake -DCMAKE_BUILD_TYPE=Release |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr cdebug 'cmake -DCMAKE_BUILD_TYPE=Debug'
|
<<generate-abbr(table=abbr-cmake)>>
|
||||||
abbr crelease 'cmake -DCMAKE_BUILD_TYPE=Release'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Compilation
|
*** Compilation
|
||||||
@ -335,11 +328,17 @@
|
|||||||
:END:
|
:END:
|
||||||
By default, I set =clang=, =clang++=, =gcc= and =g++= to the latest
|
By default, I set =clang=, =clang++=, =gcc= and =g++= to the latest
|
||||||
standard and with the =-Wall= flag activated.
|
standard and with the =-Wall= flag activated.
|
||||||
|
#+NAME: abbr-comp
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+----------------------|
|
||||||
|
| clang | clang -Wall |
|
||||||
|
| clang++ | clang++ -Wall |
|
||||||
|
| g++ | g++ -Wall -std=c++17 |
|
||||||
|
| gcc | gcc -Wall -std=c18 |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish :tangle
|
#+BEGIN_SRC fish :tangle
|
||||||
abbr clang 'clang -Wall'
|
<<generate-abbr(table=abbr-comp)>>
|
||||||
abbr clang++ 'clang++ -Wall'
|
|
||||||
abbr g++ 'g++ -Wall -std=c++17'
|
|
||||||
abbr gcc 'gcc -Wall -std=c18'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Docker
|
*** Docker
|
||||||
@ -348,12 +347,18 @@
|
|||||||
:END:
|
:END:
|
||||||
And of course, when it comes to Docker Compose, I don’t have time to write
|
And of course, when it comes to Docker Compose, I don’t have time to write
|
||||||
the full command, so I use these instead.
|
the full command, so I use these instead.
|
||||||
|
#+NAME: abbr-docker
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+---------------------------|
|
||||||
|
| dc | docker-compose |
|
||||||
|
| dcd | docker-compose down |
|
||||||
|
| dcr | docker-compose run --rm |
|
||||||
|
| dcu | docker-compose up |
|
||||||
|
| dcub | docker-compose up --build |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr dc docker-compose
|
<<generate-abbr(table=abbr-docker)>>
|
||||||
abbr dcd 'docker-compose down'
|
|
||||||
abbr dcr 'docker-compose run --rm'
|
|
||||||
abbr dcu 'docker-compose up'
|
|
||||||
abbr dcub 'docker-compose up --build'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Git
|
*** Git
|
||||||
@ -363,8 +368,14 @@
|
|||||||
And let’s face it: we all at one point just wanted to commit our code
|
And let’s face it: we all at one point just wanted to commit our code
|
||||||
without thinking about the message, to just get over with it. Don’t worry,
|
without thinking about the message, to just get over with it. Don’t worry,
|
||||||
I got you covered.
|
I got you covered.
|
||||||
|
#+NAME: abbr-git
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+-----------------------------------------------------|
|
||||||
|
| randcommit | git commit -m (curl -s whatthecommit.com/index.txt) |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish :tangle
|
#+BEGIN_SRC fish :tangle
|
||||||
abbr randcommit 'git commit -m (curl -s whatthecommit.com/index.txt)'
|
<<generate-abbr(table=abbr-git)>>
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Prolog
|
*** Prolog
|
||||||
@ -373,31 +384,41 @@
|
|||||||
:END:
|
:END:
|
||||||
When I launch =swipl=, I prefer to have my terminal cleaned before and
|
When I launch =swipl=, I prefer to have my terminal cleaned before and
|
||||||
after it runs, I find it more clean.
|
after it runs, I find it more clean.
|
||||||
|
#+NAME: abbr-prolog
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+----------------------------|
|
||||||
|
| swipl | clear && swipl -q && clear |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr swipl 'clear && swipl -q && clear'
|
<<generate-abbr(table=abbr-prolog)>>
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Text editors
|
*** Text editors
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-51155e06-872d-4a12-9bf7-ae5eabc256ad
|
:CUSTOM_ID: h-51155e06-872d-4a12-9bf7-ae5eabc256ad
|
||||||
:END:
|
:END:
|
||||||
I greatly prefer to use Emacsclient as my main text editor; Emacs has
|
I greatly prefer to use Emacsclient as my main text editor; Emacs has
|
||||||
basically all I need. So, it’s only normal I have an abbreviation to launch
|
basically all I need. So, it’s only normal I have an abbreviation to launch
|
||||||
a new instance of it.
|
a new instance of it. However, in a graphical environment, this will launch
|
||||||
#+BEGIN_SRC fish
|
a new graphical window of Emacs. To launch a terminal instance, I’ll use
|
||||||
abbr e 'emacsclient -c'
|
=enw= (=nw= stands for the option “nowindow” =-nw= of Emacs). I also wish to
|
||||||
#+END_SRC
|
completely stop using other text editors, such as =vi=, =vim=, =nano= and
|
||||||
However, in a graphical environment, this will launch a new graphical
|
=ed=, so let’s all add their command as an abbreviation for Emacs.
|
||||||
window of Emacs. To launch a terminal instance, I’ll use =enw= (=nw= stands
|
|
||||||
for the option “nowindow” =-nw= of Emacs).
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr enw 'emacsclient -c -nw'
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
I also have the abbreviation =vi= which refers to =vim=. I really should
|
#+NAME: abbr-text-ed
|
||||||
learn =vi=, but I also really don’t feel like it.
|
| abbreviation | command |
|
||||||
#+BEGIN_SRC fish
|
|--------------+--------------------|
|
||||||
abbr vi vim
|
| e | emacsclient -c |
|
||||||
|
| enw | emacsclient -c -nw |
|
||||||
|
| vi | emacsclient -c |
|
||||||
|
| vim | emacsclient -c |
|
||||||
|
| nano | emacsclient -c |
|
||||||
|
| ed | emacsclient -c |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
|
#+BEGIN_SRC fish :noweb yes
|
||||||
|
<<generate-abbr(table=abbr-text-ed)>>
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** LaTeX
|
** LaTeX
|
||||||
@ -408,68 +429,71 @@
|
|||||||
when it comes to PDF exports of my org files. Hence why I use the LaTeX
|
when it comes to PDF exports of my org files. Hence why I use the LaTeX
|
||||||
package manager. It is recommended to use =tllocalmgr= instead of =tlmgr=,
|
package manager. It is recommended to use =tllocalmgr= instead of =tlmgr=,
|
||||||
but I can never remember the command, and the latter is faster to type, so
|
but I can never remember the command, and the latter is faster to type, so
|
||||||
time for an abbreviation.
|
time for an abbreviation. Same goes for =texhash= which must be run as sudo.
|
||||||
#+BEGIN_SRC fish
|
#+NAME: latex-abbr
|
||||||
abbr tlmgr tllocalmgr
|
| abbreviation | command |
|
||||||
#+END_SRC
|
|--------------+--------------|
|
||||||
|
| tlmgr | tllocalmgr |
|
||||||
|
| texhash | sudo texhash |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr texhash 'sudo texhash'
|
<<generate-abbr(table=latex-abbr)>>
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Some security measures
|
** Some security measures
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-dd97ea71-c43f-4b79-8bb7-1f857284b1b4
|
:CUSTOM_ID: h-dd97ea71-c43f-4b79-8bb7-1f857284b1b4
|
||||||
:END:
|
:END:
|
||||||
Some commands can be quite dangerous when not used properly, which is why I
|
Some commands can be quite dangerous when not used properly, which is why I
|
||||||
added default flags and options so I can get warnings before things get
|
added default flags and options so I can get warnings before things get ugly.
|
||||||
ugly.
|
The =-i= and =-I= add prompts in case we might not want to do what we asked
|
||||||
|
the shell to do. Notice =lns= which creates symlinks, =rmd= which removes
|
||||||
|
directories, =rmf= which forces deletion, and =rmdf= which forces the
|
||||||
|
delition of a directory. Notice also the =--preserve-root= which will prevent
|
||||||
|
me from accidentally removing the root folder. I added the same option to
|
||||||
|
=chgrp=, =chmod=, and =chown=.
|
||||||
|
#+NAME: sec-abbr
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+--------------------------|
|
||||||
|
| cp | cp -i |
|
||||||
|
| ln | ln -i |
|
||||||
|
| lns | ln -si |
|
||||||
|
| mv | mv -i |
|
||||||
|
| rm | rm -Iv |
|
||||||
|
| rmd | rm --preserve-root -Irv |
|
||||||
|
| rmdf | rm --preserve-root -Irfv |
|
||||||
|
| rmf | rm --preserve-root -Ifv |
|
||||||
|
| chgrp | chgrp --preserve-root -v |
|
||||||
|
| chmod | chmod --preserve-root -v |
|
||||||
|
| chown | chown --preserve-root -v |
|
||||||
|
|
||||||
|
Here is the corresponding fish configuration:
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr cp 'cp -i'
|
<<generate-abbr(table=sec-abbr)>>
|
||||||
abbr ln 'ln -i'
|
|
||||||
abbr lns 'ln -si'
|
|
||||||
abbr mv 'mv -i'
|
|
||||||
abbr rm 'rm -Iv'
|
|
||||||
abbr rmd 'rm --preserve-root -Irv'
|
|
||||||
abbr rmdf 'rm --preserve-root -Irfv'
|
|
||||||
abbr rmf 'rm --preserve-root -Ifv'
|
|
||||||
#+END_SRC
|
|
||||||
The =-i= and =-I= add prompts in case we might not want to do what we asked
|
|
||||||
the shell to do. Notice =lns= which creates symlinks, =rmd= which removes
|
|
||||||
directories, =rmf= which forces deletion, and =rmdf= which forces the
|
|
||||||
delition of a directory. Notice also the =--preserve-root= which will
|
|
||||||
prevent me from accidentally removing the root folder. I added the same
|
|
||||||
option to =chgrp=, =chmod=, and =chown=.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr chgrp 'chgrp --preserve-root -v'
|
|
||||||
abbr chmod 'chmod --preserve-root -v'
|
|
||||||
abbr chown 'chown --preserve-root -v'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Typos
|
** Typos
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-4c5a03cd-20a8-437e-87b7-af990780084e
|
:CUSTOM_ID: h-4c5a03cd-20a8-437e-87b7-af990780084e
|
||||||
:END:
|
:END:
|
||||||
Let’s admit it, we all make typos from time to time in the shell, and some
|
Let’s admit it, we all make typos from time to time in the shell, and some
|
||||||
are recurrent enough we make abbreviations or aliases of the correct
|
are recurrent enough we make abbreviations or aliases of the correct command.
|
||||||
command. Well, I have some of my abbreviations which were make exactly
|
Well, I have some of my abbreviations which were make exactly because of
|
||||||
because of this.
|
this. Sometimes for some reasons, my brain makes me write =clean= instead of
|
||||||
|
=clear=. So, let’s just replace the former by the latter. I’m also very bad
|
||||||
|
at typing =exit=. And sometimes I suck at typing =htop=.
|
||||||
|
#+NAME: typo-abbr
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+---------|
|
||||||
|
| clean | clear |
|
||||||
|
| exi | exit |
|
||||||
|
| exti | exit |
|
||||||
|
| hotp | htop |
|
||||||
|
|
||||||
Sometimes for some reasons, my brain makes me write =clean= instead of
|
Here is the corresponding fish configuration:
|
||||||
=clear=. So, let’s just replace the former by the latter.
|
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr clean clear
|
<<generate-abbr(table=typo-abbr)>>
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
I’m also very bad at typing =exit=.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr exi exit
|
|
||||||
abbr exti exit
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
And sometimes I suck at typing =htop=.
|
|
||||||
#+BEGIN_SRC fish
|
|
||||||
abbr hotp htop
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Misc
|
** Misc
|
||||||
@ -557,9 +581,14 @@
|
|||||||
one day hopefully, after seeing the abbreviations’ expansion over and over
|
one day hopefully, after seeing the abbreviations’ expansion over and over
|
||||||
I’ll remember the command like I did for the abbreviation of =remove= (see
|
I’ll remember the command like I did for the abbreviation of =remove= (see
|
||||||
[[#h-281a59aa-4ea0-47ab-a4cc-33fff8d38165][Package management]]).
|
[[#h-281a59aa-4ea0-47ab-a4cc-33fff8d38165][Package management]]).
|
||||||
|
#+NAME: tar-abbr
|
||||||
|
| abbreviation | command |
|
||||||
|
|--------------+-----------|
|
||||||
|
| compress | tar -czf |
|
||||||
|
| untar | tar -xvzf |
|
||||||
|
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr compress 'tar -czf'
|
<<generate-abbr(table=tar-abbr)>>
|
||||||
abbr untar 'tar -xvzf'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Feh
|
*** Feh
|
||||||
@ -583,22 +612,28 @@
|
|||||||
abbr nmcli 'nmcli -p -c auto'
|
abbr nmcli 'nmcli -p -c auto'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
*** NordVPN
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-f35e00a2-ec5b-416d-821f-56040ad1d6b4
|
||||||
|
:END:
|
||||||
Next, we have some NordVPN-related shortcuts. The first one is a simple
|
Next, we have some NordVPN-related shortcuts. The first one is a simple
|
||||||
abbreviation to =nordvpn=. The second one is a shortcut to connect to a
|
abbreviation to =nordvpn=. The second one is a shortcut to connect to a
|
||||||
server, and to disconnect from the current server.
|
server, and to disconnect from the current server. I also have a couple of
|
||||||
#+BEGIN_SRC fish
|
shortcuts to quickly connect to some preselected countries, mainly France,
|
||||||
abbr n 'nordvpn'
|
Germany, Japan and the US.
|
||||||
abbr nc 'nordvpn c'
|
#+NAME: nordvpn-abbr
|
||||||
abbr nd 'nordvpn d'
|
| abbreviation | command |
|
||||||
#+END_SRC
|
|--------------+-------------------------|
|
||||||
|
| n | nordvpn |
|
||||||
|
| nc | nordvpn c |
|
||||||
|
| nd | nordvpn d |
|
||||||
|
| ncf | nordvpn c France |
|
||||||
|
| ncg | nordvpn c Germany |
|
||||||
|
| ncj | nordvpn c Japan |
|
||||||
|
| ncu | nordvpn c United_States |
|
||||||
|
|
||||||
I also have a couple of shortcuts to quickly connect to some preselected
|
|
||||||
countries, mainly France, Germany, Japan and the US.
|
|
||||||
#+BEGIN_SRC fish
|
#+BEGIN_SRC fish
|
||||||
abbr ncf 'nordvpn c France'
|
<<generate-abbr(table=nordvpn-abbr)>>
|
||||||
abbr ncg 'nordvpn c Germany'
|
|
||||||
abbr ncj 'nordvpn c Japan'
|
|
||||||
abbr ncu 'nordvpn c United_States'
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Wget
|
*** Wget
|
||||||
|
@ -92,15 +92,15 @@
|
|||||||
will just have to change the name of the executable here.
|
will just have to change the name of the executable here.
|
||||||
|
|
||||||
#+NAME: variable-table
|
#+NAME: variable-table
|
||||||
| variable | value |
|
| variable | value |
|
||||||
|-------------+--------------------------------------------------------------------------|
|
|----------+-------|
|
||||||
| $mod | Mod4 |
|
| $mod | Mod4 |
|
||||||
| $alt | Mod1 |
|
| $alt | Mod1 |
|
||||||
| $up | Up |
|
| $up | Up |
|
||||||
| $down | Down |
|
| $down | Down |
|
||||||
| $left | Left |
|
| $left | Left |
|
||||||
| $right | Right |
|
| $right | Right |
|
||||||
| $term | st |
|
| $term | st |
|
||||||
|
|
||||||
#+NAME: variable-sh
|
#+NAME: variable-sh
|
||||||
| variable | value |
|
| variable | value |
|
||||||
@ -125,7 +125,7 @@
|
|||||||
return result
|
return result
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS[58c517fe29b63f631ff0ba754d5d9ec4ea673388]: generate-variables
|
#+RESULTS[187d9be7907abf05492d27a454685b424b933b7d]: generate-variables
|
||||||
: set $mod Mod4
|
: set $mod Mod4
|
||||||
: set $alt Mod1
|
: set $alt Mod1
|
||||||
: set $up Up
|
: set $up Up
|
||||||
|
@ -110,8 +110,7 @@
|
|||||||
https://phundrak.com (Français)
|
https://phundrak.com (Français)
|
||||||
https://en.phundrak.com (English)
|
https://en.phundrak.com (English)
|
||||||
|
|
||||||
Pensez à notre planète, avez-vous vraiment besoin d’imprimer ce courriel ?
|
Sent from a Free and Open-Source Linux operating system with GNU/Emacs
|
||||||
Please mind our planet, do you really need to print this email?
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Fish configuration with useful abbreviations
|
** Fish configuration with useful abbreviations
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak’s Spacemacs Configuration" />
|
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak’s Spacemacs Configuration" />
|
||||||
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak’s Spacemacs Configuration" />
|
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak’s Spacemacs Configuration" />
|
||||||
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the Spacemacs configuration of Phundrak" />
|
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the Spacemacs configuration of Phundrak" />
|
||||||
|
#+PROPERTY: header-args: :mkdirp yes
|
||||||
|
|
||||||
* Table of Contents :TOC:noexport:
|
* Table of Contents :TOC:noexport:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -74,17 +75,12 @@
|
|||||||
- [[#visual-commands][Visual commands]]
|
- [[#visual-commands][Visual commands]]
|
||||||
- [[#eshell-theme][Eshell theme]]
|
- [[#eshell-theme][Eshell theme]]
|
||||||
- [[#file-extensions][File extensions]]
|
- [[#file-extensions][File extensions]]
|
||||||
- [[#gnus][Gnus]]
|
|
||||||
- [[#shortcuts][Shortcuts]]
|
|
||||||
- [[#hooks][Hooks]]
|
|
||||||
- [[#mail-account-configuration][Mail account configuration]]
|
|
||||||
- [[#general-options][General options]]
|
|
||||||
- [[#visual-configuration-1][Visual configuration]]
|
|
||||||
- [[#lsp][LSP]]
|
- [[#lsp][LSP]]
|
||||||
|
- [[#mu4e][Mu4e]]
|
||||||
- [[#miscellaneous-1][Miscellaneous]]
|
- [[#miscellaneous-1][Miscellaneous]]
|
||||||
- [[#evil][Evil]]
|
- [[#evil][Evil]]
|
||||||
- [[#default-modes][Default modes]]
|
- [[#default-modes][Default modes]]
|
||||||
- [[#hooks-1][Hooks]]
|
- [[#hooks][Hooks]]
|
||||||
- [[#pinentry][Pinentry]]
|
- [[#pinentry][Pinentry]]
|
||||||
- [[#prettified-symbols][Prettified symbols]]
|
- [[#prettified-symbols][Prettified symbols]]
|
||||||
- [[#twittering-mode][Twittering mode]]
|
- [[#twittering-mode][Twittering mode]]
|
||||||
@ -103,13 +99,19 @@
|
|||||||
- [[#org-files-exports][Org files exports]]
|
- [[#org-files-exports][Org files exports]]
|
||||||
- [[#custom-latex-formats][Custom LaTeX formats]]
|
- [[#custom-latex-formats][Custom LaTeX formats]]
|
||||||
- [[#org-agenda][Org agenda]]
|
- [[#org-agenda][Org agenda]]
|
||||||
- [[#org-journal][Org journal]]
|
- [[#org-capture][Org capture]]
|
||||||
|
- [[#emails][Emails]]
|
||||||
|
- [[#journal][Journal]]
|
||||||
|
- [[#notes][Notes]]
|
||||||
|
- [[#protocol][Protocol]]
|
||||||
|
- [[#resources][Resources]]
|
||||||
|
- [[#youtube][YouTube]]
|
||||||
- [[#org-projects][Org projects]]
|
- [[#org-projects][Org projects]]
|
||||||
- [[#configuration-website][Configuration website]]
|
- [[#configuration-website][Configuration website]]
|
||||||
- [[#linguistics-website][Linguistics website]]
|
- [[#linguistics-website][Linguistics website]]
|
||||||
- [[#rust][Rust]]
|
- [[#rust][Rust]]
|
||||||
- [[#scheme][Scheme]]
|
- [[#scheme][Scheme]]
|
||||||
- [[#shortcuts-1][Shortcuts]]
|
- [[#shortcuts][Shortcuts]]
|
||||||
- [[#applications][Applications]]
|
- [[#applications][Applications]]
|
||||||
- [[#comments][Comments]]
|
- [[#comments][Comments]]
|
||||||
- [[#files][Files]]
|
- [[#files][Files]]
|
||||||
@ -135,7 +137,7 @@
|
|||||||
|
|
||||||
* Spacemacs layers and packages
|
* Spacemacs layers and packages
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/spacemacs-layers.el :exports code
|
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/spacemacs-layers.el :exports code :results silent
|
||||||
:CUSTOM_ID: h-9d9869e0-4672-419c-bf37-3d3ae1b7c0aa
|
:CUSTOM_ID: h-9d9869e0-4672-419c-bf37-3d3ae1b7c0aa
|
||||||
:END:
|
:END:
|
||||||
Here will be our layer configuration set. Everything here is set with a
|
Here will be our layer configuration set. Everything here is set with a
|
||||||
@ -204,23 +206,22 @@
|
|||||||
Dependencies should be explicitly included as they won’t be resolved
|
Dependencies should be explicitly included as they won’t be resolved
|
||||||
automatically. Here is a table of all the extra packages I use:
|
automatically. Here is a table of all the extra packages I use:
|
||||||
#+NAME: extra-packages
|
#+NAME: extra-packages
|
||||||
| name of the package | why is it installed |
|
| name of the package | why is it installed |
|
||||||
|------------------------+------------------------------------------------------|
|
|---------------------+------------------------------------------------------|
|
||||||
| dired-du | alternative to ~ncdu~ with Dired |
|
| dired-du | alternative to ~ncdu~ with Dired |
|
||||||
| doom-themes | some cool themes |
|
| doom-themes | some cool themes |
|
||||||
| edit-indirect | edit region in separate buffer |
|
| edit-indirect | edit region in separate buffer |
|
||||||
| elcord | rich integration of Emacs in Discord |
|
| elcord | rich integration of Emacs in Discord |
|
||||||
| eshell-git-prompt | pimp my Eshell |
|
| kaolin-themes | some cool themes |
|
||||||
| kaolin-themes | some cool themes |
|
| magit-gitflow | integrate gitflow in Magit |
|
||||||
| magit-gitflow | integrate gitflow in Magit |
|
| meson-mode | major mode for Meson build files |
|
||||||
| meson-mode | major mode for Meson build files |
|
| multiple-cursors | I don’t like the layer, I prefer this package alone |
|
||||||
| multiple-cursors | I don’t like the layer, I prefer this package alone |
|
| org-sidebar | display on the side the outline of an Org buffer |
|
||||||
| org-sidebar | display on the side the outline of an Org buffer |
|
| outorg | edit comments as Org-mode buffers |
|
||||||
| outorg | edit comments as Org-mode buffers |
|
| pinentry | enter a GPG password from Emacs |
|
||||||
| pinentry | enter a GPG password from Emacs |
|
| visual-fill-column | allow the use of ~fill-column~ in ~visual-line-mode~ |
|
||||||
| visual-fill-column | allow the use of ~fill-column~ in ~visual-line-mode~ |
|
| wttrin | weather in Emacs |
|
||||||
| wttrin | weather in Emacs |
|
| yasnippet-snippets | snippets for YaSnippet |
|
||||||
| yasnippet-snippets | snippets for YaSnippet |
|
|
||||||
|
|
||||||
#+NAME: make-extra-packages
|
#+NAME: make-extra-packages
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no :var packages=extra-packages[,0] :exports none
|
#+BEGIN_SRC emacs-lisp :tangle no :var packages=extra-packages[,0] :exports none
|
||||||
@ -321,10 +322,15 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-0db2333c-86bf-4b41-8226-da66885fce36
|
:CUSTOM_ID: h-0db2333c-86bf-4b41-8226-da66885fce36
|
||||||
:END:
|
:END:
|
||||||
As described below, I use Gnus as my main email client. Therefore, I have
|
I use as my daily Email client ~mu4e~, so let’s enable it and tell Emacs
|
||||||
the gnus layer enabled:
|
where mu4e is installed. I also tell mu4e to use maildirs extensions, use
|
||||||
|
async operations, where to keep attachments, and enable the mu4e modeline.
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
gnus
|
(mu4e :variables
|
||||||
|
mu4e-installation-path "/usr/share/emacs/site-lisp"
|
||||||
|
mu4e-use-maildirs-extension t
|
||||||
|
mu4e-enable-mode-line t
|
||||||
|
mu4e-attachment-dir "~/Documents")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Emacs
|
*** Emacs
|
||||||
@ -359,7 +365,6 @@
|
|||||||
org-enable-github-support t
|
org-enable-github-support t
|
||||||
org-enable-reveal-js-support t
|
org-enable-reveal-js-support t
|
||||||
org-enable-sticky-header t
|
org-enable-sticky-header t
|
||||||
org-enable-org-journal-support t
|
|
||||||
spaceline-org-clock-p t
|
spaceline-org-clock-p t
|
||||||
org-projectile-file "TODOs.org"
|
org-projectile-file "TODOs.org"
|
||||||
org-download-image-dir "~/Pictures/org/"
|
org-download-image-dir "~/Pictures/org/"
|
||||||
@ -646,7 +651,7 @@
|
|||||||
* Init
|
* Init
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-3f3c8a0b-56cd-4be6-b019-3ba6f1e24f96
|
:CUSTOM_ID: h-3f3c8a0b-56cd-4be6-b019-3ba6f1e24f96
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/spacemacs-init.el :exports code
|
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/spacemacs-init.el :exports code :results silent
|
||||||
:END:
|
:END:
|
||||||
The ~dotspacemacs/init~ function is the one called at the very begining of the
|
The ~dotspacemacs/init~ function is the one called at the very begining of the
|
||||||
Spacemacs startup, before any kind of configuration, including the layer
|
Spacemacs startup, before any kind of configuration, including the layer
|
||||||
@ -908,7 +913,7 @@
|
|||||||
variable sets in seconds the time Spacemacs should wait between a key press
|
variable sets in seconds the time Spacemacs should wait between a key press
|
||||||
and the moment =which-key= should be shown.
|
and the moment =which-key= should be shown.
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(setq-default dotspacemacs-which-key-delay 0.4)
|
(setq-default dotspacemacs-which-key-delay 3)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
This variable sets =which-key='s frame position. Possible values are:
|
This variable sets =which-key='s frame position. Possible values are:
|
||||||
@ -1263,7 +1268,7 @@
|
|||||||
* User Initialization
|
* User Initialization
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-e297b9be-9b0d-4c2d-bb6e-402f0d00be0d
|
:CUSTOM_ID: h-e297b9be-9b0d-4c2d-bb6e-402f0d00be0d
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/user-init.el :exports code
|
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/user-init.el :exports code :results silent
|
||||||
:END:
|
:END:
|
||||||
While Emacs and especially Spacemacs loads, I want it to initialize some
|
While Emacs and especially Spacemacs loads, I want it to initialize some
|
||||||
elements and load some packages. First of all, I want it to load my private
|
elements and load some packages. First of all, I want it to load my private
|
||||||
@ -1275,6 +1280,7 @@
|
|||||||
Then, I want a couple of requires:
|
Then, I want a couple of requires:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(require 'org-id)
|
(require 'org-id)
|
||||||
|
(require 'org-protocol)
|
||||||
(require 'package)
|
(require 'package)
|
||||||
(require 'ox-latex)
|
(require 'ox-latex)
|
||||||
(require 'ox-publish)
|
(require 'ox-publish)
|
||||||
@ -1308,7 +1314,7 @@
|
|||||||
* User Configuration
|
* User Configuration
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-7a36d3a0-8bb6-4d9d-9402-eadbc49fef32
|
:CUSTOM_ID: h-7a36d3a0-8bb6-4d9d-9402-eadbc49fef32
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/user-config.el :exports code
|
:header-args:emacs-lisp: :comments link :tangle ~/.config/emacs/private/user-config.el :exports code :results silent
|
||||||
:END:
|
:END:
|
||||||
** ASM configuration
|
** ASM configuration
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -1783,11 +1789,6 @@
|
|||||||
eshell-prompt-function 'eshell/my-prompt)
|
eshell-prompt-function 'eshell/my-prompt)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Finally, let’s declare the theme of our shell:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(eshell-git-prompt-use-theme 'powerline)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** File extensions
|
** File extensions
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-beb67a88-d7d3-4d58-bbc7-7a7be67f64aa
|
:CUSTOM_ID: h-beb67a88-d7d3-4d58-bbc7-7a7be67f64aa
|
||||||
@ -1824,129 +1825,6 @@
|
|||||||
auto-mode-alist))
|
auto-mode-alist))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Gnus
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-fb05a405-110f-4e7e-a21d-b768615754cc
|
|
||||||
:END:
|
|
||||||
Here comes my Gnus configuration. Gnus is an email client I use daily to
|
|
||||||
read, manage, answer to and forward messages I receive by email.
|
|
||||||
|
|
||||||
*** Shortcuts
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-4715e44d-b95b-40d4-b79a-c7873d972b39
|
|
||||||
:END:
|
|
||||||
Some shortcuts needed to be redefined in order for Evil to work well with
|
|
||||||
Gnus. Here is first the declaration of a prefix:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(spacemacs/declare-prefix "og" "gnus")
|
|
||||||
#+END_SRC
|
|
||||||
And here are said shortcuts. As described above in the [[#h-f193126f-abc1-4287-aa70-4f2080d2ef8f][shortcuts]] chapter,
|
|
||||||
these Spacemacs shortcuts are invoked with the ~SPC~ leader key.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(spacemacs/set-leader-keys
|
|
||||||
"ogD" 'turn-on-gnus-dired-mode
|
|
||||||
"ogd" 'gnus-summary-delete-article
|
|
||||||
"ogf" 'gnus-summary-mail-forward
|
|
||||||
"ogo" 'my-gnus-group-list-subscribed-groups
|
|
||||||
"ogr" 'gnus-summary-insert-new-articles
|
|
||||||
"ogs" 'message-send-and-exit)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** Hooks
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-5208e53f-d2e7-4dc1-a081-964ac1c90d4b
|
|
||||||
:END:
|
|
||||||
To sort by topics my different mailboxes and folders, I use the
|
|
||||||
~gnus-topic-mode~ minor mode. To get it active by default, I use the
|
|
||||||
following hook to activate it:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** Mail account configuration
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-eb1a12b5-38ef-4c81-9d6c-01c1e066feaa
|
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.gnus.el
|
|
||||||
:END:
|
|
||||||
This section will be tangled in =~/.gnus.el=.
|
|
||||||
|
|
||||||
I only use one email account with Gnus: ~lucien@phundrak.com~. Here is how I
|
|
||||||
configured it:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq gnus-secondary-select-methods '((nnimap "lucien@phundrak.com"
|
|
||||||
(nnimap-address "mail.phundrak.com")
|
|
||||||
(nnimap-server-port 143)
|
|
||||||
(nnimap-stream starttls)))
|
|
||||||
message-send-mail-function 'smtpmail-send-it
|
|
||||||
smtpmail-smtp-server "mail.phundrak.com"
|
|
||||||
smtpmail-stream-type 'starttls
|
|
||||||
smtpmail-smtp-service 587
|
|
||||||
gnus-message-archive-method '(nnimap "mail.phundrak.com")
|
|
||||||
gnus-message-archive-group "Sent"
|
|
||||||
nnml-directory "~/Mails"
|
|
||||||
message-directory "~/Mails"
|
|
||||||
gnus-fetch-old-headers 'some
|
|
||||||
mm-discouraged-alternatives '("text/html" "text/richtext"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** General options
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-336a2c1c-ed8d-4a90-b4a3-6422a0199ba0
|
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.gnus.el
|
|
||||||
:END:
|
|
||||||
This section will be tangled in =~/.gnus.el=.
|
|
||||||
|
|
||||||
I want to use at one point the [[https://www.emacswiki.org/emacs/EmacsApplicationFramework][Emacs Application Framework]] which is set to
|
|
||||||
be able one day to render Gnus emails, but for now I am using w3m to render
|
|
||||||
HTML emails I receive.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq mm-text-html-renderer 'w3m)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
I also want Gnus to use the cache in case I need to navigate my emails
|
|
||||||
offline:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq gnus-use-cache t)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
The following allows the user to read in a group all the messages in this
|
|
||||||
group, whether they are read or unread.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq gnus-fetch-old-headers t)
|
|
||||||
(setq gnus-parameters '(("nnimap.*"
|
|
||||||
(display . all))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Let’s set a quick organization of the Gnus folders, the format in which sent
|
|
||||||
messages should be saved, and the typology of Gnus’ topics:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(eval-after-load 'gnus-topic
|
|
||||||
'(progn
|
|
||||||
(setq gnus-message-archive-group '((format-time-string "sent.%Y")))
|
|
||||||
(setq gnus-topic-topology '(("Gnus" visible)
|
|
||||||
(("lucien@phundrak.com" visible nil nil))))
|
|
||||||
(setq gnus-topic-alist '(("lucien@phundrak.com" ; the key of the topic
|
|
||||||
"nnimap+lucien@phundrak.com:INBOX"
|
|
||||||
"nnimap+lucien@phundrak.com:Sent"
|
|
||||||
"nnimap+lucien@phundrak.com:Drafts")
|
|
||||||
("Gnus")))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** Visual configuration
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: h-8ccda149-c755-4c80-8643-7a9b99ee85b2
|
|
||||||
:header-args:emacs-lisp: :comments link :tangle ~/.gnus.el
|
|
||||||
:END:
|
|
||||||
This section will be tangled in =~/.gnus.el=.
|
|
||||||
|
|
||||||
I get it that it used to be a good option with 4/3 screens, but frankly
|
|
||||||
opening an email at the bottom of the frame instead of the side of the frame
|
|
||||||
does not look good anymore. So, let’s fix that:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(gnus-add-configuration
|
|
||||||
'(article (horizontal 1.0 (summary .4 point) (article 1.0))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** LSP
|
** LSP
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-4d0272c3-df5e-4f6b-a6e6-f769add4e603
|
:CUSTOM_ID: h-4d0272c3-df5e-4f6b-a6e6-f769add4e603
|
||||||
@ -1973,6 +1851,145 @@
|
|||||||
(tooltip-mode 1)
|
(tooltip-mode 1)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** Mu4e
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-ba4a69ff-38a6-498a-b076-a514bbf0701f
|
||||||
|
:END:
|
||||||
|
Mu4e is a frontend for mu, an email analyzer which sits on top of a Maildir
|
||||||
|
which gets updated with ~isync~. It has a lot of neat features, but I guess
|
||||||
|
my favorite ones are:
|
||||||
|
1. the search query feature
|
||||||
|
2. being able to send an HTML email either to the browser or
|
||||||
|
3. to compile it to a PDF for a better output
|
||||||
|
This last feature can only be enabled manually with Arch Linux. We need
|
||||||
|
~webkitgtk~ installed, and unfortunately, it is by default only available
|
||||||
|
through the AUR and has to be compiled. Thing is, ~webkitgtk~ is a *BIG*
|
||||||
|
piece of software, and compiling it can be very time consuming. So, I decided
|
||||||
|
to add ArchLinuxCN’s servers to my pacman config (instructions on how to do
|
||||||
|
so [[https://github.com/archlinuxcn/repo][here]]) so I could install a compiled version from their repos. Next, when I
|
||||||
|
installed ~mu~ from the AUR, I modified the PKGBUILD like so:
|
||||||
|
#+BEGIN_SRC diff :tangle no
|
||||||
|
< ./configure --prefix=/usr --disable-webkit --disable-gtk --enable-mu4e --enable-guile
|
||||||
|
---
|
||||||
|
> ./configure --prefix=/usr --enable-mu4e --enable-guile
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
This enables the installation of ~msg2pdf~, which in turn enables the email
|
||||||
|
compilation to PDF with the shortcut ~a v~ when an email is opened, and this
|
||||||
|
opens the PDF in a new Emacs buffer.
|
||||||
|
|
||||||
|
Due to mu sitting on top of a Maildir, I need to tell mu4e where said maildir
|
||||||
|
is, and point it the trash, archive, and sent folders as well as the refresh
|
||||||
|
command and how frequently I want my emails to be refreshed.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mu4e-maildir "~/.mail"
|
||||||
|
mu4e-trash-folder "/Trash"
|
||||||
|
mu4e-refile-folder "/Archive"
|
||||||
|
mu4e-sent-folder "/Sent"
|
||||||
|
mu4e-get-mail-command "mbsync -a"
|
||||||
|
mu4e-update-interval 60)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
The following also allows me to automatically include my signature in my
|
||||||
|
Emails, to view images in my Emacs buffers and to show me the address of my
|
||||||
|
contacts and not just their names.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mu4e-compose-signature-auto-include t
|
||||||
|
mu4e-view-show-images t
|
||||||
|
mu4e-view-show-addresses t)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
This source block is an example of the search queries in mu4e, and part of
|
||||||
|
the reason why I very much like mu4e: these bookmarks are actually defined by
|
||||||
|
search queries, but act as if they were just yet another type of custom inbox
|
||||||
|
you get with modern Email client (and often you don’t even get them). All
|
||||||
|
these bookmarks can be accessed through a shortcut on the main mu4e buffer,
|
||||||
|
prefixed by ~b~. So, for instance, my unread messages are accessed through
|
||||||
|
~bu~.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mu4e-bookmarks
|
||||||
|
`(("flag:unread AND NOT flag:trashed" "Unread messages" ?u)
|
||||||
|
("date:today..now" "Today's messages" ?t)
|
||||||
|
("date:7d..now" "Last 7 days" ?w)
|
||||||
|
("mime:image/*" "Messages with images" ?p)
|
||||||
|
(,(mapconcat 'identity
|
||||||
|
(mapcar
|
||||||
|
(lambda (maildir)
|
||||||
|
(concat "maildir:" (car maildir)))
|
||||||
|
mu4e-maildir-shortcuts) " OR ")
|
||||||
|
"All inboxes" ?i)))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
On new email arrival, Emacs can send the system a notification which will be
|
||||||
|
handled as any other notification received by the system and will display the
|
||||||
|
number of unread emails to the user; in my case, notifications are handled by
|
||||||
|
[[https://dunst-project.org/][dunst]].
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mu4e-enable-notifications t
|
||||||
|
mu4e-alert-email-notification-types '(count))
|
||||||
|
(with-eval-after-load 'mu4e-alert
|
||||||
|
(mu4e-alert-set-default-style 'libnotify))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Now this hook is added so I can get a maximal width for the text of my
|
||||||
|
emails, I really don’t like it when lines are kilometers long. I would like
|
||||||
|
instead to hook ~visual-line-mode~ and ~auto-fill-mode~, but for some reasons
|
||||||
|
Emacs throws an error when I add them, So I go with ~visual-fill-column-mode~
|
||||||
|
instead.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'mu4e-view-mode-hook 'visual-fill-column-mode)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
On modern-day computers, with wide screens almost everywhere, there is no
|
||||||
|
reason for the email buffer to open below the email directory and not on its
|
||||||
|
right, which is why I set the split view to be vertical instead of
|
||||||
|
horizontal. I also set the width the email directory should keep to 80
|
||||||
|
characters (and I could go to 120, but that’s only good for my
|
||||||
|
ultra-widescreen), because 30 characters is way too f-ing low.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mu4e-split-view 'vertical
|
||||||
|
mu4e-headers-visible-columns 80)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
I want to add myself as a hidden recipient to all of my messages so I can get
|
||||||
|
them in the email thread in my inbox and not just get a thread of messages
|
||||||
|
not sent by me –the thread could kinda lack some context if the other people
|
||||||
|
do not insert my email in their answer. But unfortunately, for some obscure
|
||||||
|
reason, mu4e does not use the following variable for its email templates, so
|
||||||
|
I am keeping this as a reminder I should find how to fix that. It does work
|
||||||
|
when I’m exporting an org file to and HTML buffer to be sent by email through
|
||||||
|
~, e m~.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq message-default-headers "Bcc: Lucien Cartier-Tilet <lucien@phundrak.com>\n")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Finally but very importantly, this is the setup I have for my SMTP mail
|
||||||
|
server: I point Emacs’ SMTP services to my private mail server on its SMTP
|
||||||
|
port, which should be used with a STARTTLS stream. And I tell Emacs this is
|
||||||
|
the default way to send an email.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq smtpmail-smtp-server "mail.phundrak.com"
|
||||||
|
smtpmail-smtp-service 587
|
||||||
|
smtpmail-stream-type 'starttls
|
||||||
|
message-send-mail-function 'smtpmail-send-it)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
I am unsure yet if this has any effect on mu4e, but this variable should
|
||||||
|
discourage mu4e from reading rich text emails and instead open them as plain
|
||||||
|
text. However, I do not wish to discourage opening HTML emails since I can
|
||||||
|
compile them to PDF or open them in the browser.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mm-discouraged-alternatives '("text/richtext"))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
I am still unsure about this variable and if it has an effect on mu4e, but I
|
||||||
|
wish to set a default web viewer for my HTML emails: w3m. This is not as
|
||||||
|
effective as sending the email in the browser or rendering it as a PDF file,
|
||||||
|
but it can be effective enough for some emails.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mm-text-html-renderer 'w3m)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
** Miscellaneous
|
** Miscellaneous
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-cee08965-745a-4a6f-b04e-bf1638342698
|
:CUSTOM_ID: h-cee08965-745a-4a6f-b04e-bf1638342698
|
||||||
@ -2488,7 +2505,7 @@
|
|||||||
One awesome feature of Org mode is the agenda. By default, my agendas are
|
One awesome feature of Org mode is the agenda. By default, my agendas are
|
||||||
stored in =~/org/agenda=.
|
stored in =~/org/agenda=.
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(setq org-agenda-files (list "~/org/agenda"))
|
(setq org-agenda-files (list "~/org/agenda" "~/org/notes.org"))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
I also have a custom command in Org agenda to mark some tasks as daily
|
I also have a custom command in Org agenda to mark some tasks as daily
|
||||||
@ -2515,25 +2532,198 @@
|
|||||||
(org-projectile-todo-files)))
|
(org-projectile-todo-files)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Org journal
|
*** Org capture
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-d679ae6c-3096-4933-8e06-9848ad35adb0
|
:CUSTOM_ID: h-9a070bbb-5b57-4abd-9d61-51f2070eb47b
|
||||||
:END:
|
:END:
|
||||||
I also occasionally use Org journal. All my files are stored in
|
Org-capture is an amazing feature of Org-mode which allows me to quickly
|
||||||
=~/org/journal=, as set below:
|
save links, resources, reminders and notes in a neatly organized org file.
|
||||||
|
With Spacemacs, an Org capture can be invoked with the shortcut ~SPC a o c~.
|
||||||
|
It will then ask which template I wish to use. Said templates are described
|
||||||
|
below:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(setq org-journal-dir "~/org/journal/")
|
(setq
|
||||||
|
org-default-notes-file "~/org/notes.org"
|
||||||
|
org-capture-templates
|
||||||
|
'(("e" "Emails")
|
||||||
|
("ew" "Write Email" entry
|
||||||
|
(file+headline org-default-notes-file "Emails")
|
||||||
|
(file "~/org/capture/emails.orgcaptmpl"))
|
||||||
|
("j" "Journal" entry
|
||||||
|
(file+datetree "~/org/journal.org")
|
||||||
|
(file "~/org/capture/journal.orgcaptmpl"))
|
||||||
|
("l" "Links")
|
||||||
|
("ly" "YouTube" entry
|
||||||
|
(file+headline org-default-notes-file "YouTube")
|
||||||
|
(file "~/org/capture/youtube.orgcaptmpl"))
|
||||||
|
("L" "Protocol Link" entry
|
||||||
|
(file+headline org-default-notes-file "Link")
|
||||||
|
(file "~/org/capture/protocol-link.orgcaptmpl"))
|
||||||
|
("n" "Note"
|
||||||
|
entry (file+headline org-default-notes-file "Note")
|
||||||
|
(file "~/org/capture/notes.orgcaptmpl"))
|
||||||
|
("p" "Protocol" entry
|
||||||
|
(file+headline org-default-notes-file "Link")
|
||||||
|
(file "~/org/capture/protocol.orgcaptmpl"))
|
||||||
|
("r" "Resources")
|
||||||
|
("rc" "Conlanging" entry
|
||||||
|
(file+headline org-default-notes-file "Conlanging")
|
||||||
|
(file "~/org/capture/resource.orgcaptmpl"))
|
||||||
|
("re" "Emacs" entry
|
||||||
|
(file+headline org-default-notes-file "Emacs")
|
||||||
|
(file "~/org/capture/resource.orgcaptmpl"))
|
||||||
|
("ri" "Informatique général" entry
|
||||||
|
(file+headline org-default-notes-file "Informatique")
|
||||||
|
(file "~/org/capture/resource.orgcaptmpl"))
|
||||||
|
("rl" "Linguistics" entry
|
||||||
|
(file+headline org-default-notes-file "Linguistics")
|
||||||
|
(file "~/org/capture/resource.orgcaptmpl"))
|
||||||
|
("rw" "Worldbuilding" entry
|
||||||
|
(file+headline org-default-notes-file "Worldbuilding")
|
||||||
|
(file "~/org/capture/resource.orgcaptmpl"))))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
The default prefix for org journals is the following:
|
You may notice a capture entry for my journal, and this is due to the fact I
|
||||||
#+BEGIN_SRC emacs-lisp
|
do not use ~org-journal~ anymore: it was too overpowered for me, and I
|
||||||
(setq org-journal-date-prefix "#+TITLE: ")
|
prefer to keep it simple with a single file. And as you can see, and unlike
|
||||||
#+END_SRC
|
a lot of other Emacs configurations, the content of the template is not set
|
||||||
|
in the variable, but in external files which can be modified freely as
|
||||||
|
actual Org buffers instead of trying to get a proper one with loads of ~\n~
|
||||||
|
characters and such. All these templates are declared below.
|
||||||
|
|
||||||
The timestamp will be set following the ISO 8601 format:
|
**** Emails
|
||||||
#+BEGIN_SRC emacs-lisp
|
:PROPERTIES:
|
||||||
(setq org-journal-file-format "%Y-%m-%d")
|
:CUSTOM_ID: h-9012599e-c143-4df0-b63c-7c60ddb4a081
|
||||||
#+END_SRC
|
:END:
|
||||||
|
This is my template for a new Email:
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/email.orgcaptmpl
|
||||||
|
,** TODO [#A] Write Email
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:END:
|
||||||
|
From: Lucien Cartier-Tilet <lucien@phundrak.com>
|
||||||
|
To: %^{Recipient}
|
||||||
|
Subject: %^{Object}
|
||||||
|
--text follows this line--
|
||||||
|
%?
|
||||||
|
--
|
||||||
|
Lucien “Phundrak” Cartier-Tilet
|
||||||
|
https://phundrak.com (Français)
|
||||||
|
https://en.phundrak.com (English)
|
||||||
|
|
||||||
|
Sent from a Free and Open-Source Linux operating system with GNU/Emacs
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
I use it in case my computer is not yet connected to the internet and I
|
||||||
|
need to already write the email so I can send it later. All I will need to
|
||||||
|
to afterwards will be to copy and paste my capture in a new message buffer
|
||||||
|
and send it once I am back online. This is exported to
|
||||||
|
=~/org/capture/email.orgcaptmpl=.
|
||||||
|
|
||||||
|
**** Journal
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-ab1b21af-e887-41a7-be7a-c08825d16339
|
||||||
|
:END:
|
||||||
|
This template is quite simple: it creates a new entry with the current
|
||||||
|
timestamp as its title, a brief title of my choosing, and then I can write
|
||||||
|
whatever I wish to write. This is exported to
|
||||||
|
=~/org/capture/journal.orgcaptmpl=.
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/journal.orgcaptmpl
|
||||||
|
,* %U %^{Title}
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
**** Notes
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-2b5e7efc-4a9d-4a92-b75f-4ec75e2fb48d
|
||||||
|
:END:
|
||||||
|
This template is used for taking note about various subjects that can go
|
||||||
|
from conlanging to development. I wrote it so I can know from where this
|
||||||
|
capture was made and when, and it even supports text that was highlighted
|
||||||
|
in Emacs that will be inserted in a quote block. This is exported to
|
||||||
|
=~/org/capture/notes.orgcaptmpl=.
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/notes.orgcaptmpl
|
||||||
|
,* Note
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:FROM: %f
|
||||||
|
:END:
|
||||||
|
Possible inspiration:
|
||||||
|
,#+begin_quote
|
||||||
|
%i
|
||||||
|
,#+end_quote
|
||||||
|
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
**** Protocol
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-6fa10246-26bf-4ab3-a3b0-1f58bc79350e
|
||||||
|
:END:
|
||||||
|
This capture is used when received through org-protocol, with the
|
||||||
|
Org-protocol Extension for Firefox. It allows me to save in a quote block
|
||||||
|
what I’ve highlighted, as well as the link of the webpage on which my saved
|
||||||
|
content was highlighted. This file is exported to
|
||||||
|
=~/org/capture/protocol.orgcaptmpl=.
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/protocol.orgcaptmpl
|
||||||
|
,* TODO [#C] %^{Title}
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:LINK: %:link
|
||||||
|
:TITLE: %:description
|
||||||
|
:END:
|
||||||
|
,#+begin_quote
|
||||||
|
%i
|
||||||
|
,#+end_quote
|
||||||
|
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
This next capture template is used only when a link is sent to Emacs and no
|
||||||
|
content was highlighted.
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/protocol-link.orgcaptmpl
|
||||||
|
,* TODO [#C] Link: %^{Title}
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:LINK: %:link
|
||||||
|
:TITLE: %:description
|
||||||
|
:END:
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
**** Resources
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-001eb681-1725-442d-91ef-b6a46c1784dc
|
||||||
|
:END:
|
||||||
|
This is the default template for resources, which generally are located on
|
||||||
|
the Internet. By default, I give them the lowest priority, because although
|
||||||
|
this is something for me to remember later, it is not by default important.
|
||||||
|
You can see in the properties I record when the capture happened, and what
|
||||||
|
the link is. The title of the capture is a summary of what this is, while
|
||||||
|
the body of the capture is a more detailed explanation of what I capture,
|
||||||
|
why, and how it could be useful to me.
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/resource.orgcaptmpl
|
||||||
|
,* TODO [#C] %^{Title}
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:LINK: %^{Link}
|
||||||
|
:END:
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
**** YouTube
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h-4b962a95-47d9-4410-8365-7d09e19530eb
|
||||||
|
:END:
|
||||||
|
#+BEGIN_SRC org :tangle ~/org/capture/youtube.orgcaptmpl
|
||||||
|
,* TODO [#C] %^{Title}
|
||||||
|
:PROPERTIES:
|
||||||
|
:CAPTURED: %U
|
||||||
|
:AUTHOR: %^{Author}
|
||||||
|
:LINK: %^{Link}
|
||||||
|
:END:
|
||||||
|
%?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
*** Org projects
|
*** Org projects
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -2689,7 +2879,7 @@
|
|||||||
The Scheme configuration will be very short, I just need to tell Emacs the
|
The Scheme configuration will be very short, I just need to tell Emacs the
|
||||||
name of the interpreter since it is not the default one:
|
name of the interpreter since it is not the default one:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(setq geiser-chicken-binary "chicken-csi")
|
(setq geiser-chicken-binary "chicken-csi")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Shortcuts
|
** Shortcuts
|
||||||
@ -2820,6 +3010,15 @@
|
|||||||
"ofr" (lambda () (interactive) (find-file "~/README.org")))
|
"ofr" (lambda () (interactive) (find-file "~/README.org")))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
I also want a quick access to my notes and my journal.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(spacemacs/declare-prefix "ofj" "journal.org")
|
||||||
|
(spacemacs/declare-prefix "ofn" "notes.org")
|
||||||
|
(spacemacs/set-leader-keys
|
||||||
|
"ofj" (lambda () (interactive) (find-file "~/org/journal.org"))
|
||||||
|
"ofn" (lambda () (interactive) (find-file "~/org/notes.org")))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
*** Multiple cursors
|
*** Multiple cursors
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h-de40bea1-4301-4ad3-b3f1-c4c8ed029feb
|
:CUSTOM_ID: h-de40bea1-4301-4ad3-b3f1-c4c8ed029feb
|
||||||
|
Loading…
Reference in New Issue
Block a user