2013-05-27 10 views
6

モデルラインの右端に値を配置する方法はありますか?モデルラインの右側の値を固定するには?

現在、私の理解から、値が大きくなると、モデルラインはその値をもっと遠くに「プッシュ」します。私はいくつかの値が右側に開始し、中央に拡大する場合は、それを好むだろう。

私は電力線のようなソリューションを試しましたが、標準的なモードラインと同じ量の情報を表示するために、設定がかなり混乱し、複雑に思えます。

答えて

1

私が知っている限り、これは普通のモード行を簡単にカスタマイズすることはできません。 mode-line-format変数を変更して外観や内容をある程度変えることができますが、テキストの配置のための組み込み構文に関しては、どちらの方法でもモード行コンポーネントの幅を制御することに限定されていますパディングまたは切り捨て。しかし、(:eval ...)および/または(list ...)フォームを使用して、mode-line-format変数内で巧妙なハッカーを使用して、望ましい結果を達成することは可能です。詳細はEmacs Lisp Reference Manual page on the mode-line-format variableにお問い合わせください。それを超えると、サードパーティ製のパッケージを使用する必要があります。

4

これを行う方法が1つあります。トリックは、行の最後マイナス(Emacsのwikiに電力線コードから抽出された)テキストを表示するために必要な場所までのスペースを追加することです:

(defun mode-line-fill (face reserve) 
    "Return empty space using FACE and leaving RESERVE space on the right." 
    (unless reserve 
    (setq reserve 20)) 
    (when (and window-system (eq 'right (get-scroll-bar-mode))) 
    (setq reserve (- reserve 3))) 
    (propertize " " 
       'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve))) 
       'face face)) 


;; Set the modeline to tell me the filename, hostname, etc.. 
(setq-default mode-line-format (list 
    " " 
    mode-line-mule-info 
    'mode-line-modified 
    "- " 
    'mode-line-buffer-identification 
    " (%l, %c) " 
    'mode-line-modes 
    " -- " 
    `(vc-mode vc-mode) 

    ;; Fill until the end of line but 10 characters 
    (mode-line-fill 'mode-line 10) 
    "Some text" 
    ) 
) 
+0

あなたがのために顔を選択したいと思います理由は明らかではありません充填剤。 'mode-line'面を指定すると、アクティブなモード行と非アクティブなモード行の両方で使用されます。非アクティブなモード行は' mode-line-inactive'面を使用するため、奇妙に見えます。代わりに、顔を指定しないで、正しいデフォルトの顔が使用されます。 –

関連する問題