GNU Emacs : quelques extensions (première partie)

Posté par . Édité par Nils Ratusznik, Benoît Sibaud et palm123. Modéré par ZeroHeure. Licence CC by-sa
Tags :
40
14
oct.
2014
Doc

Pour son premier journal, ptitjano a décidé de nous parler de GNU Emacs, et nous on a décidé d'en faire une dépêche : au menu de cette première liste d'extensions, un gestionnaire de paquets, une meilleure navigation parmi les buffers, un M-x amélioré, la liste des derniers fichiers ouverts, l'insertion simple de templates, la complétion visuelle, le classement des buffers en catégories et la recherche dans les buffers ouverts.

Sommaire

GNU Emacs 24.4 devrait sortir le 20 octobre 2014 mais j'ai l'impression qu'on en parle trop peu sur ces pages (on peut tout de même trouver quelques journaux récents, notamment « des prompteurs pour Emacs », « peigner la girafe, BPM » ou « Emacs 24 toute résistance est inutile). J'ai donc décidé d'apporter ma pierre à l'édifice. (Certains éléments reprennent d'ailleurs des astuces ou des commentaires des journaux précédemment cités).

Conventions

On utilisera dans ce journal la même convention que celle de xaccrocheur :

  • C : (Control) la touche Ctrl ;
  • M : (Meta) la touche ALT ;
  • S : (Shift) la touche Maj ;
  • s : (Super) la touche WIN ;
  • SPC : (Space) la touche Espace ;
  • buffer : Un… heu… buffer.

Package.el : un gestionnaire de packages

Emacs 24 a introduit un gestionnaire de packages. On peut maintenant installer des packages automatiquement pour ajouter de nouvelles fonctionnalités sans quitter son Emacs chéri.

Ajout de dépôts et initialisation

Il suffit de rajouter ces quelques lignes à son .emacs :

(require 'package)
(package-initialize) ;; initialisation de package
  (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) ;; ajout du dépôt "melpa"
  (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) ;; ajout du dépôt "marmalade"

Installer des packages

  • lister tous les packages : M-x list-packages ;
  • installer un package : M-x package-install Entrée <package> Entrée.

Un article très complet sur le sujet est disponible chez Xah Lee.

Ido : une meilleure navigation parmi les buffers

Ido pour "Interactively DO things" est un mode qui permet de naviguer entre les fichiers et les buffers d'Emacs de manière beaucoup plus rapide en surchargeant ces différentes opérations. Il est disponible par défaut depuis Emacs 22 (soit juin 2007).

Activer ido

À ajouter dans son .emacs :

(require 'ido)
  (setq ido-enable-flex-matching t) ;; activer le fuzzy matching pour trier les résultats
  (setq ido-everywhere t) ;; activer ido pour find-files et les buffers
  (ido-mode 1) ;; activer ido

Ido en pratique

  • changer de buffer : C-x b <premières lettre> puis Entrée pour sélectionner le candidat courant ;
    • on peut naviguer entre les différents candidats avec C-s (suivant) et C-r (précédent) ;
    • Tab affiche la liste des candidats dans un nouveau buffer ;
  • ouvrir un nouveau fichier : C-x C-f ;
    • Retour arrière pour aller au répertoire parent ;
    • afficher un buffer dired dans le répertoire courant : C-d ;
    • créer un nouveau sous-répertoire : M-m ;
    • forcer la création d'un nouveau fichier avec le nom entré : C-j.

Il suffit de l'essayer pour comprendre immédiatement son utilité.
Un article complet de présentation et quelques astuces sont disponibles chez masteringemacs.

Ido-ubiquitous : obtenir ido partout

Le mécanisme d'ido n'est disponible que pour find-files et la navigation entre les buffers. On aimerait pourtant l'utiliser partout. Heureusement, ido-ubiquitous ajoute cette possibilité. Il va remplacer le système de complétion natif d'Emacs dès que possible. Il sera donc disponible pour tous les packages utilisant ce mécanisme.
Pour l'installer, on passe par package.el :
M-x package-install Entrée ido-ubiquitous Entrée

On rajoute ensuite dans son .emacs :

(require 'ido-ubiquitous)
(ido-ubiquitous-mode t)

D'après certains gourous d'Emacs il est nécessaire de rajouter quelques lignes pour assurer le bon fonctionnement d'ido-ubiquitous avec les versions les plus récentes de certains packages. Faisons leur confiance :

;; Fix ido-ubiquitous for newer packages
(defmacro ido-ubiquitous-use-new-completing-read (cmd package)
  `(eval-after-load ,package
     '(defadvice ,cmd (around ido-ubiquitous-new activate)
        (let ((ido-ubiquitous-enable-compatibility nil))
          ad-do-it))))

(ido-ubiquitous-use-new-completing-read webjump 'webjump)
(ido-ubiquitous-use-new-completing-read yas/expand 'yasnippet)
(ido-ubiquitous-use-new-completing-read yas/visit-snippet-file 'yasnippet)

Smex ou M-x amélioré à la sauce ido

Smex est une extension fort utile d'ido. En effet, ce dernier est très pratique mais on aimerait bien pouvoir l'utiliser lors de l'appel de fonctions (M-x). C'est ici que smex entre en jeu : il surcharge la commande M-x
N'étant pas disponible par défaut, il est nécessaire de l'installer. Heureusement, on dispose d'un gestionnaire de packages pour automatiser la tâche :
M-x package-install Entrée smex Entrée
Les sources de smex sont disponibles chez Github.

Installation et activation

Rajouter dans son .emacs :

(require 'smex) ; Not needed if you use package.el
(smex-initialize)
(global-set-key "\M-x" 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands)

Smex en pratique

Smex

Recentf : obtenir la liste des derniers fichiers ouverts

Principe et utilisation

Il est possible de demander à Emacs de garder la trace des derniers fichiers ouverts en utilisant recentf (intégré depuis Emacs 21). Il suffit de quelques lignes dans son .emacs :

(require 'recentf)
(setq recentf-max-saved-items 50) ;; fixer le nombre d'enregistrements à 50
(recentf-mode 1) ;; l'activer

la fonction ido-recentf-open permet d'obtenir une liste de ces fichiers : M-x ido-recentf-open. On peut bien entendu lui assigner un raccourci clavier :

(global-set-key (kbd "C-x C-r") 'ido-recentf-open)

Combiner recentf et ido :

masteringemacs.org propose une intégration élégante de recentf et ido :

(require 'recentf)

;; get rid of `find-file-read-only' and replace it with something
;; more useful.
(global-set-key (kbd "C-x C-r") 'ido-recentf-open)

;; enable recent files mode.
(recentf-mode t)

; 50 files ought to be enough.
(setq recentf-max-saved-items 50)

(defun ido-recentf-open ()
  "Use `ido-completing-read' to \[find-file] a recent file"
  (interactive)
  (if (find-file (ido-completing-read "Find recent file: " recentf-list))
      (message "Opening file...")
    (message "Aborting")))

Yasnippet : insérer des templates simplement

Yasnippet est un système de gestion de templates. Il permet d'insérer un morceau de texte en tapant une abréviation. Ces abréviations dépendent du mode du buffer actif.

Installation et activation

Pour l'installation, il suffit de faire confiance à package.el :
M-x package-install Entrée yasnippet Entrée
Pour l'activer, comme toujours, quelques lignes sont nécessaires dans son .emacs :

(require 'yasnippet) ;; not needed if you use package.el
(yas-global-mode 1)

Utilisation et personnalisation

Pour insérer un template : Tab (pour yas/expand)
De nombreux templates sont définis par défaut pour la plupart des modes (C/C++, HTML, Perl, Python, latex, Markdown, Ruby, SQL, CSS, etc.)
Bien entendu, il est possible d'ajouter ses propres templates (des explications complètes ici).
On peut également trouver un nombre incalculable de templates sur le web. Il peut être utile de les rajouter dans un sous-répertoire de son emacs.d . On les chargera ensuite depuis son .emacs :

(add-to-list 'load-path "~/.emacs.d/mes-supers-snippets")

Auto-complete : une complétion visuelle

Auto-complete est un mode qui permet d'afficher et de trier des candidats à la complétion de la saisie courante. L'un de ces points forts est qu'il est possible de fournir et trier les candidats à la sélection.
Auto-complete en action

Installation et activation

Rien de bien extraordinaire avec package.el : M-x package-install Entrée auto-complete Entrée
Pour l'activer, il suffit d'ajouter deux lignes à son .emacs :

(require 'auto-complete-config)
(ac-config-default)

Pour naviguer plus facilement entre les candidats :

(define-key ac-completing-map (kbd "C-n") 'ac-next)
(define-key ac-completing-map (kbd "C-p") 'ac-previous)

Il est par ailleurs possible d'étendre la liste des candidats pour un mode donné avec d'autres packages (par exemple auto-complete-octave pour le mode octave).

Utiliser ido et auto-complete ensemble

Il est nécessaire d'activer ido avant auto-complete dans son .emacs . Pour que les deux cohabitent harmonieusement, on ajoutera ces quelques lignes à la configuration d'auto-complete :

(add-to-list 'ac-sources 'ac-source-yasnippet) ;; Let's have snippets in the auto-complete dropdown

;;; set the trigger key so that it can work together with yasnippet on tab key,
;;; if the word exists in yasnippet, pressing tab will cause yasnippet to
;;; activate, otherwise, auto-complete will
(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")

Ibuffer : gérer ses buffers intelligemment

Ibuffer permet d'afficher et manipuler la liste de tous les buffers ouverts de la même manière que dired pour les répertoires. Il est partie intégrante d'Emacs depuis la version 22. Il n'y a donc rien à installer. La configuration est fort simple. Comme toujours, cela se passe dans son .emacs :

(require 'ibuffer) 
(global-set-key (kbd "C-x C-b") 'ibuffer) ;; remplace buffermenu

Classer ses buffers en catégories

L'une des fonctionnalités les plus intéressantes de ibuffer est la possibilité de trier les buffers ouverts suivant différentes catégories que l'on peut personnaliser. Par exemple, (code tiré de emacs-fu) :

(setq ibuffer-saved-filter-groups
  (quote (("default"      
            ("Org" ;; all org-related buffers
              (mode . org-mode))  
            ("Mail"
              (or  ;; mail-related buffers
               (mode . message-mode)
               (mode . mail-mode)
               ;; etc.; all your mail related modes
               ))
            ("MyProject1"
              (filename . "src/myproject1/"))
            ("MyProject2"
              (filename . "src/myproject2/"))
            ("Programming" ;; prog stuff not already in MyProjectX
              (or
                (mode . c-mode)
                (mode . perl-mode)
                (mode . python-mode)
                (mode . emacs-lisp-mode)
                ;; etc
                )) 
            ("ERC"   (mode . erc-mode))))))

(add-hook 'ibuffer-mode-hook
  (lambda ()
    (ibuffer-switch-to-saved-filter-groups "default")))

Occur : faire un grep sur les buffers ouverts

Introduction

Le mode occur permet d'obtenir la liste de toutes les lignes contenant une expression régulière. Cette liste s'affiche dans un nouveau buffer (*Occur*) et la recherche se limite au buffer actif. Pour l'appeler, rien de plus simple :
M-x occur Entrée expression-a-chercher Entrée
Pour chercher une occurrence dans plusieurs buffers, on peut utiliser la commande M-x mutli-occur.

Multi-occur sur un mode donné

masteringemacs propose une personnalisation permettant de rechercher l'expression régulière parmi tous les buffers ouverts du même mode que le buffer actif. Son code est le suivant :

(eval-when-compile
  (require 'cl))
(defun get-buffers-matching-mode (mode)
  "Returns a list of buffers where their major-mode is equal to MODE"
  (let ((buffer-mode-matches '()))
   (dolist (buf (buffer-list))
     (with-current-buffer buf
       (if (eq mode major-mode)
           (add-to-list 'buffer-mode-matches buf))))
   buffer-mode-matches))

(defun multi-occur-in-this-mode ()
  "Show all lines matching REGEXP in buffers with this major mode."
  (interactive)
  (multi-occur
   (get-buffers-matching-mode major-mode)
   (car (occur-read-primary-args))))
;; global key for `multi-occur-in-this-mode' - you should change this.
(global-set-key (kbd "C-<f2>") 'multi-occur-in-this-mode)

La suite

Il est temps de s'arrêter pour cette première partie. Au prochain épisode, on présentera notamment uniquify, iedit, flycheck, jedi (pas le chevalier), org-mode et ace-window.

  • # starter kits

    Posté par . Évalué à 4.

    Super initiative !
    Dans les commentaires du journal on a parlé de starter kits pour ceux qui souhaitent bien commencer (plein de bonnes choses de bien configurées). Et moi je recommande Prelude: https://github.com/bbatsov/prelude.

    On a une petite liste ici: http://wikemacs.org/wiki/Starter_Kits

  • # vim => evil-mode

    Posté par . Évalué à 2.

    Je me retiens de parler de toutes mes extensions préférées, mais juste une chose: que ceux qui préfèrent l'édition modale de vim essayent l'émulation de evil-mode:

    Alt-x evil-mode RET
    

    C'est faire la paix dans le monde en pactisant avec le démon. N'est-ce pas tentant ?

    • [^] # Re: vim => evil-mode

      Posté par . Évalué à 4.

      Je ne m'explique vraiment pas la popularité croissante de vim par rapport à Emacs. D'accord, l'édition modale, l'ubiquité, mais cette popularité me semble un peu disproportionnée. Ou alors c'était déjà comme ça avant…

      Je dis tout ça, suite à ce sondage que j'ai découvert sur developpez.com

      Pourtant Auctex/reftex me semblait réellement être plus performant que vim pour le LaTeX. Je dirais même qu'avec Org-mode et ESS, ce sont les arguments de poids pour Emacs.

      Cette impression de préférence pour vim, on peut la retrouver sur Stack Overflow ou AlternativeTo.net.

      J'ai raté quelque chose ? Un effet de mode ? Ou c'est juste pour énerver Richard ?

      • [^] # Re: vim => evil-mode

        Posté par . Évalué à 6.

        Je connais peu – mais alors vraiment très peu – Emacs, mais j'ai eu l'occasion d'utiliser Vim quotidiennement au boulot pendant deux mois, et j'essaye de m'exercer à titre personnel. Ce que j'ai adoré avec cet éditeur de texte, c'est le côté très « sémantique » de son utilisation.

        Exemple :

        def is_cool?
          puts "Bowties are cool"
        end
        

        Je veux remplacer la chaîne de caractère "Bowties are cool".
        Je tape :

        /Bow[entrée]ci"

        / me fait passer en mode recherche
        Bow suivi de [entrée] me positionne sur le B de Bowties.
        ci", pour change inner " supprime tout le texte entre les guillemets et me passe en mode édition à cet endroit.

        Le truc qui est bien, c'est qu'on peut combiner les commandes : diw pour delete inner word, dt$ pour delete to $ (le symbole dollar représente la fin de la ligne), etc…

        C'est bête, et c'est vraiment la base de la base, mais c'est super rapide et agréable à l'utilisation. Et ça donne une réelle impression de « fluidité » dans le travail. Après, je suppose qu'Emacs a aussi ce genre d'options, mais je pense que Vim séduit parce qu'au-delà de son aspect hyper-épuré (pour ne pas dire limite rébarbatif), il se révèle une fois compris ses mécanismes de base d'une efficacité redoutable.

        • [^] # Re: vim => evil-mode

          Posté par (page perso) . Évalué à 4.

          il se révèle une fois compris ses mécanismes de base d'une efficacité redoutable.

          vi vi vi…
          un peu comme Emacs, rha si seulement il incluait un éditeur de texte  !

  • # fastnav

    Posté par . Évalué à 0.

    Superbe journal, emacs, bien que possédant quelques vieilleries est un superbe éditeur

    je vous conseille fastnav, un module qui est bien, je ne peux plus m'en séparer

    http://www.emacswiki.org/FastNav

    • [^] # Re: fastnav

      Posté par (page perso) . Évalué à 2.

      Youpi, et il fait quoi ?

      • [^] # Re: fastnav

        Posté par . Évalué à 1.

        Si j'ai bien compris (je ne l'ai pas testé) il permet une navigation rapide dans un buffer.
        Personnellement, j'utilise ace-jump-mode. On peut voir une vidéo de démonstration chez Emacs Rocks!

      • [^] # Re: fastnav

        Posté par . Évalué à 0.

        tu cliques sur le lien. Ca s'appelle le web.

        Après, si tu as la flemme, tu peux tenter une interprétation.
        fast et nav… ODIL

        • [^] # Re: fastnav

          Posté par (page perso) . Évalué à 4.

          O, D, I et maintenant L. ODIL, qu'est-ce que ça peut bien vouloir dire ?

        • [^] # Re: fastnav

          Posté par (page perso) . Évalué à -2.

          Si ça t'emmerde, ne poste pas garçon…

          • [^] # Re: fastnav

            Posté par . Évalué à -7. Dernière modification le 16/10/14 à 01:13.

            ta réaction d'abruti d'assisté m'emmerde.

            maintenant, parlons emacs à la place de troller comme un goret et venir pourrir l'excellent journal de ptitjano<

            • [^] # Re: fastnav

              Posté par (page perso) . Évalué à 5.

              Merci de rester courtois dans les échanges.

            • [^] # Re: fastnav

              Posté par (page perso) . Évalué à -2.

              Qui es-tu donc pour venir me taxer d'assiste ? On se connait d'ou ? Je poste avec ma véritable identité et ne me cache pas derrière un pseudo pour insulter autrui. Fais-en de meme pour que je puisse savoir a qui j'ai a faire.

              Tu sais, si tu le souhaites, un bon vieux M-x doctor RET peut soulager ta condition de frustre.

              Allez, C-x C-c l'ami

              • [^] # Re: fastnav

                Posté par . Évalué à 1.

                Tout ce fil de discussion est hallucinant de bêtise et totalement disproportionné, tu en fais des caisses pour une information qui est disponible en 1 clic.

                Objectivement, tu aurais pu ajouter en commentaire les informations que tu estimais manquantes au lieu de jouer sur le registre de la condescendance et de l'orgueil mal placé. C'est ça l'esprit du logiciel libre, et c'est dans cette esprit que j'ai tenté de faire découvrir une extension que j'appréciais. ptitjano< a eu cette curiosité, a ajouté un commentaire et a fait le job à ta place.

                Et comme justement, tu postes sous ton vrai nom, je vais me permettre de t'adresser ce dernier conseil : Linuxfr étant bien référencé, tu devrais éviter ce genre de comportement agressif, tu ignores qui va lire ces lignes et dans combien de temps.

                • [^] # Re: fastnav

                  Posté par (page perso) . Évalué à 3.

                  Et comme justement, tu postes sous ton vrai nom, je vais me permettre de t'adresser ce dernier conseil : Linuxfr étant bien référencé, tu devrais éviter ce genre de comportement agressif, tu ignores qui va lire ces lignes et dans combien de temps.

                  En gros, vu que tu es bien plus agressif que lui initialement (tu es dans l'insulte directe) mais que tu postes sous pseudo, ça signifie que tu assumes totalement le fait de passer par un pseudo pour pouvoir insulter mais que si tu utilisais ton vrai nom, tu le serais moins.
                  C'est d'un cynisme absolu et ça rend ton personnage ici assez débectable, mais c'est cohérent :)

  • # Gestionnaire de paquets... *beurk*

    Posté par (page perso) . Évalué à 0.

    Je trouve que cette mode est juste horrible transposée dans le monde GNU Emacs.

    Je ne vois pas ce que le wget/tar/cp/.emacs a de si compliqué pour un utilisateur qui se lance. Apres tout, ce n'est pas n'importe qui qui part dans l'idée d'utiliser GNU emacs et je pense qu'il doit être au moins capable de lire la doc (faire les tutoriel, etc) et donc d'installer ses extensions manuellement sans recourir a des "gestionnaires de package".

    Perso, je ne leur trouve aucun intérêt et pire, je les trouve bien intrusif pour ce qu'ils sont.

    Sus a M-x install-package & co

    Voila, c'est mon coup de gueule de vieux con (oui ça fait un petit moment que je vis dans GNU emacs)

    • [^] # Re: Gestionnaire de paquets... *beurk*

      Posté par (page perso) . Évalué à 3.

      La gestion des dépendances et les mises à jour ?

      • [^] # Re: Gestionnaire de paquets... *beurk*

        Posté par (page perso) . Évalué à 2.

        Un .emacs ca se chérit :) Comment faisait-on avant ? :P

        Perso, il aurait plus tendance a se mettre dans mes pattes qu'a me rendre service.
        Bon ok, je ne suis pas non plus le plus gros consommateur d'extensions non "officielles", je me contente de quelques unes que je mets dans un répertoire particulier lorsque je les "personnalise". Je fais rarement les mises a jour; je me fabrique mes propres MAJ. Parfois je fais un envoie upstream mais la plupart du temps, non.

    • [^] # Re: Gestionnaire de paquets... *beurk*

      Posté par (page perso) . Évalué à 2.

      Je me suis fait la même réflexion, cela dit, ça s'est révélé pratique lorsque j'ai eu à configurer emacs sur des postes tiers.

      Car au final :
      - Ceux qui ne l'utilisent pas ne verrons pas de différences avec avant (à ma connaissance) et pourront continuer à faire des (add-to-list 'load-path …)
      - Ceux qui commencent à pratiquer emacs l'utiliseront éventuellement, seront content d'arriver rapidement à un environnement qui leur convient et auront un apprentissage un peu plus "doux" des joyeusetés elispienne.

      Au mieux, on aime, au pire, on ignore. Personnellement, j'ai un mix des deux.

      Très bonne dépêche, en passant, j'ai découvert des extensions à la lecture :).

    • [^] # Re: Gestionnaire de paquets... *beurk*

      Posté par (page perso) . Évalué à 5.

      Peut-être que c'est pratique pour ceux qui veulent utiliser emacs sans mettre trop les mains dans le cambouis ou bien qui ne veulent pas se casser l'oignon lorsqu'ils veulent l'utiliser quelque part et qu'ils n'ont pas accès à leur .emacs et l'envie de refaire des wget/tar/cp etc
      Oui, je sais, c'est assez déroutant de se dire qu'on peut avoir envie d'utiliser emacs sans se faire de mal. Quelle utilisation "horrible" de cet éditeur que de vouloir se simplifier la vie !

      • [^] # Re: Gestionnaire de paquets... *beurk*

        Posté par . Évalué à 1.

        Il me paraissait tout de même important de présenter le gestionnaire de paquets qui est une des nouveautés les plus visibles de Emacs 24 (longtemps décrié, il est finalement arrivé). Si c'est pour ensuite écrire dans les installations, de passer par des wget/cp/add-to-list, ça me paraissait pas très cohérent ;)
        Je suis également un gros partisan de l'installation manuelle et de la personnalisation à outrance de son .emacs.

        • [^] # Re: Gestionnaire de paquets... *beurk*

          Posté par (page perso) . Évalué à 1.

          Ah mais je ne critique pas ton article, je donne simplement mon opinion sur le fait meme d'avoir ce genre de chose sur mon vieil ami que je trimballe depuis 1995 ou 1996 ! (oh puree je suis un vieux machin !)

  • # Mes incontournables, que dis-je, mes indispensables

    Posté par (page perso) . Évalué à 2.

    Ce ne sont pas forcement des extensions au sens ou l'entend ptitjano< puisqu'ils font partie de la distribution officielle de GNU emacs, mais il est de bon ton de les citer tout de meme:

    • gnus
    • org-mode
    • eshell/tramp
    • ido
    • rcirc

    Dans les extensions qui me sont tout aussi indispensables quotidiennement:

    • GNU eev (un accélérateur pour mon boulot de DBA: prises de notes (SQL, PL, script, …), exécutions de script ligne par ligne, ouverture de canaux sur mes bases depuis mes buffers, etc.) GNU eev est un ovni dans mon écosystème. Il est redoutable
    • jabber-el

    Par contre, j'ai horreur des bidules type auto-complete, yasnippet et compagnie.

    Je vais tester smex que je ne connais que de nom et j'aimerais un jour tester anything.

    Mais bon, il n'y a pas assez d'une vie pour tout tester/utiliser/maitriser dans GNU emacs.

    • [^] # Re: Mes incontournables, que dis-je, mes indispensables

      Posté par . Évalué à 1. Dernière modification le 15/10/14 à 14:18.

      Je pense qu'il est existe une différence entre des extensions de type ido/smex/uniquify et gnus/jabber-el/eshell.
      La première catégorie d'extensions (dans le sens étendre les possibilités immédiates d'Emacs) enrichit l'utilisation directe que l'on a d'Emacs (mieux naviguer dans un texte, éditer plus rapidement un fichier, etc) alors que la seconde vient ramener dans le giron d'Emacs des choses que l'on faisait habituellement à l'extérieur d'Emacs (consulter ses mails, taper des lignes de commandes dans un terminal, discuter avec un client jabber, etc).
      J'estime (en tout cas c'est mon expérience personnelle) qu'on commence par utiliser des extensions de la première catégorie puis, au fur et à mesure de son apprentissage, on se met à piocher dans des extensions de la seconde catégorie car on peut plus se passer d'Emacs et on aimerait tout faire "The Emacs Way" :)
      En ce qui concerne org-mode, je pense qu'il appartient aux deux catégories. Il enrichit immédiatement son utilisation d'Emacs (prise de notes rapides, TO-DO list) et il permet de faire tellement de choses dans Emacs qu'il appartient également à la seconde (écrire du latex, exporter en odt ou en pdf, tenir son blog, synchroniser sa to-do list sur son téléphone, tenir son agenda, et tellement d'autres choses). Ce doit être une des raisons pour lesquelles je le trouve si déroutant.

    • [^] # Re: Mes incontournables, que dis-je, mes indispensables

      Posté par (page perso) . Évalué à 2.

      C'est une tuerie ce eev. Merci pour la découverte !

      • [^] # Re: Mes incontournables, que dis-je, mes indispensables

        Posté par (page perso) . Évalué à 2.

        Oh oui.

        généralement j'utilise une infime partie du système a tel point que tous les 4 matins, je retourne poser des questions de béotiens sur la façon de faire tel ou tel truc.

        En fait, tout comme org-mode, il faut démarrer petitement et au fur et a mesure, les besoins augmentent et on triture d'autres pans de cette magnifique extension.

        Aujourd'hui j'estime ne pas utiliser plus de 40% de GNU lev et pourtant, depuis la rentree que je suis reparti intégralement dessus, il me permet de bosser tout le temps avec. Excellent complément a org-mode au passage

        Xavier

        • [^] # Re: Mes incontournables, que dis-je, mes indispensables

          Posté par (page perso) . Évalué à 2.

          J'ai passé une partie du WE (enfin, ce que mes enfants me laissent en temps…) à lire des trucs sur eev.
          Je trouve ça assez captivant, mais le créateur du bouzin n'est pas très doué en communication, j'ai été assez déçu par le doc principal et les vidéos, j'ai eu du mal à rentrer dedans.
          En outre, si j'ai bien compris, il bosse sur eev2 et les dernières news remontent à 2012.
          Du coup, je ne sais pas trop si ça vaut le coup de s'investir dans la version précédente, s'il y a beaucoup de différences entre les deux, etc.
          Tu as des URL intéressantes sur cette extension ?

    • [^] # Re: Mes incontournables, que dis-je, mes indispensables

      Posté par (page perso) . Évalué à 2.

      Par contre, j'ai horreur des bidules type auto-complete, yasnippet et compagnie.

      Si tu n'expliques pas ce que tu leur reproches, je ne vois pas l'intérêt d'en parler.

      • [^] # Re: Mes incontournables, que dis-je, mes indispensables

        Posté par (page perso) . Évalué à 2.

        Je leur reproche tout simplement de se mettre dans mes pattes. Je préfère tout taper, peut m'importe d'être plus lent que le système, plutôt qu'une "aide" extérieure n'aliène ma façon de travailler :)

        Je souhaite simplement taper les caractères un a un sans me demander si un de ces caractères ne va pas déclencher un truc incontrôlable (de mon point de vue) et imprévu qui va me faire crier. Le truc genre, tu tapes une "(" et le machin t'en cogne une en plus pour "équilibrer" sauf que tu tapes aussi machinalement la parenthese fermante ce qui t'en fait 2 et bien sur, tu ne parviens pas supprimer simplement le doublon.

        Certains pourront dire que je ne maitrise pas mon affaire, il y a du vrai la dedans. Je ne doute pas que ces extensions ont forcement fait des efforts pour s'accommoder de ces situations et ont fait des progrès mais je ne veux pas retourner faire le test :D

        Au pire, j'utilise abbrev-mode pour quelques raccourcis que je maitrise et que je ne souhaite pas taper d'une autre manière mais c'est en gros tout ce que j'arrive a tolérer ;)

        Affaire de gout tout simplement.

  • # Recentf et ido

    Posté par (page perso) . Évalué à 2.

    Plutot que d'utiliser la fonction ido-recentf-open, je trouve plus pratique de faire (setq ido-use-virtual-buffers t), qui permet que lorsqu'on fait C-x b pour changer de buffer, il indique egalement les fichiers recemments fermes. Comme ca, inutile de se demander si le buffer est ouvert ou non.

    http://l-lang.org/ - Conception du langage L

  • # previous-error et next-error

    Posté par . Évalué à 2.

    Pour occur, grep, compile et bien d'autres modes, les commandes previous-error et next-error permettent de se déplacer facilement d'une ligne à l'autre en chargeant automatiquement le fichier ou le buffer concerné.

    Ces commandes sont déjà mappées sur M-g p et M-g n mais personnellement je les met aussi sur F11 et F12.

    (global-set-key [f11] 'previous-error)
    (global-set-key [f12] 'next-error)

  • # et de l'autre côté

    Posté par (page perso) . Évalué à 4.

    Chez vim on a:

    • gestionnaire de paquet: Vundle

    • Buffers: bufexplorer, probablement pas aussi puissant que ce dont on parle ici

    • snippets: UltiSnips (très pratque)

    • complétion: YouCompleteMe (qui complète sans avoir besoin de toucher quoi que ce soit, on valide avec [tab]), très pratique aussi. Il intègre notamment Jedi pour Python. La capture animée ici vous permettra de comprendre mieux: https://valloric.github.io/YouCompleteMe/

    • à utiliser avec Syntastic qui valide la syntaxe dans de nombreux langages

    et en bonus le plugin DrawIt permet de faire de zolis dessins ASCII dans vos READMEs.

    • [^] # Re: et de l'autre côté

      Posté par (page perso) . Évalué à 1.

      et en bonus le plugin DrawIt permet de faire de zolis dessins ASCII dans vos READMEs.

      on pouvait déjà inclure le résultat de cowsay aussi !

      • [^] # Re: et de l'autre côté

        Posté par (page perso) . Évalué à 1.

        Il y a tout cela et bien plus dans GNU emacs ;)

        On peut meme faire entrer tout et n'importe quoi dans un buffer:

        M-x shell-command RET RET

        (je suppose que vim offre un peu le meme genre de service)

        • [^] # Re: et de l'autre côté

          Posté par (page perso) . Évalué à 2.

          (je suppose que vim offre un peu le meme genre de service)

          bin vi n'est qu'un éditeur de texte et oui, il propose ce genre de service, ce serait bien qu'Emacs ne soit pas qu'un OS et propose un jour un éditeur de texte (compatible vi de préférence).

          o_O tu n'as jamais utilisé vi ? c'est à des années-lumière de Emacs (bon, en réalité, c'est installé par défaut et ça suffit pour éditer les fichiers de conf' sur les serveurs), emacs aurait permis de déployer une modif' sur tous les serveurs impactés par l'optimisation de conf' (mais ce n'est pas l'objet de vi).

          Tu le fais exprès ou tu n'as pas compris qu'emacs est l'OS ultime et propose déjà tout ? (en donnant des exemples indispensables, là où vi n'est qu'un éditeur de texte et qu'un jour emacs en aura aussi un ?).

          • [^] # Re: et de l'autre côté

            Posté par . Évalué à 1. Dernière modification le 16/10/14 à 08:46.

            ce serait bien qu'Emacs ne soit pas qu'un OS et propose un jour un éditeur de texte (compatible vi de préférence).

            Tu veux dire comme avec Alt-x evil-mode RET ?

  • # Super initiative !

    Posté par . Évalué à 2.

    Bravo pour ce texte !
    Joli exploit d'avoir aussi bien résumé ces différentes extensions.
    J'attends avec impatience la suite, dont le formidable org-mode (pas simple à synthétiser, rien que sur babel, il y a de quoi faire ;-) ).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.