mirror of
https://codeberg.org/scip/viking-mode.git
synced 2025-12-17 04:20:59 +01:00
renamed funcs in order to match coding guidelines
This commit is contained in:
123
viking-mode.el
123
viking-mode.el
@@ -19,7 +19,7 @@
|
|||||||
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
;; USA
|
;; USA
|
||||||
|
|
||||||
;; Version: 0.01
|
;; Version: 0.02
|
||||||
;; Author: T.v.Dein <tlinden@cpan.org>
|
;; Author: T.v.Dein <tlinden@cpan.org>
|
||||||
;; Keywords: kill delete
|
;; Keywords: kill delete
|
||||||
;; URL: https://github.com/tlinden/viking-mode
|
;; URL: https://github.com/tlinden/viking-mode
|
||||||
@@ -58,9 +58,9 @@
|
|||||||
;; Add something like this to your config:
|
;; Add something like this to your config:
|
||||||
|
|
||||||
;; (require 'viking-mode)
|
;; (require 'viking-mode)
|
||||||
;; (add-hook 'text-mode-hook 'turn-on-viking-mode)
|
;; (add-hook 'text-mode-hook 'viking-mode)
|
||||||
|
|
||||||
;; or load it manually
|
;; or load it manually, when needed:
|
||||||
|
|
||||||
;; M-x viking-mode
|
;; M-x viking-mode
|
||||||
|
|
||||||
@@ -78,17 +78,17 @@
|
|||||||
|
|
||||||
;; You can change the default key binding by:
|
;; You can change the default key binding by:
|
||||||
|
|
||||||
;; (define-key viking-mode-map (kbd "C-k") 'vk/kill-thing-at-point)
|
;; (define-key viking-mode-map (kbd "C-k") 'viking-kill-thing-at-point)
|
||||||
|
|
||||||
;; In case you don't like the default key binding cascade, you may
|
;; In case you don't like the default key binding cascade, you may
|
||||||
;; also use separate bindings for each kill function, e.g.:
|
;; also use separate bindings for each kill function, e.g.:
|
||||||
|
|
||||||
;; (define-key viking-mode-map (kbd "C-d") nil) ;; turn C-d into a prefix-key
|
;; (define-key viking-mode-map (kbd "C-d") nil) ;; turn C-d into a prefix-key
|
||||||
;; (define-key viking-mode-map (kbd "C-d w") 'vk/kill-word)
|
;; (define-key viking-mode-map (kbd "C-d w") 'viking-kill-word)
|
||||||
;; (define-key viking-mode-map (kbd "C-d r") 'vk/kill-line-from-point)
|
;; (define-key viking-mode-map (kbd "C-d r") 'viking-kill-line-from-point)
|
||||||
;; (define-key viking-mode-map (kbd "C-d l") 'vk/kill-line)
|
;; (define-key viking-mode-map (kbd "C-d l") 'viking-kill-line)
|
||||||
;; (define-key viking-mode-map (kbd "C-d p") 'vk/kill-paragraph)
|
;; (define-key viking-mode-map (kbd "C-d p") 'viking-kill-paragraph)
|
||||||
;; (define-key viking-mode-map (kbd "C-d a") 'vk/kill-buffer)
|
;; (define-key viking-mode-map (kbd "C-d a") 'viking-kill-buffer)
|
||||||
|
|
||||||
;; Also, the font face of the short highlight can be modified:
|
;; Also, the font face of the short highlight can be modified:
|
||||||
|
|
||||||
@@ -100,13 +100,13 @@
|
|||||||
|
|
||||||
;;; Tips:
|
;;; Tips:
|
||||||
|
|
||||||
;; Besides, the primary function of viking-mode is vk/last-key-repeats,
|
;; Besides, the primary function of viking-mode is viking-last-key-repeats,
|
||||||
;; which returns the number of times the last key have been pressed.
|
;; which returns the number of times the last key have been pressed.
|
||||||
;; This can be used for other things as well, for example:
|
;; This can be used for other things as well, for example:
|
||||||
|
|
||||||
;; (defun goto-begin()
|
;; (defun goto-begin()
|
||||||
;; (interactive)
|
;; (interactive)
|
||||||
;; (let* ((key-times (vk/last-key-repeats)))
|
;; (let* ((key-times (viking-last-key-repeats)))
|
||||||
;; (cond
|
;; (cond
|
||||||
;; ((eq key-times 3)
|
;; ((eq key-times 3)
|
||||||
;; (if mark-active
|
;; (if mark-active
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
|
|
||||||
;; (defun goto-end ()
|
;; (defun goto-end ()
|
||||||
;; (interactive)
|
;; (interactive)
|
||||||
;; (let* ((key-times (vk/last-key-repeats)))
|
;; (let* ((key-times (viking-last-key-repeats)))
|
||||||
;; (cond
|
;; (cond
|
||||||
;; ((eq key-times 3)
|
;; ((eq key-times 3)
|
||||||
;; (if mark-active
|
;; (if mark-active
|
||||||
@@ -140,6 +140,7 @@
|
|||||||
;; hit <home> once: goto beginning of current line
|
;; hit <home> once: goto beginning of current line
|
||||||
;; repeat: goto beginning of current window
|
;; repeat: goto beginning of current window
|
||||||
;; repeat: goto beginning of current buffer
|
;; repeat: goto beginning of current buffer
|
||||||
|
|
||||||
;; (and the same with <end> in the other direction)
|
;; (and the same with <end> in the other direction)
|
||||||
|
|
||||||
;;; Reporting Bugs:
|
;;; Reporting Bugs:
|
||||||
@@ -150,6 +151,11 @@
|
|||||||
|
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
;;;; Consts
|
||||||
|
|
||||||
|
(defconst viking-mode-version "0.02" "Viking Mode version.")
|
||||||
|
|
||||||
|
|
||||||
;;;; Customizable variables
|
;;;; Customizable variables
|
||||||
;;;;; Fonts
|
;;;;; Fonts
|
||||||
|
|
||||||
@@ -161,7 +167,7 @@
|
|||||||
;;;;; Modify behavior
|
;;;;; Modify behavior
|
||||||
|
|
||||||
(defcustom viking-blink-time 0.2
|
(defcustom viking-blink-time 0.2
|
||||||
"How long should 'vk/blink-region highligh a region,
|
"How long should viking highlight a region,
|
||||||
in seconds, specify milliseconds like this: 0.1"
|
in seconds, specify milliseconds like this: 0.1"
|
||||||
:group 'viking-mode)
|
:group 'viking-mode)
|
||||||
|
|
||||||
@@ -178,7 +184,7 @@ The default is nil: keep deleted things in the kill-ring."
|
|||||||
|
|
||||||
;; internal utility functions required by the kill functions
|
;; internal utility functions required by the kill functions
|
||||||
|
|
||||||
(defun vk/blink-region(begin end)
|
(defun viking--blink-region(begin end)
|
||||||
"Blink a region shortly. It does this by highlighting the
|
"Blink a region shortly. It does this by highlighting the
|
||||||
region between 'begin and 'end using 'font-lock-viking-face
|
region between 'begin and 'end using 'font-lock-viking-face
|
||||||
for 'viking-blink-time seconds."
|
for 'viking-blink-time seconds."
|
||||||
@@ -190,14 +196,15 @@ for 'viking-blink-time seconds."
|
|||||||
(delete-overlay rh)
|
(delete-overlay rh)
|
||||||
)))
|
)))
|
||||||
|
|
||||||
(defun vk/get-point (symbol &optional arg)
|
(defun viking--get-point (symbol &optional arg)
|
||||||
"Returns the point by evaluating 'symbol, which
|
"Returns the point by evaluating 'symbol, which
|
||||||
should be a point-moving function."
|
should be a point-moving function."
|
||||||
(funcall symbol arg)
|
(funcall symbol arg)
|
||||||
(point)
|
(point)
|
||||||
)
|
)
|
||||||
|
|
||||||
(defun vk/last-key-repeats ()
|
;; may be used for other purposes as well, see commentary 'Tips'
|
||||||
|
(defun viking-last-key-repeats ()
|
||||||
"Returns how many times the last key has been pressed as integer."
|
"Returns how many times the last key has been pressed as integer."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((keys (reverse (append (recent-keys) nil)))
|
(let* ((keys (reverse (append (recent-keys) nil)))
|
||||||
@@ -214,14 +221,14 @@ should be a point-moving function."
|
|||||||
|
|
||||||
;;;;; kill/delete wrappers
|
;;;;; kill/delete wrappers
|
||||||
|
|
||||||
(defun vk/kill-region (beg end)
|
(defun viking--kill-region (beg end)
|
||||||
"Deletes or kills a region depending on 'viking-really-delete."
|
"Deletes or kills a region depending on 'viking-really-delete."
|
||||||
(message "vkkill")
|
(message "vkkill")
|
||||||
(if viking-really-delete
|
(if viking-really-delete
|
||||||
(delete-region beg end)
|
(delete-region beg end)
|
||||||
(kill-region beg end)))
|
(kill-region beg end)))
|
||||||
|
|
||||||
(defun vk/really-delete-line () ;; based on code by xah
|
(defun viking--really-delete-line () ;; based on code by xah
|
||||||
"kill-line without copy"
|
"kill-line without copy"
|
||||||
(interactive)
|
(interactive)
|
||||||
(delete-region
|
(delete-region
|
||||||
@@ -230,99 +237,101 @@ should be a point-moving function."
|
|||||||
(delete-char 1)
|
(delete-char 1)
|
||||||
)
|
)
|
||||||
|
|
||||||
;;;;; Interactive kill functions
|
(defun viking--kill-word-at-point ()
|
||||||
|
|
||||||
(defun vk/kill-word-at-point ()
|
|
||||||
"Kill word at point."
|
"Kill word at point."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let
|
(let
|
||||||
((beg (vk/get-point 'backward-word 1))
|
((beg (viking--get-point 'backward-word 1))
|
||||||
(end (vk/get-point 'forward-word 1)))
|
(end (viking--get-point 'forward-word 1)))
|
||||||
(progn
|
(progn
|
||||||
(vk/blink-region beg end)
|
(viking--blink-region beg end)
|
||||||
(vk/kill-region beg end)
|
(viking--kill-region beg end)
|
||||||
(message "word at point deleted"))))
|
(message "word at point deleted"))))
|
||||||
|
|
||||||
|
|
||||||
(defun vk/kill-word-right ()
|
(defun viking--kill-word-right ()
|
||||||
"Kill word to the right"
|
"Kill word from line beginning to the right."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let
|
(let
|
||||||
((beg (point))
|
((beg (point))
|
||||||
(end (vk/get-point 'forward-word 1)))
|
(end (viking--get-point 'forward-word 1)))
|
||||||
(vk/blink-region beg end)
|
(viking--blink-region beg end)
|
||||||
(vk/kill-region beg end)
|
(viking--kill-region beg end)
|
||||||
(message "word right of point deleted")))
|
(message "word right of point deleted")))
|
||||||
|
|
||||||
(defun vk/kill-word ()
|
|
||||||
"Kill word"
|
;;;;; Public interactive kill functions
|
||||||
|
|
||||||
|
(defun viking-kill-word ()
|
||||||
|
"Kill word at point"
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (eq (point) (line-beginning-position))
|
(if (eq (point) (line-beginning-position))
|
||||||
(vk/kill-word-right)
|
(viking--kill-word-right)
|
||||||
(vk/kill-word-at-point)
|
(viking--kill-word-at-point)
|
||||||
))
|
))
|
||||||
|
|
||||||
(defun vk/kill-line ()
|
(defun viking-kill-line ()
|
||||||
"Kill line at point including newline."
|
"Kill line at point including newline."
|
||||||
(interactive)
|
(interactive)
|
||||||
(vk/blink-region (vk/get-point 'beginning-of-line 1) (vk/get-point 'end-of-line 1))
|
(viking--blink-region (viking--get-point 'beginning-of-line 1)
|
||||||
|
(viking--get-point 'end-of-line 1))
|
||||||
(move-beginning-of-line 1)
|
(move-beginning-of-line 1)
|
||||||
(let ((k kill-whole-line))
|
(let ((k kill-whole-line))
|
||||||
(progn
|
(progn
|
||||||
(setq kill-whole-line t) ;; temp enable
|
(setq kill-whole-line t) ;; temp enable
|
||||||
(if viking-really-delete
|
(if viking-really-delete
|
||||||
(vk/really-delete-line)
|
(viking--really-delete-line)
|
||||||
(kill-line)
|
(kill-line)
|
||||||
)
|
)
|
||||||
(setq kill-whole-line k)
|
(setq kill-whole-line k)
|
||||||
))
|
))
|
||||||
(message "line at point deleted"))
|
(message "line at point deleted"))
|
||||||
|
|
||||||
(defun vk/kill-line-from-point ()
|
(defun viking-kill-line-from-point ()
|
||||||
"Kill line from point to the right without newline."
|
"Kill line from point to the right without newline."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((beg (point))
|
(let ((beg (point))
|
||||||
(end (vk/get-point 'end-of-line 1)))
|
(end (viking--get-point 'end-of-line 1)))
|
||||||
(progn
|
(progn
|
||||||
(vk/blink-region beg end)
|
(viking--blink-region beg end)
|
||||||
(vk/kill-region beg end)
|
(viking--kill-region beg end)
|
||||||
(message "line from point deleted"))))
|
(message "line from point deleted"))))
|
||||||
|
|
||||||
(defun vk/kill-paragraph ()
|
(defun viking-kill-paragraph ()
|
||||||
"Kill paragraph at point."
|
"Kill paragraph at point."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let
|
(let
|
||||||
((beg (vk/get-point 'backward-paragraph 1))
|
((beg (viking--get-point 'backward-paragraph 1))
|
||||||
(end (vk/get-point 'forward-paragraph 1)))
|
(end (viking--get-point 'forward-paragraph 1)))
|
||||||
(progn
|
(progn
|
||||||
(vk/blink-region beg end)
|
(viking--blink-region beg end)
|
||||||
(vk/kill-region beg end)
|
(viking--kill-region beg end)
|
||||||
(message "paragraph at point deleted"))))
|
(message "paragraph at point deleted"))))
|
||||||
|
|
||||||
(defun vk/kill-buffer ()
|
(defun viking-kill-buffer ()
|
||||||
"Kill the whole buffer."
|
"Kill the whole buffer."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((beg (point-min))
|
(let ((beg (point-min))
|
||||||
(end (point-max)))
|
(end (point-max)))
|
||||||
(progn
|
(progn
|
||||||
(vk/blink-region beg end)
|
(viking--blink-region beg end)
|
||||||
(vk/kill-region beg end)
|
(viking--kill-region beg end)
|
||||||
(message "buffer deleted"))))
|
(message "buffer deleted"))))
|
||||||
|
|
||||||
;;;;; Primary key binding function
|
;;;;; Primary key binding function
|
||||||
|
|
||||||
(defun vk/kill-thing-at-point()
|
(defun viking-kill-thing-at-point()
|
||||||
"Delete thing at point. Checks how many times the
|
"Delete thing at point. Checks how many times the
|
||||||
calling key has been pressed and runs the appropriate
|
calling key has been pressed and runs the appropriate
|
||||||
kill function then."
|
kill function then."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((key-times (vk/last-key-repeats)))
|
(let* ((key-times (viking-last-key-repeats)))
|
||||||
(cond
|
(cond
|
||||||
((eq key-times 5) (vk/kill-buffer))
|
((eq key-times 5) (viking-kill-buffer))
|
||||||
((eq key-times 4) (vk/kill-paragraph))
|
((eq key-times 4) (viking-kill-paragraph))
|
||||||
((eq key-times 3) (vk/kill-line))
|
((eq key-times 3) (viking-kill-line))
|
||||||
((eq key-times 2) (vk/kill-line-from-point))
|
((eq key-times 2) (viking-kill-line-from-point))
|
||||||
((eq key-times 1) (vk/kill-word))
|
((eq key-times 1) (viking-kill-word))
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -334,7 +343,7 @@ kill function then."
|
|||||||
:lighter " V"
|
:lighter " V"
|
||||||
:group 'viking-mode
|
:group 'viking-mode
|
||||||
:keymap (let ((map (make-sparse-keymap)))
|
:keymap (let ((map (make-sparse-keymap)))
|
||||||
(define-key map (kbd "C-d") 'vk/kill-thing-at-point)
|
(define-key map (kbd "C-d") 'viking-kill-thing-at-point)
|
||||||
map))
|
map))
|
||||||
|
|
||||||
;; just in case someone wants to use it globally
|
;; just in case someone wants to use it globally
|
||||||
|
|||||||
Reference in New Issue
Block a user