Emacs, ouverture de plusieurs fenêtres au démarrage

1

Quand je lance emacs, je voudrais faire apparaître 4 fenêtres et à l'intérieur de chaque fenêtre, un tampon devrait apparaître tel que spécifié dans mon fichier .emacs. Peut-être que dans la fenêtre en haut à gauche, le navigateur Web emacs w3m apparaît, dans la fenêtre en haut à droite, l’interpréteur python apparaît, dans la fenêtre en bas à gauche, la dernière fenêtre utilisée apparaît, et pour la fenêtre en bas à droite, un tampon vide apparaît.

  1. Comment puis-je écrire cette fonctionnalité dans elisp pour mon fichier .emacs?
  2. Où avez-vous trouvé cette information pour répondre à cette question? Avez-vous utilisé les pages d'aide d'Emacs?

Toute aide est grandement appréciée!

CodeKingPlusPlus
la source

Réponses:

1

La fonctionnalité que vous demandez est un désir commun parmi les utilisateurs d’Emacs. La bonne nouvelle est qu’il existe un certain nombre de packages existants qui feront ce que vous voulez. Mon préféré est workgroups.el. C'est remarquablement puissant. Vous pouvez l'installer avec ELPA. voici le référentiel GitHub, avec un excellent readme. L'ensemble du paquet est exceptionnellement bien documenté.

https://github.com/tlh/workgroups.el

Même si vous souhaitez apprendre à coder vous-même les manipulations de fenêtre et de tampon, je pense que vous allez apprendre plus rapidement et avec un meilleur style en étudiant un paquetage existant.

Tom Davey
la source
Où avez-vous entendu parler de ce forfait? Je souhaite devenir plus autonome en utilisant emacs.
CodeKingPlusPlus
Je devais télécharger, workgroups2mais quelles sont les commandes de base qui me donneront les fonctionnalités que je souhaite?
CodeKingPlusPlus
D'après ce que je peux dire, je devrais créer manuellement les 4 fenêtres de mon choix et les enregistrer en tant que groupe de travail.
CodeKingPlusPlus
> D'après ce que je peux dire, je devrais créer manuellement les 4 fenêtres de mon choix et les enregistrer en tant que groupe de travail?
Tom Davey
1
> D'après ce que je peux dire, je devrais créer manuellement les> 4 fenêtres que je veux et l'enregistrer en tant que groupe de travail? Oui. Enregistrez votre configuration de fenêtre en tant que premier groupe de travail (vous pouvez en avoir 9). Le premier groupe de travail est activé lorsque vous chargez workgroups.el, en utilisant require () dans votre fichier init.el ou .emacs. Je pense que j'ai d'abord appris l'existence du paquet sur le wiki d'Emacs. "Enregistrer la configuration de la fenêtre Emacs" est une recherche courante sur le net. Vous trouverez beaucoup de solutions et d'approches différentes.
Tom Davey
0

REMERCIEMENTS

J'ai concocté une solution à partir des éléments trouvés dans les pages suivantes:

REMARQUES

  • Vous n'avez pas spécifié le système d'exploitation que vous utilisez. Je vais supposer que c'est un peu la saveur de * nix. Corrige moi si je me trompe. Si vous utilisez Windows, vous pouvez toujours utiliser les .emacsmodifications que je suggère, mais ne pouvez pas utiliser la solution de contournement (voir ci-dessous).

  • Ma solution se charge emacsavec 4 fenêtres ouvertes, w3mmontrant Google en haut à gauche, un shell Python en haut à droite, le dernier fichier ouvert en bas à gauche et un scratchtampon vide en bas à droite. Cela fonctionne bien si vous lancez emacssans argument mais coupez la mise en page si vous ouvrez un fichier directement à partir de la ligne de commande:

    emacs foo.txt
    
  • Je suggère donc également une solution de contournement pour charger la présentation uniquement si aucun nom de fichier n'a été donné. Si vous voulez toujours charger la disposition de 4 fenêtres, ajoutez simplement les lignes lisp ci-dessous directement à la ~/.emacsplace de créer un nouveau fichier .

  • Si vous décidez d’ajouter les lignes directement dans votre ~/.emacsfichier, soyez prudent avec ces commandes:

    ;; Set the max number of recent files kept
    (custom-set-variables
     '(recentf-max-saved-items 10)
    '(inhibit-startup-screen t))
    

    Il ne peut y avoir qu'une seule custom-set-variablessection dans un .emacsfichier. Au lieu d’ajouter ces lignes au fichier, recherchez la custom-set-variablessection existante et ajoutez simplement la variable:

    '(recentf-max-saved-items 10)
    

RÉPONDRE

Créez un fichier dans votre $HOMEappelé .my_emacs_layoutcontenant ces lignes (ou ajoutez-les à votre ~/.emacsfichier, voir les notes ci-dessus):

;; Activate recentf mode to get the list of
;; recent files
(recentf-mode 1)

;; Load the w3m browser, change this to the location of your `w3m` install.
;; You should be able to copy the relevant lines from your `~/.emacs`.
(add-to-list 'load-path "~/.emacs-lisp/emacs-w3m")
(require 'w3m-load)

;; Set the max number of recent files kept
(custom-set-variables
 '(recentf-max-saved-items 10)
'(inhibit-startup-screen t))
;; Set up initial window layout.  
(split-window-horizontally)
;; Open w3m in the main window, this
;; will be the top left
(w3m-goto-url "www.superuser.com")

;; Split the left window vertically
(split-window-vertically)

;; switch to the bottom left window
(other-window 1)
;; and load the most recent file
(recentf-open-most-recent-file 1)

;; I am sure there is a better way of doing this 
;; but for some reason opening the python shell screws
;; around with the window focus and this ugly hack is 
;; the best I could come up with.
(other-window 1)
(split-window-vertically)
(other-window 1)
(other-window 1)
(other-window 1)
;; open the python shell in what will be 
;; the top right window
(py-shell)

Ça y est, vous pouvez maintenant charger votre nouvelle emacsmise en page en lançant

emacs -l ~/.my_emacs_layout

SOLUTION DE CONTOURNEMENT

Si vous souhaitez charger une emacssession normale lors de l'ouverture explicite d'un fichier et la structure de 4 fenêtres lors de son exécution emacs, ajoutez ces lignes au fichier de configuration de votre shell ( ~/.bashrcsi vous utilisez bash):

function emacs(){
 if [ $# -eq 0 ]
 then
     /usr/bin/emacs -l ~/.my_emacs_layout
  else
     /usr/bin/emacs "$@"
 fi
}

terdon
la source
qu'est-ce que ~/.bashrc?j'ai un~/.bash_profile
CodeKingPlusPlus
@ CodeKingPlusPlus Je suppose que vous utilisez un Mac? Si oui, utilisez ~/.bash_profileplutôt que ~/.bashrc. Si vous n'êtes pas sur un Mac, créez ~/.bashrc. C'est le genre de chose qui rend important de nous dire quel système d'exploitation vous utilisez :).
Terdon
Oui, Mac OS X 10.8.4
CodeKingPlusPlus
@ CodeKingPlusPlus si vous n'avez pas tendance à lancer emacs à partir de la ligne de commande, vous pouvez ignorer ma solution de contournement et simplement ajouter les lignes à votre emacs. Ce n'est un problème que lorsque vous chargez des fichiers explicitement. même dans ce cas, cela fonctionne toujours, les tampons sont là, c'est juste la mise en page qui est foutue.
Terdon
Je lance toujours emacs à partir de la ligne de commande ...
CodeKingPlusPlus