Skip to content
Snippets Groups Projects
Select Git revision
  • 24ee2878ca1edcfb00772101040437c0207598df
  • master default
  • irony
3 results

Configuration.org

Blame
  • Stephane Del Pino's avatar
    Stéphane Del Pino authored
    La configuration est maintenant écrite dans Configuration.org.
    On l'inclut dans Readme.org pour la documentation.
    24ee2878
    History
    Configuration.org 28.79 KiB

    Choix d’interface

    Pas d’écran de bienvenue

    (setq inhibit-startup-message t)
    

    Augumente la mémoire pour le garbage collector ⇒ meilleures performances

    (setq gc-cons-threshold 64000000)
    (add-hook 'after-init-hook
              #'(lambda ()
                  ;; restore after startup
                  (setq gc-cons-threshold 800000)))
    

    Pas de toolbar

    (tool-bar-mode -1)
    

    Réponses par y ou n

    (fset 'yes-or-no-p 'y-or-n-p)
    

    Commentaires

    Raccourci Description
    C-c ; Commente ou décommente une région
    (global-set-key (kbd "C-c ;") 'comment-or-uncomment-region)
    

    Affiche aussi le numéro de colone

    (setq column-number-mode t)
    

    Désactive l’auto-save

    (setq auto-save-default nil)
    

    Auto-fill

    Utilise l’auto-fill

    (turn-on-auto-fill)
    

    … sauf quand on code

    (add-hook 'prog-mode-hook (lambda () (auto-fill-mode -1)))
    

    Supression des blancs inutiles

    On retire les blancs qui traînent en fin de ligne à la sauvegarde d’un buffer

    (add-hook 'before-save-hook
              (lambda ()
                (when (not (derived-mode-p 'ein:notebook-multilang-mode))
                  (delete-trailing-whitespace))))
    

    Affichage de la fonction courante

    (which-function-mode t)
    

    Powerline

    Un bel affichage pour la barre d’état (mode-line)

    (use-package powerline
      :ensure t
      :config (powerline-default-theme))
    

    Try

    Permet d’essayer des paquets (sans les installer de manère permanente)

    (use-package try
      :ensure t)
    

    Posframe

    Affiche des boites de dialogue

    (use-package posframe
      :ensure t)
    

    Which key

    Aide en ligne pour les raccourcis (quelle touche ?)

    (use-package which-key
      :ensure t
      :config
      (which-key-mode))
    

    Org mode

    Org bullets makes things look pretty

    (use-package org
      :ensure t
      :pin org)
    
    (setenv "BROWSER" "firefox")
    (use-package org-bullets
      :ensure t
      :config
      (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
    (custom-set-variables
     '(org-default-notes-file (concat org-directory "/notes.org"))
     '(org-export-html-postamble nil)
     '(org-hide-leading-stars t)
     '(org-startup-folded (quote overview))
     '(org-startup-indented t)
     '(org-confirm-babel-evaluate nil)
     '(org-src-fontify-natively t)
     )
    
    (setq org-file-apps
          (append '(
                    ("\\.pdf\\'" . "evince %s")
                    ("\\.x?html?\\'" . "/usr/bin/firefox %s")
                    ) org-file-apps ))
    
    (global-set-key "\C-ca" 'org-agenda)
    (setq org-agenda-start-on-weekday nil)
    (setq org-agenda-custom-commands
          '(("c" "Simple agenda view"
             ((agenda "")
              (alltodo "")))))
    
    (global-set-key (kbd "C-c c") 'org-capture)
    
    (defun make-capture-frame ()
      "Create a new frame and run org-capture."
      (interactive)
      (make-frame '((name . "capture")))
      (select-frame-by-name "capture")
      (delete-other-windows)
      (noflet ((switch-to-buffer-other-window (buf) (switch-to-buffer buf)))
              (org-capture)))
    
    (define-key org-mode-map (kbd "C-c >") (lambda () (interactive (org-time-stamp-inactive))))
    
    (use-package htmlize :ensure t)
    
    (setq org-ditaa-jar-path "/usr/share/ditaa/ditaa.jar")
    

    Ace window

    Permet de changer facilement de fenêtre. S’il y a plus de deux buffers leur numéros sont affichés et il suffit de taper le numéro de la fenêtre choisie pour s’y rendre.

    Raccourci Description
    C-x o Met le curseur dans une autre fenêtre.
    (use-package ace-window
      :ensure t
      :init
      (progn
        (setq aw-scope 'global) ;; was frame
        (global-set-key (kbd "C-x O") 'other-frame)
        (global-set-key [remap other-window] 'ace-window)
        (custom-set-faces
         '(aw-leading-char-face
           ((t (:inherit ace-jump-face-foreground :height 3.0)))))
        ))
    

    Ivy / Counsel

    Interface de complétion

    (use-package counsel
      :ensure t
      :bind
      (("M-y" . counsel-yank-pop)
       :map ivy-minibuffer-map
       ("M-y" . ivy-next-line)))
    
    (use-package ivy
      :ensure t
      :diminish (ivy-mode)
      :bind (("C-x b" . ivy-switch-buffer))
      :config
      (ivy-mode 1)
      (setq ivy-use-virtual-buffers t)
      (setq ivy-count-format "%d/%d ")
      (setq ivy-display-style 'fancy))
    

    Swiper

    Améliore la recherche incrémentale. Les raccourcis sont les raccourcis classiques. Deux différences notables.

    • <SPC> joue le rôle de joker: r<SPC>rc filtrera le mot recherche par exemple
    • Si on souhaite créer un nouveau fichier avec C-x C-f dont le nom est une sous chaîne d’un fichier existant, il ne faut pas utiliser <RET> pour valider, mais C-j. Utiliser <RET> valide la recherche.
    Raccourci Description
    C-s Recherche incrémentale vers le bas
    C-r Recherche incrémentale vers le haut
    M-x Recherche incrémentale d’une commande
    C-x C-f Recherche incrémentale ou création d’un fichier
    (use-package swiper
    :ensure t
    :bind (("C-s" . swiper-isearch)
    	 ("C-r" . swiper-isearch)
    	 ("C-c C-r" . ivy-resume)
    	 ("M-x" . counsel-M-x)
    	 ("C-x C-f" . counsel-find-file))
    :config
    (progn
      (ivy-mode 1)
      (setq ivy-use-virtual-buffers t)
      (setq ivy-display-style 'fancy)
      (define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
      ))
    

    Avy

    Saute très rapidement vers la zone de texte contenant une lettre.

    Raccourci Description
    M-s Demande une lettre du mot recherché
    (use-package avy
      :ensure t
      :bind ("M-s" . avy-goto-word-1))
    

    Company

    Boites de dialogue pour la complétion

    (use-package company
      :ensure t
      :config
      (setq company-idle-delay 0)
      (setq company-minimum-prefix-length 3)
    
      (global-company-mode t))
    
    (defun my/python-mode-hook ()
      (add-to-list 'company-backends 'company-jedi))
    
    (add-hook 'python-mode-hook 'my/python-mode-hook)
    (use-package company-jedi
      :ensure t
      :config
      (add-hook 'python-mode-hook 'jedi:setup)
      )
    
    (defun my/python-mode-hook ()
      (add-to-list 'company-backends 'company-jedi))
    
    (add-hook 'python-mode-hook 'my/python-mode-hook)
    

    C++

    Transforme Emacs en un véritable IDE en utilisant Irony

    On branche Irony à Company

    (use-package company-irony
      :ensure t
      :config
      (add-to-list 'company-backends 'company-irony))
    

    On active Irony pour le C++

    (use-package irony
      :ensure t
      :config
      (add-hook 'c++-mode-hook 'irony-mode)
      (add-hook 'c-mode-hook 'irony-mode)
      (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
    

    Eldoc / Irony

    Affiche la documentation des objets/functions dans le minibuffer

    (use-package irony-eldoc
      :ensure t
      :config
      (add-hook 'irony-mode-hook #'irony-eldoc))
    

    Formatage automatique : clang-format

    Création d’un raccourci spécial pour formater une zone du code.

    Raccourci Description
    C-c C-f Indente la région comme définie par clang-format
    (use-package clang-format
      :ensure t
      :bind
      (("C-c C-f" . clang-format-region)))
    

    Remplace l’indentation classique d’Emacs par clang-format en C/C++

    Raccourci Description
    <TAB> Indente la région comme définie par clang-format
    (defun clang-format-c-mode-common-hook ()
      (fset 'c-indent-region 'clang-format-region)
      (define-key c-mode-base-map (kbd "<tab>") 'clang-format-region))
    (add-hook 'c-mode-common-hook 'clang-format-c-mode-common-hook)
    

    Force le formatage du fichier quand il est sauvgardé

    (defun clang-format-buffer-on-save ()
      "Add auto-save hook for clang-format-buffer-smart."
      (add-hook 'before-save-hook 'clang-format-buffer nil t))
    (add-hook 'c-mode-common-hook 'clang-format-buffer-on-save)
    

    Coloration syntaxique (C++ moderne)

    (use-package modern-cpp-font-lock
      :ensure t
      :init
      (eval-when-compile
        ;; Silence missing function warnings
        (declare-function modern-c++-font-lock-global-mode
                          "modern-cpp-font-lock.el"))
      :config (modern-c++-font-lock-global-mode t))
    

    Themes

    Préchargement de quelques themes

    (use-package cloud-theme :ensure t)
    (use-package zenburn-theme :ensure t)
    (use-package sourcerer-theme :ensure t)
    (use-package monokai-theme :ensure t)
    (use-package gruvbox-theme :ensure t)
    (use-package bubbleberry-theme :ensure t)
    (use-package solarized-theme :ensure t)
    

    Chargement d’un theme

    (load-theme 'sourcerer t)
    

    Modeline

    Augmente la taille de la police

    (defvar my-font-size 140)
    

    Taille de la Modeline

    (set-face-attribute 'mode-line nil  :height my-font-size)
    

    Taille du titre

    (set-face-attribute 'header-line nil  :height my-font-size)
    

    Taille des attributs

    (set-face-attribute 'default nil :height my-font-size)
    

    Taille de la fenêtre et position

    (setq default-frame-alist
          '((top . 0) (left . 0) ;; position
            (width . 110) (height . 90) ;; size
            ))
    

    Parenthèses arc-en-ciel

    Améliore le visuel des parenthèses

    (use-package rainbow-delimiters
      :ensure t
      :init
      (eval-when-compile
        ;; Silence missing function warnings
        (declare-function rainbow-delimiters-mode "rainbow-delimiters.el"))
      (add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
    

    Flycheck

    On branche flycheck à Irony

    (use-package flycheck-irony
      :ensure t
      :config
      (eval-after-load 'flycheck
        '(add-hook 'flycheck-mode-hook #'flycheck-irony-setup)))
    

    On charge flycheck

    (use-package flycheck
      :ensure t
      :init
      (global-flycheck-mode t))
    

    Active flycheck globalement

    (add-hook 'after-init-hook #'global-flycheck-mode)
    

    Python

    Attention pour que la configuration fonctionne, il faut installer virtualenv. Pour les systèmes Debian

    apt install virtualenv
    
    (setq py-python-command "python3")
    (setq python-shell-interpreter "python3")
    
    (use-package elpy
      :ensure t
      :custom (elpy-rpc-backend "jedi")
      :config
      (elpy-enable))
    
    (use-package virtualenvwrapper
      :ensure t
      :config
      (venv-initialize-interactive-shells)
      (venv-initialize-eshell))
    

    YaSnippet

    Le système de templates pour Emacs

    (use-package yasnippet
      :ensure t
      :init (yas-global-mode 1))
    
    (use-package yasnippet-snippets
      :ensure t)
    

    Divers paquets

    Highlight line

    Mise en valeur de la ligne courante

    (global-hl-line-mode t)
    

    Beacon

    Flash de la ligne aux changements de page ou de buffer

    (use-package beacon
      :ensure t
      :config
      (beacon-mode 1))
    

    hungry-delete

    Suppression de tous les blancs quand appuie sur backspace ou delete

    (use-package hungry-delete
      :ensure t
      :config
      (global-hungry-delete-mode))
    

    Multiple-cursors

    Permet l’utilisation de plusieurs curseurs simultanément

    (use-package multiple-cursors
      :ensure t)
    

    Expand-region

    Sélectionne une zone de manière incrémentale. mot, phrase, paragraphe, etc de manière intelligente.

    (use-package expand-region
      :ensure t
      :config
      (global-set-key (kbd "C-=") 'er/expand-region))
    

    Meilleure gestion du kill-ring

    (setq save-interprogram-paste-before-kill t)
    

    Gestion de la restauration des buffers

    (global-auto-revert-mode 1)
    (setq auto-revert-verbose nil)
    (global-set-key (kbd "<f5>") 'revert-buffer)
    

    iedit

    Modifie les copies d’une zone séléctionnée simultanément

    Raccourci Description
    C-h C-; démarrer les modifications
    M-ESC ESC sortir du mode
    (use-package iedit
      :ensure t)
    

    Narrow/widen dwim

    Réduit/agrandit une zone d’édition de manière intelligente

    (defun narrow-or-widen-dwim (p)
      "If the buffer is narrowed, it widens. Otherwise, it narrows intelligently.
    Intelligently means: region, org-src-block, org-subtree, or defun,
    whichever applies first.
    Narrowing to org-src-block actually calls `org-edit-src-code'.
    
    With prefix P, don't widen, just narrow even if buffer is already
    narrowed."
      (interactive "P")
      (declare (interactive-only))
      (cond ((and (buffer-narrowed-p) (not p)) (widen))
            ((region-active-p)
             (narrow-to-region (region-beginning) (region-end)))
            ((derived-mode-p 'org-mode)
             ;; `org-edit-src-code' is not a real narrowing command.
             ;; Remove this first conditional if you don't want it.
             (cond ((ignore-errors (org-edit-src-code))
                    (delete-other-windows))
                   ((org-at-block-p)
                    (org-narrow-to-block))
                   (t (org-narrow-to-subtree))))
            (t (narrow-to-defun))))
    

    Remplace la fonction Emacs standard par dwim

    (define-key ctl-x-map "n" #'narrow-or-widen-dwim)
    

    Web Mode

    Mode avancé pour l’édition de pages html, CSS,…

    (use-package web-mode
      :ensure t
      :config
      (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
      (add-to-list 'auto-mode-alist '("\\.vue?\\'" . web-mode))
      (setq web-mode-engines-alist
            '(("django"    . "\\.html\\'")))
      (setq web-mode-ac-sources-alist
            '(("css" . (ac-source-css-property))
              ("vue" . (ac-source-words-in-buffer ac-source-abbrev))
              ("html" . (ac-source-words-in-buffer ac-source-abbrev))))
      (setq web-mode-enable-auto-closing t))
    (setq web-mode-enable-auto-quoting t) ; this fixes the quote problem I mentioned
    

    Emmet mode

    Ensemble de fonctions permettant l’édition rapide de markup languages (html,sgml,…)

    (use-package emmet-mode
      :ensure t
      :config
      ;; Auto-start on any markup modes
      (add-hook 'sgml-mode-hook 'emmet-mode)
      ;; Auto-start on any markup modes
      (add-hook 'web-mode-hook  'emmet-mode)
      ;; enable Emmet's css abbreviation
      (add-hook 'css-mode-hook  'emmet-mode))
    

    Dired

    Permet d’utiliser reduire/agrandir les affichages de répertoires

    (setq dired-dwim-target t)
    
    (use-package dired-narrow
      :ensure t
      :config
      (bind-key "C-c C-n" #'dired-narrow)
      (bind-key "C-c C-f" #'dired-narrow-fuzzy)
      (bind-key "C-x C-N" #'dired-narrow-regexp))
    
    (use-package dired-subtree :ensure t
      :after dired
      :config
      (bind-key "<tab>" #'dired-subtree-toggle dired-mode-map)
      (bind-key "<backtab>" #'dired-subtree-cycle dired-mode-map))
    

    LaTeX

    Configuration LaTeX basique.

    (use-package tex
      :ensure auctex)
    
    (defun tex-view ()
      (interactive)
      (tex-send-command "evince" (tex-append tex-print-file ".pdf")))
    

    Gestion de projets

    (use-package projectile
      :ensure t
      :bind ("C-c p" . projectile-command-map)
      :config
      (projectile-mode)
      (setq projectile-completion-system 'ivy))
    

    Org mode (langages suportés)

    Charge les langages disponnibles pour org-mode

    (org-babel-do-load-languages
     'org-babel-load-languages
     '((python . t)
       (emacs-lisp . t)
       (shell . t)
       (C . t)
       (js . t)
       (ditaa . t)
       (dot . t)
       (org . t)
       (latex . t )))
    

    Parenthèses

    (use-package smartparens
      :ensure t
      :hook (prog-mode . smartparens-mode)
      :custom
      (sp-escape-quotes-after-insert nil)
      :config
      (require 'smartparens-config))
    
    (show-paren-mode t)
    (setq show-paren-style 'mixed)
    

    Taille de la police

    Change la taille de la police dynamiquement (temporaire)

    Raccourci Description
    C-M-= Augmente la taille de la police
    C-M-- Réduit la taille de la police
    (use-package default-text-scale
      :ensure t
      :config
      (global-set-key (kbd "C-M-=") 'default-text-scale-increase)
      (global-set-key (kbd "C-M--") 'default-text-scale-decrease))
    

    Hydra

    Outil de simplification des raccourcis. Un popup contextuel apparaît.

    Raccourci Description
    C-x t Active désactive certains utilitaires
    C-x j Déplacement dans le buffer
    C-c t Gestion du timer
    (use-package hydra
      :ensure hydra
      :init
      (global-set-key
       (kbd "C-x t")
       (defhydra toggle (:color blue)
         "toggle"
         ("a" abbrev-mode "abbrev")
         ("s" flyspell-mode "flyspell")
         ("d" toggle-debug-on-error "debug")
         ("c" fci-mode "fCi")
         ("f" auto-fill-mode "fill")
         ("t" toggle-truncate-lines "truncate")
         ("w" whitespace-mode "whitespace")
         ("q" nil "cancel")))
      (global-set-key
       (kbd "C-x j")
       (defhydra gotoline
         ( :pre (linum-mode 1)
                :post (linum-mode -1))
         "goto"
         ("t" (lambda () (interactive)(move-to-window-line-top-bottom 0)) "top")
         ("b" (lambda () (interactive)(move-to-window-line-top-bottom -1)) "bottom")
         ("m" (lambda () (interactive)(move-to-window-line-top-bottom)) "middle")
         ("e" (lambda () (interactive)(goto-char (point-max))) "end")
         ("c" recenter-top-bottom "recenter")
         ("n" next-line "down")
         ("p" (lambda () (interactive) (forward-line -1))  "up")
         ("g" goto-line "goto-line")
         ))
      (global-set-key
       (kbd "C-c t")
       (defhydra hydra-global-org (:color blue)
         "Org"
         ("t" org-timer-start "Start Timer")
         ("s" org-timer-stop "Stop Timer")
         ("r" org-timer-set-timer "Set Timer") ; This one requires you be in an orgmode doc, as it sets the timer for the header
         ("p" org-timer "Print Timer") ; output timer value to buffer
         ("w" (org-clock-in '(4)) "Clock-In") ; used with (org-clock-persistence-insinuate) (setq org-clock-persist t)
         ("o" org-clock-out "Clock-Out") ; you might also want (setq org-log-note-clock-out t)
         ("j" org-clock-goto "Clock Goto") ; global visit the clocked task
         ("c" org-capture "Capture") ; Don't forget to define the captures you want http://orgmode.org/manual/Capture.html
         ("l" (or )rg-capture-goto-last-stored "Last Capture"))
    
       ))
    
    (defhydra hydra-multiple-cursors (:hint nil)
      "
     Up^^             Down^^           Miscellaneous           % 2(mc/num-cursors) cursor%s(if (> (mc/num-cursors) 1) \"s\" \"\")
    ------------------------------------------------------------------
     [_p_]   Next     [_n_]   Next     [_l_] Edit lines  [_0_] Insert numbers
     [_P_]   Skip     [_N_]   Skip     [_a_] Mark all    [_A_] Insert letters
     [_M-p_] Unmark   [_M-n_] Unmark   [_s_] Search
     [Click] Cursor at point       [_q_] Quit"
      ("l" mc/edit-lines :exit t)
      ("a" mc/mark-all-like-this :exit t)
      ("n" mc/mark-next-like-this)
      ("N" mc/skip-to-next-like-this)
      ("M-n" mc/unmark-next-like-this)
      ("p" mc/mark-previous-like-this)
      ("P" mc/skip-to-previous-like-this)
      ("M-p" mc/unmark-previous-like-this)
      ("s" mc/mark-all-in-region-regexp :exit t)
      ("0" mc/insert-numbers :exit t)
      ("A" mc/insert-letters :exit t)
      ("<mouse-1>" mc/add-cursor-on-click)
      ;; Help with click recognition in this hydra
      ("<down-mouse-1>" ignore)
      ("<drag-mouse-1>" ignore)
      ("q" nil)
    
      ("<mouse-1>" mc/add-cursor-on-click)
      ("<down-mouse-1>" ignore)
      ("<drag-mouse-1>" ignore))
    

    Modes git

    Le sublime magit

    Raccourci Description
    C-x g Démarre magit (M-x magit-status)
    (use-package magit
      :ensure t
      :init
      (progn (bind-key "C-x g" 'magit-status)))
    

    Affiche l’état git dans la marge

    (setq magit-status-margin
          '(nil "%Y-%m-%d %H:%M " magit-log-margin-width t 18))
    

    Utilise git-gutter avec hydra. Permet de voir rapidement les modifications, de les valider (git add -p) ou de les annuler (git checkout -p)

    Raccourci Description
    C-x g Démarre magit (M-x magit-status)
    (use-package git-gutter
      :ensure t
      :init
      (global-git-gutter-mode +1))
    
    (global-set-key (kbd "M-g M-g") 'hydra-git-gutter/body)
    
    (use-package git-timemachine
      :ensure t)
    (defhydra hydra-git-gutter (:body-pre (git-gutter-mode 1)
                                          :hint nil)
      "
    Git gutter:
      _j_: next hunk        _s_tage hunk     _q_uit
      _k_: previous hunk    _r_evert hunk    _Q_uit and deactivate git-gutter
      ^ ^                   _p_opup hunk
      _h_: first hunk
      _l_: last hunk        set start _R_evision
    "
      ("j" git-gutter:next-hunk)
      ("k" git-gutter:previous-hunk)
      ("h" (progn (goto-char (point-min))
                  (git-gutter:next-hunk 1)))
      ("l" (progn (goto-char (point-min))
                  (git-gutter:previous-hunk 1)))
      ("s" git-gutter:stage-hunk)
      ("r" git-gutter:revert-hunk)
      ("p" git-gutter:popup-hunk)
      ("R" git-gutter:set-start-revision)
      ("q" nil :color blue)
      ("Q" (progn (git-gutter-mode -1)
                  ;; git-gutter-fringe doesn't seem to
                  ;; clear the markup right away
                  (sit-for 0.1)
                  (git-gutter-mode))
       :color blue))
    

    Flyspell

    Correcteur orthographique à la volée

    (add-hook 'org-mode-hook 'turn-on-flyspell)
    (add-hook 'org-mode-hook 'turn-on-auto-fill)
    (add-hook 'mu4e-compose-mode-hook 'turn-on-flyspell)
    (add-hook 'mu4e-compose-mode-hook 'turn-on-auto-fill)
    

    C++

    Activation des ggtags

    (use-package ggtags
      :ensure t
      :config
      (add-hook 'c-mode-common-hook
                (lambda ()
                  (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
                    (ggtags-mode 1)))))
    

    CMake

    (use-package cmake-mode
      :ensure t
      :mode ("CMakeLists.txt" ".cmake")
      :hook (cmake-mode . (lambda ()
                            (add-to-list 'company-backends 'company-cmake)))
      :config
      (use-package cmake-font-lock
        :ensure t
        :defer t
        :commands (cmake-font-lock-activate)
        :hook (cmake-mode . (lambda ()
                              (cmake-font-lock-activate)
                              (font-lock-add-keywords
                               nil '(("\\<\\(FIXME\\|TODO\\|BUG\\|DONE\\)"
                                      1 font-lock-warning-face t)))))))
    

    Markdown

    (use-package markdown-mode
      :ensure t
      :mode (".md" ".markdown"))
    

    Dumb jump

    Permet de se déplacer très rapidement dans un texte ou de retrouver une définition.

    Raccourci Description
    M-g o Saute à la définition de l’objet sous le curseur dans une autre fenêtre
    M-g j Saute à la définition de l’objet sous le curseur
    (use-package dumb-jump
      :bind (("M-g o" . dumb-jump-go-other-window)
             ("M-g j" . dumb-jump-go)
             ("M-g x" . dumb-jump-go-prefer-external)
             ("M-g z" . dumb-jump-go-prefer-external-other-window))
      :init
      (dumb-jump-mode)
      :ensure t)
    

    Origami

    Mode permettant le pliage (folding) de regions

    (use-package origami
      :ensure t)
    

    IBuffer

    Un meilleur gestionnaire de buffers.

    Raccourci Description
    C-x C-b Ouvre le gestionnaire de buffers
    C-x b Change de buffer
    (global-set-key (kbd "C-x C-b") 'ibuffer)
    (setq ibuffer-saved-filter-groups
          (quote (("default"
                   ("dired" (mode . dired-mode))
                   ("org" (name . "^.*org$"))
                   ("magit" (mode . magit-mode))
                   ("IRC" (or (mode . circe-channel-mode)
                              (mode . circe-server-mode)))
                   ("web" (or (mode . web-mode) (mode . js2-mode)))
                   ("shell" (or (mode . eshell-mode) (mode . shell-mode)))
                   ("mu4e" (or (mode . mu4e-compose-mode)
                               (name . "\\*mu4e\\*")))
                   ("programming" (or (mode . clojure-mode)
                                      (mode . clojurescript-mode)
                                      (mode . python-mode)
                                      (mode . c++-mode)))
                   ("emacs" (or (name . "^\\*scratch\\*$")
                                (name . "^\\*Messages\\*$")))
                   ))))
    (add-hook 'ibuffer-mode-hook
              (lambda ()
                (ibuffer-auto-mode 1)
                (ibuffer-switch-to-saved-filter-groups "default")))
    
    ;; Don't show filter groups if there are no buffers in that group
    (setq ibuffer-show-empty-filter-groups nil)
    
    ;; Don't ask for confirmation to delete marked buffers
    (setq ibuffer-expert t)
    

    Wgrep

    Permet de modifier le résultat d’un grep (donc simultanément dans plusieurs fichiers par exemple).

    Raccourci Description
    C-c C-p passe en mode écriture dans le buffer résultat de grep
    C-c C-e sauve les modifications
    C-x C-q quitte le mode

    voir wgrep pour plus d’infos.

    (use-package wgrep
      :ensure t)
    (use-package wgrep-ag
      :ensure t)
    (require 'wgrep-ag)
    

    PDF tools

    Outils d’édition de PDF dans Emacs

    (use-package pdf-tools
      :ensure t)
    (use-package org-pdfview
      :ensure t)
    

    AutoYASnippet

    Outil de création rapide de snipets. Voir la documentation en ligne https://github.com/abo-abo/auto-yasnippet

    (use-package auto-yasnippet
      :ensure t)
    

    Divers

    Quelques réglages utilitaires

    (setq browse-url-browser-function 'browse-url-generic
          browse-url-generic-program "firefox")
    (setq auto-window-vscroll nil)
    (blink-cursor-mode t)
    (setq default-frame-alist
          '((cursor-color . "DarkGrey")))
    

    Keyfreq

    Enregistre la fréquence d’utilisation de commandes. Pour obtenir les statistiques, utiliser la commande M-x keyfreq-show

    (use-package keyfreq
      :ensure t
      :config
      (require 'keyfreq)
      (keyfreq-mode 1)
      (keyfreq-autosave-mode 1))
    

    Dictionnaire et césures

    (use-package dictionary
      :ensure t)
    (use-package synosaurus
      :ensure t)