Browse Source

CH: Added some new features and fixed some bugs

Jean-Francois Goulet 20 years ago
parent
commit
428157c606

+ 48 - 49
LuaEdit/Breakpoints.dfm

@@ -50,7 +50,7 @@ object frmBreakpoints: TfrmBreakpoints
       object tbtnToggle: TToolButton
       object tbtnToggle: TToolButton
         Left = 23
         Left = 23
         Top = 0
         Top = 0
-        Hint = 'Toggle Selected Breakpoint'
+        Hint = 'Enable/Disable Selected Breakpoint'
         ImageIndex = 2
         ImageIndex = 2
         OnClick = tbtnToggleClick
         OnClick = tbtnToggleClick
       end
       end
@@ -155,7 +155,7 @@ object frmBreakpoints: TfrmBreakpoints
     Left = 56
     Left = 56
     Top = 80
     Top = 80
     Bitmap = {
     Bitmap = {
-      494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C01010A000E00040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000004000000001002000000000000040
       0000000000003600000028000000400000004000000001002000000000000040
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -553,121 +553,121 @@ object frmBreakpoints: TfrmBreakpoints
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF0041419D009D9D9D00FF00FF00FF00FF00FF00FF0041414100414141009D9D
       FF0041419D009D9D9D00FF00FF00FF00FF00FF00FF0041414100414141009D9D
-      9D00414141004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000000000000000000000000000000000000000
-      00000000000000000000FF00FF00FF00FF009D9D9D009D9D9D00FF00FF00FF00
+      9D00414141004141410041414100FF00FF00FF00FF00D1D8DB00D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100414141004141
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100414141004141
       4100414141004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       4100414141004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF0041419D0041419D00FF00FF00FF00FF0041414100FFFFFF009D9D9D004141
       FF0041419D0041419D00FF00FF00FF00FF0041414100FFFFFF009D9D9D004141
-      9D00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF0000000000FF00FF00FF00FF009D9D9D009D9D9D009D9D9D00FF00
+      9D00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00A6A6A600D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00A64C4C00A64C4C00A64C4C00A64C4C00A64C4C00A64C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFF
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFF
       FF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       FF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF0041419D0041419D009D9D9D00FF00FF00414141009D9D9D0041419D009D9D
       FF0041419D0041419D009D9D9D00FF00FF00414141009D9D9D0041419D009D9D
-      9D00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D009D9D
+      9D00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00A6A6A600A6A6A600D1D8
+      DB00D1D8DB00D1D8DB004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF004C4C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D009D9D
       9D00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFF
       9D00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       41009D9D9D0041419D0041419D009D9D9D009D9D9D0041419D0041419D00FFFF
       41009D9D9D0041419D0041419D009D9D9D009D9D9D0041419D0041419D00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
-      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D004141
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00A6A6A600A6A6A600A6A6
+      A600D1D8DB004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D004141
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       4100FFFFFF00CDCDCD0041419D0041419D0041419D0041419D00FFFFFF00FFFF
       4100FFFFFF00CDCDCD0041419D0041419D0041419D0041419D00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
-      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D004141
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A6004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD00CDCDCD00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
       4100CDCDCD00CDCDCD00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF004141410041419D0041419D0041419D0041414100FFFFFF004141
       FF00FFFFFF004141410041419D0041419D0041419D0041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
-      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D0041414100CDCD
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00A6A6A600A6A6A600A6A6
+      A6004C4C4C00D2D2D2004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D0041414100CDCD
       CD00CDCDCD00CDCDCD0041414100FFFFFF004141410041414100FFFFFF004141
       CD00CDCDCD00CDCDCD0041414100FFFFFF004141410041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF0041419D0041419D0041419D0041419D009D9D9D00FFFFFF004141
       FF00FFFFFF0041419D0041419D0041419D0041419D009D9D9D00FFFFFF004141
-      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF0000000000FFFF
-      FF00FFFFFF000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FF00FF009D9D9D009D9D9D0041414100CDCD
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00A6A6A600A6A6A6004C4C
+      4C00D2D2D2004C4C4C004C4C4C00FFFFFF004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D0041414100CDCD
       CD00CDCDCD00CDCDCD004141410041414100FFFFFF0041414100FFFFFF004141
       CD00CDCDCD00CDCDCD004141410041414100FFFFFF0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF004141
       FF0000000000FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF004141
       9D0041419D0041419D009D9D9D00FFFFFF0041419D0041419D009D9D9D004141
       9D0041419D0041419D009D9D9D00FFFFFF0041419D0041419D009D9D9D004141
-      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00000000000000
-      000000000000FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FF00FF009D9D9D0041414100CDCDCD004141
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00A6A6A600A6A6A6004C4C
+      4C004C4C4C00A6A6A6004C4C4C00D2D2D2004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF009D9D9D0041414100CDCDCD004141
       4100CDCDCD00CDCDCD00CDCDCD00CDCDCD00CDCDCD0041414100FFFFFF004141
       4100CDCDCD00CDCDCD00CDCDCD00CDCDCD00CDCDCD0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       000000000000FF00FF00FF00FF00FF00FF0041414100FFFFFF00414141009D9D
       000000000000FF00FF00FF00FF00FF00FF0041414100FFFFFF00414141009D9D
       9D00FFFFFF009D9D9D00FFFFFF0041414100FFFFFF0041419D0041419D009D9D
       9D00FFFFFF009D9D9D00FFFFFF0041414100FFFFFF0041419D0041419D009D9D
-      9D00FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FF00FF0041414100CDCDCD00414141004141
+      9D00FFFFFF0041414100FFFFFF0041414100FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF0041414100CDCDCD00414141004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
       000000000000FF00FF00FF00FF00FF00FF004141410041414100FF00FF004141
       000000000000FF00FF00FF00FF00FF00FF004141410041414100FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF004141410041419D004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF004141410041419D004141
-      9D009D9D9D004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FF00FF0041414100414141009D9D9D004141
+      9D009D9D9D004141410041414100FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00D2D2D2004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF0041414100414141009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100FFFFFF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       4100FFFFFF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
       0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
-      41004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF000000000000000000FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
+      41004141410041414100FF00FF00FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00D2D2D2004C4C4C004C4C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00CDCDCD00414141004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00CDCDCD00414141004141
       4100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
       4100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF00000000000000000000FF00
       0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF00000000000000000000FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
-      410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
+      410041414100FF00FF00FF00FF00FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A6004C4C4C004C4C4C00D2D2D2004C4C4C00A6A6
+      A600D1D8DB00D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00414141009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00414141009D9D9D004141
       410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
       410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
       0000000000000000000000000000000000000000000000000000FF00FF00FF00
       0000000000000000000000000000000000000000000000000000FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       4100FFFFFF0041414100FFFFFF004141410041414100FF00FF00FF00FF00FF00
       4100FFFFFF0041414100FFFFFF004141410041414100FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF000000000000000000FFFFFF00000000000000
-      0000FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A6004C4C4C004C4C4C00A6A6A600A6A6
+      A600A6A6A600D1D8DB00D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100414141009D9D9D009D9D9D009D9D
       4100CDCDCD0041414100CDCDCD0041414100414141009D9D9D009D9D9D009D9D
       9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF004141410041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
       FF004141410041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D009D9D
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600D1D8DB00FF00FF009D9D9D009D9D9D009D9D9D009D9D
       9D004141410041414100CDCDCD00414141009D9D9D009D9D9D009D9D9D009D9D
       9D004141410041414100CDCDCD00414141009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       9D009D9D9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-      FF00FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D009D9D
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600FF00FF009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D0041414100414141009D9D9D009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D0041414100414141009D9D9D009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D009D9D9D009D9D9D009D9D9D00424D3E000000000000003E000000
       9D009D9D9D009D9D9D009D9D9D009D9D9D00424D3E000000000000003E000000
       2800000040000000400000000100010000000000000200000000000000000000
       2800000040000000400000000100010000000000000200000000000000000000
@@ -687,8 +687,7 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000}
+      00000000000000000000000000000000}
   end
   end
   object popmBreakpoints: TPopupMenu
   object popmBreakpoints: TPopupMenu
     OnPopup = popmBreakpointsPopup
     OnPopup = popmBreakpointsPopup

+ 1 - 1
LuaEdit/EditorSettings.dfm

@@ -120,7 +120,7 @@ object frmEditorSettings: TfrmEditorSettings
       Top = 0
       Top = 0
       Width = 492
       Width = 492
       Height = 375
       Height = 375
-      ActivePage = stabColors
+      ActivePage = TabSheet1
       Align = alClient
       Align = alClient
       TabOrder = 0
       TabOrder = 0
       object stabGeneral: TTabSheet
       object stabGeneral: TTabSheet

+ 1 - 1
LuaEdit/InternalBrowser.pas

@@ -136,7 +136,7 @@ begin
 
 
   lstValues.Free;
   lstValues.Free;
   pReg.Free;
   pReg.Free;
-  InternalBrowser.GoHome;
+  actHome.Execute;
 end;
 end;
 
 
 procedure TfrmInternalBrowser.FormDestroy(Sender: TObject);
 procedure TfrmInternalBrowser.FormDestroy(Sender: TObject);

+ 8 - 7
LuaEdit/LuaEdit.dof

@@ -113,9 +113,9 @@ RootDir=
 IncludeVerInfo=1
 IncludeVerInfo=1
 AutoIncBuild=1
 AutoIncBuild=1
 MajorVer=2
 MajorVer=2
-MinorVer=3
+MinorVer=4
 Release=1
 Release=1
-Build=903
+Build=944
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=1252
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=Open Source
 CompanyName=Open Source
 FileDescription=IDE for Lua 5.0.2
 FileDescription=IDE for Lua 5.0.2
-FileVersion=2.3.1.903
+FileVersion=2.4.1.944
 InternalName=LuaEdit
 InternalName=LuaEdit
 LegalCopyright=LuaEdit Copyright 2004-2005 ©
 LegalCopyright=LuaEdit Copyright 2004-2005 ©
 LegalTrademarks=
 LegalTrademarks=
@@ -138,11 +138,12 @@ Comments=This project was originally created by Jean-Francois Goulet
 Count=1
 Count=1
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 [HistoryLists\hlSearchPath]
 [HistoryLists\hlSearchPath]
-Count=4
+Count=5
 Item0=.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
 Item0=.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
-Item1=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
-Item2=C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\Component\SynEdit\Source
-Item3=C:\Prog\Delphi\Component\SynEdit\Packages
+Item1=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;C:\Prog\Delphi\COMPON~1\JEDI\jcl\lib\D7\debug;.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
+Item2=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
+Item3=C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\Component\SynEdit\Source
+Item4=C:\Prog\Delphi\Component\SynEdit\Packages
 [HistoryLists\hlOutputDirectorry]
 [HistoryLists\hlOutputDirectorry]
 Count=1
 Count=1
 Item0=.\bin
 Item0=.\bin

+ 1 - 1
LuaEdit/LuaEdit.dpr

@@ -117,7 +117,7 @@ begin
             pLuaUnit := frmMain.AddFileInProject(FileName, False, LuaSingleUnits);
             pLuaUnit := frmMain.AddFileInProject(FileName, False, LuaSingleUnits);
             pLuaUnit.IsLoaded := True;
             pLuaUnit.IsLoaded := True;
             frmMain.AddFileInTab(pLuaUnit);
             frmMain.AddFileInTab(pLuaUnit);
-            frmMain.MonitorFile(FileName);
+            frmMain.MonitorFileToRecent(FileName);
           end;
           end;
         end
         end
         else if ExtractFileExt(FileName) = '.lpr' then
         else if ExtractFileExt(FileName) = '.lpr' then

BIN
LuaEdit/LuaEdit.res


+ 167 - 90
LuaEdit/Main.dfm

@@ -147,7 +147,7 @@ object frmMain: TfrmMain
     object tlbRun: TToolBar
     object tlbRun: TToolBar
       Left = 320
       Left = 320
       Top = 2
       Top = 2
-      Width = 214
+      Width = 260
       Height = 22
       Height = 22
       Align = alLeft
       Align = alLeft
       AutoSize = True
       AutoSize = True
