Updated rc handling. - sam - An updated version of the sam text editor.
(HTM) git clone git://vernunftzentrum.de/sam.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 5251c5d5b88a42a48abf2166f923e3bc87cf85eb
(DIR) parent 13e3d1905435de5371115508342439626e179efa
(HTM) Author: Rob King <jking@deadpixi.com>
Date: Fri, 9 Sep 2016 15:54:31 -0500
Updated rc handling.
Diffstat:
doc/samrc | 32 +++++++++++++++++++------------
samterm/samrc.c | 24 ++++++++++++------------
2 files changed, 32 insertions(+), 24 deletions(-)
---
(DIR) diff --git a/doc/samrc b/doc/samrc
@@ -1,42 +1,50 @@
-# This is a sample samrc file that sets up samterm the
-# way I like it. This offers a good starting point for
-# your own customized version.
+# This is samrc as I usually use it.
-# Control-A and Control-E jump to beginning/end of line
+# Control-A/E jumps to beginning/end of line
bind C a command bol
bind C e command eol
-# Control-H/L/J/K move left/right/down/up
+# Control-H/L/J/K moves left/right/down/up
bind C h command charleft
bind C l command charright
bind C j command linedown
bind C k command lineup
-# Control-Space highlights recently-typed text
+# Control-Space highlights recent text
bind C space command escape
-# Escape jumps between command file and working file
+# Escape jumps between command file and current file
bind n Escape command jump
-# Control-U deletes to beginning of line
+# Control-U deletes to beginning of lien
bind C u command delbol
# Control-W/BackSpace deletes previous word
bind C w command delword
bind C BackSpace command delword
-# Control-X/C/V does cut/snarf/paste
+# Control-X/C/V/Q does cut/snarf/paste/exchange
bind C x command cut
bind C c command snarf
bind C v command paste
-
-# Control-Q exchanges snarf buffers with windowing system
bind C q command exchange
-# Up/Down/Left/Right/PageUp/PageDown work as expected
+# Arrow keys and Page Up/Down work as expected
bind n Up command lineup
bind n Down command linedown
bind n Left command charleft
bind n Right command charright
bind n Prior command scrollup
bind n Next command scrolldown
+
+# I like 13pt Inconsolata
+font Inconsolata:size=13
+
+# Use black for text and borders, and an angry fruit salad for backgrounds
+foreground black
+border black
+background white:seashell:lightgreen:oldlace:lightcyan:gainsboro:lightyellow:mintcream:snow:lightblue:thistle
+
+# Expand tabs and have tabstops every four columns
+tabs 4
+expandtabs
(DIR) diff --git a/samterm/samrc.c b/samterm/samrc.c
@@ -9,6 +9,9 @@
#include <u.h>
#include <libg.h>
+extern int expandtabs;
+extern int tabwidth;
+
typedef struct Namemapping Namemapping;
struct Namemapping{
const char *name;
@@ -64,15 +67,7 @@ static Namemapping buttonmapping[] ={
static Namemapping modmapping[] ={
{"n", 0},
{"c", ControlMask},
- {"a", Mod1Mask},
- {"m", Mod1Mask},
- {"s", Mod2Mask},
- {"h", Mod3Mask},
- {"1", Mod1Mask},
- {"2", Mod2Mask},
- {"3", Mod3Mask},
- {"4", Mod4Mask},
- {"5", Mod5Mask},
+ {"s", ShiftMask},
{NULL, 0}
};
@@ -223,8 +218,9 @@ loadrcfile(FILE *f)
char cname[1024] = {0};
char tname[1024] = {0};
char c = 0;
- unsigned short i = 0;
+ unsigned short s = 0;
int rc = 0;
+ int i = 0;
ln++;
if (r == 0 || l[0] == '\n' || l[0] == 0 || sscanf(l, " %[#]", &c) == 1)
@@ -232,9 +228,9 @@ loadrcfile(FILE *f)
if (sscanf(l, " chord %5[Nn12345] %5[Nn12345] %99s %99s", s1, s2, cname, tname) == 4)
rc = installchord(statetomask(s1, buttonmapping), statetomask(s2, buttonmapping), nametocommand(cname), nametotarget(tname));
- else if (sscanf(l, " bind %5[ncamshNCAMSH12345] %99s raw %hx", s1, s2, &i) == 3)
+ else if (sscanf(l, " bind %5[ncamshNCAMSH12345] %99s raw 0x%hx", s1, s2, &s) == 3)
rc = installbinding(statetomask(s1, modmapping), XStringToKeysym(s2), Kraw, i);
- else if (sscanf(l, " bind %5[ncamshNCAMSH12345] %99s composed %hx", s1, s2, &i) == 3)
+ else if (sscanf(l, " bind %5[ncamshNCAMSH12345] %99s composed 0x%hx", s1, s2, &s) == 3)
rc = installbinding(statetomask(s1, modmapping), XStringToKeysym(s2), Kcomposed, i);
else if (sscanf(l, " bind %5[ncamshNCAMSH12345] %99s raw %c", s1, s2, &c) == 3)
rc = installbinding(statetomask(s1, modmapping), XStringToKeysym(s2), Kraw, c);
@@ -250,6 +246,10 @@ loadrcfile(FILE *f)
strncpy(borderspec, cname, sizeof(borderspec) - 1);
else if (sscanf(l, " font %1023s", cname) == 1)
strncpy(fontspec, cname, sizeof(fontspec) - 1);
+ else if (sscanf(l, " tabs %hu", &s) == 1 && s < 12 && s > 0)
+ tabwidth = s;
+ else if (sscanf(l, " expandtabs%n", &i) == 0 && i)
+ expandtabs = 1;
else
fprintf(stderr, "invalid rc line %zd\n", ln);