Compare commits
22 Commits
Author | SHA1 | Date |
---|---|---|
tastytea | c15ea92b09 | |
tastytea | 06afa1efc4 | |
tastytea | e30883a708 | |
tastytea | 0301a3a1ee | |
tastytea | 6995a7f988 | |
tastytea | 695d28b24c | |
tastytea | 31b913666c | |
tastytea | d4c664fed9 | |
tastytea | c73f35ef9e | |
tastytea | e1b620cdde | |
tastytea | e42245aa65 | |
tastytea | 1c13793033 | |
tastytea | ff58dadc4c | |
tastytea | 24a23cbcee | |
tastytea | 892b368b23 | |
tastytea | 3883cbf298 | |
tastytea | e925e595d5 | |
tastytea | 47471f561f | |
tastytea | fa7d5fe4fe | |
tastytea | 9c5e0dde16 | |
tastytea | d50c5d122f | |
tastytea | fa6153bfc4 |
|
@ -0,0 +1,77 @@
|
||||||
|
kind: pipeline
|
||||||
|
name: Lint package
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: debian-package-cache
|
||||||
|
host:
|
||||||
|
path: /var/cache/debian-package-cache
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
exclude:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Emacs 26.3
|
||||||
|
image: flycheck/emacs-cask:26.3
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
LANG: en_US.UTF-8
|
||||||
|
commands:
|
||||||
|
- rm /etc/apt/apt.conf.d/docker-clean
|
||||||
|
- alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get'
|
||||||
|
- apt-get update -q
|
||||||
|
- apt-get install -qq language-pack-en git aspell-en
|
||||||
|
- ./makem.sh --verbose --sandbox --install-deps --install-linters lint
|
||||||
|
volumes:
|
||||||
|
- name: debian-package-cache
|
||||||
|
path: /var/cache/apt/archives
|
||||||
|
|
||||||
|
- name: Emacs master-branch
|
||||||
|
image: flycheck/emacs-cask:master
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
LANG: en_US.UTF-8
|
||||||
|
commands:
|
||||||
|
- rm /etc/apt/apt.conf.d/docker-clean
|
||||||
|
- alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get'
|
||||||
|
- apt-get update -q
|
||||||
|
- apt-get install -qq language-pack-en git aspell-en
|
||||||
|
- emacs --version
|
||||||
|
- ./makem.sh --verbose --sandbox --install-deps --install-linters lint
|
||||||
|
volumes:
|
||||||
|
- name: debian-package-cache
|
||||||
|
path: /var/cache/apt/archives
|
||||||
|
|
||||||
|
- name: Emacs 25.3
|
||||||
|
image: flycheck/emacs-cask:25.3
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
LANG: C
|
||||||
|
commands:
|
||||||
|
- rm /etc/apt/apt.conf.d/docker-clean
|
||||||
|
- alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get'
|
||||||
|
- apt-get update -q
|
||||||
|
- apt-get install -qq git
|
||||||
|
# Some package or its dependency requires Emacs 26.1,
|
||||||
|
# so we just check if it compiles.
|
||||||
|
- ./makem.sh --verbose --sandbox compile
|
||||||
|
volumes:
|
||||||
|
- name: debian-package-cache
|
||||||
|
path: /var/cache/apt/archives
|
||||||
|
|
||||||
|
- name: notify
|
||||||
|
image: drillster/drone-email
|
||||||
|
pull: always
|
||||||
|
settings:
|
||||||
|
host: cryptoparty-celle.de
|
||||||
|
from: drone@tzend.de
|
||||||
|
username:
|
||||||
|
from_secret: email_username
|
||||||
|
password:
|
||||||
|
from_secret: email_password
|
||||||
|
when:
|
||||||
|
status: [ changed, failure ]
|
|
@ -1,2 +1,2 @@
|
||||||
/flycheck*.el*
|
|
||||||
*~
|
*~
|
||||||
|
*.elc
|
||||||
|
|
50
README.md
50
README.md
|
@ -1,7 +1,7 @@
|
||||||
# register-quicknav - Quickly jump to next/previous register
|
# register-quicknav - Quickly jump to next/previous register
|
||||||
|
|
||||||
*Author:* tastytea <tastytea@tastytea.de><br>
|
*Author:* tastytea <tastytea@tastytea.de><br>
|
||||||
*Version:* 0.3.2<br>
|
*Version:* 0.4.3<br>
|
||||||
*URL:* [https://schlomp.space/tastytea/register-quicknav](https://schlomp.space/tastytea/register-quicknav)<br>
|
*URL:* [https://schlomp.space/tastytea/register-quicknav](https://schlomp.space/tastytea/register-quicknav)<br>
|
||||||
|
|
||||||
This package is built on top of `register.el` and allows you to quickly jump
|
This package is built on top of `register.el` and allows you to quickly jump
|
||||||
|
@ -13,39 +13,53 @@ across all files or individually for each buffer.
|
||||||
|
|
||||||
* Cycle through all position registers in both directions.
|
* Cycle through all position registers in both directions.
|
||||||
* Clear current register.
|
* Clear current register.
|
||||||
|
* Store point in unused register (range configurable).
|
||||||
|
* Clear all registers in the unused registers range.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
**Note:** The function and variable names were previously separated by “/”
|
To use `register-quicknav.el`, get it from
|
||||||
from the namespace. To conform with MELPA rules the separator has been
|
[MELPA](https://melpa.org/#/register-quicknav) or put it in your load-path
|
||||||
changed to “-”.
|
and add the following to your init.el:
|
||||||
|
|
||||||
To use `register-quicknav.el`, put it in your load-path and add the following
|
|
||||||
to your init.el:
|
|
||||||
|
|
||||||
(require 'register-quicknav)
|
(require 'register-quicknav)
|
||||||
(global-set-key (kbd "<C-f5>") #'register-quicknav-prev-register)
|
(global-set-key (kbd "<C-f5>") #'register-quicknav-prev-register)
|
||||||
(global-set-key (kbd "<C-f6>") #'register-quicknav-next-register)
|
(global-set-key (kbd "<C-f6>") #'register-quicknav-next-register)
|
||||||
(global-set-key (kbd "M-r") #'register-quicknav-clear-current-register)
|
(global-set-key (kbd "<C-f7>") #'register-quicknav-point-to-unused-register)
|
||||||
|
(global-set-key (kbd "<C-S-<f7>") #'register-quicknav-clear-current-register)
|
||||||
|
|
||||||
Or, with use-package:
|
Or, with use-package:
|
||||||
|
|
||||||
(use-package register-quicknav
|
(use-package register-quicknav
|
||||||
:bind (("C-<f5>" . register-quicknav-prev-register)
|
:bind (("C-<f5>" . register-quicknav-prev-register)
|
||||||
("C-<f6>" . register-quicknav-next-register)
|
("C-<f6>" . register-quicknav-next-register)
|
||||||
("M-r" . register-quicknav-clear-current-register)))
|
("C-<f7>" . register-quicknav-point-to-unused-register)
|
||||||
|
("C-S-<f7>" . register-quicknav-clear-current-register)))
|
||||||
Instead of manually copying `register-quicknav.el` into your load-path, you
|
|
||||||
can use [quelpa](https://github.com/quelpa/quelpa):
|
|
||||||
|
|
||||||
(quelpa '(register-quicknav
|
|
||||||
:fetcher git
|
|
||||||
:url "https://schlomp.space/tastytea/register-quicknav.git"))
|
|
||||||
|
|
||||||
## Variables
|
## Variables
|
||||||
|
|
||||||
* `register-quicknav-buffer-only`: Cycle only through position registers in
|
* `register-quicknav-buffer-only`: Cycle only through position registers in
|
||||||
current buffer. Can be safely set as file- and/or dir-local variable.
|
current buffer. Can be safely set as file- and/or dir-local variable.
|
||||||
|
* `register-quicknav-unused-registers-begin`: Beginning of the range that is
|
||||||
|
used to search for unused registers. Defaults to `?A`.
|
||||||
|
* `register-quicknav-unused-registers-end`: End of the range that is used to
|
||||||
|
search for unused registers. Defaults to `?Z`.
|
||||||
|
|
||||||
|
## Differences to similar packages
|
||||||
|
|
||||||
|
[iregister](https://github.com/atykhonov/iregister.el):
|
||||||
|
|
||||||
|
* Opens a minibuffer on each jump (thereby requiring an extra keystroke).
|
||||||
|
* Doesn't work with file-query registers
|
||||||
|
* Can't be restricted to the current buffer.
|
||||||
|
* Doesn't look like it's still maintained.
|
||||||
|
|
||||||
|
[register-channel](https://github.com/YangZhao11/register-channel):
|
||||||
|
|
||||||
|
* Is limited to 5 position registers by default, needs an extra keybinding
|
||||||
|
for each additional register.
|
||||||
|
* Can't be restricted to the current buffer.
|
||||||
|
* Has no ability to jump to the next/previous register.
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
;; Copyright (C) 2020 tastytea
|
;; Copyright (C) 2020 tastytea
|
||||||
|
|
||||||
;; Author: tastytea <tastytea@tastytea.de>
|
;; Author: tastytea <tastytea@tastytea.de>
|
||||||
;; Version: 0.3.2
|
;; Version: 0.4.3
|
||||||
;; Package-Requires: ((emacs "24.3"))
|
;; Package-Requires: ((emacs "25.3"))
|
||||||
;; Keywords: convenience
|
;; Keywords: convenience
|
||||||
;; URL: https://schlomp.space/tastytea/register-quicknav
|
;; URL: https://schlomp.space/tastytea/register-quicknav
|
||||||
|
|
||||||
|
@ -32,53 +32,58 @@
|
||||||
;;
|
;;
|
||||||
;; * Cycle through all position registers in both directions.
|
;; * Cycle through all position registers in both directions.
|
||||||
;; * Clear current register.
|
;; * Clear current register.
|
||||||
|
;; * Store point in unused register (range configurable).
|
||||||
|
;; * Clear all registers in the unused registers range.
|
||||||
|
|
||||||
;; Installation:
|
;; Installation:
|
||||||
;;
|
;;
|
||||||
;; **Note:** The function and variable names were previously separated by “/”
|
;; To use `register-quicknav.el', get it from
|
||||||
;; from the namespace. To conform with MELPA rules the separator has been
|
;; [MELPA](https://melpa.org/#/register-quicknav) or put it in your load-path
|
||||||
;; changed to “-”.
|
;; and add the following to your init.el:
|
||||||
;;
|
|
||||||
;; To use `register-quicknav.el', put it in your load-path and add the following
|
|
||||||
;; to your init.el:
|
|
||||||
;;
|
;;
|
||||||
;; (require 'register-quicknav)
|
;; (require 'register-quicknav)
|
||||||
;; (global-set-key (kbd "<C-f5>") #'register-quicknav-prev-register)
|
;; (global-set-key (kbd "<C-f5>") #'register-quicknav-prev-register)
|
||||||
;; (global-set-key (kbd "<C-f6>") #'register-quicknav-next-register)
|
;; (global-set-key (kbd "<C-f6>") #'register-quicknav-next-register)
|
||||||
;; (global-set-key (kbd "M-r") #'register-quicknav-clear-current-register)
|
;; (global-set-key (kbd "<C-f7>") #'register-quicknav-point-to-unused-register)
|
||||||
|
;; (global-set-key (kbd "<C-S-<f7>") #'register-quicknav-clear-current-register)
|
||||||
;;
|
;;
|
||||||
;; Or, with use-package:
|
;; Or, with use-package:
|
||||||
;;
|
;;
|
||||||
;; (use-package register-quicknav
|
;; (use-package register-quicknav
|
||||||
;; :bind (("C-<f5>" . register-quicknav-prev-register)
|
;; :bind (("C-<f5>" . register-quicknav-prev-register)
|
||||||
;; ("C-<f6>" . register-quicknav-next-register)
|
;; ("C-<f6>" . register-quicknav-next-register)
|
||||||
;; ("M-r" . register-quicknav-clear-current-register)))
|
;; ("C-<f7>" . register-quicknav-point-to-unused-register)
|
||||||
;;
|
;; ("C-S-<f7>" . register-quicknav-clear-current-register)))
|
||||||
;; Instead of manually copying `register-quicknav.el' into your load-path, you
|
|
||||||
;; can use [quelpa](https://github.com/quelpa/quelpa):
|
|
||||||
;;
|
|
||||||
;; (quelpa '(register-quicknav
|
|
||||||
;; :fetcher git
|
|
||||||
;; :url "https://schlomp.space/tastytea/register-quicknav.git"))
|
|
||||||
|
|
||||||
;; Variables:
|
;; Variables:
|
||||||
;;
|
;;
|
||||||
;; * `register-quicknav-buffer-only': Cycle only through position registers in
|
;; * `register-quicknav-buffer-only': Cycle only through position registers in
|
||||||
;; current buffer. Can be safely set as file- and/or dir-local variable.
|
;; current buffer. Can be safely set as file- and/or dir-local variable.
|
||||||
|
;; * `register-quicknav-unused-registers-begin': Beginning of the range that is
|
||||||
|
;; used to search for unused registers. Defaults to `?A'.
|
||||||
|
;; * `register-quicknav-unused-registers-end': End of the range that is used to
|
||||||
|
;; search for unused registers. Defaults to `?Z'.
|
||||||
|
|
||||||
|
;; Differences to similar packages:
|
||||||
|
;;
|
||||||
|
;; [iregister](https://github.com/atykhonov/iregister.el):
|
||||||
|
;;
|
||||||
|
;; * Opens a minibuffer on each jump (thereby requiring an extra keystroke).
|
||||||
|
;; * Doesn't work with file-query registers
|
||||||
|
;; * Can't be restricted to the current buffer.
|
||||||
|
;; * Doesn't look like it's still maintained.
|
||||||
|
;;
|
||||||
|
;; [register-channel](https://github.com/YangZhao11/register-channel):
|
||||||
|
;;
|
||||||
|
;; * Is limited to 5 position registers by default, needs an extra keybinding
|
||||||
|
;; for each additional register.
|
||||||
|
;; * Can't be restricted to the current buffer.
|
||||||
|
;; * Has no ability to jump to the next/previous register.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
|
|
||||||
(define-obsolete-variable-alias 'register-quicknav/buffer-only
|
|
||||||
'register-quicknav-buffer-only "0.1.1")
|
|
||||||
(define-obsolete-function-alias 'register-quicknav/next-register
|
|
||||||
#'register-quicknav-next-register "0.1.1")
|
|
||||||
(define-obsolete-function-alias 'register-quicknav/prev-register
|
|
||||||
#'register-quicknav-prev-register "0.1.1")
|
|
||||||
(define-obsolete-function-alias 'register-quicknav/clear-current-register
|
|
||||||
#'register-quicknav-clear-current-register "0.1.1")
|
|
||||||
|
|
||||||
(defgroup register-quicknav nil
|
(defgroup register-quicknav nil
|
||||||
"Variables for register-quicknav."
|
"Variables for register-quicknav."
|
||||||
:group 'editing)
|
:group 'editing)
|
||||||
|
@ -90,7 +95,17 @@
|
||||||
:group 'register-quicknav
|
:group 'register-quicknav
|
||||||
:safe #'booleanp)
|
:safe #'booleanp)
|
||||||
|
|
||||||
(defvar-local register-quicknav--last-register-v nil
|
(defcustom register-quicknav-unused-registers-begin ?A
|
||||||
|
"Begin looking for unused register at this register."
|
||||||
|
:type 'character
|
||||||
|
:group 'register-quicknav)
|
||||||
|
|
||||||
|
(defcustom register-quicknav-unused-registers-end ?Z
|
||||||
|
"End looking for unused register at this register."
|
||||||
|
:type 'character
|
||||||
|
:group 'register-quicknav)
|
||||||
|
|
||||||
|
(defvar register-quicknav--last-register-v nil
|
||||||
"The last jumped-to position register.")
|
"The last jumped-to position register.")
|
||||||
|
|
||||||
(defun register-quicknav--last-register (&optional val)
|
(defun register-quicknav--last-register (&optional val)
|
||||||
|
@ -142,7 +157,7 @@ Works on markers and file-queries."
|
||||||
(let ((result))
|
(let ((result))
|
||||||
(dolist (register register-alist)
|
(dolist (register register-alist)
|
||||||
(if (or (markerp (cdr register))
|
(if (or (markerp (cdr register))
|
||||||
(eq (nth 1 register) 'file-query))
|
(ignore-errors (eq (nth 1 register) 'file-query)))
|
||||||
(if register-quicknav-buffer-only
|
(if register-quicknav-buffer-only
|
||||||
(when (register-quicknav--is-current-buffer? register)
|
(when (register-quicknav--is-current-buffer? register)
|
||||||
(push register result))
|
(push register result))
|
||||||
|
@ -154,7 +169,7 @@ Works on markers and file-queries."
|
||||||
(let* ((register-list (register-quicknav--registers))
|
(let* ((register-list (register-quicknav--registers))
|
||||||
(index (cl-position (register-quicknav--last-register) register-list))
|
(index (cl-position (register-quicknav--last-register) register-list))
|
||||||
(stop-searching))
|
(stop-searching))
|
||||||
(unless (eq index nil)
|
(when index
|
||||||
(if next
|
(if next
|
||||||
(cl-incf index)
|
(cl-incf index)
|
||||||
(cl-decf index)))
|
(cl-decf index)))
|
||||||
|
@ -196,10 +211,45 @@ Works on markers and file-queries."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun register-quicknav-clear-current-register ()
|
(defun register-quicknav-clear-current-register ()
|
||||||
"Clear last jumped-to position register from `register-alist'."
|
"Clear last jumped-to position register from `register-alist'.
|
||||||
|
Deletes the value of `register-quicknav--last-register' from `register-alist'."
|
||||||
(interactive)
|
(interactive)
|
||||||
(setq register-alist
|
(setq register-alist
|
||||||
(delq (register-quicknav--last-register) register-alist)))
|
(delq (register-quicknav--last-register) register-alist))
|
||||||
|
(message "Cleared register %c." (car (register-quicknav--last-register))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun register-quicknav-point-to-unused-register ()
|
||||||
|
"Store current location of point in next unused register.
|
||||||
|
Searches the range between
|
||||||
|
`register-quicknav-unused-registers-begin' and
|
||||||
|
`register-quicknav-unused-registers-end'."
|
||||||
|
(interactive)
|
||||||
|
(let* ((begin register-quicknav-unused-registers-begin)
|
||||||
|
(end register-quicknav-unused-registers-end)
|
||||||
|
(char begin))
|
||||||
|
(while (and (get-register char)
|
||||||
|
(not (> char end)))
|
||||||
|
(cl-incf char))
|
||||||
|
(if (<= char end)
|
||||||
|
(progn
|
||||||
|
(point-to-register char)
|
||||||
|
(register-quicknav--last-register (assoc char register-alist))
|
||||||
|
(message "Position stored in register %c." char))
|
||||||
|
(message "No unused register in the range %c - %c found." begin end))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun register-quicknav-clear-unused-registers-range ()
|
||||||
|
"Clear all registers in the range used by `register-quicknav-point-to-unused-register'."
|
||||||
|
(interactive)
|
||||||
|
(let ((begin register-quicknav-unused-registers-begin)
|
||||||
|
(end register-quicknav-unused-registers-end))
|
||||||
|
(dolist (register register-alist)
|
||||||
|
(when (and (>= (car register) begin)
|
||||||
|
(<= (car register) end))
|
||||||
|
(setq register-alist
|
||||||
|
(delq register register-alist))))
|
||||||
|
(message "Cleared unused registers in the range %c - %c." begin end)))
|
||||||
|
|
||||||
(provide 'register-quicknav)
|
(provide 'register-quicknav)
|
||||||
;;; register-quicknav.el ends here
|
;;; register-quicknav.el ends here
|
||||||
|
|
Loading…
Reference in New Issue