タグ付けされた質問 「mode-line」

モード行は、ウィンドウに表示されたバッファの名前と現在のモードを含む、有用な要約情報です。これは、MiniBufferウィンドウ以外のすべてのEmacsウィンドウの下部にあります。


8
モードラインでマイナーモードのリストを非表示にする
私はかなりの数のマイナーモードを使用していますが、通常、すべてのメジャーモードでどのマイナーモードが有効になっているかを知っています。完全なリストを表示したい場合は、を実行できますC-h v minor-mode-list。 同時に、モードラインが本当に詰まるので、フレームを垂直に分割すると、モードラインの終わりが読めないことがあります。 実際の質問:モードラインでマイナーモードリストの表示を無効にする方法は?たとえば、次のようになります。 -:--- main.c All (7,12) (C/l FlyC SScr Abbrev Fill) [main] 16:19 0.45 もっと簡潔に見せたい: -:--- main.c All (7,12) (C/l) [main] 16:19

1
Emacsのどのコードが `line-number-mode`に長い行のバッファの行番号として“ ??”を出力させるのですか?
line-number-modeモードラインで現在の行を示すために使用していますが、大きなファイルまたは長い行を持つファイルの場合、行番号ではなく2つの疑問符が表示され始めます。私は少し掘り下げて、line-number-modeで定義されている間simple.elに、カスタマイズ可能な変数(およびおそらくすべてのロジック)がで定義されていることを発見しましたxdisp.c。line-number-display-width変数を任意の高い数値に変更すると、これが修正される可能性がありますが、2つの疑問符を出力するコードとロジックにはるかに興味があります。あなたの誰かが私のためにそれを見つけることができれば、おそらくその背後にあるロジックを説明することさえできれば、それは非常に役立つでしょう。

2
フレームの下部に沿って単語のリストを表示しますか?
私は開いているすべてのemacsフレームの下部に沿って水平に別々の行に3つの単語のリストを表示したいと思います(上部も機能しますが)。私はこれを行う6つの方法を考えましたが、それらにはすべて問題があります: 最初に考えたのは、モード行に行を追加することでしたが、モード行で改行文字を使用することはできません。「^ J」に変換されるだけです。 私の2番目の考えは、画面の上部に行を持ち、ヘッダー行を使用することでしたが、改行文字もサポートしていません。 ウィンドウの最後の3行にオーバーレイを表示できましたが、これを堅牢にするのは難しいようです。ウィンドウの実際の端ではなく、ポイントがオーバーレイに達したときにスクロールをトリガーする必要があり、常に再配置する必要がありますオーバーレイはウィンドウスペースではなくテキストスペースにあるため、オーバーレイ。 フレームの下部に専用の窓を作ってみることができました。私はこれをコーディングしようとしましたが、あまり堅牢ではありません。フレームにすでに分割ウィンドウが含まれていて、Cx、1を無視するカスタムバージョンのdelete-other-windowsに再バインドする必要がある場合、正しく動作しないようです私の特別な窓と私は他のコーナーケースがあると確信しています。また、ヘルプウィンドウが開くと、水平方向の分割が既にあると考えられるため、垂直方向に開きます(技術的には存在しますが、1行のウィンドウのみを表示します)。 これに専用のフレームを用意することもできますが、その場合、設定はターミナルモードで動作しません。また、ウィンドウマネージャーのスクリプトを作成して、画面の下部に沿って保持し、選択不能にしてレイアウトに影響を与えないようにする必要があります。などなど 3行のテキストを直接ミニバッファーに挿入できます。これが部分的に機能するようになったので、ミニバッファーを増やして3行を収容し、表示できます。ただし、メッセージがエコーされるたびに、別のコマンドを発行して行が再表示されるまで、行は消えます。理想的には、3本の線とエコーエリアが重ならないので、両方を見ることができます。どのメッセージをエコーエリアに送信するかを確実にフィルタリングできれば、これは面倒ではありません-EmacsWikiで解決策を見つけましたが、emacs Cソースに由来するメッセージでは機能しないようです(具体的には、タイマーで頻繁に自動保存するため、メッセージを保存するファイルを取り除きます)。 コンテキストに関して、私の目標は、現在のバッファーで最も頻繁に使用される単語、現在のバッファーで最も近いポイント、および現在のバッファーで最近使用された単語を常に表示することです。私は音声コマンドを介してそれらをバッファに挿入できるようにするつもりです。したがって、「最近接2」と言って、ポイントに最も近い単語のリストから2番目の項目を選択して挿入することができます。私は、現在編集しているバッファが何であれ、単語リストが表示されることだけに関心があります。リストが常に表示される必要があるため、さまざまなコード補完モードで使用されるポップアップウィンドウを使用したくありません。

