ide: Now shows misplaced whitespaces #1201

git-svn-id: svn://ultimatepp.org/upp/trunk@8763 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2015-07-28 18:37:43 +00:00
parent d86b9e74f5
commit 4f06ee391d
12 changed files with 106 additions and 21 deletions

View file

@ -56,6 +56,8 @@ void CodeEditor::Highlight(const String& h)
SetColor(LineEdit::PAPER_NORMAL, hl_style[HighlightSetup::PAPER_NORMAL].color); SetColor(LineEdit::PAPER_NORMAL, hl_style[HighlightSetup::PAPER_NORMAL].color);
SetColor(LineEdit::PAPER_READONLY, hl_style[HighlightSetup::PAPER_READONLY].color); SetColor(LineEdit::PAPER_READONLY, hl_style[HighlightSetup::PAPER_READONLY].color);
SetColor(LineEdit::PAPER_SELECTED, hl_style[HighlightSetup::PAPER_SELECTED].color); SetColor(LineEdit::PAPER_SELECTED, hl_style[HighlightSetup::PAPER_SELECTED].color);
SetColor(LineEdit::WHITESPACE, hl_style[HighlightSetup::WHITESPACE].color);
SetColor(LineEdit::WARN_WHITESPACE, hl_style[HighlightSetup::WARN_WHITESPACE].color);
Refresh(); Refresh();
EditorBarLayout(); EditorBarLayout();
} }

View file

@ -167,6 +167,9 @@ void HighlightSetup::DefaultHlStyles()
SetHlStyle(PAPER_WARNING, Blend(White(), Yellow(), 50)); SetHlStyle(PAPER_WARNING, Blend(White(), Yellow(), 50));
SetHlStyle(SHOW_LINE, Color(199, 247, 198)); SetHlStyle(SHOW_LINE, Color(199, 247, 198));
SetHlStyle(WHITESPACE, Blend(SColorLight, SColorHighlight));
SetHlStyle(WARN_WHITESPACE, Blend(SColorLight, SRed));
} }
END_UPP_NAMESPACE END_UPP_NAMESPACE

View file

@ -58,3 +58,6 @@ HL_COLOR(PAPER_SELWORD, t_("Selected word through file"), 0)
HL_COLOR(PAPER_ERROR, t_("Error in compiler messages"), 0) HL_COLOR(PAPER_ERROR, t_("Error in compiler messages"), 0)
HL_COLOR(PAPER_WARNING, t_("Warning in compiler messages"), 0) HL_COLOR(PAPER_WARNING, t_("Warning in compiler messages"), 0)
HL_COLOR(SHOW_LINE, t_("Current line highlight"), 0) HL_COLOR(SHOW_LINE, t_("Current line highlight"), 0)
HL_COLOR(WHITESPACE, t_("Whitespaces"), 1)
HL_COLOR(WARN_WHITESPACE, t_("Misplaced tabs and spaces"), 1)

View file

