1

ラップトップ (emacs 23.3) でモードラインをカスタマイズしたところ、完璧に動作しました。

しかし、学校のデスクトップ (emacs 21.4) で動作させようとすると、実際にバッファーを変更しない限り、 - 、Ctrl- 、-などを使用しても更新されません。fCtrlbCtrla

使用しているコンピューターに応じてコードを変更するケースステートメントを作成したため、すべての機能が適切に機能します。ポイントを移動するときにモードラインが更新されないだけです

私は次のことをやってみました

(add-hook 'move-beginning-of-line 'force-mode-line-update)
(add-hook 'move-end-of-line 'force-mode-line-update)
(add-hook 'forward-char 'force-mode-line-update)
(add-hook 'backward-char 'force-mode-line-update)
(add-hook 'next-line 'force-mode-line-update)
(add-hook 'previous-line 'force-mode-line-update)

しかし、まだ更新されません

助言がありますか?

コード:

(setq-default mode-line-format 
 (list

  "---- "    

  ;; Modified shows *      
  "[" 
  '(:eval 
(if (buffer-modified-p) 
    "*"
    (if buffer-read-only
    "!"
    " "
    )))
  "] "

  ;; Buffer (tooltip - file name)
  '(:eval (propertize "%b" 'face 'bold 'help-echo (buffer-file-name)))


  " "

  ;; Spaces 12 - "buffer"
  '(:eval
    (make-string
     (- 12
  (min
     12
     (length (buffer-name))))
    ?-))

" "
  ;; Current (row,column)
  "(" '(:eval (number-to-string (count-lines 1 (point)))) 
  "," '(:eval (number-to-string (current-column))) 
  ") "

  ;; Spaces 7 - "(r,c)"
  '(:eval
    (make-string
     (- 7
  (min
     4
     (length (number-to-string (current-column)))
  ) 
  (min
     3
     (length (number-to-string (1+ (count-lines 1 (point)))))))
    ?-))

  ;; Percentage of file traversed (current line/total lines)
  " [" 
  '(:eval (number-to-string (/ (* (1+ (count-lines 1 (point))) 100) (count-lines 1 (point-max)))) )
  "%%] "

  ;; Spaces 3 - %
  '(:eval 
    (make-string
     (- 3 (length (number-to-string (/ (* (1+ (count-lines 1 (point))) 100) (count-lines 1 (point-max))))))
    ?-))

  ;; Major Mode
  " [" '(:eval mode-name) "] "

  ;; Spaces 16 + (6 - %)
  '(:eval
    (make-string
     (- 22
  (min
     6
     (length mode-name)))
    ?-))

  " ("

  ;; Time
  '(:eval (format-time-string "%H:%M"))

  ;; Fill with '-'
  ") %-" 
 ))

前もって感謝します

4

1 に答える 1

1

元の投稿のコメントで、モード行に次の情報を記載してください。

  1. 変更済みまたは読み取り専用
  2. 列/行番号
  3. バッファ名
  4. ページのトップからの距離
  5. メジャーモード
  6. 現在の時刻

私は永遠にemacsを使用しており、(1)、(3)、および(5)はすべて、すべてのバッファのデフォルトのemacsモード行にすでにあり、非常に長い間使用されています。(2) と (6) を有効にするには、追加します。

(display-time-mode 1)
(setq line-number-mode t)
(setq column-number-mode t)

~/.emacs。私がオンラインで見つけることができるものから、column-number-modeemacs 21.

これには、 を明示的に再定義mode-lineしたり、関数をオーバーライドしたり、フックを追加したりする必要がないことに注意してください。(4)は意味が分からないのでお答えできません。

于 2011-12-15T04:15:15.807 に答える