2

mouse-1 を押したままバッファ内で移動すると、カーソルがマウスに追従するようになります。

4

3 に答える 3

1

これを試して。

(global-unset-key [drag-mouse-1])

(global-unset-key [down-mouse-1])

注意: この方法には、マウスがマウスに追従しないという問題があります。マウスを放すとカーソルが移動しますが。

より良い解決策を楽しみにしています。

于 2012-12-21T12:24:45.893 に答える
1

元の質問に答えるには:

  (defun my-move-cursor (event)
  (interactive "e")
  (mouse-set-point event)
  (let (event ov)
    (track-mouse
      (while (progn
               (setq event (read-event))
               (or (mouse-movement-p event)
                   (memq (car-safe event) '(switch-frame select-window))))
        (mouse-set-point event)
        (if ov (move-overlay ov (point)  (1+ (point)))
          (setq ov (make-overlay (point) (1+ (point))))
          (overlay-put ov 'face 'match))))
    (when ov (delete-overlay ov))))

私がやったことは少し違っていました。トランジェントマークモードを有効にしないように通常の機能を変更し、マウスがオンになっている文字を強調表示する一定のオーバーレイを作成しました。

于 2013-01-26T03:05:12.790 に答える
0

オーバーレイを使用しない Ian Kelling のソリューションのわずかな変形ですが、カーソルの点滅を制御し、現在アクティブな一時的なマークを無効にし、Emacs ウィンドウからマウスを出す際の問題を回避します。

(defun my-move-cursor (event)
  (interactive "e")
  (deactivate-mark)
  (mouse-set-point event)
  (let ((blinking (if blink-cursor-mode 1 0)))
    (blink-cursor-mode 0)
    (let (event)
      (track-mouse
    (while (progn
         (setq event (read-event))
         (mouse-movement-p event))
      (ignore-errors (mouse-set-point event)))
    ))
    (blink-cursor-mode blinking))
  )

この定義を、init ファイルで次のマウスの再マッピングと組み合わせます。

; Set up mouse 1 movement
(global-set-key [drag-mouse-1] 'mouse-set-point)
(global-set-key [down-mouse-1] 'my-move-cursor)

; Set up mouse 3 behavior to emulate standard mouse 1 behavior
(global-set-key [down-mouse-3] 'mouse-drag-region)
(global-set-key [drag-mouse-3] 'mouse-set-region)
于 2013-03-20T21:57:36.430 に答える