@ -24,6 +24,7 @@ LineEdit::LineEdit() {
showreadonly = true; showreadonly = true;
dorectsel = false; dorectsel = false;
hline = Null; hline = Null;
warnwhitespace = false;
} }
LineEdit::~LineEdit() {} LineEdit::~LineEdit() {}
@ -304,7 +305,6 @@ void LineEdit::Paint0(Draw& w) {
selh -= cpos; selh -= cpos;
int pos = cpos; int pos = cpos;
int fascent = font.Info().GetAscent(); int fascent = font.Info().GetAscent();
Color showcolor = Blend(SColorLight, SColorHighlight);
int cursorline = GetLine(cursor); int cursorline = GetLine(cursor);
Highlight ih; Highlight ih;
ih.ink = color[IsShowEnabled() ? INK_NORMAL : INK_DISABLED]; ih.ink = color[IsShowEnabled() ? INK_NORMAL : INK_DISABLED];
@ -314,7 +314,39 @@ void LineEdit::Paint0(Draw& w) {
ih.font = font; ih.font = font;
ih.chr = 0; ih.chr = 0;
for(int i = sc.y; i < ll; i++) { for(int i = sc.y; i < ll; i++) {
Color showcolor = color[WHITESPACE];
WString tx = line[i]; WString tx = line[i];
bool warn_whitespace = false;
if(warnwhitespace && i != GetCursorLine()) {
int wkind = 0;
bool empty = true;
for(const wchar *s = tx; *s; s++) {
if(*s == '\t') {
if(wkind == ' ') {
warn_whitespace = true;
break;
}
wkind = '\t';
}
else
if(*s == ' ')
wkind = ' ';
else
if(*s > ' ') {
empty = false;
wkind = 0;
}
}
if(wkind == ' ')
warn_whitespace = true;
if(empty && !warn_whitespace) {
String l = GetUtf8Line(i);
warn_whitespace = (i < 0 || !GetUtf8Line(i - 1).StartsWith(l)) &&
(i >= GetLineCount() || !GetUtf8Line(i - 1).StartsWith(l));
}
if(warn_whitespace)
showcolor = color[WARN_WHITESPACE];
}
bool do_highlight = tx.GetCount() < 100000; bool do_highlight = tx.GetCount() < 100000;
int len = tx.GetLength(); int len = tx.GetLength();
if(w.IsPainting(0, y, sz.cx, fsz.cy)) { if(w.IsPainting(0, y, sz.cx, fsz.cy)) {
@ -329,6 +361,7 @@ void LineEdit::Paint0(Draw& w) {
} }
else else
ln = tx.GetCount(); ln = tx.GetCount();
int lgp = -1;
for(int pass = 0; pass < 2; pass++) { for(int pass = 0; pass < 2; pass++) {
int gp = 0; int gp = 0;
int scx = fsz.cx * sc.x; int scx = fsz.cx * sc.x;
@ -354,6 +387,8 @@ void LineEdit::Paint0(Draw& w) {
} }
sOptimizedTextRenderer tw(w); sOptimizedTextRenderer tw(w);
while(q < ln) { while(q < ln) {
if(q == tx.GetCount())
lgp = gp;
Highlight h; Highlight h;
if(do_highlight) if(do_highlight)
h = hl[q]; h = hl[q];
@ -374,7 +409,8 @@ void LineEdit::Paint0(Draw& w) {
LLOG("Highlight -> tab[" << q << "] paper = " << h.paper); LLOG("Highlight -> tab[" << q << "] paper = " << h.paper);
if(pass == 0 && x >= -fsz.cy * tabsize) { if(pass == 0 && x >= -fsz.cy * tabsize) {
w.DrawRect(x, y, fsz.cx * l, fsz.cy, h.paper); w.DrawRect(x, y, fsz.cx * l, fsz.cy, h.paper);
if(showtabs && h.paper != SColorHighlight && q < tx.GetLength()) { if((showtabs || warn_whitespace) &&
h.paper != SColorHighlight && q < tx.GetLength()) {
w.DrawRect(x + 2, y + fsz.cy / 2, l * fsz.cx - 4, 1, showcolor); w.DrawRect(x + 2, y + fsz.cy / 2, l * fsz.cx - 4, 1, showcolor);
w.DrawRect(ngp * fsz.cx - scx - 3, y + 3, 1, fsz.cy - 6, showcolor); w.DrawRect(ngp * fsz.cx - scx - 3, y + 3, 1, fsz.cy - 6, showcolor);
} }
@ -389,8 +425,11 @@ void LineEdit::Paint0(Draw& w) {
LLOG("Highlight -> space[" << q << "] paper = " << h.paper); LLOG("Highlight -> space[" << q << "] paper = " << h.paper);
if(pass == 0 && x >= -fsz.cy) { if(pass == 0 && x >= -fsz.cy) {
w.DrawRect(x, y, fsz.cx, fsz.cy, h.paper); w.DrawRect(x, y, fsz.cx, fsz.cy, h.paper);
if(showspaces && h.paper != SColorHighlight && q < tx.GetLength()) if((showspaces || warn_whitespace)
w.DrawRect(x + fsz.cx / 2, y + fsz.cy / 2, 2, 2, showcolor); && h.paper != SColorHighlight && q < tx.GetLength()) {
int n = fsz.cy / 10 + 1;
w.DrawRect(x + fsz.cx / 2, y + fsz.cy / 2, n, n, showcolor);
}
if(bordercolumn > 0 && bordercolumn >= gp && bordercolumn < gp + 1) if(bordercolumn > 0 && bordercolumn >= gp && bordercolumn < gp + 1)
w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor); w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor);
} }
@ -427,9 +466,9 @@ void LineEdit::Paint0(Draw& w) {
if(bordercolumn > 0 && bordercolumn >= gp) if(bordercolumn > 0 && bordercolumn >= gp)
w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor); w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor);
} }
if(pass == 0 && showlines) { if(pass == 0 && (showlines || warn_whitespace)) {
int yy = 2 * fsz.cy / 3; int yy = 2 * fsz.cy / 3;
int x = gp * fsz.cx - scx; int x = (lgp >= 0 ? lgp : gp) * fsz.cx - scx;
w.DrawRect(x, y + yy, fsz.cx / 2, 1, showcolor); w.DrawRect(x, y + yy, fsz.cx / 2, 1, showcolor);
if(fsz.cx > 2) if(fsz.cx > 2)
w.DrawRect(x + 1, y + yy - 1, 1, 3, showcolor); w.DrawRect(x + 1, y + yy - 1, 1, 3, showcolor);
@ -450,6 +489,7 @@ void LineEdit::Paint0(Draw& w) {
selh -= len + 1; selh -= len + 1;
pos += len + 1; pos += len + 1;
} }
w.DrawRect(0, y, sz.cx, sz.cy - y, color[IsReadOnly() && showreadonly || !IsShowEnabled() ? PAPER_READONLY : PAPER_NORMAL]); w.DrawRect(0, y, sz.cx, sz.cy - y, color[IsReadOnly() && showreadonly || !IsShowEnabled() ? PAPER_READONLY : PAPER_NORMAL]);
DrawTiles(w, DropCaret(), CtrlImg::checkers()); DrawTiles(w, DropCaret(), CtrlImg::checkers());
} }

View file

@ -20,6 +20,8 @@ TextCtrl::TextCtrl()
color[PAPER_NORMAL] = SColorPaper; color[PAPER_NORMAL] = SColorPaper;
color[PAPER_READONLY] = SColorFace; color[PAPER_READONLY] = SColorFace;
color[PAPER_SELECTED] = SColorHighlight; color[PAPER_SELECTED] = SColorHighlight;
color[WHITESPACE] = Blend(SColorLight, SColorHighlight);
color[WARN_WHITESPACE] = Blend(SColorLight, SRed);
processtab = true; processtab = true;
processenter = true; processenter = true;
nobg = false; nobg = false;

View file

@ -30,6 +30,8 @@ public:
PAPER_NORMAL, PAPER_NORMAL,
PAPER_READONLY, PAPER_READONLY,
PAPER_SELECTED, PAPER_SELECTED,
WHITESPACE,
WARN_WHITESPACE,
COLOR_COUNT, COLOR_COUNT,
}; };
@ -288,6 +290,7 @@ protected:
bool showspaces; bool showspaces;
bool showlines; bool showlines;
bool showreadonly; bool showreadonly;
bool warnwhitespace;
bool dorectsel; // TODO: Refactor this ugly hack! bool dorectsel; // TODO: Refactor this ugly hack!
void Paint0(Draw& w); void Paint0(Draw& w);
@ -390,6 +393,8 @@ public:
bool IsShowSpaces() const { return showspaces; } bool IsShowSpaces() const { return showspaces; }
LineEdit& ShowLineEndings(bool sl = true) { showlines = sl; Refresh(); return *this; } LineEdit& ShowLineEndings(bool sl = true) { showlines = sl; Refresh(); return *this; }
bool IsShowLineEndings() const { return showlines; } bool IsShowLineEndings() const { return showlines; }
LineEdit& WarnWhiteSpace(bool b = true) { warnwhitespace = b; Refresh(); return *this; }
bool IsWantWhiteSpace() const { return warnwhitespace; }
LineEdit& WithCutLine(bool b) { cutline = b; return *this; } LineEdit& WithCutLine(bool b) { cutline = b; return *this; }
LineEdit& NoCutLine() { return WithCutLine(false); } LineEdit& NoCutLine() { return WithCutLine(false); }
bool IsWithCutLine() const { return cutline; } bool IsWithCutLine() const { return cutline; }

View file

@ -344,7 +344,7 @@ Default is off.&]
[s5;:LineEdit`:`:ShowSpaces`(bool`): [_^LineEdit^ LineEdit][@(0.0.255) `&]_[* ShowSpaces]([@(0.0.255) b [s5;:LineEdit`:`:ShowSpaces`(bool`): [_^LineEdit^ LineEdit][@(0.0.255) `&]_[* ShowSpaces]([@(0.0.255) b
ool]_[*@3 ss]_`=_[@(0.0.255) true])&] ool]_[*@3 ss]_`=_[@(0.0.255) true])&]
[s2;%% In this mode widget displays spaces with faint dots. Default [s2;%% In this mode widget displays spaces with faint dots. Default
is off..&] is off.&]
[s3;%% &] [s3;%% &]
[s4; &] [s4; &]
[s5;:LineEdit`:`:IsShowSpaces`(`)const: [@(0.0.255) bool]_[* IsShowSpaces]()_[@(0.0.255) co [s5;:LineEdit`:`:IsShowSpaces`(`)const: [@(0.0.255) bool]_[* IsShowSpaces]()_[@(0.0.255) co
@ -352,6 +352,29 @@ nst]&]
[s2;%% Returns status of ShowSpaces.&] [s2;%% Returns status of ShowSpaces.&]
[s3; &] [s3; &]
[s4; &] [s4; &]
[s5;:Upp`:`:LineEdit`:`:ShowLineEndings`(bool`): [_^Upp`:`:LineEdit^ LineEdit][@(0.0.255) `&
]_[* ShowLineEndings]([@(0.0.255) bool]_[*@3 sl]_`=_[@(0.0.255) true])&]
[s2;%% In this mode widget displays line endings with faint dots.
Default is off.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:LineEdit`:`:IsShowLineEndings`(`)const: [@(0.0.255) bool]_[* IsShowLineEnding
s]()_[@(0.0.255) const]&]
[s2;%% Returns status of ShowLineEndings.&]
[s3; &]
[s4; &]
[s5;:Upp`:`:LineEdit`:`:WarnWhiteSpace`(bool`): [_^Upp`:`:LineEdit^ LineEdit][@(0.0.255) `&
]_[* WarnWhiteSpace]([@(0.0.255) bool]_[*@3 b]_`=_[@(0.0.255) true])&]
[s2;%% In this mode widget shows whitespaces that seem to be misplaced,
like tabs after spaces or if line ends with spaces. Default is
off.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:LineEdit`:`:IsWantWhiteSpace`(`)const: [@(0.0.255) bool]_[* IsWantWhiteSpace](
)_[@(0.0.255) const]&]
[s2;%% Returns status of WarnWhiteSpace.&]
[s3; &]
[s4; &]
[s5;:LineEdit`:`:WithCutLine`(bool`): [_^LineEdit^ LineEdit][@(0.0.255) `&]_[* WithCutLine]( [s5;:LineEdit`:`:WithCutLine`(bool`): [_^LineEdit^ LineEdit][@(0.0.255) `&]_[* WithCutLine](
[@(0.0.255) bool]_[*@3 b])&] [@(0.0.255) bool]_[*@3 b])&]
[s2;%% In this mode widget calls CutLine when user presses Ctrl`+Y [s2;%% In this mode widget calls CutLine when user presses Ctrl`+Y

View file

@ -146,7 +146,7 @@ void Sentinel(Stream& s, const char *txt)
void Ide::Serialize(Stream& s) void Ide::Serialize(Stream& s)
{ {
int version = 6; int version = 7;
Sentinel(s, "before 12341234"); Sentinel(s, "before 12341234");
s.Magic(0x12341234); s.Magic(0x12341234);
Sentinel(s, "after magic"); Sentinel(s, "after magic");
@ -177,6 +177,8 @@ void Ide::Serialize(Stream& s)
s % find_replace_restore_pos; s % find_replace_restore_pos;
} }
s % show_tabs; s % show_tabs;
if(version >= 7)
s % warnwhitespace;
s % tabs_icons; s % tabs_icons;
s % tabs_crosses; s % tabs_crosses;
s % tabs_grouping; s % tabs_grouping;

View file

@ -119,11 +119,12 @@ Font FontSelectManager::Get() {
void Ide::UpdateFormat(CodeEditor& editor) void Ide::UpdateFormat(CodeEditor& editor)
{ {
if(!IsActiveFile() || ActiveFile().tabsize <= 0) if(!IsActiveFile() || ActiveFile().tabsize <= 0)
editor.TabSize(editortabsize); editor.TabSize(editortabsize);
editor.IndentSpaces(indent_spaces); editor.IndentSpaces(indent_spaces);
editor.IndentAmount(indent_amount); editor.IndentAmount(indent_amount);
editor.ShowTabs(show_tabs); editor.ShowTabs(show_tabs);
editor.ShowLineEndings(show_tabs); editor.ShowLineEndings(show_tabs);
editor.WarnWhiteSpace(warnwhitespace);
editor.NoParenthesisIndent(no_parenthesis_indent); editor.NoParenthesisIndent(no_parenthesis_indent);
editor.HiliteScope(hilite_scope); editor.HiliteScope(hilite_scope);
editor.HiliteBracket(hilite_bracket); editor.HiliteBracket(hilite_bracket);
@ -413,6 +414,7 @@ void Ide::SetupFormat() {
(edt.indent_spaces, indent_spaces) (edt.indent_spaces, indent_spaces)
(edt.no_parenthesis_indent, no_parenthesis_indent) (edt.no_parenthesis_indent, no_parenthesis_indent)
(edt.showtabs, show_tabs) (edt.showtabs, show_tabs)
(edt.warnwhitespace, warnwhitespace)
(edt.lineends, line_endings) (edt.lineends, line_endings)
(edt.numbers, line_numbers) (edt.numbers, line_numbers)
(edt.bookmark_pos, bookmark_pos) (edt.bookmark_pos, bookmark_pos)

View file

@ -557,6 +557,7 @@ public:
bool show_status_bar; bool show_status_bar;
bool toolbar_in_row; bool toolbar_in_row;
bool show_tabs; bool show_tabs;
bool warnwhitespace;
int line_endings; int line_endings;
bool tabs_icons; bool tabs_icons;
int tabs_crosses; int tabs_crosses;

View file

@ -537,7 +537,7 @@ LAYOUT(SetupHlLayout, 544, 288)
ITEM(Button, hl_restore, SetLabel(t_("Restore default colors")).LeftPosZ(380, 160).TopPosZ(268, 16)) ITEM(Button, hl_restore, SetLabel(t_("Restore default colors")).LeftPosZ(380, 160).TopPosZ(268, 16))
END_LAYOUT END_LAYOUT
LAYOUT(SetupEditorLayout, 544, 276) LAYOUT(SetupEditorLayout, 544, 296)
ITEM(Label, dv___0, SetLabel(t_("Tab size")).LeftPosZ(4, 108).TopPosZ(4, 19)) ITEM(Label, dv___0, SetLabel(t_("Tab size")).LeftPosZ(4, 108).TopPosZ(4, 19))
ITEM(EditIntSpin, tabsize, LeftPosZ(116, 52).TopPosZ(4, 19)) ITEM(EditIntSpin, tabsize, LeftPosZ(116, 52).TopPosZ(4, 19))
ITEM(Label, dv___2, SetLabel(t_("Indent")).LeftPosZ(4, 108).TopPosZ(24, 19)) ITEM(Label, dv___2, SetLabel(t_("Indent")).LeftPosZ(4, 108).TopPosZ(24, 19))
@ -550,18 +550,19 @@ LAYOUT(SetupEditorLayout, 544, 276)
ITEM(Label, dv___9, SetLabel(t_("Line endings")).LeftPosZ(4, 108).TopPosZ(84, 19)) ITEM(Label, dv___9, SetLabel(t_("Line endings")).LeftPosZ(4, 108).TopPosZ(84, 19))
ITEM(DropList, lineends, LeftPosZ(116, 160).TopPosZ(84, 19)) ITEM(DropList, lineends, LeftPosZ(116, 160).TopPosZ(84, 19))
ITEM(Option, showtabs, SetLabel(t_("Show tabs and line endings")).LeftPosZ(4, 272).TopPosZ(108, 16)) ITEM(Option, showtabs, SetLabel(t_("Show tabs and line endings")).LeftPosZ(4, 272).TopPosZ(108, 16))
ITEM(Option, indent_spaces, SetLabel(t_("Indent using spaces")).HSizePosZ(4, 268).TopPosZ(124, 16)) ITEM(Option, warnwhitespace, SetLabel(t_("Show possibly misplaced tabs and spaces")).LeftPosZ(4, 272).TopPosZ(124, 16))
ITEM(Option, no_parenthesis_indent, SetLabel(t_("No indent after parenthesis")).LeftPosZ(4, 272).TopPosZ(140, 16)) ITEM(Option, indent_spaces, SetLabel(t_("Indent using spaces")).HSizePosZ(4, 268).TopPosZ(140, 16))
ITEM(Option, numbers, SetLabel(t_("Show line numbers")).LeftPosZ(4, 272).TopPosZ(156, 16)) ITEM(Option, no_parenthesis_indent, SetLabel(t_("No indent after parenthesis")).LeftPosZ(4, 272).TopPosZ(156, 16))
ITEM(Option, bookmark_pos, SetLabel(t_("Bookmarks restore position")).LeftPosZ(4, 272).TopPosZ(172, 16)) ITEM(Option, numbers, SetLabel(t_("Show line numbers")).LeftPosZ(4, 272).TopPosZ(172, 16))
ITEM(Option, findpicksel, SetLabel(t_("Find picks selection")).LeftPosZ(4, 272).TopPosZ(188, 16)) ITEM(Option, bookmark_pos, SetLabel(t_("Bookmarks restore position")).LeftPosZ(4, 272).TopPosZ(188, 16))
ITEM(Option, findpicktext, SetLabel(t_("Find picks selection or text")).LeftPosZ(4, 272).TopPosZ(204, 16)) ITEM(Option, findpicksel, SetLabel(t_("Find picks selection")).LeftPosZ(4, 272).TopPosZ(204, 16))
ITEM(Option, deactivate_save, SetLabel(t_("Save file on TheIde window deactivation")).LeftPosZ(4, 272).TopPosZ(220, 16)) ITEM(Option, findpicktext, SetLabel(t_("Find picks selection or text")).LeftPosZ(4, 272).TopPosZ(220, 16))
ITEM(Option, persistent_find_replace, SetLabel(t_("Do not close Find/Replace dialog automatically")).LeftPosZ(4, 272).TopPosZ(236, 16)) ITEM(Option, deactivate_save, SetLabel(t_("Save file on TheIde window deactivation")).LeftPosZ(4, 272).TopPosZ(236, 16))
ITEM(Option, find_replace_restore_pos, SetLabel(t_("Restore position on canceling incremental search")).LeftPosZ(4, 272).TopPosZ(252, 16)) ITEM(Option, persistent_find_replace, SetLabel(t_("Do not close Find/Replace dialog automatically")).LeftPosZ(4, 272).TopPosZ(252, 16))
ITEM(Label, dv___21, SetLabel(t_("File Tabs")).LeftPosZ(304, 64).TopPosZ(4, 19)) ITEM(Option, find_replace_restore_pos, SetLabel(t_("Restore position on canceling incremental search")).LeftPosZ(4, 272).TopPosZ(268, 16))
ITEM(Label, dv___22, SetLabel(t_("File Tabs")).LeftPosZ(304, 64).TopPosZ(4, 19))
ITEM(DropList, filetabs, LeftPosZ(372, 64).TopPosZ(4, 19)) ITEM(DropList, filetabs, LeftPosZ(372, 64).TopPosZ(4, 19))
ITEM(Label, dv___23, SetLabel(t_("Crosses")).LeftPosZ(304, 64).TopPosZ(24, 19)) ITEM(Label, dv___24, SetLabel(t_("Crosses")).LeftPosZ(304, 64).TopPosZ(24, 19))
ITEM(DropList, tabs_crosses, LeftPosZ(372, 64).TopPosZ(24, 19)) ITEM(DropList, tabs_crosses, LeftPosZ(372, 64).TopPosZ(24, 19))
ITEM(Option, tabs_icons, SetLabel(t_("Icons")).LeftPosZ(304, 132).TopPosZ(48, 16)) ITEM(Option, tabs_icons, SetLabel(t_("Icons")).LeftPosZ(304, 132).TopPosZ(48, 16))
ITEM(Option, tabs_grouping, SetLabel(t_("Grouping")).LeftPosZ(304, 132).TopPosZ(68, 16)) ITEM(Option, tabs_grouping, SetLabel(t_("Grouping")).LeftPosZ(304, 132).TopPosZ(68, 16))

View file

@ -518,6 +518,7 @@ Ide::Ide()
indent_spaces = false; indent_spaces = false;
show_status_bar = false; show_status_bar = false;
show_tabs = false; show_tabs = false;
warnwhitespace = true;
tabs_icons = false; tabs_icons = false;
tabs_crosses = AlignedFrame::RIGHT; tabs_crosses = AlignedFrame::RIGHT;
tabs_grouping = true; tabs_grouping = true;