Skip to content

Instantly share code, notes, and snippets.

@stammw
Last active October 5, 2020 14:30
Show Gist options
  • Save stammw/803e23b4e13c82373127ebe7fa161228 to your computer and use it in GitHub Desktop.
Save stammw/803e23b4e13c82373127ebe7fa161228 to your computer and use it in GitHub Desktop.
Doom emacs conf
;;; .doom.d/config.el -*- lexical-binding: t; -*-
(setq user-full-name "Jean-Christophe BEGUE")
(setq user-mail-address "111111111111111111")
;; Start maximized
(add-to-list 'default-frame-alist '(fullscreen . maximized))
;; Hide title bar and other decorations
(set-frame-parameter nil 'undecorated t)
;; Apparence
(load-theme 'doom-tomorrow-night t)
(setq display-line-numbers-type nil)
(setq doom-font "SauceCodePro Nerd Font Mono:pixelsize=15:foundry=ADBO:weight=semi-bold:slant=normal:width=normal:spacing=100:scalable=true")
(after! projectile
(dolist (item '(".cargo" ".mypy_cache"))
(add-to-list 'projectile-globally-ignored-directories item)))
(after! forge
(add-to-list 'forge-alist '("1111111111111" "11111111111111111111" "1111111111111" forge-gitlab-repository)))
;; (add-hook! 'prog-mode #'rainbow-delimiters-mode)
;; Always compile from project root, and save all files
(defun save-all-and-compile ()
"Automate compile workflow."
(interactive)
(save-some-buffers 1)
(if (get-buffer-process "*compilation*")
(kill-compilation))
(projectile-compile-project 'projectile-project-compilation-cmd))
(defun save-all-and-recompile ()
"Automate compile workflow."
(interactive)
(save-some-buffers 1)
(if (get-buffer-process "*compilation*")
(kill-compilation))
(recompile))
(defun rustic-save-all-and-compile ()
"Automate compile workflow."
(interactive)
(save-some-buffers 1)
(if (get-buffer-process "*compilation*")
(kill-compilation))
(rustic-compile))
(defun rustic-save-all-and-recompile ()
"Automate compile workflow."
(interactive)
(save-some-buffers 1)
(if (get-buffer-process "*compilation*")
(kill-compilation))
(rustic-recompile))
(after! evil-escape
(evil-escape-mode 1)
(setq evil-escape-key-sequence "jk")
(setq evil-escape-unordered-key-sequence t)
(setq evil-escape-excluded-major-modes (list 'magit-status-mode 'magit-refs-mode 'magit-log-mode)))
(add-hook! org-mode (org-bullets-mode 1))
(after! org-journal
(setq org-journal-file-type 'weekly)
(setq org-journal-dir "/home/AAAAA/Documents/Journal/weeks/")
(setq org-journal-file-format "%Y%m-%W.org"))
(after! lsp-mode
(setq lsp-signature-auto-activate nil))
;; Lang C / C++
(setq-default ff-search-directories '("." "../src" "../include" "../include/*"))
(add-hook 'cc-mode-hook #'+format|disable-on-save)
;; Documentation
(add-hook! adoc-mode
(ispell-change-dictionary "fr")
(add-to-list 'auto-mode-alist '("\\.adoc" . adoc-mode))
(flyspell-mode t))
(setq rustic-lsp-server 'rust-analyzer)
(add-hook! rustic-mode
(rainbow-delimiters-mode 1))
(map!
;; Window Movements
"M-h" #'evil-window-left
"M-j" #'evil-window-down
"M-k" #'evil-window-up
"M-l" #'evil-window-right
:nv "C-h" #'beginning-of-line-text
:nv "C-j" #'(lambda () (interactive) (next-line 5))
:nv "C-k" #'(lambda () (interactive) (previous-line 5))
:nv "C-l" #'end-of-line
:m "<f6>" #'save-all-and-compile
:m "<f5>" #'save-all-and-recompile
:i "<f5>" #'(lambda () (interactive) (evil-escape) (save-all-and-recompile))
:i "<f5>" #'(lambda () (interactive) (evil-escape) (save-all-and-compile))
(:map compilation-mode-map
:nv "h" #'evil-backward-char)
(:after evil-org
:map evil-org-mode-map
:n "M-l" #'evil-window-right
:n "M-h" #'evil-window-left
:v "M-h" #'outline-demote
:v "M-h" #'outline-promote)
(:map c-mode-map
:m "gh" #'ff-find-other-file)
(:after rustic
:map rustic-mode-map
:m "<f6>" #'rustic-save-all-and-compile
:m "<f5>" #'rustic-save-all-and-recompile
:i "<f5>" #'(lambda () (interactive) (evil-escape) (rustic-save-all-and-recompile))
:i "<f5>" #'(lambda () (interactive) (evil-escape) (rustic-save-all-and-compile)))
:leader
:desc "Find file in project" "SPC" #'helm-projectile
:desc "Find file in project" "k" #'+popup/raise
(:prefix "TAB"
:desc "Next workspace" "l" #'+workspace/switch-right
:desc "Previous workspace" "h" #'+workspace/switch-left)
(:prefix "t"
:desc "Treemacs" "t" #'treemacs-select-window)
(:prefix "o"
:desc "Toogle treemacs" "p" #'+treemacs/toggle)
(:prefix "w"
:desc "Ace window" "w" #'ace-window
:desc "Ace swap window" "S" #'ace-swap-window)
(:prefix "c"
:desc "Format buffer" "f" #'lsp-format-buffer
:desc "Toggle line comment" "l" #'evilnc-comment-or-uncomment-lines
:desc "Comment block" "b" #'comment-region
:desc "Copy and comment lines" "y" #'evilnc-copy-and-comment-lines))
;;; init.el -*- lexical-binding: t; -*-
;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install'
;; will do this for you). The `doom!' block below controls what modules are
;; enabled and in what order they will be loaded. Remember to run 'doom refresh'
;; after modifying it.
;;
;; More information about these modules (and what flags they support) can be
;; found in modules/README.org.
(doom! :input
;;chinese
;;japanese
:completion
company ; the ultimate code completion backend
(helm +fuzzy) ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
;;ivy ; a search engine for love and life
:ui
deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
indent-guides ; highlighted indent columns
modeline ; snazzy, Atom-inspired modeline, plus API
nav-flash ; blink the current line after jumping
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
;;(popup ; tame sudden yet inevitable temporary windows
;; +all ; catch all popups that start with an asterix
;; +default) ; default popup rules
;;(pretty-code +fira) ; replace bits of code with pretty symbols
;;tabs ; an tab bar for Emacs
treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
:editor
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;lispy ; vim for lisp, for people who dont like vim
;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
vc ; version-control and Emacs, sitting in a tree
:term
;;eshell ; a consistent, cross-platform shell (WIP)
;;shell ; a terminal REPL for Emacs
;;term ; terminals in Emacs
;;vterm ; another terminals in Emacs
:tools
ansible
;;debugger ; FIXME stepping through code, to help you add bugs
;;direnv
docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
eval ; run code, run (also, repls)
flycheck ; tasing you for every semicolon you forget
flyspell ; tasing you for misspelling mispelling
;;gist ; interacting with github gists
(lookup ; helps you navigate your code and documentation
+docsets) ; ...or in Dash docsets locally
lsp
;;macos ; MacOS-specific commands
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;;rgb ; creating color strings
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
;;wakatime
:lang
;;agda ; types of types of types of types...
;;assembly ; assembly for fun or debugging
(cc
+lsp) ; C/C++/Obj-C madness
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;erlang ; an elegant language for a more civilized age
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;ess ; emacs speaks statistics
;;fsharp ; ML stands for Microsoft's Language
;;go ; the hipster dialect
;;(haskell +intero) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ;
(java +lsp) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
;;lean
;;ledger ; an accounting system in Emacs
lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
(org ; organize your plain life in plain text
+dragndrop ; drag & drop files/images into org buffers
+ipython ; ipython/jupyter support for babel
+pandoc ; export-with-pandoc support
+present ; using org-mode for presentations
+journal
+pomodoro)
;;perl ; write code no one else can comprehend
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
(python
+pyenv
+lsp) ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;rest ; Emacs as a REST client
;;ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;scheme ; a fully conniving family of lisps
(sh +lsp) ; she sells {ba,z,fi}sh shells on the C xor
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
web ; the tubes
;;vala ; GObjective-C
:email
;;(mu4e +gmail) ; WIP
;;notmuch ; WIP
;;(wanderlust +gmail) ; WIP
;; Applications are complex and opinionated modules that transform Emacs
;; toward a specific purpose. They may have additional dependencies and
;; should be loaded late.
:app
;;calendar
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought
;;(write ; emacs for writers (fiction, notes, papers, etc.)
;; +wordnut ; wordnet (wn) search
;; +langtool) ; a proofreader (grammar/style check) for Emacs
:config
;; For literate config users. This will tangle+compile a config.org
;; literate config in your `doom-private-dir' whenever it changes.
;;literate
;; The default module sets reasonable defaults for Emacs. It also
;; provides a Spacemacs-inspired keybinding scheme and a smartparens
;; config. Use it as a reference for your own modules.
(default +bindings +smartparens))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
(quote
("0fe9f7a04e7a00ad99ecacc875c8ccb4153204e29d3e57e9669691e6ed8340ce" "70cc30fd9d27a8d0d3ae82974ac2c409fd2cd5746470e2246778c6bec2d4857c" "2d1fe7c9007a5b76cea4395b0fc664d0c1cfd34bb4f1860300347cdad67fb2f9" default)))
'(send-mail-function (quote smtpmail-send-it)))
;; -*- no-byte-compile: t; -*-
;;; .doom.d/packages.el
;;; Examples:
(package! evil-snipe :disable t)
(package! evil-escape)
(package! adoc-mode)
(package! yasnippet-snippets)
(package! python-black)
(package! groovy-mode)
(package! rg)
(package! jinja2-mode)
(package! string-inflection)
(package! jenkinsfile-mode :recipe
(:host github
:repo "john2x/jenkinsfile-mode"
:branch "master"))
(package! org-bullets)
(package! meson-mode)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment