diff --git a/out/locale/en/LC_MESSAGES/default.po b/out/locale/en/LC_MESSAGES/default.po index 6e4726b0..4fa29722 100644 --- a/out/locale/en/LC_MESSAGES/default.po +++ b/out/locale/en/LC_MESSAGES/default.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: HeidiSQL\n" "POT-Creation-Date: 2012-11-05 21:40\n" -"PO-Revision-Date: 2018-04-19 07:33+0200\n" +"PO-Revision-Date: 2018-09-02 13:03+0200\n" "Last-Translator: Ansgar Becker \n" "Language-Team: English (http://www.transifex.com/projects/p/heidisql/language/en/)\n" "MIME-Version: 1.0\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.1.1\n" #. AboutBox..Caption #: about.dfm:5 @@ -2705,6 +2705,9 @@ msgstr "Maximum result sets:" msgid "Enable autocompletion" msgstr "Enable autocompletion" +msgid "Auto uppercase reserved words and functions" +msgstr "Auto uppercase reserved words and functions" + #. optionsform..pagecontrolMain..tabSQL..chkTabsToSpaces..Caption #: options.dfm:427 msgid "Tabs to spaces" diff --git a/source/apphelpers.pas b/source/apphelpers.pas index 415864de..4d7f680c 100644 --- a/source/apphelpers.pas +++ b/source/apphelpers.pas @@ -168,7 +168,7 @@ type asConnectCount, asRefusedCount, asSessionCreated, asDoUsageStatistics, asLastUsageStatisticCall, asWheelZoom, asDisplayBars, asBarColor, asMySQLBinaries, asCustomSnippetsDirectory, asPromptSaveFileOnTabClose, asWarnUnsafeUpdates, asQueryWarningsMessage, - asCompletionProposal, asCompletionProposalWidth, asCompletionProposalNbLinesInWindow, + asCompletionProposal, asCompletionProposalWidth, asCompletionProposalNbLinesInWindow, asAutoUppercase, asTabsToSpaces, asFilterPanel, asAllowMultipleInstances, asFindDialogSearchHistory, asGUIFontName, asGUIFontSize, asFindDialogReplaceHistory, asMaxQueryResults, asLogErrors, asLogUserSQL, asLogSQL, asLogInfos, asLogDebug, asFieldColorNumeric, @@ -3522,6 +3522,7 @@ begin InitSetting(asCompletionProposal, 'CompletionProposal', 0, True); InitSetting(asCompletionProposalWidth, 'CompletionProposalWidth', 350); InitSetting(asCompletionProposalNbLinesInWindow,'CompletionProposalNbLinesInWindow', 12); + InitSetting(asAutoUppercase, 'AutoUppercase', 0, True); InitSetting(asTabsToSpaces, 'TabsToSpaces', 0, False); InitSetting(asFilterPanel, 'FilterPanel', 0, False); InitSetting(asAllowMultipleInstances, 'AllowMultipleInstances', 0, True); diff --git a/source/main.pas b/source/main.pas index 83741e2e..6443c6e4 100644 --- a/source/main.pas +++ b/source/main.pas @@ -5879,9 +5879,32 @@ end; procedure TMainForm.SynMemoQueryStatusChange(Sender: TObject; Changes: TSynStatusChanges); +var + Editor: TSynMemo; + Token: String; + Attri: TSynHighlighterAttributes; + OldCaretPos: TBufferCoord; + TokenTypeInt, Start: Integer; begin ValidateQueryControls(Sender); UpdateLineCharPanel; + + // Uppercase reserved words, functions and data types + if AppSettings.ReadBool(asAutoUppercase) then begin + Editor := Sender as TSynMemo; + Editor.GetHighlighterAttriAtRowColEx(Editor.PrevWordPos, Token, TokenTypeInt, Start, Attri); + if TtkTokenKind(TokenTypeInt) in [tkDatatype, tkFunction, tkKey] then begin + Editor.OnStatusChange := nil; // Don't call StatusChange recursively + OldCaretPos := Editor.CaretXY; + Editor.UndoList.BeginBlock; + Editor.SelStart := Editor.RowColToCharIndex(Editor.PrevWordPos); + Editor.SelEnd := Editor.SelStart + Length(Token); + Editor.SelText := UpperCase(Token); + Editor.CaretXY := OldCaretPos; + Editor.UndoList.EndBlock; + Editor.OnStatusChange := SynMemoQueryStatusChange; + end; + end; end; diff --git a/source/options.dfm b/source/options.dfm index 41d8b1f2..f8df600e 100644 --- a/source/options.dfm +++ b/source/options.dfm @@ -568,12 +568,12 @@ object optionsform: Toptionsform end object chkCompletionProposal: TCheckBox Left = 8 - Top = 90 - Width = 693 + Top = 89 + Width = 363 Height = 17 Anchors = [akLeft, akTop, akRight] Caption = 'Enable autocompletion' - TabOrder = 5 + TabOrder = 8 OnClick = Modified end object chkTabsToSpaces: TCheckBox @@ -583,7 +583,7 @@ object optionsform: Toptionsform Height = 17 Anchors = [akLeft, akTop, akRight] Caption = 'Tabs to spaces' - TabOrder = 6 + TabOrder = 5 OnClick = Modified end object editSQLTabWidth: TEdit @@ -607,13 +607,13 @@ object optionsform: Toptionsform object chkAskFileSave: TCheckBox Left = 8 Top = 113 - Width = 693 + Width = 363 Height = 17 Anchors = [akLeft, akTop, akRight] Caption = 'Prompt to save modified files on tab close' Checked = True State = cbChecked - TabOrder = 7 + TabOrder = 10 OnClick = Modified end object editMaxQueryResults: TEdit @@ -621,7 +621,7 @@ object optionsform: Toptionsform Top = 61 Width = 41 Height = 21 - TabOrder = 9 + TabOrder = 6 Text = '1' OnChange = Modified end @@ -633,7 +633,7 @@ object optionsform: Toptionsform Associate = editMaxQueryResults Min = 1 Position = 1 - TabOrder = 10 + TabOrder = 7 OnChanging = anyUpDownLimitChanging end object comboSQLColElement: TComboBox @@ -643,7 +643,7 @@ object optionsform: Toptionsform Height = 21 Style = csDropDownList Anchors = [akLeft, akTop, akRight] - TabOrder = 11 + TabOrder = 12 OnChange = comboSQLColElementChange end object chkSQLBold: TCheckBox @@ -652,7 +652,7 @@ object optionsform: Toptionsform Width = 130 Height = 17 Caption = 'Bold' - TabOrder = 12 + TabOrder = 13 OnClick = SQLFontChange end object chkSQLItalic: TCheckBox @@ -662,7 +662,7 @@ object optionsform: Toptionsform Height = 17 Anchors = [akLeft, akTop, akRight] Caption = 'Italic' - TabOrder = 13 + TabOrder = 14 OnClick = SQLFontChange end object cboxSQLColForeground: TColorBox @@ -672,7 +672,7 @@ object optionsform: Toptionsform Height = 22 Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors] Anchors = [akTop, akRight] - TabOrder = 14 + TabOrder = 15 OnChange = SQLFontChange end object cboxSQLColBackground: TColorBox @@ -682,7 +682,7 @@ object optionsform: Toptionsform Height = 22 Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors] Anchors = [akTop, akRight] - TabOrder = 15 + TabOrder = 16 OnChange = SQLFontChange end object SynMemoSQLSample: TSynMemo @@ -690,7 +690,7 @@ object optionsform: Toptionsform Left = 8 Top = 215 Width = 693 - Height = 132 + Height = 131 Cursor = crHandPoint SingleLineMode = False Anchors = [akLeft, akTop, akRight, akBottom] @@ -699,7 +699,7 @@ object optionsform: Toptionsform Font.Height = -13 Font.Name = 'Courier New' Font.Style = [] - TabOrder = 16 + TabOrder = 17 OnClick = SynMemoSQLSampleClick CodeFolding.GutterShapeSize = 11 CodeFolding.CollapsedLineColor = clGrayText @@ -730,10 +730,19 @@ object optionsform: Toptionsform object chkQueryWarningsMessage: TCheckBox Left = 8 Top = 136 - Width = 691 + Width = 363 Height = 17 Caption = 'Show query warnings dialog' - TabOrder = 8 + TabOrder = 11 + OnClick = Modified + end + object chkAutoUppercase: TCheckBox + Left = 377 + Top = 89 + Width = 320 + Height = 17 + Caption = 'Auto uppercase reserved words and functions' + TabOrder = 9 OnClick = Modified end end diff --git a/source/options.pas b/source/options.pas index 1aff2a97..5651f1b1 100644 --- a/source/options.pas +++ b/source/options.pas @@ -143,6 +143,7 @@ type cboxRowHighlightSameText: TColorBox; chkWheelZoom: TCheckBox; chkQueryWarningsMessage: TCheckBox; + chkAutoUppercase: TCheckBox; procedure FormShow(Sender: TObject); procedure Modified(Sender: TObject); procedure Apply(Sender: TObject); @@ -334,6 +335,7 @@ begin end; AppSettings.WriteBool(asCompletionProposal, chkCompletionProposal.Checked); + AppSettings.WriteBool(asAutoUppercase, chkAutoUppercase.Checked); AppSettings.WriteBool(asTabsToSpaces, chkTabsToSpaces.Checked); // Shortcuts @@ -519,6 +521,7 @@ begin updownSQLFontSize.Position := SynMemoSQLSample.Font.Size; updownSQLTabWidth.Position := SynMemoSQLSample.TabWidth; chkCompletionProposal.Checked := AppSettings.ReadBool(asCompletionProposal); + chkAutoUppercase.Checked := AppSettings.ReadBool(asAutoUppercase); chkTabsToSpaces.Checked := AppSettings.ReadBool(asTabsToSpaces); comboSQLColElementChange(Sender);