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)


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

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

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))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.