Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
c15ea92b09 | |||
06afa1efc4 | |||
e30883a708 | |||
0301a3a1ee | |||
6995a7f988 | |||
695d28b24c | |||
31b913666c | |||
d4c664fed9 | |||
c73f35ef9e | |||
e1b620cdde | |||
e42245aa65 | |||
1c13793033 | |||
ff58dadc4c | |||
24a23cbcee | |||
892b368b23 | |||
3883cbf298 | |||
e925e595d5 | |||
47471f561f | |||
fa7d5fe4fe | |||
9c5e0dde16 | |||
d50c5d122f | |||
fa6153bfc4 | |||
78ec3fe3de | |||
e6e20855a8 | |||
8de7717881 | |||
f2640264cd |
77
.drone.yml
Normal file
77
.drone.yml
Normal file
|
@ -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 ]
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,2 @@
|
|||
/flycheck*.el*
|
||||
*~
|
||||
*.elc
|
||||
|
|
55
README.md
55
README.md
|
@ -1,50 +1,65 @@
|
|||
# register-quicknav - Quickly jump to next/previous register
|
||||
|
||||
*Author:* tastytea <tastytea@tastytea.de><br>
|
||||
*Version:* 0.3.1<br>
|
||||
*Version:* 0.4.3<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
|
||||
to the next/previous position register. If you reach the end, the search
|
||||
wraps around and continues with the first (or last) register.
|
||||
wraps around and continues with the first (or last) register. It can be used
|
||||
across all files or individually for each buffer.
|
||||
|
||||
## Features
|
||||
|
||||
* Cycle through all position registers in both directions.
|
||||
* Clear current register.
|
||||
* Store point in unused register (range configurable).
|
||||
* Clear all registers in the unused registers range.
|
||||
|
||||
## Installation
|
||||
|
||||
**Note:** The function and variable names were previously separated by “/”
|
||||
from the namespace. To conform with MELPA rules the separator has been
|
||||
changed to “-”.
|
||||
|
||||
To use `register-quicknav.el`, put it in your load-path and add the following
|
||||
to your init.el:
|
||||
To use `register-quicknav.el`, get it from
|
||||
[MELPA](https://melpa.org/#/register-quicknav) or put it in your load-path
|
||||
and add the following to your init.el:
|
||||
|
||||
(require 'register-quicknav)
|
||||
(global-set-key (kbd "<C-f5>") #'register-quicknav-prev-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:
|
||||
|
||||
(use-package register-quicknav
|
||||
:bind (("C-<f5>" . register-quicknav-prev-register)
|
||||
("C-<f6>" . register-quicknav-next-register)
|
||||
("M-r" . 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"))
|
||||
:bind (("C-<f5>" . register-quicknav-prev-register)
|
||||
("C-<f6>" . register-quicknav-next-register)
|
||||
("C-<f7>" . register-quicknav-point-to-unused-register)
|
||||
("C-S-<f7>" . register-quicknav-clear-current-register)))
|
||||
|
||||
## Variables
|
||||
|
||||
* `register-quicknav-buffer-only`: Cycle only through position registers in
|
||||
current buffer.
|
||||
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
|
||||
|
||||
;; Author: tastytea <tastytea@tastytea.de>
|
||||
;; Version: 0.3.1
|
||||
;; Package-Requires: ((emacs "24.3"))
|
||||
;; Version: 0.4.3
|
||||
;; Package-Requires: ((emacs "25.3"))
|
||||
;; Keywords: convenience
|
||||
;; URL: https://schlomp.space/tastytea/register-quicknav
|
||||
|
||||
|
@ -25,69 +25,87 @@
|
|||
|
||||
;; This package is built on top of `register.el' and allows you to quickly jump
|
||||
;; to the next/previous position register. If you reach the end, the search
|
||||
;; wraps around and continues with the first (or last) register.
|
||||
;; wraps around and continues with the first (or last) register. It can be used
|
||||
;; across all files or individually for each buffer.
|
||||
|
||||
;; Features:
|
||||
;;
|
||||
;; * Cycle through all position registers in both directions.
|
||||
;; * Clear current register.
|
||||
;; * Store point in unused register (range configurable).
|
||||
;; * Clear all registers in the unused registers range.
|
||||
|
||||
;; Installation:
|
||||
;;
|
||||
;; **Note:** The function and variable names were previously separated by “/”
|
||||
;; from the namespace. To conform with MELPA rules the separator has been
|
||||
;; changed to “-”.
|
||||
;;
|
||||
;; To use `register-quicknav.el', put it in your load-path and add the following
|
||||
;; to your init.el:
|
||||
;; To use `register-quicknav.el', get it from
|
||||
;; [MELPA](https://melpa.org/#/register-quicknav) or put it in your load-path
|
||||
;; and add the following to your init.el:
|
||||
;;
|
||||
;; (require 'register-quicknav)
|
||||
;; (global-set-key (kbd "<C-f5>") #'register-quicknav-prev-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:
|
||||
;;
|
||||
;; (use-package register-quicknav
|
||||
;; :bind (("C-<f5>" . register-quicknav-prev-register)
|
||||
;; ("C-<f6>" . register-quicknav-next-register)
|
||||
;; ("M-r" . 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"))
|
||||
;; :bind (("C-<f5>" . register-quicknav-prev-register)
|
||||
;; ("C-<f6>" . register-quicknav-next-register)
|
||||
;; ("C-<f7>" . register-quicknav-point-to-unused-register)
|
||||
;; ("C-S-<f7>" . register-quicknav-clear-current-register)))
|
||||
|
||||
;; Variables:
|
||||
;;
|
||||
;; * `register-quicknav-buffer-only': Cycle only through position registers in
|
||||
;; current buffer.
|
||||
;; 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:
|
||||
|
||||
(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
|
||||
"Variables for register-quicknav."
|
||||
:group 'editing)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom register-quicknav-buffer-only nil
|
||||
"Cycle only through position registers in current buffer."
|
||||
:type 'boolean
|
||||
:group 'register-quicknav
|
||||
:safe #'booleanp)
|
||||
|
||||
(defcustom register-quicknav-unused-registers-begin ?A
|
||||
"Begin looking for unused register at this register."
|
||||
:type 'character
|
||||
:group 'register-quicknav)
|
||||
|
||||
(defvar-local register-quicknav--last-register-v nil
|
||||
(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.")
|
||||
|
||||
(defun register-quicknav--last-register (&optional val)
|
||||
|
@ -139,7 +157,7 @@ Works on markers and file-queries."
|
|||
(let ((result))
|
||||
(dolist (register register-alist)
|
||||
(if (or (markerp (cdr register))
|
||||
(eq (nth 1 register) 'file-query))
|
||||
(ignore-errors (eq (nth 1 register) 'file-query)))
|
||||
(if register-quicknav-buffer-only
|
||||
(when (register-quicknav--is-current-buffer? register)
|
||||
(push register result))
|
||||
|
@ -151,7 +169,7 @@ Works on markers and file-queries."
|
|||
(let* ((register-list (register-quicknav--registers))
|
||||
(index (cl-position (register-quicknav--last-register) register-list))
|
||||
(stop-searching))
|
||||
(unless (eq index nil)
|
||||
(when index
|
||||
(if next
|
||||
(cl-incf index)
|
||||
(cl-decf index)))
|
||||
|
@ -175,7 +193,7 @@ Works on markers and file-queries."
|
|||
(setq index (- (length register-list) 1))))
|
||||
(register-to-point (car (nth index register-list)))
|
||||
(register-quicknav--last-register (nth index register-list)))
|
||||
;; No suitable register found, jump to first or last register.
|
||||
;; No suitable register found, jump to first register.
|
||||
(register-to-point (car (car register-list)))
|
||||
(register-quicknav--last-register (car register-list)))))
|
||||
|
||||
|
@ -193,10 +211,45 @@ Works on markers and file-queries."
|
|||
|
||||
;;;###autoload
|
||||
(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)
|
||||
(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)
|
||||
;;; register-quicknav.el ends here
|
||||
|
|
Loading…
Reference in New Issue
Block a user