mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-23 04:23:08 +00:00
Add ^A/^E, ^B/^F editing keys for the input area.
Submitted by: Nick Dixon (nickdixon) Obtained from: Cscope's Sourceforge area, patch #403750
This commit is contained in:
parent
c3e9d2d249
commit
8cad2d661d
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=41935
@ -8,7 +8,7 @@
|
||||
|
||||
PORTNAME= cscope
|
||||
PORTVERSION= 15.1
|
||||
PORTREVISION= 2
|
||||
PORTREVISION= 3
|
||||
CATEGORIES= devel
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
MASTER_SITE_SUBDIR= ${PORTNAME}
|
||||
|
133
devel/cscope/files/patch-input.c
Normal file
133
devel/cscope/files/patch-input.c
Normal file
@ -0,0 +1,133 @@
|
||||
*** src/input.c.old Mon Feb 12 14:32:17 2001
|
||||
--- src/input.c Mon Feb 12 14:51:49 2001
|
||||
***************
|
||||
*** 103,107 ****
|
||||
--- 103,120 ----
|
||||
int c, i = 0;
|
||||
int j;
|
||||
+ char *sright; /* substring to the right of the cursor */
|
||||
+ int ri = 0; /* position in right-string */
|
||||
|
||||
+ /* Inserts and deletes are always performed on the left-string,
|
||||
+ * but we'll also have a right-string 'sright' to hold characters
|
||||
+ * which are on the right of the cursor [insertion point].
|
||||
+ *
|
||||
+ * Think of 'sright' as a stack -- we push chars into it when the cursor
|
||||
+ * moves left, and we pop chars off it when the cursor moves right again.
|
||||
+ * At the end of the function, we'll pop off any remaining characters
|
||||
+ * onto the end of 's'
|
||||
+ */
|
||||
+ sright = calloc(sizeof(char), size);
|
||||
+
|
||||
/* if a character already has been typed */
|
||||
if (firstchar != '\0') {
|
||||
***************
|
||||
*** 114,121 ****
|
||||
/* until the end of the line is reached */
|
||||
while ((c = mygetch()) != '\r' && c != '\n' && c != KEY_ENTER) {
|
||||
! if (c == erasechar() || c == KEY_BACKSPACE || c == DEL || c == ctrl('H') ) {
|
||||
/* erase */
|
||||
if (i > 0) {
|
||||
! addstr("\b \b");
|
||||
--i;
|
||||
}
|
||||
--- 127,177 ----
|
||||
/* until the end of the line is reached */
|
||||
while ((c = mygetch()) != '\r' && c != '\n' && c != KEY_ENTER) {
|
||||
!
|
||||
! if (c == KEY_LEFT || c == ctrl('B')) { /* left */
|
||||
! if (i > 0) {
|
||||
! addch('\b');
|
||||
! /* move this char into the second (rhs) string */
|
||||
! sright[ri++] = s[--i];
|
||||
! }
|
||||
! }
|
||||
! else if (c == KEY_RIGHT || c == ctrl('F')) { /* right */
|
||||
! if (i < size && ri > 0) {
|
||||
! /* move this char to the left of the cursor */
|
||||
! s[i++] = sright[--ri];
|
||||
! addch(s[i-1]);
|
||||
! }
|
||||
! }
|
||||
! else if (
|
||||
! #ifdef KEY_HOME
|
||||
! c == KEY_HOME ||
|
||||
! #endif
|
||||
! c == ctrl('A') ) {
|
||||
! while ( i > 0 ) {
|
||||
! sright[ri++] = s[--i];
|
||||
! addch('\b');
|
||||
! addch(s[i]);
|
||||
! addch('\b');
|
||||
! }
|
||||
! }
|
||||
! else if (
|
||||
! #ifdef KEY_END
|
||||
! c == KEY_END ||
|
||||
! #endif
|
||||
! c == ctrl('E') ) {
|
||||
! while ( ri > 0 ) {
|
||||
! s[i++] = sright[--ri];
|
||||
! addch(s[i-1]);
|
||||
! }
|
||||
! }
|
||||
! else if (c == erasechar() || c == KEY_BACKSPACE || c == DEL || c == ctrl('H') ) {
|
||||
/* erase */
|
||||
if (i > 0) {
|
||||
! if (ri == 0) {
|
||||
! addstr("\b \b");
|
||||
! } else {
|
||||
! addch('\b');
|
||||
! delch();
|
||||
! }
|
||||
! s[i] = '\0';
|
||||
--i;
|
||||
}
|
||||
***************
|
||||
*** 139,144 ****
|
||||
/* if it will fit on the line */
|
||||
if (i < size) {
|
||||
- addch(c); /* display it */
|
||||
s[i++] = c; /* save it */
|
||||
}
|
||||
}
|
||||
--- 195,205 ----
|
||||
/* if it will fit on the line */
|
||||
if (i < size) {
|
||||
s[i++] = c; /* save it */
|
||||
+ if (ri == 0) {
|
||||
+ addch(c); /* display it */
|
||||
+ } else {
|
||||
+ insch(c); /* display it */
|
||||
+ addch(c); /* advance cursor */
|
||||
+ }
|
||||
}
|
||||
}
|
||||
***************
|
||||
*** 155,162 ****
|
||||
}
|
||||
/* return on an empty line to allow a command to be entered */
|
||||
! if (firstchar != '\0' && i == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
s[i] = '\0';
|
||||
return(i);
|
||||
--- 216,232 ----
|
||||
}
|
||||
/* return on an empty line to allow a command to be entered */
|
||||
! if (firstchar != '\0' && (i+ri) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /* move any remaining chars on the rhs of the cursor
|
||||
+ * onto the end of our string
|
||||
+ */
|
||||
+ for (; ri > 0; ) {
|
||||
+ s[i++] = sright[--ri];
|
||||
+ }
|
||||
+ free(sright);
|
||||
+
|
||||
s[i] = '\0';
|
||||
return(i);
|
Loading…
Reference in New Issue
Block a user