arcadia 0.13.0 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README +19 -15
- data/bin/arc +0 -0
- data/conf/LC/en-UK.LANG +1 -1
- data/conf/LC/ru-RU.LANG +272 -0
- data/conf/theme-dark.conf +3 -3
- data/ext/ae-dir-projects/ae-dir-projects.rb +5 -5
- data/ext/ae-editor/ae-editor.rb +302 -178
- data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +2 -2
- data/ext/ae-term/ae-term.rb +11 -2
- data/lib/a-commons.rb +49 -19
- data/lib/a-contracts.rb +13 -0
- data/lib/a-core.rb +139 -36
- data/lib/a-tkcommons.rb +23 -8
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ArrowButton.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/BWidget.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Button.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ButtonBox.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ComboBox.html +8 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Dialog.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DragSite.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DropSite.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DynamicHelp.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Entry.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Label.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/LabelEntry.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/LabelFrame.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ListBox.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/MainFrame.html +28 -23
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/MessageDlg.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/NoteBook.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PagesManager.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PanedWindow.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PanelFrame.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PasswdDlg.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ProgressBar.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ProgressDlg.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrollView.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrollableFrame.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrolledWindow.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SelectColor.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SelectFont.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Separator.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SpinBox.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/StatusBar.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/TitleFrame.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Tree.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Widget.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/contents.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/index.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/navtree.html +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/options.htm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/CHANGES.txt +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/ChangeLog +59 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/LICENSE.txt +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/README.txt +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/arrow.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/bitmap.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/button.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/buttonbox.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/color.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/combobox.tcl +8 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/basic.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/bwidget.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/demo.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/dnd.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/manager.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/select.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/tmpldlg.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/tree.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/x1.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dialog.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dragsite.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dropsite.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dynhelp.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/entry.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/font.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/bold.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/copy.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/cut.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/dragfile.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/dragicon.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/error.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/file.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/folder.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/hourglass.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/info.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/italic.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/minus.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/new.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/opcopy.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/open.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/openfold.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/oplink.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/opmove.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/overstrike.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/palette.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/passwd.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/paste.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/plus.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/print.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/question.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/redo.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/save.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/target.xbm +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/underline.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/undo.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/warning.gif +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/init.tcl +9 -8
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/label.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/labelentry.tcl +4 -1
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/labelframe.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/da.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/de.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/en.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/es.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/fr.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/hu.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/nl.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/no.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/pl.rc +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/listbox.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/mainframe.tcl +110 -22
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/messagedlg.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/notebook.tcl +13 -3
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/pagesmgr.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/panedw.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/panelframe.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/passwddlg.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/pkgIndex.tcl +2 -3
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/progressbar.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/progressdlg.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollframe.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollview.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollw.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/separator.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/spinbox.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/statusbar.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/tests/entry.test +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/titleframe.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/tree.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/utils.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/widget.tcl +15 -2
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/wizard.tcl +0 -0
- data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/xpm2image.tcl +90 -28
- metadata +146 -196
- data/tcl/fsdialog/de.msg +0 -30
- data/tcl/fsdialog/en.msg +0 -31
- data/tcl/fsdialog/fsdialog.tcl +0 -1783
- data/tcl/fsdialog/fsdlg-gif.tcl +0 -259
- data/tcl/fsdialog/fsdlg-png.tcl +0 -265
- data/tcl/fsdialog/sv.msg +0 -32
- data/tcl/fsdialog/tclIndex +0 -6
- data/tcl/ptwidgets-1.1.0/COPYRIGHT +0 -10
- data/tcl/ptwidgets-1.1.0/ChangeLog +0 -194
- data/tcl/ptwidgets-1.1.0/README +0 -50
- data/tcl/ptwidgets-1.1.0/common/stacktrace.tcl +0 -29
- data/tcl/ptwidgets-1.1.0/common/tokenframe.tcl +0 -200
- data/tcl/ptwidgets-1.1.0/doc/img/toggleswitch_off.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/img/toggleswitch_on.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/img/tokenentry.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/img/tokensearch_popup_example.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/img/tokensearch_popup_example2.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/img/wmarkentry.png +0 -0
- data/tcl/ptwidgets-1.1.0/doc/toggleswitch.html +0 -402
- data/tcl/ptwidgets-1.1.0/doc/tokenentry.html +0 -1366
- data/tcl/ptwidgets-1.1.0/doc/tokensearch.html +0 -1549
- data/tcl/ptwidgets-1.1.0/doc/wmarkentry.html +0 -634
- data/tcl/ptwidgets-1.1.0/library/toggleswitch.tcl +0 -432
- data/tcl/ptwidgets-1.1.0/library/tokenentry.tcl +0 -2208
- data/tcl/ptwidgets-1.1.0/library/tokensearch.tcl +0 -2488
- data/tcl/ptwidgets-1.1.0/library/wmarkentry.tcl +0 -630
- data/tcl/ptwidgets-1.1.0/pkgIndex.tcl +0 -10
- data/tcl/ptwidgets-1.1.0/test/Makefile +0 -3
- data/tcl/ptwidgets-1.1.0/test/run.tcl +0 -3
- data/tcl/ptwidgets-1.1.0/test/test.tcl +0 -89
- data/tcl/ptwidgets-1.1.0/test/toggleswitch.test +0 -562
- data/tcl/ptwidgets-1.1.0/test/tokenentry.test +0 -1023
- data/tcl/ptwidgets-1.1.0/test/tokensearch.test +0 -1023
- data/tcl/ptwidgets-1.1.0/test/wmarkentry.test +0 -1325
- data/tcl/themes/altTheme.tcl +0 -101
- data/tcl/themes/aquaTheme.tcl +0 -59
- data/tcl/themes/clamTheme.tcl +0 -140
- data/tcl/themes/classicTheme.tcl +0 -108
- data/tcl/themes/pkgIndex.tcl +0 -3
- data/tcl/themes/ttk.tcl +0 -176
- data/tcl/themes/vistaTheme.tcl +0 -224
- data/tcl/themes/winTheme.tcl +0 -80
- data/tcl/themes/xpTheme.tcl +0 -65
- data/tcl/tkfbox/folder.gif +0 -0
- data/tcl/tkfbox/textfile.gif +0 -0
- data/tcl/tkfbox/tkfbox.tcl +0 -1
- data/tcl/tkfbox/tkfbox.tcl~ +0 -1
- data/tcl/tkfbox/updir.xbm +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bdc8532019ab652c829d1ef61d005d637e224afc
|
4
|
+
data.tar.gz: 63f193144db90697d89cc854e52ed9561f64b4f2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 776ea21a8bfbf7120d77d7b98b4d51045209a722372bbf85e774b094480e1172031d5ed9e067d2691149aeb9b0c1bff5e5460be9f1d7cd5a5e66f8d218edc618
|
7
|
+
data.tar.gz: 7902c5e74ab6df805e8026d5f011f2936c1ef9e52e4f45918c051955b7ec13e6ad4f20aacefdd9ed83cac758466e61d9bd5e48704d14d731ceb3f30883fda5d3
|
data/README
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
= Arcadia Ide
|
2
|
-
version 0.13.
|
2
|
+
version 0.13.1
|
3
3
|
|
4
4
|
by Antonio Galeone
|
5
|
-
on
|
6
|
-
|
5
|
+
on Nov 3, 2013
|
7
6
|
|
8
7
|
== About
|
9
8
|
|
@@ -16,9 +15,26 @@ Some of Arcadia ide project features include:
|
|
16
15
|
* Debugging support
|
17
16
|
* Highly estensibile architecture.
|
18
17
|
|
18
|
+
== How to install
|
19
|
+
* exec on command line "gem install arcadia"
|
20
|
+
|
21
|
+
NOTE: on some linux distributions like archlinux the default tcl/tk runtime at this time is on versions >= 8.6
|
22
|
+
on the other hand ruby-tk supports fully only versions <= 8.5.x.y so to make arcadia working a choice
|
23
|
+
can be install ActiveTcl 8.5 and use ruby via rvm.
|
24
|
+
|
25
|
+
== How to run
|
26
|
+
* exec on command line "arcadia"
|
27
|
+
|
28
|
+
== Wiki
|
29
|
+
https://github.com/angal/arcadia/wiki
|
19
30
|
|
20
31
|
== News
|
21
32
|
|
33
|
+
[0.13.1]
|
34
|
+
This realease:
|
35
|
+
- added Russian translation (Thanks to Michael)
|
36
|
+
- bug fixes and various improvements
|
37
|
+
|
22
38
|
[0.13.0]
|
23
39
|
This realease:
|
24
40
|
- improves file-history introducing bookmarks management
|
@@ -59,16 +75,6 @@ Some of Arcadia ide project features include:
|
|
59
75
|
- gem win32-process (only on windows)
|
60
76
|
- gem ruby-wmi (only on windows)
|
61
77
|
|
62
|
-
== How to install
|
63
|
-
* exec on command line "gem install arcadia"
|
64
|
-
|
65
|
-
NOTE: on some linux distributions like archlinux the default tcl/tk runtime at this time is on versions >= 8.6
|
66
|
-
on the other hand ruby-tk supports fully only versions <= 8.5.x.y so to make arcadia working a choice
|
67
|
-
can be install ActiveTcl 8.5 and use ruby via rvm.
|
68
|
-
|
69
|
-
== How to run
|
70
|
-
* exec on command line "arcadia"
|
71
|
-
|
72
78
|
|
73
79
|
== Short User guide
|
74
80
|
Application layout is splitted in vertical and horizontal resizable frames.
|
@@ -156,8 +162,6 @@ I have tested arcadia with ruby 1.8, 1.9, 2.0 on
|
|
156
162
|
==Developers e general information
|
157
163
|
Released on arcadia web site (http://arcadia.rubyforge.org)
|
158
164
|
|
159
|
-
|
160
|
-
|
161
165
|
== License
|
162
166
|
Arcadia is released under the Ruby License
|
163
167
|
|
data/bin/arc
CHANGED
File without changes
|
data/conf/LC/en-UK.LANG
CHANGED
@@ -199,7 +199,7 @@ ext.file_history.button.show_as_list.hint=Show as list
|
|
199
199
|
ext.file_history.menu.search_from_here=Search from here
|
200
200
|
ext.file_history.menu.find_in_files=Find in files...
|
201
201
|
ext.file_history.menu.act_in_files=Act in files...
|
202
|
-
ext.file_history.toggle_bookmark=Toggle
|
202
|
+
ext.file_history.toggle_bookmark=Toggle bookmark
|
203
203
|
#output
|
204
204
|
ext.output.menu.output=Output
|
205
205
|
ext.output.menu.save=Save
|
data/conf/LC/ru-RU.LANG
ADDED
@@ -0,0 +1,272 @@
|
|
1
|
+
#main.menu.file
|
2
|
+
main.menu.file=Файл
|
3
|
+
main.menu.file.open=Открыть
|
4
|
+
main.menu.file.new=Новый
|
5
|
+
main.menu.file.save=Сохранить
|
6
|
+
main.menu.file.save_as=Сохранить как ...
|
7
|
+
main.menu.file.quit=Выход
|
8
|
+
#main.menu.edit
|
9
|
+
main.menu.edit=Редактировать
|
10
|
+
main.menu.edit.cut=Вырезать
|
11
|
+
main.menu.edit.copy=Копировать
|
12
|
+
main.menu.edit.paste=Вставить
|
13
|
+
main.menu.edit.undo=Отмена
|
14
|
+
main.menu.edit.redo=Вернуть
|
15
|
+
main.menu.edit.select_all=Выбрать все
|
16
|
+
main.menu.edit.invert_selection=Инфертировать выделение
|
17
|
+
main.menu.edit.uppercase=ВерхнийРегистр
|
18
|
+
main.menu.edit.lowercase=НижнийРегистр
|
19
|
+
main.menu.edit.prettify_current=Форматировать
|
20
|
+
main.menu.edit.preferences=Настройки
|
21
|
+
#main.menu.search
|
22
|
+
main.menu.search=Поиск
|
23
|
+
main.menu.search.find_replace=Найти/Заменить ...
|
24
|
+
main.menu.search.find_in_files=Найти в файлах ...
|
25
|
+
main.menu.search.ack_im_file=Ack in files...
|
26
|
+
main.menu.search.go_to_line=Перейти к линии № ...
|
27
|
+
#main.menu.view
|
28
|
+
main.menu.view=Вид
|
29
|
+
main.menu.view.show_hide_toolbar=Показать/Спрятать Тулбар
|
30
|
+
main.menu.view.close_current_tab=Закрыть текущую вкладку
|
31
|
+
#main.menu.tools
|
32
|
+
main.menu.tools=Инструменты
|
33
|
+
main.menu.tools.keys_test=Проверить-нажатия
|
34
|
+
main.menu.tools.edit_prefs=Редактировать пред-настройки
|
35
|
+
main.menu.tools.load_from_edited_prefs=Загрузить пред-настройки
|
36
|
+
#main.menu.help
|
37
|
+
main.menu.help=Помощь
|
38
|
+
main.menu.help.about=Описание
|
39
|
+
#main.button
|
40
|
+
main.button.file.new.hint=Новый файл
|
41
|
+
main.button.file.new.submenu.item=Новый $0 файл ...
|
42
|
+
main.button.file.open.hint=Открыть файл
|
43
|
+
main.button.file.save.hint=Сохранить текущий файл
|
44
|
+
main.button.file.find.hint=Поиск в текущем файле
|
45
|
+
main.button.run.curr.hint=Запустить
|
46
|
+
main.button.run.last.hint=Запустить последний
|
47
|
+
main.button.run.submenu.manage_runner.hint=Управление запуском ...
|
48
|
+
main.button.run.submenu.manage_runner.caption=Управление запуском ...
|
49
|
+
main.button.sys.exit.hint=Выход
|
50
|
+
#main.runner
|
51
|
+
main.runner.run_selected.title=Запустить выбранный как $0 файл
|
52
|
+
main.runner.compile_and_run_selected.title=Скомпилировать и Запустить $0 файл
|
53
|
+
#main.splash
|
54
|
+
main.splash.creating_extension=... создание $0
|
55
|
+
main.splash.initializing_layout=... инициализация внешнего вида
|
56
|
+
main.splash.building_extensions=... собираем расширения
|
57
|
+
main.splash.loading_common_user_controls=... загрузка пользовательских настроек
|
58
|
+
main.splash.loading_keys_binding=... загрузка соответствия нажатий
|
59
|
+
main.splash.loading_ext_user_controls=... загружено $0 пользовательских настроек
|
60
|
+
main.splash.loading_runners=... загрузка runner-ов
|
61
|
+
main.splash.initializing_extensions=... инициализация расширений
|
62
|
+
#error
|
63
|
+
main.e.during_build_event.msg=Событие во время сборки ($0) : $1 в : $2
|
64
|
+
main.e.during_build_event.title=(Arcadia) Событие во время сборки
|
65
|
+
main.e.loading_ext.msg=Загрузка "$0" ($1) : $2 в : $3
|
66
|
+
main.e.loading_ext.title=(Arcadia) Расширения '$0'
|
67
|
+
main.e.creating_ext.msg=Создано "$0" ($1) : $2 в : $3"
|
68
|
+
main.e.creating_ext.title=(Arcadia) Расширения '$0'
|
69
|
+
main.e.loading_layout.msg=Загрузка вида: ($0 : $1 в : $2)
|
70
|
+
main.e.loading_layout.title=(Arcadia) Вид
|
71
|
+
main.e.loading_runner.msg=Загружаю загрузчики : probably bud runner conf '$0' : $1
|
72
|
+
main.e.loading_runner.title=(Arcadia) Запуск $0
|
73
|
+
main.e.loading_user_control.msg=Загружаю $0 ->$1 ($2 : $3 at : $4)
|
74
|
+
main.e.loading_user_control.title=(Arcadia) $0
|
75
|
+
main.e.runtime.title=Ошибка
|
76
|
+
main.e.adding_new_menu_item.msg=Во время сборки пункт меню '$0' или '$1' не найден!
|
77
|
+
main.e.adding_new_menu_item.title=(Arcadia) $0
|
78
|
+
main.e.gem_missing.msg=Этот gem : '$0' требуется : '$1' не установлен! Установить gem?
|
79
|
+
main.e.gem_missing.title=Gem '$0' упущен!
|
80
|
+
main.e.dir_not_writable.msg=Локальная деректория "$0" должна иметь права на запись!
|
81
|
+
main.e.dir_not_writable.title=($0)
|
82
|
+
#dialog
|
83
|
+
main.d.confirm_exit.msg=Выйти?
|
84
|
+
main.d.confirm_exit.title=(Arcadia) Выход
|
85
|
+
main.d.confirm_delete_runner.msg=Вы хотите удалить запущенные $0'?
|
86
|
+
main.d.confirm_delete_runner.title=(Arcadia) Управление запусками
|
87
|
+
main.d.confirm_delete_ext_instance.msg=Действительно удалить '$0'?
|
88
|
+
main.d.confirm_delete_ext_instance.title=(Arcadia) Удалить $0
|
89
|
+
main.about.by=by $0
|
90
|
+
main.about.version=версия: $0
|
91
|
+
main.about.contributors=Разработчики: $0
|
92
|
+
main.ps.title=Arcadia проблемы
|
93
|
+
main.ps.problem=$0 проблема
|
94
|
+
main.ps.problems=$0 проблемы
|
95
|
+
main.ps.dependences_missing=Зависимости не удовлетворены
|
96
|
+
main.ps.runtime_errors=Ошибки Runtime
|
97
|
+
#extensions
|
98
|
+
#editor
|
99
|
+
ext.editor.menu.view.show_hide_line_number=Позакать/Скрыть номера строк в редакторе
|
100
|
+
ext.editor.menu.view.show_hide_tabs=Позакать/Скрыть вкладки редактора
|
101
|
+
ext.editor.button.link.hint=Link open editors with content in the Navigator
|
102
|
+
ext.editor.button.up.hint=Просмотр родителя
|
103
|
+
ext.editor.outline.rebuild_tree=.... пересобрать дерево
|
104
|
+
ext.editor.outline.menu.rebuild=Пересобрать
|
105
|
+
ext.editor.text_line.menu.title=линия $0
|
106
|
+
ext.editor.text_line.menu.toggle_breakpoint=Свернуть закладки
|
107
|
+
ext.editor.text.menu.save=Сохранить
|
108
|
+
ext.editor.text.menu.save_as=Сохранить как
|
109
|
+
ext.editor.text.menu.close=Закрыть
|
110
|
+
ext.editor.text.menu.close_others=Закрыть другие
|
111
|
+
ext.editor.text.menu.close_all=Закрыть Все
|
112
|
+
ext.editor.text.menu.copy=Копировать
|
113
|
+
ext.editor.text.menu.cut=Вырезать
|
114
|
+
ext.editor.text.menu.paste=Вставить
|
115
|
+
ext.editor.text.menu.undo=Отмена
|
116
|
+
ext.editor.text.menu.color=Цвет
|
117
|
+
ext.editor.text.menu.color_from_data=Просмотр цвета из данных
|
118
|
+
ext.editor.text.menu.font=Шрифт
|
119
|
+
ext.editor.text.menu.data_from_file=Данные из файла
|
120
|
+
ext.editor.text.menu.image_from_data=Просмотр изображения из данных
|
121
|
+
ext.editor.text.menu.data_to_file=Данные в файл изображения
|
122
|
+
ext.editor.text.menu.eval_selected=Выполнить выбранное
|
123
|
+
ext.editor.text.menu.debug=Отладка
|
124
|
+
ext.editor.text.menu.set_wrap=Перенос строк
|
125
|
+
ext.editor.text.menu.set_nowrap=Без переноса строк
|
126
|
+
ext.editor.text.menu.to_uppercase=Выбранное в верхний-регистр
|
127
|
+
ext.editor.text.menu.to_downcase=Выбранное в нижний-регистр
|
128
|
+
ext.editor.text.menu.show_tabs=Показать Вкладки
|
129
|
+
ext.editor.text.menu.hide_tabs=Спрятать Вкладки
|
130
|
+
ext.editor.text.menu.show_spaces=Показать пробелы
|
131
|
+
ext.editor.text.menu.hide_spaces=Спрятать пробелы
|
132
|
+
ext.editor.text.menu.space_to_tab=Пробел вместо Табуляции
|
133
|
+
ext.editor.text.menu.tab_to_space=Табуляция вместо пробела
|
134
|
+
ext.editor.text.menu.code=Код
|
135
|
+
ext.editor.buffer.menu.close=Закрыть
|
136
|
+
ext.editor.buffer.menu.close_others=Закрыть другие
|
137
|
+
ext.editor.buffer.menu.close_all=Закрыть Все
|
138
|
+
ext.editor.search.label.find_what=Что Найти:
|
139
|
+
ext.editor.search.label.replace_with=Заменить этим:
|
140
|
+
ext.editor.search.label.use_regexp=Использовать Регулярные выражения
|
141
|
+
ext.editor.search.label.search_back=Поиск в обратном направлении
|
142
|
+
ext.editor.search.label.ignore_case=Игнорировать Регистр
|
143
|
+
ext.editor.search.label.replace_all=Заменить Все
|
144
|
+
ext.editor.search.label.replace=Замена
|
145
|
+
ext.editor.search.label.find_next=Найти Далее
|
146
|
+
ext.editor.search.d.replace.msg=Заменить "$0" на "$1" ?
|
147
|
+
ext.editor.text.d.save_read-only.title=$0:чтение-только
|
148
|
+
ext.editor.text.d.save_read-only.msg=Файл : $0 только для чтения! -- все-равно сохранить?
|
149
|
+
ext.editor.text.d.file_changed.title=Файл изменен!
|
150
|
+
ext.editor.text.d.file_changed.msg=Файл "$0" изменен! Перезагрузить его?
|
151
|
+
ext.editor.text.d.file_deleted.title=Файл удален!
|
152
|
+
ext.editor.text.d.file_deleted.msg=Appears that file "$0" was deleted by other process! Do you want to resave it?
|
153
|
+
ext.editor.file.save_modified.msg=$0 modified. Сохранить?
|
154
|
+
ext.editor.file.save_modified.title=Подтвердить сохранение
|
155
|
+
ext.editor.file.close_modified_by_other.msg=$0 modified by other process. Continue closing?
|
156
|
+
ext.editor.file.close_modified_by_other.title=Продолжить закрытие
|
157
|
+
ext.editor.e.ctags.msg="ctags" пакет требуется для просмотра классов, без этого поддерживается только ruby!
|
158
|
+
ext.editor.e.ctags.title=Ctags сбоит!
|
159
|
+
ext.editor.e.prettify.title=(Arcadia) форматировать код
|
160
|
+
ext.editor.e.prettify.msg=Проблемы при форматировании кода $0
|
161
|
+
#dir_projects
|
162
|
+
ext.dir_projects.button.link.hint=Link open editors with content in the Navigator
|
163
|
+
ext.dir_projects.button.new.hint=Новая папка Проекта
|
164
|
+
ext.dir_projects.button.open.hint=Открыть папку как проект
|
165
|
+
ext.dir_projects.button.up.hint=Идти в родительскую папку
|
166
|
+
ext.dir_projects.button.search.hint=Искать файлы от текущей папки
|
167
|
+
ext.dir_projects.button.term.hint=Терминал в текущей папке
|
168
|
+
ext.dir_projects.menu.title=Дерево меню
|
169
|
+
ext.dir_projects.menu.new=Новый
|
170
|
+
ext.dir_projects.menu.new_dir_proj=Новая папка Проекта
|
171
|
+
ext.dir_projects.menu.new_folder=Новая папка
|
172
|
+
ext.dir_projects.menu.new_file=Новый файл
|
173
|
+
ext.dir_projects.menu.refactor=Рефактор
|
174
|
+
ext.dir_projects.menu.refactor.rename=Переименовать
|
175
|
+
ext.dir_projects.menu.refactor.move=Переместить
|
176
|
+
ext.dir_projects.menu.search=Поиск здесь
|
177
|
+
ext.dir_projects.menu.search.find=Найти в файлах...
|
178
|
+
ext.dir_projects.menu.search.act=Act in files...
|
179
|
+
ext.dir_projects.menu.term=Терминал здесь
|
180
|
+
ext.dir_projects.menu.open=Открыть папку как проект
|
181
|
+
ext.dir_projects.menu.close=Закрыть Проект
|
182
|
+
ext.dir_projects.menu.refresh=Обновить
|
183
|
+
ext.dir_projects.menu.copy=Копировать
|
184
|
+
ext.dir_projects.menu.paste=Вставить
|
185
|
+
ext.dir_projects.menu.delete=Удалить
|
186
|
+
ext.dir_projects.d.move.msg=Переместить $0 в $1?
|
187
|
+
ext.dir_projects.d.move.title=Подтвердить перемещение
|
188
|
+
ext.dir_projects.d.paste.msg=Копировать $0 в $1?
|
189
|
+
ext.dir_projects.d.paste.title=Подтвердить копирование
|
190
|
+
ext.dir_projects.d.delete.msg=Удалить $0 $1 ?
|
191
|
+
ext.dir_projects.d.delete.msg2=$0 не пуст. Уверены, что хотите удалить все под ... ?
|
192
|
+
ext.dir_projects.d.delete.title=Подтвердить удаление
|
193
|
+
ext.dir_projects.d.nosel.msg=Нет выбранных папок!
|
194
|
+
ext.dir_projects.d.nosel.title=Инфо
|
195
|
+
#file_history
|
196
|
+
ext.file_history.button.link.hint=Link open editors with content in the Navigator
|
197
|
+
ext.file_history.button.show_as_tree.hint=Показать как дерево
|
198
|
+
ext.file_history.button.show_as_list.hint=Показать как список
|
199
|
+
ext.file_history.menu.search_from_here=Искать отсюда
|
200
|
+
ext.file_history.menu.find_in_files=Найти в файлах...
|
201
|
+
ext.file_history.menu.act_in_files=Act in files...
|
202
|
+
ext.file_history.toggle_bookmark=Свернуть пометки
|
203
|
+
#output
|
204
|
+
ext.output.menu.output=Вывод
|
205
|
+
ext.output.menu.save=Сохранить
|
206
|
+
ext.output.menu.wrap=Перенос строк
|
207
|
+
ext.output.menu.nowrap=Без перенос строк
|
208
|
+
ext.output.button.clear.hint=Очистить
|
209
|
+
#breakpoints
|
210
|
+
ext.breakpoints.menu.clear_selected=Очистить выбранные точки останова
|
211
|
+
ext.breakpoints.menu.delete_selected=Удалить выбранные точки останова
|
212
|
+
ext.breakpoints.menu.delete_all=Удалить все точки останова
|
213
|
+
ext.breakpoints.menu.goto_selected=Перейти к выбранным точкам останова
|
214
|
+
#ruby-debug
|
215
|
+
ext.ruby_debug.button.step_over.hint=step over
|
216
|
+
ext.ruby_debug.button.step_into.hint=step into
|
217
|
+
ext.ruby_debug.button.step_out.hint=step out
|
218
|
+
ext.ruby_debug.button.resume.hint=resume
|
219
|
+
ext.ruby_debug.button.quit.hint=выход
|
220
|
+
ext.ruby_debug.node.local_var.caption=Локальные переменные
|
221
|
+
ext.ruby_debug.node.instance_var.caption=Переменные Экземпляра
|
222
|
+
ext.ruby_debug.node.class_var.caption=Переменные Класса
|
223
|
+
ext.ruby_debug.node.global_var.caption=Глобальные переменные
|
224
|
+
ext.ruby_debug.freeze_at=$0 заморожено на $1
|
225
|
+
ext.ruby_debug.node.eval_selected=Выполнить выбранное
|
226
|
+
ext.ruby_debug.server.e.on_start=Error on start server : $0:$1
|
227
|
+
ext.ruby_debug.server.e.on_kill=Error on kill : $0:$1
|
228
|
+
ext.ruby_debug.client.e.on_command=в команде $0:$1
|
229
|
+
ext.ruby_debug.client.e.on_command2=Ошибка в команде $0: $1:$2
|
230
|
+
ext.ruby_debug.client.e.socket_session.1=Ошибка на socket session : $0
|
231
|
+
ext.ruby_debug.client.e.socket_session.2=Ошибка на socket session : $0:$1
|
232
|
+
ext.ruby_debug.client.e.close_session=Ошибка на close session : $0:$1
|
233
|
+
ext.ruby_debug.client.e.start_session=Ошибка на start_session : $0:$1 $2
|
234
|
+
ext.ruby_debug.client.e.stop_session=Ошибка на stop_session : $0:$1
|
235
|
+
ext.ruby_debug.client.e.abort_session=Отладка завершила выполнение на команде $0: $1:$2
|
236
|
+
ext.ruby_debug.client.e.raise.on_read.1=Отладка завершила выполнение
|
237
|
+
ext.ruby_debug.client.e.raise.on_read.2=Ошибка: on command '$0' => $1 : $2
|
238
|
+
ext.ruby_debug.e.rdebug=Внимание: Расширение ae-ruby-debug depend upon rdebug command (install it or update system path!)
|
239
|
+
ext.ruby_debug.e.do_debug=Начало отладки $0 : $1
|
240
|
+
ext.ruby_debug.d.file_not_exist.msg=Файл $0 не существует!
|
241
|
+
ext.ruby_debug.d.file_not_exist.title=Файл не существует
|
242
|
+
ext.ruby_debug.d.exit_query.msg=Отладка in course, хотите выйти?
|
243
|
+
ext.ruby_debug.d.exit_query.title=(Arcadia) Отладка
|
244
|
+
ext.ruby_debug.d.quit_if_debug.msg=Отладка in course, остановить до выхода
|
245
|
+
ext.ruby_debug.d.quit_if_debug.title=(Arcadia) Отладка
|
246
|
+
# search_in_files
|
247
|
+
ext.search_in_files.title=Поиск в файлах
|
248
|
+
ext.search_in_files.search_result_title=результат поиска для : "$0" из :"$1" [$2]
|
249
|
+
ext.search_in_files.progress.title=Поиск
|
250
|
+
ext.search_in_files.button.clear.hint=Очистить
|
251
|
+
ext.search_in_files.search.label.find_what=Что найти:
|
252
|
+
ext.search_in_files.search.label.files_filter=Фильтр файлов:
|
253
|
+
ext.search_in_files.search.label.dir=Папки:
|
254
|
+
ext.search_in_files.search.button.find=Поиск
|
255
|
+
ext.search_in_files.title.1=Ack in files
|
256
|
+
ext.search_in_files.ack_result_title=ack результат для : "$0" в :"$1" [$2] $3
|
257
|
+
ext.search_in_files.progress.title.1=Запускаем
|
258
|
+
ext.search_in_files.progress.title.2=Parsing
|
259
|
+
ext.search_in_files.no_search_result=Не найдено
|
260
|
+
# shell
|
261
|
+
ext.shell.done=Выполенно $0 в $1s
|
262
|
+
ext.shell.done.1=Окончание выполнения $0:
|
263
|
+
# sub_process_inspector
|
264
|
+
ext.spi.d.exit_query.msg=Некоторые под=процессы выполняются! Выйти в любом случае?
|
265
|
+
ext.spi.d.exit_query.title=Потвердить выход
|
266
|
+
ext.spi.d.kill.msg=Действительно завершить процесс $0 $1 ?
|
267
|
+
ext.spi.d.kill.title=Подтвердить снятия задачи
|
268
|
+
#term
|
269
|
+
ext.term.dependences_missing.xterm.msg="xterm" приложение требуется для Term (Терминала), без этого интеграция не возможна!
|
270
|
+
ext.term.dependences_missing.xterm.title=xterm (Терминал) не найден!
|
271
|
+
ext.term.dependences_missing.xdotool.msg="xdotool" приложение требуется для XTerm (хТерминала), без этого интеграция не возможна!
|
272
|
+
ext.term.dependences_missing.xdotool.title=xdotool не найден!
|
data/conf/theme-dark.conf
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#background=#212b48
|
2
1
|
background=#33302e
|
2
|
+
|
3
3
|
foreground=gray
|
4
4
|
activebackground=#334b56
|
5
5
|
activeforeground=yellow
|
@@ -15,7 +15,7 @@ borderwidth=0
|
|
15
15
|
|
16
16
|
|
17
17
|
edit.background=#232323
|
18
|
-
|
18
|
+
|
19
19
|
edit.foreground=white
|
20
20
|
edit.relief=flat
|
21
21
|
edit.borderwidth=0
|
@@ -31,7 +31,7 @@ titlelabel.background=#6a3d6a3d6a3d
|
|
31
31
|
titlemenu.relief=flat
|
32
32
|
splitter.relief=flat
|
33
33
|
splitter.background=#3c3838
|
34
|
-
button.relief=flat
|
34
|
+
#button.relief=flat
|
35
35
|
|
36
36
|
treepanel.selectforeground=yellow
|
37
37
|
treepanel.selectbackground=#133e5e
|
@@ -3,10 +3,10 @@
|
|
3
3
|
# by Antonio Galeone <antonio-galeone@rubyforge.org>
|
4
4
|
#
|
5
5
|
# &require_dir_ref=../..
|
6
|
-
# &require_omissis
|
7
|
-
# &require_omissis
|
8
|
-
# &require_omissis
|
9
|
-
# &require_omissis
|
6
|
+
# &require_omissis=#{Dir.pwd}/lib/a-core
|
7
|
+
# &require_omissis=#{Dir.pwd}/conf/arcadia.init
|
8
|
+
# &require_omissis=#{Dir.pwd}/lib/a-commons
|
9
|
+
# &require_omissis=#{Dir.pwd}/lib/a-tkcommons
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -152,7 +152,7 @@ class DirProjects < ArcadiaExtPlus
|
|
152
152
|
crosscloseimage Arcadia.image_res(PLUS_GIF)
|
153
153
|
crossopenimage Arcadia.image_res(MINUS_GIF)
|
154
154
|
}
|
155
|
-
@htree.extend(TkScrollableWidget).show(0,
|
155
|
+
@htree.extend(TkScrollableWidget).show(0,24)
|
156
156
|
self.pop_up_menu_tree
|
157
157
|
@image_kdir = Arcadia.image_res(ICON_FOLDER_OPEN_GIF)
|
158
158
|
@image_kdir_closed = Arcadia.image_res(FOLDER_GIF)
|
data/ext/ae-editor/ae-editor.rb
CHANGED
@@ -7,16 +7,15 @@
|
|
7
7
|
|
8
8
|
require 'tk'
|
9
9
|
require 'tktext'
|
10
|
-
require "#{Dir.pwd}/lib/a-tkcommons"
|
11
|
-
#require 'lib/a-commons'
|
12
10
|
require "#{Dir.pwd}/lib/a-core"
|
11
|
+
require "#{Dir.pwd}/lib/a-tkcommons"
|
13
12
|
require "#{Dir.pwd}/ext/ae-editor/lib/rbeautify"
|
14
13
|
|
15
14
|
class SourceTreeNode
|
16
15
|
attr_reader :sons
|
17
16
|
attr_reader :parent
|
18
17
|
attr_reader :kind
|
19
|
-
attr_accessor :rif, :rif_end, :label, :helptext, :sortable
|
18
|
+
attr_accessor :rif, :rif_end, :label, :helptext, :sortable, :args
|
20
19
|
def initialize(parent=nil, kind='class', sortable=true)
|
21
20
|
@sons = Array.new
|
22
21
|
@parent = parent
|
@@ -99,7 +98,7 @@ end
|
|
99
98
|
|
100
99
|
class CtagsSourceStructure < SourceStructure
|
101
100
|
SUPPORTED_LANG = ['Ant','Asm','Asp','Awk','Basic','BETA','C','C++','C#','Cobol','DosBatch','Eiffel','Erlang','Flex','Fortran','HTML','Java','JavaScript','Lisp','Lua','Make','MatLab','OCaml','Pascal','Perl','PHP','Python','REXX','Ruby','Scheme','Sh','SLang','SML','SQL','Tcl','Tex','Vera','Verilog','VHDL','Vim','YACC']
|
102
|
-
def initialize(_file, _ctags_string='ctags', _language=nil)
|
101
|
+
def initialize(_file, _ctags_string='ctags', _row_rif = nil, _language=nil)
|
103
102
|
super()
|
104
103
|
@file = _file
|
105
104
|
@ctags_string = _ctags_string
|
@@ -107,9 +106,20 @@ class CtagsSourceStructure < SourceStructure
|
|
107
106
|
@classes = Hash.new
|
108
107
|
@last_root = @root
|
109
108
|
@last_class_node = @root
|
110
|
-
@last_node = @root
|
109
|
+
@last_node = @root
|
110
|
+
@blank_rows = []
|
111
|
+
initialize_blank_rows(_row_rif) if !_row_rif.nil?
|
111
112
|
build_structure
|
112
113
|
end
|
114
|
+
|
115
|
+
def initialize_blank_rows(_row = nil)
|
116
|
+
File::open(@file,'rb'){ |file|
|
117
|
+
file.readlines.each_with_index{| line, i |
|
118
|
+
@blank_rows << i+1 if line.strip == ''
|
119
|
+
}
|
120
|
+
}
|
121
|
+
@blank_rows << _row if _row
|
122
|
+
end
|
113
123
|
|
114
124
|
def build_structure
|
115
125
|
output = ctags
|
@@ -118,7 +128,7 @@ class CtagsSourceStructure < SourceStructure
|
|
118
128
|
b2,b3 = brest.split('$/;"')
|
119
129
|
name,file = b1.strip.split("\t")
|
120
130
|
definition = b2.strip
|
121
|
-
fields_raw = b3.strip.split("\t")
|
131
|
+
fields_raw = b3.nil? ? [] : b3.strip.split("\t")
|
122
132
|
fields = Hash.new
|
123
133
|
fields_raw.each{|item|
|
124
134
|
k,v=item.split(":")
|
@@ -133,12 +143,17 @@ class CtagsSourceStructure < SourceStructure
|
|
133
143
|
else
|
134
144
|
parent = @last_root
|
135
145
|
end
|
136
|
-
|
137
146
|
node = SourceTreeNode.new(parent, fields['kind'])
|
138
147
|
node.label = name
|
139
148
|
node.helptext = definition
|
149
|
+
node.args = ''
|
150
|
+
definition.split(name)[1..-1].each { |part| node.args += "#{part}" }
|
140
151
|
node.rif = fields['line']
|
141
|
-
|
152
|
+
ln_rif = node.rif.to_i - 1
|
153
|
+
while @blank_rows.include?(ln_rif) && ln_rif > 0
|
154
|
+
ln_rif = ln_rif - 1
|
155
|
+
end
|
156
|
+
@last_node.rif_end = ln_rif.to_s
|
142
157
|
|
143
158
|
if ['class','module','interface','package'].include?(fields['kind'])
|
144
159
|
if fields['class'] != nil
|
@@ -176,8 +191,8 @@ end
|
|
176
191
|
class RubyCtagsSourceStructure < CtagsSourceStructure
|
177
192
|
attr_reader :injected_row
|
178
193
|
|
179
|
-
def initialize(_file, _ctags_string='ctags')
|
180
|
-
super(_file, _ctags_string, 'Ruby')
|
194
|
+
def initialize(_file, _ctags_string='ctags', _row_rif = nil)
|
195
|
+
super(_file, _ctags_string, _row_rif, 'Ruby')
|
181
196
|
end
|
182
197
|
|
183
198
|
def scheletor_from_node(_node, _source='', _injected_source='', _injected_class='')
|
@@ -190,8 +205,8 @@ class RubyCtagsSourceStructure < CtagsSourceStructure
|
|
190
205
|
_hinner_source = "#{_hinner_source}#{_son.helptext}\n"
|
191
206
|
elsif _son.kind == 'module'
|
192
207
|
_hinner_source = "#{_hinner_source}#{_son.helptext}\n"
|
193
|
-
elsif _son.kind == 'method' && _son.label != 'initialize'
|
194
|
-
_hinner_source = "#{_hinner_source} def #{_son.label}\n"
|
208
|
+
elsif _son.kind == 'method' && ((_son.label != 'initialize') || (_son.label == 'initialize') && _son.args)
|
209
|
+
_hinner_source = "#{_hinner_source} def #{_son.label}#{_son.args}\n"
|
195
210
|
_hinner_source = "#{_hinner_source} end\n"
|
196
211
|
elsif _son.kind == 'singleton method'
|
197
212
|
_hinner_source = "#{_hinner_source} def #{_son.label}\n"
|
@@ -203,6 +218,8 @@ class RubyCtagsSourceStructure < CtagsSourceStructure
|
|
203
218
|
if _node.kind == 'class' && _node.label == _injected_class
|
204
219
|
_source = "#{_source} def initialize\n #{_injected_source} end\n"
|
205
220
|
@injected_row = _source.split("\n").length-2
|
221
|
+
elsif _node.kind == 'class'
|
222
|
+
_source = "#{_source} def initialize\n end\n"
|
206
223
|
end
|
207
224
|
_source = "#{_source}end\n" if _node.kind == 'class' || _node.kind == 'module'
|
208
225
|
_source
|
@@ -352,34 +369,131 @@ class RubySourceStructure < SourceStructure
|
|
352
369
|
end
|
353
370
|
end
|
354
371
|
|
355
|
-
|
356
|
-
class SafeCompleteCode
|
357
|
-
attr_reader :modified_row, :modified_col
|
372
|
+
class CompleteCode
|
358
373
|
attr_reader :filter
|
359
374
|
def initialize(_editor, _row, _col)
|
360
375
|
@editor = _editor
|
361
376
|
@source = _editor.text_value
|
362
|
-
#@file = _file
|
363
377
|
@row = _row.to_i
|
364
378
|
@col = _col.to_i
|
379
|
+
@filter=''
|
380
|
+
@words = Array.new
|
381
|
+
@is_dot = nil
|
382
|
+
end
|
383
|
+
|
384
|
+
def focus_word(focus_segment)
|
385
|
+
focus_world = ''
|
386
|
+
char = focus_segment[-1..-1]
|
387
|
+
while [")","]","}"].include?(char)
|
388
|
+
char=focus_segment[-2..-2]
|
389
|
+
focus_segment = focus_segment[0..-2]
|
390
|
+
end
|
391
|
+
j = focus_segment.length - 1
|
392
|
+
while !["\s","\t",";",",","(","[","{",">"].include?(char) && j >= 0
|
393
|
+
focus_world = "#{char}#{focus_world}"
|
394
|
+
j=j-1
|
395
|
+
char = focus_segment[j..j]
|
396
|
+
end
|
397
|
+
focus_world
|
398
|
+
end
|
399
|
+
|
400
|
+
def process_source
|
401
|
+
@source_array = @source.split("\n")
|
402
|
+
@focus_line = @source_array[@row-1]
|
403
|
+
@focus_line = @focus_line[0..@col] if @focus_line
|
404
|
+
@focus_line = '' if @focus_line.nil?
|
405
|
+
@focus_world = ''
|
406
|
+
if @focus_line && @focus_line.strip.length > 0
|
407
|
+
if @focus_line[@col-1..@col-1] == '.'
|
408
|
+
#@is_dot=true
|
409
|
+
focus_segment = @focus_line[0..@col-2]
|
410
|
+
elsif @focus_line.include?('.')
|
411
|
+
#@is_dot=true
|
412
|
+
focus_segment_array = @focus_line.split('.')
|
413
|
+
focus_segment = ''
|
414
|
+
focus_segment_array[0..-2].each{|seg|
|
415
|
+
if focus_segment.strip.length > 0
|
416
|
+
focus_segment = focus_segment+'.'
|
417
|
+
end
|
418
|
+
focus_segment = focus_segment+seg
|
419
|
+
}
|
420
|
+
@filter = focus_word(focus_segment_array[-1].strip)
|
421
|
+
else
|
422
|
+
focus_segment = ''
|
423
|
+
@filter = focus_word(@focus_line[0..@col-1].strip)
|
424
|
+
end
|
425
|
+
@focus_world = focus_word(focus_segment)
|
426
|
+
end
|
427
|
+
|
428
|
+
if @filter.strip.length > 0 && !is_dot?
|
429
|
+
refresh_words
|
430
|
+
end
|
431
|
+
@words.sort
|
432
|
+
end
|
433
|
+
|
434
|
+
def refresh_words
|
435
|
+
@words.clear
|
436
|
+
_re = /[\s\t\n"'(\[\{=><]#{@filter}[a-zA-Z0-9\-_]*/
|
437
|
+
m = _re.match(@source)
|
438
|
+
while m && (_txt=m.post_match)
|
439
|
+
can = m[0].strip
|
440
|
+
if can.include?(' ')
|
441
|
+
can = can.split[1].strip
|
442
|
+
end
|
443
|
+
if ['"','(','[','{',"'",'=','>','<'].include?(can[0..0])
|
444
|
+
can = can[1..-1].strip
|
445
|
+
end
|
446
|
+
@words << can if can != @filter && !@words.include?(can)
|
447
|
+
m = _re.match(_txt)
|
448
|
+
end
|
449
|
+
end
|
450
|
+
|
451
|
+
def is_dot?
|
452
|
+
if @is_dot == nil
|
453
|
+
fline = @editor.text.get('insert linestart', 'insert')
|
454
|
+
@is_dot = fline != nil && fline.length > 0 && fline[-1..-1] == '.'
|
455
|
+
end
|
456
|
+
@is_dot
|
457
|
+
end
|
458
|
+
|
459
|
+
def candidates(_show_error = false)
|
460
|
+
process_source
|
461
|
+
end
|
462
|
+
end
|
463
|
+
|
464
|
+
class RubyCompleteCode < CompleteCode
|
465
|
+
attr_reader :modified_row, :modified_col
|
466
|
+
RESERVED_WORDS = ["__FILE__","and","def","end","in","or","self","unless",
|
467
|
+
"__LINE__","begin","defined?","ensure","module","redo","super","until",
|
468
|
+
"BEGIN","break","do","false","next","rescue","then","when",
|
469
|
+
"END","case","else","for","nil","retry","true","while",
|
470
|
+
"alias","class","elsif","if","not","return","undef","yield"]
|
471
|
+
def initialize(_editor, _row, _col)
|
472
|
+
# @editor = _editor
|
473
|
+
# @source = _editor.text_value
|
474
|
+
# @row = _row.to_i
|
475
|
+
# @col = _col.to_i
|
476
|
+
super
|
365
477
|
if _editor && _editor.has_ctags?
|
366
478
|
tmp_file = _editor.create_temp_file
|
367
479
|
begin
|
368
|
-
@ss = RubyCtagsSourceStructure.new(tmp_file, _editor.ctags_string)
|
480
|
+
@ss = RubyCtagsSourceStructure.new(tmp_file, _editor.ctags_string, _row.to_i)
|
369
481
|
ensure
|
370
482
|
File.delete(tmp_file)
|
371
483
|
end
|
372
484
|
else
|
373
|
-
@ss = RubySourceStructure.new(
|
485
|
+
@ss = RubySourceStructure.new(@source)
|
374
486
|
end
|
375
|
-
@filter=''
|
376
|
-
@words = Array.new
|
377
|
-
process_source
|
487
|
+
# @filter=''
|
488
|
+
# @words = Array.new
|
489
|
+
# process_source
|
378
490
|
end
|
379
491
|
|
380
492
|
def dot_trip(_var_name)
|
381
|
-
ret = "_class=#{_var_name}.class.name\n"
|
382
|
-
ret =
|
493
|
+
# ret = "_class=#{_var_name}.class.name\n"
|
494
|
+
ret = "_class=#{_var_name}.class.to_s\n"
|
495
|
+
# ret = ret +"_methods=#{_var_name}.methods\n"
|
496
|
+
ret = ret +"_methods=#{_var_name}.public_methods(includeSuper=true)\n"
|
383
497
|
ret = ret +"owner_on = Method.instance_methods.include?('owner')\n"
|
384
498
|
ret = ret +"_methods.each{|m|\n"
|
385
499
|
ret = ret +"meth = #{_var_name}.method(m)\n"
|
@@ -402,7 +516,7 @@ class SafeCompleteCode
|
|
402
516
|
end
|
403
517
|
|
404
518
|
def scope_trip
|
405
|
-
ret = "ObjectSpace.each_object(
|
519
|
+
ret = "ObjectSpace.each_object(Module){|o|\n"
|
406
520
|
ret = ret + " o_name = o.name\n"
|
407
521
|
ret = ret + " print '#'+o_name+'\n' if o_name && o_name.strip.length>0 \n"
|
408
522
|
ret = ret + "}\n"
|
@@ -444,59 +558,21 @@ class SafeCompleteCode
|
|
444
558
|
dec_line_processed
|
445
559
|
end
|
446
560
|
|
447
|
-
def is_dot?
|
448
|
-
@is_dot
|
449
|
-
end
|
450
|
-
|
451
|
-
def refresh_words
|
452
|
-
@words.clear
|
453
|
-
_re = /[\s\t\n"'(\[\{=><]#{@filter}[a-zA-Z0-9\-_]*/
|
454
|
-
m = _re.match(@source)
|
455
|
-
while m && (_txt=m.post_match)
|
456
|
-
can = m[0].strip
|
457
|
-
if ['"','(','[','{',"'",'=','>','<'].include?(can[0..0])
|
458
|
-
can = can[1..-1]
|
459
|
-
end
|
460
|
-
@words << can if can != @filter
|
461
|
-
m = _re.match(_txt)
|
462
|
-
end
|
463
|
-
end
|
561
|
+
# def is_dot?
|
562
|
+
# @is_dot
|
563
|
+
# end
|
464
564
|
|
465
565
|
def process_source
|
466
|
-
|
467
|
-
@
|
566
|
+
super
|
567
|
+
@modified_source = "begin\n"
|
568
|
+
@modified_row = @row+1
|
468
569
|
@modified_col = @col
|
469
|
-
source_array = @source.split("\n")
|
470
|
-
focus_line = source_array[@row-1]
|
471
|
-
focus_line = focus_line[0..@col] if focus_line
|
472
|
-
focus_line = '' if focus_line.nil?
|
473
|
-
focus_world = ''
|
474
|
-
if focus_line && focus_line.strip.length > 0
|
475
|
-
if focus_line[@col-1..@col-1] == '.'
|
476
|
-
@is_dot=true
|
477
|
-
focus_segment = focus_line[0..@col-2]
|
478
|
-
elsif focus_line.include?('.')
|
479
|
-
@is_dot=true
|
480
|
-
focus_segment_array = focus_line.split('.')
|
481
|
-
focus_segment = ''
|
482
|
-
focus_segment_array[0..-2].each{|seg|
|
483
|
-
if focus_segment.strip.length > 0
|
484
|
-
focus_segment = focus_segment+'.'
|
485
|
-
end
|
486
|
-
focus_segment = focus_segment+seg
|
487
|
-
}
|
488
|
-
@filter = focus_word(focus_segment_array[-1].strip)
|
489
|
-
else
|
490
|
-
focus_segment = ''
|
491
|
-
@filter = focus_word(focus_line[0..@col-1].strip)
|
492
|
-
end
|
493
|
-
focus_world= focus_word(focus_segment)
|
494
|
-
end
|
495
570
|
@class_node = @ss.class_node_by_line(@row)
|
496
|
-
focus_line_to_evaluate = focus_line
|
571
|
+
focus_line_to_evaluate = @focus_line
|
497
572
|
@modified_source = "#{@modified_source}Dir.chdir('#{File.dirname(@editor.file)}')\n" if @editor.file
|
498
573
|
@modified_row = @modified_row+1
|
499
|
-
|
574
|
+
require_tk = false
|
575
|
+
@source_array.each_with_index{|line,j|
|
500
576
|
# 0) if a comment I do not consider it
|
501
577
|
if line.strip.length > 0 && line.strip[0..0]=='#'
|
502
578
|
@modified_row = @modified_row-1
|
@@ -512,13 +588,12 @@ class SafeCompleteCode
|
|
512
588
|
@modified_source = "#{@modified_source}require \"#{require_omissis}\"\n"
|
513
589
|
@modified_row = @modified_row+1
|
514
590
|
end
|
515
|
-
|
516
|
-
|
517
591
|
# 1) include require
|
518
592
|
elsif line.strip.length>7 && (line.strip[0..7]=="require " || line.strip[0..7]=="require(")
|
519
593
|
@modified_source = "#{@modified_source}#{line}\n"
|
520
|
-
if line.strip[8..-1].include?("tk")
|
521
|
-
|
594
|
+
if !require_tk && line.strip[8..-1].include?("tk")
|
595
|
+
require_tk = true
|
596
|
+
# @modified_source = "#{@modified_source}Tk.root.destroy if Tk && Tk.root\n"
|
522
597
|
end
|
523
598
|
# 2) include evalueting row with a $SAFE 3
|
524
599
|
elsif j.to_i == @row-1
|
@@ -530,12 +605,16 @@ class SafeCompleteCode
|
|
530
605
|
end
|
531
606
|
break if j.to_i >= @row - 1
|
532
607
|
}
|
608
|
+
if require_tk
|
609
|
+
@modified_source = "#{@modified_source}Tk.root.destroy if Tk && Tk.root\n"
|
610
|
+
@modified_row = @modified_row+1
|
611
|
+
end
|
533
612
|
if focus_line_to_evaluate
|
534
613
|
# search an optional declaration
|
535
|
-
if focus_world && focus_world.strip.length > 0
|
614
|
+
if @focus_world && @focus_world.strip.length > 0
|
536
615
|
begin
|
537
|
-
re = Regexp::new('[\s\n\t\;]('
|
538
|
-
source_array.each_with_index do |line,j|
|
616
|
+
re = Regexp::new('[\s\n\t\;]('+@focus_world.strip+')[\s\t]*=(.)*')
|
617
|
+
@source_array.each_with_index do |line,j|
|
539
618
|
#m = /[\s\n\t\;](#{focus_world})[\s\t]*=(.)*/.match(line)
|
540
619
|
if j >= @row-1
|
541
620
|
break
|
@@ -559,8 +638,8 @@ class SafeCompleteCode
|
|
559
638
|
if @class_dec_line_node && @class_dec_line_node.label == @class_node.label
|
560
639
|
to_iniect = "#{to_iniect}#{declaration(@dec_line)}\n"
|
561
640
|
end
|
562
|
-
if focus_world.length > 0
|
563
|
-
to_iniect = "#{to_iniect}#{dot_trip(focus_world)}\n"
|
641
|
+
if @focus_world.length > 0
|
642
|
+
to_iniect = "#{to_iniect}#{dot_trip(@focus_world)}\n"
|
564
643
|
else
|
565
644
|
to_iniect = "#{to_iniect}#{scope_trip}\n"
|
566
645
|
end
|
@@ -592,8 +671,8 @@ class SafeCompleteCode
|
|
592
671
|
@modified_row = @modified_row+1
|
593
672
|
end
|
594
673
|
#@modified_source = "#{@modified_source}_candidates=@candidates\n"
|
595
|
-
if focus_world.length > 0
|
596
|
-
@modified_source = "#{@modified_source}#{dot_trip(focus_world)}\n"
|
674
|
+
if @focus_world.length > 0
|
675
|
+
@modified_source = "#{@modified_source}#{dot_trip(@focus_world)}\n"
|
597
676
|
else
|
598
677
|
@modified_source = "#{@modified_source}#{scope_trip}\n"
|
599
678
|
end
|
@@ -604,9 +683,16 @@ class SafeCompleteCode
|
|
604
683
|
@modified_row = @modified_row+1+ss_len
|
605
684
|
end
|
606
685
|
end
|
607
|
-
|
608
|
-
|
609
|
-
|
686
|
+
@modified_source = "#{@modified_source}rescue Exception => e\n"
|
687
|
+
@modified_source = "#{@modified_source} if e.class != SystemExit\n"
|
688
|
+
@modified_source = "#{@modified_source} p :ARCADIA_CC_ERROR\n"
|
689
|
+
@modified_source = "#{@modified_source} p e.message\n"
|
690
|
+
@modified_source = "#{@modified_source} end\n"
|
691
|
+
@modified_source = "#{@modified_source}end\n"
|
692
|
+
@modified_row = @modified_row+6
|
693
|
+
# if @filter.strip.length > 0 && !is_dot?
|
694
|
+
# refresh_words
|
695
|
+
# end
|
610
696
|
|
611
697
|
# Arcadia.console(self, 'msg'=>@modified_source)
|
612
698
|
# Arcadia.console(self, 'msg'=>"@modified_row=#{@modified_row}")
|
@@ -616,38 +702,40 @@ class SafeCompleteCode
|
|
616
702
|
# Arcadia.console(self, 'msg'=>"@dec_line=#{@dec_line}") if @dec_line
|
617
703
|
# Arcadia.console(self, 'msg'=>"declaration(@dec_line)=#{declaration(@dec_line)}") if @dec_line
|
618
704
|
end
|
619
|
-
|
620
|
-
def focus_word(focus_segment)
|
621
|
-
focus_world = ''
|
622
|
-
char = focus_segment[-1..-1]
|
623
|
-
while [")","]","}"].include?(char)
|
624
|
-
char=focus_segment[-2..-2]
|
625
|
-
focus_segment = focus_segment[0..-2]
|
626
|
-
end
|
627
|
-
j = focus_segment.length - 1
|
628
|
-
while !["\s","\t",";",",","(","[","{",">"].include?(char) && j >= 0
|
629
|
-
focus_world = "#{char}#{focus_world}"
|
630
|
-
j=j-1
|
631
|
-
char = focus_segment[j..j]
|
632
|
-
end
|
633
|
-
focus_world
|
634
|
-
end
|
635
705
|
|
636
706
|
def candidates(_show_error = false)
|
707
|
+
super
|
637
708
|
temp_file = create_modified_temp_file(@editor.file)
|
638
709
|
begin
|
639
710
|
Arcadia.is_windows??ruby='rubyw':ruby=Arcadia.ruby
|
640
|
-
_cmp_s = "|#{ruby} '#{temp_file}'"
|
711
|
+
_cmp_s = "|#{ruby} '#{temp_file}' 2>&1"
|
641
712
|
_ret = nil
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
line
|
646
|
-
|
713
|
+
onlyw = []
|
714
|
+
begin
|
715
|
+
open(_cmp_s,"r") do |f|
|
716
|
+
_ret = f.readlines.collect!{| line |
|
717
|
+
#line.chomp
|
718
|
+
anlyl = line.split('#')[1]
|
719
|
+
onlyw << anlyl.strip if anlyl
|
720
|
+
line.strip
|
721
|
+
}
|
722
|
+
end
|
723
|
+
rescue
|
724
|
+
_ret = []
|
725
|
+
end
|
726
|
+
if _ret.include?(':ARCADIA_CC_ERROR')
|
727
|
+
_ret = []
|
647
728
|
end
|
648
729
|
if @filter.strip.length > 0 && !is_dot?
|
649
730
|
@words.each{|w|
|
650
|
-
if !(
|
731
|
+
if !(onlyw.include?(w) || onlyw.include?("##{w}"))
|
732
|
+
_ret << w
|
733
|
+
end
|
734
|
+
}
|
735
|
+
end
|
736
|
+
if !is_dot?
|
737
|
+
RESERVED_WORDS.each{|w|
|
738
|
+
if !onlyw.include?(w) && !@words.include?(w)
|
651
739
|
_ret << w
|
652
740
|
end
|
653
741
|
}
|
@@ -663,8 +751,8 @@ class SafeCompleteCode
|
|
663
751
|
|
664
752
|
def create_modified_temp_file(_base_file=nil)
|
665
753
|
if _base_file
|
666
|
-
|
667
|
-
_file = File.join(
|
754
|
+
# _file = File.join(File.dirname(_base_file),'~~'+File.basename(_base_file))
|
755
|
+
_file = File.join(Arcadia.instance.local_dir,'~~'+File.basename(_base_file))
|
668
756
|
else
|
669
757
|
_file = File.join(Arcadia.instance.local_dir,'~~buffer')
|
670
758
|
end
|
@@ -1023,8 +1111,6 @@ class AgEditorOutline
|
|
1023
1111
|
# workaround on windows
|
1024
1112
|
@tree_exp.delete(@tree_exp.nodes('root'))
|
1025
1113
|
end
|
1026
|
-
|
1027
|
-
|
1028
1114
|
_txt = @editor.text.get('1.0','end')
|
1029
1115
|
if @editor.has_ctags?
|
1030
1116
|
if @editor.file && !@editor.modified?
|
@@ -1303,7 +1389,12 @@ class AgEditor
|
|
1303
1389
|
@do_complete = @do_complete && @controller.accept_complete_code
|
1304
1390
|
if @do_complete
|
1305
1391
|
line, col = @text.index('insert').split('.')
|
1306
|
-
|
1392
|
+
case @lang
|
1393
|
+
when 'ruby'
|
1394
|
+
mss = RubyCompleteCode.new(self, line.to_i, col.to_i)
|
1395
|
+
else
|
1396
|
+
mss = CompleteCode.new(self, line.to_i, col.to_i)
|
1397
|
+
end
|
1307
1398
|
candidates = mss.candidates
|
1308
1399
|
raise_complete_code(candidates, line.to_s, col.to_s, mss.filter) if candidates && candidates.length > 0
|
1309
1400
|
end
|
@@ -1364,20 +1455,21 @@ class AgEditor
|
|
1364
1455
|
extra_len = 0
|
1365
1456
|
end
|
1366
1457
|
if _filter.length > 0
|
1367
|
-
|
1458
|
+
begin_index_for_complete = @text.index("insert - #{_filter.length}chars")
|
1368
1459
|
else
|
1369
|
-
|
1370
|
-
if
|
1371
|
-
|
1372
|
-
elsif
|
1373
|
-
|
1460
|
+
processing_string = @text.get(_begin_index,"insert")
|
1461
|
+
if processing_string && ['.','(','[','{','=','<','!','>'].include?(processing_string.strip[-1..-1])
|
1462
|
+
begin_index_for_complete = @text.index("insert")
|
1463
|
+
elsif processing_string && processing_string.include?('.')
|
1464
|
+
begin_index_for_complete = @text.index("insert - #{processing_string.split('.')[-1].length}chars")
|
1374
1465
|
else
|
1375
|
-
|
1466
|
+
begin_index_for_complete = _begin_index
|
1376
1467
|
end
|
1377
1468
|
end
|
1378
1469
|
|
1379
1470
|
if _candidates.length >= 1
|
1380
|
-
_rx, _ry, _width, heigth = @text.bbox(_begin_index);
|
1471
|
+
#_rx, _ry, _width, heigth = @text.bbox(_begin_index);
|
1472
|
+
_rx, _ry, _width, heigth = @text.bbox(begin_index_for_complete);
|
1381
1473
|
_x = _rx + TkWinfo.rootx(@text)
|
1382
1474
|
_y = _ry + TkWinfo.rooty(@text) + @font_metrics[2][1]
|
1383
1475
|
_xroot = _x - TkWinfo.rootx(Arcadia.instance.layout.root)
|
@@ -1446,8 +1538,7 @@ class AgEditor
|
|
1446
1538
|
@raised_listbox_frame.destroy
|
1447
1539
|
#_menu.destroy
|
1448
1540
|
@text.focus
|
1449
|
-
@text.delete(
|
1450
|
-
|
1541
|
+
@text.delete("#{begin_index_for_complete} wordstart",'insert')
|
1451
1542
|
# workaround for @ char
|
1452
1543
|
_value = _value.strip
|
1453
1544
|
if _value[0..0] !=_target[0..0] && _value[1..1] == _target[0..0]
|
@@ -1488,7 +1579,8 @@ class AgEditor
|
|
1488
1579
|
_height = 15*_char_height
|
1489
1580
|
_height = _max_height if _height > _max_height
|
1490
1581
|
|
1491
|
-
_buffer = @text.get(_begin_index, 'insert')
|
1582
|
+
#_buffer = @text.get(_begin_index, 'insert')
|
1583
|
+
_buffer = @text.get(begin_index_for_complete, 'insert')
|
1492
1584
|
_buffer_ini_length = _buffer.length
|
1493
1585
|
@raised_listbox_frame.place('x'=>_xroot,'y'=>_yroot, 'width'=>_width, 'height'=>_height)
|
1494
1586
|
@raised_listbox.extend(TkScrollableWidget).show(0,0)
|
@@ -1518,11 +1610,13 @@ class AgEditor
|
|
1518
1610
|
_insert_selected_value.call
|
1519
1611
|
end
|
1520
1612
|
Tk.callback_break
|
1521
|
-
when 'A'..'Z','equal','greater'
|
1613
|
+
when 'A'..'Z','equal','greater','underscore'
|
1522
1614
|
if e.keysym == 'equal'
|
1523
1615
|
ch = '='
|
1524
1616
|
elsif e.keysym == 'greater'
|
1525
1617
|
ch = '>'
|
1618
|
+
elsif e.keysym == 'underscore'
|
1619
|
+
ch = '_'
|
1526
1620
|
else
|
1527
1621
|
ch = e.keysym
|
1528
1622
|
end
|
@@ -1567,11 +1661,13 @@ class AgEditor
|
|
1567
1661
|
Tk.callback_break
|
1568
1662
|
when 'BackSpace'
|
1569
1663
|
if _buffer.length > _buffer_ini_length
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1664
|
+
if @text.index('insert').split('.')[0] == _row
|
1665
|
+
@text.delete("insert -1 chars" ,'insert')
|
1666
|
+
end
|
1667
|
+
_buffer = _buffer[0..-2]
|
1668
|
+
Tk.update
|
1669
|
+
_update_list.call(_buffer)
|
1670
|
+
Tk.callback_break
|
1575
1671
|
end
|
1576
1672
|
when 'Next', 'Prior'
|
1577
1673
|
else
|
@@ -1585,7 +1681,7 @@ class AgEditor
|
|
1585
1681
|
end
|
1586
1682
|
}
|
1587
1683
|
elsif _candidates.length == 1 && _candidates[0].length>0
|
1588
|
-
@text.delete(
|
1684
|
+
@text.delete(begin_index_for_complete,'insert');
|
1589
1685
|
@text.insert('insert',_candidates[0].split[0])
|
1590
1686
|
complete_code_end
|
1591
1687
|
end
|
@@ -1616,30 +1712,31 @@ class AgEditor
|
|
1616
1712
|
@do_complete = false
|
1617
1713
|
end
|
1618
1714
|
}
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
1715
|
+
case @lang
|
1716
|
+
when 'ruby'
|
1717
|
+
@text.bind_append("KeyRelease"){|e|
|
1718
|
+
case e.keysym
|
1719
|
+
when 'period'
|
1720
|
+
_focus_line = @text.get('insert linestart','insert')
|
1721
|
+
if _focus_line.strip[0..0] != '#'
|
1722
|
+
Thread.new do
|
1723
|
+
@do_complete = true
|
1724
|
+
sleep(1)
|
1725
|
+
if @do_complete && @n_complete_task == 0
|
1726
|
+
complete_code
|
1727
|
+
end
|
1728
|
+
end
|
1630
1729
|
end
|
1631
|
-
end
|
1632
1730
|
end
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1731
|
+
}
|
1732
|
+
end
|
1636
1733
|
end
|
1637
1734
|
|
1638
1735
|
#
|
1639
1736
|
# setup all key bindings (normal, +control, etc)
|
1640
1737
|
#
|
1641
1738
|
def activate_key_binding
|
1642
|
-
activate_complete_code_key_binding if @is_ruby
|
1739
|
+
activate_complete_code_key_binding #if @is_ruby
|
1643
1740
|
|
1644
1741
|
@text.bind_append("Control-KeyPress"){|e|
|
1645
1742
|
case e.keysym
|
@@ -3626,13 +3723,30 @@ class AgMultiEditorView
|
|
3626
3723
|
end
|
3627
3724
|
end
|
3628
3725
|
|
3726
|
+
def add_menu_button(_name, _buffer_string)
|
3727
|
+
@buffer_menu_button = @frame.root.add_menu_button(
|
3728
|
+
_name, 'files', nil, 'right',
|
3729
|
+
{'relief'=>:flat,
|
3730
|
+
'borderwidth'=>1,
|
3731
|
+
'compound'=> 'left',
|
3732
|
+
'anchor'=>'w',
|
3733
|
+
'font'=> "#{Arcadia.conf('titlelabel.font')} italic",
|
3734
|
+
'activebackground'=>Arcadia.conf('titlelabel.background'),
|
3735
|
+
'foreground' => Arcadia.conf('titlecontext.foreground'),
|
3736
|
+
'textvariable'=> _buffer_string
|
3737
|
+
}
|
3738
|
+
)
|
3739
|
+
end
|
3740
|
+
|
3629
3741
|
def page_bind(_event, _proc)
|
3630
3742
|
@page_binds[_event] = _proc
|
3631
3743
|
if @usetabs
|
3632
3744
|
@enb.tabbind_append("Button-3",_proc)
|
3633
3745
|
@frame.root.top_text_bind_remove("Button-3")
|
3746
|
+
@buffer_menu_button.bind_remove("Button-3") if @buffer_menu_button
|
3634
3747
|
else
|
3635
|
-
@frame.root.top_text_bind_append("Button-3", _proc)
|
3748
|
+
@frame.root.top_text_bind_append("Button-3", _proc)
|
3749
|
+
@buffer_menu_button.bind_append("Button-3", _proc) if @buffer_menu_button
|
3636
3750
|
end
|
3637
3751
|
end
|
3638
3752
|
|
@@ -3708,7 +3822,8 @@ class HighlightScanner
|
|
3708
3822
|
|
3709
3823
|
def initialize(_langs_conf)
|
3710
3824
|
@langs_conf = _langs_conf
|
3711
|
-
|
3825
|
+
#@lang=@langs_conf['language'].to_sym if @langs_conf['language']
|
3826
|
+
@lang=@langs_conf['language'] if @langs_conf['language']
|
3712
3827
|
end
|
3713
3828
|
|
3714
3829
|
def highlight_tags(_row_begin,_code)
|
@@ -4097,11 +4212,6 @@ class AgMultiEditor < ArcadiaExtPlus
|
|
4097
4212
|
@main_frame = AgMultiEditorView.new(self, self.frame, @usetabs)
|
4098
4213
|
@@outline_bar = AgEditorOutlineToolbar.new(self) if !defined?(@@outline_bar)
|
4099
4214
|
create_find # this is the "find within current file" one
|
4100
|
-
begin
|
4101
|
-
pop_up_menu
|
4102
|
-
rescue RuntimeError => e
|
4103
|
-
Arcadia.runtime_error(e)
|
4104
|
-
end
|
4105
4215
|
frame.root.add_button(
|
4106
4216
|
self.name,
|
4107
4217
|
'Close current',
|
@@ -4113,20 +4223,25 @@ class AgMultiEditor < ArcadiaExtPlus
|
|
4113
4223
|
@buffer_string.value = ''
|
4114
4224
|
# @buffer_string = ''
|
4115
4225
|
@buffer_number.value = 0
|
4116
|
-
@buffer_menu_button =
|
4117
|
-
|
4118
|
-
|
4119
|
-
|
4120
|
-
|
4121
|
-
|
4122
|
-
|
4123
|
-
|
4124
|
-
|
4125
|
-
|
4126
|
-
|
4127
|
-
'
|
4128
|
-
|
4129
|
-
|
4226
|
+
@buffer_menu_button = @main_frame.add_menu_button(self.name, @buffer_string)
|
4227
|
+
|
4228
|
+
begin
|
4229
|
+
pop_up_menu
|
4230
|
+
rescue RuntimeError => e
|
4231
|
+
Arcadia.runtime_error(e)
|
4232
|
+
end
|
4233
|
+
|
4234
|
+
# @buffer_menu_button = frame.root.add_menu_button(
|
4235
|
+
# self.name, 'files', nil, 'right',
|
4236
|
+
# {'relief'=>:flat,
|
4237
|
+
# 'borderwidth'=>1,
|
4238
|
+
# 'compound'=> 'left',
|
4239
|
+
# 'anchor'=>'w',
|
4240
|
+
# 'font'=> "#{Arcadia.conf('titlelabel.font')} italic",
|
4241
|
+
# 'activebackground'=>Arcadia.conf('titlelabel.background'),
|
4242
|
+
# 'foreground' => Arcadia.conf('titlecontext.foreground'),
|
4243
|
+
# 'textvariable'=> @buffer_string
|
4244
|
+
# })
|
4130
4245
|
@buffer_menu = @buffer_menu_button.cget('menu')
|
4131
4246
|
@buffer_menu_button.pack('fill'=>'x', 'expand'=>'true', 'side'=> 'left','anchor'=> 'w')
|
4132
4247
|
# TkWinfo.parent(TkWinfo.parent(@buffer_menu_button).frame).pack('fill'=>'x', 'expand'=>'true', 'side'=> 'right','anchor'=> 'w')
|
@@ -5848,14 +5963,14 @@ class Finder < Findview
|
|
5848
5963
|
@controller = _controller
|
5849
5964
|
@forwards = true
|
5850
5965
|
@find_action = proc{
|
5851
|
-
do_find_next
|
5852
5966
|
hide
|
5967
|
+
do_find_next
|
5853
5968
|
}
|
5854
5969
|
@b_go.bind('1', @find_action)
|
5855
5970
|
|
5856
|
-
@b_replace.bind('1', proc{do_replace})
|
5971
|
+
@b_replace.bind('1', proc{hide; do_replace})
|
5857
5972
|
|
5858
|
-
@b_replace_all.bind('1', proc{do_replace_all})
|
5973
|
+
@b_replace_all.bind('1', proc{hide; do_replace_all})
|
5859
5974
|
|
5860
5975
|
@e_what_entry.bind_append('KeyRelease'){|e|
|
5861
5976
|
case e.keysym
|
@@ -5888,8 +6003,8 @@ class Finder < Findview
|
|
5888
6003
|
|
5889
6004
|
def do_replace
|
5890
6005
|
if do_find_next
|
5891
|
-
_message = Arcadia.text('ext.editor.search.d.replace.msg'[@e_what.value, @e_with.value])
|
5892
|
-
if
|
6006
|
+
_message = Arcadia.text('ext.editor.search.d.replace.msg', [@e_what.value, @e_with.value])
|
6007
|
+
if Arcadia.hinner_dialog(self, 'type'=>'yes_no', 'msg'=> _message, 'title' => "Replace", 'level' => 'question')=='yes'
|
5893
6008
|
self.editor.text.delete(@idx1,@idx2)
|
5894
6009
|
self.editor.text.insert(@idx1,@e_with.value)
|
5895
6010
|
self.editor.check_modify
|
@@ -5898,14 +6013,21 @@ class Finder < Findview
|
|
5898
6013
|
end
|
5899
6014
|
|
5900
6015
|
def do_replace_all
|
6016
|
+
show_dialog = true
|
6017
|
+
founds = []
|
5901
6018
|
while do_find_next
|
5902
|
-
|
5903
|
-
|
5904
|
-
if
|
6019
|
+
break if founds.include?(@idx1)
|
6020
|
+
founds << @idx1
|
6021
|
+
if show_dialog
|
6022
|
+
_message = Arcadia.text('ext.editor.search.d.replace.msg', [@e_what.value, @e_with.value])
|
6023
|
+
_rc = Arcadia.hinner_dialog(self, 'type'=>'yes_yesall_no_cancel', 'msg'=> _message, 'title' => "Replace", 'level' => 'question')
|
6024
|
+
end
|
6025
|
+
if _rc == 'yes' || _rc == 'yesall'
|
5905
6026
|
self.editor.text.delete(@idx1,@idx2)
|
5906
6027
|
self.editor.text.insert(@idx1,@e_with.value)
|
5907
6028
|
self.editor.check_modify
|
5908
|
-
|
6029
|
+
show_dialog = _rc != 'yesall'
|
6030
|
+
elsif _rc == 'cancel'
|
5909
6031
|
break
|
5910
6032
|
end
|
5911
6033
|
end
|
@@ -6017,7 +6139,9 @@ class Finder < Findview
|
|
6017
6139
|
@controller.chrono_bookmark_add(self.editor.file, _index)
|
6018
6140
|
else
|
6019
6141
|
_message = '"'+@e_what.value+'" not found'
|
6020
|
-
|
6142
|
+
Arcadia.hinner_dialog(self, 'type'=>'ok', 'msg'=> _message)
|
6143
|
+
|
6144
|
+
# TkDialog2.new('message'=>_message, 'buttons'=>['Ok']).show()
|
6021
6145
|
end
|
6022
6146
|
|
6023
6147
|
else
|