Skip to content

Instantly share code, notes, and snippets.

@youz
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save youz/9521471 to your computer and use it in GitHub Desktop.
Save youz/9521471 to your computer and use it in GitHub Desktop.
マウス右ボタン押しながらホイール操作でバッファ切り替え #xyzzy
;;; マウス右ボタン押しながらホイール操作でバッファ切り替え
(eval-when (:compile-toplevel :load-toplevel :execute)
(require "foreign"))
(defpackage :buffer-bar-scroll
(:use :lisp :editor))
(in-package :buffer-bar-scroll)
(c:define-dll-entry c:short get-key-state (c:int) "user32" "GetKeyState")
; ver. 0.2.2.246以降なら↑の代わりにsi:get-key-stateが使用可能
(defvar *after-buffer-bar-scroll* nil
"バッファ切り替え後ボタンを離した時にポップアップメニューが出ないようにするためのフラグ")
(defun mouse-rbutton-up ()
(interactive)
(if *after-buffer-bar-scroll*
(setq *after-buffer-bar-scroll* nil)
(mouse-menu-popup)))
(defun scroll-buffer-bar-or-window (window n lines)
(if (< (get-key-state #x02) 0)
(let ((*next-buffer-in-tab-order* t))
(setq *after-buffer-bar-scroll* t)
(if (> n 0) (next-buffer) (previous-buffer)))
(with-selected-window
(set-window window)
(scroll-window (* n (or lines (window-lines window)))))))
(global-set-key #\RBtnUp 'mouse-rbutton-up)
(setq mouse-wheel-handler #'scroll-buffer-bar-or-window)
(provide "baffer-bar-scroll")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment