dotfiles/emacs-lisp/windows_and_frames.org
magic_rb 84e1924f78
For not switching windows with mouse in emacs, access window of event properly
Signed-off-by: magic_rb <magic_rb@redalder.org>
2023-11-25 18:00:05 +01:00

1.8 KiB

Windows and Frames

  (add-to-list 'default-frame-alist '(alpha-background . 80))

Disable window changing using the mouse, it saves me from accidental switches.

  (defun cv/mouse-set-point (fun event &optional promote)
    (let ((window (posn-window (event-start event))))
      (when (equal window (selected-window))
        (funcall fun event promote))))
  (advice-add 'mouse-set-point :around 'cv/mouse-set-point)

  (defun cv/mouse-drag-region (fun event)
     (let ((window-end (posn-window (event-end event))))
       (when (equal window-end (selected-window))
        (funcall fun event))))
  (advice-add 'mouse-drag-region :around 'cv/mouse-drag-region)

  (defun cv/mouse-set-region (fun event)
     (let ((window (posn-window (event-start event))))
       (when (equal window (selected-window))
        (funcall fun event))))
  (advice-add 'mouse-set-region :around 'cv/mouse-set-region)
  (defun maybe-delete-frame-buffer (frame)
    "When a dedicated FRAME is deleted, also kill its buffer.
  A dedicated frame contains a single window whose buffer is not
  displayed anywhere else."
    (let ((windows (window-list frame)))
      (when (eq 1 (length windows))
        (let ((buffer (window-buffer (car windows))))
          (when (eq 1 (length (get-buffer-window-list buffer nil t)))
            (when (frame-parameter frame 'unsplittable)
              (with-current-buffer buffer
                (when (equal major-mode #'vterm-mode) (message "VTERM") (kill-process (get-buffer-process buffer)))
                (kill-buffer buffer))))))))
  (add-to-list 'delete-frame-functions #'maybe-delete-frame-buffer)