@@ -229,9 +229,19 @@ object frmMain: TfrmMain
         ImageIndex = 34
         ImageIndex = 34
         Style = tbsSeparator
         Style = tbsSeparator
       end
       end
-      object ToolButton21: TToolButton
+      object ToolButton27: TToolButton
         Left = 191
         Left = 191
         Top = 0
         Top = 0
+        Action = actAddWatch
+      end
+      object ToolButton26: TToolButton
+        Left = 214
+        Top = 0
+        Action = actEnableDisableBreakpoint
+      end
+      object ToolButton21: TToolButton
+        Left = 237
+        Top = 0
         Action = actToggleBreakpoint
         Action = actToggleBreakpoint
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
@@ -349,95 +359,145 @@ object frmMain: TfrmMain
         Action = actPrint
         Action = actPrint
       end
       end
     end
     end
+    object tlbFind: TToolBar
+      Left = 251
+      Top = 28
+      Width = 102
+      Height = 22
+      Align = alLeft
+      AutoSize = True
+      Caption = 'Find Toolbar'
+      EdgeBorders = []
+      Flat = True
+      Images = imlActions
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      object ToolButton35: TToolButton
+        Left = 0
+        Top = 0
+        Action = actFind
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton36: TToolButton
+        Left = 23
+        Top = 0
+        Action = actFindReplace
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton42: TToolButton
+        Left = 46
+        Top = 0
+        Action = actFindInFiles
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton37: TToolButton
+        Left = 69
+        Top = 0
+        Width = 10
+        Caption = 'ToolButton4'
+        ImageIndex = 3
+        Style = tbsSeparator
+      end
+      object ToolButton43: TToolButton
+        Left = 79
+        Top = 0
+        Action = actFindAgain
+        ParentShowHint = False
+        ShowHint = True
+      end
+    end
     object tlbEdit: TToolBar
     object tlbEdit: TToolBar
       Left = 11
       Left = 11
       Top = 28
       Top = 28
-      Width = 272
+      Width = 227
       Height = 22
       Height = 22
       Align = alLeft
       Align = alLeft
       AutoSize = True
       AutoSize = True
-      ButtonWidth = 28
       Caption = 'File ToolBar'
       Caption = 'File ToolBar'
       EdgeBorders = []
       EdgeBorders = []
       Flat = True
       Flat = True
       Images = imlActions
       Images = imlActions
       ParentShowHint = False
       ParentShowHint = False
       ShowHint = True
       ShowHint = True
-      TabOrder = 2
-      object ToolButton35: TToolButton
+      TabOrder = 3
+      object ToolButton28: TToolButton
         Left = 0
         Left = 0
         Top = 0
         Top = 0
         Action = actUndo
         Action = actUndo
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton36: TToolButton
-        Left = 28
+      object ToolButton29: TToolButton
+        Left = 23
         Top = 0
         Top = 0
         Action = actRedo
         Action = actRedo
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton37: TToolButton
-        Left = 56
+      object ToolButton30: TToolButton
+        Left = 46
         Top = 0
         Top = 0
         Width = 10
         Width = 10
         Caption = 'ToolButton4'
         Caption = 'ToolButton4'
         ImageIndex = 3
         ImageIndex = 3
         Style = tbsSeparator
         Style = tbsSeparator
       end
       end
-      object ToolButton38: TToolButton
-        Left = 66
+      object ToolButton31: TToolButton
+        Left = 56
         Top = 0
         Top = 0
         Action = actCut
         Action = actCut
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton39: TToolButton
-        Left = 94
+      object ToolButton32: TToolButton
+        Left = 79
         Top = 0
         Top = 0
         Action = actCopy
         Action = actCopy
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton40: TToolButton
-        Left = 122
+      object ToolButton44: TToolButton
+        Left = 102
         Top = 0
         Top = 0
         Action = actPaste
         Action = actPaste
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton41: TToolButton
-        Left = 150
+      object ToolButton45: TToolButton
+        Left = 125
         Top = 0
         Top = 0
         Width = 10
         Width = 10
         Caption = 'ToolButton8'
         Caption = 'ToolButton8'
         ImageIndex = 4
         ImageIndex = 4
         Style = tbsSeparator
         Style = tbsSeparator
       end
       end
-      object ToolButton42: TToolButton
-        Left = 160
+      object ToolButton46: TToolButton
+        Left = 135
         Top = 0
         Top = 0
         Action = actBlockUnindent
         Action = actBlockUnindent
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton43: TToolButton
-        Left = 188
+      object ToolButton47: TToolButton
+        Left = 158
         Top = 0
         Top = 0
         Action = actBlockIndent
         Action = actBlockIndent
         ParentShowHint = False
         ParentShowHint = False
         ShowHint = True
         ShowHint = True
       end
       end
-      object ToolButton24: TToolButton
-        Left = 216
+      object ToolButton49: TToolButton
+        Left = 181
         Top = 0
         Top = 0
-        Action = actBlockComment
+        Action = actBlockUncomment
       end
       end
-      object ToolButton25: TToolButton
-        Left = 244
+      object ToolButton48: TToolButton
+        Left = 204
         Top = 0
         Top = 0
-        Action = actBlockUncomment
+        Action = actBlockComment
       end
       end
     end
     end
   end
   end
@@ -909,6 +969,14 @@ object frmMain: TfrmMain
       ImageIndex = 59
       ImageIndex = 59
       OnExecute = actShowFindWindow2Execute
       OnExecute = actShowFindWindow2Execute
     end
     end
+    object actEnableDisableBreakpoint: TAction
+      Category = 'Debugging Operations'
+      Caption = 'Enable/Disable Breakpoint'
+      Hint = 'Disable/Enable Breakpoint'
+      ImageIndex = 60
+      ShortCut = 16504
+      OnExecute = actEnableDisableBreakpointExecute
+    end
   end
   end
   object imlActions: TImageList
   object imlActions: TImageList
     BlendColor = clWhite
     BlendColor = clWhite
