Introduction
Introduction Statistics Contact Development Disclaimer Help
Add the look, search, and write commands. - sam - An updated version of the sam…
git clone git://vernunftzentrum.de/sam.git
Log
Files
Refs
LICENSE
---
commit e3c7cd4d198971a71e0cff17613c17248d58a76b
parent 3f2c8e96b3233b85916aaca81d4f414a8e90887f
Author: Rob King <[email protected]>
Date: Fri, 23 Sep 2016 21:57:21 -0500
Add the look, search, and write commands.
Diffstat:
doc/samrc | 6 +++++-
doc/samrc.5 | 3 +++
samterm/main.c | 36 ++++++++++++++++++++++++++++++-
samterm/menu.c | 6 ++++++
samterm/samrc.c | 3 +++
samterm/samterm.h | 5 ++++-
6 files changed, 56 insertions(+), 3 deletions(-)
---
diff --git a/doc/samrc b/doc/samrc
@@ -49,9 +49,13 @@ bind C z command send u
bind C Enter command send +-a/\n/
# Control-S writes the file, Control-Shift-S writes all files.
-bind C s command send w
+bind C s command write
bind CS s command send X w
+# Control-N does a search, Control-Shift-N does a look
+bind C n command search
+bind CS n command look
+
# I like 13pt Inconsolata (I need new glasses)
font Inconsolata:size=13
diff --git a/doc/samrc.5 b/doc/samrc.5
@@ -260,6 +260,9 @@ eol Move to end of line None
bol Move to beginning of line None
tab Insert a (possibly expanded) tab Tab
send Append argument to command window None
+write Write the current file to disk None
+look Find the next occurance of the string in dot None
+search Find the next occurance of the last regex None
.TE
.Pp
Additionally,
diff --git a/samterm/main.c b/samterm/main.c
@@ -670,6 +670,37 @@ cmdjump(Flayer *l, long a, Text *u, const char *arg)
}
static long
+cmdlook(Flayer *l, long a, Text *t, const char *arg)
+{
+ outTsll(Tlook, t->tag, which->p0, which->p1);
+ setlock();
+ return a;
+}
+
+static long
+cmdsearch(Flayer *l, long a, Text *t, const char *arg)
+{
+ if (t != &cmd && haspat()){
+ outcmd();
+ outT0(Tsearch);
+ setlock();
+ }
+ return a;
+}
+
+static long
+cmdwrite(Flayer *l, long a, Text *t, const char *arg)
+{
+ cursorswitch(BullseyeCursor);
+ if (t != &cmd){
+ outTs(Twrite, t->tag);
+ setlock();
+ }
+ cursorswitch(cursor);
+ return a;
+}
+
+static long
cmdescape(Flayer *l, long a, Text *t, const char *arg)
{
if (typeesc >= 0){
@@ -914,7 +945,10 @@ CommandEntry commands[Cmax] ={
[Ceol] = {cmdeol, false, false},
[Cbol] = {cmdbol, false, false},
[Ctab] = {cmdtab, false, false},
- [Csend] = {cmdsend, false, false}
+ [Csend] = {cmdsend, false, false},
+ [Clook] = {cmdlook, false, false},
+ [Csearch] = {cmdsearch, false, false},
+ [Cwrite] = {cmdwrite, false, false}
};
diff --git a/samterm/menu.c b/samterm/menu.c
@@ -265,6 +265,12 @@ setpat(char *s)
menu2str[Search] = pat;
}
+bool
+haspat(void)
+{
+ return (bool)(menu2str[Search]);
+}
+
#define NBUF 64
static uchar buf[NBUF*UTFmax]={' ', ' ', ' ', ' '};
diff --git a/samterm/samrc.c b/samterm/samrc.c
@@ -45,6 +45,9 @@ static Namemapping commandmapping[] ={
{"bol", Cbol},
{"tab", Ctab},
{"send", Csend},
+ {"look", Clook},
+ {"search", Csearch},
+ {"write", Cwrite},
{NULL, 0}
};
diff --git a/samterm/samterm.h b/samterm/samterm.h
@@ -6,7 +6,6 @@
#define NL 5
enum{
-
Cescape = Csysmax + 1, /* highlight recently typed text */
Cscrolldown, /* scroll file down by screen */
Cscrollup, /* scroll file up by screen */
@@ -29,6 +28,9 @@ enum{
Cbol, /* move to end of line */
Ctab, /* insert a possibly expanded tab */
Csend, /* send a command to the editor */
+ Cwrite, /* write the current file */
+ Clook, /* literal search */
+ Csearch, /* search for regex again */
Cmax /* invalid command */
};
@@ -148,6 +150,7 @@ void menuins(int, uchar*, Text*, int, int);
void menudel(int);
Text *sweeptext(int, int);
void setpat(char*);
+bool haspat(void);
void scrdraw(Flayer*, long tot);
int rcontig(Rasp*, ulong, ulong, int);
int rmissing(Rasp*, ulong, ulong);
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.