diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-05-02 16:46:22 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-05-04 13:47:50 +0200 |
| commit | c5f1b4e0f55fecf6c13f9a6fcdf6f0d44592171f (patch) | |
| tree | 3d61dca197a23c4673fc7f0d31dae3ffb683ec10 /ui-curses.c | |
| parent | bab79b3bbdb95579ffc7e447bed3b00f2547505c (diff) | |
| download | vis-c5f1b4e0f55fecf6c13f9a6fcdf6f0d44592171f.tar.gz vis-c5f1b4e0f55fecf6c13f9a6fcdf6f0d44592171f.tar.xz | |
vis: enable large file optimizations for files with long lines
Diffstat (limited to 'ui-curses.c')
| -rw-r--r-- | ui-curses.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ui-curses.c b/ui-curses.c index 7be2930..1b3af1e 100644 --- a/ui-curses.c +++ b/ui-curses.c @@ -19,6 +19,7 @@ #include "ui-curses.h" #include "vis.h" +#include "vis-core.h" #include "text.h" #include "util.h" #include "text-util.h" @@ -638,14 +639,14 @@ static void ui_window_draw_status(UiWin *w) { UiCurses *uic = win->ui; Vis *vis = uic->vis; bool focused = uic->selwin == win; - const char *filename = vis_file_name(win->file); + const char *filename = win->file->name; const char *status = vis_mode_status(vis); wattrset(win->winstatus, focused ? A_REVERSE|A_BOLD : A_REVERSE); mvwhline(win->winstatus, 0, 0, ' ', win->width); mvwprintw(win->winstatus, 0, 0, "%s %s %s %s", focused && status ? status : "", filename ? filename : "[No Name]", - text_modified(vis_file_text(win->file)) ? "[+]" : "", + text_modified(win->file->text) ? "[+]" : "", vis_macro_recording(vis) ? "recording": ""); char buf[4*32] = "", *msg = buf; @@ -660,6 +661,8 @@ static void ui_window_draw_status(UiWin *w) { Cursor *cur = view_cursors_primary_get(win->view); size_t line = view_cursors_line(cur); size_t col = view_cursors_col(cur); + if (col > UI_LARGE_FILE_LINE_SIZE) + win->options |= UI_OPTION_LARGE_FILE; msg += sprintf(msg, "%zu, %zu", line, col); } @@ -740,7 +743,7 @@ static void ui_window_reload(UiWin *w, File *file) { UiCursesWin *win = (UiCursesWin*)w; win->file = file; win->sidebar_width = 0; - view_reload(win->view, vis_file_text(file)); + view_reload(win->view, file->text); ui_window_draw(w); } @@ -1008,6 +1011,11 @@ static UiWin *ui_window_new(Ui *ui, View *view, File *file, enum UiOption option win->next = uic->windows; uic->windows = win; + if (text_size(file->text) > UI_LARGE_FILE_SIZE) { + options |= UI_OPTION_LARGE_FILE; + options &= ~UI_OPTION_LINE_NUMBERS_ABSOLUTE; + } + ui_window_options_set((UiWin*)win, options); return &win->uiwin; |
