xwidget: enhanced d/u

This commit is contained in:
condy 2021-12-28 21:32:04 +08:00
parent f78156db21
commit b244630ba6
1 changed files with 45 additions and 19 deletions

View File

@ -1,6 +1,6 @@
;;; evil-collection-xwidget.el --- Evil bindings for Xwidget -*- lexical-binding: t -*- ;;; evil-collection-xwidget.el --- Evil bindings for Xwidget -*- lexical-binding: t -*-
;; Copyright (C) 2020 Ruslan Kamashev ;; Copyright (C) 2020, 2021 Ruslan Kamashev
;; Author: Ruslan Kamashev <rynffoll@gmail.com> ;; Author: Ruslan Kamashev <rynffoll@gmail.com>
;; Maintainer: James Nguyen <james@jojojames.com> ;; Maintainer: James Nguyen <james@jojojames.com>
@ -32,35 +32,61 @@
(defvar evil-collection-xwidget-maps '(xwidget-webkit-mode-map)) (defvar evil-collection-xwidget-maps '(xwidget-webkit-mode-map))
(defmacro evil-collection-xwidget-half-page-height ()
"Return Emacs xwidget half window height in pixel."
(/ (xwidget-window-inside-pixel-height (selected-window)) 2))
(defun evil-collection-xwidget-webkit-scroll-up-half-page ()
"Scroll webkit up by half page."
(interactive)
(xwidget-webkit-scroll-up (evil-collection-xwidget-half-page-height)))
(defun evil-collection-xwidget-webkit-scroll-down-half-page ()
"Scroll webkit down by half page."
(interactive)
(xwidget-webkit-scroll-down (evil-collection-xwidget-half-page-height)))
;;;###autoload ;;;###autoload
(defun evil-collection-xwidget-setup () (defun evil-collection-xwidget-setup ()
"Set up `evil' bindings for `xwidget'." "Set up `evil' bindings for `xwidget'."
(evil-collection-set-readonly-bindings 'xwidget-webkit-mode-map)
(evil-collection-define-key 'normal 'xwidget-webkit-mode-map (evil-collection-define-key 'normal 'xwidget-webkit-mode-map
"q" 'quit-window ;; motion
"k" 'xwidget-webkit-scroll-down-line ;;
"j" 'xwidget-webkit-scroll-up-line ;; d/u are widely used in browser extension vimium.
"h" 'xwidget-webkit-scroll-backward "j" 'xwidget-webkit-scroll-up-line
"l" 'xwidget-webkit-scroll-forward "k" 'xwidget-webkit-scroll-down-line
"h" 'xwidget-webkit-scroll-backward
"l" 'xwidget-webkit-scroll-forward
(kbd "C-f") 'xwidget-webkit-scroll-up (kbd "C-f") 'xwidget-webkit-scroll-up
(kbd "C-b") 'xwidget-webkit-scroll-down (kbd "C-b") 'xwidget-webkit-scroll-down
"+" 'xwidget-webkit-zoom-in "d" 'evil-collection-xwidget-webkit-scroll-up-half-page
"=" 'xwidget-webkit-zoom-in "u" 'evil-collection-xwidget-webkit-scroll-down-half-page
"-" 'xwidget-webkit-zoom-out "gg" 'xwidget-webkit-scroll-top
"R" 'xwidget-webkit-reload "G" 'xwidget-webkit-scroll-bottom
"gr" 'xwidget-webkit-reload ;; history browsing
"H" 'xwidget-webkit-back "H" 'xwidget-webkit-back
"L" 'xwidget-webkit-forward "L" 'xwidget-webkit-forward
"gu" 'xwidget-webkit-browse-url "B" 'xwidget-webkit-browse-history
"gg" 'xwidget-webkit-scroll-top ;; zoom
"G" 'xwidget-webkit-scroll-bottom "+" 'xwidget-webkit-zoom-in
"y" 'xwidget-webkit-copy-selection-as-kill) "=" 'xwidget-webkit-zoom-in
"-" 'xwidget-webkit-zoom-out
;; loading
"R" 'xwidget-webkit-reload
"gr" 'xwidget-webkit-reload
;; misc
(kbd "RET") 'xwidget-webkit-insert-string
"A" 'xwidget-webkit-adjust-size-dispatch
"gu" 'xwidget-webkit-browse-url
"W" 'xwidget-webkit-current-url)
(when evil-want-C-d-scroll (when evil-want-C-d-scroll
(evil-collection-define-key 'normal 'xwidget-webkit-mode-map (evil-collection-define-key 'normal 'xwidget-webkit-mode-map
(kbd "C-d") 'xwidget-webkit-scroll-up)) (kbd "C-d") 'evil-collection-xwidget-webkit-scroll-up-half-page))
(when evil-want-C-u-scroll (when evil-want-C-u-scroll
(evil-collection-define-key 'normal 'xwidget-webkit-mode-map (evil-collection-define-key 'normal 'xwidget-webkit-mode-map
(kbd "C-u") 'xwidget-webkit-scroll-down))) (kbd "C-u") 'evil-collection-xwidget-webkit-scroll-down-half-page)))
(provide 'evil-collection-xwidget) (provide 'evil-collection-xwidget)
;;; evil-collection-xwidget.el ends here ;;; evil-collection-xwidget.el ends here