Wie füge ich eine Zeichenfolge hinzu, die an die Moduszeile aktualisiert wird?


9

Ich möchte einige Informationen (die Änderungen im Laufe der Zeit) in den Modus Linie anhängen Format und dann im Titel verwenden.

Mein Gedanke ist, dass ich einmal pro Minute das Frame-Titel-Format auf das Modus-Zeilen-Format + Pomodoro-Anzahl einstellen würde.

Etwas in der Art von:

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

Aber ich kann nicht genau herausfinden, wie.

BEARBEITEN
Ich müsste die Zeichenfolge aktualisieren, die ich anhänge. ZB würde sich die Pomodoro-Zahl nach jedem Pomodoro erhöhen.

EDIT 2
Ich habe es zum Laufen gebracht, indem ich die mode-line-formatVariable bearbeitet und das eval-Konstrukt verwendet habe:

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

Dies ist nicht Drews ursprüngliche Antwort, aber Drew erwähnte sie in seinem Kommentar.


1
mode-line-formatwurde in den letzten Jahren vereinfacht, um (mehr oder weniger) nur eine kleine Liste anderer Variablen zu erstellen; Daher ändern Sie normalerweise eine dieser untergeordneten Variablen (oder einen weiteren Nachkommen) und nicht sich mode-line-formatselbst. Siehe C-h v mode-line-formatund dann auf ähnliche Weise C-h valle Komponentenvariablen, die Sie kennenlernen möchten.
Phils

Das kommt dem, was ich will, ziemlich nahe. Ich habe die Moduszeile bearbeitet: (..... "HI" )und dies wird angezeigt. Aber wenn ich eine Ganzzahl drucken möchte, wird sie nicht angezeigt? (.... (number-to-string my/count)) irgendwelche Ideen warum?
Leo Ufimtsev

1
Lesen Sie C-h v mode-line-formatsorgfältig: Es beschreibt das Verhalten der verschiedenen Konstrukte, die Sie verwenden können, und es ist etwas kompliziert. Weitere Einzelheiten finden Sie im Handbuch:C-h i g (elisp) Mode Line Format
Phils

Ich habe das Dokument gelesen, kann aber keinen Sinn ergeben, wie eine Ganzzahl an die Liste angehängt werden soll.
Leo Ufimtsev

Ich benutze Doom-Modeline, füge Pomodoro-Segment wie folgt hinzu:(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

Antworten:


6

Hänge es an global-mode-string. Wenn Ihre Zeichenfolge im Moduszeilenformat zum Anhängen lautet 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))))

[Wenn Sie es stattdessen vorab anhängen global-mode-stringmöchten, entfernen Sie das 'APPENDoptionale Argument und kehren die Reihenfolge der letzten Liste um : (list my-string global-mode-string).]


FWIW, heutzutage gibt es auch mode-line-misc-info(die global-mode-stringstandardmäßig als Mitglied hat).
Phils

1
@phils: Ja, das gibt es. Ändert meine Antwort nicht, aber es gibt Platz für viele andere Antworten. ;-) Es gibt mehrere Möglichkeiten, diese Katze zu häuten.
Drew

Hallo, das kommt dem sehr nahe, was ich will :-). Ich glaube, ich habe die Frage nicht richtig gestellt. Wie aktualisiere ich diese Nummer, nachdem ich die Pomodoro-Anzahl hinzugefügt habe? Jedes Mal, wenn ich diese Funktion aufrufe, werden der Moduszeile weitere Elemente hinzugefügt.
Leo Ufimtsev

global-mode-stringVerwenden Sie dann anstelle einer konstanten Zeichenfolge (:eval.... Das ist wirklich eine andere Frage.
Drew

@Drew, ich habe versucht, (..... (:eval (number-to-string my/pc))) wobei mein / pc eine Ganzzahl ist, die ich vorher festgelegt habe. Aber die Nummer wird nicht in der Moduszeile angezeigt?
Leo Ufimtsev

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

Sollte die obigen Daten an Ihre Moduszeile anhängen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.