2
大きなバッファーで `line-number-at-pos`を取得するより高速な方法
この機能line-number-at-pos(約50回繰り返した場合)は、ポイントがバッファーの終わり近くにあるときに、セミラインバッファー(たとえば50,000行)で顕著なスローダウンを引き起こしています。スローダウンとは、合計で約1.35秒を意味します。 100%のelisp関数を使用して行をカウントし、バッファーの先頭に移動する代わりに、モード行に表示される行番号に関与する組み込みのC機能を活用するハイブリッドメソッドに興味があります。モードラインに表示される行番号は、バッファのサイズに関係なく、軽い速度で発生します。 テスト関数は次のとおりです。 (defmacro measure-time (&rest body) "Measure the time it takes to evaluate BODY. http://lists.gnu.org/archive/html/help-gnu-emacs/2008-06/msg00087.html" `(let ((time (current-time))) ,@body (message "%.06f" (float-time (time-since time))))) (measure-time (let* ( line-numbers (window-start (window-start)) (window-end (window-end))) (save-excursion (goto-char window-end) (while (re-search-backward "\n" window-start t) (push (line-number-at-pos) line-numbers))) line-numbers))

2
バッファーとモードラインに異なるフォントサイズを設定するにはどうすればよいですか?
すべてのフレームでフォントのサイズを設定するために、init.elファイルに次の行があります。 (push '(font . "DejaVu Sans Mono-10") default-frame-alist) それは動作しますが、モードライン用に小さいフォントを保持しながら、すべてのバッファに大きなフォントを使用したいです(したがって、より多くの情報に適合し、気が散らないようにすることができます)。これは、オープンバッファごとにCx C- +でフォントサイズを変更することなく、この設定を自動的に行うという考え方です。 GNU / LinuxシステムのトランクからコンパイルされたEmacs 25.0.50.1を使用しています。 編集:方法を示す回答を追加しました。

4
モードラインのみで新しいフレームを作成する
モードラインのみを含む新しいフレームを作成したい。特にファイルバッファではありません。 なぜこれが必要なのですか?組織モードのクロッキングを使用して作業時間を計ります。組織モードでは、現在作業中のタスクのタイマーがモードラインに表示され、タイマーがリアルタイムで更新されます。私はEmacs以外のアプリを使用しているので、それらに切り替えるとき(たとえば、ブラウザーまたは端末を使用するとき)、実行中のタイマーを確認できるようにします。私は新しいフレームを作成できると思っていましたが、モードラインでタイマーをクリックすると、.orgファイルが新しいフレームで開きます(すでにモードラインのみを表示するようにサイズ変更されています)最初のフレームで。 モードラインの外観(青いバー)は次のとおりです。これが新しいフレームに必要なすべてです。 (最終的には、新しいフレームを常に手前に表示する方法を理解する必要がありますが、それはこの質問の範囲外です) 関連する場合はOS Xを使用します。
13 mode-line  osx 

2
モードラインライターで画像を使用できますか?
私のモードラインは乱雑です。モード名の代わりに画像を表示することはできますか? ユニコード絵文字(Pythonの場合はor、Coqの場合はasなど)を使用できますが、Emacsの設定を使用する一部のマシンには適切なフォントが事前にインストールされていません(理想的には、この手法を私が書いているモードなので、ユーザーが適切なフォント設定を持つことは期待できません)。 :imageおもちゃのマイナーモードのモードラインライターに表示プロパティを追加しようとしましたが、モードラインには何も表示されませんでした。 (define-minor-mode my/test-mode "Test mode." :lighter (propertize " 🐓" 'display '(image :type imagemagick :file "/home/clement/.emacs.d/rooster.png")))

2
モードラインとミニバッファーを一番上に移動する
モード行とミニバッファーを画面の下部から上部に移動する方法はありますか? ミニバッファーは、前の質問「emacsフレームの中央にミニバッファーのコンテンツを表示する方法」で説明されています。、したがって、この質問は主にモードラインに関するものです。 私はちょうどラップトップを落とし、画面を割ったので、一番下の列に沿ってあまり見ることができません。

5
スペースを含むバッファ内の文字を数える方法は?
入力中に、テキストがいくつの文字に含まれるかを確認する必要があります。Emacs Wiki:Word countのこのページを見つけました。必要なものに非常に近い解決策があります。このページの2番目の解決策(モードラインの単語数を表示)を使用しました。文字も。 ただし、スペースはカウントされません。モードラインのスペースを含む文字数を表示する解決策はありますか?理想的には、目標の文字数を設定します(ただし、これは必須ではありません)。
12 mode-line 


1
すべてのモード行ではなくアクティブモード行に何かを表示します
これでモードラインに組織タイマーインジケーターを設定しました。 (setq-default mode-line-format (quote ( ;; org-timer (:eval (unless (not org-timer-countdown-timer) (propertize (let* ((rtime (decode-time (time-subtract (timer--time org-timer-countdown-timer) (current-time)))) (rmins (nth 1 rtime)) (rsecs (nth 0 rtime))) (format "🕔 %d:%d" rmins rsecs)) 'face '(:foreground "cyan" :weight bold) 'help-echo "org-timer"))) ))) この組織タイマーインジケーターを、すべてのモード行ではなく、アクティブモード行のみに表示したい。どうやってするの?
10 mode-line 

1
モードラインに複数のラインがありますか?
モードラインにすべての情報を1行ではなく2行で表示させたいと思います。たとえば、最初はカーソル情報、バッファ、ファイル、gitとflycheck、2行目はモード情報(メジャーモードとマイナーモード)です。なんとかできますか?bindings.elとemacsのCソースコードをグーグルで検索しましたが、modelineのこの行番号を変更できる場所を見つけるのは幸運ではありませんでした。誰かがこれを手伝ってくれる?THX。
10 mode-line 

2
モードラインとミニバッファーで一時的にテキストサイズを調整しますか?
共有モニターを使用して、または画面共有(Googleハングアウトなど)を介して他のユーザーと共同で作業する場合、私はtext-scale-adjust(C-x C-+)を使用して他のユーザーが自分の画面をより簡単に読めるようにします。 また、選択したフレームのモードラインとミニバッファーのテキストサイズを一時的に大きくしたいです。そのような機能はすでに存在していますか?そうでなければ、私はそれを自分で書く方法を困惑させるかもしれません...最終的には。

2
すべてのウィンドウの単一モード行
すべてのウィンドウに対して1つのモード行(「ステータスバー」と呼ばれることもある)のみを設定することは可能ですか? この単一モードの行に、現在選択されているバッファーに関する情報を表示させたいのですが。

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