更新される文字列をモード行に追加する方法は?


9

(時間とともに変化する)いくつかの情報をモードライン形式に追加して、タイトルで使用したいと思います。

私の考えは、1分に1回、frame-title-formatをmode-line-format + pomodoro countに設定することです。

以下に沿ったもの:

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

しかし、私はその方法を完全に理解することはできません。

編集
追加する文字列を更新する必要があります。たとえば、ポモドーロ数は各ポモドーロの後で増加します。

編集2変数を
編集mode-line-formatしてeval構文を使用することで機能しました。

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

これはDrewの元の回答ではありませんが、Drewはコメントで述べています。


1
mode-line-format近年、単純化されて(多かれ少なかれ)他の変数の小さなリストになっています。したがって、通常は、mode-line-formatそれ自体ではなく、それらの子変数(またはさらにいくつかの子孫)の1つを変更します。を参照してくださいC-h v mode-line-format。次にC-h v、学習するコンポーネント変数について同様に参照してください。
phils 2015

それは私が望むものにかなり近いです。モードラインを編集し(..... "HI" )ました。これが表示されます。しかし、整数を出力したい場合、それは表示されませんか?(.... (number-to-string my/count)) なぜ何かアイデア?
Leo Ufimtsev 2015

1
C-h v mode-line-format注意深く読んでください。これは、使用できるさまざまな構成の動作を説明しており、少し複雑です。詳細については、マニュアルを参照してくださいC-h i g (elisp) Mode Line Format
PHILS

ドキュメントを読みましたが、リストに整数を追加する方法がわかりませんか?
レオUfimtsev 2015

私はこのようなポモドーロセグメントを追加し、運命-モードラインを使用:(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

回答:


6

に追加しglobal-mode-stringます。追加するモードラインフォーマット文字列が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))))

[あなたの代わりにしたい場合は事前にそれを保留global-mode-string、その後、削除なり'APPEND、オプションの引数を、最後のリストの順序を逆:(list my-string global-mode-string)。]


FWIW、最近ではmode-line-misc-infoglobal-mode-stringデフォルトでメンバーとして持っている)もあります。
phils 2015

1
@phils:はい、あります。私の答えは変わりませんが、他にもたくさんの答えの余地があります。;-)この猫の皮をむく方法はいくつかあります。
2015

こんにちは、これは私が欲しいものに非常に近いです:-)。私は正しく質問しなかったと思います。ポモドーロ数を追加した後、その数を更新するにはどうすればよいですか?その関数を呼び出すたびに、モード行にさらに多くのものが追加されます。
レオUfimtsev 2015

次に、定数文字列をに追加する代わりにglobal-mode-string、を使用します(:eval...。それは本当に別の質問です。
2015

@ Drew、(..... (:eval (number-to-string my/pc))) my / pcを事前に設定した整数にしてみました。しかし、番号はモード行に表示されませんか?
レオUfimtsev 2015

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.