- Lorsque nous ajoutons de plus en plus de lignes
~/.emacs.d/init.el
à diverses fins (pour le mode python, pour emacs-eclim, pour ...), le fichier devient long et moins lisible. Existe-t-il un moyen d'aider à organiser son contenu? Mon courant
~/.emacs.d
ressemble à ceci$ ls * init.el auto-save-list: elisp: python-mode.el-6.1.3 elpa: archives auctex-readme.txt s-20140910.334 auctex-11.87.7 emacs-eclim-20140809.207 eshell: history
python-mode.el-6.1.3
a été installé manuellement, tandis que aemacs-eclim-20140809.207
été installé parelpa
, et je ne suis pas sûr à 100% que les autres éléments souselpa/
soient parelpa
. Comment puis-je organiser le contenu de~/.emacs.d/
?
28
.emacs
et.wl
ne sont pas assez longs.Une manière classique de procéder consiste à diviser votre
.emacs
fichier en fichiers séparés. Par exemple, vous pouvez déplacer tous vos contenus Web,~/.emacs.d/web-config.el
puis les charger à l'intérieurinit.el
:Si vous souhaitez garder votre
~/.emacs.d
un peu plus organisé, vous pouvez également déplacer ces fichiers de configuration dans leur propre répertoire:Maintenant, vous pouvez simplement accéder au fichier approprié lorsque vous apportez des modifications à votre configuration.
Une chose qui manque à cela est les variables définies via le système de personnalisation. Ceux-ci seront toujours tous dans votre init.el principal. Apparemment, il existe un petit utilitaire appelé init split qui vous permet de définir les paramètres de personnalisation, mais je ne l'ai jamais utilisé moi-même. Alternativement, le système «personnaliser» peut être configuré pour utiliser un fichier séparé pour ses modifications de vos paramètres. Définissez la
custom-file
variable pour spécifier où les paramètres de «personnalisation» doivent être lus et écrits .En ce qui concerne le répertoire lui-même, j'ai toujours été satisfait de la disposition par défaut. La principale modification que j'ai apportée a été la création d'un répertoire pour tous mes propres packages et bibliothèques personnalisés qui ne sont pas gérés par
package.el
. Cela donne une maison unique à mon elisp personnalisé qui n'est pas lié à la configuration.la source
elpa
géré parelpa
? Puis-je les déplacer ailleurs?custom-file
variable. SourceSi vous aimez le mode Org, vous pouvez l'utiliser pour organiser votre
.emacs
sans le diviser. Dans ma configuration actuelle, mon.emacs
fichier démarre simplement un fichier init.org que j'ai sous~/.emacs.d/init/init.org
En utilisant différents fichiers, vous devez au
grep
lieu deC-s
rechercher simplement quelque chose, etc. De plus, il est plus facile d'ajouter plusieurs niveaux à votre organisation.la source
org-babel-load-file
. Doux! (Exemples: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Déplacez simplement des morceaux de code
init.el
dans des fichiers séparés (bibliothèques), que vous avez ensuiterequire
. (À utiliserprovide
dans les bibliothèques pour êtrerequire
d.) Placez ces fichiers où vous le souhaitez et mettez-les à jour enload-path
conséquence.la source
~/.emacs.d/
? Vous n'offrez aucune spécification de ce que vous voulez. Vous n'êtes pas obligé de tout avoir dans un seul répertoire. Vous pouvez mettre des choses où vous voulez et les modifier enload-path
conséquence. Si un programme / outil ne met que choses dans~/.emacs.d/
( par exemple, si vous ne pouvez pas dire où mettre des choses), puis déplacez - le où vous voulez après ce programme / outil est fait.(require 'foobar)
est un exemple d'utilisationrequire
.(add-to-list 'load-path "/my/lisp/dir")
est un exemple de modificationload-path
.(provide 'foobar)
est un exemple d'utilisationprovide
.init.el
pouvez charger des bibliothèques situées n'importe où , pas seulement à l'intérieur~/.emacs.d/
.J'utilise la suggestion de targzeta trouvée dans le répertoire Emacs Wiki: Load .
Fondamentalement, j'ai un ~ / .emacs.d / load-directory.el:
Ensuite, je mets juste des fichiers séparés dans mon ~ / .emacs.d / config:
Et enfin j'ai ceci dans mon ~ / .emacs.d / init.el:
la source
Il y a évidemment plus d'une façon de dépouiller ce chat en particulier. Mon préféré actuel est d'utiliser
outline-minor-mode
avec outshine . Extrait:Notez que vous devrez sortir de votre référentiel de packages préféré.
la source
J'utilise la structure suivante pour garder une trace des packages et des fichiers
J'utilise ensuite
use-package
pour gérer quels packages sont chargés et quelles personnalisations sont définies pour chaque package. La plupart du temps uniquementhack
etelpa
nécessitent une mise à jour, les autres dossiers sont souvent destinés à des packages ponctuels que je souhaite tester ou utiliser brièvement mais que je n'ai pas besoin de charger (même inactif).custom.el
est pour les paramètres de personnalisation, que je préfère ne pas utiliser (et ne pas utiliser de version même si j'utilise).defaults.el
est pour la configuration générale (barre de menus, police, encodage, etc.) qui peut ensuite être écrasée dans n'importe quel fichier .eluser-config/
pour permettre un système qui fonctionnera comme je m'y attendais, mais qui peut être ajusté pour s'adapter à l'environnement.J'avais déjà essayé de garder
functions
,macros
,advice
dans des emballages séparés pour permettre la délimitation entre le contenu, mais dans la définition RAN / require questions ont donc mis de nouveau dans lesinit.el
. Ils peuvent éventuellement être réintégrés~/.emacs.d/lisp/
.J'essaie de garder en
init.el
ordre, de trier le contenu par fonction et par but afin que le retrouver soit simple. J'ai eu leinit.el
fichier monolithique et j'ai continué à ajouter du nouveau contenu à la fin (ou à l'endroit où je pensais qu'il pouvait convenir) et je finissais par ne pas savoir ce que j'avais ajouté ou où je l'avais ajouté quand je suis allé le chercher (et parfois, la recherche à l'aideisearch
n'a pas aidé car je ne me souvenais pas comment j'avais nommé les choses à l'époque).la source
Toutes les réponses existantes traitent des meilleures pratiques pour organiser des fichiers créés manuellement , comme
init.el
et amis. L'organisation de tous les fichiers créés automatiquement à partir de divers packages est tout aussi importante , et pour cela, le packageno-littering
est excellent.la source
J'ai ajouté
à emacs-lisp-mode-hook. Ajoutez ensuite au fichier les sections "yasnippet", "packaging", "mode java", etc. Cela fonctionne bien pour mes 1000 lignes de code (commentaires inclus).
EDIT: Enfin, je passe d'une section à l'autre avec helm-imenu. En fait, la barre se connecte automatiquement à la fonction imenu normale, donc tout ce dont j'ai besoin est
la source
J'ai divisé mon
.emacs
fichier relativement petit en trois parties:emacs-custom.el pour les personnalisations, arrachant de nombreuses données volumineuses et inutiles; le fichier est automatiquement réécrit sans toucher au fichier .emacs principal , empêchant les modifications parasites.
lg-lib.el pour le code plutôt que pour la configuration: charger mes propres bibliothèques à partir d'emplacements sources non standard plutôt que depuis le répertoire des packages et définir diverses fonctions (principalement copiées et piratées en l'absence d'un package approprié); il s'agit d'une autre réduction importante du nombre de lignes .emacs .
Le fichier .emacs principal : sans code volumineux et variables de personnalisation volumineuses, il contient des
require
appels de packages, des variables qui ne font pas partie du système Customize et des appels de fonctions assortis pour charger et initialiser des packages. Je "l'organise" en gardant soigneusement toutes les lignes se rapportant au même package ou à la même fonctionnalité, et en séparant davantage le chargement du package et les paramètres liés au package de la fonctionnalité "de base". Un extrait assez représentatif:Ces sections sont minuscules, mais elles resteraient gérables avec beaucoup plus de lignes de configuration pour chaque package.
la source
Suivez la configuration d'un maître Emacs, par exemple, https://github.com/purcell/emacs.d
Par exemple, concernant la façon d'organiser les packages installés manuellement et les packages installés à partir d'ELPA, la configuration de Steven Purcell a
Pourquoi suivre un maître? Un point majeur de mon "Master emacs en un an" est que les débutants peuvent ainsi éviter efficacement les frais généraux de configuration et les "accrochages".
Je comprends que beaucoup de gens ne sont pas d'accord avec moi, mais voici mon cas (détaillé dans mon article ):
J'ai commencé à utiliser Emacs en utilisant la configuration très respectée de Purcell ( 1403 étoiles GitHub en novembre 2014!), Stable (5 ans de développement). Malgré cela, j'avais encore beaucoup de problèmes . Steve Purcell m'a aidé à résoudre tous ces problèmes. (Je suis en fait devenu son Padawan pendant plus d'un an.) En utilisant sa configuration, en utilisant les problèmes de son référentiel pour signaler des problèmes et en profitant de son expérience, j'ai évité de perdre beaucoup de temps. Même aujourd'hui, j'observe encore de nombreuses personnes utilisant
git submodule
pour gérer les plugins tiers. Steve et moi avons renoncé à l'utilisergit submodule
pour cela car cela peut être un tel PITA .Mais si vous êtes très confiant dans vos compétences ou si vous préférez de loin l'auto-apprentissage, ce n'est pas la voie qui vous convient.
la source
[email protected]
, etwww.emacswiki.org
, et[email protected]
, et mêmedebbugs.gnu.org
. Cela dit, il n'y a rien de mal à partager son fichier init, à servir aux autres comme matière à réflexion. Le conseil est pour les débutants de ne pas commencer de cette façon; le conseil n'est pas pour les gens de ne pas partager leurs propres approches et astuces de démarrage.Un moyen innovant et simple de nettoyer votre
.emacs.d
dossier est d'utiliserorg-mode
et de décrire tout en utilisant des blocs source. Ensuite, dans votre.emacs
fichier, pointez sur votreconfig.org
.Harry Schwartz est une merveilleuse ressource à ce sujet. Il a une vidéo youtube qui touche et un blog qui explique les détails . J'ai pu le suivre en tant que noob emacs et obtenir toutes les configurations. Fonctionne comme un charme. 1 fichier pour mon entier
init
.la source