possible feature: relative jumps

Benno Schulenberg <[email protected]> Mon, 30 Jun 2025 17:08:00 +0200
Newsgroups gmane.editors.nano.devel
Message-ID <[email protected]>
Op 30-06-2025 om 16:32 schreef pepa65:
> The relative jump sounds like a low-cost enhancement, that could be useful.
> So this is Ctrl-L "--200" or "++100"? I'd take it.

Not Ctrl+L but Ctrl+/ or Ctrl+7 or Alt+G (with default bindings).
(But I guess you have bound 'gotoline' to Ctrl+L?)

Cleaned-up tentative patch is attached.


Benno
0001-moving-understand-a-line-number-preceded-with-or-as-.patch (text/x-patch, 1.1 KB)
From ade7e329bbce458ab00950d21222fa9458ed553f Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <[email protected]>
Date: Mon, 30 Jun 2025 16:23:32 +0200
Subject: [PATCH] moving: understand a line number preceded with ++ or -- as
 relative

This permits jumping a precise number of lines forward or backward
in the buffer.
---
 src/search.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/search.c b/src/search.c
index e2e6f685..9a89991b 100644
--- a/src/search.c
+++ b/src/search.c
@@ -792,11 +792,19 @@ void goto_line_and_column(ssize_t line, ssize_t column, bool retain_answer,
 		if (response > 0)
 			return;
 
+		bool relative = (answer[0] == '+' && answer[1] == '+') ||
+						(answer[0] == '-' && answer[1] == '-');
+		if (relative)
+			memmove(answer, answer + 1, strlen(answer));
+
 		/* Try to extract one or two numbers from the user's response. */
 		if (!parse_line_column(answer, &line, &column)) {
 			statusline(AHEM, _("Invalid line or column number"));
 			return;
 		}
+
+		if (relative)
+			line = openfile->current->lineno + line;
 	} else {
 		if (line == 0)
 			line = openfile->current->lineno;
-- 
2.48.1
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEFo5vQpe/16ea/USWUUu+Lrjhlh8FAmhiqFAFAwAAAAAACgkQUUu+Lrjhlh9H
yQ//YkYOQWjuc6IIRbblF6bQ6fD0H8xeAmeoUG7nYYUwBE9QRUdEyJxbqHtZmk4NhlSuX1yoCHSW
IHX2Iq9kiSJmFL5pwPCHiO9fcs2i2kCB5woMA3XeHaoDPkO9OAB+H6VUc/vtPyv7OnOT75V6gsMU
qToBiTqKcJUhieRJ4/xQWSk0b5Fk1rxyzuhTBNzfXeBGb4V77XeTbpEOf0XOsucYBr4IdIYDMybc
47GYclkD1UYxEc2XycG5bP5A2EKytkl/d5cHnHbMdwzMoiVg+pFk972JrMm9TYaAIV9+GkdTIoHa
/ybY+l9yBe8FCEcbezmxPlQEag9iNS6AbWsMivzWgLQWp2SItSpEkrikSr2klT6Xkb2b7njG5PXM
fDB31vsFBrwqO7TNb+0sDpO9CWemoE3lYdlXhz3jUieRexRrbYInt+xTFsIseEHdrqBbU46H2I9i
l4bw2F9vJucKtUEzqhkr/DEqhhHznE19b7bmOQijTozeTxzMON+ehmSbyhNcAjnYd89gvxhTSvb4
45kATkHON6vjdY8ir4bCy3DOYWqbm+mywzrTiKyouDICUZkWku1b0/owHlVFzvE2OmFuiciwNFzJ
LS3KvK7IlTZYMo+9aLuiFx1mqCA7hFEdM0Td+f20UrqoCDTvj4bhivPYRH9iMD102WYfCFNvucF9
EIQ=
=+uPK
-----END PGP SIGNATURE-----