*.gcno
*.gcda
*.gcov
+xedit
}
return curr;
}
-
-//char* buf_getstr(Buf* buf, unsigned beg, unsigned end) {
-// char utf[UTF_MAX] = {0};
-// size_t len = 0;
-// char* str = NULL;
-// for (; beg <= end; beg++) {
-// Rune rune = buf_get(buf, beg);
-// if (rune == RUNE_CRLF) {
-// str = realloc(str, len + 2);
-// str[len + 1] = '\r';
-// str[len + 2] = '\n';
-// len += 2;
-// } else {
-// size_t n = utf8encode(utf, rune);
-// str = realloc(str, len + n);
-// memcpy(str+len, utf, n);
-// len += n;
-// }
-// }
-// str = realloc(str, len+1);
-// if (str) str[len] = '\0';
-// return str;
-//}
-//
-//unsigned buf_putstr(Buf* buf, unsigned beg, unsigned end, char* str) {
-// /* delete the selected text first */
-// for (unsigned i = beg; ((end-beg) > 1) && (i <= end); i++)
-// buf_del(buf, beg);
-// /* insert the text */
-// while (*str) {
-// Rune rune = 0;
-// size_t length = 0;
-// while (!utf8decode(&rune, &length, *str++));
-// buf_ins(buf, beg++, rune);
-// }
-// return beg;
-//}
static unsigned scroll_dn(View* view) {
unsigned last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1;
- if (last >= buf_end(&(view->buffer)))
- return last;
/* delete the first row and shift the others */
if (view->nrows > 1) {
free(view->rows[0]);
unsigned last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1;
while (csr < first)
first = scroll_up(view);
- while (csr > last)
+ while (csr > last && last < buf_end(&(view->buffer)))
last = scroll_dn(view);
view->sync_needed = false;
}
Sel sel = view->selection;
selswap(&sel);
size_t num = num_selected(view->selection);
- for (size_t i = 0; i <= num; i++)
- buf_del(&(view->buffer), sel.beg);
+ if (num == 0) {
+ if (sel.end < buf_end(&(view->buffer)))
+ buf_del(&(view->buffer), sel.end);
+ } else {
+ for (size_t i = 0; i < num; i++)
+ buf_del(&(view->buffer), sel.beg);
+ }
view->selection.beg = view->selection.end = sel.beg;
view->selection.col = buf_getcol(&(view->buffer), view->selection.end);
view->sync_needed = true;
XftColorFree(X.display, X.visual, X.colormap, &fgc);
}
-//void x11_draw_utf8(XFont* font, int fg, int bg, int x, int y, char* str) {
-// static XftGlyphFontSpec specs[256];
-// size_t nspecs = 0;
-// while (*str && nspecs < 256) {
-// x11_font_getglyph(font, &(specs[nspecs]), *str);
-// specs[nspecs].x = x;
-// specs[nspecs].y = y;
-// x += font->base.width;
-// nspecs++;
-// str++;
-// }
-// x11_draw_glyphs(fg, bg, specs, nspecs);
-//}
-//
//void x11_warp_mouse(int x, int y) {
// XWarpPointer(X.display, X.window, X.window, 0, 0, X.width, X.height, x, y);
//}