summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fe-text/gui-windows.c7
-rw-r--r--src/fe-text/textbuffer-view.c19
-rw-r--r--src/fe-text/textbuffer-view.h16
3 files changed, 24 insertions, 18 deletions
diff --git a/src/fe-text/gui-windows.c b/src/fe-text/gui-windows.c
index 57a2b488..f25a12a6 100644
--- a/src/fe-text/gui-windows.c
+++ b/src/fe-text/gui-windows.c
@@ -45,7 +45,8 @@ static GUI_WINDOW_REC *gui_window_init(WINDOW_REC *window,
gui->parent = parent;
gui->view = textbuffer_view_create(textbuffer_create(),
window->width, window->height,
- settings_get_int("indent"));
+ settings_get_int("indent"),
+ settings_get_bool("indent_always"));
return gui;
}
@@ -283,7 +284,8 @@ static void read_settings(void)
WINDOW_REC *rec = tmp->data;
textbuffer_view_set_default_indent(WINDOW_GUI(rec)->view,
- settings_get_int("indent"));
+ settings_get_int("indent"),
+ settings_get_bool("indent_always"));
}
special_vars_add_signals(prompt, 4, funcs);
@@ -296,6 +298,7 @@ void gui_windows_init(void)
{
settings_add_bool("lookandfeel", "autostick_split_windows", TRUE);
settings_add_int("lookandfeel", "indent", 10);
+ settings_add_bool("lookandfeel", "indent_always", FALSE);
settings_add_str("lookandfeel", "prompt", "[$[.15]T] ");
settings_add_str("lookandfeel", "prompt_window", "[$winname] ");
diff --git a/src/fe-text/textbuffer-view.c b/src/fe-text/textbuffer-view.c
index 2739461b..917b231c 100644
--- a/src/fe-text/textbuffer-view.c
+++ b/src/fe-text/textbuffer-view.c
@@ -164,7 +164,8 @@ view_update_line_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line)
}
if (xpos == view->width && sub != NULL &&
- (last_space <= indent_pos || last_space <= 10)) {
+ (last_space <= indent_pos || last_space <= 10) &&
+ !view->longword_noindent) {
/* long word, remove the indentation from this line */
xpos -= sub->indent;
sub->indent = 0;
@@ -179,7 +180,7 @@ view_update_line_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line)
color = last_color;
ptr = last_space_ptr;
while (*ptr == ' ') ptr++;
- } else {
+ } else if (!view->longword_noindent) {
/* long word, no indentation in next line */
xpos = 0;
sub->continues = TRUE;
@@ -373,7 +374,8 @@ static void textbuffer_view_init_ypos(TEXT_BUFFER_VIEW_REC *view)
/* Create new view. */
TEXT_BUFFER_VIEW_REC *textbuffer_view_create(TEXT_BUFFER_REC *buffer,
int width, int height,
- int default_indent)
+ int default_indent,
+ int longword_noindent)
{
TEXT_BUFFER_VIEW_REC *view;
@@ -386,7 +388,8 @@ TEXT_BUFFER_VIEW_REC *textbuffer_view_create(TEXT_BUFFER_REC *buffer,
view->width = width;
view->height = height;
- view->default_indent = default_indent;
+ view->default_indent = default_indent;
+ view->longword_noindent = longword_noindent;
view->cache = textbuffer_cache_get(view->siblings, width);
textbuffer_view_init_bottom(view);
@@ -435,11 +438,11 @@ void textbuffer_view_destroy(TEXT_BUFFER_VIEW_REC *view)
/* Change the default indent position */
void textbuffer_view_set_default_indent(TEXT_BUFFER_VIEW_REC *view,
- int default_indent)
+ int default_indent,
+ int longword_noindent)
{
- g_return_if_fail(view != NULL);
-
- view->default_indent = default_indent;
+ view->default_indent = default_indent;
+ view->longword_noindent = longword_noindent;
}
static int view_get_linecount_all(TEXT_BUFFER_VIEW_REC *view, GList *lines)
diff --git a/src/fe-text/textbuffer-view.h b/src/fe-text/textbuffer-view.h
index cdb55b7f..21ed28cf 100644
--- a/src/fe-text/textbuffer-view.h
+++ b/src/fe-text/textbuffer-view.h
@@ -43,9 +43,13 @@ typedef struct {
WINDOW *window;
int width, height;
+
int default_indent;
+ int longword_noindent:1;
TEXT_BUFFER_CACHE_REC *cache;
+ int ypos; /* cursor position - visible area is 0..height-1 */
+
GList *startline; /* line at the top of the screen */
int subline; /* number of "real lines" to skip from `startline' */
@@ -59,12 +63,6 @@ typedef struct {
/* window is at the bottom of the text buffer */
unsigned int bottom:1;
- /* info how to efficiently refresh window buffer */
- //unsigned int redraw:1;
- int ypos; /* cursor position - visible area is 0..height-1 */
- /*GList *drawn_startline;
- int drawn_subline;*/
-
/* Bookmarks to the lines in the buffer - removed automatically
when the line gets removed from buffer */
GHashTable *bookmarks;
@@ -73,12 +71,14 @@ typedef struct {
/* Create new view. */
TEXT_BUFFER_VIEW_REC *textbuffer_view_create(TEXT_BUFFER_REC *buffer,
int width, int height,
- int default_indent);
+ int default_indent,
+ int longword_noindent);
/* Destroy the view. */
void textbuffer_view_destroy(TEXT_BUFFER_VIEW_REC *view);
/* Change the default indent position */
void textbuffer_view_set_default_indent(TEXT_BUFFER_VIEW_REC *view,
- int default_indent);
+ int default_indent,
+ int longword_noindent);
/* Resize the view. */
void textbuffer_view_resize(TEXT_BUFFER_VIEW_REC *view, int width, int height);