245 lines
6.6 KiB
Org Mode
245 lines
6.6 KiB
Org Mode
#+TITLE: My Emacs Configuration
|
|
#+AUTHOR: Arthur Barraux
|
|
#+OPTIONS: num:nil
|
|
|
|
* Init
|
|
** Package management
|
|
#+begin_src emacs-lisp
|
|
(require 'use-package)
|
|
(setq use-package-always-ensure t)
|
|
|
|
(setq package-archives
|
|
'(("GNU ELPA" . "https://elpa.gnu.org/packages/")
|
|
("MELPA Stable" . "https://stable.melpa.org/packages/")
|
|
("MELPA" . "https://melpa.org/packages/"))
|
|
package-archive-priorities
|
|
'(("GNU ELPA" . 10)
|
|
("MELPA" . 5)
|
|
("MELPA Stable" . 0)))
|
|
|
|
#+end_src
|
|
|
|
** Theme
|
|
#+BEGIN_SRC emacs-lisp
|
|
(load-theme 'zenburn t)
|
|
#+END_SRC
|
|
|
|
** Encoding
|
|
#+begin_src emacs-lisp
|
|
|
|
(set-language-environment "UTF-8")
|
|
(prefer-coding-system 'utf-8)
|
|
|
|
#+end_src
|
|
* Completion
|
|
#+BEGIN_SRC emacs-lisp
|
|
(use-package vertico)
|
|
(use-package consult)
|
|
(use-package marginalia)
|
|
#+END_SRC
|
|
|
|
** Company
|
|
#+BEGIN_SRC emacs-lisp
|
|
(use-package company)
|
|
(company-mode 1)
|
|
#+END_SRC
|
|
|
|
** Smart parenthesis
|
|
#+begin_src emacs-lisp
|
|
(use-package smartparens
|
|
:ensure smartparens ;; install the package
|
|
:hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks
|
|
:config
|
|
;; load default config
|
|
(require 'smartparens-config))
|
|
#+end_src
|
|
|
|
** LSP
|
|
#+begin_src emacs-lisp
|
|
(setq package-selected-packages '(lsp-mode yasnippet lsp-treemacs helm-lsp
|
|
projectile hydra flycheck company avy which-key helm-xref dap-mode))
|
|
|
|
(when (cl-find-if-not #'package-installed-p package-selected-packages)
|
|
(package-refresh-contents)
|
|
(mapc #'package-install package-selected-packages))
|
|
|
|
;; sample `helm' configuration use https://github.com/emacs-helm/helm/ for details
|
|
(helm-mode)
|
|
(require 'helm-xref)
|
|
(define-key global-map [remap find-file] #'helm-find-files)
|
|
(define-key global-map [remap execute-extended-command] #'helm-M-x)
|
|
(define-key global-map [remap switch-to-buffer] #'helm-mini)
|
|
|
|
(which-key-mode)
|
|
(add-hook 'c-mode-hook 'lsp)
|
|
(add-hook 'c++-mode-hook 'lsp)
|
|
|
|
(setq gc-cons-threshold (* 100 1024 1024)
|
|
read-process-output-max (* 1024 1024)
|
|
treemacs-space-between-root-nodes nil
|
|
company-idle-delay 0.0
|
|
company-minimum-prefix-length 1
|
|
lsp-idle-delay 0.1) ;; clangd is fast
|
|
|
|
(with-eval-after-load 'lsp-mode
|
|
(add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration)
|
|
(require 'dap-cpptools)
|
|
(yas-global-mode))
|
|
|
|
#+end_src
|
|
* Key-binds
|
|
** C
|
|
*** Dereference arrow
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(defun print-arrow ()
|
|
(interactive)
|
|
(if (eq major-mode 'c-mode)
|
|
(with-current-buffer (buffer-name);
|
|
(insert "->"))
|
|
(with-current-buffer (buffer-name);
|
|
(insert "ù"))
|
|
))
|
|
(keymap-global-set "ù" 'print-arrow)
|
|
|
|
#+END_SRC
|
|
|
|
*** Jump to def
|
|
#+begin_src emacs-lisp
|
|
(defun go-to-definition ()
|
|
if (eq major-mode 'c-mode)
|
|
('ff-find-other-file))
|
|
(keymap-local-set "C-<return>" 'go-to-definition)
|
|
#+end_src
|
|
|
|
** Reload config
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(defun reload-conf ()
|
|
(interactive)
|
|
(load-file "~/.emacs.default/init.el"))
|
|
(keymap-global-set "C-c r" 'reload-conf)
|
|
#+END_SRC
|
|
|
|
** Open config
|
|
#+begin_src emacs-lisp
|
|
(defun open-config ()
|
|
(interactive)
|
|
(find-file "~/.emacs.default/config.org"))
|
|
(keymap-global-set "C-c c" 'open-config)
|
|
#+end_src
|
|
** Window command
|
|
|
|
*** Split verticaly
|
|
#+begin_src emacs-lisp
|
|
(keymap-global-set "C-x é" 'split-window-below)
|
|
#+end_src
|
|
|
|
*** Split horizontally
|
|
#+begin_src emacs-lisp
|
|
(keymap-global-set "C-x \"" 'split-window-right)
|
|
#+end_src
|
|
|
|
*** Close window
|
|
#+begin_src emacs-lisp
|
|
(keymap-global-set "C-x à" 'delete-window)
|
|
#+end_src
|
|
|
|
* Org
|
|
|
|
** Org bullets
|
|
#+begin_src emacs-lisp
|
|
(use-package org-bullets
|
|
:config
|
|
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
|
#+end_src
|
|
** Font
|
|
#+begin_src emacs-lisp
|
|
(font-lock-add-keywords 'org-mode
|
|
'(("^ *\\([-]\\) "
|
|
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
|
(custom-theme-set-faces
|
|
'user
|
|
'(variable-pitch ((t (:family "ETBembo" :height 220 :weight thin))))
|
|
'(fixed-pitch ((t ( :family "Fira Code Retina" :height 200)))))
|
|
(let* ((variable-tuple
|
|
(cond ((x-list-fonts "ETBembo") '(:font "ETBembo"))
|
|
((x-list-fonts "Source Sans Pro") '(:font "Source Sans Pro"))
|
|
((x-list-fonts "Lucida Grande") '(:font "Lucida Grande"))
|
|
((x-list-fonts "Verdana") '(:font "Verdana"))
|
|
((x-family-fonts "Sans Serif") '(:family "Sans Serif"))
|
|
(nil (warn "Cannot find a Sans Serif Font. Install Source Sans Pro."))))
|
|
(base-font-color (face-foreground 'default nil 'default))
|
|
(headline `(:inherit default :weight bold :foreground ,base-font-color)))
|
|
|
|
|
|
;; Headlines
|
|
(custom-theme-set-faces
|
|
'user
|
|
`(org-level-8 ((t (,@headline ,@variable-tuple))))
|
|
`(org-level-7 ((t (,@headline ,@variable-tuple))))
|
|
`(org-level-6 ((t (,@headline ,@variable-tuple))))
|
|
`(org-level-5 ((t (,@headline ,@variable-tuple))))
|
|
`(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1))))
|
|
`(org-level-3 ((t (,@headline ,@variable-tuple :height 1.25))))
|
|
`(org-level-2 ((t (,@headline ,@variable-tuple :height 1.5))))
|
|
`(org-level-1 ((t (,@headline ,@variable-tuple :height 1.75))))
|
|
`(org-document-title ((t (,@headline ,@variable-tuple :height 2.0 :underline nil))))))
|
|
#+end_src
|
|
|
|
** Emphasis markers
|
|
#+begin_src emacs-lisp
|
|
(setq org-hide-emphasis-markers t)
|
|
#+end_src
|
|
|
|
** Hooks
|
|
*** Variable pitch mode
|
|
#+begin_src emacs-lisp
|
|
(add-hook 'org-mode-hook 'variable-pitch-mode)
|
|
#+end_src
|
|
*** Visual line mode
|
|
#+begin_src emacs-lisp
|
|
(add-hook 'org-mode-hook 'visual-line-mode)
|
|
#+end_src
|
|
** Custom faces
|
|
#+begin_src emacs-lisp
|
|
(custom-theme-set-faces
|
|
'user
|
|
'(org-block ((t (:inherit fixed-pitch))))
|
|
'(org-code ((t (:inherit (shadow fixed-pitch)))))
|
|
'(org-document-info ((t (:foreground "dark orange"))))
|
|
'(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
|
|
'(org-indent ((t (:inherit (org-hide fixed-pitch)))))
|
|
'(org-link ((t (:foreground "royal blue" :underline t))))
|
|
'(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
'(org-property-value ((t (:inherit fixed-pitch))) t)
|
|
'(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
'(org-table ((t (:inherit fixed-pitch :foreground "#83a598"))))
|
|
'(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
|
|
'(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
|
|
#+end_src
|
|
* Terminal
|
|
#+begin_src
|
|
(use-package vterm)
|
|
#+end_src
|
|
* Misceleaneous
|
|
|
|
** Tool bar
|
|
#+BEGIN_SRC emacs-lisp
|
|
(tool-bar-mode -1)
|
|
#+END_SRC
|
|
** Menu bar
|
|
#+BEGIN_SRC emacs-lisp
|
|
(menu-bar-mode -1)
|
|
#+END_SRC
|
|
** Scroll bar
|
|
#+BEGIN_SRC emacs-lisp
|
|
(scroll-bar-mode -1)
|
|
#+END_SRC
|
|
|
|
** Global font
|
|
#+begin_src emacs-lisp
|
|
(set-face-attribute 'default nil :family "Cascadia Mono" :height 200)
|
|
#+end_src
|
|
|