@@ -917,131 +985,131 @@ object frmMain: TfrmMain
     Left = 48
     Left = 48
     Top = 217
     Top = 217
     Bitmap = {
     Bitmap = {
-      494C01013C004000040010001000FF00FF00FF10FFFFFFFFFFFFFFFF424D3600
+      494C01013D004000040010001000FF00FF00FF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000000001000001002000000000000000
       0000000000003600000028000000400000000001000001002000000000000000
-      0100000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      010000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00D1D8DB00D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600D1D8DB00D1D8
+      DB00D1D8DB00D1D8DB00A64C4C00A64C4C00A64C4C00A64C4C00A64C4C00A64C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600D1D8
+      DB00D1D8DB00D1D8DB004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF004C4C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600D1D8DB004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A6004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A6004C4C4C00D2D2D2004C4C4C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A6004C4C
+      4C00D2D2D2004C4C4C004C4C4C00FFFFFF004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A6004C4C
+      4C004C4C4C00A6A6A6004C4C4C00D2D2D2004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00FFFFFF004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00D2D2D2004C4C4C00FFFF
+      FF004C4C4C00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A6004C4C4C00D2D2D2004C4C4C00D2D2D2004C4C4C004C4C
+      4C00D1D8DB00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A6004C4C4C004C4C4C00D2D2D2004C4C4C00A6A6
+      A600D1D8DB00D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A6004C4C4C004C4C4C00A6A6A600A6A6
+      A600A6A6A600D1D8DB00D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600D1D8DB00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6A600A6A6
+      A600A6A6A600A6A6A600A6A6A600FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -3357,6 +3425,7 @@ object frmMain: TfrmMain
   end
   end
   object ppmToolBar: TPopupMenu
   object ppmToolBar: TPopupMenu
     OwnerDraw = True
     OwnerDraw = True
+    OnPopup = ppmToolBarPopup
     Left = 112
     Left = 112
     Top = 313
     Top = 313
     object File3: TMenuItem
     object File3: TMenuItem
@@ -3367,14 +3436,17 @@ object frmMain: TfrmMain
       Caption = 'Edit'
       Caption = 'Edit'
       OnClick = Edit2Click
       OnClick = Edit2Click
     end
     end
+    object Find2: TMenuItem
+      Caption = 'Find'
+      OnClick = Find1Click
+    end
     object Run4: TMenuItem
     object Run4: TMenuItem
       Caption = 'Run'
       Caption = 'Run'
       OnClick = Run3Click
       OnClick = Run3Click
     end
     end
   end
   end
   object jvDockVSNet: TJvDockVSNetStyle
   object jvDockVSNet: TJvDockVSNetStyle
-    ConjoinServerOption.GrabbersSize = 18
-    ConjoinServerOption.SplitterWidth = 4
+    AlwaysShowGrabber = False
     ConjoinServerOption.ActiveFont.Charset = ANSI_CHARSET
     ConjoinServerOption.ActiveFont.Charset = ANSI_CHARSET
     ConjoinServerOption.ActiveFont.Color = clWhite
     ConjoinServerOption.ActiveFont.Color = clWhite
     ConjoinServerOption.ActiveFont.Height = -11
     ConjoinServerOption.ActiveFont.Height = -11
@@ -3385,15 +3457,11 @@ object frmMain: TfrmMain
     ConjoinServerOption.InactiveFont.Height = -11
     ConjoinServerOption.InactiveFont.Height = -11
     ConjoinServerOption.InactiveFont.Name = 'Arial'
     ConjoinServerOption.InactiveFont.Name = 'Arial'
     ConjoinServerOption.InactiveFont.Style = []
     ConjoinServerOption.InactiveFont.Style = []
-    ConjoinServerOption.TextAlignment = taLeftJustify
     ConjoinServerOption.ActiveTitleStartColor = clNavy
     ConjoinServerOption.ActiveTitleStartColor = clNavy
     ConjoinServerOption.ActiveTitleEndColor = clNavy
     ConjoinServerOption.ActiveTitleEndColor = clNavy
     ConjoinServerOption.InactiveTitleStartColor = clBtnFace
     ConjoinServerOption.InactiveTitleStartColor = clBtnFace
     ConjoinServerOption.InactiveTitleEndColor = clBtnFace
     ConjoinServerOption.InactiveTitleEndColor = clBtnFace
-    ConjoinServerOption.TextEllipsis = True
     ConjoinServerOption.SystemInfo = False
     ConjoinServerOption.SystemInfo = False
-    TabServerOption.TabPosition = tpBottom
-    TabServerOption.ActiveSheetColor = clBtnFace
     TabServerOption.InactiveSheetColor = clWhite
     TabServerOption.InactiveSheetColor = clWhite
     TabServerOption.ActiveFont.Charset = ANSI_CHARSET
     TabServerOption.ActiveFont.Charset = ANSI_CHARSET
     TabServerOption.ActiveFont.Color = clWindowText
     TabServerOption.ActiveFont.Color = clWindowText
@@ -3405,11 +3473,7 @@ object frmMain: TfrmMain
     TabServerOption.InactiveFont.Height = -11
     TabServerOption.InactiveFont.Height = -11
     TabServerOption.InactiveFont.Name = 'Arial'
     TabServerOption.InactiveFont.Name = 'Arial'
     TabServerOption.InactiveFont.Style = []
     TabServerOption.InactiveFont.Style = []
-    TabServerOption.HotTrackColor = clBlue
-    TabServerOption.ShowTabImages = True
-    ChannelOption.ActivePaneSize = 100
-    ChannelOption.ShowImage = True
-    ChannelOption.HideHoldTime = 1000
+    TabServerOption.ShowCloseButtonOnTabs = False
     Left = 80
     Left = 80
     Top = 342
     Top = 342
   end
   end
@@ -4109,6 +4173,11 @@ object frmMain: TfrmMain
     DisabledFont.Height = -11
     DisabledFont.Height = -11
     DisabledFont.Name = 'Arial'
     DisabledFont.Name = 'Arial'
     DisabledFont.Style = []
     DisabledFont.Style = []
+    SelectedFont.Charset = DEFAULT_CHARSET
+    SelectedFont.Color = clWindowText
+    SelectedFont.Height = -11
+    SelectedFont.Name = 'MS Sans Serif'
+    SelectedFont.Style = []
     Left = 112
     Left = 112
     Top = 342
     Top = 342
   end
   end
@@ -4302,10 +4371,15 @@ object frmMain: TfrmMain
         Caption = 'Toolbars'
         Caption = 'Toolbars'
         object File2: TMenuItem
         object File2: TMenuItem
           Caption = 'File'
           Caption = 'File'
+          OnClick = File2Click
         end
         end
         object Edit2: TMenuItem
         object Edit2: TMenuItem
           Caption = 'Edit'
           Caption = 'Edit'
         end
         end
+        object Find1: TMenuItem
+          Caption = 'Find'
+          OnClick = Find1Click
+        end
         object Run1: TMenuItem
         object Run1: TMenuItem
           Caption = 'Run'
           Caption = 'Run'
         end
         end
@@ -4370,6 +4444,9 @@ object frmMain: TfrmMain
       object oggleBreakpoint1: TMenuItem
       object oggleBreakpoint1: TMenuItem
         Action = actToggleBreakpoint
         Action = actToggleBreakpoint
       end
       end
+      object DisableEnableBreakpoint1: TMenuItem
+        Action = actEnableDisableBreakpoint
+      end
     end
     end
     object ools1: TMenuItem
     object ools1: TMenuItem
       Action = actMainMenuTools
       Action = actMainMenuTools
@@ -4442,8 +4519,8 @@ object frmMain: TfrmMain
     Top = 217
     Top = 217
   end
   end
   object xmpMenuPainter: TXPMenu
   object xmpMenuPainter: TXPMenu
-    DimLevel = 30
-    GrayLevel = 10
+    DimLevel = 20
+    GrayLevel = 50
     Font.Charset = DEFAULT_CHARSET
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clMenuText
     Font.Color = clMenuText
     Font.Height = -11
     Font.Height = -11

+ 388 - 98
LuaEdit/Main.pas

@@ -16,7 +16,8 @@ uses
   ActnMenus, ActnColorMaps, StdStyleActnCtrls, XPMenu, Clipbrd, JvLookOut,
   ActnMenus, ActnColorMaps, StdStyleActnCtrls, XPMenu, Clipbrd, JvLookOut,
   JvExControls, FileCtrl, VirtualTrees
   JvExControls, FileCtrl, VirtualTrees
   {$ifdef RTASSERT}  , RTDebug  {$endif}
   {$ifdef RTASSERT}  , RTDebug  {$endif}
-  , JvDragDrop, JvAppEvent, JvExStdCtrls, JvButton, JvCtrls, JvComCtrls;
+  , JvDragDrop, JvAppEvent, JvExStdCtrls, JvButton, JvCtrls, JvComCtrls,
+  JvDockTree;
 
 
 const
 const
   otLuaProject  = 1;
   otLuaProject  = 1;
@@ -111,6 +112,7 @@ type
     function IsBreakPointLine(iLine: Integer): Boolean;
     function IsBreakPointLine(iLine: Integer): Boolean;
     function GetBreakpointStatus(iLine: Integer): Integer;
     function GetBreakpointStatus(iLine: Integer): Integer;
     procedure AddBreakpointAtLine(iLine: Integer);
     procedure AddBreakpointAtLine(iLine: Integer);
+    procedure EnableDisableBreakpointAtLine(iLine: Integer);
     function GetBreakpointAtLine(iLine: Integer): TBreakpoint;
     function GetBreakpointAtLine(iLine: Integer): TBreakpoint;
     procedure RemoveBreakpointAtLine(iLine: Integer);
     procedure RemoveBreakpointAtLine(iLine: Integer);
     function GetLineCondition(iLine: Integer): String;
     function GetLineCondition(iLine: Integer): String;
@@ -308,14 +310,10 @@ type
     Save2: TMenuItem;
     Save2: TMenuItem;
     SaveAs2: TMenuItem;
     SaveAs2: TMenuItem;
     jvchnNotifier: TJvChangeNotify;
     jvchnNotifier: TJvChangeNotify;
-    tlbEdit: TToolBar;
+    tlbFind: TToolBar;
     ToolButton35: TToolButton;
     ToolButton35: TToolButton;
     ToolButton36: TToolButton;
     ToolButton36: TToolButton;
     ToolButton37: TToolButton;
     ToolButton37: TToolButton;
-    ToolButton38: TToolButton;
-    ToolButton39: TToolButton;
-    ToolButton40: TToolButton;
-    ToolButton41: TToolButton;
     ToolButton42: TToolButton;
     ToolButton42: TToolButton;
     ToolButton43: TToolButton;
     ToolButton43: TToolButton;
     actMainMenuFile: TAction;
     actMainMenuFile: TAction;
@@ -438,8 +436,6 @@ type
     UncommentSelection1: TMenuItem;
     UncommentSelection1: TMenuItem;
     CommentSelection2: TMenuItem;
     CommentSelection2: TMenuItem;
     UncommentSelection2: TMenuItem;
     UncommentSelection2: TMenuItem;
-    ToolButton24: TToolButton;
-    ToolButton25: TToolButton;
     jvAppDrop: TJvDragDrop;
     jvAppDrop: TJvDragDrop;
     actUpperCase: TAction;
     actUpperCase: TAction;
     actLowerCase: TAction;
     actLowerCase: TAction;
@@ -457,6 +453,24 @@ type
     actShowFindWindow2: TAction;
     actShowFindWindow2: TAction;
     FindWindow11: TMenuItem;
     FindWindow11: TMenuItem;
     FindWindow21: TMenuItem;
     FindWindow21: TMenuItem;
+    actEnableDisableBreakpoint: TAction;
+    DisableEnableBreakpoint1: TMenuItem;
+    ToolButton26: TToolButton;
+    ToolButton27: TToolButton;
+    tlbEdit: TToolBar;
+    ToolButton28: TToolButton;
+    ToolButton29: TToolButton;
+    ToolButton30: TToolButton;
+    ToolButton31: TToolButton;
+    ToolButton32: TToolButton;
+    ToolButton44: TToolButton;
+    ToolButton45: TToolButton;
+    ToolButton46: TToolButton;
+    ToolButton47: TToolButton;
+    ToolButton48: TToolButton;
+    ToolButton49: TToolButton;
+    Find1: TMenuItem;
+    Find2: TMenuItem;
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure synEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure synEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure actOpenFileExecute(Sender: TObject);
     procedure actOpenFileExecute(Sender: TObject);
@@ -551,6 +565,9 @@ type
     procedure actShowFindWindow1Execute(Sender: TObject);
     procedure actShowFindWindow1Execute(Sender: TObject);
     procedure actShowFindWindow2Execute(Sender: TObject);
     procedure actShowFindWindow2Execute(Sender: TObject);
     procedure jvUnitBarChange(Sender: TObject);
     procedure jvUnitBarChange(Sender: TObject);
+    procedure actEnableDisableBreakpointExecute(Sender: TObject);
+    procedure Find1Click(Sender: TObject);
+    procedure ppmToolBarPopup(Sender: TObject);
     //procedure actFunctionHeaderExecute(Sender: TObject);
     //procedure actFunctionHeaderExecute(Sender: TObject);
   private
   private
     { Private declarations }
     { Private declarations }
@@ -598,7 +615,7 @@ type
     procedure CheckButtons;
     procedure CheckButtons;
     procedure BuildReopenMenu;
     procedure BuildReopenMenu;
     function IsReopenInList(sString: String): Boolean;
     function IsReopenInList(sString: String): Boolean;
-    procedure MonitorFile(sString: String);
+    procedure MonitorFileToRecent(sString: String);
     procedure mnuXReopenClick(Sender: TObject);
     procedure mnuXReopenClick(Sender: TObject);
     procedure btnXFilesClick(Sender: TObject);
     procedure btnXFilesClick(Sender: TObject);
     procedure btnXClipboardClick(Sender: TObject);
     procedure btnXClipboardClick(Sender: TObject);
@@ -685,6 +702,7 @@ type
     function DoRunScriptExecute(): Boolean;
     function DoRunScriptExecute(): Boolean;
     function DoAddWatchExecute(): Boolean;
     function DoAddWatchExecute(): Boolean;
     function DoToggleBreakpointExecute(): Boolean;
     function DoToggleBreakpointExecute(): Boolean;
+    function DoEnableDisableBreakpoint(): Boolean;
     function DoStepOverExecute(): Boolean;
     function DoStepOverExecute(): Boolean;
     function DoStepIntoExecute(): Boolean;
     function DoStepIntoExecute(): Boolean;
     function DoPauseExecute(): Boolean;
     function DoPauseExecute(): Boolean;
@@ -921,6 +939,24 @@ begin
   lstBreakpoint.Add(pNewBreakpoint);
   lstBreakpoint.Add(pNewBreakpoint);
 end;
 end;
 
 
+procedure TLineDebugInfos.EnableDisableBreakpointAtLine(iLine: Integer);
+var
+  x: Integer;
+begin
+  for x := 0 to lstBreakpoint.Count - 1 do
+  begin
+    if TBreakpoint(lstBreakpoint.Items[x]).iLine = iLine then
+    begin
+      if TBreakpoint(lstBreakpoint.Items[x]).iStatus = BKPT_ENABLED then
+        TBreakpoint(lstBreakpoint.Items[x]).iStatus := BKPT_DISABLED
+      else
+        TBreakpoint(lstBreakpoint.Items[x]).iStatus := BKPT_ENABLED;
+
+      Break;
+    end;
+  end;
+end;
+
 procedure TLineDebugInfos.RemoveBreakpointAtLine(iLine: Integer);
 procedure TLineDebugInfos.RemoveBreakpointAtLine(iLine: Integer);
 var
 var
   x: Integer;
   x: Integer;
@@ -967,7 +1003,7 @@ begin
 
 
   FirstLine := pLuaUnit.synUnit.RowToLine(FirstLine);
   FirstLine := pLuaUnit.synUnit.RowToLine(FirstLine);
   LastLine := pLuaUnit.synUnit.RowToLine(LastLine);
   LastLine := pLuaUnit.synUnit.RowToLine(LastLine);
-  X := 14;
+  X := 1;
   LH := pLuaUnit.synUnit.LineHeight;
   LH := pLuaUnit.synUnit.LineHeight;
   while FirstLine <= LastLine do
   while FirstLine <= LastLine do
   begin
   begin
@@ -1097,7 +1133,7 @@ begin
   HasChanged := False;
   HasChanged := False;
   LuaProjects.Add(Self);
   LuaProjects.Add(Self);
   ActiveProject := Self;
   ActiveProject := Self;
-  frmMain.MonitorFile(sPrjPath);
+  frmMain.MonitorFileToRecent(sPrjPath);
 
 
   // Read [Files] section
   // Read [Files] section
   fFile.ReadSection('Files', lstTmpFiles);
   fFile.ReadSection('Files', lstTmpFiles);
@@ -1203,6 +1239,9 @@ begin
       if frmMain.sdlgSaveAsPrj.Execute then
       if frmMain.sdlgSaveAsPrj.Execute then
       begin
       begin
         sPath := frmMain.sdlgSaveAsPrj.FileName;
         sPath := frmMain.sdlgSaveAsPrj.FileName;
+
+        if IsNew then
+          frmMain.MonitorFileToRecent(sPath);
       end
       end
       else
       else
       begin
       begin
@@ -1259,6 +1298,7 @@ begin
   frmProjectTree.BuildProjectTree;
   frmProjectTree.BuildProjectTree;
   pFile.UpdateFile;
   pFile.UpdateFile;
   pFile.Free;
   pFile.Free;
+  frmMain.BuildReopenMenu;
 
 
   // Now we wrote on the disk we may retrieve the time it has been writen
   // Now we wrote on the disk we may retrieve the time it has been writen
   LastTimeModified := GetFileLastTimeModified(PChar(sPath));
   LastTimeModified := GetFileLastTimeModified(PChar(sPath));
@@ -1274,7 +1314,7 @@ begin
   frmMain.jvchnNotifier.Active := False;
   frmMain.jvchnNotifier.Active := False;
   Result := True;
   Result := True;
 
 
-  // Popup a open dialog according to parameters and the state of the file
+  // Popup an open dialog according to parameters and the state of the file
   if ((IsNew and not bNoDialog) or (bForceDialog)) then
   if ((IsNew and not bNoDialog) or (bForceDialog)) then
   begin
   begin
     frmMain.sdlgSaveAsPrj.FileName := sPrjName + '.lpr';
     frmMain.sdlgSaveAsPrj.FileName := sPrjName + '.lpr';
@@ -1282,6 +1322,9 @@ begin
     if frmMain.sdlgSaveAsPrj.Execute then
     if frmMain.sdlgSaveAsPrj.Execute then
     begin
     begin
       sPath := frmMain.sdlgSaveAsPrj.FileName;
       sPath := frmMain.sdlgSaveAsPrj.FileName;
+
+      if IsNew then
+        frmMain.MonitorFileToRecent(sPath);
     end
     end
     else
     else
     begin
     begin
@@ -1356,15 +1399,14 @@ begin
 
 
   // Wrtie data for [Files] section  
   // Wrtie data for [Files] section  
   for x := 0 to lstUnits.Count - 1 do
   for x := 0 to lstUnits.Count - 1 do
-  begin
     // Write the file with a relative path
     // Write the file with a relative path
     pFile.WriteString('Files', 'File'+IntToStr(x), ExtractRelativePath(ExtractFilePath(sPrjPath), TLuaUnit(lstUnits.Items[x]).sUnitPath));
     pFile.WriteString('Files', 'File'+IntToStr(x), ExtractRelativePath(ExtractFilePath(sPrjPath), TLuaUnit(lstUnits.Items[x]).sUnitPath));
-  end;
 
 
   // Initialize stuff...   
   // Initialize stuff...   
   IsNew := False;
   IsNew := False;
   HasChanged := False;
   HasChanged := False;
   frmProjectTree.BuildProjectTree;
   frmProjectTree.BuildProjectTree;
+  frmMain.BuildReopenMenu;
   pFile.UpdateFile;
   pFile.UpdateFile;
   pFile.Free;
   pFile.Free;
 
 
@@ -1463,6 +1505,9 @@ begin
       if frmMain.sdlgSaveAsUnit.Execute then
       if frmMain.sdlgSaveAsUnit.Execute then
       begin
       begin
         sPath := frmMain.sdlgSaveAsUnit.FileName;
         sPath := frmMain.sdlgSaveAsUnit.FileName;
+
+        if IsNew then
+          frmMain.MonitorFileToRecent(sPath);
       end
       end
       else
       else
       begin
       begin
@@ -1546,6 +1591,7 @@ begin
     // Reinitialize stuff...
     // Reinitialize stuff...
     frmMain.RefreshOpenedUnits;
     frmMain.RefreshOpenedUnits;
     frmProjectTree.BuildProjectTree;
     frmProjectTree.BuildProjectTree;
+    frmMain.BuildReopenMenu;
     frmMain.stbMain.Panels[5].Text := '';
     frmMain.stbMain.Panels[5].Text := '';
     frmMain.stbMain.Refresh;
     frmMain.stbMain.Refresh;
     synUnit.Refresh;
     synUnit.Refresh;
@@ -1575,6 +1621,9 @@ begin
       begin
       begin
         sPath := frmMain.sdlgSaveAsUnit.FileName;
         sPath := frmMain.sdlgSaveAsUnit.FileName;
         pPrjOwner.HasChanged := True;
         pPrjOwner.HasChanged := True;
+
+        if IsNew then
+          frmMain.MonitorFileToRecent(sPath);
       end
       end
       else
       else
       begin
       begin
@@ -1636,6 +1685,7 @@ begin
     // Initialize stuff...
     // Initialize stuff...
     frmMain.RefreshOpenedUnits;
     frmMain.RefreshOpenedUnits;
     frmProjectTree.BuildProjectTree;
     frmProjectTree.BuildProjectTree;
+    frmMain.BuildReopenMenu;
     frmMain.stbMain.Panels[5].Text := '';
     frmMain.stbMain.Panels[5].Text := '';
     frmMain.stbMain.Refresh;
     frmMain.stbMain.Refresh;
     synUnit.Refresh;
     synUnit.Refresh;
@@ -1879,7 +1929,7 @@ begin
           pLuaUnit := AddFileInProject(odlgOpenUnit.Files.Strings[z], False, LuaSingleUnits);
           pLuaUnit := AddFileInProject(odlgOpenUnit.Files.Strings[z], False, LuaSingleUnits);
           pLuaUnit.IsLoaded := True;
           pLuaUnit.IsLoaded := True;
           AddFileInTab(pLuaUnit);
           AddFileInTab(pLuaUnit);
-          MonitorFile(odlgOpenUnit.Files.Strings[z]);
+          MonitorFileToRecent(odlgOpenUnit.Files.Strings[z]);
           
           
           // Add opened file to recent opens
           // Add opened file to recent opens
           pReg.OpenKey('\Software\LuaEdit', True);
           pReg.OpenKey('\Software\LuaEdit', True);
@@ -1913,6 +1963,7 @@ begin
 
 
   // Rebuild the project tree and initialize stuff
   // Rebuild the project tree and initialize stuff
   frmProjectTree.BuildProjectTree;
   frmProjectTree.BuildProjectTree;
+  BuildReopenMenu;
   CheckButtons;
   CheckButtons;
 
 
   pReg.Free;
   pReg.Free;
@@ -1945,6 +1996,7 @@ begin
   synEdit.WantTabs := True;
   synEdit.WantTabs := True;
   synEdit.ShowHint := True;
   synEdit.ShowHint := True;
   synEdit.PopupMenu := ppmEditor;
   synEdit.PopupMenu := ppmEditor;
+  synEdit.BookMarkOptions.LeftMargin := 15;
 
 
   // Set event handlers
   // Set event handlers
   synEdit.OnChange := synEditChange;
   synEdit.OnChange := synEditChange;
@@ -2000,7 +2052,12 @@ begin
   pLuaUnit.pPrjOwner := pPrj;
   pLuaUnit.pPrjOwner := pPrj;
   pLuaUnit.IsNew := IsNew;
   pLuaUnit.IsNew := IsNew;
   pLuaUnit.synUnit := nil;
   pLuaUnit.synUnit := nil;
-  pPrj.lstUnits.Add(pLuaUnit);
+
+  if pPrj.sPrjName = '[@@SingleUnits@@]' then
+    pPrj.lstUnits.Insert(pPrj.lstUnits.Count, pLuaUnit)
+  else
+    pPrj.lstUnits.Add(pLuaUnit);
+
   Result := pLuaUnit;
   Result := pLuaUnit;
 end;
 end;
 
 
@@ -2122,6 +2179,8 @@ begin
     stbMain.Panels[2].Text := 'CAPS'
     stbMain.Panels[2].Text := 'CAPS'
   else
   else
     stbMain.Panels[2].Text := '';
     stbMain.Panels[2].Text := '';
+
+  CheckButtons;
 end;
 end;
 
 
 function TfrmMain.DoOpenProjectExecute(): Boolean;
 function TfrmMain.DoOpenProjectExecute(): Boolean;
@@ -2225,6 +2284,7 @@ procedure TfrmMain.CheckButtons;
 var
 var
   pNode: PVirtualNode;
   pNode: PVirtualNode;
   pData: PProjectTreeData;
   pData: PProjectTreeData;
+  pLuaUnit: TLuaUnit;
 begin
 begin
   actClose.Enabled := not (LuaOpenedUnits.Count = 0);
   actClose.Enabled := not (LuaOpenedUnits.Count = 0);
   actSave.Enabled := not (LuaOpenedUnits.Count = 0);
   actSave.Enabled := not (LuaOpenedUnits.Count = 0);
@@ -2260,18 +2320,24 @@ begin
   PrintSetup1.Enabled := not (LuaOpenedUnits.Count = 0);
   PrintSetup1.Enabled := not (LuaOpenedUnits.Count = 0);
   //HeaderBuilder1.Enabled := not (LuaOpenedUnits.Count = 0);
   //HeaderBuilder1.Enabled := not (LuaOpenedUnits.Count = 0);
 
 
+  // Initialize some actions' state
+  actEnableDisableBreakpoint.Enabled := False;
+
   if LuaOpenedUnits.Count > 0 then
   if LuaOpenedUnits.Count > 0 then
   begin
   begin
     if Assigned(jvUnitBar.SelectedTab) then
     if Assigned(jvUnitBar.SelectedTab) then
     begin
     begin
       if Assigned(jvUnitBar.SelectedTab.Data) then
       if Assigned(jvUnitBar.SelectedTab.Data) then
       begin
       begin
-        if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.UndoList.ItemCount = 0 then
+        pLuaUnit := TLuaUnit(jvUnitBar.SelectedTab.Data);
+        actEnableDisableBreakpoint.Enabled := pLuaUnit.pDebugInfos.IsBreakPointLine(TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.CaretY);
+
+        if pLuaUnit.synUnit.UndoList.ItemCount = 0 then
           actUndo.Enabled := False
           actUndo.Enabled := False
         else
         else
           actUndo.Enabled := True;
           actUndo.Enabled := True;
 
 
-        if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.RedoList.ItemCount = 0 then
+        if pLuaUnit.synUnit.RedoList.ItemCount = 0 then
           actRedo.Enabled := False
           actRedo.Enabled := False
         else
         else
           actRedo.Enabled := True;
           actRedo.Enabled := True;
@@ -2300,21 +2366,6 @@ begin
   else
   else
     actActiveSelPrj.Enabled := False;
     actActiveSelPrj.Enabled := False;
 
 
-  if Assigned(ActiveProject) then
-  begin
-    actAddToPrj.Enabled := True;
-    actRemoveFromPrj.Enabled := True;
-    actPrjSettings.Enabled := True;
-    actSaveProjectAs.Enabled := True;
-  end
-  else
-  begin
-    actAddToPrj.Enabled := False;
-    actRemoveFromPrj.Enabled := False;
-    actPrjSettings.Enabled := False;
-    actSaveProjectAs.Enabled := False;
-  end;
-
   actNewProject.Enabled := True;
   actNewProject.Enabled := True;
   actNewUnit.Enabled := True;
   actNewUnit.Enabled := True;
   actOpenFile.Enabled := True;
   actOpenFile.Enabled := True;
@@ -2722,7 +2773,7 @@ begin
   pReg.Free;
   pReg.Free;
 end;
 end;
 
 
-procedure TfrmMain.MonitorFile(sString: String);
+procedure TfrmMain.MonitorFileToRecent(sString: String);
 var
 var
   pReg: TRegistry;
   pReg: TRegistry;
   lstValues: TStringList;
   lstValues: TStringList;
@@ -2759,7 +2810,6 @@ begin
 
 
     pReg.WriteInteger(sString, 0);
     pReg.WriteInteger(sString, 0);
     lstValues.Free;
     lstValues.Free;
-    //BuildReopenMenu;
   end;
   end;
 
 
   pReg.Free;
   pReg.Free;
@@ -2795,6 +2845,8 @@ begin
   Run1.Checked := tlbRun.Visible;
   Run1.Checked := tlbRun.Visible;
   File3.Checked := tlbBaseFile.Visible;
   File3.Checked := tlbBaseFile.Visible;
   Edit3.Checked := tlbEdit.Visible;
   Edit3.Checked := tlbEdit.Visible;
+  Find1.Checked := tlbFind.Visible;
+  Find2.Checked := tlbFind.Visible;
   Run4.Checked := tlbRun.Visible;
   Run4.Checked := tlbRun.Visible;
   actShowMessages.Checked := frmLuaEditMessages.Visible;
   actShowMessages.Checked := frmLuaEditMessages.Visible;
   actShowProjectTree.Checked := frmProjectTree.Visible;
   actShowProjectTree.Checked := frmProjectTree.Visible;
@@ -2818,9 +2870,27 @@ begin
 end;
 end;
 
 
 function TfrmMain.DoMainMenuProjectExecute(): Boolean;
 function TfrmMain.DoMainMenuProjectExecute(): Boolean;
+var
+  pNode: PVirtualNode;
+  pData: PProjectTreeData;
 begin
 begin
-  Result := False;
-  // Do nothing for now...
+  Result := True;
+  
+  // Retreive first selected node
+  pNode := frmProjectTree.vstProjectTree.GetFirstSelected;
+
+  // Only if a menu is selected
+  if Assigned(pNode) then
+  begin
+    // Retreive data from selected node
+    pData := frmProjectTree.vstProjectTree.GetNodeData(pNode);
+
+    actActiveSelPrj.Enabled := Assigned(pData.pLuaPrj);
+    actAddToPrj.Enabled := ((pData.pLuaPrj = ActiveProject) and Assigned(ActiveProject));
+    actPrjSettings.Enabled := ((pData.pLuaPrj = ActiveProject) and Assigned(ActiveProject));
+    frmProjectTree.UnloadFileProject1.Enabled := (((Assigned(pData.pLuaUnit)) and (pNode.Parent = frmProjectTree.vstProjectTree.RootNode)) or (Assigned(pData.pLuaPrj)));
+    actRemoveFromPrj.Enabled := not ((pNode.Parent = frmProjectTree.vstProjectTree.RootNode) and (Assigned(pData.pLuaUnit)));
+  end;
 end;
 end;
 
 
 procedure TfrmMain.actMainMenuProjectExecute(Sender: TObject);
 procedure TfrmMain.actMainMenuProjectExecute(Sender: TObject);
@@ -2830,8 +2900,9 @@ end;
 
 
 function TfrmMain.DoMainMenuRunExecute(): Boolean;
 function TfrmMain.DoMainMenuRunExecute(): Boolean;
 begin
 begin
-  Result := False;
-  // Do nothing for now...
+  Result := True;
+
+  CheckButtons;
 end;
 end;
 
 
 procedure TfrmMain.actMainMenuRunExecute(Sender: TObject);
 procedure TfrmMain.actMainMenuRunExecute(Sender: TObject);
@@ -3015,6 +3086,8 @@ begin
 end;
 end;
 
 
 function TfrmMain.DoShowRingsExecute(): Boolean;
 function TfrmMain.DoShowRingsExecute(): Boolean;
+var
+  test: Integer;
 begin
 begin
   Result := True;
   Result := True;
   actShowRings.Checked := not actShowRings.Checked;
   actShowRings.Checked := not actShowRings.Checked;
@@ -3120,7 +3193,7 @@ begin
         pLuaUnit := AddFileInProject(mnuSender.Caption, False, LuaSingleUnits);
         pLuaUnit := AddFileInProject(mnuSender.Caption, False, LuaSingleUnits);
         pLuaUnit.IsLoaded := True;
         pLuaUnit.IsLoaded := True;
         AddFileInTab(pLuaUnit);
         AddFileInTab(pLuaUnit);
-        MonitorFile(mnuSender.Caption);
+        MonitorFileToRecent(mnuSender.Caption);
         BuildTreeNeeded := True;
         BuildTreeNeeded := True;
       end
       end
       else
       else
@@ -3218,7 +3291,7 @@ begin
         pLuaUnit := AddFileInProject(btnSender.Caption, False, LuaSingleUnits);
         pLuaUnit := AddFileInProject(btnSender.Caption, False, LuaSingleUnits);
         pLuaUnit.IsLoaded := True;
         pLuaUnit.IsLoaded := True;
         AddFileInTab(pLuaUnit);
         AddFileInTab(pLuaUnit);
-        MonitorFile(btnSender.Caption);
+        MonitorFileToRecent(btnSender.Caption);
         BuildTreeNeeded := True;
         BuildTreeNeeded := True;
       end
       end
       else
       else
@@ -4532,11 +4605,51 @@ end;
 procedure TfrmMain.PrintWatch(L: Plua_State);
 procedure TfrmMain.PrintWatch(L: Plua_State);
 var
 var
   x, iLen: Integer;
   x, iLen: Integer;
-  sValue: String;
+  sSub, sValue, sLookup, sSubTable: String;
   lstTable: TStringList;
   lstTable: TStringList;
+  IsTable: Boolean;
   pNode, pChildNode, pNodeToDel: PVirtualNode;
   pNode, pChildNode, pNodeToDel: PVirtualNode;
   pData, pChildData, pNewData: PWatchNodeData;
   pData, pChildData, pNewData: PWatchNodeData;
 
 
+  // Go through all nodes of the tree and set their ToKeep flag to false
+  procedure UnflagAllExpanded(pTree: TVirtualStringTree);
+  var
+    pNode: PVirtualNode;
+    pData: PWatchNodeData;
+  begin
+    pNode := pTree.GetFirst;
+
+    while Assigned(pNode) do
+    begin
+      pData := pTree.GetNodeData(pNode);
+      pData.ToKeep := False;
+      pNode := pTree.GetNext(pNode);
+    end;
+  end;
+
+  // Deletes all nodes for wich their ToKeep flag is still on false
+  procedure CleanTree(pTree: TVirtualStringTree);
+  var
+    pNode, pPrevious: PVirtualNode;
+    pData: PWatchNodeData;
+  begin
+    pNode := pTree.GetFirst;
+
+    while Assigned(pNode) do
+    begin
+      pData := pTree.GetNodeData(pNode);
+      
+      if not pData.ToKeep then
+      begin
+        pPrevious := pTree.GetPrevious(pNode);
+        pTree.DeleteNode(pNode);
+        pNode := pPrevious;
+      end;
+      
+      pNode := pTree.GetNext(pNode);
+    end;
+  end;
+
   // Subroutine wich parse a string to retreive fields and tables
   // Subroutine wich parse a string to retreive fields and tables
   procedure LuaStrTableToStringList(sTable: String; pStrLst: TStrings);
   procedure LuaStrTableToStringList(sTable: String; pStrLst: TStrings);
   var
   var
@@ -4615,8 +4728,44 @@ var
       end;
       end;
     end;
     end;
   end;
   end;
+
+  // Normalize a table indexing style a[1]["test"] -> a.[1].test
+  function NormalizeName(sName: String): String;
+  var
+    sTemp, sKey: String;
+    Dummy: Integer;
+  begin
+    Result := '';
+    sTemp := sName;
+
+    // Convert [] indexing style to . indexing style
+    while Pos('[', sTemp) <> 0 do
+    begin
+      Result := Result + Copy(sTemp, 1, Pos('[', sTemp) - 1) + '.';
+      sTemp := Copy(sTemp, Pos('[', sTemp) + 1, Length(sTemp) - Pos('[', sTemp));
+      sKey := Copy(sTemp, 1, Pos(']', sTemp) - 1);
+
+      // Convert integer indexing into [] formating for LuaEdit compatibility if required
+      if TryStrToInt(sKey, Dummy) then
+        Result := Result + '[' + Dequote(sKey) + ']'
+      else
+        Result := Result + Dequote(sKey);
+
+      sTemp := Copy(sTemp, Pos(']', sTemp) + 1, Length(sTemp) - Pos(']', sTemp));
+    end;
+
+    // Append rests of sTemp if any...
+    if sTemp <> '' then
+      Result := Result + sTemp;
+
+    // Return passed name if normal...
+    if Result = '' then
+      Result := sName;
+  end;
+
 begin
 begin
   // Initialize stuff
   // Initialize stuff
+  UnflagAllExpanded(frmWatch.vstWatch);
   lstTable := TStringList.Create;
   lstTable := TStringList.Create;
   pNodeToDel := nil;
   pNodeToDel := nil;
 
 
@@ -4626,8 +4775,9 @@ begin
   // Go through all nodes
   // Go through all nodes
   while pNode <> nil do
   while pNode <> nil do
   begin
   begin
-    // retreive current text
+    // retreive current text and initializing some values
     pData := frmWatch.vstWatch.GetNodeData(pNode);
     pData := frmWatch.vstWatch.GetNodeData(pNode);
+    IsTable := False;
     sValue := '';
     sValue := '';
 
 
     // A variable name must be assigned in order to make an association
     // A variable name must be assigned in order to make an association
@@ -4636,69 +4786,147 @@ begin
       // Attempt to make the association
       // Attempt to make the association
       if pNode.Parent = frmWatch.vstWatch.RootNode then
       if pNode.Parent = frmWatch.vstWatch.RootNode then
       begin
       begin
-        if lstLocals.Values[pData.Name] <> '' then
-          sValue := lstLocals.Values[pData.Name];
+        if ((Pos('.', pData.Name) <> 0) or (Pos('[', pData.Name) <> 0)) then
+        begin
+          IsTable := True;
+          // Normalize table's indexing style
+          sLookup := NormalizeName(pData.Name);
+          sSubTable := Copy(sLookup, Pos('.', sLookup) + 1, Length(sLookup) - Pos('.', sLookup));
+          sLookup := Copy(sLookup, 1, Pos('.', sLookup) - 1);
+
+          if sSubTable = '' then
+            sValue := 'nil';
+        end
+        else
+          sLookup := pData.Name;
 
 
-        if ((sValue = '') and (lstGlobals.Values[pData.Name] <> '')) then
-          sValue := lstGlobals.Values[pData.Name];
+        if lstLocals.Values[sLookup] <> '' then
+          sValue := lstLocals.Values[sLookup];
+
+        if ((sValue = '') and (lstGlobals.Values[sLookup] <> '')) then
+          sValue := lstGlobals.Values[sLookup];
 
 
         if sValue = '' then
         if sValue = '' then
           sValue := 'nil';
           sValue := 'nil';
       end
       end
       else
       else
-        sValue := pData.Value;
+      begin
+        if pData.ToKeep = True then
+          sValue := pData.Value;
+      end;
 
 
-      // Parse table string if it is a table and initalize any required child
-      if sValue[1] = '{' then
+      if sValue <> '' then
       begin
       begin
-        LuaStrTableToStringList(sValue, lstTable);
-        pData.Value := sValue;
+        // Parse table string if it is a table and initalize any required child
+        if sValue[1] = '{' then
+        begin
+          // If value found and is a name is a table then we recursively search for value
+          if IsTable then
+          begin
+            // Initialize first item to look for
+            sSub := Copy(sSubTable, 1, Pos('.', sSubTable) - 1);
+            if sSub = '' then
+              sSub := sSubTable;
+          
+            // Search for value/subtables in current value
+            while ((sValue <> 'nil') and (sSub <> '')) do
+            begin
+              if Pos('.', sSubTable) <> 0 then
+                sSubTable := Copy(sSubTable, Pos('.', sSubTable) + 1, Length(sSubTable) + Pos('.', sSubTable) - 1)
+              else
+                sSubTable := '';
 
 
-        // Get first child
-        pChildNode := frmWatch.vstWatch.GetFirstChild(pNode);
+              LuaStrTableToStringList(sValue, lstTable);
+              sValue := lstTable.Values[sSub];
 
 
-        while pChildNode <> nil do
-        begin
-          // Get the current data of the current child
-          pChildData := frmWatch.vstWatch.GetNodeData(pChildNode);
+              if sValue = '' then
+                sValue := 'nil';
+
+              sSub := Copy(sSubTable, 1, Pos('.', sSubTable) - 1);
+              if sSub = '' then
+                sSub := sSubTable;
+              // Find subtables in current sValue until result or not...
+            end;
+          end;
 
 
-          if lstTable.Values[pChildData.Name] <> '' then
+          // If found value is still a table then display values/subtables...
+          if sValue[1] = '{' then
           begin
           begin
-            pChildData.Value := lstTable.Values[pChildData.Name];
-            lstTable.Values[pChildData.Name] := '';
-            pNodeToDel := nil;
-          end
-          else
-            pNodeToDel := pChildNode;
+            LuaStrTableToStringList(sValue, lstTable);
+            pData.Value := sValue;
+            pData.ToKeep := True;
 
 
-          // Get next sibling child
-          pChildNode := frmWatch.vstWatch.GetNextSibling(pChildNode);
+            // Get first child
+            pChildNode := frmWatch.vstWatch.GetFirstChild(pNode);
 
 
-          // Delete the node if required
-          if Assigned(pNodeToDel) then
-          begin
-            frmWatch.vstWatch.DeleteNode(pNodeToDel);
-            pNodeToDel := nil;
-          end;
-        end;
+            while pChildNode <> nil do
+            begin
+              // Get the current data of the current child
+              pChildData := frmWatch.vstWatch.GetNodeData(pChildNode);
 
 
-        // Assign child nodes
-        for x := 0 to lstTable.Count - 1 do
-        begin
-          if lstTable.Values[lstTable.Names[x]] <> '' then
+              if ((lstTable.Values[pChildData.Name] <> '') and (lstTable.Values[pChildData.Name] <> 'nil')) then
+              begin
+                pChildData.ToKeep := True;
+                pChildData.Value := lstTable.Values[pChildData.Name];
+                lstTable.Values[pChildData.Name] := '';
+                pNodeToDel := nil;
+              end
+              else
+                pNodeToDel := pChildNode;
+
+              // Get next sibling child
+              pChildNode := frmWatch.vstWatch.GetNextSibling(pChildNode);
+
+              // Delete the node if required
+              if Assigned(pNodeToDel) then
+              begin
+                frmWatch.vstWatch.DeleteNode(pNodeToDel);
+                pNodeToDel := nil;
+              end;
+            end;
+
+            // Assign child nodes
+            for x := 0 to lstTable.Count - 1 do
+            begin
+              if lstTable.Values[lstTable.Names[x]] <> '' then
+              begin
+                pNewData := frmWatch.vstWatch.GetNodeData(frmWatch.vstWatch.AddChild(pNode));
+                pNewData.ToKeep := True;
+                pNewData.Name := lstTable.Names[x];
+                pNewData.Value := lstTable.Values[pNewData.Name];
+              end;
+            end;
+          end
+          else
           begin
           begin
-            pNewData := frmWatch.vstWatch.GetNodeData(frmWatch.vstWatch.AddChild(pNode));
-            pNewData.Name := lstTable.Names[x];
-            pNewData.Value := lstTable.Values[pNewData.Name];
+            pData.ToKeep := True;
+            pData.Value := sValue;
           end;
           end;
+        end
+        else
+        begin
+          pData.ToKeep := True;
+          pData.Value := sValue;
         end;
         end;
-      end
-      else
-        pData.Value := sValue;
+      end;
     end
     end
     else
     else
       pNodeToDel := pNode;
       pNodeToDel := pNode;
 
 
+    // If value is nil and child count is different than zero, it means the user
+    // just changed the name of the watch, wich was matching a table before, into
+    // something wich matches nothing
+   { if not Assigned(pNodeToDel) and Assigned(pNode) then
+    begin
+      if ((pNode.ChildCount <> 0) and (sValue = 'nil')) then
+      begin
+        frmWatch.vstWatch.DeleteChildren(pNode);
+        if pNode.Parent <> frmWatch.vstWatch.RootNode then
+          frmWatch.vstWatch.DeleteNode(pNode);
+      end;
+    end;}
+
+    //pNode := frmWatch.vstWatch.GetNextSibling(pNode);
     pNode := frmWatch.vstWatch.GetNext(pNode);
     pNode := frmWatch.vstWatch.GetNext(pNode);
 
 
     // Delete the node if required
     // Delete the node if required
@@ -4711,6 +4939,7 @@ begin
 
 
   // Free stuff and call virtual treeview to repaint
   // Free stuff and call virtual treeview to repaint
   lstTable.Free;
   lstTable.Free;
+  CleanTree(frmWatch.vstWatch);
   frmWatch.vstWatch.Refresh;
   frmWatch.vstWatch.Refresh;
 end;
 end;
 
 
@@ -4814,8 +5043,18 @@ var
   pData: PWatchNodeData;
   pData: PWatchNodeData;
   sVarName: String;
   sVarName: String;
 begin
 begin
+  // Determine default proposed value
   sVarName := 'VarName';
   sVarName := 'VarName';
 
 
+  if Assigned(jvUnitBar.SelectedTab) then
+  begin
+    if Assigned(jvUnitBar.SelectedTab.Data) then
+    begin
+      if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText <> '' then
+        sVarName := TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText;
+    end;
+  end;
+
   if InputQuery('Add Watch', 'Enter the name of the variable to watch:', sVarName) then
   if InputQuery('Add Watch', 'Enter the name of the variable to watch:', sVarName) then
   begin
   begin
     frmWatch.vstWatch.RootNodeCount := frmWatch.vstWatch.RootNodeCount + 1;
     frmWatch.vstWatch.RootNodeCount := frmWatch.vstWatch.RootNodeCount + 1;
@@ -4853,6 +5092,30 @@ begin
   DoToggleBreakpointExecute;
   DoToggleBreakpointExecute;
 end;
 end;
 
 
+function TfrmMain.DoEnableDisableBreakpoint(): Boolean;
+var
+  pLuaUnit: TLuaUnit;
+begin
+  Result := False;
+
+  if Assigned(jvUnitBar.SelectedTab) then
+  begin
+    if Assigned(jvUnitBar.SelectedTab.Data) then
+    begin
+      Result := True;
+      pLuaUnit := TLuaUnit(jvUnitBar.SelectedTab.Data);
+      pLuaUnit.pDebugInfos.EnableDisableBreakpointAtLine(pLuaUnit.synUnit.CaretY);
+      pLuaUnit.synUnit.Refresh;
+      frmBreakpoints.RefreshBreakpointList;
+    end;
+  end;
+end;
+
+procedure TfrmMain.actEnableDisableBreakpointExecute(Sender: TObject);
+begin
+  DoEnableDisableBreakpoint;
+end;
+
 procedure TfrmMain.stbMainDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
 procedure TfrmMain.stbMainDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
 var
 var
   InflatedRect: TRect;
   InflatedRect: TRect;
@@ -5115,16 +5378,21 @@ end;
 procedure TfrmMain.synEditGutterClick(Sender: TObject; Button: TMouseButton; X, Y, Line: Integer; Mark: TSynEditMark);
 procedure TfrmMain.synEditGutterClick(Sender: TObject; Button: TMouseButton; X, Y, Line: Integer; Mark: TSynEditMark);
 var
 var
   iCurrentLine: Integer;
   iCurrentLine: Integer;
+  pLuaUnit: TLuaUnit;
 begin
 begin
-  iCurrentLine := TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.RowToLine(Line);
+  if X <= 14 then
+  begin
+    pLuaUnit := TLuaUnit(jvUnitBar.SelectedTab.Data);
+    iCurrentLine := pLuaUnit.synUnit.RowToLine(Line);
 
 
-  if not TLuaUnit(jvUnitBar.SelectedTab.Data).pDebugInfos.IsBreakPointLine(iCurrentLine) then
-    TLuaUnit(jvUnitBar.SelectedTab.Data).pDebugInfos.AddBreakpointAtLine(iCurrentLine)
-  else
-    TLuaUnit(jvUnitBar.SelectedTab.Data).pDebugInfos.RemoveBreakpointAtLine(iCurrentLine);
+    if not pLuaUnit.pDebugInfos.IsBreakPointLine(iCurrentLine) then
+      pLuaUnit.pDebugInfos.AddBreakpointAtLine(iCurrentLine)
+    else
+      pLuaUnit.pDebugInfos.RemoveBreakpointAtLine(iCurrentLine);
 
 
-  TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.Refresh;
-  frmBreakpoints.RefreshBreakpointList;
+    pLuaUnit.synUnit.Refresh;
+    frmBreakpoints.RefreshBreakpointList;
+  end;
 end;
 end;
 
 
 function TfrmMain.DoPauseExecute(): Boolean;
 function TfrmMain.DoPauseExecute(): Boolean;
@@ -6301,7 +6569,7 @@ begin
   Result := False;
   Result := False;
   pLuaUnit := TLuaUnit(jvUnitBar.SelectedTab.Data);
   pLuaUnit := TLuaUnit(jvUnitBar.SelectedTab.Data);
 
 
-  for x := pLuaUnit.synUnit.BlockBegin.Line to pLuaUnit.synUnit.BlockEnd.Line - 1 do
+  for x := pLuaUnit.synUnit.BlockBegin.Line - 1 to pLuaUnit.synUnit.BlockEnd.Line - 1 do
   begin
   begin
     if Copy(pLuaUnit.synUnit.Lines.Strings[x], 1, 2) <> '--' then
     if Copy(pLuaUnit.synUnit.Lines.Strings[x], 1, 2) <> '--' then
     begin
     begin
@@ -6613,6 +6881,14 @@ begin
     tlbEdit.Show;
     tlbEdit.Show;
 end;
 end;
 
 
+procedure TfrmMain.Find1Click(Sender: TObject);
+begin
+  if tlbFind.Visible then
+    tlbFind.Hide
+  else
+    tlbFind.Show;
+end;
+
 procedure TfrmMain.Run3Click(Sender: TObject);
 procedure TfrmMain.Run3Click(Sender: TObject);
 begin
 begin
   if tlbRun.Visible then
   if tlbRun.Visible then
@@ -7301,7 +7577,7 @@ begin
         pLuaUnit := AddFileInProject(WordAtCursor, False, LuaSingleUnits);
         pLuaUnit := AddFileInProject(WordAtCursor, False, LuaSingleUnits);
         pLuaUnit.IsLoaded := True;
         pLuaUnit.IsLoaded := True;
         AddFileInTab(pLuaUnit);
         AddFileInTab(pLuaUnit);
-        MonitorFile(pLuaUnit.sUnitPath);
+        MonitorFileToRecent(pLuaUnit.sUnitPath);
       end
       end
       else
       else
       begin
       begin
@@ -7363,12 +7639,21 @@ procedure TfrmMain.ppmEditorPopup(Sender: TObject);
 var
 var
   sTextToShow, sOriginalName: String;
   sTextToShow, sOriginalName: String;
 begin
 begin
+  sTextToShow := '';
+  
   if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
   if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
   begin
   begin
     OpenFileatCursor1.Enabled := True;
     OpenFileatCursor1.Enabled := True;
     sOriginalName := StringReplace(TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText, '\\', '\', [rfIgnoreCase, rfReplaceAll]);
     sOriginalName := StringReplace(TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText, '\\', '\', [rfIgnoreCase, rfReplaceAll]);
-    sTextToShow := MinimizeName(sOriginalName, stbMain.Canvas, 150);
+
+    if FileExists(sOriginalName) then
+      sTextToShow := MinimizeName(sOriginalName, stbMain.Canvas, 150);
+  end;
+
+  if sTextToShow <> '' then
+  begin
     OpenFileatCursor1.Caption := 'Open Document "'+sTextToShow+'"';
     OpenFileatCursor1.Caption := 'Open Document "'+sTextToShow+'"';
+    OpenFileatCursor1.Enabled := True;
   end
   end
   else
   else
   begin
   begin
@@ -7559,14 +7844,14 @@ begin
         begin
         begin
           pLuaUnit := frmMain.AddFileInProject(FileName, False, LuaSingleUnits);
           pLuaUnit := frmMain.AddFileInProject(FileName, False, LuaSingleUnits);
           pLuaUnit.IsLoaded := True;
           pLuaUnit.IsLoaded := True;
-          frmMain.AddFileInTab(pLuaUnit);
-          frmMain.MonitorFile(FileName);
+          AddFileInTab(pLuaUnit);
+          MonitorFileToRecent(FileName);
         end;
         end;
       end
       end
       else if ExtractFileExt(FileName) = '.lpr' then
       else if ExtractFileExt(FileName) = '.lpr' then
       begin
       begin
         // Add new project to the tree
         // Add new project to the tree
-        if not frmMain.IsProjectOpened(FileName) then
+        if not IsProjectOpened(FileName) then
         begin
         begin
           pNewPrj := TLuaProject.Create(FileName);
           pNewPrj := TLuaProject.Create(FileName);
           pNewPrj.GetProjectFromDisk(FileName);
           pNewPrj.GetProjectFromDisk(FileName);
@@ -7577,7 +7862,7 @@ begin
 
 
   // Rebuild the project tree and initialize stuff
   // Rebuild the project tree and initialize stuff
   frmProjectTree.BuildProjectTree;
   frmProjectTree.BuildProjectTree;
-  frmMain.CheckButtons;
+  CheckButtons;
 end;
 end;
 
 
 procedure TfrmMain.jvUnitBarTabClosed(Sender: TObject; Item: TJvTabBarItem);
 procedure TfrmMain.jvUnitBarTabClosed(Sender: TObject; Item: TJvTabBarItem);
@@ -7609,4 +7894,9 @@ begin
   end;
   end;
 end;
 end;
 
 
+procedure TfrmMain.ppmToolBarPopup(Sender: TObject);
+begin
+  DoMainMenuViewExecute;
+end;
+
 end.
 end.

+ 0 - 2
LuaEdit/ProjectTree.dfm

@@ -6,8 +6,6 @@ object frmProjectTree: TfrmProjectTree
   BorderStyle = bsSizeToolWin
   BorderStyle = bsSizeToolWin
   Caption = 'Project Tree'
   Caption = 'Project Tree'
   Color = clBtnFace
   Color = clBtnFace
-  Constraints.MinHeight = 200
-  Constraints.MinWidth = 250
   DockSite = True
   DockSite = True
   DragKind = dkDock
   DragKind = dkDock
   DragMode = dmAutomatic
   DragMode = dmAutomatic

+ 34 - 41
LuaEdit/ProjectTree.pas

@@ -15,6 +15,7 @@ type
     pLuaPrj: TLuaProject;
     pLuaPrj: TLuaProject;
     ActiveProject: Boolean;
     ActiveProject: Boolean;
     ToKeep: Boolean;
     ToKeep: Boolean;
+    Deleting: Boolean;
   end;
   end;
 
 
   TfrmProjectTree = class(TForm)
   TfrmProjectTree = class(TForm)
@@ -110,7 +111,7 @@ begin
 
 
     if sProjectName <> '' then
     if sProjectName <> '' then
     begin
     begin
-      if Assigned(pData.pLuaUnit) then
+      if (Assigned(pData.pLuaUnit) and (not pData.Deleting)) then
       begin
       begin
         if ((pData.pLuaUnit.pPrjOwner.sPrjName = sProjectName) or (sProjectName = '[@@SingleUnits@@]')) then
         if ((pData.pLuaUnit.pPrjOwner.sPrjName = sProjectName) or (sProjectName = '[@@SingleUnits@@]')) then
         begin
         begin
@@ -141,7 +142,7 @@ end;
 procedure TfrmProjectTree.BuildProjectTree(HandleNotifier: Boolean);
 procedure TfrmProjectTree.BuildProjectTree(HandleNotifier: Boolean);
 var
 var
   pTempPrj: TLuaProject;
   pTempPrj: TLuaProject;
-  pNode, pNewPrjNode, pNewNode, pSingleUnitLastNode: PVirtualNode;
+  pPrjNode, pUnitNode, pSingleUnitLastNode: PVirtualNode;
   pData: PProjectTreeData;
   pData: PProjectTreeData;
   x, y: Integer;
   x, y: Integer;
 
 
@@ -186,7 +187,8 @@ var
   
   
 begin
 begin
   // Initialize stuff
   // Initialize stuff
-  pNewNode := nil;
+  pPrjNode := nil;
+  pUnitNode := nil;
   pSingleUnitLastNode := nil;
   pSingleUnitLastNode := nil;
 
 
   // If the changes notifier is handled, we stop it while building the tree
   // If the changes notifier is handled, we stop it while building the tree
@@ -202,58 +204,65 @@ begin
   for x := 0 to LuaProjects.Count - 1 do
   for x := 0 to LuaProjects.Count - 1 do
   begin
   begin
     pTempPrj := TLuaProject(LuaProjects.Items[x]);
     pTempPrj := TLuaProject(LuaProjects.Items[x]);
-    pNode := GetNodeInTree(pTempPrj.sPrjName, '');
+    pPrjNode := GetNodeInTree(pTempPrj.sPrjName, '');
 
 
-    if not Assigned(pNode) then
+    if not Assigned(pPrjNode) then
     begin
     begin
       if pTempPrj.sPrjName <> '[@@SingleUnits@@]' then
       if pTempPrj.sPrjName <> '[@@SingleUnits@@]' then
       begin
       begin
         // Create the node
         // Create the node
-        pNewPrjNode := vstProjectTree.AddChild(vstProjectTree.RootNode);
-        pData := vstProjectTree.GetNodeData(pNewPrjNode);
+        pPrjNode := vstProjectTree.AddChild(vstProjectTree.RootNode);
+        pData := vstProjectTree.GetNodeData(pPrjNode);
         pData.pLuaUnit := nil;
         pData.pLuaUnit := nil;
         pData.pLuaPrj := pTempPrj;
         pData.pLuaPrj := pTempPrj;
         pData.ActiveProject := (pTempPrj = ActiveProject);
         pData.ActiveProject := (pTempPrj = ActiveProject);
         pData.ToKeep := True;
         pData.ToKeep := True;
+        pData.Deleting := False;
 
 
         // Adding project root to change notifier...
         // Adding project root to change notifier...
         if ((not pTempPrj.IsNew) and HandleNotifier) then
         if ((not pTempPrj.IsNew) and HandleNotifier) then
           frmMain.AddToNotifier(ExtractFileDir(pTempPrj.sPrjPath));
           frmMain.AddToNotifier(ExtractFileDir(pTempPrj.sPrjPath));
       end
       end
       else
       else
-        pNewPrjNode := pSingleUnitLastNode;
+          pPrjNode := pSingleUnitLastNode;
     end
     end
     else
     else
     begin
     begin
       // Update the node's data
       // Update the node's data
-      pData := vstProjectTree.GetNodeData(pNode);
+      pData := vstProjectTree.GetNodeData(pPrjNode);
       pData.pLuaUnit := nil;
       pData.pLuaUnit := nil;
       pData.pLuaPrj := pTempPrj;
       pData.pLuaPrj := pTempPrj;
       pData.ActiveProject := (pTempPrj = ActiveProject);
       pData.ActiveProject := (pTempPrj = ActiveProject);
       pData.ToKeep := True;
       pData.ToKeep := True;
+      pData.Deleting := False;
     end;
     end;
 
 
     for y := 0 to pTempPrj.lstUnits.Count - 1 do
     for y := 0 to pTempPrj.lstUnits.Count - 1 do
     begin
     begin
-      pNode := GetNodeInTree(TLuaUnit(pTempPrj.lstUnits.Items[y]).sName, pTempPrj.sPrjName);
+      pUnitNode := GetNodeInTree(TLuaUnit(pTempPrj.lstUnits.Items[y]).sName, pTempPrj.sPrjName);
 
 
-      if not Assigned(pNode) then
+      if not Assigned(pUnitNode) then
       begin
       begin
         // Adding single unit (projectless) to the tree
         // Adding single unit (projectless) to the tree
         if pTempPrj.sPrjName = '[@@SingleUnits@@]' then
         if pTempPrj.sPrjName = '[@@SingleUnits@@]' then
-          pNewNode := vstProjectTree.InsertNode(pNewPrjNode, amInsertAfter)
+        begin
+          if not Assigned(pPrjNode) then
+            pUnitNode := vstProjectTree.InsertNode(vstProjectTree.RootNode, amInsertBefore)
+          else
+            pUnitNode := vstProjectTree.InsertNode(pPrjNode, amInsertAfter);
+          // Update last single unit node
+          pSingleUnitLastNode := pUnitNode;
+        end
         else
         else
-          pNewNode := vstProjectTree.AddChild(pNewPrjNode);
-
-        // Update last single unit node
-        pSingleUnitLastNode := pNewNode;
+          pUnitNode := vstProjectTree.AddChild(pPrjNode);
 
 
         // Create the node
         // Create the node
-        pData := vstProjectTree.GetNodeData(pNewNode);
+        pData := vstProjectTree.GetNodeData(pUnitNode);
         pData.pLuaUnit := TLuaUnit(pTempPrj.lstUnits.Items[y]);
         pData.pLuaUnit := TLuaUnit(pTempPrj.lstUnits.Items[y]);
         pData.pLuaPrj := nil;
         pData.pLuaPrj := nil;
         pData.ActiveProject := False;
         pData.ActiveProject := False;
         pData.ToKeep := True;
         pData.ToKeep := True;
+        pData.Deleting := False;
 
 
         // Adding unit root to change notifier...
         // Adding unit root to change notifier...
         if ((not TLuaUnit(pTempPrj.lstUnits.Items[y]).IsNew) and HandleNotifier) then
         if ((not TLuaUnit(pTempPrj.lstUnits.Items[y]).IsNew) and HandleNotifier) then
@@ -262,11 +271,12 @@ begin
       else
       else
       begin
       begin
         // Update the node's data
         // Update the node's data
-        pData := vstProjectTree.GetNodeData(pNode);
+        pData := vstProjectTree.GetNodeData(pUnitNode);
         pData.pLuaUnit := TLuaUnit(pTempPrj.lstUnits.Items[y]);
         pData.pLuaUnit := TLuaUnit(pTempPrj.lstUnits.Items[y]);
         pData.pLuaPrj := nil;
         pData.pLuaPrj := nil;
         pData.ActiveProject := False;
         pData.ActiveProject := False;
         pData.ToKeep := True;
         pData.ToKeep := True;
+        pData.Deleting := False;
       end;
       end;
     end;
     end;
   end;
   end;
@@ -381,6 +391,7 @@ begin
         LuaOpenedUnits.Remove(pLuaUnit);
         LuaOpenedUnits.Remove(pLuaUnit);
       end;
       end;
 
 
+      pData.Deleting := True;
       pLuaUnit.pPrjOwner.lstUnits.Remove(pLuaUnit);
       pLuaUnit.pPrjOwner.lstUnits.Remove(pLuaUnit);
       pLuaUnit.Free;
       pLuaUnit.Free;
     end;
     end;
@@ -409,29 +420,8 @@ begin
 end;
 end;
 
 
 procedure TfrmProjectTree.ppmProjectTreePopup(Sender: TObject);
 procedure TfrmProjectTree.ppmProjectTreePopup(Sender: TObject);
-var
-  pNode: PVirtualNode;
-  pData: PProjectTreeData;
 begin
 begin
-  // set all menus status initially to false
-  UnloadFileProject1.Enabled := False;
-  AddUnittoProject1.Enabled := False;
-  RemoveUnitFromProject1.Enabled := False;
-  Options1.Enabled := False;
-  pNode := vstProjectTree.GetFirstSelected;
-
-  // Only if a menu is selected
-  if Assigned(pNode) then
-  begin
-    // Retreive data from selected node
-    pData := vstProjectTree.GetNodeData(pNode);
-
-    // setting menu status
-    AddUnitToProject1.Enabled := ((pData.pLuaPrj = ActiveProject) and Assigned(ActiveProject));
-    RemoveUnitFromProject1.Enabled := ((pData.pLuaPrj = ActiveProject) and Assigned(ActiveProject));
-    Options1.Enabled := ((pData.pLuaPrj = ActiveProject) and Assigned(ActiveProject));
-    UnloadFileProject1.Enabled := (((Assigned(pData.pLuaUnit)) and (pNode.Parent = vstProjectTree.RootNode)) or (Assigned(pData.pLuaPrj)));
-  end;
+  frmMain.DoMainMenuProjectExecute;
 end;
 end;
 
 
 procedure TfrmProjectTree.vstProjectTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
 procedure TfrmProjectTree.vstProjectTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
@@ -446,7 +436,7 @@ begin
       begin
       begin
         pData := Sender.GetNodeData(Node);
         pData := Sender.GetNodeData(Node);
         pData.ToKeep := True;
         pData.ToKeep := True;
-        
+
         if Assigned(pData.pLuaPrj) then
         if Assigned(pData.pLuaPrj) then
           CellText := pData.pLuaPrj.sPrjName
           CellText := pData.pLuaPrj.sPrjName
         else
         else
@@ -485,7 +475,10 @@ begin
   begin
   begin
     // Set disabled color for non-loaded units
     // Set disabled color for non-loaded units
     if not pData.pLuaUnit.IsLoaded then
     if not pData.pLuaUnit.IsLoaded then
+    begin
+      TargetCanvas.Font.Color := clInactiveCaption;
       TargetCanvas.Pen.Color := clInactiveCaption;
       TargetCanvas.Pen.Color := clInactiveCaption;
+    end;
   end;
   end;
 end;
 end;
 
 

+ 0 - 1
LuaEdit/SearchPath.pas

@@ -185,7 +185,6 @@ end;
 
 
 procedure TfrmSearchPath.btnOkClick(Sender: TObject);
 procedure TfrmSearchPath.btnOkClick(Sender: TObject);
 begin
 begin
-  btnAdd.Click;
   ModalResult := mrOk;
   ModalResult := mrOk;
 end;
 end;
 
 

+ 81 - 52
LuaEdit/Watch.dfm

@@ -19,6 +19,7 @@ object frmWatch: TfrmWatch
   FormStyle = fsStayOnTop
   FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poOwnerFormCenter
   Position = poOwnerFormCenter
+  OnCreate = FormCreate
   PixelsPerInch = 96
   PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object memoSwap: TMemo
   object memoSwap: TMemo
@@ -47,6 +48,7 @@ object frmWatch: TfrmWatch
     Header.Options = [hoColumnResize, hoDrag, hoVisible]
     Header.Options = [hoColumnResize, hoDrag, hoVisible]
     Header.Style = hsFlatButtons
     Header.Style = hsFlatButtons
     LineStyle = lsSolid
     LineStyle = lsSolid
+    PopupMenu = ppmWatch
     TabOrder = 1
     TabOrder = 1
     TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoSpanColumns, toAutoTristateTracking, toAutoDeleteMovedNodes]
     TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoSpanColumns, toAutoTristateTracking, toAutoDeleteMovedNodes]
     TreeOptions.MiscOptions = [toEditable, toFullRepaintOnResize, toInitOnSave, toReportMode, toToggleOnDblClick, toWheelPanning]
     TreeOptions.MiscOptions = [toEditable, toFullRepaintOnResize, toInitOnSave, toReportMode, toToggleOnDblClick, toWheelPanning]
@@ -61,6 +63,7 @@ object frmWatch: TfrmWatch
     OnEditing = vstWatchEditing
     OnEditing = vstWatchEditing
     OnGetText = vstWatchGetText
     OnGetText = vstWatchGetText
     OnGetNodeDataSize = vstWatchGetNodeDataSize
     OnGetNodeDataSize = vstWatchGetNodeDataSize
+    OnKeyDown = vstWatchKeyDown
     Columns = <
     Columns = <
       item
       item
         Position = 0
         Position = 0
@@ -92,16 +95,24 @@ object frmWatch: TfrmWatch
       ImageIndex = 0
       ImageIndex = 0
       OnClick = tbtnAddWatchClick
       OnClick = tbtnAddWatchClick
     end
     end
-    object ToolButton1: TToolButton
+    object tbtnDelete: TToolButton
       Left = 23
       Left = 23
       Top = 0
       Top = 0
+      Hint = 'Delete Selected Watch Item'
+      Caption = 'tbtnDelete'
+      ImageIndex = 2
+      OnClick = tbtnDeleteClick
+    end
+    object ToolButton1: TToolButton
+      Left = 46
+      Top = 0
       Width = 8
       Width = 8
       Caption = 'ToolButton1'
       Caption = 'ToolButton1'
       ImageIndex = 1
       ImageIndex = 1
       Style = tbsSeparator
       Style = tbsSeparator
     end
     end
     object tbtnRefreshWatch: TToolButton
     object tbtnRefreshWatch: TToolButton
-      Left = 31
+      Left = 54
       Top = 0
       Top = 0
       Hint = 'Refresh Watch List'
       Hint = 'Refresh Watch List'
       ImageIndex = 1
       ImageIndex = 1
@@ -118,9 +129,27 @@ object frmWatch: TfrmWatch
     OnKeyDown = FEditKeyDown
     OnKeyDown = FEditKeyDown
   end
   end
   object ppmWatch: TPopupMenu
   object ppmWatch: TPopupMenu
-    Images = frmMain.imlActions
+    Images = imlWatch
     Left = 48
     Left = 48
     Top = 48
     Top = 48
+    object AddWatch1: TMenuItem
+      Caption = 'Add Watch...'
+      ImageIndex = 0
+      OnClick = AddWatch1Click
+    end
+    object DeleteSelectedItem1: TMenuItem
+      Caption = 'Delete Selected Item'
+      ImageIndex = 2
+      OnClick = DeleteSelectedItem1Click
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object Refresh1: TMenuItem
+      Caption = 'Refresh'
+      ImageIndex = 1
+      OnClick = Refresh1Click
+    end
   end
   end
   object JvDockClient1: TJvDockClient
   object JvDockClient1: TJvDockClient
     LRDockWidth = 100
     LRDockWidth = 100
@@ -136,135 +165,135 @@ object frmWatch: TfrmWatch
     Left = 16
     Left = 16
     Top = 48
     Top = 48
     Bitmap = {
     Bitmap = {
-      494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000001000000001002000000000000010
       0000000000003600000028000000400000001000000001002000000000000010
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF000000000000000000000000008484840084848400000000000000
       FF00FF00FF000000000000000000000000008484840084848400000000000000
       00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF008484840000000000FF00
       000000000000000000000000000000000000FF00FF008484840000000000FF00
       FF0000000000C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6
       FF0000000000C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6
       C600C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       C600C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000008000FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
       000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
       FF0000000000FFFFFF00FFFFFF00C6C6C6000000000000000000FFFFFF00FFFF
       FF0000000000FFFFFF00FFFFFF00C6C6C6000000000000000000FFFFFF00FFFF
       FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
       000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
       FF0000000000C6C6C600FFFFFF00C6C6C6000000000000000000C6C6C600FFFF
       FF0000000000C6C6C600FFFFFF00C6C6C6000000000000000000C6C6C600FFFF
       FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
       FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF0000008000FFFFFF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF0000000000FF00FF000000
       000000000000000000000000000000000000FF00FF0000000000FF00FF000000
       0000848484000000000000000000000000000000000084848400000000000000
       0000848484000000000000000000000000000000000084848400000000000000
       00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF000084
       FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF000084
-      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0000008000FFFFFF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF0084848400000000008484
       000000000000000000000000000000000000FF00FF0084848400000000008484
       8400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
       8400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
       840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000084
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000084
-      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00000080000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF000000
+      800000008000FFFFFF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084
       FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084
-      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00000080000000800000008000FFFFFF00FF00FF00000080000000
+      8000FFFFFF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF0000840000FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
       FF00FFFFFF0000840000FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF000000800000008000000080000000800000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF0000840000FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
       FF00FFFFFF0000840000FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00000080000000800000008000FFFFFF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
       FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF000000800000008000000080000000800000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00000080000000800000008000FFFFFF00FF00FF0000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
       0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
       0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000000
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000000
-      0000000000000000000000000000FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF000000
+      8000000080000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF000000
+      800000008000FFFFFF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
       0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
       0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      0000FFFFFF0000000000FF00FF00FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00000080000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF000000800000008000FFFFFF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000080000000
+      8000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000800000008000FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
       000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000424D3E000000000000003E000000
       000000000000000000000000000000000000424D3E000000000000003E000000
       2800000040000000100000000100010000000000800000000000000000000000
       2800000040000000100000000100010000000000800000000000000000000000

+ 64 - 14
LuaEdit/Watch.pas

@@ -18,6 +18,7 @@ type
     Value: String;
     Value: String;
     Name: String;
     Name: String;
     NestedTableCount: Integer;
     NestedTableCount: Integer;
+    ToKeep: Boolean;
   end;
   end;
 
 
   // Our own edit link to implement several different node editors.
   // Our own edit link to implement several different node editors.
@@ -50,6 +51,11 @@ type
     tbtnRefreshWatch: TToolButton;
     tbtnRefreshWatch: TToolButton;
     imlWatch: TImageList;
     imlWatch: TImageList;
     FEdit: TEdit;
     FEdit: TEdit;
+    tbtnDelete: TToolButton;
+    DeleteSelectedItem1: TMenuItem;
+    N1: TMenuItem;
+    Refresh1: TMenuItem;
+    AddWatch1: TMenuItem;
     procedure vstWatchGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
     procedure vstWatchGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
     procedure vstWatchEditing(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean);
     procedure vstWatchEditing(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean);
     procedure vstWatchCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
     procedure vstWatchCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
@@ -62,6 +68,13 @@ type
     procedure vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
     procedure vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
     procedure vstWatchChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
     procedure vstWatchChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
     procedure FEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure FEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure vstWatchKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure DeleteSelected();
+    procedure tbtnDeleteClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure AddWatch1Click(Sender: TObject);
+    procedure Refresh1Click(Sender: TObject);
+    procedure DeleteSelectedItem1Click(Sender: TObject);
   private
   private
     { Private declarations }
     { Private declarations }
     procedure WMStartEditing(var Message: TMessage); message WM_STARTEDITING;
     procedure WMStartEditing(var Message: TMessage); message WM_STARTEDITING;
@@ -124,6 +137,8 @@ begin
   end;
   end;
 
 
   frmWatch.FEdit.Hide;
   frmWatch.FEdit.Hide;
+  frmWatch.tbtnDelete.Enabled := True;
+  frmWatch.DeleteSelectedItem1.Enabled := True;
   FTree.SetFocus;
   FTree.SetFocus;
 end;
 end;
 
 
@@ -152,6 +167,9 @@ begin
   FColumn := Column;
   FColumn := Column;
     
     
   Data := FTree.GetNodeData(Node);
   Data := FTree.GetNodeData(Node);
+  frmWatch.tbtnDelete.Enabled := False;
+  frmWatch.DeleteSelectedItem1.Enabled := False;
+
   with frmWatch.FEdit do
   with frmWatch.FEdit do
   begin
   begin
     Visible := False;
     Visible := False;
@@ -271,21 +289,8 @@ begin
 end;
 end;
 
 
 procedure TfrmWatch.tbtnAddWatchClick(Sender: TObject);
 procedure TfrmWatch.tbtnAddWatchClick(Sender: TObject);
-var
-  pNode: PVirtualNode;
-  pData: PWatchNodeData;
-  sVarName: String;
 begin
 begin
-  sVarName := 'VarName';
-
-  if InputQuery('Add Watch', 'Enter the name of the variable to watch:', sVarName) then
-  begin
-    vstWatch.RootNodeCount := vstWatch.RootNodeCount + 1;
-    pNode := vstWatch.GetLast;
-    pData := vstWatch.GetNodeData(pNode);
-    pData.Name := sVarName;
-    frmMain.PrintWatch(frmMain.LuaState);
-  end;
+  frmMain.DoAddWatchExecute;
 end;
 end;
 
 
 procedure TfrmWatch.vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
 procedure TfrmWatch.vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
@@ -309,6 +314,9 @@ procedure TfrmWatch.vstWatchChange(Sender: TBaseVirtualTree; Node: PVirtualNode)
 begin
 begin
   with Sender do
   with Sender do
   begin
   begin
+    tbtnDelete.Enabled := Assigned(GetFirstSelected());
+    DeleteSelectedItem1.Enabled := Assigned(GetFirstSelected());
+
     // Start immediate editing as soon as another node gets focused.
     // Start immediate editing as soon as another node gets focused.
     if Assigned(Node) and (Node.Parent <> RootNode) then
     if Assigned(Node) and (Node.Parent <> RootNode) then
     begin
     begin
@@ -358,4 +366,46 @@ begin
   end;
   end;
 end;
 end;
 
 
+procedure TfrmWatch.vstWatchKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  if not vstWatch.IsEditing then
+  begin
+    // Seek delete key for node deletion
+    if Key = VK_DELETE then
+      DeleteSelected;
+  end;
+end;
+
+procedure TfrmWatch.DeleteSelected();
+begin
+  if Assigned(vstWatch.GetFirstSelected()) then
+    vstWatch.DeleteNode(vstWatch.GetFirstSelected());
+end;
+
+procedure TfrmWatch.tbtnDeleteClick(Sender: TObject);
+begin
+  DeleteSelected;
+end;
+
+procedure TfrmWatch.FormCreate(Sender: TObject);
+begin
+  tbtnDelete.Enabled := False;
+  DeleteSelectedItem1.Enabled := False;
+end;
+
+procedure TfrmWatch.AddWatch1Click(Sender: TObject);
+begin
+  tbtnAddWatch.Click;
+end;
+
+procedure TfrmWatch.Refresh1Click(Sender: TObject);
+begin
+  tbtnRefreshWatch.Click;
+end;
+
+procedure TfrmWatch.DeleteSelectedItem1Click(Sender: TObject);
+begin
+  tbtnDelete.Click;
+end;
+
 end.
 end.