Skip to content

Commit 2905d20

Browse files
committed
Added a setting to keep caret centered - basicly a fallback to old caret settings.
1 parent 364371e commit 2905d20

File tree

10 files changed

+56
-8
lines changed

10 files changed

+56
-8
lines changed

FlashDevelop/Managers/ScintillaManager.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,19 @@ public static void ApplySciSettings(ScintillaControl sci, Boolean hardUpdate)
296296
else if (useFolding) sci.SetMarginWidthN(2, ScaleArea(sci, 15));
297297
else sci.SetMarginWidthN(2, ScaleArea(sci, 2));
298298
/**
299+
* Adjust caret policy based on settings
300+
*/
301+
if (settings.KeepCaretCentered)
302+
{
303+
sci.SetXCaretPolicy((Int32)(CaretPolicy.Jumps | CaretPolicy.Even), 30);
304+
sci.SetYCaretPolicy((Int32)(CaretPolicy.Jumps | CaretPolicy.Even), 2);
305+
}
306+
else // Match edge...
307+
{
308+
sci.SetXCaretPolicy((Int32)CaretPolicy.Even, 0);
309+
sci.SetYCaretPolicy((Int32)CaretPolicy.Even, 0);
310+
}
311+
/**
299312
* Adjust the print margin
300313
*/
301314
sci.EdgeColumn = settings.PrintMarginColumn;
@@ -417,8 +430,6 @@ public static ScintillaControl CreateControl(String file, String text, Int32 cod
417430
sci.MarkerDefine((Int32)MarkerOutline.FolderEnd, MarkerSymbol.BoxPlusConnected);
418431
sci.MarkerDefine((Int32)MarkerOutline.FolderOpenMid, MarkerSymbol.BoxMinusConnected);
419432
sci.MarkerDefine((Int32)MarkerOutline.FolderMidTail, MarkerSymbol.TCorner);
420-
sci.SetXCaretPolicy((Int32)CaretPolicy.Even, 0); // Match edge...
421-
sci.SetYCaretPolicy((Int32)CaretPolicy.Even, 0); // Match edge...
422433
sci.ScrollWidthTracking = (PluginBase.Settings.ScrollWidth == 3000);
423434
sci.CodePage = 65001; // Editor handles text as UTF-8
424435
sci.Encoding = Encoding.GetEncoding(codepage);

FlashDevelop/Settings/Accessors.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,16 @@ public Boolean CaretLineVisible
216216
set { this.caretLineVisible = value; }
217217
}
218218

219+
[DefaultValue(false)]
220+
[DisplayName("Keep Caret Centered")]
221+
[LocalizedCategory("FlashDevelop.Category.Editor")]
222+
[LocalizedDescription("FlashDevelop.Description.KeepCaretCentered")]
223+
public Boolean KeepCaretCentered
224+
{
225+
get { return this.keepCaretCentered; }
226+
set { this.keepCaretCentered = value; }
227+
}
228+
219229
[DefaultValue(true)]
220230
[DisplayName("Disable Highlight Guide")]
221231
[LocalizedCategory("FlashDevelop.Category.Editor")]

FlashDevelop/Settings/Properties.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Collections.Generic;
55
using PluginCore.Localization;
66
using System.Windows.Forms;
7+
using ScintillaNet.Enums;
78
using PluginCore;
89

