1 unit formopt;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   Classes, SysUtils, Types,
9   Forms, Controls, Graphics, StdCtrls, Dialogs,
10   ButtonPanel, Spin, ComCtrls, ExtCtrls,
11   FileUtil,
12   ATStringProc,
13   ATSynEdit,
14   ATSynEdit_Options,
15   ATSynEdit_CanvasProc,
16   ATSynEdit_CharSizer;
17 
18 type
19   { TfmOpt }
20 
21   TfmOpt = class(TForm)
22     bColDown: TButton;
23     bColUp: TButton;
24     ButtonPanel1: TButtonPanel;
25     chkCrRenderText: TCheckBox;
26     chkMapClickDoDrag: TCheckBox;
27     chkUndoForCrt: TCheckBox;
28     chkUndoGrp: TCheckBox;
29     chkUndoAfterSave: TCheckBox;
30     chkUpDownToEdge: TCheckBox;
31     chkCrPrimitiveCol: TCheckBox;
32     chkClickLink: TCheckBox;
33     chkCopyNoSel: TCheckBox;
34     chkCutNoSel: TCheckBox;
35     chkDotLn: TCheckBox;
36     chkPasteOvr: TCheckBox;
37     chkPasteSpread: TCheckBox;
38     chkSaveEol: TCheckBox;
39     chkSaveTrim: TCheckBox;
40     chkSaveTrimEmptyLines: TCheckBox;
41     chkBkspGoPrev: TCheckBox;
42     chkUnprintOnlyBothEnds: TCheckBox;
43     chkUnprintOnlyEnd: TCheckBox;
44     chkCrEmptyNormal: TCheckBox;
45     chkCrBlinkEn: TCheckBox;
46     chkMsNormalSel: TCheckBox;
47     chkMsColumnSel: TCheckBox;
48     chkShowFullHilite: TCheckBox;
49     chkMsHideCursor: TCheckBox;
50     chkLeftRtSwapAndSel: TCheckBox;
51     chkGutterSep: TCheckBox;
52     chkGutterNumAuto: TCheckBox;
53     chkGutterBm: TCheckBox;
54     chkGutterEmpty: TCheckBox;
55     chkGutterFold: TCheckBox;
56     chkGutterNum: TCheckBox;
57     chkGutterStat: TCheckBox;
58     chkShowFoldLinesAll: TCheckBox;
59     chkBackspUnindent: TCheckBox;
60     chkEnterIndent: TCheckBox;
61     chkTabIndent: TCheckBox;
62     chkUnindentKeepAlign: TCheckBox;
63     chkUnprintAsciiRep: TCheckBox;
64     chkShowFoldLines: TCheckBox;
65     chkShowFoldAlways: TCheckBox;
66     chkCrPreferLeft: TCheckBox;
67     chkKeepCol: TCheckBox;
68     chkCurLineMin: TCheckBox;
69     chkScrollHint: TCheckBox;
70     chkPageKeepRel: TCheckBox;
71     chkNavHomeEnd: TCheckBox;
72     chkShowNum1st: TCheckBox;
73     chkShowNumCr: TCheckBox;
74     chkMapSelBorder: TCheckBox;
75     chkMapSelAlways: TCheckBox;
76     chkShowNumBg: TCheckBox;
77     chkTabSpaces: TCheckBox;
78     chkMsClickNumSel: TCheckBox;
79     chkCrStopUnfocus: TCheckBox;
80     chkEndNonspace: TCheckBox;
81     chkHomeNonspace: TCheckBox;
82     chkLeftRtSwap: TCheckBox;
83     chkNavUpDown: TCheckBox;
84     chkOvrSel: TCheckBox;
85     chkMsRtClickMove: TCheckBox;
86     chkMsDragDrop: TCheckBox;
87     chkCrMul: TCheckBox;
88     chkCrVirt: TCheckBox;
89     chkMsClick2Drag: TCheckBox;
90     chkMsClick3: TCheckBox;
91     chkShowFullSel: TCheckBox;
92     chkCurCol: TCheckBox;
93     chkCurLine: TCheckBox;
94     chkLastOnTop: TCheckBox;
95     chkUnprintEnd: TCheckBox;
96     chkUnprintEndDet: TCheckBox;
97     chkUnprintSpace: TCheckBox;
98     chkUnprintEn: TCheckBox;
99     chkZebraActive: TCheckBox;
100     edCrProxi: TSpinEdit;
101     edUnpriEol: TComboBox;
102     comboMsMidClick: TComboBox;
103     ComboMsClick2: TComboBox;
104     comboRulerStyle: TComboBox;
105     edCrHeightNormal: TSpinEdit;
106     edRulerFSize: TSpinEdit;
107     edRulerIndent: TSpinEdit;
108     edRulerSize: TSpinEdit;
109     edMapCharWidth: TSpinEdit;
110     edNumAlign: TComboBox;
111     edIndentKind: TComboBox;
112     edCrTime: TSpinEdit;
113     edSizeSep: TSpinEdit;
114     edNonWordChars: TEdit;
115     edIndentSize: TSpinEdit;
116     edPlusSize: TSpinEdit;
117     edNumChar: TEdit;
118     edNumStyle: TComboBox;
119     edPageSize: TComboBox;
120     edSizeBm: TSpinEdit;
121     edSizeEmpty: TSpinEdit;
122     edSizeFold: TSpinEdit;
123     edSizeNumIndent: TSpinEdit;
124     edSizeNum: TSpinEdit;
125     edSizeState: TSpinEdit;
126     edTabArrowSize: TSpinEdit;
127     edTabArrowPnt: TSpinEdit;
128     edTextHint: TEdit;
129     edUndoLimit: TSpinEdit;
130     edUndoPause: TSpinEdit;
131     edZebraAlpha: TSpinEdit;
132     edZebraStep: TSpinEdit;
133     grpOrderCols: TGroupBox;
134     grpSizeCols: TGroupBox;
135     grpUndo: TGroupBox;
136     grpZebra: TGroupBox;
137     groupIndent: TGroupBox;
138     LabChars: TLabel;
139     Label1: TLabel;
140     Label10: TLabel;
141     Label11: TLabel;
142     Label12: TLabel;
143     Label13: TLabel;
144     Label14: TLabel;
145     Label15: TLabel;
146     Label16: TLabel;
147     Label17: TLabel;
148     Label18: TLabel;
149     Label19: TLabel;
150     Label2: TLabel;
151     Label20: TLabel;
152     Label21: TLabel;
153     Label22: TLabel;
154     Label23: TLabel;
155     Label24: TLabel;
156     Label6: TLabel;
157     LabelZebraAlpha: TLabel;
158     Label3: TLabel;
159     Label4: TLabel;
160     Label5: TLabel;
161     Label7: TLabel;
162     Label8: TLabel;
163     Label9: TLabel;
164     LabelArr: TLabel;
165     LabelArr1: TLabel;
166     LabelHint: TLabel;
167     LabelZebraStep: TLabel;
168     ListCol: TListBox;
169     PageControl1: TPageControl;
170     edCrWidthNormal: TSpinEdit;
171     TabSheet1: TTabSheet;
172     TabSheet10: TTabSheet;
173     TabSheet11: TTabSheet;
174     TabSheet2: TTabSheet;
175     TabSheet3: TTabSheet;
176     TabSheet4: TTabSheet;
177     TabSheet5: TTabSheet;
178     TabSheet6: TTabSheet;
179     TabSheet7: TTabSheet;
180     TabSheet8: TTabSheet;
181     TabSheet9: TTabSheet;
182     procedure bColDownClick(Sender: TObject);
183     procedure bColUpClick(Sender: TObject);
184     procedure FormCreate(Sender: TObject);
185     procedure FormShow(Sender: TObject);
186     procedure TabSheet1ContextPopup(Sender: TObject; MousePos: TPoint;
187       var Handled: Boolean);
188   private
189     { private declarations }
190   public
191     { public declarations }
192   end;
193 
194 var
195   fmOpt: TfmOpt;
196 
197 procedure DoConfigEditor(ed: TATSynEdit);
198 
199 
200 implementation
201 
202 {$R *.lfm}
203 
204 const
205   nameBm = 'bookmk';
206   nameNums = 'nums';
207   nameState = 'states';
208   nameFold = 'fold';
209   nameSep = 'separator';
210 
211 procedure DoConfigEditor(ed: TATSynEdit);
212 var
213   i: integer;
214 begin
215   with fmOpt do
216   begin
217     with ListCol do
218     begin
219       Items.Clear;
220       for i:= 0 to 4 do
221       begin
222         if i=ed.GutterBandBookmarks then Items.Add(nameBm);
223         if i=ed.GutterBandNumbers then Items.Add(nameNums);
224         if i=ed.GutterBandStates then Items.Add(nameState);
225         if i=ed.GutterBandFolding then Items.Add(nameFold);
226         if i=ed.GutterBandSeparator then Items.Add(nameSep);
227       end;
228       ItemIndex:= 0;
229     end;
230 
231     //general
232     chkCurLine.Checked:= ed.OptShowCurLine;
233     chkCurLineMin.Checked:= ed.OptShowCurLineMinimal;
234     chkCurCol.Checked:= ed.OptShowCurColumn;
235     chkLastOnTop.Checked:= ed.OptLastLineOnTop;
236     chkShowFullSel.Checked:= ed.OptShowFullWidthForSelection;
237     chkShowFullHilite.Checked:= ed.OptShowFullWidthForSyntaxHilite;
238     chkCopyNoSel.Checked:= ed.OptCopyLinesIfNoSel;
239     chkCutNoSel.Checked:= ed.OptCutLinesIfNoSel;
240     chkPasteOvr.Checked:= ed.OptOverwriteAllowedOnPaste;
241     chkDotLn.Checked:= ed.OptShowIndentLines;
242     edTextHint.Text:= ed.OptTextHint;
243     edNonWordChars.Text:= UTF8Encode(ed.OptNonWordChars);
244     chkSaveEol.Checked:= ed.OptSavingForceFinalEol;
245     chkSaveTrim.Checked:= ed.OptSavingTrimSpaces;
246     chkSaveTrimEmptyLines.Checked:= ed.OptSavingTrimFinalEmptyLines;
247     chkScrollHint.Checked:= ed.OptShowScrollHint;
248     chkClickLink.Checked:= ed.OptMouseClickOpensURL;
249     chkPasteSpread.Checked:= ed.OptPasteMultilineTextSpreadsToCarets;
250 
251     //unprint
252     chkUnprintEn.Checked:= ed.OptUnprintedVisible;
253     chkUnprintSpace.Checked:= ed.OptUnprintedSpaces;
254     chkUnprintEnd.Checked:= ed.OptUnprintedEnds;
255     chkUnprintEndDet.Checked:= ed.OptUnprintedEndsDetails;
256     chkUnprintOnlyBothEnds.Checked:= ed.OptUnprintedSpacesBothEnds;
257     chkUnprintOnlyEnd.Checked:= ed.OptUnprintedSpacesTrailing;
258     edUnpriEol.ItemIndex:= Ord(ATEditorOptions.UnprintedEndSymbol);
259     chkUnprintAsciiRep.Checked:= ATEditorOptions.UnprintedReplaceSpec;
260     edTabArrowSize.Value:= ATEditorOptions.UnprintedTabCharLength;
261     edTabArrowPnt.Value:= ATEditorOptions.UnprintedTabPointerScale;
262 
263     //caret
264     chkCrBlinkEn.Checked:= ed.OptCaretBlinkEnabled;
265     edCrTime.Value:= ed.OptCaretBlinkTime;
266     chkCrVirt.Checked:= ed.OptCaretVirtual;
267     chkCrMul.Checked:= ed.OptCaretManyAllowed;
268     chkCrStopUnfocus.Checked:= ed.OptCaretStopUnfocused;
269     chkCrPreferLeft.Checked:= ed.OptCaretPreferLeftSide;
270     chkCrPrimitiveCol.Checked:= ed.OptCaretsPrimitiveColumnSelection;
271     edCrProxi.Value:= ed.OptCaretProximityVert;
272 
273     edCrWidthNormal.Value:= ed.CaretShapeNormal.Width;
274     edCrHeightNormal.Value:= ed.CaretShapeNormal.Height;
275     chkCrEmptyNormal.Checked:= ed.CaretShapeNormal.EmptyInside;
276     chkCrRenderText.Checked:= ATEditorOptions.CaretTextOverInvertedRect;
277 
278     //gutter
279     edNumStyle.ItemIndex:= Ord(ed.OptNumbersStyle);
280     edNumAlign.ItemIndex:= Ord(ed.OptNumbersAlignment);
281     //edNumSize.Value:= ed.OptNumbersFontSizePercents;
282     edPlusSize.Value:= ed.OptGutterPlusSize;
283     chkShowNum1st.Checked:= ed.OptNumbersShowFirst;
284     chkShowNumCr.Checked:= ed.OptNumbersShowCarets;
285     chkShowNumBg.Checked:= ed.OptShowGutterCaretBG;
286     chkShowFoldAlways.Checked:= ed.OptGutterShowFoldAlways;
287     chkShowFoldLines.Checked:= ed.OptGutterShowFoldLines;
288     chkShowFoldLinesAll.Checked:= ed.OptGutterShowFoldLinesAll;
289     edRulerSize.Value:= ed.OptRulerHeightPercents;
290     edRulerFSize.Value:= ed.OptRulerFontSizePercents;
291     edRulerIndent.Value:= ed.OptRulerTopIndentPercents;
292     comboRulerStyle.ItemIndex:= Ord(ed.OptRulerNumeration);
293 
294     chkGutterBm.Checked:= ed.Gutter[ed.GutterBandBookmarks].Visible;
295     chkGutterNum.Checked:= ed.Gutter[ed.GutterBandNumbers].Visible;
296     chkGutterFold.Checked:= ed.Gutter[ed.GutterBandFolding].Visible;
297     chkGutterStat.Checked:= ed.Gutter[ed.GutterBandStates].Visible;
298     chkGutterSep.Checked:= ed.Gutter[ed.GutterBandSeparator].Visible;
299     chkGutterEmpty.Checked:= ed.Gutter[ed.GutterBandEmpty].Visible;
300     edSizeBm.Value:= ed.Gutter[ed.GutterBandBookmarks].Size;
301     edSizeFold.Value:= ed.Gutter[ed.GutterBandFolding].Size;
302     edSizeState.Value:= ed.Gutter[ed.GutterBandStates].Size;
303     edSizeSep.Value:= ed.Gutter[ed.GutterBandSeparator].Size;
304     edSizeEmpty.Value:= ed.Gutter[ed.GutterBandEmpty].Size;
305     edSizeNum.Value:= ed.Gutter[ed.GutterBandNumbers].Size;
306     edSizeNumIndent.Value:= ed.OptNumbersIndentPercents;
307     chkGutterNumAuto.Checked:= ed.OptNumbersAutosize;
308 
309     //minimap
310     edMapCharWidth.Value:= ed.OptMinimapCharWidth;
311     chkMapSelBorder.Checked:= ed.OptMinimapShowSelBorder;
312     chkMapSelAlways.Checked:= ed.OptMinimapShowSelAlways;
313     chkMapClickDoDrag.Checked:= ed.OptMinimapDragImmediately;
314 
315     //key
316     chkTabSpaces.Checked:= ed.OptTabSpaces;
317     chkOvrSel.Checked:= ed.OptOverwriteSel;
318     chkNavUpDown.Checked:= ed.OptKeyUpDownNavigateWrapped;
319     chkUpDownToEdge.Checked:= ed.OptKeyUpDownAllowToEdge;
320     chkNavHomeEnd.Checked:= ed.OptKeyHomeEndNavigateWrapped;
321     chkKeepCol.Checked:= ed.OptKeyUpDownKeepColumn;
322     chkLeftRtSwap.Checked:= ed.OptKeyLeftRightSwapSel;
323     chkLeftRtSwapAndSel.Checked:= ed.OptKeyLeftRightSwapSelAndSelect;
324     chkHomeNonspace.Checked:= ed.OptKeyHomeToNonSpace;
325     chkEndNonspace.Checked:= ed.OptKeyEndToNonSpace;
326     chkTabIndent.Checked:= ed.OptKeyTabIndents;
327     chkEnterIndent.Checked:= ed.OptAutoIndent;
328     chkBackspUnindent.Checked:= ed.OptKeyBackspaceUnindent;
329     chkBkspGoPrev.Checked:= ed.OptKeyBackspaceGoesToPrevLine;
330     edIndentKind.ItemIndex:= Ord(ed.OptAutoIndentKind);
331     edIndentSize.Value:= ed.OptIndentSize;
332     chkUnindentKeepAlign.Checked:= ed.OptIndentKeepsAlign;
333     edPageSize.ItemIndex:= Ord(ed.OptKeyPageUpDownSize);
334     chkPageKeepRel.Checked:= ed.OptKeyPageKeepsRelativePos;
335 
336     //mouse
337     chkMsNormalSel.Checked:= ed.OptMouseEnableNormalSelection;
338     chkMsColumnSel.Checked:= ed.OptMouseEnableColumnSelection;
339     ComboMsClick2.ItemIndex:= Ord(ed.OptMouse2ClickAction);
340     chkMsClick3.Checked:= ed.OptMouse3ClickSelectsLine;
341     chkMsClick2Drag.Checked:= ed.OptMouse2ClickDragSelectsWords;
342     chkMsClickNumSel.Checked:= ed.OptMouseClickNumberSelectsLine;
343     chkMsDragDrop.Checked:= ed.OptMouseDragDrop;
344     chkMsRtClickMove.Checked:= ed.OptMouseRightClickMovesCaret;
345     comboMsMidClick.ItemIndex:= Ord(ed.OptMouseMiddleClickAction);
346     chkMsHideCursor.Checked:= ed.OptMouseHideCursorOnType;
347 
348     //undo
349     edUndoLimit.Value:= ed.OptUndoLimit;
350     edUndoPause.Value:= ed.OptUndoPause;
351     chkUndoGrp.Checked:= ed.OptUndoGrouped;
352     chkUndoAfterSave.Checked:= ed.OptUndoAfterSave;
353     chkUndoForCrt.Checked:= ed.OptUndoForCaretJump;
354 
355     //zebra
356     chkZebraActive.Checked:= ed.OptZebraActive;
357     edZebraAlpha.Value:= ed.OptZebraAlphaBlend;
358     edZebraStep.Value:= ed.OptZebraStep;
359 
360     if ShowModal=mrOk then
361     begin
362       ed.GutterBandBookmarks:= ListCol.Items.IndexOf(nameBm);
363       ed.GutterBandNumbers:= ListCol.Items.IndexOf(nameNums);
364       ed.GutterBandStates:= ListCol.Items.IndexOf(nameState);
365       ed.GutterBandFolding:= ListCol.Items.IndexOf(nameFold);
366       ed.GutterBandSeparator:= ListCol.Items.IndexOf(nameSep);
367 
368       //general
369       ed.OptShowCurLine:= chkCurLine.Checked;
370       ed.OptShowCurLineMinimal:= chkCurLineMin.Checked;
371       ed.OptShowCurColumn:= chkCurCol.Checked;
372       ed.OptTextHint:= edTextHint.Text;
373       ed.OptNonWordChars:= UTF8Decode(edNonWordChars.Text);
374       ed.OptOverwriteAllowedOnPaste:= chkPasteOvr.Checked;
375       ed.OptCopyLinesIfNoSel:= chkCopyNoSel.Checked;
376       ed.OptCutLinesIfNoSel:= chkCutNoSel.Checked;
377       ed.OptShowFullWidthForSelection:= chkShowFullSel.Checked;
378       ed.OptShowFullWidthForSyntaxHilite:= chkShowFullHilite.Checked;
379       ed.OptLastLineOnTop:= chkLastOnTop.Checked;
380       ed.OptShowIndentLines:= chkDotLn.Checked;
381       ed.OptSavingForceFinalEol:= chkSaveEol.Checked;
382       ed.OptSavingTrimSpaces:= chkSaveTrim.Checked;
383       ed.OptSavingTrimFinalEmptyLines:= chkSaveTrimEmptyLines.Checked;
384       ed.OptShowScrollHint:= chkScrollHint.Checked;
385       ed.OptMouseClickOpensURL:= chkClickLink.Checked;
386       ed.OptPasteMultilineTextSpreadsToCarets:= chkPasteSpread.Checked;
387 
388       //unprint
389       ed.OptUnprintedVisible:= chkUnprintEn.Checked;
390       ed.OptUnprintedSpaces:= chkUnprintSpace.Checked;
391       ed.OptUnprintedEnds:= chkUnprintEnd.Checked;
392       ed.OptUnprintedEndsDetails:= chkUnprintEndDet.Checked;
393       ed.OptUnprintedSpacesBothEnds:= chkUnprintOnlyBothEnds.Checked;
394       ed.OptUnprintedSpacesTrailing:= chkUnprintOnlyEnd.Checked;
395       ATEditorOptions.UnprintedReplaceSpec:= chkUnprintAsciiRep.Checked;
396       ATEditorOptions.UnprintedTabCharLength:= edTabArrowSize.Value;
397       ATEditorOptions.UnprintedTabPointerScale:= edTabArrowPnt.Value;
398       ATEditorOptions.UnprintedEndSymbol:= TATEditorUnptintedEolSymbol(edUnpriEol.ItemIndex);
399 
400       //caret
401       ed.OptCaretBlinkEnabled:= chkCrBlinkEn.Checked;
402       ed.OptCaretBlinkTime:= edCrTime.Value;
403       ed.OptCaretVirtual:= chkCrVirt.Checked;
404       ed.OptCaretManyAllowed:= chkCrMul.Checked;
405       ed.OptCaretStopUnfocused:= chkCrStopUnfocus.Checked;
406       ed.OptCaretPreferLeftSide:= chkCrPreferLeft.Checked;
407       ed.OptCaretsPrimitiveColumnSelection:= chkCrPrimitiveCol.Checked;
408       ed.OptCaretProximityVert:= edCrProxi.Value;
409 
410       ed.CaretShapeNormal.Width:= edCrWidthNormal.Value;
411       ed.CaretShapeNormal.Height:= edCrHeightNormal.Value;
412       ed.CaretShapeNormal.EmptyInside:= chkCrEmptyNormal.Checked;
413       ATEditorOptions.CaretTextOverInvertedRect:= chkCrRenderText.Checked;
414 
415       //gutter
416       //ed.OptNumbersFontSizePercents:= edNumSize.Value;
417       ed.OptNumbersStyle:= TATEditorNumbersStyle(edNumStyle.ItemIndex);
418       ed.OptNumbersAlignment:= TAlignment(edNumAlign.ItemIndex);
419       ed.OptNumbersShowFirst:= chkShowNum1st.Checked;
420       ed.OptNumbersShowCarets:= chkShowNumCr.Checked;
421       ed.OptGutterShowFoldAlways:= chkShowFoldAlways.Checked;
422       ed.OptGutterShowFoldLines:= chkShowFoldLines.Checked;
423       ed.OptGutterShowFoldLinesAll:= chkShowFoldLinesAll.Checked;
424       ed.OptGutterPlusSize:= edPlusSize.Value;
425       ed.OptShowGutterCaretBG:= chkShowNumBg.Checked;
426       ed.OptRulerHeightPercents:= edRulerSize.Value;
427       ed.OptRulerFontSizePercents:= edRulerFSize.Value;
428       ed.OptRulerTopIndentPercents:= edRulerIndent.Value;
429       ed.OptRulerNumeration:= TATEditorRulerNumeration(comboRulerStyle.ItemIndex);
430 
431       ed.Gutter[ed.GutterBandBookmarks].Visible:= chkGutterBm.Checked;
432       ed.Gutter[ed.GutterBandNumbers].Visible:= chkGutterNum.Checked;
433       ed.Gutter[ed.GutterBandFolding].Visible:= chkGutterFold.Checked;
434       ed.Gutter[ed.GutterBandStates].Visible:= chkGutterStat.Checked;
435       ed.Gutter[ed.GutterBandSeparator].Visible:= chkGutterSep.Checked;
436       ed.Gutter[ed.GutterBandEmpty].Visible:= chkGutterEmpty.Checked;
437       ed.Gutter[ed.GutterBandBookmarks].Size:= edSizeBm.Value;
438       ed.Gutter[ed.GutterBandNumbers].Size:= edSizeNum.Value;
439       ed.Gutter[ed.GutterBandFolding].Size:= edSizeFold.Value;
440       ed.Gutter[ed.GutterBandStates].Size:= edSizeState.Value;
441       ed.Gutter[ed.GutterBandSeparator].Size:= edSizeSep.Value;
442       ed.Gutter[ed.GutterBandEmpty].Size:= edSizeEmpty.Value;
443       ed.OptNumbersAutosize:= chkGutterNumAuto.Checked;
444       ed.OptNumbersIndentPercents:= edSizeNumIndent.Value;
445 
446       //minimap
447       ed.OptMinimapCharWidth:= edMapCharWidth.Value;
448       ed.OptMinimapShowSelBorder:= chkMapSelBorder.Checked;
449       ed.OptMinimapShowSelAlways:= chkMapSelAlways.Checked;
450       ed.OptMinimapDragImmediately:= chkMapClickDoDrag.Checked;
451 
452       //key
453       ed.OptTabSpaces:= chkTabSpaces.Checked;
454       ed.OptOverwriteSel:= chkOvrSel.Checked;
455       ed.OptKeyUpDownKeepColumn:= chkKeepCol.Checked;
456       ed.OptKeyUpDownAllowToEdge:= chkUpDownToEdge.Checked;
457       ed.OptKeyUpDownNavigateWrapped:= chkNavUpDown.Checked;
458       ed.OptKeyHomeEndNavigateWrapped:= chkNavHomeEnd.Checked;
459       ed.OptKeyPageUpDownSize:= TATEditorPageDownSize(edPageSize.ItemIndex);
460       ed.OptKeyLeftRightSwapSel:= chkLeftRtSwap.Checked;
461       ed.OptKeyLeftRightSwapSelAndSelect:= chkLeftRtSwapAndSel.Checked;
462       ed.OptKeyHomeToNonSpace:= chkHomeNonspace.Checked;
463       ed.OptKeyEndToNonSpace:= chkEndNonspace.Checked;
464       ed.OptKeyPageKeepsRelativePos:= chkPageKeepRel.Checked;
465       ed.OptKeyTabIndents:= chkTabIndent.Checked;
466       ed.OptAutoIndent:= chkEnterIndent.Checked;
467       ed.OptKeyBackspaceUnindent := chkBackspUnindent.Checked;
468       ed.OptKeyBackspaceGoesToPrevLine:= chkBkspGoPrev.Checked;
469       ed.OptAutoIndentKind:= TATEditorAutoIndentKind(edIndentKind.ItemIndex);
470       ed.OptIndentSize:= edIndentSize.Value;
471       ed.OptIndentKeepsAlign:= chkUnindentKeepAlign.Checked;
472 
473       //mouse
474       ed.OptMouseEnableNormalSelection:= chkMsNormalSel.Checked;
475       ed.OptMouseEnableColumnSelection:= chkMsColumnSel.Checked;
476       ed.OptMouse2ClickAction:= TATEditorDoubleClickAction(ComboMsClick2.ItemIndex);
477       ed.OptMouse3ClickSelectsLine:= chkMsClick3.Checked;
478       ed.OptMouse2ClickDragSelectsWords:= chkMsClick2Drag.Checked;
479       ed.OptMouseClickNumberSelectsLine:= chkMsClickNumSel.Checked;
480       ed.OptMouseDragDrop:= chkMsDragDrop.Checked;
481       ed.OptMouseRightClickMovesCaret:= chkMsRtClickMove.Checked;
482       ed.OptMouseMiddleClickAction:= TATEditorMiddleClickAction(comboMsMidClick.ItemIndex);
483       ed.OptMouseHideCursorOnType:= chkMsHideCursor.Checked;
484 
485       //undo
486       ed.OptUndoLimit:= edUndoLimit.Value;
487       ed.OptUndoPause:= edUndoPause.Value;
488       ed.OptUndoGrouped:= chkUndoGrp.Checked;
489       ed.OptUndoAfterSave:= chkUndoAfterSave.Checked;
490       ed.OptUndoForCaretJump:= chkUndoForCrt.Checked;
491 
492       //zebra
493       ed.OptZebraActive     := chkZebraActive.Checked;
494       ed.OptZebraAlphaBlend := edZebraAlpha.Value;
495       ed.OptZebraStep       := edZebraStep.Value;
496 
497       //apply
498       ed.Gutter.Update;
499       ed.Update;
500     end;
501   end;
502 end;
503 
504 
505 { TfmOpt }
506 
507 procedure TfmOpt.FormCreate(Sender: TObject);
508 begin
509 end;
510 
511 procedure TfmOpt.FormShow(Sender: TObject);
512 begin
513   PageControl1.ActivePageIndex:= 0;
514 end;
515 
516 procedure TfmOpt.TabSheet1ContextPopup(Sender: TObject; MousePos: TPoint;
517   var Handled: Boolean);
518 begin
519 
520 end;
521 
522 procedure SwapItems(L: TListbox; n1, n2: integer);
523 var
524   s: string;
525 begin
526   s:= L.Items[n1];
527   L.Items[n1]:= L.Items[n2];
528   L.Items[n2]:= s;
529   L.ItemIndex:= n2;
530 end;
531 
532 procedure TfmOpt.bColUpClick(Sender: TObject);
533 begin
534   with ListCol do
535     if ItemIndex>0 then
536       SwapItems(ListCol, ItemIndex, ItemIndex-1);
537 end;
538 
539 procedure TfmOpt.bColDownClick(Sender: TObject);
540 begin
541   with ListCol do
542     if ItemIndex<Count-1 then
543       SwapItems(ListCol, ItemIndex, ItemIndex+1);
544 end;
545 
546 
547 end.
548 
549