scripts/assets/org/config.org

2090 lines
64 KiB
Org Mode
Raw Normal View History

2022-05-29 13:11:08 +02:00
#+TITLE: My Emacs Configuration
#+AUTHOR: TyKayn
#+EMAIL: contact@cipherbliss.com
#+OPTIONS: num:nil
2023-01-08 10:54:14 +01:00
* Ma config [[id:3adc0f02-729a-42fc-ae1f-7c29a1e5b11c][emacs]] - config.org
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
Voici la documentation au format Orgmode de ma configuration d'Emacs. Pour que cela fonctionne, il faut demander au fichier de config dans le dossier utilisateur, le fichier "~/.emacs" débutant par un point, de l'actuel fichier config.org.
J'utilise un dossier Nextcloud pour stocker mes textes, on retrouvera donc souvent des mentions à ce dossier dans la config. Ma liste de tâches [[file:tasks.org]] pour la gestion de projets se compose d'un fichier principal et de quelques autres.
Les réunions ont leur propre fichier, le journal aussi.
Fichiers souvent utiles:
- file:/home/tykayn/Nextcloud/textes/orgmode/tasks.org
- [[file:reunions.org]].
- [[file:journal.org]].
- [[id:d8636e1d-0137-4502-9384-767b41c892b0][boulot]]
- [[id:c1c19fdf-ccab-4d78-b191-dbe0f8c66609][lemonway]]
Contenu du fichier de config [[file:~/.emacs]]
2023-01-08 10:54:14 +01:00
#+begin_quote
2023-02-17 11:40:28 +01:00
;; -*- lexical-binding: t; -*-
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
;; The default is 800 kilobytes. Measured in bytes.
(setq gc-cons-threshold (* 50 1000 1000))
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
;; Profile emacs startup
(add-hook 'emacs-startup-hook
(lambda ()
(message "*** Emacs loaded in %s seconds with %d garbage collections."
(emacs-init-time "%.2f")
gcs-done)))
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
;; straight el bootstrap https://github.com/raxod502/straight.el#getting-started
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
(straight-use-package 'use-package)
(setq straight-use-package-by-default t)
(use-package org)
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
(set-default-coding-systems 'utf-8)
(org-babel-load-file "~/Nextcloud/textes/orgmode/config.org")
(server-start)
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
2023-01-08 10:54:14 +01:00
#+end_quote
2022-05-29 13:11:08 +02:00
* Introduction
2024-03-17 10:18:22 +01:00
Ma configuration d'Emacs. Voir la doc personnelle des concepts généraux d'[[id:3adc0f02-729a-42fc-ae1f-7c29a1e5b11c][emacs]] ici.
2022-05-29 13:11:08 +02:00
** Initialisation de cette configuration
2024-03-17 10:18:22 +01:00
Pour que cela fonctionne, il faut demander au fichier de config dans le dossier utilisateur, le fichier ".emacs" débutant par un point, de charger ce fichier **config.org**.
J'utilise un dossier Nextcloud pour stocker mes textes, on retrouvera donc souvent des mentions à ce dossier dans la config.
2022-05-29 13:11:08 +02:00
** Inspirations
2024-03-17 10:18:22 +01:00
- https://blog.sumtypeofway.com/posts/emacs-config.html
- http://doc.norang.ca/org-mode.html
- https://sachachua.com/dotemacs/index.html#org3dfd9e3
- https://github.com/alphapapa/unpackaged.el
- https://blog.sumtypeofway.com/posts/emacs-config.html
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
Plus sur mon blog:
https://www.cipherbliss.com
2022-08-03 14:37:19 +02:00
2023-02-17 11:40:28 +01:00
* Préconfiguration
#+begin_src emacs-lisp
;; -*- coding: utf-8; lexical-binding: t -*-
;; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - toujours s'assurer que les packages sont installés - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;; fait par tykayn le 7-04-2022
;; version GNU Emacs 28.2
#+end_src
** Gestion de paquets Straight.el
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; on utilise straight.el pour déclarer les packages à utiliser
#+end_src
2023-02-17 11:40:28 +01:00
** Charset UTF-8
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-08-03 14:37:19 +02:00
* List packages
2024-03-17 10:18:22 +01:00
Adding Melpa
#+begin_src emacs-lisp
2022-08-03 14:37:19 +02:00
2024-03-17 10:18:22 +01:00
;; add melpa packages
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired. See `package-archive-priorities`
;; and `package-pinned-packages`. Most users will not need or want to do this.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
#+end_src
2022-08-03 14:37:19 +02:00
2022-05-29 13:11:08 +02:00
* Orgmode
2023-01-08 10:54:14 +01:00
** Global
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;; Org-Mode
; Things we can't set as defaults above, we can set here
(defun org-setup ()
(setq line-spacing 3)
(setq global-hl-line-mode nil)
(set-fringe-mode 0)
; Enable habit tracking (and a bunch of other modules)
;;; position the habit graph on the agenda to the right of the default
(setq org-habit-graph-column 50)
(setq header-line-format " ")
(setq org-ellipsis "⤵")
(setq org-catch-invisible-edits 'show-and-error)
(setq org-hide-emphasis-markers t)
(setq org-fontify-whole-heading-line t)
(setq org-tags-column 0)
(setq org-adapt-indentation t)
(setq org-deadline-warning-days 0)
(setq line-move-visual t)
;; Keep tasks with dates on the global todo lists
(setq org-agenda-todo-ignore-with-date nil)
;; Keep tasks with deadlines on the global todo lists
(setq org-agenda-todo-ignore-deadlines nil)
;; Keep tasks with scheduled dates on the global todo lists
(setq org-agenda-todo-ignore-scheduled nil)
;; Keep tasks with timestamps on the global todo lists
(setq org-agenda-todo-ignore-timestamp nil)
;; Remove completed deadline tasks from the agenda view
(setq org-agenda-skip-deadline-if-done t)
;; Remove completed scheduled tasks from the agenda view
(setq org-agenda-skip-scheduled-if-done t)
;; Remove completed items from search results
;; (setq org-agenda-skip-timestamp-if-done t)
;; Use sticky agenda's so they persist
(setq org-agenda-sticky t)
;; block tasks if child tasks are not done
(setq org-enforce-todo-dependencies t)
(setq org-cycle-separator-lines 0)
;; Enable display of the time grid so we can see the marker for the current time
(setq org-agenda-span 2)
(setq org-agenda-tags-column -100) ; take advantage of the screen width
(setq org-agenda-inhibit-startup t)
(setq org-agenda-use-tag-inheritance t)
(setq org-agenda-show-log t)
(setq org-agenda-skip-scheduled-if-done t)
(setq org-agenda-skip-deadline-if-done t)
(setq org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled)
(setq org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
"......" "----------------"))
(setq org-columns-default-format "%14SCHEDULED %Effort{:} %1PRIORITY %TODO %50ITEM %TAGS")
;; Set default column view headings: Task Effort Clock_Summary
(setq org-columns-default-format "%80ITEM(Task) %10Effort(Effort){:} %10CLOCKSUM")
(setq
org-log-created 'time
org-log-done 'time
org-log-reschedule 'time
org-log-redeadline 'time
org-log-into-drawer t
org-log-refile 'time
))
(add-hook 'org-mode-hook #'org-setup)
;; click a link in the same frame when opening a file
(custom-set-variables
'(org-link-frame-setup
'((vm . vm-visit-folder-other-frame)
(vm-imap . vm-visit-imap-folder-other-frame)
(gnus . org-gnus-no-new-news)
(file . find-file)
(wl . wl-other-frame)))
'(git-gutter:visual-line t)
)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Contextes d'agenda
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defvar my-org-agenda-contexts
'((tags-todo "phone")
(tags-todo "work")
(tags-todo "drawing")
(tags-todo "coding")
(tags-todo "writing")
(tags-todo "reading")
(tags-todo "computer")
(tags-todo "home")
(tags-todo "santé")
(tags-todo "errands"))
"Usual list of contexts.")
(setq org-agenda-sorting-strategy
'((agenda tag-up time-up priority-down category-keep)
;; (todo user-defined-up todo-state-up priority-down effort-up)
(todo todo-state-up priority-down effort-up)
(tags user-defined-up)
(search category-keep)))
(setq org-agenda-cmp-user-defined 'my-org-sort-agenda-items-user-defined)
(defun my-org-agenda-list-unscheduled (&rest ignore)
"Create agenda view for tasks that are unscheduled and not done."
(let* ((org-agenda-todo-ignore-with-date t)
(org-agenda-overriding-header "List of unscheduled tasks: "))
(org-agenda-get-todos)))
(setq org-stuck-projects
'("+PROJECT-MAYBE-DONE"
("TODO")
nil
"\\<IGNORE\\>"))
2022-10-08 10:58:27 +02:00
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Séquences de choses à faire
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
(setq org-todo-keywords
'((sequence
"SOMEDAY(.!)"
"TODO(t!)"
"NEXT(n!)"
"|"
"DONE(x!)" "CANCELLED(c!)")
(sequence
"TORELAUNCH(r@/!)" "TODELEGATE(-!)" "DELEGATED(d!)" "|" "DONE(1!)")))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-07-17 22:19:25 +02:00
** Vue d'agenda Orgmode custom
Présentation personnalisée d'agenda, "custom views".
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; Custom agenda command definitions --------------------------
;; https://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html
(use-package org-super-agenda)
(use-package org-ql)
(bind-key "<apps> a" 'org-agenda)
(setq org-return-follows-link t)
(setq org-cycle-include-plain-lists 'integrate)
(defun my-org-agenda-skip-scheduled ()
(org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>"))
(setq org-agenda-prefix-format
'((agenda . " %i %-12:c%?-12t% s")
(todo . " ")
(tags . " %i %-12:c")
(search . " %i %-12:c")))
(setq org-agenda-custom-commands
(quote
(
("c" "Classique Agenda et Todos"
((agenda "" ((org-agenda-span 2)))
(agenda "" (
(org-agenda-overriding-header
" ------------ tâches inbox ------------"
2023-10-15 21:35:33 +02:00
)
2024-03-17 10:18:22 +01:00
(tags-todo "+inbox")
)
)
(alltodo
""
((org-agenda-overriding-header "")
(org-super-agenda-groups
'(
(:name "Important, unscheduled"
:and (:priority "A"
:scheduled nil)
:order 2)
(
:name "Inbox"
:file-path "incoming_inbox.org"
:order 1)
(:name "Project-related, unscheduled"
:and (:tag "project" :date nil :todo ("STARTED" "WAITING" "TODO"))
:order 3)
(:name "Waiting"
:and (:todo "WAITING"
:scheduled nil)
:order 4)
(:discard (:todo "SOMEDAY"
:category "cooking"
:date t))
(:name "Unscheduled"
:scheduled nil
:order 5)
(:discard (:anything t))
)
)))
))
("x" "Unscheduled, untagged tasks" tags-todo "-someday-TODO=\"SOMEDAY\"-TODO=\"DELEGATED\"-TODO=\"WAITING\"-project-cooking-routine-evilplans-computer-writing-phone-sewing-home-errands-shopping"
((org-agenda-skip-function 'my-org-agenda-skip-scheduled)
(org-agenda-view-columns-initially nil)
(org-agenda-overriding-header "Tâches TODO sans schedule: ")
(org-columns-default-format "%50ITEM %TODO %3PRIORITY %Effort{:} %TAGS")
(org-agenda-sorting-strategy '(todo-state-up priority-down effort-up tag-up category-keep))))
("b" "Boulot" tags-todo "+boulot")
("c" "Cancelled" tags-todo "+TODO=\"CANCELLED\"")
("D" "Done tasks" tags-todo "DONE")
("i" "Inbox to sort" tags "+inbox")
("g". "GTD Searches") ;; category searches
("gd" "Daily"
agenda "" (
(org-agenda-overriding-header "\n-------------- Agenda du jour ------------------\n")
(org-agenda-span 1)
(tags-todo "+PRIORITY=\"A\"")
)
;; montrer aussi ce qui est dans l'inbox pour le trier
(tags-todo "+inbox")
)
("gw" "Weekly review"
agenda "" (
(org-agenda-overriding-header "\n-------------- Revue hebdomadaire\n------------------\n")
(org-agenda-start-day "-7d")
(org-agenda-span 7)
(org-agenda-start-on-weekday 1)
(org-agenda-start-with-log-mode '(closed))
(org-agenda-archives-mode t)
(org-agenda-todo-keyword-format "[X]")
(org-agenda-skip-function
'(org-agenda-skip-entry-if 'notregexp "^\\*\\* DONE ")
2023-10-15 21:35:33 +02:00
)
)
2024-03-17 10:18:22 +01:00
)
("g2" "Bi-weekly review" agenda "" ((org-agenda-span 14) (org-agenda-log-mode 1)))
("0" "Unestimated tasks" tags-todo "EFFORT=\"\"")
("5" "Quick tasks" tags-todo "EFFORT>=\"5\"&EFFORT<=\"15\"")
("8" "Medium tasks" tags-todo "EFFORT>=\"15\"&EFFORT<=\"60\"")
("9" "Unscheduled top 3 by context" my-org-agenda-contexts
((org-agenda-skip-function 'my-org-agenda-skip-scheduled)
(org-agenda-sorting-strategy '(priority-down effort-down))
(org-agenda-max-entries 3)))
("p" "By priority"
(
(tags-todo "+PRIORITY=\"A\"")
(tags-todo "+PRIORITY=\"B\"")
(tags-todo "+PRIORITY=\"\"")
(tags-todo "+PRIORITY=\"C\"")
)
((org-agenda-prefix-format "%-10c %-10T %e ")
(org-agenda-sorting-strategy '(priority-down tag-up category-keep effort-down))))
("P" "Printed paper agenda"
(
(agenda "" (
(org-agenda-span 7) ;; overview of appointments
(org-agenda-start-on-weekday nil) ;; calendar begins today
(org-agenda-repeating-timestamp-show-all t)
(org-agenda-entry-types '(:timestamp :sexp))
)
2023-10-15 21:35:33 +02:00
)
2024-03-17 10:18:22 +01:00
(agenda "" (
(org-agenda-span 1) ; daily agenda
(org-deadline-warning-days 7) ; 7 day advanced warning for deadlines
(org-agenda-todo-keyword-format "[ ]")
(org-agenda-scheduled-leaders '("" ""))
(org-agenda-prefix-format "%t%s")
)
)
(todo "TODO" ;; todos sorted by context
(
(org-agenda-prefix-format "[ ] %T: ")
(org-agenda-sorting-strategy '(tag-up priority-down))
(org-agenda-todo-keyword-format "")
(org-agenda-overriding-header "\nTasks by Context\n------------------\n")
)
)
2023-10-15 21:35:33 +02:00
)
2024-03-17 10:18:22 +01:00
((org-agenda-with-colors nil)
(org-agenda-compact-blocks t)
(org-agenda-remove-tags t)
(ps-number-of-columns 2)
(ps-landscape-mode t))
("~/agenda.ps"))
("f". "Filter Searches") ;; category searches
("fc" tags "+claire")
("fh" tags "+helia")
("fv" tags "+vovo")
("fs" tags "+social")
("n" "Non boulot" tags-todo "-boulot+TODO=TODO"
(todo "TODO"
((org-agenda-prefix-format "[ ] %T: ")
(org-agenda-overriding-header "Tâches pour le fun")
(org-agenda-sorting-strategy
'(todo-state-down effort-up category-keep)
))
)
)
("h" "Habits" tags-todo "STYLE=\"habit\""
((org-agenda-overriding-header "Habitudes")
(org-agenda-todo-keyword-format "[ ]")
(org-agenda-sorting-strategy
'(todo-state-down effort-up category-keep)))
)
)
)
)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-10-08 10:58:27 +02:00
** Ménage dans les tâches réalisées
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defun my-org-clean-up-inbox ()
"Archive all DONE tasks and sort the remainder by TODO order."
(interactive)
(with-current-buffer (find-file "~/Nextcloud/textes/orgmode/tasks.org")
(my-org-archive-done-tasks 'file)
(goto-char (point-min))
(if (org-at-heading-p) (save-excursion (insert "\n")))
(org-sort-entries nil ?p)
(goto-char (point-min))
(org-sort-entries nil ?o)
(save-buffer)))
(defun my-org-archive-done-tasks (&optional scope)
"Archive finished or cancelled tasks.
SCOPE can be 'file or 'tree."
(interactive)
(org-map-entries
(lambda ()
(org-archive-subtree)
(setq org-map-continue-from (outline-previous-heading)))
"TODO=\"DONE\"|TODO=\"CANCELLED\"" (or scope (if (org-before-first-heading-p) 'file 'tree))))
#+end_src
2023-01-08 10:54:14 +01:00
** Revue mensuelle (FIXME)
2022-05-29 13:11:08 +02:00
** Pimper les couleurs
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
;; pimp my agenda colors
(setq org-todo-keyword-faces
'(
("TODO" . org-warning)
("STARTED" . "yellow")
;; ("DONE" . (:foreground "#B4EB89") )
("WAITING" . (:foreground "red" :weight bold))
("SOMEDAY" . (:foreground "gray" :weight bold))
;; ("CANCELED" . (:foreground "#234" :weight bold))
)
)
2022-05-29 13:11:08 +02:00
#+end_src
** Définir l'effort sur une tâche
2024-03-17 10:18:22 +01:00
Raccourci pour définir un effort compté en nombre de minutes à consacrer à une tâche: F6.
#+begin_src emacs-lisp
;; org-set-effort
(global-set-key (kbd "<f6>") 'org-set-effort)
#+end_src
2022-05-29 13:11:08 +02:00
** Deadlines et Schedules
2024-03-17 10:18:22 +01:00
Cacher les avertissements de deadline les jours précédents pour ne pas encombrer l'agenda.
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; Hide the deadline prewarning prior to scheduled date.
;;(setq org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled)
(defun my-org-summarize-task-status ()
"Count number of tasks by status.
Probably should make this a dblock someday."
(interactive)
(let (result)
(org-map-entries
(lambda ()
(let ((todo (elt (org-heading-components) 2)))
(if todo
(if (assoc todo result)
(setcdr (assoc todo result)
(1+ (cdr (assoc todo result))))
(setq result (cons (cons todo 1) result)))))))
(message "%s" (mapconcat (lambda (x) (format "%s: %d" (car x) (cdr x)))
result "\n"))))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Listes de tags
2024-03-17 10:18:22 +01:00
tags prédéfinis au choix lors de la qualification avec C-c C-q sur une tâche
#+begin_src emacs-lisp
(setq org-tag-alist '(
("adminsys" . ?A)
("administratif" . ?a)
("boulot" . ?b)
("dev" . ?d)
("email" .?e)
("GULL" . ?g)
("habitudes" . ?h)
("social" . ?s)
("tel" . ?t)
("osm" . ?o)
("inbox" . ?i)
("rangement" . ?r)
)
)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
(setq org-todo-state-tags-triggers '(("CANCELLED" ("ARCHIVE" . t))))
#+end_src
2022-05-29 13:11:08 +02:00
** Template de capture
2024-03-17 10:18:22 +01:00
https://orgmode.org/manual/Template-expansion.html
2022-10-08 10:58:27 +02:00
2024-03-17 10:18:22 +01:00
La tâche à faire par défaut n'a pas de date prédéfinie et n'est pas actée comme étant vraiment un truc à réaliser, son mot clé d'action est donc SOMEDAY, un un truc à faire un jour peut être.
[[id:53ffed85-03d0-4fb2-90b5-af2ffbcc3a0d][méthode gtd]]
#+begin_src emacs-lisp
2022-10-08 10:58:27 +02:00
2024-03-17 10:18:22 +01:00
;; full screen captures
;; (add-hook 'org-capture-mode-hook 'delete-other-windows)
;;; templates de capture pour les nouvelles tâches
(setq org-capture-templates
'(
("t" "Todo someday"
entry (file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Inbox")
"* SOMEDAY %? \n")
("d" "Todo this Day" entry (file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Inbox")
"* TODO %?\nDEADLINE:%T \n")
("b" "Boulot" entry (file+headline "~/Nextcloud/textes/orgmode/boulot.org" "Inbox")
"* TODO %?\n :boulot:work: \n\n")
;; (file "~/Nextclod/textes/orgmode/org-roam/20220620110632-meeting_template.org")
("m" "Meeting" entry (file+olp+datetree "~/Nextcloud/textes/orgmode/reunions.org" "Réunions")
"* Réunion %T - %U \n :[[id:d8636e1d-0137-4502-9384-767b41c892b0][boulot:meeting:]] \n\n**** Gens présents\n**** Notes\n - %?\n**** Choses à investiguer\n -\n**** Prochaines actions\n - Fin de la réunion: \n"
2023-10-15 21:35:33 +02:00
)
2024-03-17 10:18:22 +01:00
("e" "E-mail" entry (file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Inbox")
"* TODO %? :mail:écriture: \n\n")
("n" "Next Task" entry (file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Inbox")
"** NEXT %? \nDEADLINE: %t \n\n")
("p" "Phone call" entry (file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Tel")
"* PHONE %? :tel:\n%U \n\n" :clock-in t :clock-resume t)
("j" "Journal" entry (file+olp+datetree "~/Nextcloud/textes/orgmode/journal.org")
"* %?\nÉcrit le %U\n ")
;; ajouter une ligne dans un tableau
("v" "Table" table-line
(file+headline "~/Nextcloud/textes/orgmode/tasks.org" "Table")
"| %U | %? | auto-capture |")
)
)
2023-02-17 11:40:28 +01:00
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; raccourci custom pour clavier sans pavé numérique
(global-set-key (kbd "C-T") 'org-capture)
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; raccourci custom pour clavier sans pavé numérique
(global-set-key (kbd "C-T") 'org-capture)
2022-05-29 13:11:08 +02:00
2022-08-03 14:37:19 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
2022-05-29 13:11:08 +02:00
** Org Roam, wiki personnel
2024-03-17 10:18:22 +01:00
https://systemcrafters.net/build-a-second-brain-in-emacs/capturing-notes-efficiently/
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
Raccourcis Org Roam généraux
#+begin_src emacs-lisp
(use-package org-roam
:init
(setq org-roam-v2-ack t)
:custom
(org-roam-capture-templates
'(("d" "default" plain
"%?"
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n\n* ${title}")
:unnarrowed t)
("m" "meeting" plain (file "~/Nextclod/textes/orgmode/org-roam/20220620110632-meeting_template.org")
:if-new (file+head "%<%Y%m%d%H%M%S>-meeting-${slug}.org" "#+title: ${title}\n")
:unnarrowed t
)
("b" "book notes" plain
"\n* Source\n\nAuthor: %^{Author}\nTitle: ${title}\nYear: %^{Year}\n\n* Summary\n\n%?"
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n")
:unnarrowed t))
)
2022-08-03 14:37:19 +02:00
2024-03-17 10:18:22 +01:00
:bind (
("C-c n l" . org-roam-buffer-toggle)
("C-c n f" . org-roam-node-find)
("C-c n i" . org-roam-node-insert)
("C-c n g" . org-roam-graph)
("C-c n t" . org-roam-tag-add)
("C-c n a" . org-roam-alias-add)
:map org-roam-dailies-map
("Y" . org-roam-dailies-capture-yesterday)
("T" . org-roam-dailies-capture-tomorrow)
)
:bind-keymap
("C-c n d" . org-roam-dailies-map)
:config
(require 'org-roam-dailies)
(org-roam-db-autosync-mode)
)
(setq org-roam-directory "~/Nextcloud/textes/orgmode/org-roam")
(setq org-roam-completion-everywhere t)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
2022-07-06 16:16:12 +02:00
*** Roam graph
2024-03-17 10:18:22 +01:00
Graph naviguable des liens entre les notes Org Roam.
#+begin_src emacs-lisp
(use-package org-roam-ui
:straight
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out"))
:after org-roam
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
;; a hookable mode anymore, you're advised to pick something yourself
;; if you don't care about startup time, use
;; :hook (after-init . org-roam-ui-mode)
:config
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t
org-roam-ui-open-on-start t))
#+end_src
2022-07-06 16:16:12 +02:00
** Images incluses dans les fichiers org
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(setq org-startup-with-inline-images t)
(global-set-key (kbd "M-<f12>") 'org-toggle-inline-images)
(global-set-key (kbd "C-M-<f12>") 'org-toggle-inline-images)
;; show details to edit links
(global-set-key (kbd "S-<f12>") 'visible-mode)
(global-set-key (kbd "C-S-<f12>") 'visible-mode)
#+end_src
2023-01-08 10:54:14 +01:00
** Refile des tâches
2024-03-17 10:18:22 +01:00
Ctrl + R
#+begin_src emacs-lisp
(global-set-key (kbd "C-R") 'org-refile)
#+end_src
2023-01-08 10:54:14 +01:00
** Liste de fichiers à considérer pour l'Agenda
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-06 dim. 18:36]
:END:
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; dossier des fichiers org à considérer pour les agendas, uniquement la racine du dossier orgmode dans Nextcloud
(setq org-agenda-files (list "~/Nextcloud/textes/orgmode"))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; pouvoir faire du refile dans des headers de niveau 2 dans tasks.org
(setq org-refile-targets
'((nil :maxlevel . 1)
( "~/Nextcloud/textes/orgmode/tasks.org" :maxlevel . 3)))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Macros pour lister et archiver les tâches finies
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; voir la liste des tâches à l'état DONE
(fset 'done-tasks-list
(kmacro-lambda-form [?\C-c ?a ?t kp-5 ?r] 0 "%d"))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; archiver les tâches à l'état DONE
(fset 'archive-done-tasks-list
(kmacro-lambda-form [?\C-c ?a ?t kp-5 ?r] 0 "%d"))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Ajout de date de création d'une tâche
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:22]
- Refiled on [2023-01-08 dim. 10:10]
:END:
#+begin_src emacs-lisp
(defun insert-created-date(&rest ignore)
(org-back-to-heading) ; in org-capture, this folds the entry; when inserting a heading, this moves point back to the heading line
(move-end-of-line()) ; when inserting a heading, this moves point to the end of the line
(insert
(format-time-string
(concat " \n :PROPERTIES:\n:CREATED: [%F %T] \n:END:\n")
2023-02-17 11:40:28 +01:00
)
)
2024-03-17 10:18:22 +01:00
(org-back-to-heading)
(move-end-of-line())
2023-02-17 11:40:28 +01:00
)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
; add to the org-capture hook
(add-hook
'org-capture-before-finalize-hook
#'insert-created-date
)
; hook it to adding headings with M-S-RET
; do not add this to org-insert-heading-hook, otherwise this also works in non-TODO items
;; and Org-mode has no org-insert-todo-heading-hook
;; désactivé
(advice-add 'org-insert-todo-heading :after #'insert-created-date)
#+end_src
2023-02-17 11:40:28 +01:00
2023-01-08 10:54:14 +01:00
* Raccourcis
2022-05-29 13:11:08 +02:00
** Retirer les mauvais raccourcis
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; remove bad shortcuts
(-map (lambda (x) (unbind-key x)) '(
"C-x C-b";; basic buffer list ibuffer
"C-x C-d" ;; list-directory
"C-z" ;; suspend-frame
"C-x C-z" ;; again
"M-o" ;; facemenu-mode
"<mouse-2>" ;; pasting with mouse-wheel click
"<C-wheel-down>" ;; text scale adjust
"<C-wheel-up>" ;; ditto
"s-n" ;; make-frame
"C-i" ;; tab ?
"C-x C-q" ;; read-only-mode
))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Go to line
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; (global-set-key (kbd "C-G") 'goto-line)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Lister les buffers avec Helm
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(global-set-key (kbd "C-x C-b") 'helm-buffers-list)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Commenter une ligne
2024-03-17 10:18:22 +01:00
Avec Ctrl+Shift+C
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; commenter une ligne de code, Ctrl Shift C.
(defun comment-eclipse ()
(interactive)
(let ((start (line-beginning-position))
(end (line-end-position)))
(when (or (not transient-mark-mode) (region-active-p))
(setq start (save-excursion
(goto-char (region-beginning))
(beginning-of-line)
(point))
end (save-excursion
(goto-char (region-end))
(end-of-line)
(point))))
(comment-or-uncomment-region start end)))
(global-set-key (kbd "C-S-c") 'comment-eclipse)
(global-set-key (kbd "C-s-c") 'comment-eclipse)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Tout sélectionner
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(global-set-key (kbd "C-a") 'mark-whole-buffer)
#+end_src
2022-05-29 13:11:08 +02:00
* Lecture
2024-03-17 10:18:22 +01:00
** Quote padding
#+begin_src emacs-lisp
(setq org-quote-padding 10)
(setq org-block-background-color "#353535")
#+end_src
2023-01-08 10:54:14 +01:00
** Thème Doom nord
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
(use-package doom-themes
:config
;; Global settings (defaults)
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
;; thème principal https://github.com/doomemacs/themes
(load-theme 'doom-nord t)
;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config)
;; Enable custom neotree theme (all-the-icons must be installed!)
(doom-themes-neotree-config)
;; or for treemacs users
(setq doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme
(doom-themes-treemacs-config)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config))
(use-package doom-modeline
:config (doom-modeline-mode))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Random note
2024-03-17 10:18:22 +01:00
Voir une note au hasard
https://github.com/mwfogleman/org-randomnote
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(use-package org-randomnote
:ensure t
:bind ("C-c r" . org-randomnote))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
(load-library "find-lisp")
(setq org-randomnote-candidates
(find-lisp-find-files "~/Nextcloud/textes/orgmode/org-roam" "\.org$"))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Raccourcis d'agenda perso
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; - - - - - - - - - - - - - - - - - - - - - - - - - custom keys - - - - - - - - - - - - - - - - - - - - - - - - -
(global-set-key (kbd "C-c l") 'org-store-link)
(global-set-key (kbd "C-c a") 'org-agenda)
(global-set-key (kbd "C-c c") 'org-capture)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Tout
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
(setq left-margin-width 5)
(setq right-margin-width 5)
;; highlight of lines
(require 'hl-line)
(add-hook 'prog-mode-hook #'hl-line-mode)
(add-hook 'text-mode-hook #'hl-line-mode)
;; fonts
;; font for errors
(ignore-errors (set-frame-font "JuliaMono-12"))
;; alias
(defalias 'yes-or-no-p 'y-or-n-p)
;; - - - - - - - - - - - - - - - - - - - - - - - - - custom keys - - - - - - - - - - - - - - - - - - - - - - - - -
(global-set-key (kbd "C-c l") 'org-store-link)
(global-set-key (kbd "C-c a") 'org-agenda)
(global-set-key (kbd "C-c c") 'org-capture)
(defun switch-to-scratch-buffer ()
"Switch to the current session's scratch buffer."
(interactive)
(switch-to-buffer "*scratch*"))
(bind-key "C-c s" #'switch-to-scratch-buffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
(global-set-key (kbd "C-S-d") 'done-tasks-list)
(global-set-key (kbd "C-M-d") 'archive-done-tasks-list)
;; raccourcis issus d'habitudes de netbeans
;; save all by default Was: isearch-forward
(defun save-all () (interactive) (save-some-buffers t))
(global-set-key (kbd "C-x C-s") 'save-all)
(global-set-key (kbd "C-o") 'save-all)
(global-set-key (kbd "C-S-c") 'comment-line)
;; recherche dans tous les fichiers du dossier orgmode
(global-set-key (kbd "C-S-f") 'deft)
(global-set-key (kbd "<f1>") 'deft)
;; recherche dans le fichier courant avec ctrl + f
(global-set-key (kbd "C-f") 'isearch-forward)
(global-set-key (kbd "<f5>") 'org-capture)
(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
(global-set-key (kbd "<f12>") 'org-agenda)
(global-set-key (kbd "C-c <f9>") 'org-agenda-clock-goto)
(global-set-key (kbd "<f9>") 'org-clock-in)
(global-set-key (kbd "<f10>") 'org-clock-out)
(global-set-key (kbd "<f11>") 'org-clock-goto)
(global-set-key (kbd "<f2>") 'dir-treeview)
(global-set-key "\C-x\ \C-r" 'recentf-open-files)
(setq org-agenda-sticky t)
;; use org-bullets-mode for utf8 symbols as org bullets
(use-package org-bullets)
(require 'org-bullets)
;; make available "org-bullet-face" such that I can control the font size individually
(setq org-bullets-face-name (quote org-bullet-face))
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
(setq org-bullets-bullet-list '("·" "○"
"✸"
"✿"
"◇"
"✚"
"○"
))
;; org ellipsis options, other than the default Go to Node...
;; not supported in common font, but supported in Symbola (my fall-back font) ⬎, ⤷, ⤵
(setq org-ellipsis "⤵");; ≫
;; make available "org-bullet-face" such that I can control the font size individually
(setq org-bullets-face-name (quote org-bullet-face))
;; détail de combinaison de touches
(use-package which-key
:diminish
:custom
(which-key-enable-extended-define-key t)
:config
(which-key-mode)
(which-key-setup-minibuffer))
(defun display-startup-echo-area-message ()
"Override the normally tedious startup message."
(message "Squalala!."))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
2023-02-17 11:40:28 +01:00
* Syncronisation
2022-05-29 13:11:08 +02:00
2023-02-17 11:40:28 +01:00
** Auto revert les fichiers modifiés extérieurement
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:20]
- Refiled on [2023-02-03 ven. 23:13]
:END:
2023-02-17 11:40:28 +01:00
Résout les probl de syncro de [[id:bb81d7f9-cb33-495d-aea7-71ccf3bea2f2][workflow nextcloud]].
2022-05-29 13:11:08 +02:00
2023-02-17 11:40:28 +01:00
#+begin_src emacs-lisp
;; Revert Dired and other buffers
(setq global-auto-revert-non-file-buffers t)
2022-05-29 13:11:08 +02:00
2023-02-17 11:40:28 +01:00
;; Revert buffers when the underlying file has changed
(global-auto-revert-mode 1)
2022-05-29 13:11:08 +02:00
#+end_src
2023-02-17 11:40:28 +01:00
* Démarrage
** Barres d'outil cachées et choix de plein écran au démarrage
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(menu-bar-mode 0)
(tool-bar-mode 0)
(scroll-bar-mode 0)
;; (add-to-list 'default-frame-alist '(fullscreen . maximized))
#+end_src
2023-02-17 11:40:28 +01:00
** Centrer la fenêtre
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(use-package centered-window
:custom
(cwm-centered-window-width 120))
#+end_src
2023-02-17 11:40:28 +01:00
** Fichier par défaut à l'ouverture
2024-03-17 10:18:22 +01:00
Montrer la liste des tâches par défaut
2023-02-17 11:40:28 +01:00
#+begin_src emacs-lisp
(setq initial-buffer-choice "~/Nextcloud/textes/orgmode/config.org")
;; (setq initial-buffer-choice "~/Nextcloud/textes/orgmode/tasks.org")
#+end_src
** Voir le dashboard de tâches au démarrage
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
#+begin_src emacs-lisp
;;---- open tasks list at startup
(setq initial-buffer-choice "~/Nextcloud/textes/orgmode/tasks.org")
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
* IDE et Code - Environnement de Développement Intégré
** Recherche globale
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
Deft
#+begin_src emacs-lisp
(use-package deft)
(setq deft-directory "~/Nextcloud/textes/orgmode/")
(setq deft-recursive t)
(setq deft-use-filename-as-title t)
(setq deft-file-naming-rules
'((noslash . "-")
(nospace . "-")
(case-fn . downcase)))
#+end_src
2023-02-17 11:40:28 +01:00
** Mise en forme des parenthèses
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; - - - - - - - - - - - - - - matching parentheses - - - - - - - - - - - - - - - - - - - - - - - - - -
(use-package paren
:ensure nil
:init
(setq show-paren-delay 0)
:config
(show-paren-mode +1))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(show-paren-mode)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(use-package rainbow-delimiters
:hook ((prog-mode . rainbow-delimiters-mode)))
;; dir tree
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Voir la liste des sélections copiées
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
Afficher le kill-ring Ctrl+Shift+V
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "C-S-v") 'helm-show-kill-ring)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Calendar framework
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:18]
:END:
#+begin_src emacs-lisp
; calendar display
(use-package calfw)
(use-package calfw-org)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; First day of the week
(setq calendar-week-start-day 0
calendar-day-name-array ["Dimanche" "Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi"]
calendar-month-name-array ["Janvier" "Février" "Mars" "Avril" "Mai"
"Juin" "Juillet" "Août" "Septembre"
"Octobre" "Novembre" "Décembre"]
calendar-date-style 'european
org-icalendar-timezone "Europe/Paris"
cfw:fchar-junction ?╋
cfw:fchar-vertical-line ?┃
cfw:fchar-horizontal-line ?━
cfw:fchar-left-junction ?┣
cfw:fchar-right-junction ?┫
cfw:fchar-top-junction ?┯
cfw:fchar-top-left-corner ?┏
cfw:fchar-top-right-corner ?┓
)
;; jour de début de semaine, 1 = Lundi.
(setq calendar-week-start-day 1)
;; agenda vue calendrier avec Ctrl super F12
(global-set-key (kbd "C-s-<f12>") 'cfw:open-org-calendar)
#+end_src
2023-02-17 11:40:28 +01:00
** Magit version Git
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:32]
:END:
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(use-package magit)
;; see local log
(global-set-key (kbd "C-c m l ") 'magit-log:-L)
#+end_src
2023-02-17 11:40:28 +01:00
* Interface
** Heure dans la modeline
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(display-time-mode 1)
#+end_src
2023-02-17 11:40:28 +01:00
** Common usage CUA
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:15]
:END:
#+begin_src emacs-lisp
;; raccourcis communs pour copier coller de texte
(cua-mode t)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; couper toute la ligne, façon Nano editor, et façon PhpStorm
(global-set-key (kbd "C-K") 'kill-whole-line)
(global-set-key (kbd "C-E") 'kill-whole-line)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; rechercher et remplacer
(global-set-key (kbd "C-S-H") 'query-replace)
#+end_src
2023-02-17 11:40:28 +01:00
** Changer la taille de font
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
Ctrl + et Ctrl -
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "C-+") 'text-scale-increase)
(global-set-key (kbd "C--") 'text-scale-decrease)
#+end_src
2023-02-17 11:40:28 +01:00
** Font Custom et mode de ligne
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
#+begin_src emacs-lisp
(add-hook 'org-mode-hook 'variable-pitch-mode)
(add-hook 'org-mode-hook 'visual-line-mode)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(add-hook 'org-mode-hook 'prettify-symbols-mode)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(defun my-org-config/setup-buffer-face ()
(setq buffer-face-mode-face '(:family "Calibri"))
(buffer-face-mode)
2023-02-17 11:40:28 +01:00
)
2024-03-17 10:18:22 +01:00
(custom-set-faces
'(org-level-1 ((t (:inherit outline-1 :height 2.0))))
'(org-level-2 ((t (:inherit outline-2 :height 1.750))))
'(org-level-3 ((t (:inherit outline-3 :height 1.5))))
'(org-level-4 ((t (:inherit outline-4 :height 1.25))))
'(org-level-5 ((t (:inherit outline-5 :height 1.0))))
)
#+end_src
2023-02-17 11:40:28 +01:00
** Custom GUI sans barres
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:17]
:END:
Désactivez ceci si vous êtes débutant.
#+begin_src emacs-lisp
;; barres de GUI
(setq tool-bar-mode t)
(setq scroll-bar-mode t)
(setq menu-bar-mode t)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Icones
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:17]
:END:
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; - - - - - - - - - - - - - - icons - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(use-package all-the-icons)
(require 'all-the-icons)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(use-package all-the-icons-dired
:after all-the-icons
:hook (dired-mode . all-the-icons-dired-mode))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Fenêtres, buffers
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:17]
:END:
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
Fermer tous les buffers.
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(defun kill-all-buffers ()
"Close all buffers."
(interactive)
(let ((lsp-restart 'ignore))
;; (maybe-unset-buffer-modified)
(delete-other-windows)
(save-some-buffers)
(let
((kill-buffer-query-functions '()))
(mapc 'kill-buffer (buffer-list)))))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(bind-key "C-c K" #'kill-all-buffers)
(bind-key "C-x !" #'delete-other-windows) ;; Access to the old keybinding.
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
* Traduction - Fr
2024-03-17 10:18:22 +01:00
Locale des dates en Fr
2022-05-29 13:11:08 +02:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
;; localise dates
;; https://www.emacswiki.org/emacs/CalendarLocalization#h5o-11
(setq org-agenda-span 7
org-agenda-start-on-weekday 1
european-calendar-style t
display-time-24hr-format t
display-time-day-and-date t
calendar-day-abbrev-array ["dim" "lun" "mar" "mer" "jeu" "ven" "sam"]
calendar-day-name-array ["Dimanche" "Lundi" "Mardi" "Mercredi"
"Jeudi" "Vendredi" "Samedi"]
calendar-month-abbrev-array ["jan" "fév" "mar" "avr" "mai" "jun" "jul" "aou" "sep" "oct" "nov" "déc"]
calendar-month-name-array ["Janvier" "Février" "Mars" "Avril" "Mai"
"Juin" "Juillet" "Août" "Septembre"
"Octobre" "Novembre" "Décembre"]
org-agenda-start-day "-0d"
org-hierarchical-todo-statistics nil ;; count all TODO as checkboxes
org-scheduled-delay-days 1
org-cycle-separator-lines 0
)
2022-05-29 13:11:08 +02:00
#+end_src
* Sauvegarde et historique
** Sauvegarde à la perte de focus
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; sauvegarder les frames quand on change de focus
(defun save-all ()
(interactive)
(org-update-all-dblocks)
(save-some-buffers t))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
(add-hook 'focus-out-hook 'save-all)
#+end_src
2022-05-29 13:11:08 +02:00
* Développement
#+begin_src emacs-lisp
#+end_src
** Gestion de version
#+begin_src emacs-lisp
2022-08-03 14:37:19 +02:00
;; https://github.com/emacsorphanage/git-gutter
2022-10-08 10:58:27 +02:00
(use-package git-gutter)
(global-git-gutter-mode +1)
2022-05-29 13:11:08 +02:00
#+end_src
** Auto format
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; (setq org-adapt-indentation t)
;; *** Auto Indent
2022-10-08 10:58:27 +02:00
2024-03-17 10:18:22 +01:00
(defun indent-org-block-automatically ()
(when (org-in-src-block-p)
(org-edit-special)
(indent-region (point-min) (point-max))
(org-edit-src-exit))
)
2022-10-08 10:58:27 +02:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "C-S-f") 'indent-org-block-automatically)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Tab avec largeur de 2 espaces
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(setq-default tab-width 2)
#+end_src
2022-05-29 13:11:08 +02:00
** Dupliquer la ligne
#+begin_src emacs-lisp
;; --- dupliquer la sélection
2023-01-08 10:54:14 +01:00
(use-package duplicate-thing
:init
(defun pt/duplicate-thing ()
"Duplicate thing at point without changing the mark."
(interactive)
(save-mark-and-excursion (duplicate-thing 1))
(call-interactively #'next-line))
:bind ("C-d" . pt/duplicate-thing)
)
2022-05-29 13:11:08 +02:00
#+end_src
2023-01-08 10:54:14 +01:00
** Ne pas montrer de messages au démarrage
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; hide some annoyances
(defun do-nothing (interactive))
(defalias 'view-emacs-news 'do-nothing)
(defalias 'describe-gnu-project 'do-nothing)
2022-10-08 10:58:27 +02:00
2024-03-17 10:18:22 +01:00
(setq user-full-name "TyKayn"
user-mail-address "contact@cipherbliss.com")
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Markdown
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
(use-package markdown-mode
:mode ("\\.\\(njk\\|md\\)\\'" . markdown-mode))
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-07-06 16:16:12 +02:00
** Json
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(use-package json-mode)
2022-07-06 16:16:12 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
** Sauvegardes des fichiers
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(setq backup-directory-alist '(("." . "~/.config/emacs/backups")))
#+end_src
2022-05-29 13:11:08 +02:00
* Écriture
** Centrer le texte - Olivetti
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; olivetti
;; Distraction-free screen
(use-package olivetti
:straight t
:init
(setq
olivetti-body-width 85
text-scale-increase 1.15
olivetti-mode t
)
:config
)
;; change font size on load of text files
(
add-hook 'org-mode-hook
(lambda ()
(interactive)
(message "Olivetti text-mode-hook")
;; (olivetti-set-width .75)
;; (hidden-mode-line-mode)
(olivetti-mode 1)
)
)
;; focus on text in fullscreen
(use-package writeroom-mode)
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
2022-05-29 13:11:08 +02:00
** Auto complétion
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
;; Auto completion
(use-package company
:config
(setq company-idle-delay 0.15
company-minimum-prefix-length 4
company-selection-wrap-around t))
(global-company-mode)
;; Helm configuration
(use-package helm
:config
(require 'helm-config)
:init
(helm-mode 1)
:bind
(("M-x" . helm-M-x) ;; Evaluate functions
("C-x C-f" . helm-find-files) ;; Open or create files
("C-x b" . helm-mini) ;; Select buffers
("C-x C-r" . helm-recentf) ;; Select recently saved files
("C-c i" . helm-imenu) ;; Select document heading
("M-y" . helm-show-kill-ring) ;; Show the kill ring
:map helm-map
;; ("C-z" . helm-select-action)
;; ("<tab>" . helm-execute-persistent-action)
) )
2022-05-29 13:11:08 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-05-29 13:11:08 +02:00
2023-01-08 10:54:14 +01:00
** Abbréviations
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-01-05 jeu. 14:17]
:END:
2022-05-29 13:11:08 +02:00
2022-07-06 16:16:12 +02:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(add-hook 'text-mode-hook #'abbrev-mode)
(define-abbrev-table 'global-abbrev-table '(
("afaict" "as far as I can tell" nil 0)
("poru" "pour" nil 0)
("sdep" "soit dit en passant" nil 0)
("jspcs" "j'en suis pas complètement sûr" nil 0)
("psa" "pas" nil 0)
("aç" "ça" nil 0)
("osmm" "OpenStreetMap" nil 0)
("cb" "CipherBliss" nil 0)
("tyk" "TyKayn" nil 0)
("omuse" "http://www.emacswiki.org/cgi-bin/oddmuse.pl" nil 0)
("btw" "by the way" nil 0)
("wether" "whether" nil 0)
("ewiki" "http://www.emacswiki.org/cgi-bin/wiki.pl" nil 0)
("pov" "point of view" nil 1)
))
2022-07-06 16:16:12 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-07-06 16:16:12 +02:00
2023-02-17 11:40:28 +01:00
** Rangement Org
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-01-10 mar. 08:40]
:END:
Ranger les headers ou tâches par alphabet, priorité, etc.
#+begin_src emacs-lisp
;; rangement des headers et tâches
(global-set-key (kbd "C-c C-ç") 'org-sort)
#+end_src
2023-02-17 11:40:28 +01:00
** Tabulations
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:13]
- Refiled on [2023-01-05 jeu. 13:54]
:END:
#+begin_src emacs-lisp
(setq-default tab-width 2)
2022-08-03 14:37:19 +02:00
2024-03-17 10:18:22 +01:00
#+end_src
2022-08-03 14:37:19 +02:00
2023-02-17 11:40:28 +01:00
** Insérer la date et l'heure
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:15]
:END:
2022-07-06 16:16:12 +02:00
2024-03-17 10:18:22 +01:00
raccourci: *Ctrl c, !*
*Ctrl U Ctrl C .
exemple : <2022-06-27 lun. 18:51>
#+begin_src emacs-lisp
(defvar bjk-timestamp-format "<%Y-%m-%d %H:%M>"
"Format of date to insert with `bjk-timestamp' function
%Y-%m-%d %H:%M will produce something of the form YYYY-MM-DD HH:MM
Do C-h f on `format-time-string' for more info")
(defun bjk-timestamp ()
"Insert a timestamp at the current point.
Note no attempt to go to beginning of line and no added carriage return.
Uses `bjk-timestamp-format' for formatting the date/time."
(interactive)
(insert (org-format-time-string bjk-timestamp-format (current-time)))
)
;; insérer timestamp date et heure
(global-set-key "\C-c !" 'insert-current-date-time)
#+end_src
2023-02-17 11:40:28 +01:00
** cliplink
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:23]
:END:
coller un lien formaté avec son titre
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
#+begin_src emacs-lisp
(use-package org-cliplink)
(require 'org-cliplink)
(global-set-key (kbd "C-x C-v") 'org-cliplink)
#+end_src
2023-01-08 10:54:14 +01:00
* Exports
2022-08-03 14:37:19 +02:00
2023-02-17 11:40:28 +01:00
** Export en JSON
2022-08-03 14:37:19 +02:00
Pour la création d'une page de rapport d'activités en HTML.
2023-01-08 10:54:14 +01:00
[[id:ac712d1c-5141-45dc-9647-46e61a835b01][stats orgmode]]
2022-08-03 14:37:19 +02:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
(use-package ox-json)
2022-08-03 14:37:19 +02:00
(require 'ox-json)
#+end_src
2023-02-17 11:40:28 +01:00
** Résoudre les liens Roam manquants aux exports org
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:13]
:END:
2023-02-17 11:40:28 +01:00
[[https://github.com/kaushalmodi/ox-hugo/issues/483#issuecomment-1003301339][kaushalmodi/ox-hugo#483 Unable to resolve link when exporting org file with r...]]
#+begin_src emacs-lisp
(setq org-id-extra-files (find-lisp-find-files org-roam-directory "\.org$"))
#+end_src
** Exporter vers HTML avec un style commun
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:21]
:END:
Toujours insérer en style inline un fichier css lors des exports en html.
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+begin_quote
C-c C-e
#+end_quote
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; exporter sans nombres ajoutés dans les titres de section
(setq org-export-with-section-numbers nil)
;; export with default modern css
(defun my-org-inline-css-hook (exporter)
"Insert custom inline css"
(when (eq exporter 'html)
(let* ((dir (ignore-errors (file-name-directory (buffer-file-name))))
(path (concat dir "style.css"))
(homestyle (or (null dir) (null (file-exists-p path))))
(final (if homestyle "~/Nextcloud/textes/orgmode/style.css" path))) ;; <- set your own style file path
(setq org-html-head-include-default-style nil)
(setq org-html-head (concat
"<style type=\"text/css\">\n"
"<!--/*--><![CDATA[/*><!--*/\n"
(with-temp-buffer
(insert-file-contents final)
(buffer-string))
"/*]]>*/-->\n"
"</style>\n"))
)))
(add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
*** Présentation reveal js
2024-03-17 10:18:22 +01:00
Pour faire une présentation en slides html avec Reveal JS
#+begin_src emacs-lisp
(straight-use-package '(ox-reveal :host github
:repo "yjwen/org-reveal"
:branch "master"))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(setq org-reveal-root "file:///home/tykayn/Nextcloud/textes/orgmode/reveal.js")
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(require 'ox-reveal)
#+end_src
2023-02-17 11:40:28 +01:00
2023-01-08 10:54:14 +01:00
* À suivre
La suite est à inventer.
Pour installer cette configuration d'emacs, lancez le script qui se trouve ici https://forge.chapril.org/tykayn/scripts/src/branch/master/install_emacs_tk.sh
2022-08-03 14:37:19 +02:00
2022-10-08 11:56:22 +02:00
2023-01-08 10:54:14 +01:00
#+begin_src bash
wget https://forge.chapril.org/tykayn/scripts/raw/branch/master/install_emacs_tk.sh | bash
#+end_src
2022-10-08 10:58:27 +02:00
2023-01-08 10:54:14 +01:00
* Désactivées
2024-03-17 10:18:22 +01:00
Les configurations qui fonctionnenemt mais ont été désactivées
2022-10-08 10:58:27 +02:00
2023-01-08 10:54:14 +01:00
** Recompter les cookies à la sauvegarde et mettre en DONE automatiquement [désactivé]
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-01-08 dim. 10:10]
- Refiled on [2022-11-18 ven. 23:35]
:END:
#+begin_src emacs-lisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to DONE when all subentries are done, to TODO otherwise."
(let (org-log-done org-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO"))))
2022-08-03 14:37:19 +02:00
2024-03-17 10:18:22 +01:00
;; (add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
#+end_src
2022-05-29 13:11:08 +02:00
2023-01-08 10:54:14 +01:00
** Clean des espaces [désactivé]
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-01-08 dim. 10:10]
- Refiled on [2023-01-05 jeu. 13:54]
:END:
2022-10-08 11:56:22 +02:00
#+begin_src bash
2023-01-08 10:54:14 +01:00
apt-get install elpa-ws-butler
2022-10-08 11:56:22 +02:00
#+end_src
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; (setq ws-butler-trim-predicate
;; (lambda (beg end)
;; (not (eq 'font-lock-string-face
;; (get-text-property end 'face)))))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; (require 'ws-butler)
;; (add-hook 'prog-mode-hook #'ws-butler-mode)
#+end_src
2023-01-08 10:54:14 +01:00
* WIP - configuration non testées
2024-03-17 10:18:22 +01:00
** Modernité de l'éditeur
basé sur le fichier de conf de Jax Dixit
2023-02-17 11:40:28 +01:00
#+begin_src emacs-lisp
2024-03-17 10:18:22 +01:00
(delete-selection-mode t)
;; (global-display-line-numbers-mode t)
(column-number-mode)
(setq
;; Double-spaces after periods is morally wrong.
sentence-end-double-space nil
;; scroll to first error
compilation-scroll-output 'first-error
;; Never ding at me, ever.
ring-bell-function 'ignore
fast-but-imprecise-scrolling t
;; prefer newer elisp files
load-prefer-newer t
;; when I say to quit, I mean quit
confirm-kill-processes nil
;; if native-comp is having trouble, there's not very much I can do
native-comp-async-report-warnings-errors 'silent
;; unicode ellipses are better
truncate-string-ellipsis "…"
)
(electric-pair-mode)
(setq require-final-newline t)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; recherche dans un projet
(use-package deadgrep
:bind (("C-c C-h" . #'deadgrep)))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
** correction Fr et En
2023-02-17 11:40:28 +01:00
#+begin_src emacs-lisp
2024-03-17 10:18:22 +01:00
;; (straight-use-package 'flyspell)
;; (add-hook 'org-mode-hook 'flyspell-mode)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; (defun my/switch-to-french-dict ()
;; (interactive)
;; (flyspell-dictionary "fr"))
#+end_src
** sidebar
2023-01-08 10:54:14 +01:00
#+begin_src emacs-lisp
2024-03-17 10:18:22 +01:00
;; (use-package org-sidebar)
;; (add-hook 'org-mode-hook 'org-sidebar-setup)
;; (setq org-sidebar-default-width 20)
;; (setq org-sidebar-show-only-headings t)
#+end_src
** Mastodon post
#+begin_src emacs-lisp
#+end_src
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
** copier coller d'images
https://www.orgroam.com/manual.html#Full_002dtext-search-with-Deft
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(use-package org-download
:after org
:bind
(:map org-mode-map
(("s-Y" . org-download-screenshot)
("s-y" . org-download-yank))))
#+end_src
2023-01-08 10:54:14 +01:00
** Bibliographie
2024-03-17 10:18:22 +01:00
C-c C-b pour ajouter une bibliothraphie.
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; BibLaTeX settings
;; bibtex-mode
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
https://lucidmanager.org/productivity/emacs-bibtex-mode/
2023-01-08 10:54:14 +01:00
2023-02-17 11:40:28 +01:00
*** Références bibliographiques
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; BibLaTeX settings
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
2023-01-08 10:54:14 +01:00
** Projectile, gestion de projets
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; non pris en compte pour l'ajout d'une deadline ou schedule
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; (use-package projectile)
;; (projectile-mode +1)
;; (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
;; (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Ajout de majuscule aux entêtes (FIXME)
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-04 ven. 00:30]
:END:
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defun org-auto-capitalize-headings ()
"Automatically capitalize headings in Org mode."
(interactive)
(let ((case-fold-search nil))
(goto-char (point-min))
(while (re-search-forward "^\\*+\\s-+" nil t)
(replace-match (upcase-region (match-beginning 0) (match-end 0)) t t))))
;; ;; (add-hook 'org-mode-hook #'org-auto-capitalize-headings-and-lists)
#+end_src
2023-01-08 10:54:14 +01:00
** Traduction du mini agenda FIXME
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-04 ven. 00:32]
:END:
2023-01-08 10:54:14 +01:00
** Auto refresh d'agenda FIXME
2024-03-17 10:18:22 +01:00
Actuellement réalisé avec un cronjob qui lance un script bash.
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-04 ven. 00:34]
:END:
Toutes les 5 minutes, auto rafraîchir l'agenda si il est présent.
https://orgmode.org/worg/org-hacks.html#orga494948
#+begin_src emacs-lisp
(defun my-refresh-agenda ()
"Refresh the agenda buffer every 5 minutes if there is an agenda opened."
(interactive)
(if (buffer-live-p "*Agenda*")
(run-with-timer 0 300000 'my-refresh-agenda)))
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
;; (add-hook 'org-mode-hook 'my-refresh-agenda)
#+end_src
2023-01-08 10:54:14 +01:00
** Ménage dans les fichiers
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-04 ven. 00:35]
:END:
2023-01-08 10:54:14 +01:00
*** Enlever les propriétés vides FIXME
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defun my-remove-empty-properties-drawer ()
"Remove the properties drawer if it is empty."
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "^:PROPERTIES:" nil t)
(let ((start (match-beginning 0)))
(forward-line)
(if (looking-at ":END:")
(delete-region start (match-end 0))
(message "Properties drawer not found"))))))
;; (add-hook 'org-mode-hook 'my-remove-empty-properties-drawer)
#+end_src
2023-01-08 10:54:14 +01:00
*** Enlever les tags redondants avec leur Header FIXME
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defun my-remove-duplicate-inherited-tags ()
"Remove duplicate inherited tags from the current task."
(interactive)
(let ((parent-task (org-get-parent-task)))
(when parent-task
(let ((inherited-tags (mapcar #'string-to-symbol (split-string (cdr (assoc "INHERIT_TAGS" (org-entry-properties parent-task))) ","))))
(dolist (tag (org-get-tags))
(when (member tag inherited-tags)
(org-remove-tag tag)))))))
;; (add-hook 'org-mode-hook 'my-remove-duplicate-inherited-tags)
#+end_src
2023-01-08 10:54:14 +01:00
** publication de site web du wiki FIXME
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-04 ven. 00:36]
:END:
Ox-Hugo https://ox-hugo.scripter.co/doc/installation/
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
** Actions à faire avant de sauvegarder les fichiers
#+begin_src emacs-lisp
(defun my-function-before-save ()
"Function to run before saving a file."
(message "Running my-function-before-save...")
(org-indent-all-buffers)
)
(add-hook 'before-save-hook 'my-function-before-save)
#+end_src
2023-01-08 10:54:14 +01:00
** Faire un log de toutes les commandes réalisées en live (FIXME)
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
** Frame suivante et précédente
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "M-<right>") 'next-buffer)
(global-set-key (kbd "M-<left>") 'previous-buffer)
#+end_src
2023-01-08 10:54:14 +01:00
** UTF 8
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-06 dim. 18:37]
:END:
#+begin_src emacs-lisp
(set-charset-priority 'unicode)
(prefer-coding-system 'utf-8-unix)
#+end_src
2023-01-08 10:54:14 +01:00
** Supprimer les espaces de fin
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2022-11-06 dim. 18:43]
:END:
#+begin_src emacs-lisp
;; (add-hook 'before-save-hook #'delete-trailing-whitespace)
;; ;; (setq require-final-newline t)
;; (defalias 'view-emacs-news 'ignore)
;; (defalias 'describe-gnu-project 'ignore)
;; (setq mouse-wheel-tilt-scroll t
;; mouse-wheel-flip-direction t)
;; (setq-default truncate-lines t)
#+end_src
2023-02-17 11:40:28 +01:00
** Dired - vue des dossiers et fichiers dans Emacs
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(global-set-key (kbd "C-x C-d") 'dired)
;; (global-set-key (kbd "C-x C-j") 'dired-jump)
;; ;; Open dired folders in same buffer
;; (put 'dired-find-alternate-file 'disabled nil)
;; ;; Sort Dired buffers
;; (setq dired-listing-switches "-agho --group-directories-first")
;; ;; Move deleted files to trash
;; (setq delete-by-moving-to-trash t)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
*** Icones dans dired
#+begin_src emacs-lisp
;; (use-package all-the-icons-dired)
;; (use-package dired-icon)
;; (setq dired-listing-switches "-a --group-directories-first --time-style=long-iso")
;; (setq dired-icon-alist '(("\\.txt$" . "text")
;; ("\\.pdf$" . "pdf")
;; ("\\.png$" . "image")
;; ("\\.jpg$" . "image")
;; ("\\.gif$" . "image")
;; ("\\.mp3$" . "audio")
;; ("\\.mp4$" . "video")))
;; (add-hook 'dired-mode-hook 'dired-icons-mode)
2023-02-17 11:40:28 +01:00
#+end_src
2024-03-17 10:18:22 +01:00
*** thumbnails d'images et de vidéos dans dired
#+begin_src emacs-lisp
;; (use-package dired-thumbnail)
;; (setq dired-listing-switches "-a --group-directories-first --time-style=long-iso")
;; (add-hook 'dired-mode-hook 'dired-thumbnail-mode)
;; (setq dired-thumbnail-size 64)
;; (setq dired-thumbnail-quality 75)
#+end_src
2023-02-17 11:40:28 +01:00
*** Filetags [[id:aa8865c0-53d7-444f-9119-4cfce73c27d1][tags sur noms de fichiers]] dans Dired
2024-03-17 10:18:22 +01:00
Demande l'installation du paquet pip3 filetags
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(defun my-dired-filetags ()
"Run \"filetags\" on current or marked files"
(interactive)
(let* ((marked-files (f-uniquify (dired-get-marked-files)))) ;; apply to single file or marked files
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; --disable-server → provides a blocking terminal window (instead of a non-blocking one which swallows the revert-buffer afterward)
(dired-do-shell-command "xfce4-terminal --disable-server --geometry=100x20+330+5 --hide-menubar -x ~/.local/bin/filetags --interactive *" nil marked-files)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
)
(revert-buffer nil t t) ;; refresh listing of files
)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(define-key dired-mode-map (kbd "M-t") 'my-dired-filetags)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Best default settings
[[https://systemcrafters.net/emacs-from-scratch/the-best-default-settings][The 6 Emacs Settings Every User Should Consider - System Crafters]]
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; Revert buffers when the underlying file has changed
(global-auto-revert-mode 1)
;; Revert Dired and other buffers
(setq global-auto-revert-non-file-buffers t)
;; remember the files you edited most recently
(recentf-mode 1)
;; Save what you enter into minibuffer prompts
(setq history-length 25)
(savehist-mode 1)
;; Remember and restore the last cursor location of opened files
(save-place-mode 1)
;; Don't pop up UI dialogs when prompting
(setq use-dialog-box nil)
#+end_src
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
** Accès aux fichiers courants
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:16]
:END:
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
*** Accéder à la config
#+begin_src emacs-lisp
(defun tk/switch-to-config-buffer ()
"Switch to the current session's tasks.org buffer."
(interactive)
(switch-to-buffer "config.org"))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "C-x c o") 'tk/switch-to-config-buffer)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
*** Accéder aux tâches
#+begin_src emacs-lisp
(defun tk/switch-to-tasks-buffer ()
"Switch to the current session's tasks.org buffer."
(interactive)
(switch-to-buffer "tasks.org"))
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
(global-set-key (kbd "C-x C-t") 'tk/switch-to-tasks-buffer)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
**** Fichiers récents
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
;; see recent files
(use-package recentf
:config
(add-to-list 'recentf-exclude "\\elpa")
(add-to-list 'recentf-exclude "private/tmp")
(recentf-mode))
;; recent files
(setq recentf-max-menu-items 25)
(setq recentf-max-saved-items 25)
2023-02-17 11:40:28 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-02-17 11:40:28 +01:00
** Export d'un site web hugo
2024-03-17 10:18:22 +01:00
:LOGBOOK:
- Refiled on [2023-02-03 ven. 23:22]
- Refiled on [2023-02-03 ven. 23:14]
:END:
2023-01-08 10:54:14 +01:00
[[id:8e60dc99-ae78-4f57-8bed-d054640d6b61][orgroam]]
http://blog.sidhartharya.com/exporting-org-roam-notes-to-hugo/
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
;; (use-package ox-hugo
;; :ensure t ;Auto-install the package from Melpa
;; :pin melpa ;`package-archives' should already have ("melpa" . "https://melpa.org/packages/")
;; :after ox)
;; (defun org-hugo--tag-processing-fn-roam-tags(tag-list info)
;; "Process org roam tags for org hugo"
;; (if (org-roam--org-roam-file-p)
;; (append tag-list
;; '("braindump")
;; (mapcar #'downcase (org-roam--extract-tags)))
;; (mapcar #'downcase tag-list)
;; ))
;; (add-to-list 'org-hugo-tag-processing-functions 'org-hugo--tag-processing-fn-roam-tags)
;; ;; backlinks
;; (defun org-hugo--org-roam-backlinks (backend)
;; (when (equal backend 'hugo)
;; (when (org-roam--org-roam-file-p)
;; (beginning-of-buffer)
;; (replace-string "{" "")
;; (beginning-of-buffer)
;; (replace-string "}" "")
;; (end-of-buffer)
;; (org-roam-buffer--insert-backlinks))))
;; (add-hook 'org-export-before-processing-hook #'org-hugo--org-roam-backlinks)
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
** Cacher les logbook par défaut
:LOGBOOK:
- Refiled on [2023-10-26 jeu. 22:06]
:END:
#+begin_src emacs-lisp
;; hide logbooks by default
(setq org-logbook-hide-drawer t)
#+end_src
** prévisions météo dans les 3 prochains jours
#+begin_src emacs-lisp
;; (use-package org-weather)
;; (setq org-agenda-custom-commands
;; '(("o" "Oh le beau temps" agenda ""
;; ((org-agenda-ndays 3)
;; (org-agenda-category "Weather")
;; (org-agenda-files '("~/Nextcloud/textes/orgmode/incoming_inbox.org"))
;; (org-agenda-text-search "Paris")))))
#+end_src
** Recherche par nom de fichier
En utilisant deux fois shift.
#+begin_src emacs-lisp
;; (defun my-find-file-by-name ()
;; "Search for a file by name in the current directory and subdirectories."
;; (interactive)
;; (let ((filename (read-string "Enter filename: ")))
;; (dired-do-shell-command (format "find %s -type f -iname '%s'" default-directory filename))))
;; (define-key global-map [(shift shift)] 'my-find-file-by-name)
#+end_src
** Développement IDE
#+begin_src emacs-lisp
(use-package lsp-mode
:commands (lsp lsp-deferred)
:init
(setq lsp-keymap-prefix "C-l")
:config
(lsp-enable-which-key-integration t)
)
(use-package typescript-mode
:mode "\\.ts\\'"
:hook (typescript-mode . lsp-deferred)
)
(use-package lsp-treemacs
)
(use-package lsp-ivy
)
#+end_src
** Clean des espaces et lignes doubles
#+begin_src emacs-lisp
(defun replace-multiple-whitespaces ()
"Replace sequences of one or more whitespace characters with a single space, also replacing double newlines."
(interactive)
(save-excursion
(goto-beginning-of-buffer)
(while (re-search-forward "[ \t\n]+\\>" nil t)
(replace-match " "))
(while (re-search-forward "\n+\n" nil t)
(replace-match "\n"))))
(defun capitalize-org-headings ()
"Capitalize the first letter of sentences in Org headings while preserving case for proper names and words already capitalized."
(interactive)
(save-excursion
(let ((case-fold-search nil)
(current-heading "")
(end-of-sentence (concat "[[:alpha:][:space:]]\\|$")))
(org-map-entries
(lambda ()
(setq current-heading (downcase (org-get-heading 'no-tags)))
(beginning-of-line)
(while (re-search-forward end-of-sentence nil t)
(backward-char)
(cond
;; Capitalize the first letter after punctuation marks except colons
((looking-back ":") nil)
((memq (char-after) '(?. ! ?…))
(delete-region (- (point) 2) (point)))
((not (looking-back "^[[:upper:]])")
(capitalize-word))))))))
(defadvice write-file-functions (before clean-whitespace activate compile)
"Run `replace-multiple-whitespaces' before writing the buffer to disk."
(when (eq major-mode 'fundamental-mode) ; Only apply to plain text files
(replace-multiple-whitespaces)))
(defun ensure-correct-org-headings ()
"Make sure Org headings start with a properly capitalized first letter."
(when (eq major-mode 'org-mode)
(capitalize-org-headings)))
(add-hook 'find-file-hook 'ensure-correct-org-headings)
#+end_src
2023-02-17 11:40:28 +01:00
** Template vierge
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+end_src
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
** cacher les logbook
:LOGBOOK:
- Refiled on [2024-01-01 lun. 21:26]
:END:
2023-01-08 10:54:14 +01:00
2024-03-17 10:18:22 +01:00
#+begin_src emacs-lisp
(setq org-logbook-hide-drawer t)
#+end_src
2023-01-08 10:54:14 +01:00
* Have fun!
2024-03-17 10:18:22 +01:00
merci!
https://cipherbliss.com
2023-01-08 10:54:14 +01:00
- TyKayn