「トップ/ボトム/すべて」ではなく、モードライン表示のパーセンテージを作成します


9

モード行%pディスプレイバッファの現在のビューの割合:

%pウィンドウの上部、または「トップ」、「ボトム」、または「すべて」の上にあるバッファーテキストのパーセンテージ。デフォルトのモード行構成では、これが3文字に切り捨てられることに注意してください。

私は好きではないトップ/ボトム/すべてと私はいつもの割合を表示したいと思います。これを達成する方法はありますか?


2
なぜだろう。Top0%を意味します。Bottom100%を意味します。All100%を意味し、上部も表示されます。あなたはモードラインに好きなことをほとんど何でもすることができますが、この場合、これでサルをするのは苦痛でしょう。パーセンテージの方向は簡単に反転できることに注意してください- %P(の代わりに%p)を参照してください。
2015年

3
私がどこにいるか知りたいとき、私の脳は数字を探します。時々、それがトップ/ボトムになる可能性があることを思い出さなければならないときは、それを思い出さなければなりません。
Clojure主に2015年

すなわち、点の数- -ワンアイデアは、バッファサイズを計算することであろうとの間point-minwindow-start、とwindow-endとをpoint-max、及び所望であれば、可視バッファのサイズはで因数分解することができる-との間、すなわち、点window-startwindow-end-それらを計算は瞬く間に行うことができ、ポイントが移動しないためパフォーマンスに影響しません。これらのバッファーサイズの計算は、パーセンテージに変換できます。これ答えだと思いますが、今日は他にもプロジェクトがあるので、他の人に書いてもらいます。
弁護士、2015年

上記のバッファのパーセンテージを知ることは本当に役に立ちませんでした:\ IMHOはcurrent_line / total_linesを知っており、最終的にすべてのコンテンツバッファが表示されていることを知っている(最初の行にいるとき)のはより便利です。ただ私の意見ですが、多分それは私の経験では十分に広くありません。
Nsukami _

回答:


5

これは、このようなことを行う方法の例です。ただし、要求したとおりに表示されることに注意してください(ウィンドウ上部のテキストのパーセンテージ)。これはおそらく実際には必要なものではありません。たとえば100%、ウィンドウ内には常にテキストが表示されるため、は表示されません。

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-start) 0.01 (point-max)))))

またwindow-end、反対の欠点がある(ほとんど0を表示しない)を使用することもできます。

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-end) 0.01 (point-max)))))

これらの文字列をスペースまたは他のパディングで囲むことができます。


0

コードを内蔵%pでちょうどルックスwindow-startpoint-max、その道の割合を計算します。C-h f format-mode-lineEmacs Cソースへのリンクを使用して追跡することでこれを見つけることができます(どこかにあると仮定して)。

したがって、の:evalフォームを使用して同じことを行うことができますmode-line-format


7
完全なソリューションを提供するために答えを広げることができますか?
Kaushal Modi 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.