Introduction
Introduction Statistics Contact Development Disclaimer Help
Added support for expanding tabs to spaces. - sam - An updated version of the s…
git clone git://vernunftzentrum.de/sam.git
Log
Files
Refs
LICENSE
---
commit c3e45a28540eeac825842265b3408254ad42b7cc
parent ba79cd6352170c348fd33f185d347119edd1cce5
Author: Rob King <[email protected]>
Date: Tue, 17 May 2016 23:44:39 -0500
Added support for expanding tabs to spaces.
Inserting a composed tab character (e.g. via Alt-t-a) still inserts a
literal tab, for when you're editing Makefiles.
Diffstat:
sam/sam.c | 9 ++++++++-
samterm/main.c | 30 ++++++++++++++++++++++++------
2 files changed, 32 insertions(+), 7 deletions(-)
---
diff --git a/sam/sam.c b/sam/sam.c
@@ -19,6 +19,7 @@ jmp_buf mainloop;
List tempfile;
int quitok = TRUE;
int downloaded;
+int expandtabs;
int dflag;
int Rflag;
char *machine;
@@ -42,6 +43,12 @@ int main(int argc, char *argv[])
ap = argv;
while(argc>1 && argv[0] && argv[0][0]=='-'){
switch(argv[0][1]){
+ case 'e':
+ *ap++ = *argv++;
+ --argc;
+ expandtabs++;
+ break;
+
case 'd':
dflag++;
break;
@@ -119,7 +126,7 @@ int main(int argc, char *argv[])
void
usage(void)
{
- dprint("usage: sam [-d] [-t samterm] [-s sam name] -r machine\n");
+ dprint("usage: sam [-d] [-e] [-t samterm] [-s sam name] -r machine\n");
exits("usage");
}
diff --git a/samterm/main.c b/samterm/main.c
@@ -3,6 +3,7 @@
#include <libc.h>
#include <libg.h>
#include <frame.h>
+#include <unistd.h>
#include "flayer.h"
#include "samterm.h"
@@ -22,6 +23,7 @@ long typeesc = -1;
long modified = 0; /* strange lookahead for menus */
char lock = 1;
char hasunlocked = 0;
+int expandtabs = 0;
int chord = 0;
char *machine = "localhost";
@@ -44,17 +46,23 @@ char *machine = "localhost";
void
main(int argc, char *argv[])
{
- int i, got, scr;
+ int i, got, scr, opt;
Text *t;
Rectangle r;
Flayer *nwhich;
-
int fwdbut;
- if (argc >= 3 && strcmp(argv[1], "-r") == 0)
- {
- machine = argv[2];
- }
+ while ((opt = getopt(argc, argv, "er:")) != -1){
+ switch (opt){
+ case 'r':
+ machine = optarg;
+ break;
+
+ case 'e':
+ expandtabs = 1;
+ break;
+ }
+ }
getscreen(argc, argv);
fwdbut = scrollfwdbut();
@@ -528,6 +536,16 @@ type(Flayer *l, int res) /* what a bloody mess this…
break;
}
}
+ if (expandtabs && c == '\t' && !k.composed){
+ int col = 0, nspaces = 8, off = a;
+ while (off > 0 && raspc(&t->rasp, off - 1) != '\n')
+ off--, col++;
+
+ nspaces = tabwidth - col % tabwidth;
+ for (int i = 0; i < nspaces; i++)
+ pushkbd(' ');
+ break;
+ }
*p++ = c;
if(c == '\n' || p >= buf+sizeof(buf)/sizeof(buf[0]))
break;
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.