You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

986 lines
24KB

  1. ;;; Use-package
  2. ;; Use package and melpa as source
  3. (require 'package)
  4. (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
  5. (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
  6. (setq package-enable-at-startup nil)
  7. (package-initialize)
  8. ;; use-package
  9. (setq-default
  10. use-package-always-ensure t
  11. use-package-expand-minimally t
  12. use-package-verbose nil
  13. use-package-enable-imenu-support t)
  14. (unless (package-installed-p 'use-package)
  15. (package-refresh-contents)
  16. (package-install 'use-package))
  17. (eval-when-compile (require 'use-package))
  18. ;;; Custom and options
  19. ;;;; Custom file
  20. (setq custom-file "~/dotfiles/.emacs.d/custom.el")
  21. (load custom-file)
  22. ;;;; Options
  23. ;;;;; Mode-line
  24. (setq
  25. ;; Mnemonics for eol
  26. eol-mnemonic-unix "(Unix)"
  27. ;; Display total size of buffer and column index
  28. size-indication-mode t
  29. ;; Column numbers
  30. column-number-mode t
  31. ;; Column numbers from 1
  32. column-number-indicator-zero-based nil)
  33. ;;;;; Backup
  34. (setq
  35. ;; delete excess backup versions silently
  36. delete-old-versions t
  37. ;; make backup files
  38. make-backup-files t
  39. ;; Use version control on backups
  40. version-control t
  41. ;; don't make backups file when in version controlled dir
  42. vc-make-backup-files nil
  43. ;; which directory to put backups file
  44. backup-directory-alist `(("." . "~/.emacs.d/backups")))
  45. ;;;;; Autosave
  46. (setq
  47. ;; Enable
  48. auto-save-default t
  49. ;; Set interval and timeout
  50. auto-save-interval 300
  51. auto-save-timeout 30
  52. ;; Set directory for auto-saves
  53. auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save/" t)))
  54. ;;;;; Scrolling
  55. (setq
  56. scroll-margin 10
  57. hscroll-margin 10
  58. scroll-conservatively 100000
  59. scroll-preserve-screen-position 1
  60. hscroll-step 1
  61. maximum-scroll-margin 0.5)
  62. ;;;;; Window placement
  63. (setq
  64. display-buffer-alist
  65. `(("*R Dired"
  66. (display-buffer-reuse-window display-buffer-in-side-window)
  67. (side . right)
  68. (slot . -1)
  69. (window-width . 0.2)
  70. (reusable-frames . nil))
  71. ("*R:"
  72. (display-buffer-reuse-window display-buffer-at-bottom)
  73. (window-height . 0.3)
  74. (reusable-frames . nil))
  75. ("\\*Help\\[R"
  76. (display-buffer-reuse-window display-buffer-in-side-window)
  77. (side . right)
  78. (slot . 2)
  79. (window-width . 0.4)
  80. (reusable-frames . nil))
  81. ("*Help*"
  82. (display-buffer-reuse-window display-buffer-at-bottom)
  83. (slot . 1)
  84. (window-height . 0.3)
  85. (reusable-frames . nil))
  86. ("magit-diff"
  87. (display-buffer-reuse-window display-buffer-in-side-window)
  88. (side . left)
  89. (slot . 1)
  90. (window-width . 0.4)
  91. (reusable-frames . nil))
  92. ("magit"
  93. (display-buffer-reuse-window display-buffer-in-side-window)
  94. (side . left)
  95. (window-width . 0.4)
  96. (reusable-frames . nil))))
  97. ;;;;; Disable GUI
  98. (menu-bar-mode -1)
  99. (tool-bar-mode -1)
  100. (scroll-bar-mode -1)
  101. (blink-cursor-mode -1)
  102. (tooltip-mode -1)
  103. (setq
  104. inhibit-startup-screen t
  105. inhibit-startup-message t
  106. inhibit-startup-echo-area-message t)
  107. ;;;;; UTF8
  108. (setq
  109. coding-system-for-read 'utf-8
  110. coding-system-for-write 'utf-8)
  111. ;; Prefer UTF-8
  112. (prefer-coding-system 'utf-8)
  113. (set-default-coding-systems 'utf-8)
  114. (set-terminal-coding-system 'utf-8)
  115. (set-keyboard-coding-system 'utf-8)
  116. ;;;;; Line numbers
  117. ;; Show line numbers
  118. (global-display-line-numbers-mode t)
  119. ;; Show absolute line numbers in narrowed state
  120. (setq-default display-line-numbers-widen t)
  121. ;; No limit to line number displayed
  122. (setq line-number-display-limit nil)
  123. ;;;;; Set proxy at work
  124. (if (string-equal (system-name) "hegp")
  125. (setq url-proxy-services '(("no_proxy" . "127.0.0.1")
  126. ("http" . "proxym-inter.aphp.fr:8080")
  127. ("https" . "proxym-inter.aphp.fr:8080")))
  128. ())
  129. ;;;;; Misc
  130. (setq
  131. ;; Kill debug windows after use
  132. debugger-bury-or-kill 'kill
  133. ;; Set tramp terminal type
  134. tramp-terminal-type "tramp"
  135. ;; Scroll smoothly with mouse
  136. mouse-wheel-scroll-amount '(2 ((shift) . 1) ((control)))
  137. ;; Indent two spaces
  138. standard-indent 2
  139. ;; don't ask for confirmation when opening symlinked file
  140. vc-follow-symlinks t
  141. ;; silent bell when you make a mistake
  142. ring-bell-function 'ignore
  143. ;; Identity
  144. user-full-name "Maxime Wack"
  145. user-mail-address "maximewack@free.fr"
  146. ;; GC and file size limits
  147. gc-cons-threshold 50000000
  148. large-file-warning-threshold 100000000
  149. ;; Filename in title
  150. frame-title-format
  151. '((:eval (if (buffer-file-name)
  152. (abbreviate-file-name (buffer-file-name))
  153. "%b")))
  154. )
  155. (setq-default
  156. ;; Show empty lines at the end of the buffer
  157. indicate-empty-lines t
  158. ;; Spaces for indent
  159. tab-width 2
  160. ;; Don't use tabs in indentation
  161. indent-tabs-mode nil)
  162. ;; Set transparency
  163. (set-frame-parameter (selected-frame) 'alpha '(85 . 90))
  164. ;; Font
  165. (set-frame-font "Fira Code 10" nil t)
  166. ;; Replace yes/no with y/n
  167. (fset 'yes-or-no-p 'y-or-n-p)
  168. ;; Disable package-selected-packages
  169. (defun package--save-selected-packages (&rest opt) nil)
  170. ;;; Packages
  171. ;;;; Keys
  172. ;;;;; General
  173. (use-package general
  174. :demand
  175. :config
  176. (general-create-definer spcleader
  177. :states '(normal visual insert emacs)
  178. :prefix "SPC"
  179. :non-normal-prefix "C-S-SPC")
  180. ;;;;;; Spcleader
  181. (spcleader
  182. "RET" 'eval-defun
  183. "." 'eval-expression
  184. "k" '((lambda () (interactive) (kill-buffer nil)) :which-key "kill buffer")
  185. "K" 'kill-some-buffers
  186. "$" '((lambda () (interactive) (find-file "~/.emacs")) :which-key "open config")
  187. "#" '((lambda () (interactive) (load-file "~/.emacs")) :which-key "reload config")
  188. "l" 'reposition-window
  189. "W" '(count-words-region :which-key "word count")
  190. "w" 'toggle-truncate-lines)
  191. ;;;;;; Narrow
  192. (spcleader
  193. "n" '(:ignore t :which-key "Narrow")
  194. "nr" 'narrow-to-region
  195. "np" 'narrow-to-page
  196. "nf" 'narrow-to-defun
  197. "nc" 'polymode-toggle-chunk-narrowing
  198. "nw" 'widen))
  199. ;;;;; Hydra
  200. (use-package hydra)
  201. ;;;;; Evil
  202. ;;;;;; Evil
  203. (use-package evil
  204. :demand
  205. :config
  206. (defhydra hydra-window (:color red :timeout 1)
  207. "Windows"
  208. ("t" evil-window-left)
  209. ("T" evil-window-move-far-left)
  210. ("s" evil-window-down)
  211. ("S" evil-window-move-very-bottom)
  212. ("d" evil-window-up)
  213. ("D" evil-window-move-very-top)
  214. ("r" evil-window-right)
  215. ("R" evil-window-move-far-right)
  216. ("+" (evil-window-increase-height 4))
  217. ("-" (evil-window-decrease-height 4))
  218. ("/" (evil-window-decrease-width 4))
  219. ("*" (evil-window-increase-width 4))
  220. ("h" evil-window-split)
  221. ("v" evil-window-vsplit)
  222. ("c" evil-window-delete)
  223. ("o" delete-other-windows)
  224. ("é" nil "Cancel"))
  225. :general
  226. (:states 'visual
  227. "l" 'evil-delete
  228. "H" 'evil-change
  229. "J" 'evil-join)
  230. (:states '(visual normal motion emacs)
  231. "é" 'hydra-window/body)
  232. (:states '(normal motion)
  233. "t" 'evil-backward-char
  234. "s" 'evil-next-visual-line
  235. "d" 'evil-previous-visual-line
  236. "r" 'evil-forward-char
  237. "T" 'evil-window-top
  238. "S" 'evil-scroll-down
  239. "D" 'evil-scroll-up
  240. "R" 'evil-window-bottom
  241. "l" 'evil-delete
  242. "L" 'evil-delete-line
  243. "h" 'evil-replace
  244. "H" 'evil-replace-state
  245. "gs" 'evil-next-line
  246. "gd" 'evil-previous-line
  247. "M" 'evil-window-middle
  248. "j" 'evil-find-char-to
  249. ";" 'evil-repeat-find-char-reverse
  250. "," 'evil-repeat-find-char
  251. "C-a" 'evil-numbers/inc-at-pt
  252. "C-x" 'evil-numbers/dec-at-pt
  253. "C-s" 'evil-scroll-line-down
  254. "C-d" 'evil-scroll-line-up
  255. "C-o" 'evil-jump-backward)
  256. (:states 'insert
  257. "C-r" 'counsel-yank-pop
  258. "C-u" 'counsel-unicode-char)
  259. :config
  260. (evil-mode t)
  261. (setq evil-want-integration nil
  262. evil-want-keybinding nil
  263. evil-want-Y-yank-to-eol t
  264. ;; Colored cursors based on evil-state
  265. evil-emacs-state-cursor '("red" box)
  266. evil-normal-state-cursor '("green" box)
  267. evil-visual-state-cursor '("orange" box)
  268. evil-insert-state-cursor '("red" bar)
  269. evil-replace-state-cursor '("red" bar)
  270. evil-operator-state-cursor '("red" hollow)
  271. ;; use NORMAL mode/state EVERYWHERE by default
  272. evil-default-state 'normal
  273. evil-motion-state-modes nil
  274. evil-normal-state-modes nil
  275. evil-insert-state-modes nil
  276. ;; Use emacs state in these selected modes
  277. evil-emacs-state-modes nil
  278. ;; and don't let modes override the INSERT state (!)
  279. evil-overriding-maps nil
  280. evil-intercept-maps nil))
  281. ;;;;;; Evil-numbers
  282. (use-package evil-numbers)
  283. ;;;;;; Evil-escape
  284. (use-package evil-escape
  285. :config
  286. (evil-escape-mode t)
  287. (setq-default evil-escape-key-sequence "ii"
  288. evil-escape-delay 0.2))
  289. ;;;;;; Evil-commentary
  290. (use-package evil-commentary
  291. :demand
  292. :config
  293. (evil-commentary-mode t)
  294. :general
  295. (:states 'normal
  296. "gcc" 'evil-commentary-line))
  297. ;;;;;; Evil-surround
  298. (use-package evil-surround
  299. :config
  300. (global-evil-surround-mode))
  301. ;;;;;; Evil-lion
  302. (use-package evil-lion
  303. :general
  304. (spcleader
  305. "a" 'evil-lion-left
  306. "A" 'evil-lion-right))
  307. ;;;;; Which-key
  308. (use-package which-key
  309. :config
  310. (which-key-mode t)
  311. (setq which-key-allow-evil-operators t))
  312. ;;;; Basics
  313. ;;;;; Built-in
  314. ;;;;;; Package
  315. (use-package package
  316. :general
  317. (:keymaps 'package-menu-mode-map
  318. :states 'normal
  319. "q" 'quit-window))
  320. ;;;;;; Custom
  321. (use-package cus-edit
  322. :ensure nil
  323. :config
  324. (add-to-list 'evil-emacs-state-modes 'Custom-mode))
  325. ;;;;;; Ediff
  326. (use-package ediff
  327. :config
  328. (add-to-list 'evil-emacs-state-modes 'ediff-mode))
  329. ;;;;;; Debugger
  330. (use-package debug
  331. :demand
  332. :config
  333. (add-to-list 'evil-emacs-state-modes 'debugger-mode))
  334. ;;;;;; Paren
  335. (use-package paren
  336. :config
  337. (show-paren-mode t)
  338. (setq show-paren-delay 0))
  339. ;;;;;; Flyspell
  340. (use-package flyspell
  341. :hook (prog-mode . flyspell-prog-mode)
  342. :general
  343. (:states 'insert
  344. "C-s" 'flyspell-check-previous-highlighted-word)
  345. (spcleader
  346. "s" '(:ignore t :which-key "Flyspell")
  347. "ss" 'flyspell-goto-next-error
  348. "sd" 'flyspell-check-previous-highlighted-word
  349. "sc" 'ispell-word
  350. "sf" '((lambda () (interactive) (ispell-change-dictionary "francais") (flyspell-buffer)) :which-key "Switch to French")
  351. "sa" '((lambda () (interactive) (ispell-change-dictionary "american") (flyspell-buffer)) :which-key "Switch to American")
  352. ))
  353. ;;;;;; Tar-mode
  354. (use-package tar-mode
  355. :general
  356. (:keymaps 'tar-mode-map
  357. :states 'normal
  358. "RET" 'tar-extract-other-window))
  359. ;;;;;; Whitespace
  360. (use-package whitespace
  361. :config
  362. (setq whitespace-style
  363. '(face
  364. tabs
  365. spaces
  366. trailing
  367. empty
  368. space-mark
  369. tab-mark
  370. ))
  371. (global-whitespace-mode t)
  372. :hook (before-save . whitespace-cleanup))
  373. ;;;;;; Info
  374. (use-package info
  375. :general
  376. (:keymaps 'Info-mode-map
  377. :states 'normal
  378. "ð" 'Info-backward-node
  379. "ß" 'Info-forward-node
  380. "Þ" 'Info-up
  381. "þ" 'Info-up
  382. "q" 'Info-exit
  383. "ẞ" 'Info-next
  384. "Ð" 'Info-prev
  385. "gr" 'Info-history-forward
  386. "gt" 'Info-history-back
  387. "s" 'evil-scroll-line-down
  388. "d" 'evil-scroll-line-up))
  389. ;;;;;; Highlight line
  390. (use-package hl-line
  391. :config
  392. (global-hl-line-mode t)
  393. :custom-face
  394. (hl-line ((t (:background "gray10")))))
  395. ;;;;;; Simple
  396. (use-package simple
  397. :ensure nil
  398. :config
  399. (global-visual-line-mode t)
  400. :custom-face
  401. (italic ((t (:family "Fira Code Italic"
  402. :foundry "Fira Code Italic")))))
  403. ;;;;;; Revert
  404. (use-package autorevert
  405. :config
  406. (global-auto-revert-mode t))
  407. ;;;;;; Elisp
  408. (use-package elisp-mode
  409. :ensure nil
  410. :config
  411. ;; No size limit to output in elisp mode
  412. (setq eval-expression-print-length nil)
  413. :general
  414. (:keymaps 'emacs-lisp-mode-map
  415. :states 'normal
  416. "RET" 'eval-defun)
  417. (:keymaps 'emacs-lisp-mode-map
  418. :states 'visual
  419. "RET" '(lambda (start end)
  420. (interactive "r")
  421. (eval-region start end t))))
  422. ;;;;;; Help
  423. (use-package help-mode
  424. :ensure nil
  425. :general
  426. (spcleader
  427. "h" '(:ignore t :which-key "Help")
  428. "hh" 'help-for-help
  429. "ha" 'apropos-command
  430. "hb" 'describe-bindings
  431. "hv" 'counsel-describe-variable
  432. "hf" 'counsel-describe-function
  433. "hF" 'Info-goto-emacs-command-node
  434. "ho" 'describe-symbol
  435. "hO" 'info-lookup-symbol
  436. "hm" 'describe-mode
  437. "hp" 'finder-by-keyword
  438. "hP" 'describe-package
  439. "hk" 'describe-key
  440. "hK" 'Info-goto-emacs-key-command-node
  441. "hi" 'info
  442. "hL" 'describe-language-environment)
  443. (:keymaps 'help-mode-map
  444. :states 'normal
  445. "TAB" 'forward-button
  446. "q" 'quit-window
  447. "P" 'help-go-back
  448. "N" 'help-go-forward))
  449. ;;;;;; Markdown
  450. (use-package markdown-mode
  451. :custom-face
  452. (markdown-header-face-1 ((t (:inherit 'outline-1))))
  453. (markdown-header-face-2 ((t (:inherit 'outline-2))))
  454. (markdown-header-face-3 ((t (:inherit 'outline-3))))
  455. (markdown-header-face-4 ((t (:inherit 'outline-4))))
  456. (markdown-header-face-5 ((t (:inherit 'outline-5))))
  457. (markdown-bold-face ((t (:foreground "#ede0ce"))))
  458. (markdown-italic-face ((t (:foreground "#ede0ce"))))
  459. (markdown-header-delimiter-face ((t (:foreground "gray30")))))
  460. ;;;;;; Eshell
  461. ;; eshell-mode-map is not ppoulated outside of eshell
  462. ;; So we need to define bindings in a hook
  463. (defun maxx/eshell-keys ()
  464. (evil-define-key*
  465. 'insert
  466. eshell-mode-map
  467. "ð" 'eshell-previous-matching-input-from-input
  468. "ß" 'eshell-next-matching-input-from-input
  469. "þ" 'eshell-backward-argument
  470. "®" 'eshell-forward-argument
  471. "Þ" 'eshell-kill-input
  472. "Ð" 'eshell-previous-prompt
  473. "ẞ" 'eshell-next-prompt
  474. "C-l" 'eshell/clear)
  475. )
  476. (use-package eshell
  477. :config
  478. (add-to-list 'evil-insert-state-modes 'eshell-mode)
  479. :hook (eshell-first-time-mode . maxx/eshell-keys))
  480. ;;;;;; Zoom
  481. (use-package face-remap
  482. :config
  483. (defhydra hydra-zoom (:color red)
  484. "Zoom"
  485. ("+" text-scale-increase)
  486. ("-" text-scale-decrease)
  487. ("/" (text-scale-adjust 0) "Reset"))
  488. :general
  489. (:states 'normal
  490. "C-+" 'hydra-zoom/text-scale-increase
  491. "C--" 'hydra-zoom/text-scale-decrease
  492. "C-/" '(lambda () (interactive) (text-scale-adjust 0))))
  493. ;;;;; Undo-tree
  494. (use-package undo-tree
  495. :demand
  496. :config
  497. (global-undo-tree-mode)
  498. (setq undo-tree-auto-save-history t
  499. undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo"))
  500. undo-tree-enable-undo-in-region nil)
  501. :general
  502. (:keymaps 'undo-tree-visualizer-mode-map
  503. :states 'normal
  504. "q" 'undo-tree-visualizer-quit
  505. "SPC u" 'undo-tree-visualizer-quit
  506. "d" 'undo-tree-visualize-undo
  507. "s" 'undo-tree-visualize-redo
  508. "D" 'undo-tree-visualizer-toggle-diff)
  509. (spcleader
  510. "u" 'undo-tree-visualize))
  511. ;;;;; Avy
  512. (use-package avy
  513. :config
  514. (setq avy-keys '(?t ?s ?r ?n)
  515. avy-background t
  516. avy-highlight-first t)
  517. :custom-face
  518. (avy-lead-face ((t (:background nil :foreground "red1"))))
  519. (avy-lead-face-0 ((t (:background nil :foreground "gray50"))))
  520. (avy-lead-face-1 ((t (:background nil :foreground "gray50"))))
  521. (avy-lead-face-2 ((t (:background nil :foreground "gray50"))))
  522. :general
  523. (spcleader
  524. "SPC" '(avy-goto-char-timer :which-key "Avy")))
  525. ;;;;; Ace-link
  526. (use-package ace-link
  527. :general
  528. (:keymaps 'Info-mode-map
  529. :states 'normal
  530. "f" 'ace-link-info)
  531. (:keymaps 'help-mode-map
  532. :states 'normal
  533. "f" 'ace-link-help))
  534. ;;;;; Doom
  535. ;;;;;; Doom theme
  536. (use-package doom-themes
  537. :config
  538. (load-theme 'doom-peacock t)
  539. (setq doom-themes-enable-bold t
  540. doom-themes-enable-italic t)
  541. (doom-themes-visual-bell-config))
  542. ;;;;;; Doom modeline
  543. (use-package doom-modeline
  544. :config
  545. (setq doom-modeline-enable-word-count t)
  546. ;; first time run M-x all-the-icons-install-fonts
  547. :hook (after-init . doom-modeline-mode))
  548. ;;;;; Expand region
  549. (use-package expand-region
  550. :config
  551. (defhydra hydra-expand-region (:color red)
  552. "Expand-region"
  553. ("m" er/expand-region)
  554. ("M" er/contract-region))
  555. :general
  556. (spcleader
  557. "m" 'hydra-expand-region/er/expand-region
  558. "M" 'hydra-expand-region/er/contract-region))
  559. ;;;;; Autopairs
  560. (use-package autopair
  561. :config
  562. (autopair-global-mode))
  563. ;;;;; Minions
  564. (use-package minions
  565. :config
  566. (minions-mode t)
  567. (setq minions-mode-line-lighter ""))
  568. ;;;; Completion
  569. ;;;;; Ivy
  570. ;;;;;; Ivy
  571. (use-package ivy
  572. :config
  573. (setq ivy-wrap t
  574. ivy-height 15
  575. ivy-use-virtual-buffers t
  576. ivy-count-format "(%d/%d) "
  577. ivy-extra-directories nil
  578. ivy-initial-inputs-alist nil)
  579. :general
  580. (:keymaps '(ivy-mode-map ivy-minibuffer-map)
  581. "ð" 'ivy-previous-line
  582. "ß" 'ivy-next-line
  583. "ẞ" '(lambda ()
  584. (interactive)
  585. (scroll-other-window 1))
  586. "Ð" '(lambda ()
  587. (interactive)
  588. (scroll-other-window -1))
  589. "®" 'ivy-done
  590. "þ" '(lambda ()
  591. (interactive)
  592. (kill-buffer (ivy-state-current ivy-last)))
  593. "_" 'maxx/counsel-describe))
  594. ;;;;;; Ivy-posframe
  595. (use-package ivy-posframe
  596. :config
  597. (setq ivy-posframe-display-functions-alist '((t . ivy-posframe-display-at-frame-top-center)))
  598. (when (display-graphic-p) (ivy-posframe-enable)))
  599. ;;;;;; Counsel
  600. (use-package counsel
  601. :general
  602. ("M-x" 'counsel-M-x)
  603. (spcleader
  604. "i" 'counsel-imenu
  605. "f" 'counsel-find-file
  606. "b" 'counsel-switch-buffer
  607. "x" 'counsel-M-x
  608. "/" 'counsel-grep-or-swiper))
  609. (defun maxx/counsel-describe ()
  610. "Display help for object at point in counsel"
  611. (interactive)
  612. (let ((inhibit-message t)
  613. (object (intern (ivy-state-current ivy-last))))
  614. (describe-symbol object)))
  615. ;;;;; Company
  616. (use-package company
  617. :demand
  618. :config
  619. (global-company-mode t)
  620. (setq company-idle-delay 0
  621. company-minimum-prefix-length 2)
  622. :general
  623. (:keymaps 'company-active-map
  624. "ß" 'company-select-next
  625. "ð" 'company-select-previous
  626. "Ð" 'company-previous-page
  627. "ẞ" 'company-next-page
  628. "þ" 'company-abort
  629. "®" 'company-complete
  630. "_" 'company-show-doc-buffer))
  631. ;;;; Projectile
  632. ;;;;; Projectile
  633. (use-package projectile
  634. :config
  635. (setq projectile-project-search-path '("~/Projects")))
  636. ;;;;; Counsel-projectile
  637. (use-package counsel-projectile
  638. :general
  639. (spcleader
  640. "p" '(:ignore t :which-key "Projectile")
  641. "pf" 'counsel-projectile-find-file
  642. "pb" 'counsel-projectile-switch-to-buffer
  643. "pp" 'counsel-projectile-switch-project
  644. "pg" 'counsel-projectile-grep
  645. "p SPC" 'counsel-projectile))
  646. ;;;; ESS
  647. ;;;;; ESS
  648. (use-package ess
  649. :config
  650. (setq ess-ask-for-ess-directory nil)
  651. :general
  652. (:keymaps 'inferior-ess-r-mode-map
  653. :states 'insert
  654. "ð" 'comint-previous-matching-input-from-input
  655. "ß" 'comint-next-matching-input-from-input)
  656. (:keymaps 'inferior-ess-r-mode-map
  657. :states '(insert normal)
  658. "C-d" 'evil-scroll-line-up
  659. "C-s" 'evil-scroll-line-down)
  660. )
  661. ;;;;; Poly-R
  662. (use-package poly-R
  663. :general
  664. (:keymaps '(markdown-mode-map
  665. ess-mode-map)
  666. :states 'normal
  667. "<tab>" 'markdown-cycle
  668. "ð" 'markdown-previous-visible-heading
  669. "ß" 'markdown-next-visible-heading
  670. "Ð" 'markdown-outline-previous-same-level
  671. "ẞ" 'markdown-outline-next-same-level
  672. "þ" 'markdown-hide-subtree
  673. "®" '(lambda () (interactive)
  674. (markdown-show-children)
  675. (markdown-show-entry))
  676. "Þ" 'markdown-up-heading
  677. "M-r" 'markdown-demote
  678. "M-t" 'markdown-promote
  679. "M-d" 'markdown-move-up
  680. "M-s" 'markdown-move-down))
  681. ;;;; Git
  682. ;;;;; Magit
  683. (use-package magit
  684. :config
  685. (add-to-list 'evil-emacs-state-modes 'magit-mode)
  686. (add-to-list 'evil-emacs-state-modes 'git-rebase-mode)
  687. :general
  688. (:keymaps '(magit-hunk-section-map
  689. magit-file-section-map
  690. magit-staged-section-map
  691. magit-unstaged-section-map
  692. magit-revision-mode-map
  693. magit-section-map
  694. magit-log-mode-map
  695. magit-diff-mode-map
  696. magit-untracked-section-map
  697. magit-status-mode-map
  698. magit-stash-section-map)
  699. "ð" 'magit-section-backward
  700. "ß" 'magit-section-forward
  701. "þ" 'magit-section-hide
  702. "®" 'magit-section-show
  703. "s" 'magit-next-line
  704. "d" 'magit-previous-line
  705. "q" 'quit-window)
  706. (:keymaps '(magit-hunk-section-map
  707. magit-status-mode-map
  708. magit-unstaged-section-map
  709. magit-untracked-section-map)
  710. "+" 'magit-stage
  711. "-" 'magit-unstage)
  712. (spcleader
  713. "g" '(:ignore t :which-key "Magit")
  714. "gd" 'magit-file-dispatch
  715. "gs" 'magit-status))
  716. ;;;;; Smerge
  717. (use-package smerge-mode
  718. :general
  719. (:keymaps 'smerge-mode-map
  720. :states 'normal
  721. "RET" 'smerge-keep-current))
  722. ;;;;; Git-gutter-fringe
  723. (use-package git-gutter-fringe
  724. :config
  725. (global-git-gutter-mode t))
  726. ;;;; Slime
  727. (use-package slime
  728. :config
  729. (setq inferior-lisp-program "clisp"))
  730. ;;;; Flycheck
  731. (use-package flycheck
  732. :config
  733. (global-flycheck-mode))
  734. ;;;; Org
  735. ;;;;; Org
  736. (use-package org
  737. :demand
  738. :config
  739. (org-babel-do-load-languages
  740. 'org-babel-load-languages
  741. '((python . t)
  742. (R . t)
  743. (emacs-lisp . t)))
  744. (setq org-directory "~/Private/Org"
  745. org-agenda-files (directory-files-recursively "~/Private/Org/" "org$")
  746. org-default-notes-file "~/Private/Org/agenda.org"
  747. org-capture-templates
  748. '(("t"
  749. "todo"
  750. entry (file+headline org-default-notes-file"Tasks")
  751. "* TODO %^{todo}\n %? \n %a")
  752. ("n"
  753. "note"
  754. entry (file+olp+datetree org-default-notes-file"Notes")
  755. "* %^{title}\n %?"))
  756. org-deadline-warning-days 7
  757. org-startup-folded t
  758. org-startup-with-inline-images t
  759. org-agenda-span 'fortnight
  760. org-agenda-skip-scheduled-if-deadline-is-shown t
  761. org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled
  762. org-agenda-todo-ignore-deadlines 'all
  763. org-agenda-todo-ignore-scheduled 'all
  764. org-agenda-sorting-strategy
  765. '((agenda deadline-up priority-down)
  766. (todo priority-down category-keep)
  767. (tags priority-down category-keep)
  768. (search category-keep))
  769. org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+"))
  770. org-hide-block-startup t
  771. org-link-abbrev-alist
  772. '(("gh" . "https://github.com/")
  773. ("git" . "https://git.maximewack.com/"))
  774. )
  775. :custom-face
  776. (outline-1 ((t (:height 1.9))))
  777. (outline-2 ((t (:height 1.6))))
  778. (outline-3 ((t (:height 1.4))))
  779. (outline-4 ((t (:height 1.2))))
  780. (outline-5 ((t (:height 1.1))))
  781. :general
  782. (spcleader
  783. "o" '(:ignore t :which-key "Org")
  784. "oo" '((lambda () (interactive) (find-file org-default-notes-file)) :which-key "Open org file")
  785. "oa" 'org-agenda
  786. "oc" 'org-capture
  787. "ol" 'org-insert-link
  788. "oL" 'org-store-link)
  789. (:keymaps 'org-mode-map
  790. :states 'normal
  791. "<RET>" 'org-open-at-point
  792. "M-s" 'org-metadown
  793. "M-d" 'org-metaup
  794. "M-r" 'org-metaright
  795. "M-t" 'org-metaleft
  796. "M-S" 'org-shiftmetadown
  797. "M-D" 'org-shiftmetaup
  798. "M-R" 'org-shiftmetaright
  799. "M-T" 'org-shiftmetaleft
  800. "C-s" 'org-shiftdown
  801. "C-d" 'org-shiftup
  802. "C-r" 'org-shiftright
  803. "C-t" 'org-shiftleft
  804. "Þ" 'outline-up-heading
  805. "Ð" 'outline-backward-same-level
  806. "ẞ" 'outline-forward-same-level
  807. "®" 'org-show-children
  808. "þ" 'outline-hide-subtree
  809. "ð" 'org-previous-visible-heading
  810. "ß" 'org-next-visible-heading))
  811. ;;;;; Org-bullets
  812. (use-package org-bullets
  813. :config
  814. (setq org-hide-leading-stars t)
  815. :hook (org-mode . org-bullets-mode))
  816. ;;;;; Outshine
  817. (use-package outshine
  818. :general
  819. (:keymaps 'outshine-mode-map
  820. :states 'normal
  821. "<tab>" 'outshine-cycle
  822. "S-<tab>" 'outshine-cycle-buffer
  823. "ð" 'outline-previous-visible-heading
  824. "ß" 'outline-next-visible-heading
  825. "Ð" 'outline-backward-same-level
  826. "ẞ" 'outline-forward-same-level
  827. "Þ" 'outline-up-heading
  828. "þ" 'outshine-kbd-M-<left>
  829. "®" 'outshine-kbd-M-<right>
  830. "M-t" 'outshine-kbd-M-S-<left>
  831. "M-r" 'outshine-kbd-M-S-<right>
  832. "M-d" 'outshine-kbd-M-S-<up>
  833. "M-s" 'outshine-kbd-M-S-<down>
  834. )
  835. :hook (emacs-lisp-mode . outshine-mode))