From 0c83491ed5f903147a5fcf95d9f6d1799a3b0804 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Tue, 24 Nov 2009 19:34:48 +0000 Subject: [PATCH] Implement preference option to adjust tab width in SynMemos. Fixes issue #857. --- source/const.inc | 2 ++ source/main.pas | 5 +++-- source/options.dfm | 40 +++++++++++++++++++++++++++++++++------- source/options.pas | 10 ++++++++-- 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/source/const.inc b/source/const.inc index 8efb3591..adea4fb2 100644 --- a/source/const.inc +++ b/source/const.inc @@ -56,6 +56,8 @@ const DEFAULT_FONTNAME = 'Courier New'; REGNAME_FONTSIZE = 'FontSize'; DEFAULT_FONTSIZE = 9; + REGNAME_TABWIDTH = 'TabWidth'; + DEFAULT_TABWIDTH = 3; REGNAME_DATAFONTNAME = 'DataFontName'; DEFAULT_DATAFONTNAME = 'Tahoma'; REGNAME_DATAFONTSIZE = 'DataFontSize'; diff --git a/source/main.pas b/source/main.pas index 9c72fd74..74ce2915 100644 --- a/source/main.pas +++ b/source/main.pas @@ -8812,7 +8812,7 @@ var Editors: TObjectList; BaseEditor, Editor: TSynMemo; FontName: String; - FontSize: Integer; + FontSize, TabWidth: Integer; KeyStroke: TSynEditKeyStroke; ActiveLineColor: TColor; Attri: TSynHighlighterAttributes; @@ -8844,6 +8844,7 @@ begin FontName := GetRegValue(REGNAME_FONTNAME, DEFAULT_FONTNAME); FontSize := GetRegValue(REGNAME_FONTSIZE, DEFAULT_FONTSIZE); + TabWidth := GetRegValue(REGNAME_TABWIDTH, DEFAULT_TABWIDTH); ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE))); for i:=0 to Editors.Count-1 do begin Editor := Editors[i] as TSynMemo; @@ -8853,7 +8854,7 @@ begin Editor.Gutter.Font.Size := FontSize; Editor.ActiveLineColor := ActiveLineColor; Editor.Options := BaseEditor.Options; - Editor.TabWidth := BaseEditor.TabWidth; + Editor.TabWidth := TabWidth; Editor.MaxScrollWidth := BaseEditor.MaxScrollWidth; // Shortcuts if Editor = BaseEditor then for j:=0 to Editor.Keystrokes.Count-1 do begin diff --git a/source/options.dfm b/source/options.dfm index 89d83e12..728aa190 100644 --- a/source/options.dfm +++ b/source/options.dfm @@ -206,22 +206,22 @@ object optionsform: Toptionsform object grpSQLFont: TGroupBox Left = 1 Top = 1 - Width = 397 + Width = 288 Height = 56 Anchors = [akLeft, akTop, akRight, akBottom] Caption = 'Editor font' TabOrder = 0 object lblSQLFontSize: TLabel - Left = 248 + Left = 263 Top = 26 - Width = 23 + Width = 10 Height = 13 - Caption = 'Size:' + Caption = 'pt' end object comboSQLFontName: TComboBox Left = 16 Top = 23 - Width = 193 + Width = 181 Height = 21 Style = csDropDownList ItemHeight = 13 @@ -229,7 +229,7 @@ object optionsform: Toptionsform OnChange = SQLFontChange end object editSQLFontSize: TEdit - Left = 294 + Left = 200 Top = 23 Width = 41 Height = 21 @@ -238,7 +238,7 @@ object optionsform: Toptionsform OnExit = SQLFontChange end object updownSQLFontSize: TUpDown - Left = 335 + Left = 241 Top = 23 Width = 16 Height = 21 @@ -366,6 +366,32 @@ object optionsform: Toptionsform OnChange = SQLFontChange end end + object grpSQLTabWidth: TGroupBox + Left = 295 + Top = 1 + Width = 102 + Height = 56 + Caption = 'Tab width' + TabOrder = 3 + object editSQLTabWidth: TEdit + Left = 14 + Top = 23 + Width = 43 + Height = 21 + TabOrder = 0 + Text = '0' + OnExit = SQLFontChange + end + object updownSQLTabWidth: TUpDown + Left = 57 + Top = 23 + Width = 16 + Height = 21 + Associate = editSQLTabWidth + TabOrder = 1 + OnClick = updownSQLFontSizeClick + end + end end object tabData: TTabSheet BorderWidth = 5 diff --git a/source/options.pas b/source/options.pas index 91e92254..4564edd2 100644 --- a/source/options.pas +++ b/source/options.pas @@ -115,6 +115,9 @@ type lblShortcutHint: TLabel; Shortcut2: TSynHotKey; lblShortcut2: TLabel; + grpSQLTabWidth: TGroupBox; + editSQLTabWidth: TEdit; + updownSQLTabWidth: TUpDown; procedure FormShow(Sender: TObject); procedure Modified(Sender: TObject); procedure Apply(Sender: TObject); @@ -204,6 +207,7 @@ begin MainReg.WriteBool(REGNAME_RESTORELASTUSEDDB, chkRestoreLastDB.Checked); MainReg.WriteString(REGNAME_FONTNAME, comboSQLFontName.Text); MainReg.WriteInteger(REGNAME_FONTSIZE, updownSQLFontSize.Position); + MainReg.WriteInteger(REGNAME_TABWIDTH, updownSQLTabWidth.Position); MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position); MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position); for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do begin @@ -332,12 +336,12 @@ begin InheritFont(Font); EnumFontFamilies(Canvas.Handle, nil, @EnumFixedProc, LPARAM(Pointer(comboSQLFontName.Items))); SynMemoSQLSample.Text := 'SELECT DATE_SUB(NOW(), INTERVAL 1 DAY),' + CRLF + - ' ''String literal'' AS lit' + CRLF + + #9'''String literal'' AS lit' + CRLF + 'FROM tableA AS ta -- A comment' + CRLF + 'WHERE `columnA` IS NULL; # More comment' + CRLF + CRLF + 'CREATE TABLE /*!32312 IF NOT EXISTS*/ tableB' + CRLF + - ' (id INT, name VARCHAR(30) DEFAULT "standard")'; + #9'(id INT, name VARCHAR(30) DEFAULT "standard")'; SynSQLSynSQLSample.TableNames.CommaText := 'tableA,tableB'; for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do comboSQLColElement.Items.Add(SynSQLSynSQLSample.Attribute[i].FriendlyName); @@ -390,6 +394,7 @@ begin Mainform.SetupSynEditors; comboSQLFontName.ItemIndex := comboSQLFontName.Items.IndexOf(SynMemoSQLSample.Font.Name); updownSQLFontSize.Position := SynMemoSQLSample.Font.Size; + updownSQLTabWidth.Position := SynMemoSQLSample.TabWidth; comboSQLColElementChange(Sender); // Data-Appearance: @@ -430,6 +435,7 @@ var begin SynMemoSQLSample.Font.Name := comboSQLFontName.Items[comboSQLFontName.ItemIndex]; SynMemoSQLSample.Font.Size := updownSQLFontSize.Position; + SynMemoSQLSample.TabWidth := updownSQLTabWidth.Position; AttriIdx := comboSQLColElement.ItemIndex; Foreground := cboxSQLColForeground.Selected; Background := cboxSQLColBackground.Selected;