Modus baris 's %p
menampilkan persentase tampilan saat buffer:
% p Persentase teks buffer di atas bagian atas jendela, atau 'Atas', 'Bawah' atau 'Semua'. Perhatikan bahwa konstruksi garis mode default memotong ini menjadi tiga karakter.
Saya tidak suka Atas / Bawah / Semua dan saya ingin selalu menampilkan persentase. Apakah ada cara untuk mencapai ini?
Top
berarti 0%.Bottom
berarti 100%.All
berarti 100% dan bagian atas juga terlihat. Anda dapat melakukan hampir semua hal yang Anda suka ke baris mode, tetapi dalam kasus ini akan sangat menyebalkan dengan ini. Perhatikan bahwa Anda dapat dengan mudah membalik arah persentase - lihat%P
(bukan%p
).point-min
danwindow-start
, danwindow-end
danpoint-max
, dan jika diinginkan, ukuran buffer terlihat dapat diperhitungkan dalam - yaitu, poin antarawindow-start
kewindow-end
- mereka perhitungan dapat dilakukan dalam sekejap mata dan tidak akan mempengaruhi kinerja karena titik tidak bergerak. Perhitungan ukuran buffer itu bisa diubah menjadi persentase. Saya percaya bahwa ini adalah jawaban, tetapi saya akan membiarkan orang lain menuliskannya karena saya punya proyek lain di piring saya hari ini.Jawaban:
Berikut ini contoh bagaimana Anda dapat melakukan hal seperti ini. Namun, perhatikan bahwa ia menampilkan apa yang Anda minta (persentase teks di atas jendela), yang mungkin bukan yang sebenarnya Anda inginkan. Misalnya, tidak pernah ditampilkan
100%
, karena akan selalu ada teks di dalam jendela.Anda juga dapat menggunakan
window-end
, yang memiliki kelemahan sebaliknya (hampir tidak pernah menampilkan 0).Anda mungkin ingin menyelaraskan string ini dengan spasi atau bantalan lainnya.
sumber
Built-in kode untuk
%p
hanya terlihat diwindow-start
danpoint-max
dan menghitung persentase seperti itu. Anda dapat menemukan ini menggunakanC-h f format-mode-line
dan kemudian mengikuti tautan ke sumber Emacs C (dengan asumsi Anda memilikinya di suatu tempat).Jadi, Anda bisa melakukan hal yang sama menggunakan
:eval
formulir dimode-line-format
.sumber