- Kiedy dodajemy coraz więcej wierszy do
~/.emacs.d/init.el
różnych celów (dla trybu python, dla emacs-eclim, dla ...), plik staje się długi i mniej czytelny. Czy istnieje sposób na uporządkowanie jego zawartości? Mój obecny
~/.emacs.d
wygląda tak$ 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
został zainstalowany ręcznie, podczas gdyemacs-eclim-20140809.207
został zainstalowany przezelpa
, i nie jestem w 100% pewien, że pozostałe rzeczyelpa/
zostały wykonane przezelpa
. Jak mogę uporządkować treść~/.emacs.d/
?
28
.emacs
i.wl
nie są wystarczająco długie.Klasycznym sposobem jest podzielenie
.emacs
plików na osobne. Na przykład możesz przenieść wszystkie swoje treści internetowe,~/.emacs.d/web-config.el
a następnie załadować je do wewnątrzinit.el
:Jeśli chcesz zachować
~/.emacs.d
nieco większą organizację, możesz również przenieść te pliki konfiguracyjne do ich własnego katalogu:Teraz możesz po prostu przejść do odpowiedniego pliku podczas wprowadzania zmian w konfiguracji.
Brakuje w tym zmiennych ustawianych za pomocą systemu dostosowywania. Wszystko to nadal będzie w głównym init.el. Najwyraźniej istnieje małe narzędzie zwane init split, które pozwala ci ustalać reguły, które ustawienia dostosowują, dokąd, ale nigdy nie korzystałem z niego osobiście. Alternatywnie system „dostosowywania” można skonfigurować tak, aby używał osobnego pliku do modyfikacji ustawień. Ustaw
custom-file
zmienną, aby określić, gdzie należy odczytać i zapisać ustawienia „dostosowywania” .Jeśli chodzi o sam katalog, zawsze byłem zadowolony z domyślnego układu. Główną zmianą, którą wprowadziłem, było utworzenie katalogu dla wszystkich własnych niestandardowych pakietów i bibliotek, którymi nie zarządza
package.el
. Daje to jeden dom dla mojego niestandardowego elipsa, który nie jest związany z konfiguracją.źródło
elpa
zarządzana przezelpa
? Czy mogę przenieść je gdzie indziej?custom-file
zmiennej. ŹródłoJeśli podoba Ci się tryb Org, możesz go użyć do uporządkowania
.emacs
bez dzielenia go. W mojej obecnej konfiguracji mój.emacs
plik po prostu ładuje plik init.org, pod którym mam~/.emacs.d/init/init.org
Używając różnych plików,
grep
zamiast prostegoC-s
wyszukiwania czegoś, i tak dalej. Ponadto łatwiej jest dodać kilka poziomów do organizacji.źródło
org-babel-load-file
. Słodkie! (Przykłady: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Po prostu przenieś fragmenty kodu
init.el
do oddzielnych plików (bibliotek), które następnierequire
. (Użyjprovide
w bibliotekach, aby byćrequire
.) Umieść te pliki w dowolnym miejscu iload-path
odpowiednio je zaktualizuj .źródło
~/.emacs.d/
? You offer no specification of what you want. You are not constrained to having everything in one directory. You can put stuff anywhere you like, and modifyload-path
accordingly. If some program/tool only puts stuff in~/.emacs.d/
(i.e., if you cannot tell it where to put stuff), then move it where you want it after that program/tool is done.(require 'foobar)
is an example of usingrequire
.(add-to-list 'load-path "/my/lisp/dir")
is an example of modifyingload-path
.(provide 'foobar)
is an example of usingprovide
.init.el
can load libraries located anywhere, not just within~/.emacs.d/
.I use the suggestion by targzeta found on the Emacs Wiki: Load directory.
Basically I have a ~/.emacs.d/load-directory.el:
Then I just put separate files in my ~/.emacs.d/config:
And finally I have this in my ~/.emacs.d/init.el:
źródło
There is obviously more than one way to skin this particular cat. My current favourite is to use
outline-minor-mode
with outshine. Excerpt:Note that you will need to get outshine from your favourite package repository.
źródło
I use the following structure to keep track of packages and files
I then use
use-package
to manage which packages are loaded and which customizations are set for each package. Most of the time onlyhack
andelpa
require updating, the other folders are often for one-off packages that I want to test or use briefly but do not need to load (even idly).custom.el
is for Customize settings, which I prefer not to use (and do not version even if I do use).defaults.el
is for general configuration (menu-bar, font, encoding, etc) that can then be overwritten in any .el file inuser-config/
to allow for a system that will work as I expect, but can be adjusted to fit the environment.I had previously tried to keep
functions
,macros
,advice
in separate packages to allow for delineation between content, but ran into definition/require issues so have put those back intoinit.el
. They may eventually be put back into~/.emacs.d/lisp/
.I try to keep
init.el
tidy, sort content by function and purpose so that finding it again will be straightforward. I've had the monolithicinit.el
file and kept adding new content at the end (or where I thought it might fit) and then would end up not knowing what I had added or where I had added it when I went to look for it (and sometimes searching usingisearch
did not help since I could not remember how I named things at the time).źródło
All of the existing answers address best practices for organizing manually created files, like
init.el
and friends. Equally important is the organization of all the automatically created files from various packages, and for this the packageno-littering
is excellent.źródło
I added
to emacs-lisp-mode-hook. Then add to the file sections "yasnippet", "packaging", "java mode", etc. This Works nice for my 1000 lines of code (comments included).
EDIT: Finally i switch between sections with helm-imenu. Actually helm hooks into normal imenu function automagically so all i need is
źródło
I split my relatively small
.emacs
file into three parts:emacs-custom.el for customizations, ripping out lots of bulky and useless data; the file is automatically rewritten without touching the main .emacs file, preventing spurious changes.
lg-lib.el for code rather than configuration: loading my own libraries from nonstandard source locations rather than from the packages directory and defining various functions (mostly copied and hacked in the absence of a proper package); it is another large reduction of .emacs line count.
The main .emacs file: without bulky code and bulky customization variables, it contains
require
calls for packages, variables that aren't part of the Customize system, and assorted function calls to load and initialize packages. I "organize" it by carefully keeping all lines pertaining to the same package or feature together, and further separating package loading and package-related settings from "core" functionality. A fairly representative excerpt:These sections are tiny, but they would remain manageable with many more lines of configuration for each package.
źródło
Follow the setup of an Emacs master, e.g., https://github.com/purcell/emacs.d
For example, regarding how to organize manually installed packages and packages installed from ELPA, Steven Purcell's setup has
Why follow a master? A major point of my "Master emacs in one year" is that newbies can thus efficiently avoid setup overhead and "gotchas."
I understand that many people don't agree with me, but here's my case (detailed in my article):
I started using Emacs by using Purcell's well-respected (1403 GitHub stars as of Nov 2014!), stable (5 years in development) configuration. Despite starting from that, I still had many problems. Steve Purcell helped me solve all those problems. (I actually became his Padawan for over a year.) By using his setup, and using his repo's issues to report problems, and taking advantage of his experience, I avoided wasting much time. Even today, I still observe many people using
git submodule
to manage the third-party plugins. Both Steve and I gave up usinggit submodule
for this because it can be such a PITA.But if you are very confident of your skills or much prefer self-learning, this is not the path for you.
źródło
[email protected]
, andwww.emacswiki.org
, and[email protected]
, and evendebbugs.gnu.org
. That said, there is nothing wrong with sharing one's init file, to serve others as food for thought. The advice is for newbies not to start out that way; the advice is not for people not to share their own startup approaches and tips.An innovative and simple way to cleanup your
.emacs.d
folder is to useorg-mode
and outline everything using source blocks. Then, in your.emacs
file, point to yourconfig.org
.A wonderful resource on this is Harry Schwartz. He has a youtube video that touches and a blog post that explains the details. I was able to follow it as an emacs noob and get all setup. Works like a charm. 1 file for my entire
init
.źródło