Diberikan konfigurasi modeline berikut:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
Saya ingin item terakhir muncul lurus.
mode-line-format
ini bukan jawaban yang tepat, tetapismart-mode-line
benar-meluruskanmode-line-misc-info
secara default, dan dapat benar-menyelaraskan daftar minor-mode dengan menetapkansml/mode-width
untuk'right
.Jawaban:
Seperti jawaban dalam komentar, Anda dapat melakukannya sendiri dengan menulis kode untuk mengembalikan string dengan spasi yang baik.
Ini adalah cara sederhana yang hanya mendukung teks rata kiri dan kanan yang diterapkan pada spesifikasi Anda.
itu akhirnya tampak seperti ini:
Juga perhatikan, saya menggunakan args mode-line-format Anda seperti yang Anda tentukan, tapi saya yakin Anda menggunakan% i salah, yang mencetak ukuran byte buffer, bukan jumlah baris. Anda dapat menggunakan sesuatu seperti
(line-number-at-pos (point-max))
untuk mendapatkan jumlah baris di buffer Anda.sumber
window-total-width
untuk menghitung juga linum dan pinggiran bantalan tambahan.%
Karakter yang berarti akan berusaha diformat dua kali. Menyumbang ini dalam jawaban saya, emacs.stackexchange.com/a/37270/2418 - juga menggunakanwindow-total-width
(terima kasih!)Untuk memperluas jawaban @ jordon-biondo dan menyelesaikan tampilan bug
%
.Contoh ini menunjukkan bagaimana variabel garis mode mode dapat digunakan dengan penyelarasan - yang membutuhkan waktu beberapa saat untuk mencari tahu.
Contoh output:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
sumber
Ini tidak didukung di luar kotak tetapi
smart-mode-line
paket mendukungnya. Anda bisa menggunakan paket itu, atau jika ia melakukan lebih dari yang Anda inginkan, ekstrak hanya bit yang mengimplementasikan fitur yang Anda minta.sumber
smart-mode-line
dan menambahkannya ke dotemacs saya. Itu mengharuskan saya mencari tahu seberapa banyak ruang yang saya inginkan di sebelah kanan, tetapi lebih baik daripada tidak sama sekali. Kecuali jika seseorang memposting cara untuk menghilangkan penghitungan char manual, saya tidak akan menerima jawaban.Sementara itu mungkin untuk melakukan perataan kiri / kanan yang benar 'menambahkan metode alternatif karena sepenuhnya mengevaluasi kiri dan kanan hanya untuk perataan sedikit berat, ketika ada alternatif yang lebih sederhana.
Jika Anda tahu Anda hanya membutuhkan jumlah ruang yang tetap di sebelah kanan, Anda dapat mengisi semua kecuali N karakter, ini berfungsi selama ukuran yang tepat adalah panjang yang tetap.
Pemformatan string
%12s
dan sejenisnya dapat digunakan untuk memastikan string tidak mengubah ukuran.Misalnya:
CMakeLists.txt [-] 1590, 0, 94%
Perhatikan bahwa ini hanya berfungsi dengan baik jika Anda ingin menampilkan beberapa item di sisi kanan, seperti contoh ini - baris / kolom / persentase. Menampilkan semua mode minor untuk mis. Tidak akan berfungsi dengan baik.
sumber