910
namespace FlashDevelop.Settings
@@ -13,11 +14,11 @@ namespace FlashDevelop.Settings
1314
public partial class SettingObject : ISettings
1415
{
1516
private CodePage defaultCodePage = CodePage.UTF8;
16-
private ScintillaNet.Enums.EndOfLine eolMode = ScintillaNet.Enums.EndOfLine.CRLF;
17-
private ScintillaNet.Enums.IndentView indentView = ScintillaNet.Enums.IndentView.Real;
18-
private ScintillaNet.Enums.FoldFlag foldFlags = ScintillaNet.Enums.FoldFlag.LineAfterContracted;
19-
private ScintillaNet.Enums.SmartIndent smartIndentType = ScintillaNet.Enums.SmartIndent.CPP;
20-
private ScintillaNet.Enums.VirtualSpaceMode virtualSpaceMode = ScintillaNet.Enums.VirtualSpaceMode.RectangularSelection;
17+
private EndOfLine eolMode = EndOfLine.CRLF;
18+
private IndentView indentView = IndentView.Real;
19+
private FoldFlag foldFlags = FoldFlag.LineAfterContracted;
20+
private SmartIndent smartIndentType = SmartIndent.CPP;
21+
private VirtualSpaceMode virtualSpaceMode = VirtualSpaceMode.RectangularSelection;
2122
private CommentBlockStyle commentBlockStyle = CommentBlockStyle.Indented;
2223
private CodingStyle codingStyle = CodingStyle.BracesAfterLine;
2324
private String customProjectsDir = String.Empty;
@@ -35,14 +36,15 @@ public partial class SettingObject : ISettings
3536
private Int32 backupInterval = 15000;
3637
private Int32 filePollInterval = 3000;
3738
private Int32 highlightMatchingWordsDelay = 1200;
38-
private ScintillaNet.Enums.HighlightMatchingWordsMode highlightMatchingWordsMode = ScintillaNet.Enums.HighlightMatchingWordsMode.SelectionOrPosition;
39+
private HighlightMatchingWordsMode highlightMatchingWordsMode = HighlightMatchingWordsMode.SelectionOrPosition;
3940
private LocaleVersion localeVersion = LocaleVersion.en_US;
4041
private List<String> previousDocuments = new List<String>();
4142
private List<String> disabledPlugins = new List<String>();
4243
private String latestDialogPath = Application.StartupPath;
4344
private String defaultFileExtension = DistroConfig.DISTRIBUTION_EXT;
4445
private Boolean confirmOnExit = false;
4546
private Boolean keepIndentTabs = false;
47+
private Boolean keepCaretCentered = false;
4648
private Boolean disableFindOptionSync = false;
4749
private Boolean disableSimpleQuickFind = false;
4850
private Boolean disableTabDifferentiation = false;

PluginCore/PluginCore/Interfaces.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,7 @@ public interface ISettings
540540
Boolean WrapList { get; set; }
541541
Boolean DisableSmartMatch { get; set; }
542542
Boolean SaveUnicodeWithBOM { get; set; }
543+
Boolean KeepCaretCentered { get; set; }
543544
String InsertionTriggers { get; set; }
544545

545546
#endregion

PluginCore/PluginCore/Resources/de_DE.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6000,4 +6000,8 @@ Eigene Sprachumgebungen müssen eine Erweiterung der Standard-Sprachumgebung sei
60006000
<value>Connection failed. Default socket port '{0}' is already in use.</value>
60016001
<comment>Added after 5.1.0</comment>
60026002
</data>
6003+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6004+
<value>Keeps the caret centered when caret is navigated to.</value>
6005+
<comment>Added after 5.1.1</comment>
6006+
</data>
60036007
</root>

PluginCore/PluginCore/Resources/en_US.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6014,4 +6014,8 @@ Custom locales must be an extension of a default locale, e.g. en-US.</value>
60146014
<value>Connection failed. Default socket port '{0}' is already in use.</value>
60156015
<comment>Added after 5.1.0</comment>
60166016
</data>
6017+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6018+
<value>Keeps the caret centered when caret is navigated to.</value>
6019+
<comment>Added after 5.1.1</comment>
6020+
</data>
60176021
</root>

PluginCore/PluginCore/Resources/eu_ES.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5997,4 +5997,8 @@ Lokalizazio pertsonalizatuek lehenetsiaren luzapen bat izan behar dute, adb. en-
59975997
<value>Connection failed. Default socket port '{0}' is already in use.</value>
59985998
<comment>Added after 5.1.0</comment>
59995999
</data>
6000+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6001+
<value>Keeps the caret centered when caret is navigated to.</value>
6002+
<comment>Added after 5.1.1</comment>
6003+
</data>
60006004
</root>

PluginCore/PluginCore/Resources/ja_JP.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6058,4 +6058,8 @@ UseData:"</value>
60586058
<value>Connection failed. Default socket port '{0}' is already in use.</value>
60596059
<comment>Added after 5.1.0</comment>
60606060
</data>
6061+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6062+
<value>Keeps the caret centered when caret is navigated to.</value>
6063+
<comment>Added after 5.1.1</comment>
6064+
</data>
60616065
</root>

PluginCore/PluginCore/Resources/ko_KR.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6017,4 +6017,8 @@ Complete: 현재 파일, 프로젝트 파일 및 수동 새로 고침.</value>
60176017
<value>Connection failed. Default socket port '{0}' is already in use.</value>
60186018
<comment>Added after 5.1.0</comment>
60196019
</data>
6020+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6021+
<value>Keeps the caret centered when caret is navigated to.</value>
6022+
<comment>Added after 5.1.1</comment>
6023+
</data>
60206024
</root>

PluginCore/PluginCore/Resources/zh_CN.resx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6010,4 +6010,8 @@
60106010
<value>Connection failed. Default socket port '{0}' is already in use.</value>
60116011
<comment>Added after 5.1.0</comment>
60126012
</data>
6013+
<data name="FlashDevelop.Description.KeepCaretCentered" xml:space="preserve">
6014+
<value>Keeps the caret centered when caret is navigated to.</value>
6015+
<comment>Added after 5.1.1</comment>
6016+
</data>
60136017
</root>

0 commit comments

Comments
 (0)