substituir tela inicial com a lista de

18

A tela inicial é útil no começo, mas agora quero algo mais útil: quero que uma lista de arquivos abertos recentemente seja apresentada ao iniciar o emacs, se não houver um arquivo predefinido para abrir. Melhor ainda, se for a helm-recentfjanela (eu uso o helmpacote)

biocibernético
fonte
Vejo que você encontrou uma solução, mas só queria comentar que você não precisa se limitar aos métodos projetados pela equipe do Emacs. startup.el. Você pode anular tudo isso e ter sua própria ordem de inicialização.
lawlist

Respostas:

15

Agora também há um pacote no MELPA: painel: https://github.com/rakanalh/emacs-dashboard . O pacote permite que você tenha uma tela inicial, como na imagem abaixo:

captura de tela do painel

Aqui está o use-packagetrecho da minha configuração para configurá-lo com uma imagem de banner e linha de texto personalizadas, bem como uma lista de arquivos e favoritos recentes:

(use-package dashboard
    :ensure t
    :diminish dashboard-mode
    :config
    (setq dashboard-banner-logo-title "your custom text")
    (setq dashboard-startup-banner "/path/to/image")
    (setq dashboard-items '((recents  . 10)
                            (bookmarks . 10)))
    (dashboard-setup-startup-hook))
tirocínio
fonte
10

Manomagicamente: D, depois de postar a pergunta, obtive a solução de trabalho removendo uma única citação abaixo no meu .emacs

(setq initial-buffer-choice '(helm-recentf)) ;; Does not work

Para isso:

(setq initial-buffer-choice (helm-recentf)) ;; Works!!!
;; I still haven't tried doing with the built-in recentf only

Ou isto:

(setq initial-buffer-choice 'helm-recentf) ;; Works!!!

Atualizar

Ainda não funciona com a solução acima, na verdade. Abri o arquivo, mas o emacs muda para o scratchbuffer logo depois. Eu tenho que pular para o buffer do arquivo que eu quero. Então ainda precisa de mais ajuda sobre isso.

Atualização 2

Depois de algumas lutas elisp, consegui este realmente funciona agora:

(require 'recentf) ;; Provided for the whole picture
(require 'helm)
(require 'helm-config)

(defun startwithrecentf()
 (buffer-name (find-file (car (helm-recentf))))
  )
(setq initial-buffer-choice (startwithrecentf)) 

Atualização 3

O seguinte é mais compacto. Ele também trata aproximadamente do caso em que o emacs é chamado com argumentos adicionais, ou seja,emacs somefile

(require 'recentf) ;; Provided for the whole picture
(require 'helm)
(require 'helm-config)
(if (< (length command-line-args) 2) 
(setq initial-buffer-choice (car (helm-recentf)))
)
biocibernético
fonte
2
Eu acredito que sua tentativa inicial deveria ser (setq initial-buffer-choice 'helm-recentf). O initial-buffer-choicepode ter uma função como valor, que a forma citada sem parênteses dará.
Nome de usuário significativo
Obviamente, minha habilidade de iniciante no elisp.
Biocyberman
Estamos aqui para aprender :). Com esse formulário, recebo o helm-recentfbuffer no início, portanto, sua solução de atualização 2 não deve ser necessária.
Nome de usuário significativo
@MeaningfulUsername que fiz na Atualização 3 : D, ele lida com o caso em que você chama o emacs com um nome de arquivo ou algo assim.
22285 biocyberman
E como você já observou, a versão citada não muda para o buffer, portanto parece que seu (carro (helm-recentf)) é a solução correta. (Eu pensei que deveria ser uma expressão lambda em vez de apenas uma lista, mas que não funcionou ...)
Meaningful Usuário
2

Aqui está um pacote que mostra recentf-open-filesao iniciar o Emacs sem um arquivo para abrir: https://github.com/zonuexe/init-open-recentf.el

Configuração com pacote de uso :

(recentf-mode 1)
(setq recentf-max-menu-items 25)

(use-package init-open-recentf
  :config
  (init-open-recentf))
njam
fonte