Emacs, abrindo várias janelas na inicialização

1

Quando eu inicio o emacs eu gostaria que 4 janelas aparecessem e dentro de cada janela eu gostaria que um buffer aparecesse como eu especifico no meu arquivo .emacs. Talvez na janela superior esquerda apareça o navegador web emacs w3m, na janela superior direita aparece o interpretador python, a janela inferior esquerda, a última janela usada aparece e, na janela inferior direita, aparece um buffer em branco.

  1. Como posso escrever essa funcionalidade no elisp para o meu arquivo .emacs?
  2. Onde você descobriu essa informação para responder a essa pergunta? Você usou as páginas de ajuda do emacs?

Toda ajuda é muito apreciada!

    
por CodeKingPlusPlus 21.06.2013 / 21:46

2 respostas

1

A funcionalidade que você pede é um desejo comum entre os usuários do Emacs. A boa notícia é que há vários pacotes existentes que farão o que você quiser. Meu favorito é workgroups.el. É incrivelmente poderoso. Você pode instalá-lo com o ELPA; aqui está o repositório do GitHub, com um excelente leia-me. Todo o pacote está excepcionalmente bem documentado.

link

Mesmo que o seu desejo seja aprender a codificar manipulações de janelas e de buffer por conta própria, acho que você aprenderá mais rapidamente e com melhor estilo estudando um pacote existente.

    
por 22.06.2013 / 01:40
0

AGRADECIMENTOS

Eu resolvi uma solução das coisas que encontrei nas seguintes páginas:

NOTAS

  • Você não especificou qual sistema operacional está usando. Eu vou assumir que é algum sabor de * nix. Corrija-me se eu estiver errado. Se você estiver usando o Windows, ainda poderá usar os .emacs tweaks que estou sugerindo, mas não posso usar a solução alternativa (veja abaixo).

  • Minha solução carrega emacs com 4 janelas abertas, w3m mostrando o google no canto superior esquerdo, um shell python no canto superior direito, o último arquivo aberto no canto inferior esquerdo e um buffer scratch vazio no fundo certo. Isso funciona bem se você iniciar emacs sem argumentos, mas quebrar o layout se abrir um arquivo diretamente da linha de comando:

    emacs foo.txt
    
  • Por isso, também estou sugerindo uma solução alternativa para carregar o layout apenas se nenhum nome de arquivo tiver sido fornecido. Se você deseja sempre carregar o layout de 4 janelas, basta adicionar as linhas lisp abaixo diretamente a ~/.emacs em vez de criar um novo arquivo .

  • Se você decidir adicionar as linhas diretamente ao seu arquivo ~/.emacs , tenha cuidado com estes comandos:

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

    Pode haver apenas uma seção custom-set-variables em um arquivo .emacs , em vez de adicionar essas linhas ao arquivo, encontrar a seção custom-set-variables existente e apenas adicionar a variável:

    '(recentf-max-saved-items 10)
    

RESPOSTA

Crie um arquivo no seu $HOME chamado .my_emacs_layout contendo essas linhas (ou adicione-as ao seu arquivo ~/.emacs , veja as notas acima):

;; 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)

É isso aí, agora você pode carregar seu novo layout emacs iniciando

emacs -l ~/.my_emacs_layout

WORKAROUND

Se você quiser carregar uma sessão emacs normal ao abrir explicitamente um arquivo e carregar o layout da janela 4 ao simplesmente executar emacs , adicione essas linhas ao arquivo de configuração do seu shell ( ~/.bashrc se você estiver usando o bash ):

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

Tags