3

mark-ringを押したときに の過去の場所を強調表示しC-u C-Space、それ以外 C-u C-Spaceが押されたときに削除する方法を知っている人はいますか?

たぶん、ハイライトの全画面を表示しないために、5 としましょう。

4

3 に答える 3

4

私はそれを行うためにマイナーモードを書き始めました。GitHubで入手できます。

https://github.com/kleiba/visual-mark-ring-mode

ただし、これは非常に予備的な0.1バージョンであり、まったく機能しない可能性があることに注意してください。

(追記:このマイナーモードの改善を誰かが喜んで手伝ってくれるなら、どんな貢献にも感謝します。)

于 2012-11-03T09:25:18.780 に答える
2

マークリング内の場所を強調表示するには:

(defun highlight-ring-marks ()
  (let ((markstr (char-to-string 8595)))
    (put-text-property 0 1 'face '((:background "yellow") (:foreground "black"))
                       markstr)
    (mapc (lambda (m)
            (let ((ovl (make-overlay m m)))
              (overlay-put ovl 'after-string markstr)
              (overlay-put ovl 'mark-ring-pointer t)))
          mark-ring)))

それらをハイライト解除するには:

(defun dehighlight-ring-marks ()
  (mapc (lambda (ovl)
          (and (overlay-get ovl 'mark-ring-pointer)
               (delete-overlay ovl)))
        (overlays-in (point-min) (point-max))))

これらを配置すると、ハイライトコードをに接続し、デハイライトコードをC-u C-SPCに追加するだけpre-command-hookで、ユーザーがキーを押したときにインジケーターが削除されます。

(require 'cl)   ; for lexical-let

(defun set-mark-and-highlight (pos)
  (interactive "P")
  (set-mark-command pos)
  (when pos
    (highlight-ring-marks))
  ;; call dehighlight-ring-marks, but only once
  (lexical-let (hookfn)
    (setq hookfn (lambda ()
                   (dehighlight-ring-marks)
                   (remove-hook 'pre-command-hook hookfn)))
    (add-hook 'pre-command-hook hookfn)))

最後に、新しいコマンドを次のコマンドにバインドしC-SPCます。

(global-set-key (kbd "C-SPC") 'set-mark-and-highlight)
于 2012-11-03T09:25:55.850 に答える
1

あなたが尋ねたことをするためのいくつかのelisp https://www.emacswiki.org/emacs/VisibleMark

また、グーグルは、自分のサイト http://retroj.net/visible-markでそのコードに誰かが追加されたことを示しています。 私は現在、最後の 3 つのマークを強調するためにそれを試しています。読み込みパスに visible-mark.el を追加しました。これを私のinitファイルに追加しました

(require 'visible-mark)
(defface visible-mark-face1
  '((((type tty) (class mono))
     (:inverse-video t))
    (t (:background "gold4"))) "")
(defface visible-mark-face2
  '((((type tty) (class mono)))
    (t (:background "DarkOrange4"))) "")
(defface visible-mark-face3
  '((((type tty) (class mono)))
    (t (:background "red4"))) "")
(setq visible-mark-faces (quote (visible-mark-face1 visible-mark-face2 visible-mark-face3)))

; highlight the last 3 marks
(setq visible-mark-max 3)
; globally activate visible-mark-mode
(global-visible-mark-mode)
于 2012-12-21T00:02:57.357 に答える