# Compiler Setup
CC = cc
-CFLAGS = --std=c99 -MMD $(INCS)
+CFLAGS = -g --std=c99 -MMD $(INCS)
# Linker Setup
LD = $(CC)
/* Configuration Data
*****************************************************************************/
-enum { /* Configuration Variables */
- FontString = 0, EditTagString, CmdTagString, WinWidth, WinHeight,
- LineSpacing, LineNumbers, RulerColumn, EventTimeout, CopyIndent, TrimOnSave,
- ExpandTabs, TabWidth, ScrollLines, DblClickTime, MaxScanDist, SyntaxEnabled,
- Color00, Color01, Color02, Color03, Color04, Color05, Color06, Color07,
- Color08, Color09, Color10, Color11, Color12, Color13, Color14, Color15,
+typedef struct { int fg, bg; } CPair;
- ClrScrollNor, ClrGutterNor, ClrGutterSel, ClrStatusNor, ClrTagsNor,
+extern char TagString[], FontString[];
+extern int Palette[16];
+extern int WinWidth, WinHeight, LineSpacing, RulerPos, Timeout, TabWidth, ScrollBy,
+ ClickTime, MaxScanDist, LineNums, Syntax, CopyIndent, TrimOnSave, ExpandTabs;
+extern CPair Colors[28];
+
+enum { /* Color Variables */
+ ClrScrollNor = 0, ClrGutterNor, ClrGutterSel, ClrStatusNor, ClrTagsNor,
ClrTagsSel, ClrTagsCsr, ClrEditNor, ClrEditSel, ClrEditCsr, ClrEditRul,
ClrBorders,
-
SynNormal, SynComment, SynConstant, SynString, SynChar, SynNumber,
SynBoolean, SynFloat, SynVariable, SynFunction, SynKeyword, SynOperator,
SynPreProc, SynType, SynStatement, SynSpecial
};
-
-void config_init(void* disp);
-void config_set_int(int key, int val);
-void config_set_bool(int key, bool val);
-void config_set_str(int key, char* val);
-int config_get_int(int key);
-bool config_get_bool(int key);
-char* config_get_str(int key);
size_t x, y;
size_t height, width;
size_t csrx, csry;
- int clrnor, clrsel, clrcsr;
+ CPair clrnor, clrsel, clrcsr;
bool warp_ptr;
View view;
} Region;
/* reset the state to defaults */
buf->modified = false;
- buf->expand_tabs = config_get_bool(ExpandTabs);
- buf->copy_indent = config_get_bool(CopyIndent);
+ buf->expand_tabs = ExpandTabs;
+ buf->copy_indent = CopyIndent;
buf->charset = UTF_8;
buf->crlf = 0;
buf->bufsize = 8192;
bool is_eol = (rune == '\n' || rune == RUNE_CRLF);
buf->modified = true;
if (fmt && buf->expand_tabs && rune == '\t') {
- size_t tabwidth = config_get_int(TabWidth);
+ size_t tabwidth = TabWidth;
size_t n = (tabwidth - ((off - buf_bol(buf, off)) % tabwidth));
log_insert(buf, &(buf->undo), off, off+n);
for(; n > 0; n--) off += insert(buf, off, ' ');
static int read_num(void);
void colors_init(char* path) {
- if (config_get_bool(SyntaxEnabled))
+ if (Syntax)
exec_spawn((char*[]){ "tide-hl.rb", path, NULL }, &ChildIn, &ChildOut);
}
/* if the engine died, clear all highlights and quit */
if (ChildIn < 0 || !buf->path)
return colors_rewind(spans, 0);
-
+#if 0
/* commence the highlighting */
if (beg < end) {
write_chunk(buf, beg, end);
fflush(stdout);
DataBeg = DataEnd = Buffer;
}
+#endif
return firstspan;
}
#include <utf.h>
#include <edit.h>
-#if 0
enum { OFF = 0, ON = 1 };
#ifdef __MACH__
#define LNSPACE 1
#endif
-char Tags[] = "Quit Save Undo Redo Cut Copy Paste | Find ";
-char Font[] = FONT;
+char TagString[] = "Quit Save Undo Redo Cut Copy Paste | Find ";
+char FontString[] = FONT;
int /* Integer config options */
WinWidth = 640,
WinHeight = 480,
LineSpacing = LNSPACE,
- Ruler = 80,
+ RulerPos = 80,
Timeout = 50,
TabWidth = 4,
ScrollBy = 4,
ClickTime = 500,
MaxScanDist = 0,
LineNums = ON,
- Syntax = ON,
+ Syntax = OFF,
CopyIndent = ON,
TrimOnSave = ON,
ExpandTabs = ON;
0xff859900
};
-struct { int fg, bg; } Colors[] = {
+CPair Colors[28] = {
/* UI Colors */
- [ClrScrollNor] = { .bg = 0, .fg = 0 },
- [ClrGutterNor] = { .bg = 0, .fg = 0 },
- [ClrGutterSel] = { .bg = 0, .fg = 0 },
- [ClrStatusNor] = { .bg = 0, .fg = 0 },
- [ClrTagsNor] = { .bg = 0, .fg = 0 },
- [ClrTagsSel] = { .bg = 0, .fg = 0 },
- [ClrTagsCsr] = { .bg = 0, .fg = 0 },
- [ClrEditNor] = { .bg = 0, .fg = 0 },
- [ClrEditSel] = { .bg = 0, .fg = 0 },
- [ClrEditCsr] = { .bg = 0, .fg = 0 },
- [ClrEditRul] = { .bg = 0, .fg = 0 },
- [ClrBorders] = { .bg = 0, .fg = 0 },
+ [ClrScrollNor] = { .bg = 3, .fg = 0 },
+ [ClrGutterNor] = { .bg = 1, .fg = 4 },
+ [ClrGutterSel] = { .bg = 2, .fg = 7 },
+ [ClrStatusNor] = { .bg = 0, .fg = 5 },
+ [ClrTagsNor] = { .bg = 1, .fg = 5 },
+ [ClrTagsSel] = { .bg = 2, .fg = 5 },
+ [ClrTagsCsr] = { .bg = 0, .fg = 7 },
+ [ClrEditNor] = { .bg = 0, .fg = 5 },
+ [ClrEditSel] = { .bg = 2, .fg = 5 },
+ [ClrEditCsr] = { .bg = 0, .fg = 7 },
+ [ClrEditRul] = { .bg = 0, .fg = 1 },
+ [ClrBorders] = { .bg = 3, .fg = 3 },
/* Syntax Colors */
- [SynNormal] = { .bg = 0, .fg = 0 },
- [SynComment] = { .bg = 0, .fg = 0 },
- [SynConstant] = { .bg = 0, .fg = 0 },
- [SynNumber] = { .bg = 0, .fg = 0 },
- [SynBoolean] = { .bg = 0, .fg = 0 },
- [SynFloat] = { .bg = 0, .fg = 0 },
- [SynString] = { .bg = 0, .fg = 0 },
- [SynChar] = { .bg = 0, .fg = 0 },
- [SynPreProc] = { .bg = 0, .fg = 0 },
- [SynType] = { .bg = 0, .fg = 0 },
- [SynKeyword] = { .bg = 0, .fg = 0 },
- [SynStatement] = { .bg = 0, .fg = 0 },
- [SynFunction] = { .bg = 0, .fg = 0 },
- [SynVariable] = { .bg = 0, .fg = 0 },
- [SynSpecial] = { .bg = 0, .fg = 0 },
- [SynOperator] = { .bg = 0, .fg = 0 },
+ [SynNormal] = { .bg = 0, .fg = 5 },
+ [SynComment] = { .bg = 0, .fg = 3 },
+ [SynConstant] = { .bg = 0, .fg = 14 },
+ [SynNumber] = { .bg = 0, .fg = 14 },
+ [SynBoolean] = { .bg = 0, .fg = 14 },
+ [SynFloat] = { .bg = 0, .fg = 14 },
+ [SynString] = { .bg = 0, .fg = 14 },
+ [SynChar] = { .bg = 0, .fg = 14 },
+ [SynPreProc] = { .bg = 0, .fg = 9 },
+ [SynType] = { .bg = 0, .fg = 8 },
+ [SynKeyword] = { .bg = 0, .fg = 15 },
+ [SynStatement] = { .bg = 0, .fg = 10 },
+ [SynFunction] = { .bg = 0, .fg = 11 },
+ [SynVariable] = { .bg = 0, .fg = 12 },
+ [SynSpecial] = { .bg = 0, .fg = 13 },
+ [SynOperator] = { .bg = 0, .fg = 12 },
};
-
-#endif
-
-XrmDatabase DB;
-struct {
- char* name;
- enum { STRING, INTEGER, BOOLEAN } type;
- union {
- bool opt;
- int num;
- char* str;
- } value;
-} Options[] = {
- [EditTagString] = { "tide.ui.tags.edit", STRING, {
- .str = "Quit Save Undo Redo Cut Copy Paste | Find " } },
- [CmdTagString] = { "tide.ui.tags.cmd", STRING, {
- .str = "Quit Undo Redo Cut Copy Paste | Send Find " } },
-
-#ifdef __MACH__
- [FontString] = { "tide.ui.font", STRING, {
- .str = "Monaco:size=10:antialias=true:autohint=true" } },
- [LineSpacing] = { "tide.ui.line_spacing", INTEGER, { .num = 0 } },
-#else
- [FontString] = { "tide.ui.font", STRING, {
- .str = "Liberation Mono:pixelsize=14:antialias=true:autohint=true" } },
- [LineSpacing] = { "tide.ui.line_spacing", INTEGER, { .num = 1 } },
-#endif
-
- /* user interface related options */
- [WinWidth] = { "tide.ui.width", INTEGER, { .num = 640 } },
- [WinHeight] = { "tide.ui.height", INTEGER, { .num = 480 } },
- [LineNumbers] = { "tide.ui.line_numbers", BOOLEAN, { .opt = true } },
- [SyntaxEnabled] = { "tide.ui.syntax_enabled", BOOLEAN, { .opt = true } },
- [RulerColumn] = { "tide.ui.ruler_column", INTEGER, { .num = 80 } },
- [EventTimeout] = { "tide.ui.timeout", INTEGER, { .num = 50 } },
-
- /* input related options */
- [CopyIndent] = { "tide.input.copy_indent", BOOLEAN, { .opt = true } },
- [TrimOnSave] = { "tide.input.trim_on_save", BOOLEAN, { .opt = true } },
- [ExpandTabs] = { "tide.input.expand_tabs", BOOLEAN, { .opt = true } },
- [TabWidth] = { "tide.input.tab_width", INTEGER, { .num = 4 } },
- [ScrollLines] = { "tide.input.scroll_lines", INTEGER, { .num = 4 } },
- [DblClickTime] = { "tide.input.click_time", INTEGER, { .num = 500 } },
- [MaxScanDist] = { "tide.input.max_scan_dist", INTEGER, { .num = 0 } },
-
- /* default color palette definition */
- [Color00] = { "tide.palette.00", INTEGER, { .num = 0xff002b36 } },
- [Color01] = { "tide.palette.01", INTEGER, { .num = 0xff073642 } },
- [Color02] = { "tide.palette.02", INTEGER, { .num = 0xff40565d } },
- [Color03] = { "tide.palette.03", INTEGER, { .num = 0xff657b83 } },
- [Color04] = { "tide.palette.04", INTEGER, { .num = 0xff839496 } },
- [Color05] = { "tide.palette.05", INTEGER, { .num = 0xff93a1a1 } },
- [Color06] = { "tide.palette.06", INTEGER, { .num = 0xffeee8d5 } },
- [Color07] = { "tide.palette.07", INTEGER, { .num = 0xfffdf6e3 } },
- [Color08] = { "tide.palette.08", INTEGER, { .num = 0xffb58900 } }, // Yellow
- [Color09] = { "tide.palette.09", INTEGER, { .num = 0xffcb4b16 } }, // Orange
- [Color10] = { "tide.palette.10", INTEGER, { .num = 0xffdc322f } }, // Red
- [Color11] = { "tide.palette.11", INTEGER, { .num = 0xffd33682 } }, // Magenta
- [Color12] = { "tide.palette.12", INTEGER, { .num = 0xff6c71c4 } }, // Violet
- [Color13] = { "tide.palette.13", INTEGER, { .num = 0xff268bd2 } }, // Blue
- [Color14] = { "tide.palette.14", INTEGER, { .num = 0xff2aa198 } }, // Cyan
- [Color15] = { "tide.palette.15", INTEGER, { .num = 0xff859900 } }, // Green
-
- /* UI Colors */
- [ClrScrollNor] = { "tide.colors.scroll.normal", INTEGER, { .num = 0x0300 } },
- [ClrGutterNor] = { "tide.colors.gutter.normal", INTEGER, { .num = 0x0104 } },
- [ClrGutterSel] = { "tide.colors.gutter.selected", INTEGER, { .num = 0x0207 } },
- [ClrStatusNor] = { "tide.colors.status.normal", INTEGER, { .num = 0x0005 } },
- [ClrTagsNor] = { "tide.colors.tags.normal", INTEGER, { .num = 0x0105 } },
- [ClrTagsSel] = { "tide.colors.tags.selected", INTEGER, { .num = 0x0205 } },
- [ClrTagsCsr] = { "tide.colors.tags.cursor", INTEGER, { .num = 0x07 } },
- [ClrEditNor] = { "tide.colors.edit.normal", INTEGER, { .num = 0x0005 } },
- [ClrEditSel] = { "tide.colors.edit.selected", INTEGER, { .num = 0x0205 } },
- [ClrEditCsr] = { "tide.colors.edit.cursor", INTEGER, { .num = 0x07 } },
- [ClrEditRul] = { "tide.colors.edit.ruler", INTEGER, { .num = 0x01 } },
- [ClrBorders] = { "tide.colors.borders", INTEGER, { .num = 0x0303 } },
-
- /* Syntax Colors */
- [SynNormal] = { "tide.colors.syntax.normal", INTEGER, { .num = 0x0005 } },
- [SynComment] = { "tide.colors.syntax.comment", INTEGER, { .num = 0x0003 } },
- [SynConstant] = { "tide.colors.syntax.constant", INTEGER, { .num = 0x000E } },
- [SynNumber] = { "tide.colors.syntax.number", INTEGER, { .num = 0x000E } },
- [SynBoolean] = { "tide.colors.syntax.boolean", INTEGER, { .num = 0x000E } },
- [SynFloat] = { "tide.colors.syntax.float", INTEGER, { .num = 0x000E } },
- [SynString] = { "tide.colors.syntax.string", INTEGER, { .num = 0x000E } },
- [SynChar] = { "tide.colors.syntax.character", INTEGER, { .num = 0x000E } },
- [SynPreProc] = { "tide.colors.syntax.preprocessor", INTEGER, { .num = 0x0009 } },
- [SynType] = { "tide.colors.syntax.type", INTEGER, { .num = 0x0008 } },
- [SynKeyword] = { "tide.colors.syntax.keyword", INTEGER, { .num = 0x000F } },
- [SynStatement] = { "tide.colors.syntax.statement", INTEGER, { .num = 0x000A } },
- [SynFunction] = { "tide.colors.syntax.function", INTEGER, { .num = 0x000B } },
- [SynVariable] = { "tide.colors.syntax.variable", INTEGER, { .num = 0x000C } },
- [SynSpecial] = { "tide.colors.syntax.special", INTEGER, { .num = 0x000D } },
- [SynOperator] = { "tide.colors.syntax.operator", INTEGER, { .num = 0x000C } },
-};
-
-void config_init(void* disp) {
- XrmDatabase db;
- char *homedir = getenv("HOME"),
- *userfile = strmcat(homedir, "/.config/tiderc", 0),
- *rootfile = strmcat(homedir, "/.Xdefaults", 0);
- XrmInitialize();
-
- /* load from xrdb or .Xdefaults */
- if (XResourceManagerString(disp) != NULL)
- db = XrmGetStringDatabase(XResourceManagerString(disp));
- else
- db = XrmGetFileDatabase(rootfile);
- XrmMergeDatabases(db, &DB);
-
- /* load user settings from ~/.config/tiderc */
- db = XrmGetFileDatabase(userfile);
- (void)XrmMergeDatabases(db, &DB);
-
- /* cleanup */
- free(userfile);
- free(rootfile);
-
- char* type;
- XrmValue val;
- for (size_t i = 0; i < nelem(Options); i++) {
- if (XrmGetResource(DB, Options[i].name, NULL, &type, &val)) {
- char* value = (char*)(val.addr);
- size_t len = val.size;
- switch (Options[i].type) {
- case STRING:
- if (*value == '\'') value++, len -= 2;
- Options[i].value.str = strndup(value, len);
- break;
-
- case INTEGER:
- Options[i].value.num = strtol(value, NULL, 0);
- break;
-
- case BOOLEAN:
- Options[i].value.opt = !strncmp(value, "true", len);
- break;
- }
- }
- }
-}
-
-void config_set_int(int key, int val) {
- assert(Options[key].type == INTEGER);
- Options[key].value.num = val;
-}
-
-void config_set_bool(int key, bool val) {
- assert(Options[key].type == BOOLEAN);
- Options[key].value.opt = val;
-}
-
-void config_set_str(int key, char* val) {
- assert(Options[key].type == STRING);
- Options[key].value.str = val;
-}
-
-int config_get_int(int key) {
- assert(Options[key].type == INTEGER);
- return Options[key].value.num;
-}
-
-bool config_get_bool(int key) {
- assert(Options[key].type == BOOLEAN);
- return Options[key].value.num;
-}
-
-char* config_get_str(int key) {
- assert(Options[key].type == STRING);
- return Options[key].value.str;
-}
}
int runewidth(unsigned col, Rune r) {
- size_t tabwidth = config_get_int(TabWidth);
+ size_t tabwidth = TabWidth;
if (r == '\t') return (tabwidth - (col % tabwidth));
int width = wcwidth(r);
if (width < 0) width = 1;
last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen;
view->spans = colors_rewind(view->spans, first);
size_t start = (view->spans ? view->spans->end : 0);
- size_t scandist = config_get_int(MaxScanDist);
+ size_t scandist = MaxScanDist;
if (scandist && first-start > scandist)
start = first - scandist;
view->spans = colors_scan(view->spans, &(view->buffer), start, last+1);
void view_indent(View* view, int dir) {
Buf* buf = &(view->buffer);
- unsigned indoff = (buf->expand_tabs ? config_get_int(TabWidth) : 1);
+ unsigned indoff = (buf->expand_tabs ? TabWidth : 1);
selswap(&(view->selection));
view->selection.beg = buf_bol(buf, view->selection.beg);
view->selection.end = buf_eol(buf, view->selection.end);
#include <win.h>
#include <ctype.h>
+static int clrfg(int id) { return Palette[Colors[id].fg]; }
+static int clrbg(int id) { return Palette[Colors[id].bg]; }
+
static void onredraw(int height, int width);
static void oninput(int mods, Rune key);
static void onmousedrag(int state, int x, int y);
for (int i = 0; i < SCROLL; i++)
view_init(&(Regions[i].view), NULL, errfn);
x11_init(&Config);
- Font = x11_font_load(config_get_str(FontString));
- Regions[SCROLL].clrnor = config_get_int(ClrScrollNor);
- Regions[TAGS].clrnor = config_get_int(ClrTagsNor);
- Regions[TAGS].clrsel = config_get_int(ClrTagsSel);
- Regions[TAGS].clrcsr = config_get_int(ClrTagsCsr);
- Regions[EDIT].clrnor = config_get_int(ClrEditNor);
- Regions[EDIT].clrsel = config_get_int(ClrEditSel);
- Regions[EDIT].clrcsr = config_get_int(ClrEditCsr);
+ Font = x11_font_load(FontString);
+ Regions[SCROLL].clrnor = Colors[ClrScrollNor];
+ Regions[TAGS].clrnor = Colors[ClrTagsNor];
+ Regions[TAGS].clrsel = Colors[ClrTagsSel];
+ Regions[TAGS].clrcsr = Colors[ClrTagsCsr];
+ Regions[EDIT].clrnor = Colors[ClrEditNor];
+ Regions[EDIT].clrsel = Colors[ClrEditSel];
+ Regions[EDIT].clrcsr = Colors[ClrEditCsr];
}
void win_window(char* name, bool isdialog, void (*errfn)(char*)) {
win_init(errfn);
if (isdialog)
- x11_dialog(name, config_get_int(WinWidth), config_get_int(WinHeight));
+ x11_dialog(name, WinWidth, WinHeight);
else
- x11_window(name, config_get_int(WinWidth), config_get_int(WinHeight));
+ x11_window(name, WinWidth, WinHeight);
}
static void win_update(int xfd, void* data) {
void win_loop(void) {
x11_show();
x11_flip();
- int ms = config_get_int(EventTimeout);
event_watchfd(x11_connfd(), INPUT, win_update, NULL);
while (x11_running()) {
- bool pending = event_poll(ms);
+ bool pending = event_poll(Timeout);
exec_reap();
int nevents = x11_events_queued();
if (update_focus() || pending || nevents) {
layout(width, height);
onupdate(); // Let the user program update the status and other content
- view_update(win_view(TAGS), Regions[TAGS].clrnor, Regions[TAGS].clrsel, &(Regions[TAGS].csrx), &(Regions[TAGS].csry));
- view_update(win_view(EDIT), Regions[EDIT].clrnor, Regions[EDIT].clrsel, &(Regions[EDIT].csrx), &(Regions[EDIT].csry));
+ view_update(win_view(TAGS), Regions[TAGS].clrnor.bg, Regions[TAGS].clrsel.bg, &(Regions[TAGS].csrx), &(Regions[TAGS].csry));
+ view_update(win_view(EDIT), Regions[EDIT].clrnor.bg, Regions[EDIT].clrsel.bg, &(Regions[EDIT].csrx), &(Regions[EDIT].csry));
onlayout(); // Let the user program update the scroll bar
- int clr_hbor = config_get_int(ClrBorders) >> 8;
- int clr_vbor = config_get_int(ClrBorders) & 0xFF;
- int clr_scroll = config_get_int(ClrScrollNor);
+ int clr_hbor = Colors[ClrBorders].bg;
+ int clr_vbor = Colors[ClrBorders].bg;
+ int clr_scroll = Colors[ClrScrollNor].bg;
for (int i = 0; i < SCROLL; i++) {
View* view = win_view(i);
- x11_draw_rect((Regions[i].clrnor >> 8), 0, Regions[i].y - 3, width, Regions[i].height + 8);
- x11_draw_rect(clr_hbor, 0, Regions[i].y - 3, width, 1);
+ x11_draw_rect(Palette[Regions[i].clrnor.bg], 0, Regions[i].y - 3, width, Regions[i].height + 8);
+ x11_draw_rect(Palette[clr_hbor], 0, Regions[i].y - 3, width, 1);
if (i == EDIT) {
size_t gsz = gutter_size();
if (Ruler)
- x11_draw_rect( config_get_int(ClrEditRul),
+ x11_draw_rect( Palette[Colors[ClrEditRul].bg],
((Ruler+2) * fwidth) + gsz,
Regions[i].y-2,
1,
Regions[i].height+7 );
if (ShowLineNumbers)
- x11_draw_rect( (config_get_int(ClrGutterNor) >> 8),
+ x11_draw_rect( Palette[Colors[ClrGutterNor].bg],
Regions[SCROLL].width,
Regions[SCROLL].y-2,
gsz,
size_t thumboff = (size_t)((thumbreg * ScrollOffset) + (Regions[SCROLL].y - 2));
size_t thumbsz = (size_t)(thumbreg * ScrollVisible);
if (thumbsz < 5) thumbsz = 5;
- x11_draw_rect(clr_vbor, Regions[SCROLL].width, Regions[SCROLL].y - 2, 1, Regions[SCROLL].height);
- x11_draw_rect((clr_scroll >> 8), 0, Regions[SCROLL].y - 2, Regions[SCROLL].width, thumbreg);
- x11_draw_rect((clr_scroll & 0xFF), 0, thumboff, Regions[SCROLL].width, thumbsz);
+ x11_draw_rect(Palette[clr_vbor], Regions[SCROLL].width, Regions[SCROLL].y - 2, 1, Regions[SCROLL].height);
+ //x11_draw_rect((clr_scroll >> 8), 0, Regions[SCROLL].y - 2, Regions[SCROLL].width, thumbreg);
+ //x11_draw_rect((clr_scroll & 0xFF), 0, thumboff, Regions[SCROLL].width, thumbsz);
/* place the cursor on screen */
if (Regions[Focused].csrx != SIZE_MAX && Regions[Focused].csry != SIZE_MAX) {
x11_draw_rect(
- Regions[Focused].clrcsr,
+ Palette[Regions[Focused].clrcsr.bg],
Regions[Focused].x + (Regions[Focused].csrx * fwidth),
Regions[Focused].y + (Regions[Focused].csry * fheight),
1, fheight);
view_scroll(win_view(EDIT), +row);
break;
case MouseWheelUp:
- view_scroll(win_view(EDIT), -(config_get_int(ScrollLines)));
+ view_scroll(win_view(EDIT), -ScrollBy);
break;
case MouseWheelDn:
- view_scroll(win_view(EDIT), +(config_get_int(ScrollLines)));
+ view_scroll(win_view(EDIT), +ScrollBy);
break;
}
}
static void onwheelup(WinRegion id, bool pressed, size_t row, size_t col) {
if (!pressed) return;
- view_scroll(win_view(id), -(config_get_int(ScrollLines)));
+ view_scroll(win_view(id), -ScrollBy);
}
static void onwheeldn(WinRegion id, bool pressed, size_t row, size_t col) {
if (!pressed) return;
- view_scroll(win_view(id), +(config_get_int(ScrollLines)));
+ view_scroll(win_view(id), +ScrollBy);
}
static void oncommand(char* cmd) {
}
static void draw_line_num(bool current, size_t x, size_t y, size_t gcols, size_t num) {
- int color = config_get_int(ClrGutterNor);
+ int color = clrbg(ClrGutterNor);
if (!gcols) return;
if (current) {
- color = config_get_int(ClrGutterSel);;
+ color = clrbg(ClrGutterSel);;
size_t fheight = x11_font_height(Font);
x11_draw_rect((color >> 8), x-3, y-fheight, gutter_size(), fheight);
}
static void xftcolor(XftColor* xc, int id) {
#define COLOR(c) ((c) | ((c) >> 8))
- uint32_t c = config_get_int(id + Color00);
+ uint32_t c = Palette[id];
xc->color.alpha = COLOR((c & 0xFF000000) >> 16);
xc->color.red = COLOR((c & 0x00FF0000) >> 8);
xc->color.green = COLOR((c & 0x0000FF00));
SelTarget = XInternAtom(X.display, "UTF8_STRING", 0);
if (SelTarget == None)
SelTarget = XInternAtom(X.display, "STRING", 0);
- config_init(X.display);
}
int x11_connfd(void) {
X.width,
X.height,
0, X.depth,
- config_get_int(Color00));
+ Palette[0]);
/* register interest in the delete window message */
Atom wmDeleteMessage = XInternAtom(X.display, "WM_DELETE_WINDOW", False);
XGlyphInfo extent;
XftTextExtentsUtf8(X.display, font, (const FcChar8*)"0", 1, &extent);
int w = extent.xOff;
- int h = (font->height - font->descent) + config_get_int(LineSpacing);
+ int h = (font->height - font->descent) + LineSpacing;
xftcolor(&bgc, bg);
size_t width = specs[nspecs-1].x - specs[0].x + w;
if (eol) width = X.width - specs[0].x;
- x11_draw_rect(bg, specs[0].x, specs[0].y - h, width, font->height + config_get_int(LineSpacing));
+ x11_draw_rect(bg, specs[0].x, specs[0].y - h, width, font->height + LineSpacing);
XftColorFree(X.display, X.visual, X.colormap, &bgc);
}
xftcolor(&fgc, fg);
static void trim_whitespace(void) {
Buf* buf = win_buf(EDIT);
- if (config_get_bool(TrimOnSave) && buf_end(buf) > 0) {
+ if (TrimOnSave && buf_end(buf) > 0) {
View* view = win_view(EDIT);
unsigned off = 0, prev = 1;
/* loop through the buffer till we hit the end or we stop advancing */
static void quit(void) {
static uint64_t before = 0;
uint64_t now = getmillis();
- if (!win_buf(EDIT)->modified || (now-before) <= (uint64_t)config_get_int(DblClickTime)) {
+ if (!win_buf(EDIT)->modified || (now-before) <= (uint64_t)ClickTime) {
#ifndef TEST
x11_deinit();
#else
static uint64_t before = 0;
if (!pressed) return;
uint64_t now = getmillis();
- count = ((now-before) <= (uint64_t)config_get_int(DblClickTime) ? count+1 : 1);
+ count = ((now-before) <= (uint64_t)ClickTime ? count+1 : 1);
before = now;
if (count == 1) {
if (*argv) edit_relative(*argv);
/* now create the window and start the event loop */
- win_settext(TAGS, config_get_str(EditTagString));
- win_setruler(config_get_int(RulerColumn));
- win_setlinenums(config_get_bool(LineNumbers));
+ win_settext(TAGS, TagString);
+ win_setruler(RulerPos);
+ win_setlinenums(LineNums);
win_setkeys(Bindings, oninput);
win_loop();
return 0;