Como acrescentar uma string que é atualizada para a linha de modo?


9

Gostaria de acrescentar algumas informações (que mudam com o tempo) ao formato da linha de modo e depois usá-las no título.

Meu pensamento é que, uma vez por minuto, eu definiria o formato do título do quadro como aquele da contagem de modo-linha-formato + pomodoro.

Algo ao longo das linhas de:

(defun runOnceAMinute ()
   (setq frame-title-format (concat mode-line-format my/PomodoroCount))
)

Mas não consigo entender como.

Edição
Eu precisaria atualizar a seqüência que eu anexo. Por exemplo, a contagem de pomodoro aumentaria após cada pomodoro.

EDIT 2
Consegui trabalhar editando mode-line-formatvariáveis ​​e usando a construção eval:

("%e" ......... "[Pomodorors: " (:eval (number-to-string my/pomCount)) "]") 

Esta não é a resposta original de Drew, mas Drew mencionou isso em seu comentário.


11
mode-line-formatfoi simplificado nos últimos anos para (mais ou menos) apenas uma pequena lista de outras variáveis; então você normalmente modifica uma dessas variáveis ​​filho (ou algum descendente adicional), em vez de mode-line-formatela mesma. Veja C-h v mode-line-formate, de maneira semelhante, C-h vpara qualquer uma das variáveis ​​de componente que você deseja aprender.
phils

É bem parecido com o que eu quero. Eu editei a linha de modo: (..... "HI" )e isso aparece. Mas se eu quiser imprimir um número inteiro, ele não aparece? (.... (number-to-string my/count)) alguma idéia por que?
Leo Ufimtsev

11
Leia com C-h v mode-line-formatatenção: descreve o comportamento das várias construções diferentes que você pode usar e é um pouco complicado. Para mais detalhes, consulte o manual:C-h i g (elisp) Mode Line Format
phils

Eu li o documento, mas não consigo entender como anexar um número inteiro à lista?
21815 Leo Ufimtsev

Eu uso doom-modeline, adicione segmento pomodoro como este:(defun my-eval-string (string) "Evaluate elisp code stored in a string." (eval (car (read-from-string string)))) ;; pomodoro (doom-modeline-def-segment pomodoro "pomodoro segment" (my-eval-string "pomodoro-mode-line-string"))
HelloNewWorld

Respostas:


6

Acrescente-o a global-mode-string. Se a sequência de caracteres do formato da linha de modo a acrescentar for my-string:

(setq global-mode-string
      (cond ((consp global-mode-string)
             (add-to-list 'global-mode-string my-string 'APPEND))
            ((not global-mode-string)
             (list my-string))
            ((stringp global-mode-string)
             (list global-mode-string my-string))))

[Se você, em vez queria pré pen-lo para global-mode-string, em seguida, você deve remover o 'APPENDargumento opcional e inverter a ordem da última lista: (list my-string global-mode-string).]


FWIW, hoje em dia também há mode-line-misc-info(que tem global-mode-stringcomo membro por padrão).
Phillip #

11
@ phils: Sim, existe. Não muda minha resposta, mas há espaço para muitas outras respostas. ;-) Existem várias maneiras de esfolar esse gato.
Tirou

Olá, isso é muito próximo do que eu quero :-). Eu acho que não fiz a pergunta corretamente. Depois de adicionar a contagem de pomodoro, como atualizo esse número? Cada vez que chamo essa função, ela adiciona mais itens à linha de modo.
Leo Ufimtsev

Em vez de adicionar uma string constante a global-mode-string, use (:eval.... Essa é realmente uma pergunta diferente.
Tirou

@ Drew, eu tentei (..... (:eval (number-to-string my/pc))) com meu / pc sendo um número inteiro que eu defini antes da mão. Mas o número não aparece na linha de modo?
21815 Leo Ufimtsev

2
(setq-default mode-line-misc-info "My Text Goes Here")

Deve anexar os dados acima à sua linha de modo.

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.