Compare commits
8 Commits
b94d6d0309
...
e13d144293
| Author | SHA1 | Date | |
|---|---|---|---|
|
e13d144293
|
|||
|
370980c320
|
|||
|
537ec62fae
|
|||
|
6239775fe8
|
|||
|
a206f952f9
|
|||
|
f6dbe82f18
|
|||
|
42dfafd536
|
|||
|
71e7bdec0c
|
@@ -173,53 +173,6 @@ I also have two main shell-related functions, prefixed with ~as~.
|
||||
| yr | treemacs-copy-relative-path-at-point | | treemacs |
|
||||
| yf | treemacs-copy-file | | treemacs |
|
||||
|
||||
*** Treemacs
|
||||
#+name: keybindings-treemacs
|
||||
| Key | Function | Description | Package |
|
||||
|-----+----------------------------------------+-------------+----------|
|
||||
| | | treemacs | |
|
||||
| c | | create | |
|
||||
| cd | treemacs-create-dir | | treemacs |
|
||||
| cf | treemacs-create-file | | treemacs |
|
||||
| ci | treemacs-create-icon | | treemacs |
|
||||
| ct | treemacs-create-theme | | treemacs |
|
||||
| cw | treemacs-create-workspace | | treemacs |
|
||||
| d | treemacs-delete-file | | treemacs |
|
||||
| f | | files | |
|
||||
| ff | treemacs-find-file | | treemacs |
|
||||
| ft | treemacs-find-tag | | treemacs |
|
||||
| l | | lsp | |
|
||||
| ls | treemacs-expand-lsp-symbol | | treemacs |
|
||||
| ld | treemacs-expand-lsp-treemacs-deps | | treemacs |
|
||||
| lD | treemacs-collapse-lsp-treemacs-deps | | treemacs |
|
||||
| lS | treemacs-collapse-lsp-symbol | | treemacs |
|
||||
| p | | projects | |
|
||||
| pa | treemacs-add-project-to-workspace | | treemacs |
|
||||
| pf | treemacs-project-follow-mode | | treemacs |
|
||||
| pn | treemacs-project-of-node | | treemacs |
|
||||
| pp | treemacs-project-at-point | | treemacs |
|
||||
| pr | treemacs-remove-project-from-workspace | | treemacs |
|
||||
| pt | treemacs-move-project-down | | treemacs |
|
||||
| ps | treemacs-move-project-up | | treemacs |
|
||||
| r | | rename | |
|
||||
| rf | treemacs-rename-file | | treemacs |
|
||||
| rp | treemacs-rename-project | | treemacs |
|
||||
| rr | treemacs-rename | | treemacs |
|
||||
| rw | treemacs-rename-workspace | | treemacs |
|
||||
| t | treemacs | | treemacs |
|
||||
| T | | toggles | |
|
||||
| Td | treemacs-toggle-show-dotfiles | | treemacs |
|
||||
| Tn | treemacs-toggle-node | | treemacs |
|
||||
| v | | visit node | |
|
||||
| va | treemacs-visit-node-ace | | treemacs |
|
||||
| vc | treemacs-visit-node-close-treemacs | | treemacs |
|
||||
| vn | treemacs-visit-node-default | | treemacs |
|
||||
| y | | yank | |
|
||||
| ya | treemacs-copy-absolute-path-at-point | | treemacs |
|
||||
| yp | treemacs-copy-project-path-at-point | | treemacs |
|
||||
| yr | treemacs-copy-relative-path-at-point | | treemacs |
|
||||
| yf | treemacs-copy-file | | treemacs |
|
||||
|
||||
** Buffers
|
||||
My buffer-related keybindings are all prefixed by ~b~.
|
||||
#+name: keybindings-buffers
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
((claude-code-ide-terminal-backend 'eat)
|
||||
(claude-code-ide-enable-mcp-server t))
|
||||
:config
|
||||
(setopt claude-code-ide-cli-path "claude-jj")
|
||||
(claude-code-ide-emacs-tools-setup))
|
||||
#+end_src
|
||||
|
||||
@@ -62,6 +63,48 @@ tool to have when you know what you’re doing.
|
||||
:files ("*.el")))
|
||||
#+end_src
|
||||
|
||||
*** Ellama
|
||||
#+begin_src emacs-lisp
|
||||
(use-package ellama
|
||||
:ensure t
|
||||
:bind ("C-c e" . ellama)
|
||||
:hook (org-ctrl-c-ctrl-c-final . ellama-chat-send-last-message)
|
||||
:init
|
||||
(require 'llm-ollama)
|
||||
(setopt ellama-provider
|
||||
(make-llm-ollama :chat-model "gemma3:27b"
|
||||
:embedding-model "nomic-embed-text"
|
||||
:default-chat-non-standard-params `(("num_ctx" . ,(* 8 1024)))))
|
||||
(setopt ellama-summarization-provider
|
||||
(make-llm-ollama :chat-model "qwen2.5:8b"
|
||||
:embedding-model "nomic-embed-text"
|
||||
:default-chat-non-standard-params `(("num_ctx" . ,(* 16 1024)))))
|
||||
(setopt ellama-coding-provider
|
||||
(make-llm-ollama :chat-model "gpt-oss:20b"
|
||||
:embedding-model "nomic-embed-text"
|
||||
:default-chat-non-standard-params `(("num_ctx" . ,(* 8 1024)))))
|
||||
(setopt ellama-providers
|
||||
'(("deepseek-coder" . (make-llm-ollama :chat-model "deepseek-coder:6.7b"
|
||||
:embedding-model "nomic-embed-text"))
|
||||
("qwen2.5-coder" . (make-llm-ollama :chat-model "qwen2.5-coder:1.5b"
|
||||
:embedding-model "nomic-embed-text"))
|
||||
("qwen3-coder" . (make-llm-ollama :chat-model "qwen3-coder:30b"
|
||||
:embedding-model "nomic-embed-text"))
|
||||
("qwen3-vl" . (make-llm-ollama :chat-model "qwen3-vl:30b"
|
||||
:embedding-model "nomic-embed-text"))))
|
||||
(setopt ellama-naming-provider (make-llm-ollama :chat-model "phi3:mini-4k"
|
||||
:embedding-model "nomic-embed-text"))
|
||||
(setopt ellama-naming-scheme 'ellama-generate-name-by-llm)
|
||||
(setopt ellama-chat-display-action-function #'display-buffer-full-frame)
|
||||
(setopt ellama-instant-display-action-function #'display-buffer-at-bottom)
|
||||
(setopt ellama-auto-scroll t)
|
||||
:config
|
||||
(ellama-context-header-line-global-mode +1)
|
||||
(ellama-session-header-line-global-mode +1)
|
||||
(advice-add 'pixel-scroll-precision :before #'ellama-disable-scroll)
|
||||
(advice-add 'end-of-buffer :after #'ellama-enable-scroll))
|
||||
#+end_src
|
||||
|
||||
** Bitwarden
|
||||
This package is still a very much work in progress one I’m developing
|
||||
in order to interact with Bitwarden in Emacs with the help of the
|
||||
@@ -594,7 +637,7 @@ simple inbox, outbox and all. Actually, four of my bookmarks have a
|
||||
couple of filtering:
|
||||
- anything in my inbox linked to my university
|
||||
- the [[https://emacs-doctor.com/lists/listinfo][emacs-doctor mailing list]] (French Emacs mailing list)
|
||||
- emails related to my internship
|
||||
- emails related to my job
|
||||
- and my inbox for any mail not caught by any of these filters
|
||||
And all of them will have the requirement not to display any trashed
|
||||
email. Actually, all of my bookmarks will have this requirement,
|
||||
@@ -640,17 +683,6 @@ Paris 8 (my university).
|
||||
#+RESULTS[083992a66ea6339d3a55773108e520a6024102c5]: mu4e-bookmarks-filter-uni
|
||||
: f:/.*up8\.edu|.*univ-paris8.*/ OR c:/.*up8\.edu|.*univ-paris8.*/ OR t:/.*up8\.edu|.*univ-paris8.*/ OR maildir:/Univ/Inbox OR maildir:/Univ/Junk
|
||||
|
||||
Next I need an inbox dedicated to the association I’m part of.
|
||||
#+name: mu4e-bookmarks-filter-asso
|
||||
#+header: :tangle no :cache yes
|
||||
#+begin_src emacs-lisp
|
||||
(let ((regex "/.*supran\\.fr/"))
|
||||
<<mu4e-bookmarks-from-copy-to-gen>>)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS[e04566a9d56624e063b3dd4e2c639e87cf9683aa]: mu4e-bookmarks-filter-asso
|
||||
: f:/.*supran\.fr/ OR c:/.*supran\.fr/ OR t:/.*supran\.fr/
|
||||
|
||||
As for the Emacs-doctor list, I need to match both the current, modern
|
||||
mailing list address but also its old address. The same applies for
|
||||
the emacs-devel mailing list as well as GitHub emails related to my
|
||||
@@ -696,7 +728,7 @@ more general development topics, including issues and PRs from GitHub.
|
||||
#+RESULTS[673f76e7a682ed64f98dbe6d4a06810436ba6799]: mu4e-bookmarks-filter-github-list
|
||||
: list:/.*\.github\.com/ OR t:/.*\.github\.com/ OR f:/.*\.github\.com/ OR contact:/.*\.github\.com/ OR list:/.*\.gitlab\.com/ OR t:/.*\.gitlab\.com/ OR f:/.*\.gitlab\.com/ OR contact:/.*\.gitlab\.com/ OR list:stumpwm-devel@nongnu.org OR t:stumpwm-devel@nongnu.org OR f:stumpwm-devel@nongnu.org OR contact:stumpwm-devel@nongnu.org OR list:/.*sr\.ht/ OR t:/.*sr\.ht/ OR f:/.*sr\.ht/ OR contact:/.*sr\.ht/ AND NOT ( list:/ateliers.*emacs.*/ OR t:/ateliers.*emacs.*/ OR f:/ateliers.*emacs.*/ OR contact:/ateliers.*emacs.*/ OR list:/emacs-.*@gnu.org/ OR t:/emacs-.*@gnu.org/ OR f:/emacs-.*@gnu.org/ OR contact:/emacs-.*@gnu.org/ OR list:/.*eshell-info-banner.*/ OR t:/.*eshell-info-banner.*/ OR f:/.*eshell-info-banner.*/ OR contact:/.*eshell-info-banner.*/ OR list:/.*emacsfr.*/ OR t:/.*emacsfr.*/ OR f:/.*emacsfr.*/ OR contact:/.*emacsfr.*/ )
|
||||
|
||||
When it comes to my internship, all emails will contain an address containing ~aubay.com~ (that’s where my internship takes place).
|
||||
When it comes to my job, all emails will contain an address containing ~aubay.com~ (that’s where my internship takes place).
|
||||
- ~/.*aubay.com/~
|
||||
|
||||
#+name: mu4e-bookmarks-filter-aubay
|
||||
@@ -734,7 +766,6 @@ And for the last string-generating code, let’s describe my main inbox:
|
||||
(cons "<<mu4e-bookmarks-default-filter()>>"
|
||||
`(,(format "(%s)"
|
||||
<<mu4e-bookmarks-filter-aubay>>)
|
||||
,(format "(%s)" "<<mu4e-bookmarks-filter-asso()>>")
|
||||
,(format "(%s)"
|
||||
<<mu4e-bookmarks-filter-emacs-list>>)
|
||||
,(format "(%s)"
|
||||
@@ -744,8 +775,8 @@ And for the last string-generating code, let’s describe my main inbox:
|
||||
" AND NOT ")
|
||||
#+end_src
|
||||
|
||||
#+RESULTS[94290b02a0da24cffeba43e1d47395e801bc0158]: mu4e-bookmarks-inbox-filters
|
||||
: NOT flag:trashed AND (maildir:/Inbox OR maildir:/Junk) AND NOT (f:/.*aubay\.com/ OR c:/.*aubay\.com/ OR t:/.*aubay\.com/) AND NOT (f:/.*supran.fr/ OR c:/.*supran.fr/ OR t:/.*supran.fr/) AND NOT (list:/ateliers.*emacs.*/ OR t:/ateliers.*emacs.*/ OR f:/ateliers.*emacs.*/ OR contact:/ateliers.*emacs.*/ OR list:/emacs-.*@gnu.org/ OR t:/emacs-.*@gnu.org/ OR f:/emacs-.*@gnu.org/ OR contact:/emacs-.*@gnu.org/ OR list:/.*eshell-info-banner.*/ OR t:/.*eshell-info-banner.*/ OR f:/.*eshell-info-banner.*/ OR contact:/.*eshell-info-banner.*/ OR list:/.*emacsfr.*/ OR t:/.*emacsfr.*/ OR f:/.*emacsfr.*/ OR contact:/.*emacsfr.*/) AND NOT (list:/.*\.github\.com/ OR t:/.*\.github\.com/ OR f:/.*\.github\.com/ OR contact:/.*\.github\.com/ OR list:/.*\.gitlab\.com/ OR t:/.*\.gitlab\.com/ OR f:/.*\.gitlab\.com/ OR contact:/.*\.gitlab\.com/ OR list:stumpwm-devel@nongnu.org OR t:stumpwm-devel@nongnu.org OR f:stumpwm-devel@nongnu.org OR contact:stumpwm-devel@nongnu.org OR list:/.*sr\.ht/ OR t:/.*sr\.ht/ OR f:/.*sr\.ht/ OR contact:/.*sr\.ht/ AND NOT ( list:/ateliers.*emacs.*/ OR t:/ateliers.*emacs.*/ OR f:/ateliers.*emacs.*/ OR contact:/ateliers.*emacs.*/ OR list:/emacs-.*@gnu.org/ OR t:/emacs-.*@gnu.org/ OR f:/emacs-.*@gnu.org/ OR contact:/emacs-.*@gnu.org/ OR list:/.*eshell-info-banner.*/ OR t:/.*eshell-info-banner.*/ OR f:/.*eshell-info-banner.*/ OR contact:/.*eshell-info-banner.*/ OR list:/.*emacsfr.*/ OR t:/.*emacsfr.*/ OR f:/.*emacsfr.*/ OR contact:/.*emacsfr.*/ )) AND NOT (f:/.*up8\.edu|.*univ-paris8.*/ OR c:/.*up8\.edu|.*univ-paris8.*/ OR t:/.*up8\.edu|.*univ-paris8.*/ OR maildir:/Univ/Inbox OR maildir:/Univ/Junk)
|
||||
#+RESULTS[bcdff5943898f52a55d2e0c124b85fb157983d2f]: mu4e-bookmarks-inbox-filters
|
||||
: NOT flag:trashed AND (maildir:/Inbox OR maildir:/Junk) AND NOT (f:/.*aubay\.com/ OR c:/.*aubay\.com/ OR t:/.*aubay\.com/) AND NOT (list:/ateliers.*emacs.*/ OR t:/ateliers.*emacs.*/ OR f:/ateliers.*emacs.*/ OR contact:/ateliers.*emacs.*/ OR list:/emacs-.*@gnu.org/ OR t:/emacs-.*@gnu.org/ OR f:/emacs-.*@gnu.org/ OR contact:/emacs-.*@gnu.org/ OR list:/.*eshell-info-banner.*/ OR t:/.*eshell-info-banner.*/ OR f:/.*eshell-info-banner.*/ OR contact:/.*eshell-info-banner.*/ OR list:/.*emacsfr.*/ OR t:/.*emacsfr.*/ OR f:/.*emacsfr.*/ OR contact:/.*emacsfr.*/) AND NOT (list:/.*\.github\.com/ OR t:/.*\.github\.com/ OR f:/.*\.github\.com/ OR contact:/.*\.github\.com/ OR list:/.*\.gitlab\.com/ OR t:/.*\.gitlab\.com/ OR f:/.*\.gitlab\.com/ OR contact:/.*\.gitlab\.com/ OR list:stumpwm-devel@nongnu.org OR t:stumpwm-devel@nongnu.org OR f:stumpwm-devel@nongnu.org OR contact:stumpwm-devel@nongnu.org OR list:/.*sr\.ht/ OR t:/.*sr\.ht/ OR f:/.*sr\.ht/ OR contact:/.*sr\.ht/ AND NOT ( list:/ateliers.*emacs.*/ OR t:/ateliers.*emacs.*/ OR f:/ateliers.*emacs.*/ OR contact:/ateliers.*emacs.*/ OR list:/emacs-.*@gnu.org/ OR t:/emacs-.*@gnu.org/ OR f:/emacs-.*@gnu.org/ OR contact:/emacs-.*@gnu.org/ OR list:/.*eshell-info-banner.*/ OR t:/.*eshell-info-banner.*/ OR f:/.*eshell-info-banner.*/ OR contact:/.*eshell-info-banner.*/ OR list:/.*emacsfr.*/ OR t:/.*emacsfr.*/ OR f:/.*emacsfr.*/ OR contact:/.*emacsfr.*/ )) AND NOT (f:/.*up8\.edu|.*univ-paris8.*/ OR c:/.*up8\.edu|.*univ-paris8.*/ OR t:/.*up8\.edu|.*univ-paris8.*/ OR maildir:/Univ/Inbox OR maildir:/Univ/Junk)
|
||||
|
||||
We can finally define our bookmarks! The code reads as follows:
|
||||
#+name: mu4e-bookmarks
|
||||
@@ -755,7 +786,7 @@ We can finally define our bookmarks! The code reads as follows:
|
||||
:key ?i
|
||||
:query ,(format "%s"
|
||||
<<mu4e-bookmarks-inbox-filters>>))
|
||||
(:name "Internship"
|
||||
(:name "Aubay"
|
||||
:key ?a
|
||||
:query ,(format "(%s) AND (%s)"
|
||||
"<<mu4e-bookmarks-default-filter()>>"
|
||||
@@ -775,11 +806,6 @@ We can finally define our bookmarks! The code reads as follows:
|
||||
:query ,(format "%s AND %s"
|
||||
"<<mu4e-bookmarks-default-filter()>>"
|
||||
<<mu4e-bookmarks-filter-emacs-list>>))
|
||||
(:name "Supran"
|
||||
:key ?s
|
||||
:query ,(format "%s AND %s"
|
||||
"<<mu4e-bookmarks-default-filter()>>"
|
||||
"<<mu4e-bookmarks-filter-asso()>>"))
|
||||
(:name "Sent" :key ?S :query "maildir:/Sent OR maildir:/Univ/Sent")
|
||||
(:name "All Unread" :key ?U :query "flag:unread AND NOT flag:trashed")
|
||||
(:name "Today" :key ?t :query "date:today..now AND NOT flag:trashed")
|
||||
@@ -1414,6 +1440,12 @@ writing my commit messages.
|
||||
:init (add-to-list 'auto-mode-alist '("\\.jjdescription\\'" . jjdescription-mode)))
|
||||
#+end_src
|
||||
|
||||
And I want Emacs to know that any directory which has a =.jj= repository
|
||||
is the root of a project.
|
||||
#+begin_src emacs-lisp
|
||||
(add-to-list 'project-vc-extra-root-markers ".jj")
|
||||
#+end_src
|
||||
|
||||
*** Magit
|
||||
Magit is an awesome wrapper around Git for Emacs! Very often, I go
|
||||
from disliking to really hating Git GUI clients because they often
|
||||
|
||||
@@ -60,6 +60,16 @@ enough for me.
|
||||
:straight (:build t))
|
||||
#+end_src
|
||||
|
||||
** Evil Surround
|
||||
#+begin_src emacs-lisp
|
||||
(use-package evil-surround
|
||||
:straight (:build t)
|
||||
:after evil
|
||||
:config
|
||||
(add-to-list 'evil-surround-pairs-alist '(?$ . ("${" . "}")))
|
||||
(global-evil-surround-mode 1))
|
||||
#+end_src
|
||||
|
||||
** Iedit
|
||||
Iedit is a powerful text editing tool that can be used to refactor
|
||||
code through the edition of multiple regions at once, be it in a
|
||||
|
||||
@@ -705,7 +705,8 @@ default packages:
|
||||
("AUTO" "polyglossia" nil ("xelatex" "lualatex"))
|
||||
("capitalize" "cleveref")
|
||||
("" "booktabs")
|
||||
("" "tabularx")))
|
||||
("" "tabularx")
|
||||
("" "amssymb")))
|
||||
(add-to-list 'org-latex-default-packages-alist package t))
|
||||
|
||||
(setq org-latex-reference-command "\\cref{%s}")
|
||||
|
||||
@@ -38,7 +38,7 @@ variables to install grammars for different languages.
|
||||
(use-package treesit-fold
|
||||
:after tree-sitter
|
||||
:straight (:build t :host github :repo "emacs-tree-sitter/treesit-fold")
|
||||
:config (treesit-fold-mode))
|
||||
:init (global-treesit-fold-mode t))
|
||||
#+end_src
|
||||
|
||||
*** Appwrite
|
||||
@@ -313,14 +313,6 @@ DSLs, or /Domain Specific Languages/, are languages dedicated to some
|
||||
very tasks, such as configuration languages or non-general programming
|
||||
such as SQL.
|
||||
|
||||
*** Makefiles
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/local-tab-indent ()
|
||||
(setq-local indent-tabs-mode 1))
|
||||
|
||||
(add-hook 'makefile-mode-hook #'my/local-tab-indent)
|
||||
#+end_src
|
||||
|
||||
*** Caddy
|
||||
[[https://caddyserver.com/][Caddy]] (or /Caddyserver/) is a web server akin to Nginx or Apache which I
|
||||
find much easier to configure that the latter two, plus it has
|
||||
@@ -401,6 +393,19 @@ And finally, let’s enable some Eldoc integration for CMake.
|
||||
"yt" #'csv-yank-as-new-table))
|
||||
#+end_src
|
||||
|
||||
*** Cucumber
|
||||
[[https://cucumber.io/][Cucumber]] is a library that lets you write =.feature= files for
|
||||
Behaviour-Driven Development, or /BDD/. Although not much configuration
|
||||
is required to use it in Emacs, we do need to install =feature-mode= to
|
||||
support the Gherkin syntax in =.feature= files.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package feature-mode
|
||||
:defer t
|
||||
:straight (:build t)
|
||||
:mode (("\\.feature\\'" . feature-mode)))
|
||||
#+end_src
|
||||
|
||||
*** Dotenv
|
||||
It is not rare to encounter a dotenv file, that is, a file with either
|
||||
the ~.env~ extension or simply called ~.env~. They contain environment
|
||||
@@ -457,6 +462,14 @@ visual graphs and networks.
|
||||
(setq graphviz-dot-indent-width 4))
|
||||
#+end_src
|
||||
|
||||
*** Makefiles
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/local-tab-indent ()
|
||||
(setq-local indent-tabs-mode 1))
|
||||
|
||||
(add-hook 'makefile-mode-hook #'my/local-tab-indent)
|
||||
#+end_src
|
||||
|
||||
*** Markdown
|
||||
Yes, I love org-mode and I largely prefer to use it instead of
|
||||
Markdown due to its far superior power and abilities. But still,
|
||||
|
||||
Reference in New Issue
Block a user