;; Keyboard-centric user interface (setq inhibit-startup-message t) (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) (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) (column-number-mode 't) ; show current column in status bar (set-fringe-mode 10) ;;;; Indent 4 spaces by default. Use the "BSD" style for C-like languages. ;;(setq c-default-style ;; (quote ((java-mode . "java") ;; (awk-mode . "awk") ;; (other . "bsd"))) ;; c-basic-offset 4) ;; Use 4 spaces for one tab visually. (setq tab-width 4) (show-paren-mode t) ; highlight matching open and close parentheses (global-hl-line-mode) ; highlight current line (global-visual-line-mode t) ; wrap long lines (setq split-window-preferred-function 'visual-fill-column-split-window-sensibly) ; wrap at window boundary (global-whitespace-mode) ; enable whitespace handling by default (setq whitespace-style ; see (apropos 'whitespace-style) '(face ; viz via faces trailing ; trailing blanks visualized lines-tail ; lines beyond whitespace-line-column visualized space-before-tab space-after-tab newline ; lines with only blanks visualized indentation ; spaces used for indent when config wants tabs empty ; empty lines at beginning or end or buffer ) whitespace-line-column 100) ; column at which whitespace-mode says the line is too long ;;(set-face-attribute 'default nil :font "JetBrains Mono" :height 150) ;; themes (use-package doom-themes :init (load-theme 'doom-nord t) :init (doom-themes-org-config)) (setq disabled-command-function nil) (setq inhibit-startup-screen t) (setq visible-bell t) ;; Only y/n answers (defalias 'yes-or-no-p 'y-or-n-p) ;; Backup (setq version-control t ;; Use version numbers for backups. kept-new-versions 10 ;; Number of newest versions to keep. kept-old-versions 0 ;; Number of oldest versions to keep. delete-old-versions t ;; Don't ask to delete excess backup versions. backup-by-copying t) ;; Copy all files, don't rename them. (setq vc-make-backup-files t) (setq backup-directory-alist '(("" . "~/.emacs.d/backup"))) (defvar emacs-autosave-directory (concat user-emacs-directory "autosaves/") "This variable dictates where to put auto saves. It is set to a directory called autosaves located wherever your .emacs.d/ is located.") ;; Sets all files to be backed up and auto saved in a single directory. (setq backup-directory-alist `((".*" . ,emacs-autosave-directory)) auto-save-file-name-transforms `((".*" ,emacs-autosave-directory t))) (setq calendar-week-start-day 1) (setq user-full-name "Alexandre LUCAZEAU") (setq user-mail-address "alexandre@dri.fr") (setq mail-user-agent 'gnus-user-agent) ;;(setq gnus-select-method ;; '(nnimap "dri" ;; (nnimap-address "dri.fr") ;; (nnimap-server-port 143) ;; (nnimap-stream starttls) ;; (nnimap-authinfo-file "~/.authinfo.gpg"))) ;; ;;(setq gnus-message-archive-group "nnimap+dri:Sent") ;;(setq gnus-gcc-mark-as-read t) ;;(setq nnmail-expiry-target "nnimap+dri:Trash") ;;(setq nnmail-expiry-wait 'immediate) ;;(setq send-mail-function 'smtpmail-send-it) ;;(setq message-send-mail-function 'smtpmail-send-it) ;;(setq smtpmail-smtp-server "dri.fr") ;;(setq smtpmail-smtp-service 587) ;;(setq message-citation-line-function 'message-insert-formatted-citation-line) ;;(setq message-citation-line-format "On %d/%m/%Y %H:%M, %N wrote:") ;;(defun default-web-indent-mode () ;; (setq indent-tabs-mode nil) ;; (setq tab-width 2) ;; (setq web-mode-markup-indent-offset 2) ;; (setq web-mode-css-indent-offset 2) ;; (setq web-mode-code-indent-offset 2)) (use-package direnv :config (direnv-mode)) ;; (use-package lsp-mode ;; :config (setq lsp-keymap-prefix "C-c l") ;; :config (setq lsp-signature-auto-activate t) ;; :config (setq lsp-enable-on-type-formatting nil) ;; :config (lsp-enable-which-key-integration t) ;; :hook (lsp-mode . electric-pair-mode)) ;;(use-package web-mode ;; :mode ("\\.json\\'" . web-mode) ;; :mode ("\\.html?\\'" . web-mode) ;; :mode ("\\.s?css\\'" . web-mode) ;; :mode ("\\.[jt]sx?\\'" . web-mode) ;; :hook (web-mode . lsp-deferred) ;; :hook (web-mode . default-web-indent-mode)) (use-package nix-mode :mode ("\\.nix\\'" . nix-mode) :hook (nix-mode . lsp-deferred)) ;;(use-package rust-mode ;; :hook (rust-mode . lsp-deferred) ;; :config (setq rust-format-on-save t)) (use-package company :config (setq company-idle-delay 0.25) :config (setq company-minimum-prefix-length 1) :bind (:map company-active-map ("" . company-select-next)) :bind (:map company-active-map ("" . company-select-previous))) (use-package yasnippet :hook (lsp-mode . yas-minor-mode) :hook (yas-minor-mode . yas-reload-all) :config (setq yas-snippet-dirs '("/etc/nixos/programs/emacs/snippets"))) ;;(use-package prettier-js ;; :after (web-mode) ;; :hook (web-mode . prettier-js-mode)) ;; ;;(use-package smartparens ;; :bind ("C-c s s" . sp-splice-sexp) ;; :bind ("C-c s r" . sp-rewrap-sexp)) ;; ;;(use-package bbdb ;; :init (bbdb-initialize 'gnus 'message) ;; :init (bbdb-mua-auto-update-init 'gnus 'message) ;; :config (setq bbdb-file "~/Nextcloud/PRIVE/13_Org/contacts/bbdb") ;; :config (setq bbdb-mua-auto-update-p 'create)) ;;(use-package org ;; (setq org-startup-folded t) ;; (setq org-refile-use-outline-path 'file) ;; (setq org-refile-targets ;; '(("~/Nextcloud/PRIVE/13_Org/DRI.org" :maxlevel . 3) ;; ("~/Nextcloud/PRIVE/13_Org/perso.org" :level . 1) ;; ("~/Nextcloud/PRIVE/13_Org/pizajoffre.org" :level . 1))) ;; (setq org-todo-keywords ;; '((sequence "TODO(t)" "PENDING(p)" "|" "CANCELLED(c)" "DONE(d)"))) ;; (setq org-todo-keyword-faces ;; '(("TODO" . (:foreground "#c678dd" :weight bold)) ;; ("PENDING" . (:background "#3f444a" :foreground "#ff6c6b" :weight bold)))) ;; (setq org-capture-templates ;; '(("i" "Inbox" entry (file "~/Nextcloud/PRIVE/13_Org/DRI.org") "* TODO %i%?") ;; ("a" "Agenda" entry (file "~/Nextcloud/PRIVE/13_Org/agenda-DRI.org") "* TODO %i%?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))"))) ;; (setq org-agenda-custom-commands ;; '(("t" "Today" tags-todo "+LEVEL=1+CATEGORY=\"tasks\"|+SCHEDULED<=\"\"|+DEADLINE<=\"\"")))) ;; (use-package org-caldav :ensure t :config (setq org-caldav-url "https://next20.produhost.net/remote.php/dav/calendars/alexandre") (setq org-caldav-calendars '((:calendar-id "alexandre-dri" :files ("~/Nextcloud/PRIVE/13_Org/agenda.org") :inbox "~/Nextcloud/PRIVE/13_Org/agenda-DRI.org") ) ) (setq org-caldav-delete-org-entries 'never) (setq org-caldav-delete-calenda-entries 'never) (setq org-icalendar-timezone "Europe/Paris") ) (use-package magit) (setq magit-fetch-modules-jobs 16); fetch 16 modules in parallel (use-package ledger-mode) (use-package projectile :init (projectile-global-mode) :config (setq projectile-enable-caching nil) :config (setq projectile-project-search-path (cddr (directory-files "~/code" t))) :custom (projectile-completion-system 'ivy) :bind-keymap ("C-c p" . projectile-command-map)) (use-package counsel-projectile :after (counsel projectile) :init (counsel-projectile-mode)) (require 'yasnippet) (yas-global-mode 1) (use-package which-key :init (which-key-mode) :config (setq which-key-idle-delay 0.5)) (setq TeX-PDF-mode t) (require 'mu4e) ;;store org-mode links to messages (require 'org-mu4e) ;;store link to message if in header view, not to header query (setq org-mu4e-link-query-in-headers-mode nil) (setq mail-user-agent 'mu4e-user-agent) (setq org-mu4e-link-query-in-headers-mode t) (setq mu4e-maildir (expand-file-name "~/Maildir/dri/INBOX")) (setq mu4e-get-mail-command "mbsync -a") (setq mu4e-sent-folder "/Sent") (setq mu4e-drafts-folder "/Drafts") (setq mu4e-trash-folder "/Junk") (setq mu4e-refile-folder "/INBOX/archives") (setq mu4e-context-policy 'pick-first) (setq mu4e-change-filenames-when-moving t) (setq starttls-use-gnutls t) (setq message-send-mail-function 'smtpmail-send-it) (setq mu4e-update-interval 300) (setq mu4e-use-fancy-chars t) (setq mu4e-view-show-addresses t) (setq mu4e-headers-show-threads t) (setq mu4e-headers-skip-duplicates t) (setq mail-user-agent 'mu4e-user-agent) (defvaralias 'mu4e-compose-signature 'message-signature) (setq-default mu4e-save-multiple-attachments-without-asking t) (setq-default mu4e-view-show-addresses t) (setq-default mu4e-confirm-quit nil) (setq-default mu4e-hide-index-messages t) (setq-default mu4e-index-update-in-background t) (setq mu4e-compose-in-new-frame nil) ;;rename files when moving ;;NEEDED FOR MBSYNC (setq mu4e-change-filenames-when-moving t) (setq mu4e-html2text-command "iconv -c -t utf-8 | ${pkgs.pandoc}/bin/pandoc -f html -t plain") (setq mu4e-view-show-images t) (when (fboundp 'imagemagick-register-types) (imagemagick-register-types)) (setq message-kill-buffer-on-exit t) (require 'org-msg) (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t" org-msg-startup "hidestars indent inlineimages" org-msg-greeting-fmt "\nHi%s,\n\n" org-msg-recipient-names '(("alexandre@dri.fr" . "Alexandre")) org-msg-greeting-name-limit 3 org-msg-default-alternatives '((new . (text html)) (reply-to-html . (text html)) (reply-to-text . (text))) org-msg-convert-citation t org-msg-signature " Regards, #+begin_signature -- *Alexandre /One Emacs to rule them all/ #+end_signature") (org-msg-mode) (autoload 'markdown-mode "markdown-mode" "Major mode for editing Markdown files" t) (add-to-list 'auto-mode-alist '("\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'" . markdown-mode)) (autoload 'gfm-mode "markdown-mode" "Major mode for editing GitHub Flavored Markdown files" t) (add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode)) ;; Org-Roam basic configuration (setq org-directory (concat (getenv "HOME") "/Nextcloud/PRIVE/13_Org")) (use-package org-roam :after org :init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade :custom (org-roam-directory (file-truename org-directory)) :config (org-roam-setup) :bind (("C-c n f" . org-roam-node-find) ("C-c n r" . org-roam-node-random) (:map org-mode-map (("C-c n i" . org-roam-node-insert) ("C-c n o" . org-id-get-create) ("C-c n t" . org-roam-tag-add) ("C-c n a" . org-roam-alias-add) ("C-c n l" . org-roam-buffer-toggle))))) ;; org-mode (require 'org) (require 'remember) (require 'org-mouse) (setq org-startup-folded t org-pretty-entities t org-hide-emphasis-markers t org-startup-with-inline-images t org-image-actual-width '(300)) ;; files with ".org" open in org-mode (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (setq org-agenda-files '("~/Nextcloud/PRIVE/13_Org/agenda-DRI.org" "~/Nextcloud/PRIVE/13_Org/perso.org")) ;; one file org (defvar org-gtd-file "~/Nextcloud/PRIVE/13_Org/DRI.org") ;; Open DRI.org when I hit C-c g (defun gtd () "Open the GTD file." (interactive) (find-file org-gtd-file)) ;; keybinding (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-ca" 'org-agenda) (global-set-key "\C-cr" 'org-remember) (global-set-key "\C-cg" 'gtd) ;; This seems like a good basic set of keywords to start out with: (setq org-todo-keywords '((type "TODO" "SCHEDULED" "NEXT" "WAITING" "DONE"))) (setf org-todo-keyword-faces '(("NEXT" . (:foreground "yellow" :background "red" :bold t :weight bold)) ("TODO" . (:foreground "cyan" :background "steelblue" :bold t :weight bold)) ("WAITING" . (:foreground "yellow" :background "magenta2" :bold t :weight bold)) ("DONE" . (:foreground "gray50" :background "gray30")))) ;; tags (setq org-tag-alist '(("@devis" . ?w) ("@projet" . ?h) ("@client" . ?h) ("@prospect" . ?h) ("interne" . ?l))) (setq org-tag-faces '( ("DEVIS" . (:foreground "OrangeRed" :weight bold)) ("@projet" . (:foreground "IndianRed1" :weight bold)) ("interne" . (:foreground "LimeGreen" :weight bold)) ) ) ;; Remember support. This creates several files: ;; ;; ~/todo.org Where remembered TODO's are stored. ;; ~/journal.org Timestamped journal entries. ;; ~/remember.org All other notes ;; and a keybinding of "C-c r" for making quick notes from any buffer. ;; These bits of Remembered information must eventually be reviewed ;; and filed somewhere (perhaps in gtd.org, or in a project-specific ;; org file.) The out-of-sight, out-of-mind rule applies here---if I ;; don't review these auxiliary org-files, I'll probably forget what's ;; in them. (setq org-reverse-note-order t) ;; note at beginning of file by default. (setq org-default-notes-file "~/remember.org") (setq remember-annotation-functions '(org-remember-annotation)) (setq remember-handler-functions '(org-remember-handler)) (add-hook 'remember-mode-hook 'org-remember-apply-template) (setq org-remember-templates '((?t "* TODO %?\n %i\n %a" "~/Nextcloud/PRIVE/13_Org/todo.org") (?j "* %U %?\n\n %i\n %a" "~/Nextcloud/PRIVE/13_Org/journal.org") (?i "* %^{Title}\n %i\n %a" "~/Nextcloud/PRIVE/13_Org/remember.org" "New Ideas"))) (global-set-key "\C-cr" 'org-remember) (global-set-key [(f12)] 'org-remember) ;; widen category field a little (setq org-agenda-prefix-format " %-17:c%?-12t% s") ;; https://gist.github.com/dandrews/4644693 (setq org-ellipsis "⤵")