* gap buffer does not handle UTF-8 currently
* mouse selection handling when mouse moves outside region
* Line - Get the current line number(s) containing the selection
+* refactor selection handling to avoid swapping manually (use buf_selbeg and buf_selend)
## BACKLOG
size_t n = (TabWidth - ((off - buf_bol(BUF, off)) % TabWidth));
for (; n > 0; n--) buf_putc(BUF, ' ');
} else if (CopyIndent && rune == '\n') {
- size_t off = buf_selbeg(BUF);
- size_t beg = buf_bol(BUF, off-1), end = beg;
- for (; end < buf_end(BUF) && (' ' == buf_getrat(BUF, end) || '\t' == buf_getrat(BUF, end)); end++);
+ size_t off = buf_selbeg(BUF);
+ size_t beg = buf_bol(BUF, off-1), end = beg;
+ for (; end < buf_end(BUF) && (' ' == buf_getrat(BUF, end) || '\t' == buf_getrat(BUF, end)); end++);
buf_putc(BUF, '\n');
for (; beg < end; beg++)
- buf_putc(BUF, buf_getrat(BUF, beg));
+ buf_putc(BUF, buf_getrat(BUF, beg));
} else {
buf_putc(BUF, rune);
}
/* load the base font */
FcResult result;
FcPattern* match = XftFontMatch(X.display, X.screen, pattern, &result);
- if (!match || !(X.font = XftFontOpenPattern(X.display, match)))
+ if (match) {
+ XftFont* font = XftFontOpenPattern(X.display, match);
+ X.font = (font ? font : X.font); // Update if we found a new font
+ }
+ if (!X.font)
die("could not load base font\n");
FcPatternDestroy(pattern);
FcPatternDestroy(match);