Compare commits
438 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
653d9b52ca | ||
|
|
d74711580b | ||
|
|
2a164bee4e | ||
|
|
70f51b7ba7 | ||
|
|
74a37fb2c1 | ||
|
|
f6f4797483 | ||
|
|
4ace576eb2 | ||
|
|
0b3084964c | ||
|
|
d3b6ab00a3 | ||
|
|
f4527705aa | ||
|
|
ae4c4a1f02 | ||
|
|
b5fa3955dd | ||
|
|
f7e3b71b94 | ||
|
|
ebd5557620 | ||
|
|
84c2846033 | ||
|
|
29e8fbfda8 | ||
|
|
9dc00aa39b | ||
|
|
cd7692cdc1 | ||
|
|
0d604bfd1d | ||
|
|
10257c5034 | ||
|
|
1b3cd9a11b | ||
|
|
125850f150 | ||
|
|
e6ab186571 | ||
|
|
c5e6c9608c | ||
|
|
576da864fb | ||
|
|
7606d014e2 | ||
|
|
0f37b84027 | ||
|
|
845f5863f9 | ||
|
|
fe6b57811c | ||
|
|
a583431a03 | ||
|
|
c4ad99c913 | ||
|
|
8e06c1de5c | ||
|
|
45c38ab3ec | ||
|
|
9005b25723 | ||
|
|
aece6108aa | ||
|
|
d2e7a8908a | ||
|
|
9287326291 | ||
|
|
a4ef4f64b3 | ||
|
|
c6bf32b0d2 | ||
|
|
578fcb1518 | ||
|
|
8a455a0077 | ||
|
|
e2331637af | ||
|
|
2de0f88d10 | ||
|
|
a1e7d262fd | ||
|
|
75056fa9c2 | ||
|
|
e5d7341e43 | ||
|
|
a8cede0052 | ||
|
|
036cf0b745 | ||
|
|
41964c458e | ||
|
|
a7ae8713d8 | ||
|
|
e80118de1e | ||
|
|
aa32586f94 | ||
|
|
c3dafa0af8 | ||
|
|
2078608012 | ||
|
|
5e4e1962bd | ||
|
|
95ecc1876d | ||
|
|
8dc07e2282 | ||
|
|
b9ac6ce4c4 | ||
|
|
7541b830ea | ||
|
|
1f83927462 | ||
|
|
14d55bdfe3 | ||
|
|
26f0a6bd4c | ||
|
|
5a1b42330f | ||
|
|
413a6b611f | ||
|
|
34276cf9ff | ||
|
|
45a4924686 | ||
|
|
cc085d4fb4 | ||
|
|
dbf6098e84 | ||
|
|
752b30166c | ||
|
|
443903b528 | ||
|
|
fc408c794c | ||
|
|
ddd5e41659 | ||
|
|
f63b140c14 | ||
|
|
f84424da44 | ||
|
|
21a4e9862a | ||
|
|
fc9bc61d9c | ||
|
|
90fd18f8a0 | ||
|
|
49335e62cf | ||
|
|
fd31261ec4 | ||
|
|
8c00238409 | ||
|
|
52389e9897 | ||
|
|
23322f4e47 | ||
|
|
f22918b494 | ||
|
|
3ff35270fc | ||
|
|
45bb80e92e | ||
|
|
582c63b042 | ||
|
|
53e2bfa06a | ||
|
|
46e103dea3 | ||
|
|
fb06395bf9 | ||
|
|
110264beb8 | ||
|
|
579005ae2e | ||
|
|
bd208273bc | ||
|
|
a587857b2c | ||
|
|
6b94ce24de | ||
|
|
bbb7f6a423 | ||
|
|
cc83b80022 | ||
|
|
069e9def30 | ||
|
|
6790cc4190 | ||
|
|
5171a20852 | ||
|
|
153a2d162b | ||
|
|
cc35ca76ff | ||
|
|
7f7aa6383e | ||
|
|
54ffda99c5 | ||
|
|
d0a1e792d6 | ||
|
|
cdc464b6cf | ||
|
|
62118654f7 | ||
|
|
a17080bde7 | ||
|
|
85e186bdd5 | ||
|
|
e6495beec7 | ||
|
|
69c4415452 | ||
|
|
076d08afc8 | ||
|
|
785af96859 | ||
|
|
46b02faac7 | ||
|
|
da8aed3f25 | ||
|
|
fa79f3b501 | ||
|
|
008c040171 | ||
|
|
eb73e209b4 | ||
|
|
1ecb99420c | ||
|
|
ef82d423b6 | ||
|
|
69e9807990 | ||
|
|
abd6560faf | ||
|
|
74eecb999e | ||
|
|
789078f86e | ||
|
|
09f7a56fdd | ||
|
|
3ffc6d1354 | ||
|
|
69d2788bfd | ||
|
|
b4656ca0f6 | ||
|
|
813c8de968 | ||
|
|
f5077b89a2 | ||
|
|
aa40d7f7c3 | ||
|
|
97e4d11dd2 | ||
|
|
3816be8336 | ||
|
|
353c99a182 | ||
|
|
b8ab9968f8 | ||
|
|
1d8663942e | ||
|
|
1b8dd87843 | ||
|
|
0ce1700dfc | ||
|
|
8167c67f35 | ||
|
|
6e0a168230 | ||
|
|
91fcca962d | ||
|
|
3e0d507a2a | ||
|
|
a864d5c889 | ||
|
|
dc0064ad70 | ||
|
|
8e893e3b9e | ||
|
|
d7def66cf3 | ||
|
|
5adc17d7bb | ||
|
|
bf82fd23e2 | ||
|
|
41d29c3bc0 | ||
|
|
1bd10f98c8 | ||
|
|
d302c35221 | ||
|
|
d460b380c1 | ||
|
|
9a2d98f7ca | ||
|
|
e5fa2afe3c | ||
|
|
5144e92e89 | ||
|
|
234f9b4aaa | ||
|
|
6b06d0a190 | ||
|
|
04d2ef8127 | ||
|
|
3829792e68 | ||
|
|
3eeebd274b | ||
|
|
1f2b5d0bf2 | ||
|
|
d53463f14e | ||
|
|
edfab46685 | ||
|
|
0050c7fedd | ||
|
|
eff9150f24 | ||
|
|
807ad0f957 | ||
|
|
6142843f4b | ||
|
|
b4d1019e71 | ||
|
|
cc1f36af2f | ||
|
|
790493b6d1 | ||
|
|
38c6cd28fa | ||
|
|
18d471be2c | ||
|
|
feb7f53e2c | ||
|
|
b7cd8aa30f | ||
|
|
1d02e3131d | ||
|
|
adcdb71894 | ||
|
|
2ee84a0c47 | ||
|
|
44219f008e | ||
|
|
0ef9c297cb | ||
|
|
b256912dee | ||
|
|
47c9f0a88f | ||
|
|
164341bedf | ||
|
|
dcf9ed7d26 | ||
|
|
fa248c5be1 | ||
|
|
fe5b1d8bf6 | ||
|
|
e6ed7d7cc4 | ||
|
|
c839beac25 | ||
|
|
67af8bb65f | ||
|
|
8350d3c609 | ||
|
|
a8c6f3a0dc | ||
|
|
ead5a9d46a | ||
|
|
0eadfdab00 | ||
|
|
b2deb54012 | ||
|
|
6bf310daae | ||
|
|
267fd50f24 | ||
|
|
d3c668f046 | ||
|
|
5a149166f8 | ||
|
|
6fe0f3a32c | ||
|
|
33a129a416 | ||
|
|
bbaab90515 | ||
|
|
c172289354 | ||
|
|
418631ee69 | ||
|
|
7aa89ed23b | ||
|
|
87c4f5f89a | ||
|
|
48e8d33c1f | ||
|
|
fd3f86a54b | ||
|
|
7de970fd69 | ||
|
|
e5d4045860 | ||
|
|
bcc81716ca | ||
|
|
a61c9e26be | ||
|
|
346a5326a6 | ||
|
|
b136a79bf3 | ||
|
|
7a8027e827 | ||
|
|
5c63257572 | ||
|
|
2969ef4e5b | ||
|
|
2d711fb2a5 | ||
|
|
7fdeeaab0a | ||
|
|
39df53117e | ||
|
|
04c66f735d | ||
|
|
38068bfa54 | ||
|
|
66367489f0 | ||
|
|
42f7a2647b | ||
|
|
6658f7e68e | ||
|
|
9def534470 | ||
|
|
a06f865151 | ||
|
|
aafa56c074 | ||
|
|
d94f2b6c06 | ||
|
|
5a626ed1cd | ||
|
|
f277d12854 | ||
|
|
06783b77ce | ||
|
|
66233e04e7 | ||
|
|
9391253fe7 | ||
|
|
a7938bb06c | ||
|
|
d3c6a5c832 | ||
|
|
4c571e5c75 | ||
|
|
e56af247a3 | ||
|
|
7894b9200c | ||
|
|
d0e693e35b | ||
|
|
4c7a09e531 | ||
|
|
ba61f9106c | ||
|
|
0184accc29 | ||
|
|
7c5a3204f9 | ||
|
|
a313071f90 | ||
|
|
3d4823f595 | ||
|
|
3363bac1e7 | ||
|
|
2fe197ea13 | ||
|
|
57f3631687 | ||
|
|
eb2288bdd4 | ||
|
|
140fdcb101 | ||
|
|
0a5f3f2ed8 | ||
|
|
ca47551edb | ||
|
|
119c53f3b2 | ||
|
|
646db05c55 | ||
|
|
931006ffa3 | ||
|
|
f2f99fe90d | ||
|
|
4621b1a295 | ||
|
|
9cb8d2ef4d | ||
|
|
5f7f6e3c1a | ||
|
|
535b597104 | ||
|
|
6228089962 | ||
|
|
ee35d4bf8a | ||
|
|
354951203d | ||
|
|
6fe7b317bd | ||
|
|
63cdef5285 | ||
|
|
bb6c8cfd67 | ||
|
|
e0807829c3 | ||
|
|
68b7272403 | ||
|
|
382da09901 | ||
|
|
b9722459c1 | ||
|
|
fe8d54ec2d | ||
|
|
e24ee26ed3 | ||
|
|
6c20164125 | ||
|
|
6596d3ad61 | ||
|
|
06d63407e5 | ||
|
|
da29d5ccf8 | ||
|
|
fd0b2c1f11 | ||
|
|
a28ce0f536 | ||
|
|
accd8565af | ||
|
|
330b02c955 | ||
|
|
da5a8d41bf | ||
|
|
52b6438159 | ||
|
|
cc1de06909 | ||
|
|
e58a5ff4d9 | ||
|
|
c92f2dc477 | ||
|
|
b8f5b935f2 | ||
|
|
eec36411ad | ||
|
|
460fb61766 | ||
|
|
a4b70dce82 | ||
|
|
cc6db36420 | ||
|
|
a75bdfc3cb | ||
|
|
fca8a760f5 | ||
|
|
6bd7be2389 | ||
|
|
34d29a5a11 | ||
|
|
bcc454e2c2 | ||
|
|
7911a949ad | ||
|
|
99cfb5d5d3 | ||
|
|
237b641a39 | ||
|
|
d69504de05 | ||
|
|
03a21b3bf4 | ||
|
|
c8d923204d | ||
|
|
21845d5179 | ||
|
|
bd949f2522 | ||
|
|
0aebf69193 | ||
|
|
e843f1a3a0 | ||
|
|
1731dbbbea | ||
|
|
b608145590 | ||
|
|
74de23cf5d | ||
|
|
49747a0e5c | ||
|
|
268dbfc437 | ||
|
|
b4e03627d9 | ||
|
|
d12a050c7a | ||
|
|
4da95789b5 | ||
|
|
9c53d95554 | ||
|
|
4c8a42c1c9 | ||
|
|
786fa303f9 | ||
|
|
8b69d2897a | ||
|
|
f030d16ded | ||
|
|
edce5fa76c | ||
|
|
48a04113b9 | ||
|
|
229460983e | ||
|
|
c383889d05 | ||
|
|
ade62dcdc0 | ||
|
|
e57eaf7f6b | ||
|
|
cbcef4c720 | ||
|
|
e9104c16a0 | ||
|
|
983942405c | ||
|
|
634a7af8cd | ||
|
|
993171cc92 | ||
|
|
5b665477fa | ||
|
|
7ce454ab5b | ||
|
|
1b331765a4 | ||
|
|
929e77f9fd | ||
|
|
ad1e4e98b9 | ||
|
|
b935ab305f | ||
|
|
74998e6057 | ||
|
|
f655805bbb | ||
|
|
5a96117b3d | ||
|
|
9b7b220a3d | ||
|
|
4f3b8596f2 | ||
|
|
e12e2653db | ||
|
|
3660b2e40e | ||
|
|
109d71e4f3 | ||
|
|
17c33e51cc | ||
|
|
307ef3a66f | ||
|
|
5f2c266cc1 | ||
|
|
3f7539d31f | ||
|
|
15f04c16de | ||
|
|
163b738c73 | ||
|
|
33b55b29e4 | ||
|
|
25cc70bee5 | ||
|
|
9fb7bd8750 | ||
|
|
e5199a8618 | ||
|
|
cd4fe6a60e | ||
|
|
091d2d7e59 | ||
|
|
a2ab4bc18f | ||
|
|
d41e3621a8 | ||
|
|
155483f40f | ||
|
|
a8168e41f7 | ||
|
|
fad303be9a | ||
|
|
2f22d74e21 | ||
|
|
d2ddc96a2b | ||
|
|
755941098e | ||
|
|
d28a6f66e0 | ||
|
|
2406863437 | ||
|
|
ac067f2b5a | ||
|
|
31d123edbc | ||
|
|
5eb7a78f1a | ||
|
|
bfbda999c0 | ||
|
|
01ca5acb99 | ||
|
|
b4cd30eb6b | ||
|
|
e1235cf14d | ||
|
|
0c9feecb21 | ||
|
|
2b3dacfa76 | ||
|
|
419692b3dc | ||
|
|
895b92b7b7 | ||
|
|
6850220b9c | ||
|
|
d75a7a3adb | ||
|
|
5da7a6aeec | ||
|
|
4f00ec2aa8 | ||
|
|
b56d1096be | ||
|
|
dc9d19f521 | ||
|
|
41041733c4 | ||
|
|
16257035ca | ||
|
|
4fde42e919 | ||
|
|
d08ac51fee | ||
|
|
1116365a43 | ||
|
|
9c05c8e31a | ||
|
|
3ce020c0e3 | ||
|
|
27ea52e5bd | ||
|
|
cc598490fa | ||
|
|
b361a0b6a5 | ||
|
|
2b4c5eafc8 | ||
|
|
e910f945b5 | ||
|
|
7a838227c7 | ||
|
|
d86582ebc6 | ||
|
|
d8d1fc6f67 | ||
|
|
0ee46ba55f | ||
|
|
e179a63b8c | ||
|
|
0018964637 | ||
|
|
7010d51bc7 | ||
|
|
7b09399ede | ||
|
|
a36e746d45 | ||
|
|
f7ec693b03 | ||
|
|
056dd6dedf | ||
|
|
1c8b0d1101 | ||
|
|
bc5d2eed97 | ||
|
|
35692e3f00 | ||
|
|
bb06087881 | ||
|
|
9442292c0f | ||
|
|
b1eba7ff3c | ||
|
|
d69a3724ac | ||
|
|
353fa0dff5 | ||
|
|
af241fffe7 | ||
|
|
227db9a10f | ||
|
|
2cf79f22a8 | ||
|
|
798a31a64f | ||
|
|
59a90c7030 | ||
|
|
ee1a4a5752 | ||
|
|
01ef664895 | ||
|
|
2f339302d1 | ||
|
|
aaf7723014 | ||
|
|
89751b430d | ||
|
|
b9de69d4e9 | ||
|
|
b4c7d6deaa | ||
|
|
71667d2912 | ||
|
|
fa704f5e2c | ||
|
|
967a7fb8ad | ||
|
|
3e7fb7f8b8 | ||
|
|
3e0abc6953 | ||
|
|
216a1e5350 | ||
|
|
ea3c98c65f | ||
|
|
fb1c754532 | ||
|
|
3585de0f21 | ||
|
|
3bd4fc0305 | ||
|
|
0e355074cd | ||
|
|
7e6249ef3f | ||
|
|
af2a000af1 | ||
|
|
1a9efa6e5b | ||
|
|
dd97978d56 |
9
.mailmap
9
.mailmap
@@ -1,9 +0,0 @@
|
||||
#
|
||||
# This list is used by git-shortlog to fix a few botched name translations
|
||||
# in the git archive, either because the author's full name was messed up
|
||||
# and/or not always written the same way, making contributions from the
|
||||
# same person appearing not to be so.
|
||||
#
|
||||
|
||||
Christoph Kubisch <pixeljetstream@luxinia.de> <crazybutcher@d4a214e2-3791-4833-b182-d171351aa34e>
|
||||
Eike Decker <zet23t@googlemail.com> <zet23t@d4a214e2-3791-4833-b182-d171351aa34e>
|
||||
365
CHANGELOG.md
365
CHANGELOG.md
@@ -1,5 +1,370 @@
|
||||
# ZeroBrane Studio Changelog
|
||||
|
||||
## v1.20 (Oct 08 2015)
|
||||
|
||||
### Highlights
|
||||
- Added symbol indexing of project files for project-wide search.
|
||||
- Added support for `file@symbol` fuzzy search (#385).
|
||||
- Added processing of `ini` setting relative to the IDE location (#483).
|
||||
- Improved memory handling for large files.
|
||||
- Improved application performance and memory usage.
|
||||
- Improved auto-complete order of results and suggestions for case-sensitive matches.
|
||||
- Updated Windows launcher to add dpi awareness for high dpi monitors.
|
||||
- Upgraded Lua 5.3 interpreter to 5.3.1.
|
||||
- Fixed a memory leak after a search panel is opened.
|
||||
- Fixed an occasional crash from the filetree on Linux (#425, #464).
|
||||
- Fixed recursive file traversal to skip directories when mask is specified.
|
||||
|
||||
### Special thanks
|
||||
- To [riidom](https://github.com/riidom) for German translation update.
|
||||
- To [Yonaba](https://github.com/Yonaba/) for French translation update.
|
||||
- To [Leo Bartoloni](https://github.com/bartoleo) for Italian translation update.
|
||||
- To [Christoph Kubisch](https://github.com/pixeljetstream) for glslc updates.
|
||||
- To Brigham Toskin for auto-complete improvements.
|
||||
- To Joergen von Bargen for optimized UTF8 validation.
|
||||
- To Nick Smith for Marmalade interpreter updates.
|
||||
|
||||
### Improvements
|
||||
- Added handling of translation messages that require pluralization (#70).
|
||||
- Added check for non-zero file size before reporting load progress (#530).
|
||||
- Added switching interpreters by clicking on the interpreter label in the status bar.
|
||||
- Added handling of editor commands (Copy/Paste/SelectAll/Undo/Redo) in search panel controls.
|
||||
- Added position to the end-of-file lexer token (closes #529).
|
||||
- Added reporting when a file can't be removed from a project tree.
|
||||
- Added explicit initialization for `editor.autoactivate` default setting.
|
||||
- Added allowing `editor.saveallonrun` with `infervalue` static analyzer (closes #524).
|
||||
- Added support for `include` command in config files.
|
||||
- Added document `Close` method (#166).
|
||||
- Added descriptions for new Lua 5.3 `math.*` and `coroutine.*` functions.
|
||||
- Added functions new to Lua 5.3 to the list of keywords.
|
||||
- Added reporting of deserialization failures for saved package data.
|
||||
- Added collapsing white spaces from names shown in the Outline.
|
||||
- Added workaround for a memory leak in wxlua after a search panel is opened.
|
||||
- Added jumping to the current function in the outline (#515).
|
||||
- Added highlighting current functions for better visibility (#515).
|
||||
- Added skipping unneded fields from the symbol index to reduce memory usage (#515).
|
||||
- Added showing position of the current function in the Outline (closes #515).
|
||||
- Added explicit editor destroy during find and replace to conserve memory.
|
||||
- Added explicit editor destroy during symbol indexing to conserve memory.
|
||||
- Added turning jitting on when running under LuaJIT.
|
||||
- Added `Run to Cursor` to the popup menu in the editor (#413).
|
||||
- Added showing memory usage stats in the status bar configured by `showmemoryusage`.
|
||||
- Added skipping opening a file from symbol search when nothing is matched.
|
||||
- Added skipping directories during directory traversal (#499).
|
||||
- Added `SetStatusFor` package method to set temporary status (#166).
|
||||
- Added forcing immediate refresh of symbol index when requested from the menu (#499).
|
||||
- Added `onMenuOutput` event (#166).
|
||||
- Added `onMenuWatch` event (#166).
|
||||
- Added disabling symbol indexing for directories/projects (#499).
|
||||
- Added refreshing of symbol index to the project menu (#499).
|
||||
- Added reporting of the number of files queued for indexing (#499).
|
||||
- Added reporting when indexing is completed (#499).
|
||||
- Added `GetOutline` package method (#166, #499).
|
||||
- Added exclusion to not report `arg` as global in static analysis (closes #503).
|
||||
- Added `commandbar.width` to set the width of command bar.
|
||||
- Added skipping symbol index queue when symbol inactivity is not set (#499).
|
||||
- Added setting different types of indentation guides.
|
||||
- Added optimization with prefiltering for short patterns (#31, #499).
|
||||
- Added status message during index update (#499).
|
||||
- Added purging of outdated cache for symbol indexing (#499).
|
||||
- Added symbol processing of tabs that are not saved yet (#499).
|
||||
- Added indexing of project files (#499).
|
||||
- Added `commandbar.maxitems` configuration setting (#499).
|
||||
- Added caching of symbols for open files (#499).
|
||||
- Added support for `file.lua@symbol` fuzzy search (#385).
|
||||
- Added symbol search in all open files (#385).
|
||||
- Added check to avoid loops in type assignment during auto-complete (#498).
|
||||
- Added primitive handling of `require` in type assignments for known APIs (fixes #498).
|
||||
- Added support for aborting file reading callback (#491).
|
||||
- Added progress display when loading large files (#491).
|
||||
- Added status methods: `GetStatus`, `PushStatus`, and `PopStatus` (#166).
|
||||
- Added `onMenuOutline` callback (#166, #337).
|
||||
- Added ability to toggle outline sorting from the local menu (#337, #494).
|
||||
- Added activating Output panel after compilation errors.
|
||||
- Added package `SetStatus` method (#166).
|
||||
- Added `Ctrl/Cmd-Enter`/`Ctrl/Cmd-Shift-Enter` to add line after/before the current one (#334).
|
||||
- Added ignoring current selection in auto-complete with `Shift-Enter` (closes #494).
|
||||
- Added hiding auto-complete after typing one of the offered options (#494).
|
||||
- Added activating Output notebook to show search results if it's hidden (#416).
|
||||
- Added reporting of errors when unable to open file for static analysis.
|
||||
- Added collapsing whitespaces in function parameters in the outline (#337).
|
||||
- Added emphasis for the preference type in the config file template.
|
||||
- Added `FileSize` method as the default one returns non-zero result for non-existing files.
|
||||
- Added reporting of `FileWrite` failing to write the entire content.
|
||||
- Added package methods `AddIndicator`, `GetIndicator`, and `RemoveIndicator` (#166).
|
||||
- Added missing `Detach Process` id to keymap (pkulchenko/MobDebug#19).
|
||||
- Added a check for `ini` setting pointing to a path with a writeable directory (#483).
|
||||
- Added a check for `ini` setting pointing to a directory (#483).
|
||||
- Added processing of `ini` setting relative to the IDE location (closes #483).
|
||||
- Added Watch view refresh after switching focus when needed.
|
||||
- Added Stack view refresh after switching focus when needed.
|
||||
- Added forced `Refresh`/`Update` to improve redrawing of commandbar on Windows 8.
|
||||
- Added a check for a window to be shown to avoid callback recursion on OSX (fixes #473).
|
||||
- Added package `IsWindowShown` method (#166).
|
||||
- Added package `onEditorPreClose` event (#166, closes #461).
|
||||
- Added deleting the rest of the word on auto-complete (`acandtip.droprest`).
|
||||
- Added closing editor tab when renaming to an open file from the project tree.
|
||||
- Added refresh of the target file after renaming from the project tree.
|
||||
- Added a check for object with a focus (occasionally triggered on Linux).
|
||||
- Added workaround to fix crash on Linux from the project tree (#425, #464).
|
||||
- Added `DoWhenIdle` package method (#166).
|
||||
- Disabled unhiding one of wxwidgets windows that is only used for message passing (Windows).
|
||||
- Disabled initial highlight when showing current function disabled in the outline (#515).
|
||||
- Disabled dragging out search results tab to avoid unexpected results (#416).
|
||||
- Enabled compilation during running/debugging (closes #479).
|
||||
- Enabled static analysis during running/debugging (#479).
|
||||
- Integrate ZeroBrane with Marmalade's Hub GUI
|
||||
- Improved auto-complete suggestions for case-sensitive matches.
|
||||
- Improved compactness of saved package settings (#166, #499).
|
||||
- Improved performance of saving symbol index data (#499).
|
||||
- Improved memory usage when closing large files (#491).
|
||||
- Improved handling of large files (#491).
|
||||
- Improved the order of results in auto-complete (closes #469).
|
||||
- glslc tool: add menu option for pre-process mode
|
||||
- Optimized saving package settings (#166, #499).
|
||||
- Optimized UTF8 validation (thanks to Joergen von Bargen).
|
||||
- Optimized handling of multi-line changes in the editor (closes #477).
|
||||
- Removed forced garbage collection as it led to crashes on Linux (#425, closes #464).
|
||||
- Revised: auto-complete results (amends #469, w/@pkulchenko patch)
|
||||
- Switched to the bottom location for the search results by default (#416).
|
||||
- Updated italian translations (thanks to Leo Bartoloni)
|
||||
- Updated Russian translation (#70).
|
||||
- Update de.lua (thanks to riidom)
|
||||
- Updated french translation as of commit (thanks to Yonaba)
|
||||
- Updated translation files for new messages (#70).
|
||||
- Updated translation logic to accept empty tables for pluralization values (#70).
|
||||
- Updated build scripts to use the most recent releases of LuaJIT and Lua 5.2.
|
||||
- Updated OSX launcher to keep `DYLD_LIBRARY_PATH` if already set.
|
||||
- Updated build scripts to use the most recent releases of LuaJIT and Lua 5.2.
|
||||
- Update marmalade API definition to 7.9
|
||||
- Updated static analyzer (luainspect) to take globals in 'required' files into account (#520).
|
||||
- Updated static analyzer to refresh cache of 'required' modules (#520).
|
||||
- Updated C/cpp spec to skip `if(...)` from the list of functions.
|
||||
- Updated C/cpp spec to properly handle functions at the beginning of a file.
|
||||
- Updated package data serialization to use simpler dumper for faster processing.
|
||||
- Updated saving symbol index to be called less frequently (#499).
|
||||
- Updated list of fields to skip from saved symbol index (#499).
|
||||
- Updated Run/Debug to not force saving new tabs when `Start` file is set.
|
||||
- Updated interpreter handling to allow setting of default value in the config (closes #518).
|
||||
- Updated highlighting of the current function in the Outline to select one item (#515).
|
||||
- Updated auto-complete to close when one of the options matches the current input.
|
||||
- Updated applying limit to the commandbar results to allow them to be resorted.
|
||||
- Updated status messages for better visibility on OSX during index refresh (#499).
|
||||
- Updated tracking of editor updates to skip unneeded notifications on OSX (#499).
|
||||
- Updated symbol refresh to do processing as soon as the path is known (#499).
|
||||
- Updated symbol index to skip unused elements in serialization (#499).
|
||||
- Updated prefiltering to limit prefix to avoid penalty for long `s.*s.*s...` (#31).
|
||||
- Updated package `SetSettings` method to allow passing of additional parameters (#166).
|
||||
- Updated status of files indexing for symbol search (#499).
|
||||
- Updated `DoWhenIdle` handling to gracefully handle a long queue.
|
||||
- Updated `Go To Symbol` to refresh files loaded in the preview (#499, #385).
|
||||
- Updated symbol search to only refresh outline when it's not populated (#385).
|
||||
- Updated search logic to avoid showing search results in recent files (#416).
|
||||
- Updated line number handling to adjust for large files (#491).
|
||||
- Updated `busted` interpreter to check for proper extension on Windows (closes #495).
|
||||
- Updated handling of binary and utf8 validness checks for large files (#491).
|
||||
- Updated build scripts for Lua 5.3 to use 5.3.1.
|
||||
- Updated toolbar to show large icons by default on large screens.
|
||||
- Updated outline to only retrieve entry text when there are tokens to process (#337).
|
||||
- Updated getting text length without requesting editor content.
|
||||
- Updated showing function indicator handling to allow for easier enabling.
|
||||
- Updated indicator processing to use new API.
|
||||
- Updated ID references in toolbar to use the new access method.
|
||||
- Updated ID references in keymap to use the new access method.
|
||||
- Updated `Detach Process` to allow access to it while the process is running.
|
||||
- Updated metalua/static analyzer to accept long integer and imaginary numbers (closes #482).
|
||||
- Updated internal parser to accept long integer, imaginary, and floating point hex numbers (#482).
|
||||
- Updated internal parser to accept numbers that start with a period (#482).
|
||||
- Updated compilation and static analysis to keep output when running/debugging (#479).
|
||||
- Updated indentation after strings with brackets and escaped quotes (#324).
|
||||
- Updated `AnalyzeString` to add filename parameter (closes #463).
|
||||
- Updated Windows launcher to add dpi awareness for high dpi monitors.
|
||||
- Upgraded Lua 5.3 interpreter to 5.3.1 on Linux (x86 and x64).
|
||||
- Upgraded Lua 5.3 interpreter to 5.3.1 on OSX.
|
||||
- Upgraded Lua 5.3 interpreter to 5.3.1 on Windows (closes #453, closes #460).
|
||||
- Upgraded Mobdebug (0.628) to include `keyignore` serializer option.
|
||||
- Upgraded Mobdebug (0.627) to improve debugging of code with overloaded `string` methods.
|
||||
- Upgraded Mobdebug (0.624) to make `DONE` async and to add `__tostring` protection (closes #446).
|
||||
|
||||
### Fixes
|
||||
- Fixed text search and fuzzy symbol search in symlinks (#458, #530).
|
||||
- Fixed opening only one tab for external debugging of dynamic code on Linux (closes #526).
|
||||
- Fix live picking up debug vs release binaries (Marmalade)
|
||||
- Fixed highlighting for those specs that don't have information on where functions end (#515).
|
||||
- Fixed highlighting the current function when anonymous functions are hidden (#515).
|
||||
- Fixed styling of comments that include markup inside markup (fixes #514).
|
||||
- Fixed updating symbols in new files that haven't been indexed yet (#499).
|
||||
- Fixed opening empty files (fixes #510).
|
||||
- Fixed autocomplete for words that may include underscores in suggestions.
|
||||
- Fixed crash on OSX during symbol indexing when filetree menu is open (#499).
|
||||
- Fixed crash on Linux during symbol indexing when filetree menu is open (fixes #507).
|
||||
- Fixed duplicates between variables and dynamic words in auto-complete.
|
||||
- Fixed uncommenting of the last line in the selection to keep un/comment reversible (fixes #509).
|
||||
- Fixed assignment parsing when the type value is re-assigned (#498).
|
||||
- Fixed mouse selection in auto-complete on OSX (fixes #496).
|
||||
- Fixed fuzzy file search to not double open already opened files (#31).
|
||||
- Fixed indentation of lines that end with partial long strings with opening brackets (#324).
|
||||
- Fixed indentation of lines with long strings that include opening brackets (#324).
|
||||
- Fixed indicators on table fields after variables that look like multiple assignments (#492).
|
||||
- Fixed indicators on table fields after variables (fixes #492).
|
||||
- Fixed variable usage based on static analysis.
|
||||
- Fixed initial select-and-find search.
|
||||
- Fixed returning focus to the editor after find-in-files followed by page search (#416).
|
||||
- Fixed performance of initial fuzzy search for line numbers (closes #476).
|
||||
- Fixed Output tab name when debugging aborted after run-time error.
|
||||
- Fixed recursive file traversal to skip directories when mask is specified.
|
||||
- Fixed crash in `collectgarbage` from the filetree on Linux (#425, #464).
|
||||
|
||||
## v1.10 (May 13 2015)
|
||||
|
||||
### Highlights
|
||||
- Redesigned search functionality; added incremental search and replace-in-files preview.
|
||||
- Updated love2d API for v0.9.2.
|
||||
- Upgraded Mobdebug (0.62) to add vararg processing.
|
||||
- Added `excludelist`/`binarylist` to exclude files and folders.
|
||||
- Added skipping binary files during find-in-files and fuzzy search.
|
||||
|
||||
### Special thanks
|
||||
- To [David Feng](https://github.com/DavidFeng) for fixing a broken symbolic link.
|
||||
- To [Robert Machmer](https://github.com/rm-code) for updated German translation and fixes for love2d engine name/description.
|
||||
- To [Derek Bailey](https://github.com/dbaileychess) for adding context menu item to update the contents of the tree.
|
||||
|
||||
### Improvements
|
||||
- Added closing search results with `Close Page` for consistency (#416).
|
||||
- Added option to show search results in multipe tabs (#416).
|
||||
- Added package `IsValidCtrl` method (#166).
|
||||
- Added skipping binary files in commandbar (#31, #455).
|
||||
- Added handling of `**` in exclusion masks (#455).
|
||||
- Added `excludelist`/`binarylist` to exclude files and folders (closes #455).
|
||||
- Added `search.autohide` option to hide search panel after search (#416).
|
||||
- Added `debugger.requestattention` to configure focus switch (closes #449).
|
||||
- Added closing search panel on `Escape` in the editor (closes #450, #416).
|
||||
- Added `search.zoom` setting to zoom search results (#416).
|
||||
- Added warning when interpreter can't be loaded and the default one is used.
|
||||
- Added support for `wxImage` used in `imagemap` (#436).
|
||||
- Added icon tint processing (`imagetint` option).
|
||||
- Added `search.contextlinesbefore`/`search.contextlinesafter` settings (#416).
|
||||
- Added `search.autocomplete` setting do configure search autocomplete (#416).
|
||||
- Added auto-complete for find and replace fields (#416).
|
||||
- Added saving search settings between restarts (#416).
|
||||
- Added deleting of protected text in Cut/Paste operations (closes #412).
|
||||
- Added refresh context menu item to update the contents of the tree (thanks to Derek Bailey).
|
||||
- Added ignoring assignment in comments for auto-complete.
|
||||
- Added preview screen to check changes in replace-in-files (#416).
|
||||
- Added search toolbar button to set/unset context in search results (#416).
|
||||
- Allowed for larger default size of docked panels (#424).
|
||||
- Allowed closing `Search Results` tab while search is in progress (#416).
|
||||
- Disabled refresh when `outlineinactivity=nil` and `showonefile=true` (#337).
|
||||
- Improved incremental processing to avoid marking table fields as variables.
|
||||
- Improved logic to skip binary files during search (#416).
|
||||
- Moved cancelling auto-complete popup to idle event (fixed #447).
|
||||
- Moved winapi dll to `clibs` folder to avoid conflict with other winapi versions.
|
||||
- Optimized `Go To File` file traversal in commandbar (#31).
|
||||
- Redesigned the search panel (closes #416; closes #398).
|
||||
- Removed option to request attention from breakpoint activation (#449, closes #454).
|
||||
- Removed warnings from loose parser to stop polluting stderr on Linux (#425).
|
||||
- Removed hardcoded references to menu positions to simplify adding new items.
|
||||
- Removed saving .bak files as it's replaced by replace-in-files preview (#416).
|
||||
- Reorganized folding to allow more editor-like components to be foldable.
|
||||
- Switched to using `wxFileSize` instead of `Length` (fixes #458).
|
||||
- Updated event documentation.
|
||||
- Upgraded Mobdebug (0.62) to add vararg processing.
|
||||
- Updated build files to use release version of Lua 5.3 (#453).
|
||||
- Updated Corona interpreter to allow debugging on Linux using Wine.
|
||||
- Updated folder traversing logic to limit number of open folders (fixes #441).
|
||||
- Update Readme.md to use correct name for the LOVE framework (thanks to Robert Machmer).
|
||||
- Updated Linux build scripts to add `debug` option.
|
||||
- Updated love2d interpreter to use proper engine name/description (closes #433) (thanks to Robert Machmer).
|
||||
- Updated german translation (#432, #70).
|
||||
- Updated love2d APU for v0.9.2 (#247).
|
||||
- Update german translation (thanks to Robert Machmer).
|
||||
- Updated `Select and Find` to capture selection for subsequent use (#416).
|
||||
- Updated `Find Next/Prev` to continue search using the current find text (#416).
|
||||
- Updated unfolding of folded lines before delete or overwrite.
|
||||
- Updated folding to collapse only when clicked on the header.
|
||||
- Updated config samples to use `ID.code` instead of obsolete `G.ID_code`.
|
||||
|
||||
### Fixes
|
||||
- Fixed crash on Windows by disabling events in Outline refresh (fixes #442).
|
||||
- Fixed file traversing not to match `foo.bar!` for `*.bar' mask (#416).
|
||||
- Fixed showing of not translated messages that require pluralization.
|
||||
- fix broken symbolic link (thanks to David Feng).
|
||||
- Fixed an empty popup (that could lead to a crash) when dynamic words is on.
|
||||
- Fixed commandbar positioning on Linux affected by 5b665477 (#31).
|
||||
- Fixed loose parser to handle multiple assignments (fixes #430).
|
||||
- Fixed editor activation after dragging of inactive tab (fixes #427).
|
||||
- Fixed indentation after comment with markdown markup (closes #428, #324).
|
||||
- Fixed auto-complete issue causing looping warning (#143).
|
||||
- Fix commandbar position with split editor tabs (#31).
|
||||
- Fixed re-indenting of selection with comments at the top of the file (#324).
|
||||
- Fixed restoring pane size after hide/show operations (fixes #424).
|
||||
|
||||
### Incompatibilities
|
||||
- Removed saving .bak files as it's replaced by replace-in-files preview.
|
||||
|
||||
## v1.00 (Mar 13 2015)
|
||||
|
||||
### Highlights
|
||||
- Added directory mapping to the project tree (closes #223).
|
||||
- Added `Run to Cursor` (closes #413).
|
||||
- Added support to set/unset start file for a project (closes #411).
|
||||
- Added opening/creating file from the command bar (#31).
|
||||
- Added `staticanalyzer.infervalue` to enable deeper/slower analysis (#414).
|
||||
- Updated Corona API for v2015.2576.
|
||||
|
||||
### Improvements
|
||||
- Added `staticanalyzer.infervalue` to enable deeper/slower analysis (#414).
|
||||
- Added project path in the error reporting for love2d/corona interpreters.
|
||||
- Added an example with enabling Emacs bindings in the editor.
|
||||
- Added Russian translations for new messages (#70).
|
||||
- Added a warning on class resolution taking too much time in auto-complete.
|
||||
- Added check for empty/comment lines when breakpoints are set.
|
||||
- Added directory mapping to the project tree (closes #223).
|
||||
- Added `Run to Cursor` (closes #413).
|
||||
- Added document method `GetTabText` (#166).
|
||||
- Added showing love2d console when requested.
|
||||
- Added support to set/unset start file for a project (closes #411).
|
||||
- Added requesting attention for debugger even when the file is not activated.
|
||||
- Added reporting of location in more cases when debugging is suspended.
|
||||
- Added starting debugging even when the file is not opened in the IDE.
|
||||
- Added switching project directory from the command bar (#31).
|
||||
- Added trimming of trailing spaces in the directory name when switching projects.
|
||||
- Added closing preview if the file failed to load in commandbar (#31).
|
||||
- Added handling of `Ctrl/Cmd-Enter` in commandbar to force open file (#31).
|
||||
- Added skipping loading files with empty and directory names.
|
||||
- Added trimming of trailing spaces in the file name when loading a file.
|
||||
- Added file selection in the project tree after saving a new file.
|
||||
- Added opening/creating file from the command bar (#31).
|
||||
- Disabled menu item for renaming/editing for mapped directories (#223).
|
||||
- Disabled field checks for local parameters in staic analyzer (closes #421).
|
||||
- Improved static analyzer to handle more cases with `infervalue` set (#414).
|
||||
- Refactored use of image constants in the project tree.
|
||||
- Refactored document modification tracking to remove `SetDocumentModified`.
|
||||
- Refactored path normalization for project directory.
|
||||
- Updated Corona API for v2015.2576.
|
||||
- Updated static analyzer output formatting.
|
||||
- Updated analyzer to also check value of `pairs` parameter (#414).
|
||||
- Updated `debugging suspended` message to not trigger with `runonstart`.
|
||||
- Updated messages in interpreters to fix line endings.
|
||||
- Updated lettercase in menu items for consistency.
|
||||
- Updated UpdateUI handling to fix multi-view refresh, as in DocumentMap (#352).
|
||||
- Updated Outline to use editor tab text (instead of a file name).
|
||||
- Updated message on failure to start debugging to add the file name.
|
||||
- Updated `debugging suspended` message to put location in quotes.
|
||||
- Updated line check in command bar to not trigger on Windows file names.
|
||||
- updated glewgl api (glew 1.12.0)
|
||||
|
||||
### Fixes
|
||||
- Fixed analyzer to check value of `ipairs` parameter (fixes #414).
|
||||
- Fixed OS detection on Linux that sets `DYLD_LIBRARY_PATH` (fixes #417).
|
||||
- Fixed saving auto-recovery record with no editor tabs opened (fixes #418).
|
||||
- Fixed looping in auto-complete when processing recursive assignments.
|
||||
- Fixed filename used in the recovery message.
|
||||
- Fixed Output/Console window to stay shown after failure to start debugging.
|
||||
- Fixed an issue with search initiated from Output/Console panels (fixes #406).
|
||||
- Fixed auto-complete for non-default `acandtip.strategy` values (fixed #409).
|
||||
- Fixed loading file with absolute name and line number (fixes #408).
|
||||
|
||||
## v0.95 (Jan 30 2015)
|
||||
|
||||
### Highlights
|
||||
|
||||
@@ -7,7 +7,7 @@ and debugging support for several Lua engines
|
||||
[Lua 5.2](http://studio.zerobrane.com/doc-lua52-debugging),
|
||||
[Lua 5.3](http://studio.zerobrane.com/doc-lua53-debugging),
|
||||
[LuaJIT](http://studio.zerobrane.com/doc-luajit-debugging),
|
||||
[Löve 2D](http://notebook.kulchenko.com/zerobrane/love2d-debugging),
|
||||
[LÖVE](http://notebook.kulchenko.com/zerobrane/love2d-debugging),
|
||||
[Moai](http://notebook.kulchenko.com/zerobrane/moai-debugging-with-zerobrane-studio),
|
||||
[Gideros](http://notebook.kulchenko.com/zerobrane/gideros-debugging-with-zerobrane-studio-ide),
|
||||
[Corona](http://notebook.kulchenko.com/zerobrane/debugging-and-live-coding-with-corona-sdk-applications-and-zerobrane-studio),
|
||||
@@ -36,7 +36,7 @@ for [Lua 5.1](http://studio.zerobrane.com/doc-lua-debugging),
|
||||
and [other Lua engines](http://studio.zerobrane.com/documentation#debugging).
|
||||
* [Live coding](http://studio.zerobrane.com/documentation#live_coding)
|
||||
with [Lua](http://notebook.kulchenko.com/zerobrane/live-coding-in-lua-bret-victor-style),
|
||||
[Löve 2D](http://notebook.kulchenko.com/zerobrane/live-coding-with-love),
|
||||
[LÖVE](http://notebook.kulchenko.com/zerobrane/live-coding-with-love),
|
||||
[Gideros](http://notebook.kulchenko.com/zerobrane/gideros-live-coding-with-zerobrane-studio-ide),
|
||||
[Moai](http://notebook.kulchenko.com/zerobrane/live-coding-with-moai-and-zerobrane-studio),
|
||||
[Corona SDK](http://notebook.kulchenko.com/zerobrane/debugging-and-live-coding-with-corona-sdk-applications-and-zerobrane-studio),
|
||||
|
||||
@@ -243,6 +243,12 @@ return {
|
||||
args = "(...)",
|
||||
returns = "()",
|
||||
},
|
||||
isyieldable = {
|
||||
type = "function",
|
||||
description = "Returns true when the running coroutine can yield. A running coroutine is yieldable if it is not the main thread and it is not inside a non-yieldable C function.\nFUNCTION ADDED IN Lua 5.3.",
|
||||
args = "()",
|
||||
returns = "(boolean)",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -617,6 +623,14 @@ return {
|
||||
type = "value",
|
||||
description = "The value of pi.",
|
||||
},
|
||||
mininteger = {
|
||||
type = "value",
|
||||
description = "An integer with the minimum value for an integer.\nVALUE ADDED IN Lua 5.3.",
|
||||
},
|
||||
maxinteger = {
|
||||
type = "value",
|
||||
description = "An integer with the maximum value for an integer.\nVALUE ADDED IN Lua 5.3.",
|
||||
},
|
||||
pow = {
|
||||
type = "function",
|
||||
description = "Returns x^y.\n(You can also use the expression x^y to compute this value.)",
|
||||
@@ -671,6 +685,24 @@ return {
|
||||
args = "(x: number)",
|
||||
returns = "(number)",
|
||||
},
|
||||
type = {
|
||||
type = "function",
|
||||
description = [[Returns "integer" if x is an integer, "float" if it is a float, or nil if x is not a number.\nFUNCTION ADDED IN Lua 5.3.]],
|
||||
args = "(x: number)",
|
||||
returns = "(string)",
|
||||
},
|
||||
tointeger = {
|
||||
type = "function",
|
||||
description = "If the value x is convertible to an integer, returns that integer. Otherwise, returns nil.\nFUNCTION ADDED IN Lua 5.3.",
|
||||
args = "(x: number)",
|
||||
returns = "(number)",
|
||||
},
|
||||
ult = {
|
||||
type = "function",
|
||||
description = "Returns a boolean, true if integer m is below integer n when they are compared as unsigned integers.\nFUNCTION ADDED IN Lua 5.3.",
|
||||
args = "(m: number, n: number)",
|
||||
returns = "(boolean)",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
1228
api/lua/corona.lua
1228
api/lua/corona.lua
File diff suppressed because it is too large
Load Diff
@@ -1082,6 +1082,8 @@ GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C,
|
||||
GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D,
|
||||
GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E,
|
||||
GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F,
|
||||
GL_COPY_READ_BUFFER_BINDING = 0x8F36,
|
||||
GL_COPY_WRITE_BUFFER_BINDING = 0x8F37,
|
||||
GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9,
|
||||
GL_VERTEX_ATTRIB_ARRAY_LONG = 0x874E,
|
||||
GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221,
|
||||
@@ -1811,7 +1813,7 @@ GL_ALREADY_SIGNALED = 0x911A,
|
||||
GL_TIMEOUT_EXPIRED = 0x911B,
|
||||
GL_CONDITION_SATISFIED = 0x911C,
|
||||
GL_WAIT_FAILED = 0x911D,
|
||||
GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
|
||||
//GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
|
||||
GL_PATCHES = 0xE,
|
||||
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0,
|
||||
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1,
|
||||
@@ -2119,6 +2121,8 @@ GL_HSL_HUE_KHR = 0x92AD,
|
||||
GL_HSL_SATURATION_KHR = 0x92AE,
|
||||
GL_HSL_COLOR_KHR = 0x92AF,
|
||||
GL_HSL_LUMINOSITY_KHR = 0x92B0,
|
||||
GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB,
|
||||
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC,
|
||||
GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002,
|
||||
//GL_STACK_OVERFLOW = 0x0503,
|
||||
//GL_STACK_UNDERFLOW = 0x0504,
|
||||
@@ -2276,6 +2280,10 @@ GL_MINUS_CLAMPED_NV = 0x92B3,
|
||||
GL_INVERT_OVG_NV = 0x92B4,
|
||||
GL_COMPUTE_PROGRAM_NV = 0x90FB,
|
||||
GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC,
|
||||
GL_CONSERVATIVE_RASTERIZATION_NV = 0x9346,
|
||||
GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347,
|
||||
GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348,
|
||||
GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349,
|
||||
GL_DEPTH_STENCIL_TO_RGBA_NV = 0x886E,
|
||||
GL_DEPTH_STENCIL_TO_BGRA_NV = 0x886F,
|
||||
GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0,
|
||||
@@ -2317,6 +2325,7 @@ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58,
|
||||
GL_ALL_COMPLETED_NV = 0x84F2,
|
||||
GL_FENCE_STATUS_NV = 0x84F3,
|
||||
GL_FENCE_CONDITION_NV = 0x84F4,
|
||||
GL_FILL_RECTANGLE_NV = 0x933C,
|
||||
GL_FLOAT_R_NV = 0x8880,
|
||||
GL_FLOAT_RG_NV = 0x8881,
|
||||
GL_FLOAT_RGB_NV = 0x8882,
|
||||
@@ -2335,6 +2344,8 @@ GL_FLOAT_RGBA_MODE_NV = 0x888E,
|
||||
GL_FOG_DISTANCE_MODE_NV = 0x855A,
|
||||
GL_EYE_RADIAL_NV = 0x855B,
|
||||
GL_EYE_PLANE_ABSOLUTE_NV = 0x855C,
|
||||
GL_FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD,
|
||||
GL_FRAGMENT_COVERAGE_COLOR_NV = 0x92DE,
|
||||
GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868,
|
||||
GL_FRAGMENT_PROGRAM_NV = 0x8870,
|
||||
GL_FRAGMENT_PROGRAM_BINDING_NV = 0x8873,
|
||||
@@ -2344,6 +2355,20 @@ GL_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5,
|
||||
GL_MAX_PROGRAM_IF_DEPTH_NV = 0x88F6,
|
||||
GL_MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7,
|
||||
GL_MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8,
|
||||
//GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
//GL_RASTER_MULTISAMPLE_EXT = 0x9327,
|
||||
//GL_RASTER_SAMPLES_EXT = 0x9328,
|
||||
//GL_MAX_RASTER_SAMPLES_EXT = 0x9329,
|
||||
//GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A,
|
||||
//GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B,
|
||||
//GL_EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C,
|
||||
//GL_DEPTH_SAMPLES_NV = 0x932D,
|
||||
//GL_STENCIL_SAMPLES_NV = 0x932E,
|
||||
//GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F,
|
||||
//GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330,
|
||||
//GL_COVERAGE_MODULATION_TABLE_NV = 0x9331,
|
||||
//GL_COVERAGE_MODULATION_NV = 0x9332,
|
||||
//GL_COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333,
|
||||
GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB,
|
||||
GL_RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10,
|
||||
GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11,
|
||||
@@ -2387,9 +2412,13 @@ GL_FLOAT16_NV = 0x8FF8,
|
||||
GL_FLOAT16_VEC2_NV = 0x8FF9,
|
||||
GL_FLOAT16_VEC3_NV = 0x8FFA,
|
||||
GL_FLOAT16_VEC4_NV = 0x8FFB,
|
||||
GL_MULTISAMPLES_NV = 0x9371,
|
||||
GL_SUPERSAMPLE_SCALE_X_NV = 0x9372,
|
||||
GL_SUPERSAMPLE_SCALE_Y_NV = 0x9373,
|
||||
GL_CONFORMANT_NV = 0x9374,
|
||||
GL_MAX_SHININESS_NV = 0x8504,
|
||||
GL_MAX_SPOT_EXPONENT_NV = 0x8505,
|
||||
GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
//GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
GL_MULTISAMPLE_FILTER_HINT_NV = 0x8534,
|
||||
GL_PIXEL_COUNTER_BITS_NV = 0x8864,
|
||||
GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865,
|
||||
@@ -2432,19 +2461,31 @@ GL_LARGE_CCW_ARC_TO_NV = 0x16,
|
||||
GL_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17,
|
||||
GL_LARGE_CW_ARC_TO_NV = 0x18,
|
||||
GL_RELATIVE_LARGE_CW_ARC_TO_NV = 0x19,
|
||||
GL_CONIC_CURVE_TO_NV = 0x1A,
|
||||
GL_RELATIVE_CONIC_CURVE_TO_NV = 0x1B,
|
||||
GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20,
|
||||
GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40,
|
||||
GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80,
|
||||
GL_ROUNDED_RECT_NV = 0xE8,
|
||||
GL_RELATIVE_ROUNDED_RECT_NV = 0xE9,
|
||||
GL_ROUNDED_RECT2_NV = 0xEA,
|
||||
GL_RELATIVE_ROUNDED_RECT2_NV = 0xEB,
|
||||
GL_ROUNDED_RECT4_NV = 0xEC,
|
||||
GL_RELATIVE_ROUNDED_RECT4_NV = 0xED,
|
||||
GL_ROUNDED_RECT8_NV = 0xEE,
|
||||
GL_RELATIVE_ROUNDED_RECT8_NV = 0xEF,
|
||||
GL_RESTART_PATH_NV = 0xF0,
|
||||
GL_DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2,
|
||||
GL_DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4,
|
||||
GL_RECT_NV = 0xF6,
|
||||
GL_RELATIVE_RECT_NV = 0xF7,
|
||||
GL_CIRCULAR_CCW_ARC_TO_NV = 0xF8,
|
||||
GL_CIRCULAR_CW_ARC_TO_NV = 0xFA,
|
||||
GL_CIRCULAR_TANGENT_ARC_TO_NV = 0xFC,
|
||||
GL_ARC_TO_NV = 0xFE,
|
||||
GL_RELATIVE_ARC_TO_NV = 0xFF,
|
||||
GL_GLYPH_HAS_KERNING_BIT_NV = 0x100,
|
||||
GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
//GL_PRIMARY_COLOR = 0x8577,
|
||||
GL_PATH_FORMAT_SVG_NV = 0x9070,
|
||||
GL_PATH_FORMAT_PS_NV = 0x9071,
|
||||
@@ -2467,6 +2508,7 @@ GL_PATH_FILL_MASK_NV = 0x9081,
|
||||
GL_PATH_FILL_COVER_MODE_NV = 0x9082,
|
||||
GL_PATH_STROKE_COVER_MODE_NV = 0x9083,
|
||||
GL_PATH_STROKE_MASK_NV = 0x9084,
|
||||
GL_PATH_STROKE_BOUND_NV = 0x9086,
|
||||
GL_COUNT_UP_NV = 0x9088,
|
||||
GL_COUNT_DOWN_NV = 0x9089,
|
||||
GL_PATH_OBJECT_BOUNDING_BOX_NV = 0x908A,
|
||||
@@ -2515,6 +2557,12 @@ GL_PATH_STENCIL_VALUE_MASK_NV = 0x90B9,
|
||||
GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD,
|
||||
GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE,
|
||||
GL_PATH_COVER_DEPTH_FUNC_NV = 0x90BF,
|
||||
GL_FONT_GLYPHS_AVAILABLE_NV = 0x9368,
|
||||
GL_FONT_TARGET_UNAVAILABLE_NV = 0x9369,
|
||||
GL_FONT_UNAVAILABLE_NV = 0x936A,
|
||||
GL_FONT_UNINTELLIGIBLE_NV = 0x936B,
|
||||
GL_STANDARD_FONT_FORMAT_NV = 0x936C,
|
||||
GL_FRAGMENT_INPUT_NV = 0x936D,
|
||||
GL_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000,
|
||||
GL_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000,
|
||||
GL_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000,
|
||||
@@ -2528,6 +2576,8 @@ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000,
|
||||
GL_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000,
|
||||
GL_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000,
|
||||
GL_FONT_HAS_KERNING_BIT_NV = 0x10000000,
|
||||
GL_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000,
|
||||
GL_SHARED_EDGE_NV = 0xC0,
|
||||
GL_WRITE_PIXEL_DATA_RANGE_NV = 0x8878,
|
||||
GL_READ_PIXEL_DATA_RANGE_NV = 0x8879,
|
||||
GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A,
|
||||
@@ -2551,7 +2601,7 @@ GL_VARIABLE_F_NV = 0x8528,
|
||||
GL_VARIABLE_G_NV = 0x8529,
|
||||
GL_CONSTANT_COLOR0_NV = 0x852A,
|
||||
GL_CONSTANT_COLOR1_NV = 0x852B,
|
||||
GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
//GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
GL_SPARE0_NV = 0x852E,
|
||||
GL_SPARE1_NV = 0x852F,
|
||||
GL_DISCARD_NV = 0x8530,
|
||||
@@ -2592,6 +2642,14 @@ GL_COMBINER5_NV = 0x8555,
|
||||
GL_COMBINER6_NV = 0x8556,
|
||||
GL_COMBINER7_NV = 0x8557,
|
||||
GL_PER_STAGE_CONSTANTS_NV = 0x8535,
|
||||
GL_SAMPLE_LOCATION_NV = 0x8E50,
|
||||
GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D,
|
||||
GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E,
|
||||
GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F,
|
||||
GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340,
|
||||
GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341,
|
||||
GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342,
|
||||
GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343,
|
||||
GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D,
|
||||
GL_GPU_ADDRESS_NV = 0x8F34,
|
||||
GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35,
|
||||
@@ -3517,6 +3575,7 @@ extern void glBlendEquationi(GLuint buf, GLenum mode);
|
||||
extern void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
extern void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
|
||||
extern void glMinSampleShading(GLclampf value);
|
||||
extern GLenum glGetGraphicsResetStatus(void);
|
||||
extern void glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
|
||||
extern void glBlendEquationIndexedAMD(GLuint buf, GLenum mode);
|
||||
extern void glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
|
||||
@@ -3620,6 +3679,10 @@ extern void glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr s
|
||||
extern void glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
|
||||
extern void glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint* param);
|
||||
extern void glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params);
|
||||
extern void glGetQueryBufferObjecti64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectui64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectuiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
|
||||
extern void glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat* params);
|
||||
extern void glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint* params);
|
||||
@@ -3792,7 +3855,6 @@ extern GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInt
|
||||
extern void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
|
||||
extern void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
|
||||
extern void glProvokingVertex(GLenum mode);
|
||||
extern GLenum glGetGraphicsResetStatusARB(void);
|
||||
extern void glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table);
|
||||
extern void glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void* img);
|
||||
extern void glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image);
|
||||
@@ -4230,6 +4292,7 @@ extern void glUniformHandleui64NV(GLint location, GLuint64 value);
|
||||
extern void glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64* value);
|
||||
extern void glBlendBarrierNV(void);
|
||||
extern void glBlendParameteriNV(GLenum pname, GLint value);
|
||||
extern void glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits);
|
||||
extern void glClearDepthdNV(GLdouble depth);
|
||||
extern void glDepthBoundsdNV(GLdouble zmin, GLdouble zmax);
|
||||
extern void glDepthRangedNV(GLdouble zNear, GLdouble zFar);
|
||||
@@ -4252,6 +4315,7 @@ extern void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params);
|
||||
extern GLboolean glIsFenceNV(GLuint fence);
|
||||
extern void glSetFenceNV(GLuint fence, GLenum condition);
|
||||
extern GLboolean glTestFenceNV(GLuint fence);
|
||||
extern void glFragmentCoverageColorNV(GLuint color);
|
||||
extern void glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble *params);
|
||||
extern void glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte* name, GLfloat *params);
|
||||
extern void glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
|
||||
@@ -4352,6 +4416,7 @@ extern void glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalf* v);
|
||||
extern void glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalf* v);
|
||||
extern void glVertexWeighthNV(GLhalf weight);
|
||||
extern void glVertexWeighthvNV(const GLhalf* weight);
|
||||
extern void glGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params);
|
||||
extern void glBeginOcclusionQueryNV(GLuint id);
|
||||
extern void glDeleteOcclusionQueriesNV(GLsizei n, const GLuint* ids);
|
||||
extern void glEndOcclusionQueryNV(void);
|
||||
@@ -4363,52 +4428,67 @@ extern void glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint
|
||||
extern void glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
|
||||
extern void glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
|
||||
extern void glCopyPathNV(GLuint resultPath, GLuint srcPath);
|
||||
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverFillPathNV(GLuint path, GLenum coverMode);
|
||||
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverStrokePathNV(GLuint name, GLenum coverMode);
|
||||
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverStrokePathNV(GLuint path, GLenum coverMode);
|
||||
extern void glDeletePathsNV(GLuint path, GLsizei range);
|
||||
extern GLuint glGenPathsNV(GLsizei range);
|
||||
extern void glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathColorGenivNV(GLenum color, GLenum pname, GLint* value);
|
||||
extern void glGetPathCommandsNV(GLuint name, GLubyte* commands);
|
||||
extern void glGetPathCoordsNV(GLuint name, GLfloat* coords);
|
||||
extern void glGetPathDashArrayNV(GLuint name, GLfloat* dashArray);
|
||||
extern void glGetPathCommandsNV(GLuint path, GLubyte* commands);
|
||||
extern void glGetPathCoordsNV(GLuint path, GLfloat* coords);
|
||||
extern void glGetPathDashArrayNV(GLuint path, GLfloat* dashArray);
|
||||
extern GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments);
|
||||
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
|
||||
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
|
||||
extern void glGetPathParameterfvNV(GLuint name, GLenum param, GLfloat* value);
|
||||
extern void glGetPathParameterivNV(GLuint name, GLenum param, GLint* value);
|
||||
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
|
||||
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
|
||||
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
|
||||
extern void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value);
|
||||
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
|
||||
extern void glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint* value);
|
||||
extern void glGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params);
|
||||
extern void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
|
||||
extern GLboolean glIsPathNV(GLuint path);
|
||||
extern GLboolean glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y);
|
||||
extern GLboolean glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y);
|
||||
extern void glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs);
|
||||
extern void glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
|
||||
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords);
|
||||
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
|
||||
extern void glPathCoverDepthFuncNV(GLenum zfunc);
|
||||
extern void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray);
|
||||
extern void glPathFogGenNV(GLenum genMode);
|
||||
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
|
||||
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value);
|
||||
extern void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value);
|
||||
extern void glPathParameteriNV(GLuint path, GLenum pname, GLint value);
|
||||
extern void glPathParameterivNV(GLuint path, GLenum pname, const GLint* value);
|
||||
extern void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units);
|
||||
extern void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask);
|
||||
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString);
|
||||
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString);
|
||||
extern void glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
|
||||
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords);
|
||||
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
|
||||
extern void glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs);
|
||||
extern GLboolean glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
|
||||
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs);
|
||||
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask);
|
||||
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask);
|
||||
extern void glStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
|
||||
extern void glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode);
|
||||
extern void glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues);
|
||||
extern void glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]);
|
||||
extern void glFlushPixelDataRangeNV(GLenum target);
|
||||
@@ -4435,6 +4515,8 @@ extern void glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname,
|
||||
extern void glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint* params);
|
||||
extern void glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat* params);
|
||||
extern void glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat* params);
|
||||
extern void glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat* v);
|
||||
extern void glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
|
||||
extern void glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT* params);
|
||||
extern void glGetIntegerui64vNV(GLenum value, GLuint64EXT* result);
|
||||
extern void glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT* params);
|
||||
@@ -4857,7 +4939,10 @@ extern GLboolean __GLEW_EXT_pixel_transform;
|
||||
extern GLboolean __GLEW_EXT_pixel_transform_color_table;
|
||||
extern GLboolean __GLEW_EXT_point_parameters;
|
||||
extern GLboolean __GLEW_EXT_polygon_offset;
|
||||
extern GLboolean __GLEW_EXT_polygon_offset_clamp;
|
||||
extern GLboolean __GLEW_EXT_post_depth_coverage;
|
||||
extern GLboolean __GLEW_EXT_provoking_vertex;
|
||||
extern GLboolean __GLEW_EXT_raster_multisample;
|
||||
extern GLboolean __GLEW_EXT_rescale_normal;
|
||||
extern GLboolean __GLEW_EXT_scene_marker;
|
||||
extern GLboolean __GLEW_EXT_secondary_color;
|
||||
@@ -4868,6 +4953,7 @@ extern GLboolean __GLEW_EXT_shader_image_load_store;
|
||||
extern GLboolean __GLEW_EXT_shader_integer_mix;
|
||||
extern GLboolean __GLEW_EXT_shadow_funcs;
|
||||
extern GLboolean __GLEW_EXT_shared_texture_palette;
|
||||
extern GLboolean __GLEW_EXT_sparse_texture2;
|
||||
extern GLboolean __GLEW_EXT_stencil_clear_tag;
|
||||
extern GLboolean __GLEW_EXT_stencil_two_side;
|
||||
extern GLboolean __GLEW_EXT_stencil_wrap;
|
||||
@@ -4887,6 +4973,7 @@ extern GLboolean __GLEW_EXT_texture_env_add;
|
||||
extern GLboolean __GLEW_EXT_texture_env_combine;
|
||||
extern GLboolean __GLEW_EXT_texture_env_dot3;
|
||||
extern GLboolean __GLEW_EXT_texture_filter_anisotropic;
|
||||
extern GLboolean __GLEW_EXT_texture_filter_minmax;
|
||||
extern GLboolean __GLEW_EXT_texture_integer;
|
||||
extern GLboolean __GLEW_EXT_texture_lod_bias;
|
||||
extern GLboolean __GLEW_EXT_texture_mirror_clamp;
|
||||
@@ -4949,6 +5036,7 @@ extern GLboolean __GLEW_NV_blend_equation_advanced_coherent;
|
||||
extern GLboolean __GLEW_NV_blend_square;
|
||||
extern GLboolean __GLEW_NV_compute_program5;
|
||||
extern GLboolean __GLEW_NV_conditional_render;
|
||||
extern GLboolean __GLEW_NV_conservative_raster;
|
||||
extern GLboolean __GLEW_NV_copy_depth_to_color;
|
||||
extern GLboolean __GLEW_NV_copy_image;
|
||||
extern GLboolean __GLEW_NV_deep_texture3D;
|
||||
@@ -4959,21 +5047,27 @@ extern GLboolean __GLEW_NV_draw_texture;
|
||||
extern GLboolean __GLEW_NV_evaluators;
|
||||
extern GLboolean __GLEW_NV_explicit_multisample;
|
||||
extern GLboolean __GLEW_NV_fence;
|
||||
extern GLboolean __GLEW_NV_fill_rectangle;
|
||||
extern GLboolean __GLEW_NV_float_buffer;
|
||||
extern GLboolean __GLEW_NV_fog_distance;
|
||||
extern GLboolean __GLEW_NV_fragment_coverage_to_color;
|
||||
extern GLboolean __GLEW_NV_fragment_program;
|
||||
extern GLboolean __GLEW_NV_fragment_program2;
|
||||
extern GLboolean __GLEW_NV_fragment_program4;
|
||||
extern GLboolean __GLEW_NV_fragment_program_option;
|
||||
extern GLboolean __GLEW_NV_fragment_shader_interlock;
|
||||
extern GLboolean __GLEW_NV_framebuffer_mixed_samples;
|
||||
extern GLboolean __GLEW_NV_framebuffer_multisample_coverage;
|
||||
extern GLboolean __GLEW_NV_geometry_program4;
|
||||
extern GLboolean __GLEW_NV_geometry_shader4;
|
||||
extern GLboolean __GLEW_NV_geometry_shader_passthrough;
|
||||
extern GLboolean __GLEW_NV_gpu_program4;
|
||||
extern GLboolean __GLEW_NV_gpu_program5;
|
||||
extern GLboolean __GLEW_NV_gpu_program5_mem_extended;
|
||||
extern GLboolean __GLEW_NV_gpu_program_fp64;
|
||||
extern GLboolean __GLEW_NV_gpu_shader5;
|
||||
extern GLboolean __GLEW_NV_half_float;
|
||||
extern GLboolean __GLEW_NV_internalformat_sample_query;
|
||||
extern GLboolean __GLEW_NV_light_max_exponent;
|
||||
extern GLboolean __GLEW_NV_multisample_coverage;
|
||||
extern GLboolean __GLEW_NV_multisample_filter_hint;
|
||||
@@ -4982,14 +5076,18 @@ extern GLboolean __GLEW_NV_packed_depth_stencil;
|
||||
extern GLboolean __GLEW_NV_parameter_buffer_object;
|
||||
extern GLboolean __GLEW_NV_parameter_buffer_object2;
|
||||
extern GLboolean __GLEW_NV_path_rendering;
|
||||
extern GLboolean __GLEW_NV_path_rendering_shared_edge;
|
||||
extern GLboolean __GLEW_NV_pixel_data_range;
|
||||
extern GLboolean __GLEW_NV_point_sprite;
|
||||
extern GLboolean __GLEW_NV_present_video;
|
||||
extern GLboolean __GLEW_NV_primitive_restart;
|
||||
extern GLboolean __GLEW_NV_register_combiners;
|
||||
extern GLboolean __GLEW_NV_register_combiners2;
|
||||
extern GLboolean __GLEW_NV_sample_locations;
|
||||
extern GLboolean __GLEW_NV_sample_mask_override_coverage;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_counters;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_float;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_fp16_vector;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_int64;
|
||||
extern GLboolean __GLEW_NV_shader_buffer_load;
|
||||
extern GLboolean __GLEW_NV_shader_storage_buffer_object;
|
||||
@@ -5022,6 +5120,7 @@ extern GLboolean __GLEW_NV_vertex_program2_option;
|
||||
extern GLboolean __GLEW_NV_vertex_program3;
|
||||
extern GLboolean __GLEW_NV_vertex_program4;
|
||||
extern GLboolean __GLEW_NV_video_capture;
|
||||
extern GLboolean __GLEW_NV_viewport_array2;
|
||||
extern GLboolean __GLEW_OES_byte_coordinates;
|
||||
extern GLboolean __GLEW_OES_compressed_paletted_texture;
|
||||
extern GLboolean __GLEW_OES_read_format;
|
||||
@@ -5412,7 +5511,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_pixel_transform_color_table"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_point_parameters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_polygon_offset"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_polygon_offset_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_post_depth_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_provoking_vertex"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_raster_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_rescale_normal"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_scene_marker"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_secondary_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5423,6 +5525,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_shader_integer_mix"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_shadow_funcs"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_shared_texture_palette"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_sparse_texture2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_clear_tag"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_two_side"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_wrap"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5442,6 +5545,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_texture_env_combine"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_env_dot3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_filter_anisotropic"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_filter_minmax"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_integer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_lod_bias"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_mirror_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5504,6 +5608,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_blend_square"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_compute_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_conditional_render"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_conservative_raster"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_copy_depth_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_copy_image"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_deep_texture3D"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5514,21 +5619,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_evaluators"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_explicit_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fence"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fill_rectangle"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_float_buffer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fog_distance"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_coverage_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program_option"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_shader_interlock"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_framebuffer_mixed_samples"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_framebuffer_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_shader4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_shader_passthrough"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program5_mem_extended"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program_fp64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_shader5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_half_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_internalformat_sample_query"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_light_max_exponent"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_multisample_filter_hint"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5537,14 +5648,18 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_parameter_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_parameter_buffer_object2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_path_rendering"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_path_rendering_shared_edge"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_pixel_data_range"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_point_sprite"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_present_video"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_primitive_restart"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_register_combiners"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_register_combiners2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_sample_locations"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_sample_mask_override_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_counters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_fp16_vector"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_int64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_buffer_load"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_storage_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5577,6 +5692,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_vertex_program3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_vertex_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_video_capture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_viewport_array2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_byte_coordinates"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_compressed_paletted_texture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_read_format"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -6700,6 +6816,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"] = { type ='value', },
|
||||
["GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"] = { type ='value', },
|
||||
["GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"] = { type ='value', },
|
||||
["GL_COPY_READ_BUFFER_BINDING"] = { type ='value', },
|
||||
["GL_COPY_WRITE_BUFFER_BINDING"] = { type ='value', },
|
||||
["GL_NUM_SHADING_LANGUAGE_VERSIONS"] = { type ='value', },
|
||||
["GL_VERTEX_ATTRIB_ARRAY_LONG"] = { type ='value', },
|
||||
["GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"] = { type ='value', },
|
||||
@@ -7416,7 +7534,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_TIMEOUT_EXPIRED"] = { type ='value', },
|
||||
["GL_CONDITION_SATISFIED"] = { type ='value', },
|
||||
["GL_WAIT_FAILED"] = { type ='value', },
|
||||
["GL_TIMEOUT_IGNORED"] = { type ='value', },
|
||||
["GL_PATCHES"] = { type ='value', },
|
||||
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"] = { type ='value', },
|
||||
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"] = { type ='value', },
|
||||
@@ -7708,6 +7825,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_HSL_SATURATION_KHR"] = { type ='value', },
|
||||
["GL_HSL_COLOR_KHR"] = { type ='value', },
|
||||
["GL_HSL_LUMINOSITY_KHR"] = { type ='value', },
|
||||
["GL_CONTEXT_RELEASE_BEHAVIOR"] = { type ='value', },
|
||||
["GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"] = { type ='value', },
|
||||
["GL_CONTEXT_FLAG_DEBUG_BIT"] = { type ='value', },
|
||||
["GL_DEBUG_OUTPUT_SYNCHRONOUS"] = { type ='value', },
|
||||
["GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"] = { type ='value', },
|
||||
@@ -7835,6 +7954,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_INVERT_OVG_NV"] = { type ='value', },
|
||||
["GL_COMPUTE_PROGRAM_NV"] = { type ='value', },
|
||||
["GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV"] = { type ='value', },
|
||||
["GL_CONSERVATIVE_RASTERIZATION_NV"] = { type ='value', },
|
||||
["GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV"] = { type ='value', },
|
||||
["GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV"] = { type ='value', },
|
||||
["GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV"] = { type ='value', },
|
||||
["GL_DEPTH_STENCIL_TO_RGBA_NV"] = { type ='value', },
|
||||
["GL_DEPTH_STENCIL_TO_BGRA_NV"] = { type ='value', },
|
||||
["GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV"] = { type ='value', },
|
||||
@@ -7876,6 +7999,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_ALL_COMPLETED_NV"] = { type ='value', },
|
||||
["GL_FENCE_STATUS_NV"] = { type ='value', },
|
||||
["GL_FENCE_CONDITION_NV"] = { type ='value', },
|
||||
["GL_FILL_RECTANGLE_NV"] = { type ='value', },
|
||||
["GL_FLOAT_R_NV"] = { type ='value', },
|
||||
["GL_FLOAT_RG_NV"] = { type ='value', },
|
||||
["GL_FLOAT_RGB_NV"] = { type ='value', },
|
||||
@@ -7894,6 +8018,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FOG_DISTANCE_MODE_NV"] = { type ='value', },
|
||||
["GL_EYE_RADIAL_NV"] = { type ='value', },
|
||||
["GL_EYE_PLANE_ABSOLUTE_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_COVERAGE_TO_COLOR_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_COVERAGE_COLOR_NV"] = { type ='value', },
|
||||
["GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_PROGRAM_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_PROGRAM_BINDING_NV"] = { type ='value', },
|
||||
@@ -7946,9 +8072,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FLOAT16_VEC2_NV"] = { type ='value', },
|
||||
["GL_FLOAT16_VEC3_NV"] = { type ='value', },
|
||||
["GL_FLOAT16_VEC4_NV"] = { type ='value', },
|
||||
["GL_MULTISAMPLES_NV"] = { type ='value', },
|
||||
["GL_SUPERSAMPLE_SCALE_X_NV"] = { type ='value', },
|
||||
["GL_SUPERSAMPLE_SCALE_Y_NV"] = { type ='value', },
|
||||
["GL_CONFORMANT_NV"] = { type ='value', },
|
||||
["GL_MAX_SHININESS_NV"] = { type ='value', },
|
||||
["GL_MAX_SPOT_EXPONENT_NV"] = { type ='value', },
|
||||
["GL_COLOR_SAMPLES_NV"] = { type ='value', },
|
||||
["GL_MULTISAMPLE_FILTER_HINT_NV"] = { type ='value', },
|
||||
["GL_PIXEL_COUNTER_BITS_NV"] = { type ='value', },
|
||||
["GL_CURRENT_OCCLUSION_QUERY_ID_NV"] = { type ='value', },
|
||||
@@ -7991,19 +8120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_RELATIVE_LARGE_CCW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_LARGE_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_LARGE_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CONIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_CONIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_X_BIT_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT2_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT2_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT4_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT4_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT8_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT8_NV"] = { type ='value', },
|
||||
["GL_RESTART_PATH_NV"] = { type ='value', },
|
||||
["GL_DUP_FIRST_CUBIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_DUP_LAST_CUBIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_RECT_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_RECT_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_CCW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_TANGENT_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_GLYPH_HAS_KERNING_BIT_NV"] = { type ='value', },
|
||||
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
|
||||
["GL_PATH_FORMAT_SVG_NV"] = { type ='value', },
|
||||
["GL_PATH_FORMAT_PS_NV"] = { type ='value', },
|
||||
["GL_STANDARD_FONT_NAME_NV"] = { type ='value', },
|
||||
@@ -8025,6 +8166,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_PATH_FILL_COVER_MODE_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_COVER_MODE_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_MASK_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_BOUND_NV"] = { type ='value', },
|
||||
["GL_COUNT_UP_NV"] = { type ='value', },
|
||||
["GL_COUNT_DOWN_NV"] = { type ='value', },
|
||||
["GL_PATH_OBJECT_BOUNDING_BOX_NV"] = { type ='value', },
|
||||
@@ -8073,6 +8215,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV"] = { type ='value', },
|
||||
["GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV"] = { type ='value', },
|
||||
["GL_PATH_COVER_DEPTH_FUNC_NV"] = { type ='value', },
|
||||
["GL_FONT_GLYPHS_AVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_TARGET_UNAVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_UNAVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_UNINTELLIGIBLE_NV"] = { type ='value', },
|
||||
["GL_STANDARD_FONT_FORMAT_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_INPUT_NV"] = { type ='value', },
|
||||
["GL_FONT_X_MIN_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_Y_MIN_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_X_MAX_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
@@ -8086,6 +8234,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FONT_UNDERLINE_POSITION_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_UNDERLINE_THICKNESS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_HAS_KERNING_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_NUM_GLYPH_INDICES_BIT_NV"] = { type ='value', },
|
||||
["GL_SHARED_EDGE_NV"] = { type ='value', },
|
||||
["GL_WRITE_PIXEL_DATA_RANGE_NV"] = { type ='value', },
|
||||
["GL_READ_PIXEL_DATA_RANGE_NV"] = { type ='value', },
|
||||
["GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV"] = { type ='value', },
|
||||
@@ -8109,7 +8259,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_VARIABLE_G_NV"] = { type ='value', },
|
||||
["GL_CONSTANT_COLOR0_NV"] = { type ='value', },
|
||||
["GL_CONSTANT_COLOR1_NV"] = { type ='value', },
|
||||
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
|
||||
["GL_SPARE0_NV"] = { type ='value', },
|
||||
["GL_SPARE1_NV"] = { type ='value', },
|
||||
["GL_DISCARD_NV"] = { type ='value', },
|
||||
@@ -8150,6 +8299,14 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_COMBINER6_NV"] = { type ='value', },
|
||||
["GL_COMBINER7_NV"] = { type ='value', },
|
||||
["GL_PER_STAGE_CONSTANTS_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV"] = { type ='value', },
|
||||
["GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV"] = { type ='value', },
|
||||
["GL_PROGRAMMABLE_SAMPLE_LOCATION_NV"] = { type ='value', },
|
||||
["GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV"] = { type ='value', },
|
||||
["GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV"] = { type ='value', },
|
||||
["GL_BUFFER_GPU_ADDRESS_NV"] = { type ='value', },
|
||||
["GL_GPU_ADDRESS_NV"] = { type ='value', },
|
||||
["GL_MAX_SHADER_BUFFER_ADDRESS_NV"] = { type ='value', },
|
||||
@@ -11518,6 +11675,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLclampf value)", },
|
||||
["glGetGraphicsResetStatus"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(void)", },
|
||||
["glDebugMessageEnableAMD"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -12033,6 +12195,26 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint renderbuffer, GLenum pname, GLint* params)", },
|
||||
["glGetQueryBufferObjecti64v"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectiv"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectui64v"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectuiv"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetTextureImage"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -12893,11 +13075,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum mode)", },
|
||||
["glGetGraphicsResetStatusARB"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(void)", },
|
||||
["glGetnColorTableARB"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15083,6 +15260,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum pname, GLint value)", },
|
||||
["glSubpixelPrecisionBiasNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint xbits, GLuint ybits)", },
|
||||
["glClearDepthdNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15193,6 +15375,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint fence)", },
|
||||
["glFragmentCoverageColorNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint color)", },
|
||||
["glGetProgramNamedParameterdvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15693,6 +15880,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(const GLhalf* weight)", },
|
||||
["glGetInternalformatSampleivNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params)", },
|
||||
["glBeginOcclusionQueryNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15752,7 +15944,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glCoverFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15762,12 +15954,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glCoverStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum coverMode)", },
|
||||
args = "(GLuint path, GLenum coverMode)", },
|
||||
["glDeletePathsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15792,17 +15984,17 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLubyte* commands)", },
|
||||
args = "(GLuint path, GLubyte* commands)", },
|
||||
["glGetPathCoordsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLfloat* coords)", },
|
||||
args = "(GLuint path, GLfloat* coords)", },
|
||||
["glGetPathDashArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLfloat* dashArray)", },
|
||||
args = "(GLuint path, GLfloat* dashArray)", },
|
||||
["glGetPathLengthNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLfloat)",
|
||||
@@ -15812,27 +16004,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
|
||||
args = "(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
|
||||
["glGetPathMetricsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
|
||||
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
|
||||
["glGetPathParameterfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum param, GLfloat* value)", },
|
||||
args = "(GLuint path, GLenum pname, GLfloat* value)", },
|
||||
["glGetPathParameterivNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum param, GLint* value)", },
|
||||
args = "(GLuint path, GLenum pname, GLint* value)", },
|
||||
["glGetPathSpacingNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
|
||||
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
|
||||
["glGetPathTexGenfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15843,6 +16035,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum texCoordSet, GLenum pname, GLint* value)", },
|
||||
["glGetProgramResourcefvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params)", },
|
||||
["glInterpolatePathsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15863,6 +16060,36 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLfloat x, GLfloat y)", },
|
||||
["glMatrixLoad3x2fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixLoad3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixLoadTranspose3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMult3x2fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMult3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMultTranspose3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glPathColorGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15877,7 +16104,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords)", },
|
||||
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)", },
|
||||
["glPathCoverDepthFuncNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15893,16 +16120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum genMode)", },
|
||||
["glPathGlyphIndexArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathGlyphIndexRangeNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2])", },
|
||||
["glPathGlyphRangeNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathGlyphsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathMemoryGlyphIndexArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathParameterfNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15937,7 +16179,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLenum format, GLsizei length, const void* pathString)", },
|
||||
args = "(GLuint path, GLenum format, GLsizei length, const void *pathString)", },
|
||||
["glPathSubCommandsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15947,7 +16189,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords)", },
|
||||
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)", },
|
||||
["glPathTexGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15958,11 +16200,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)", },
|
||||
["glProgramPathFragmentInputGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs)", },
|
||||
["glStencilFillPathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15972,12 +16219,32 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLint reference, GLuint mask)", },
|
||||
["glStencilThenCoverFillPathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilThenCoverFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)", },
|
||||
["glStencilThenCoverStrokePathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilThenCoverStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLint reference, GLuint mask, GLenum coverMode)", },
|
||||
["glTransformPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -16108,6 +16375,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum stage, GLenum pname, GLfloat* params)", },
|
||||
["glFramebufferSampleLocationsfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum target, GLuint start, GLsizei count, const GLfloat* v)", },
|
||||
["glNamedFramebufferSampleLocationsfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)", },
|
||||
["glGetBufferParameterui64vNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
-- Copyright 2011-12 Paul Kulchenko, ZeroBrane LLC
|
||||
|
||||
-- converted from love_api.lua (http://love2d.org/forums/viewtopic.php?f=3&t=1796&start=50#p166908)
|
||||
-- (API for love 0.9.1; as of Apr 24, 2014)
|
||||
-- converted from love_api.lua in https://github.com/rm-code/love-api
|
||||
-- (API for love 0.9.2; as of Apr 02, 2015)
|
||||
-- Earlier versins used love_api.lua from http://love2d.org/forums/viewtopic.php?f=3&t=1796&start=50#p166908
|
||||
-- the conversion script is at the bottom of this file
|
||||
|
||||
local love = {
|
||||
@@ -68,6 +69,12 @@ local love = {
|
||||
returns = "(x: number, y: number, z: number)",
|
||||
type = "function"
|
||||
},
|
||||
getDopplerScale = {
|
||||
args = "()",
|
||||
description = "Gets the current global scale factor for velocity-based doppler effects.",
|
||||
returns = "(scale: number)",
|
||||
type = "function"
|
||||
},
|
||||
getPitch = {
|
||||
args = "()",
|
||||
description = "Gets the current pitch of the Source.",
|
||||
@@ -182,6 +189,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setDopplerScale = {
|
||||
args = "(scale: number)",
|
||||
description = "Sets a global scale factor for velocity-based doppler effects. The default scale value is 1.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setLooping = {
|
||||
args = "(loop: boolean)",
|
||||
description = "Sets whether the Source should loop.",
|
||||
@@ -594,6 +607,12 @@ local love = {
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
areSymlinksEnabled = {
|
||||
args = "()",
|
||||
description = "Gets whether love.filesystem follows symbolic links.",
|
||||
returns = "(enable: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
createDirectory = {
|
||||
args = "(name: string)",
|
||||
description = "Creates a directory.",
|
||||
@@ -630,6 +649,12 @@ local love = {
|
||||
returns = "(modtime: number, errormsg: string)",
|
||||
type = "function"
|
||||
},
|
||||
getRealDirectory = {
|
||||
args = "(filepath: string)",
|
||||
description = "Gets the platform-specific absolute path of the directory containing a filepath.\n\nThis can be used to determine whether a file is inside the save directory or the game's source .love.",
|
||||
returns = "(realdir: string)",
|
||||
type = "function"
|
||||
},
|
||||
getSaveDirectory = {
|
||||
args = "()",
|
||||
description = "Gets the full path to the designated save directory. This can be useful if you want to use the standard io library (or something else) to read or write in the save directory.",
|
||||
@@ -642,6 +667,12 @@ local love = {
|
||||
returns = "(size: number, errormsg: string)",
|
||||
type = "function"
|
||||
},
|
||||
getSourceBaseDirectory = {
|
||||
args = "()",
|
||||
description = "Returns the full path to the directory containing the .love file. If the game is fused to the LÖVE executable, then the directory containing the executable is returned.\n\nIf love.filesystem.isFused is true, the path returned by this function can be passed to love.filesystem.mount, which will make the directory containing the main game (e.g. C:\\Program Files\\coolgame\\) readable by love.filesystem.",
|
||||
returns = "(path: string)",
|
||||
type = "function"
|
||||
},
|
||||
getUserDirectory = {
|
||||
args = "()",
|
||||
description = "Returns the path of the user's directory.",
|
||||
@@ -672,6 +703,12 @@ local love = {
|
||||
returns = "(fused: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isSymlink = {
|
||||
args = "(path: string)",
|
||||
description = "Gets whether a filepath is actually a symbolic link.\n\nIf symbolic links are not enabled (via love.filesystem.setSymlinksEnabled), this function will always return false.",
|
||||
returns = "(symlink: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
lines = {
|
||||
args = "(name: string)",
|
||||
description = "Iterate over the lines in a file.",
|
||||
@@ -684,6 +721,12 @@ local love = {
|
||||
returns = "(chunk: function)",
|
||||
type = "function"
|
||||
},
|
||||
mount = {
|
||||
args = "(archive: string, mountpoint: string, appendToPath: string)",
|
||||
description = "Mounts a zip file or folder in the game's save directory for reading.",
|
||||
returns = "(success: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
newFile = {
|
||||
args = "(filename: string, mode: FileMode)",
|
||||
description = "Creates a new File object. It needs to be opened before it can be accessed.",
|
||||
@@ -714,6 +757,24 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setSource = {
|
||||
args = "(path: string)",
|
||||
description = "Sets the source of the game, where the code is present. This function can only be called once, and is normally automatically done by LÖVE.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setSymlinksEnabled = {
|
||||
args = "(enable: boolean)",
|
||||
description = "Sets whether love.filesystem follows symbolic links. It is disabled by default.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
unmount = {
|
||||
args = "(archive: string)",
|
||||
description = "Unmounts a zip file or folder previously mounted for reading with love.filesystem.mount.",
|
||||
returns = "(success: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
write = {
|
||||
args = "(name: string, data: string, size: number)",
|
||||
description = "Write data to a file.\n\nIf you are getting the error message \"Could not set write directory\", try setting the save directory. This is done either with love.filesystem.setIdentity or by setting the identity field in love.conf.",
|
||||
@@ -898,6 +959,56 @@ local love = {
|
||||
description = "A Canvas is used for off-screen rendering. Think of it as an invisible screen that you can draw to, but that will not be visible until you draw it to the actual visible screen. It is also known as \"render to texture\".\n\nBy drawing things that do not change position often (such as background items) to the Canvas, and then drawing the entire Canvas instead of each item, you can reduce the number of draw operations performed each frame.",
|
||||
type = "lib"
|
||||
},
|
||||
CanvasFormat = {
|
||||
childs = {
|
||||
hdr = {
|
||||
description = "A format suitable for high dynamic range content - an alias for the rgba16f format, normally.",
|
||||
type = "value"
|
||||
},
|
||||
normal = {
|
||||
description = "The default Canvas format - an alias for the rgba8 format, normally.",
|
||||
type = "value"
|
||||
},
|
||||
rg11b10f = {
|
||||
description = "Floating point RGB with 11 bits in the red and green channels, and 10 bits in the blue channel (32 bpp.) There is no alpha channel. Color values can range from [0, +infinity].",
|
||||
type = "value"
|
||||
},
|
||||
rgb5a1 = {
|
||||
description = "RGB with 5 bits each, and a 1-bit alpha channel (16 bpp.)",
|
||||
type = "value"
|
||||
},
|
||||
rgb10a2 = {
|
||||
description = "RGB with 10 bits per channel, and a 2-bit alpha channel (32 bpp.)",
|
||||
type = "value"
|
||||
},
|
||||
rgb565 = {
|
||||
description = "RGB with 5, 6, and 5 bits each, respectively (16 bpp). There is no alpha channel in this format.",
|
||||
type = "value"
|
||||
},
|
||||
rgba4 = {
|
||||
description = "4 bits per channel (16 bpp) RGBA.",
|
||||
type = "value"
|
||||
},
|
||||
rgba8 = {
|
||||
description = "8 bits per channel (32 bpp) RGBA. Color channel values range from 0-255 (0-1 in shaders.)",
|
||||
type = "value"
|
||||
},
|
||||
rgba16f = {
|
||||
description = "Floating point RGBA with 16 bits per channel (64 bpp.) Color values can range from [-infinity, +infinity].",
|
||||
type = "value"
|
||||
},
|
||||
rgba32f = {
|
||||
description = "Floating point RGBA with 32 bits per channel (128 bpp.) Color values can range from [-infinity, +infinity].",
|
||||
type = "value"
|
||||
},
|
||||
srgb = {
|
||||
description = "The same as rgba8, but the Canvas is interpreted as being in the sRGB color space. Everything drawn to the Canvas will be converted from linear RGB to sRGB. When the Canvas is drawn (or used in a shader), it will be decoded from sRGB to linear RGB.",
|
||||
type = "value"
|
||||
}
|
||||
},
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
DrawMode = {
|
||||
childs = {
|
||||
fill = {
|
||||
@@ -1253,7 +1364,7 @@ local love = {
|
||||
type = "value"
|
||||
},
|
||||
strip = {
|
||||
description = "The vertices create a series of connected triangles using vertices v1, v2, v3, then v3, v2, v4 (note the order), then v3, v4, v5 and so on.",
|
||||
description = "The vertices create a series of connected triangles using vertices 1, 2, 3, then 3, 2, 4 (note the order), then 3, 4, 5 and so on.",
|
||||
type = "value"
|
||||
},
|
||||
triangles = {
|
||||
@@ -1344,6 +1455,12 @@ local love = {
|
||||
returns = "(xmin: number, ymin: number, xmax: number, ymax: number)",
|
||||
type = "function"
|
||||
},
|
||||
getLinearDamping = {
|
||||
args = "()",
|
||||
description = "Gets the amount of linear damping (constant deceleration) for particles.",
|
||||
returns = "(min: number, max: number)",
|
||||
type = "function"
|
||||
},
|
||||
getOffset = {
|
||||
args = "()",
|
||||
description = "Get the offget position which the particle sprite is rotated around. If this function is not used, the particles rotate around their center.",
|
||||
@@ -1512,6 +1629,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setLinearDamping = {
|
||||
args = "(min: number, max: number)",
|
||||
description = "Sets the amount of linear damping (constant deceleration) for particles.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setOffset = {
|
||||
args = "(x: number, y: number)",
|
||||
description = "Set the offset position which the particle sprite is rotated around. If this function is not used, the particles rotate around their center.",
|
||||
@@ -1530,6 +1653,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setQuads = {
|
||||
args = "(quad1: Quad, quad2: Quad)",
|
||||
description = "Sets a series of Quads to use for the particle sprites. Particles will choose a Quad from the list based on the particle's current lifetime, allowing for the use of animated sprite sheets with ParticleSystems.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setRadialAcceleration = {
|
||||
args = "(min: number, max: number)",
|
||||
description = "Set the radial acceleration (away from the emitter).",
|
||||
@@ -1639,10 +1768,22 @@ local love = {
|
||||
type = "function"
|
||||
},
|
||||
Shader = {
|
||||
args = "()",
|
||||
childs = {
|
||||
getWarnings = {
|
||||
args = "()",
|
||||
description = "Returns any warning and error messages from compiling the shader code. This can be used for debugging your shaders if there's anything the graphics hardware doesn't like.",
|
||||
returns = "(warnings: string)",
|
||||
type = "function"
|
||||
},
|
||||
send = {
|
||||
args = "(name: string, vector: table, ...: table)",
|
||||
description = "Sends one or more values to a special (extern) variable inside the shader.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "A Shader is used for advanced hardware-accelerated pixel or vertex manipulation. These effects are written in a language based on GLSL (OpenGL Shading Language) with a few things simplified for easier coding.\n\nPotential uses for pixel effects include HDR/bloom, motion blur, grayscale/invert/sepia/any kind of color effect, reflection/refraction, distortions, and much more!",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
type = "lib"
|
||||
},
|
||||
SpriteBatch = {
|
||||
childs = {
|
||||
@@ -1658,6 +1799,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
flush = {
|
||||
args = "()",
|
||||
description = "Immediately sends all new and modified sprite data in the batch to the graphics card.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
getBufferSize = {
|
||||
args = "()",
|
||||
description = "Gets the maximum number of sprites the SpriteBatch can hold.",
|
||||
@@ -1734,6 +1881,20 @@ local love = {
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
StackType = {
|
||||
childs = {
|
||||
all = {
|
||||
description = "All love.graphics state, including transform state.",
|
||||
type = "value"
|
||||
},
|
||||
transform = {
|
||||
description = "The transformation stack (love.graphics.translate, love.graphics.rotate, etc.)",
|
||||
type = "value"
|
||||
}
|
||||
},
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
TextureFormat = {
|
||||
childs = {
|
||||
hdr = {
|
||||
@@ -1758,6 +1919,10 @@ local love = {
|
||||
description = "Clamp the image. Appears only once.",
|
||||
type = "value"
|
||||
},
|
||||
mirroredrepeat = {
|
||||
description = "Repeat the image, flipping it each time it repeats. May produce better visual results than the repeat mode when the image doesn't seamlessly tile.",
|
||||
type = "value"
|
||||
},
|
||||
["repeat"] = {
|
||||
description = "Repeat the image. Fills the whole available extent.",
|
||||
type = "value"
|
||||
@@ -1802,6 +1967,12 @@ local love = {
|
||||
returns = "(canvas: Canvas)",
|
||||
type = "function"
|
||||
},
|
||||
getCanvasFormats = {
|
||||
args = "()",
|
||||
description = "Gets the available Canvas formats, and whether each is supported.",
|
||||
returns = "(formats: table)",
|
||||
type = "function"
|
||||
},
|
||||
getColor = {
|
||||
args = "()",
|
||||
description = "Gets the current color.",
|
||||
@@ -1814,6 +1985,12 @@ local love = {
|
||||
returns = "(r: boolean, g: boolean, b: boolean, a: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
getCompressedImageFormats = {
|
||||
args = "()",
|
||||
description = "Gets the available compressed image formats, and whether each is supported.",
|
||||
returns = "(formats: table)",
|
||||
type = "function"
|
||||
},
|
||||
getDefaultFilter = {
|
||||
args = "()",
|
||||
description = "Returns the default scaling filters used with Images, Canvases, and Fonts.",
|
||||
@@ -1898,6 +2075,12 @@ local love = {
|
||||
returns = "(shader: Shader)",
|
||||
type = "function"
|
||||
},
|
||||
getStats = {
|
||||
args = "()",
|
||||
description = "Gets performance-related rendering statistics.",
|
||||
returns = "(drawcalls: number, canvasswitches: number, texturememory: number, images: number, canvases: number, fonts: number)",
|
||||
type = "function"
|
||||
},
|
||||
getSystemLimit = {
|
||||
args = "(limittype: GraphicsLimit)",
|
||||
description = "Gets the system-dependent maximum value for a love.graphics feature.",
|
||||
@@ -1953,7 +2136,7 @@ local love = {
|
||||
type = "function"
|
||||
},
|
||||
newMesh = {
|
||||
args = "(vertices: table, texture: Texture, mode: MeshDrawMode)",
|
||||
args = "(vertexcount: number, texture: Texture, mode: MeshDrawMode)",
|
||||
description = "Creates a new Mesh.",
|
||||
returns = "(mesh: Mesh)",
|
||||
type = "function"
|
||||
@@ -2031,7 +2214,7 @@ local love = {
|
||||
type = "function"
|
||||
},
|
||||
push = {
|
||||
args = "()",
|
||||
args = "(stack: StackType)",
|
||||
description = "Copies and pushes the current coordinate transformation to the transformation stack.\n\nThis function is always used to prepare for a corresponding pop operation later. It stores the current coordinate transformation state into the transformation stack and keeps it active. Later changes to the transformation can be undone by using the pop operation, which returns the coordinate transform to the state it was in before calling push.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
@@ -2456,6 +2639,12 @@ local love = {
|
||||
returns = "(name: string)",
|
||||
type = "function"
|
||||
},
|
||||
getVibration = {
|
||||
args = "()",
|
||||
description = "Gets the current vibration motor strengths on a Joystick with rumble support.",
|
||||
returns = "(left: number, right: number)",
|
||||
type = "function"
|
||||
},
|
||||
isConnected = {
|
||||
args = "()",
|
||||
description = "Gets whether the Joystick is connected.",
|
||||
@@ -2479,6 +2668,18 @@ local love = {
|
||||
description = "Checks if a virtual gamepad button on the Joystick is pressed. If the Joystick is not recognized as a Gamepad or isn't connected, then this function will always return false.",
|
||||
returns = "(anyDown: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isVibrationSupported = {
|
||||
args = "()",
|
||||
description = "Gets whether the Joystick supports vibration.",
|
||||
returns = "(supported: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
setVibration = {
|
||||
args = "()",
|
||||
description = "Sets the vibration motor speeds on a Joystick with rumble support.",
|
||||
returns = "(success: boolean)",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "Represents a physical joystick.",
|
||||
@@ -2544,17 +2745,29 @@ local love = {
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
getJoystickCount = {
|
||||
args = "()",
|
||||
description = "Gets the number of connected joysticks.",
|
||||
returns = "(joystickcount: number)",
|
||||
type = "function"
|
||||
},
|
||||
getJoysticks = {
|
||||
args = "()",
|
||||
description = "Gets a list of connected Joysticks.",
|
||||
returns = "(joysticks: table)",
|
||||
type = "function"
|
||||
},
|
||||
loadGamepadMappings = {
|
||||
args = "(mappings: string)",
|
||||
description = "Loads a gamepad mappings string or file created with love.joystick.saveGamepadMappings.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
saveGamepadMappings = {
|
||||
args = "()",
|
||||
description = "Saves the virtual gamepad mappings of all Joysticks that are recognized as gamepads and have either been recently used or their gamepad bindings have been modified.",
|
||||
returns = "(mappings: string)",
|
||||
type = "function"
|
||||
},
|
||||
setGamepadMapping = {
|
||||
args = "(guid: string, button: GamepadButton, inputtype: JoystickInputType, inputindex: number, hatdirection: JoystickHat)",
|
||||
description = "Binds a virtual gamepad input to a button, axis or hat for all Joysticks of a certain type. For example, if this function is used with a GUID returned by a Dualshock 3 controller in OS X, the binding will affect Joystick:getGamepadAxis and Joystick:isGamepadDown for all Dualshock 3 controllers used with the game when run in OS X.\n\nLÖVE includes built-in gamepad bindings for many common controllers. This function lets you change the bindings or add new ones for types of Joysticks which aren't recognized as gamepads by default.\n\nThe virtual gamepad buttons and axes are designed around the Xbox 360 controller layout.",
|
||||
returns = "(success: boolean)",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "Provides an interface to the user's joystick.",
|
||||
@@ -3184,6 +3397,18 @@ local love = {
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
getScancodeFromKey = {
|
||||
args = "(key: KeyConstant)",
|
||||
description = "Gets the hardware scancode corresponding to the given key.\n\nThe location of a key is based on the keyboard's current language layout, whereas scancodes are the layout-independent representations of where the physical keys are.\n\nFor example, the key located where \"q\" is on a U.S. keyboard has the scancode \"q\". When using a U.S. keyboard layout it produces the key \"q\", but when using a French keyboard layout it produces the key \"a\".\n\nScancodes are useful for creating default controls that have the same physical locations on on all systems.",
|
||||
returns = "(scancode: Scancode)",
|
||||
type = "function"
|
||||
},
|
||||
hasKeyRepeat = {
|
||||
args = "()",
|
||||
description = "Gets whether key repeat is enabled.",
|
||||
returns = "(enabled: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
hasTextInput = {
|
||||
args = "()",
|
||||
description = "Gets whether text input events are enabled.",
|
||||
@@ -3516,6 +3741,12 @@ local love = {
|
||||
returns = "(x: number, y: number)",
|
||||
type = "function"
|
||||
},
|
||||
getRelativeMode = {
|
||||
args = "()",
|
||||
description = "Gets whether relative mode is enabled for the mouse.\n\nIf relative mode is enabled, the cursor is hidden and doesn't move when the mouse does, but relative mouse motion events are still generated via love.mousemoved. This lets the mouse move in any direction indefinitely without the cursor getting stuck at the edges of the screen.\n\nThe reported position of the mouse is not updated while relative mode is enabled, even when relative mouse motion events are generated.",
|
||||
returns = "(enabled: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
getSystemCursor = {
|
||||
args = "(ctype: CursorType)",
|
||||
description = "Gets a Cursor object representing a system-native hardware cursor.\n\n Hardware cursors are framerate-independent and work the same way as normal operating system cursors. Unlike drawing an image at the mouse's current coordinates, hardware cursors never have visible lag between when the mouse is moved and when the cursor position updates, even at low framerates.",
|
||||
@@ -3576,6 +3807,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setRelativeMode = {
|
||||
args = "(enable: boolean)",
|
||||
description = "Sets whether relative mode is enabled for the mouse.\n\nWhen relative mode is enabled, the cursor is hidden and doesn't move when the mouse does, but relative mouse motion events are still generated via love.mousemoved. This lets the mouse move in any direction indefinitely without the cursor getting stuck at the edges of the screen.\n\nThe reported position of the mouse is not updated while relative mode is enabled, even when relative mouse motion events are generated.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setVisible = {
|
||||
args = "(visible: boolean)",
|
||||
description = "Sets the visibility of the cursor.",
|
||||
@@ -3604,6 +3841,12 @@ local love = {
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
mousemoved = {
|
||||
args = "(x: number, y: number, dx: number, dy: number)",
|
||||
description = "Callback function triggered when the mouse is moved.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
mousepressed = {
|
||||
args = "(x: number, y: number, button: MouseConstant)",
|
||||
description = "Callback function triggered when a mouse button is pressed.",
|
||||
@@ -3662,6 +3905,12 @@ local love = {
|
||||
returns = "(w: number)",
|
||||
type = "function"
|
||||
},
|
||||
getContactList = {
|
||||
args = "()",
|
||||
description = "Gets a list of all Contacts attached to the Body.",
|
||||
returns = "(contacts: table)",
|
||||
type = "function"
|
||||
},
|
||||
getFixtureList = {
|
||||
args = "()",
|
||||
description = "Returns a table with all fixtures.",
|
||||
@@ -3680,6 +3929,12 @@ local love = {
|
||||
returns = "(inertia: number)",
|
||||
type = "function"
|
||||
},
|
||||
getJointList = {
|
||||
args = "()",
|
||||
description = "Returns a table containing the Joints attached to this Body.",
|
||||
returns = "(joints: table)",
|
||||
type = "function"
|
||||
},
|
||||
getLinearDamping = {
|
||||
args = "()",
|
||||
description = "Gets the linear damping of the Body.\n\nThe linear damping is the rate of decrease of the linear velocity over time. A moving body with no damping and no external forces will continue moving indefinitely, as is the case in space. A moving body with damping will gradually stop moving.\n\nDamping is not the same as friction - they can be modelled together. However, only damping is provided by Box2D (and LÖVE).",
|
||||
@@ -3752,6 +4007,12 @@ local love = {
|
||||
returns = "(value: value)",
|
||||
type = "function"
|
||||
},
|
||||
getWorld = {
|
||||
args = "()",
|
||||
description = "Gets the World the body lives in.",
|
||||
returns = "(world: World)",
|
||||
type = "function"
|
||||
},
|
||||
getWorldCenter = {
|
||||
args = "()",
|
||||
description = "Get the center of mass position in world coordinates.\n\nUse Body:getLocalCenter to get the center of mass in local coordinates.",
|
||||
@@ -3806,6 +4067,12 @@ local love = {
|
||||
returns = "(status: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isDestroyed = {
|
||||
args = "()",
|
||||
description = "Gets whether the Body is destroyed. Destroyed bodies cannot be used.",
|
||||
returns = "(destroyed: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isDynamic = {
|
||||
args = "()",
|
||||
description = "Get the dynamic status of the body.\n\nA static body has no mass and a constant position. It will not react to collisions. Often used for walls.\n\nA dynamic body has mass and can move. It will react to collisions when the world is updated.",
|
||||
@@ -4046,6 +4313,12 @@ local love = {
|
||||
},
|
||||
Contact = {
|
||||
childs = {
|
||||
getFriction = {
|
||||
args = "()",
|
||||
description = "Get the friction between two shapes that are in contact.",
|
||||
returns = "(friction: number)",
|
||||
type = "function"
|
||||
},
|
||||
getNormal = {
|
||||
args = "()",
|
||||
description = "Get the normal vector between two shapes that are in contact.\n\nThis function returns the coordinates of a unit vector that points from the first shape to the second.",
|
||||
@@ -4226,6 +4499,12 @@ local love = {
|
||||
returns = "(value: mixed)",
|
||||
type = "function"
|
||||
},
|
||||
isDestroyed = {
|
||||
args = "()",
|
||||
description = "Gets whether the Fixture is destroyed. Destroyed fixtures cannot be used.",
|
||||
returns = "(destroyed: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isSensor = {
|
||||
args = "()",
|
||||
description = "Returns whether the fixture is a sensor.",
|
||||
@@ -4327,10 +4606,22 @@ local love = {
|
||||
type = "lib"
|
||||
},
|
||||
GearJoint = {
|
||||
args = "()",
|
||||
childs = {
|
||||
getRatio = {
|
||||
args = "()",
|
||||
description = "Get the ratio of a gear joint.",
|
||||
returns = "(ratio: number)",
|
||||
type = "function"
|
||||
},
|
||||
setRatio = {
|
||||
args = "(ratio: number)",
|
||||
description = "Set the ratio of a gear joint.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "Keeps bodies together in such a way that they act like gears.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
type = "lib"
|
||||
},
|
||||
Joint = {
|
||||
childs = {
|
||||
@@ -4340,6 +4631,12 @@ local love = {
|
||||
returns = "(x1: number, y1: number, x2: number, y2: number)",
|
||||
type = "function"
|
||||
},
|
||||
getBodies = {
|
||||
args = "()",
|
||||
description = "Gets the bodies that the Joint is attached to.",
|
||||
returns = "(bodyA: Body, bodyB: Body)",
|
||||
type = "function"
|
||||
},
|
||||
getCollideConnected = {
|
||||
args = "()",
|
||||
description = "Gets whether the connected Bodies collide.",
|
||||
@@ -4364,11 +4661,29 @@ local love = {
|
||||
returns = "(type: JointType)",
|
||||
type = "function"
|
||||
},
|
||||
getUserData = {
|
||||
args = "()",
|
||||
description = "Returns the Lua value associated with this Joint.",
|
||||
returns = "(value: mixed)",
|
||||
type = "function"
|
||||
},
|
||||
isDestroyed = {
|
||||
args = "()",
|
||||
description = "Gets whether the Joint is destroyed. Destroyed joints cannot be used.",
|
||||
returns = "(destroyed: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
setCollideConnected = {
|
||||
args = "(collide: boolean)",
|
||||
description = "Sets whether the connected Bodies should collide with eachother.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setUserData = {
|
||||
args = "(value: mixed)",
|
||||
description = "Associates a Lua value with the Joint.\n\nTo delete the reference, explicitly pass nil.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "Attach multiple bodies together to interact in unique ways.",
|
||||
@@ -4932,6 +5247,12 @@ local love = {
|
||||
returns = "(joints: table)",
|
||||
type = "function"
|
||||
},
|
||||
isDestroyed = {
|
||||
args = "()",
|
||||
description = "Gets whether the World is destroyed. Destroyed worlds cannot be used.",
|
||||
returns = "(destroyed: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
isLocked = {
|
||||
args = "()",
|
||||
description = "Returns if the world is updating its state.\n\nThis will return true inside the callbacks from World:setCallbacks.",
|
||||
@@ -5277,15 +5598,15 @@ local love = {
|
||||
type = "function"
|
||||
},
|
||||
push = {
|
||||
args = "()",
|
||||
args = "(value: value)",
|
||||
description = "Send a message to the thread Channel.\n\nThe value of the message can be a boolean, string, number, LÖVE userdata, or a simple flat table. Foreign userdata (Lua's files, LuaSocket, ENet, ...), functions, and tables inside tables are not supported.",
|
||||
returns = "(value: value)",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
supply = {
|
||||
args = "()",
|
||||
args = "(value: value)",
|
||||
description = "Send a message to the thread Channel and wait for a thread to accept it.\n\nThe value of the message can be a boolean, string, number, LÖVE userdata, or a simple flat table. Foreign userdata (Lua's files, LuaSocket, ENet, ...), functions, and tables inside tables are not supported.",
|
||||
returns = "(value: value)",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
@@ -5294,8 +5615,14 @@ local love = {
|
||||
},
|
||||
Thread = {
|
||||
childs = {
|
||||
start = {
|
||||
isRunning = {
|
||||
args = "()",
|
||||
description = "Returns whether the thread is currently running.\n\nThreads which are not running can be (re)started with Thread:start.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
start = {
|
||||
args = "(arg1: value, arg2: value, ...: value)",
|
||||
description = "Starts the thread.\n\nThreads can be restarted after they have completed their execution.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
@@ -5317,7 +5644,7 @@ local love = {
|
||||
type = "function"
|
||||
},
|
||||
newThread = {
|
||||
args = "(name: string, file: File)",
|
||||
args = "(fileData: FileData)",
|
||||
description = "Creates a new Thread from a File or Data object.",
|
||||
returns = "(thread: Thread)",
|
||||
type = "function"
|
||||
@@ -5370,7 +5697,7 @@ local love = {
|
||||
},
|
||||
update = {
|
||||
args = "(dt: number)",
|
||||
description = "Callback function used to update the state of the game every frame.",
|
||||
description = "Callback function triggered when a key is pressed.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
@@ -5396,6 +5723,18 @@ local love = {
|
||||
description = "class constants",
|
||||
type = "class"
|
||||
},
|
||||
getDimensions = {
|
||||
args = "()",
|
||||
description = "Gets the width and height of the window.",
|
||||
returns = "(width: number, height: number)",
|
||||
type = "function"
|
||||
},
|
||||
getDisplayName = {
|
||||
args = "(displayindex: number)",
|
||||
description = "Gets the name of a display.",
|
||||
returns = "(name: string)",
|
||||
type = "function"
|
||||
},
|
||||
getFullscreen = {
|
||||
args = "()",
|
||||
description = "Gets whether the window is fullscreen.",
|
||||
@@ -5423,7 +5762,7 @@ local love = {
|
||||
getMode = {
|
||||
args = "()",
|
||||
description = "Returns the current display mode.",
|
||||
returns = "(width: number, height: number, fullscreen: boolean, vsync: boolean, fsaa: number)",
|
||||
returns = "(width: number, height: number, flags: table)",
|
||||
type = "function"
|
||||
},
|
||||
getPixelScale = {
|
||||
@@ -5432,6 +5771,18 @@ local love = {
|
||||
returns = "(scale: number)",
|
||||
type = "function"
|
||||
},
|
||||
getPosition = {
|
||||
args = "()",
|
||||
description = "Gets the position of the window on the screen.\n\nThe window position is in the coordinate space of the display it is currently in.",
|
||||
returns = "(x: number, y: number, display: number)",
|
||||
type = "function"
|
||||
},
|
||||
getTitle = {
|
||||
args = "()",
|
||||
description = "Gets the window title.",
|
||||
returns = "(title: string)",
|
||||
type = "function"
|
||||
},
|
||||
getWidth = {
|
||||
args = "()",
|
||||
description = "Gets the width of the window.",
|
||||
@@ -5462,6 +5813,12 @@ local love = {
|
||||
returns = "(visible: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
minimize = {
|
||||
args = "()",
|
||||
description = "Minimizes the window to the system's task bar / dock.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setFullscreen = {
|
||||
args = "(fullscreen: boolean, fstype: FullscreenType)",
|
||||
description = "Enters or exits fullscreen. The display to use when entering fullscreen is chosen based on which display the window is currently in, if multiple monitors are connected.\n\nIf fullscreen mode is entered and the window size doesn't match one of the monitor's display modes (in normal fullscreen mode) or the window size doesn't match the desktop size (in 'desktop' fullscreen mode), the window will be resized appropriately. The window will revert back to its original size again when fullscreen mode is exited using this function.",
|
||||
@@ -5480,11 +5837,29 @@ local love = {
|
||||
returns = "(success: boolean)",
|
||||
type = "function"
|
||||
},
|
||||
setPosition = {
|
||||
args = "(x: number, y: number, display: number)",
|
||||
description = "Sets the position of the window on the screen.\n\nThe window position is in the coordinate space of the specified display.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
setTitle = {
|
||||
args = "(title: string)",
|
||||
description = "Sets the window title.",
|
||||
returns = "()",
|
||||
type = "function"
|
||||
},
|
||||
showMessageBox = {
|
||||
args = "(title: string, message: string, buttonlist: table, type: MessageBoxType, attachtowindow: boolean)",
|
||||
description = "Displays a message box dialog above the love window. The message box contains a title, optional text, and buttons.",
|
||||
returns = "(pressedbutton: number)",
|
||||
type = "function"
|
||||
},
|
||||
toPixels = {
|
||||
args = "(x: number, y: number)",
|
||||
description = "Converts a number from density-independent units to pixels.\n\nIf the highdpi window flag is enabled in Mac OS X and the window is in a retina screen, density-independent units will be twice the size of pixels. Otherwise they will usually be the same. This function can be used to convert coordinates from the size users are expecting them to display at onscreen to pixels. love.window.fromPixels does the opposite.\n\nMost LÖVE functions return values and expect arguments in terms of pixels rather than density-independent units.",
|
||||
returns = "(px: number, py: number)",
|
||||
type = "function"
|
||||
}
|
||||
},
|
||||
description = "The primary responsibility for the love.graphics module is the drawing of lines, shapes, text, Images and other Drawable objects onto the screen. Its secondary responsibilities include loading external files (including Images and Fonts) into memory, creating specialized objects (such as ParticleSystems or Framebuffers) and managing screen geometry.\n\nLÖVE's coordinate system is rooted in the upper-left corner of the screen, which is at location (0, 0). The x-axis is horizontal: larger values are further to the right. The y-axis is vertical: larger values are further towards the bottom.\n\nIn many cases, you draw images or shapes in terms of their upper-left corner (See the picture above).\n\nMany of the functions are used to manipulate the graphics coordinate system, which is essentially the way coordinates are mapped to the display. You can change the position, scale, and even rotation in this way.",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/lua53.dll
BIN
bin/lua53.dll
Binary file not shown.
BIN
bin/lua53.exe
BIN
bin/lua53.exe
Binary file not shown.
@@ -44,6 +44,10 @@ if [ $# -eq 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
WXLUASTRIP="/strip"
|
||||
WXWIDGETSDEBUG="--disable-debug"
|
||||
WXLUABUILD="MinSizeRel"
|
||||
|
||||
# iterate through the command line arguments
|
||||
for ARG in "$@"; do
|
||||
case $ARG in
|
||||
@@ -69,6 +73,11 @@ for ARG in "$@"; do
|
||||
luasocket)
|
||||
BUILD_LUASOCKET=true
|
||||
;;
|
||||
debug)
|
||||
WXLUASTRIP=""
|
||||
WXWIDGETSDEBUG="--enable-debug=max --enable-debug_gdb"
|
||||
WXLUABUILD="Debug"
|
||||
;;
|
||||
all)
|
||||
BUILD_WXWIDGETS=true
|
||||
BUILD_LUA=true
|
||||
@@ -116,7 +125,7 @@ LUA_BASENAME="lua-5.1.5"
|
||||
if [ $BUILD_52 ]; then
|
||||
LUAV="52"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.2.2"
|
||||
LUA_BASENAME="lua-5.2.4"
|
||||
fi
|
||||
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
@@ -125,13 +134,13 @@ LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
if [ $BUILD_53 ]; then
|
||||
LUAV="53"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.3.0-beta"
|
||||
LUA_BASENAME="lua-5.3.1"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://www.lua.org/work/$LUA_FILENAME"
|
||||
LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
fi
|
||||
|
||||
if [ $BUILD_JIT ]; then
|
||||
LUA_BASENAME="LuaJIT-2.0.2"
|
||||
LUA_BASENAME="LuaJIT-2.0.4"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://luajit.org/download/$LUA_FILENAME"
|
||||
fi
|
||||
@@ -141,7 +150,7 @@ if [ $BUILD_WXWIDGETS ]; then
|
||||
svn co "$WXWIDGETS_URL" "$WXWIDGETS_BASENAME" || { echo "Error: failed to checkout wxWidgets"; exit 1; }
|
||||
|
||||
cd "$WXWIDGETS_BASENAME"
|
||||
./configure --prefix="$INSTALL_DIR" --disable-debug --disable-shared --enable-unicode \
|
||||
./configure --prefix="$INSTALL_DIR" $WXWIDGETSDEBUG --disable-shared --enable-unicode \
|
||||
--enable-compat28 \
|
||||
--with-libjpeg=builtin --with-libpng=builtin --with-libtiff=no --with-expat=no \
|
||||
--with-zlib=builtin --disable-richtext --with-gtk=2 \
|
||||
@@ -187,13 +196,13 @@ if [ $BUILD_WXLUA ]; then
|
||||
# (temporary) fix for compilation issue in wxlua using wxwidgets 3.1+ (r238)
|
||||
sed -i 's/{ "wxSTC_COFFEESCRIPT_HASHQUOTEDSTRING", wxSTC_COFFEESCRIPT_HASHQUOTEDSTRING },/\/\/ removed by ZBS build process/' modules/wxbind/src/wxstc_bind.cpp
|
||||
|
||||
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=FALSE \
|
||||
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=$WXLUABUILD -DBUILD_SHARED_LIBS=FALSE \
|
||||
-DwxWidgets_CONFIG_EXECUTABLE="$INSTALL_DIR/bin/wx-config" \
|
||||
-DwxWidgets_COMPONENTS="stc;html;aui;adv;core;net;base" \
|
||||
-DwxLuaBind_COMPONENTS="stc;html;aui;adv;core;net;base" -DwxLua_LUA_LIBRARY_USE_BUILTIN=FALSE \
|
||||
-DwxLua_LUA_INCLUDE_DIR="$INSTALL_DIR/include" -DwxLua_LUA_LIBRARY="$INSTALL_DIR/lib/liblua.a" .
|
||||
(cd modules/luamodule; make $MAKEFLAGS) || { echo "Error: failed to build wxLua"; exit 1; }
|
||||
(cd modules/luamodule; make install/strip)
|
||||
(cd modules/luamodule; make install$WXLUASTRIP)
|
||||
[ -f "$INSTALL_DIR/lib/libwx.so" ] || { echo "Error: libwx.so isn't found"; exit 1; }
|
||||
cd ../..
|
||||
rm -rf "$WXLUA_BASENAME"
|
||||
|
||||
@@ -120,7 +120,7 @@ LUA_BASENAME="lua-5.1.5"
|
||||
if [ $BUILD_52 ]; then
|
||||
LUAV="52"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.2.2"
|
||||
LUA_BASENAME="lua-5.2.4"
|
||||
fi
|
||||
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
@@ -129,13 +129,13 @@ LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
if [ $BUILD_53 ]; then
|
||||
LUAV="53"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.3.0-beta"
|
||||
LUA_BASENAME="lua-5.3.1"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://www.lua.org/work/$LUA_FILENAME"
|
||||
LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
fi
|
||||
|
||||
if [ $BUILD_JIT ]; then
|
||||
LUA_BASENAME="LuaJIT-2.0.2"
|
||||
LUA_BASENAME="LuaJIT-2.0.4"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://luajit.org/download/$LUA_FILENAME"
|
||||
fi
|
||||
|
||||
@@ -23,11 +23,11 @@ LUASOCKET_BASENAME="luasocket-3.0-rc1"
|
||||
LUASOCKET_FILENAME="v3.0-rc1.zip"
|
||||
LUASOCKET_URL="https://github.com/diegonehab/luasocket/archive/$LUASOCKET_FILENAME"
|
||||
|
||||
OPENSSL_BASENAME="openssl-1.0.1e"
|
||||
OPENSSL_BASENAME="openssl-1.0.2a"
|
||||
OPENSSL_FILENAME="$OPENSSL_BASENAME.tar.gz"
|
||||
OPENSSL_URL="http://www.openssl.org/source/$OPENSSL_FILENAME"
|
||||
|
||||
LUASEC_BASENAME="luasec-0.4.1"
|
||||
LUASEC_BASENAME="luasec-0.5"
|
||||
LUASEC_FILENAME="$LUASEC_BASENAME.zip"
|
||||
LUASEC_URL="https://github.com/brunoos/luasec/archive/$LUASEC_FILENAME"
|
||||
|
||||
@@ -132,13 +132,15 @@ fi
|
||||
mkdir -p "$INSTALL_DIR" || { echo "Error: cannot create directory $INSTALL_DIR"; exit 1; }
|
||||
|
||||
LUAV="51"
|
||||
LUAD="5.1"
|
||||
LUAS=""
|
||||
LUA_BASENAME="lua-5.1.5"
|
||||
|
||||
if [ $BUILD_52 ]; then
|
||||
LUAV="52"
|
||||
LUAD="5.2"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.2.2"
|
||||
LUA_BASENAME="lua-5.2.4"
|
||||
fi
|
||||
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
@@ -146,14 +148,15 @@ LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
|
||||
if [ $BUILD_53 ]; then
|
||||
LUAV="53"
|
||||
LUAD="5.3"
|
||||
LUAS=$LUAV
|
||||
LUA_BASENAME="lua-5.3.0-beta"
|
||||
LUA_BASENAME="lua-5.3.1"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://www.lua.org/work/$LUA_FILENAME"
|
||||
LUA_URL="http://www.lua.org/ftp/$LUA_FILENAME"
|
||||
fi
|
||||
|
||||
if [ $BUILD_JIT ]; then
|
||||
LUA_BASENAME="LuaJIT-2.0.2"
|
||||
LUA_BASENAME="LuaJIT-2.0.4"
|
||||
LUA_FILENAME="$LUA_BASENAME.tar.gz"
|
||||
LUA_URL="http://luajit.org/download/$LUA_FILENAME"
|
||||
fi
|
||||
@@ -186,6 +189,16 @@ if [ $BUILD_LUA ]; then
|
||||
# move luajit to lua as it's expected by luasocket and other components
|
||||
cp "$INSTALL_DIR"/include/luajit*/* "$INSTALL_DIR/include/"
|
||||
else
|
||||
# need to patch Lua io to support large (>2GB) files on Windows:
|
||||
# http://lua-users.org/lists/lua-l/2015-05/msg00370.html
|
||||
cat <<EOF >>src/luaconf.h
|
||||
#if defined(liolib_c) && defined(__MINGW32__)
|
||||
#include <sys/types.h>
|
||||
#define l_fseek(f,o,w) fseeko64(f,o,w)
|
||||
#define l_ftell(f) ftello64(f)
|
||||
#define l_seeknum off64_t
|
||||
#endif
|
||||
EOF
|
||||
make mingw || { echo "Error: failed to build Lua"; exit 1; }
|
||||
make install INSTALL_TOP="$INSTALL_DIR"
|
||||
fi
|
||||
@@ -238,17 +251,17 @@ if [ $BUILD_LUASOCKET ]; then
|
||||
wget --no-check-certificate -c "$LUASOCKET_URL" -O "$LUASOCKET_FILENAME" || { echo "Error: failed to download LuaSocket"; exit 1; }
|
||||
unzip "$LUASOCKET_FILENAME"
|
||||
cd "$LUASOCKET_BASENAME"
|
||||
mkdir -p "$INSTALL_DIR/lib/lua/$LUAV/"{mime,socket}
|
||||
gcc $BUILD_FLAGS -o "$INSTALL_DIR/lib/lua/$LUAV/mime/core.dll" src/mime.c -llua$LUAV \
|
||||
mkdir -p "$INSTALL_DIR/lib/lua/$LUAD/"{mime,socket}
|
||||
gcc $BUILD_FLAGS -o "$INSTALL_DIR/lib/lua/$LUAD/mime/core.dll" src/mime.c -llua$LUAV \
|
||||
|| { echo "Error: failed to build LuaSocket"; exit 1; }
|
||||
gcc $BUILD_FLAGS -DLUASOCKET_INET_PTON -D_WIN32_WINNT=0x0501 -o "$INSTALL_DIR/lib/lua/$LUAV/socket/core.dll" \
|
||||
gcc $BUILD_FLAGS -DLUASOCKET_INET_PTON -D_WIN32_WINNT=0x0501 -o "$INSTALL_DIR/lib/lua/$LUAD/socket/core.dll" \
|
||||
src/{auxiliar.c,buffer.c,except.c,inet.c,io.c,luasocket.c,options.c,select.c,tcp.c,timeout.c,udp.c,wsocket.c} -lwsock32 -lws2_32 -llua$LUAV \
|
||||
|| { echo "Error: failed to build LuaSocket"; exit 1; }
|
||||
mkdir -p "$INSTALL_DIR/share/lua/$LUAV/socket"
|
||||
cp src/{ftp.lua,http.lua,smtp.lua,tp.lua,url.lua} "$INSTALL_DIR/share/lua/$LUAV/socket"
|
||||
cp src/{ltn12.lua,mime.lua,socket.lua} "$INSTALL_DIR/share/lua/$LUAV"
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAV/mime/core.dll" ] || { echo "Error: mime/core.dll isn't found"; exit 1; }
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAV/socket/core.dll" ] || { echo "Error: socket/core.dll isn't found"; exit 1; }
|
||||
mkdir -p "$INSTALL_DIR/share/lua/$LUAD/socket"
|
||||
cp src/{ftp.lua,http.lua,smtp.lua,tp.lua,url.lua} "$INSTALL_DIR/share/lua/$LUAD/socket"
|
||||
cp src/{ltn12.lua,mime.lua,socket.lua} "$INSTALL_DIR/share/lua/$LUAD"
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAD/mime/core.dll" ] || { echo "Error: mime/core.dll isn't found"; exit 1; }
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAD/socket/core.dll" ] || { echo "Error: socket/core.dll isn't found"; exit 1; }
|
||||
cd ..
|
||||
rm -rf "$LUASOCKET_FILENAME" "$LUASOCKET_BASENAME"
|
||||
fi
|
||||
@@ -271,11 +284,13 @@ if [ $BUILD_LUASEC ]; then
|
||||
# the folder in the archive is "luasec-luasec-....", so need to fix
|
||||
mv "luasec-$LUASEC_BASENAME" $LUASEC_BASENAME
|
||||
cd "$LUASEC_BASENAME"
|
||||
gcc $BUILD_FLAGS -o "$INSTALL_DIR/lib/lua/5.1/ssl.dll" \
|
||||
src/{timeout.c,buffer.c,io.c,context.c,ssl.c,wsocket.c} -lssl -lcrypto -lws2_32 -lgdi32 -llua51 \
|
||||
gcc $BUILD_FLAGS -o "$INSTALL_DIR/lib/lua/$LUAD/ssl.dll" \
|
||||
src/luasocket/{timeout.c,buffer.c,io.c,wsocket.c} src/{context.c,x509.c,ssl.c} -Isrc -lssl -lcrypto -lws2_32 -lgdi32 -llua$LUAV \
|
||||
|| { echo "Error: failed to build LuaSec"; exit 1; }
|
||||
cp src/{ssl.lua,https.lua} "$INSTALL_DIR/share/lua/5.1"
|
||||
[ -f "$INSTALL_DIR/lib/lua/5.1/ssl.dll" ] || { echo "Error: luasec.dll isn't found"; exit 1; }
|
||||
cp src/ssl.lua "$INSTALL_DIR/share/lua/$LUAD"
|
||||
mkdir -p "$INSTALL_DIR/share/lua/$LUAD/ssl"
|
||||
cp src/https.lua "$INSTALL_DIR/share/lua/$LUAD/ssl"
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAD/ssl.dll" ] || { echo "Error: luasec.dll isn't found"; exit 1; }
|
||||
cd ..
|
||||
rm -rf "$LUASEC_FILENAME" "$LUASEC_BASENAME"
|
||||
fi
|
||||
@@ -284,9 +299,9 @@ fi
|
||||
if [ $BUILD_WINAPI ]; then
|
||||
git clone "$WINAPI_URL" "$WINAPI_BASENAME"
|
||||
cd "$WINAPI_BASENAME"
|
||||
gcc $BUILD_FLAGS -DPSAPI_VERSION=1 -o "$INSTALL_DIR/lib/lua/5.1/winapi.dll" winapi.c wutils.c -lpsapi -lmpr -llua51 \
|
||||
gcc $BUILD_FLAGS -DPSAPI_VERSION=1 -o "$INSTALL_DIR/lib/lua/$LUAD/winapi.dll" winapi.c wutils.c -lpsapi -lmpr -llua$LUAV \
|
||||
|| { echo "Error: failed to build winapi"; exit 1; }
|
||||
[ -f "$INSTALL_DIR/lib/lua/5.1/winapi.dll" ] || { echo "Error: winapi.dll isn't found"; exit 1; }
|
||||
[ -f "$INSTALL_DIR/lib/lua/$LUAD/winapi.dll" ] || { echo "Error: winapi.dll isn't found"; exit 1; }
|
||||
cd ..
|
||||
rm -rf "$WINAPI_BASENAME"
|
||||
fi
|
||||
@@ -304,13 +319,13 @@ mkdir -p "$BIN_DIR" || { echo "Error: cannot create directory $BIN_DIR"; exit 1;
|
||||
|
||||
[ $BUILD_LUA ] && cp "$INSTALL_DIR/bin/lua$LUAS.exe" "$INSTALL_DIR/lib/lua$LUAV.dll" "$BIN_DIR"
|
||||
[ $BUILD_WXLUA ] && cp "$INSTALL_DIR/bin/libwx.dll" "$BIN_DIR/wx.dll"
|
||||
[ $BUILD_WINAPI ] && cp "$INSTALL_DIR/lib/lua/5.1/winapi.dll" "$BIN_DIR"
|
||||
[ $BUILD_LUASEC ] && cp "$INSTALL_DIR/lib/lua/5.1/ssl.dll" "$BIN_DIR"
|
||||
[ $BUILD_WINAPI ] && cp "$INSTALL_DIR/lib/lua/$LUAD/winapi.dll" "$BIN_DIR/clibs$LUAS"
|
||||
[ $BUILD_LUASEC ] && cp "$INSTALL_DIR/lib/lua/$LUAD/ssl.dll" "$BIN_DIR/clibs$LUAS"
|
||||
|
||||
if [ $BUILD_LUASOCKET ]; then
|
||||
mkdir -p "$BIN_DIR/clibs$LUAS/"{mime,socket}
|
||||
cp "$INSTALL_DIR/lib/lua/$LUAV/mime/core.dll" "$BIN_DIR/clibs$LUAS/mime"
|
||||
cp "$INSTALL_DIR/lib/lua/$LUAV/socket/core.dll" "$BIN_DIR/clibs$LUAS/socket"
|
||||
cp "$INSTALL_DIR/lib/lua/$LUAD/mime/core.dll" "$BIN_DIR/clibs$LUAS/mime"
|
||||
cp "$INSTALL_DIR/lib/lua/$LUAD/socket/core.dll" "$BIN_DIR/clibs$LUAS/socket"
|
||||
fi
|
||||
|
||||
# To build lua5.1.dll proxy:
|
||||
|
||||
@@ -54,7 +54,7 @@ end
|
||||
|
||||
local file = ... -- pass an existing file name as a parameter
|
||||
local messages = {}
|
||||
for _, mask in ipairs({"zbstudio/*.lua", "src/main.lua", "src/editor/*.lua"}) do
|
||||
for _, mask in ipairs({"src/main.lua", "src/editor/*.lua"}) do
|
||||
for _, file in ipairs(FileSysGet(mask, wx.wxFILE)) do
|
||||
local content = FileRead(file)
|
||||
for msg in content:gmatch("[^%w]TR(%b())") do
|
||||
@@ -83,9 +83,12 @@ end
|
||||
local plural = existing[0] and (" [0] = "..existing[0].."\n") or ""
|
||||
existing[0] = nil
|
||||
|
||||
local en = loadfile("cfg/i18n/en.lua")() -- load 'en' with translations that require pluralization
|
||||
|
||||
local msgs = {}
|
||||
for m, files in pairs(messages) do
|
||||
local str = " ["..m.."] = "..(existing[m] or 'nil, --')
|
||||
local str = " ["..m.."] = "
|
||||
..(existing[m] or (en[m:gsub([=[^['"]]=],''):gsub([=[['"]$]=],'')] and '{}, --' or 'nil, --'))
|
||||
str = str:gsub(" %-%-.*$", "").." -- "
|
||||
for f in pairs(files) do str = str .. f .. ", " end
|
||||
msgs[#msgs+1] = str:gsub(", $", "")
|
||||
|
||||
@@ -154,14 +154,20 @@ int main (int argc, char *argv[])
|
||||
MB_OK|MB_ICONERROR);
|
||||
return 0;
|
||||
}
|
||||
if (file!=NULL)
|
||||
*file = 0; // finish the string, I don't need the appname
|
||||
//int i;
|
||||
//for (i=0;i<argc; i++)
|
||||
// printf("%d %s\n",i,argv[i]);
|
||||
if (file!=NULL) *file = 0; // finish the string, don't need the appname
|
||||
|
||||
SetCurrentDirectory(buffer);
|
||||
|
||||
// set the application as DPI aware
|
||||
typedef enum _Process_DPI_Awareness {
|
||||
Process_DPI_Unaware = 0,
|
||||
Process_System_DPI_Aware = 1,
|
||||
Process_Per_Monitor_DPI_Aware = 2
|
||||
} Process_DPI_Awareness;
|
||||
typedef BOOL (WINAPI *SetProcessDPIAwareness_t)(Process_DPI_Awareness);
|
||||
SetProcessDPIAwareness_t pfnSetProcessDPIAwareness = (SetProcessDPIAwareness_t)
|
||||
GetProcAddress(GetModuleHandle(TEXT("user32.dll")), "SetProcessDPIAware");
|
||||
if (NULL != pfnSetProcessDPIAwareness) pfnSetProcessDPIAwareness(Process_System_DPI_Aware);
|
||||
|
||||
SetDllDirectory(".\\bin\\");
|
||||
hinstLib = LoadLibrary("lua51.dll");
|
||||
|
||||
131
cfg/i18n/cn.lua
131
cfg/i18n/cn.lua
@@ -1,25 +1,23 @@
|
||||
return {
|
||||
["%d instance"] = "%d 个体", -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = nil, -- src\editor\package.lua
|
||||
["%s%% loaded..."] = nil, -- src\editor\commands.lua
|
||||
["&About"] = "关于(&A)", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "添加监视(&A)", -- src\editor\debugger.lua
|
||||
["&Break"] = "中断", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "关闭页面", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = nil, -- src\editor\menu_help.lua
|
||||
["&Compile"] = "编译", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Copy"] = "复制", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "布局", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "删除监视", -- src\editor\debugger.lua
|
||||
["&Delete"] = nil, -- src\editor\filetree.lua
|
||||
["&Documentation"] = nil, -- src\editor\menu_help.lua
|
||||
["&Down"] = "往下", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = nil, -- src\editor\filetree.lua
|
||||
["&Edit Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "编辑监视", -- src\editor\debugger.lua
|
||||
["&Edit"] = "编辑", -- src\editor\menu_edit.lua
|
||||
["&File"] = "文件", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "查找全部", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "查找下一个", -- src\editor\findreplace.lua
|
||||
["&Find"] = "查找", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "全 折叠/展开", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = nil, -- src\editor\menu_help.lua
|
||||
@@ -34,8 +32,7 @@ return {
|
||||
["&Project"] = "项目", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "重做", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = nil, -- src\editor\filetree.lua
|
||||
["&Replace All"] = "全替换", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "替换", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "替换", -- src\editor\menu_search.lua
|
||||
["&Run"] = "执行", -- src\editor\menu_project.lua
|
||||
["&Save"] = "保存", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "搜索", -- src\editor\menu_search.lua
|
||||
@@ -43,14 +40,11 @@ return {
|
||||
["&Stack Window"] = "叠视窗/堆栈视窗", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "开启除错器伺服机", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = nil, -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "子文件夹", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = nil, -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = nil, -- src\editor\menu_help.lua
|
||||
["&Undo"] = "撤消", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "往上", -- src\editor\findreplace.lua
|
||||
["&View"] = "视图", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "监视视窗", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = nil, -- src\editor\findreplace.lua
|
||||
["About %s"] = "关于 %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = nil, -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "添加监视表达式", -- src\editor\editor.lua
|
||||
@@ -60,25 +54,27 @@ return {
|
||||
["Analyze"] = "分析", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "自动补全标识符", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "当输入时自动补全", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = nil, -- src\editor\commands.lua
|
||||
["Bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "执行下一语句之后中断执行", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "执行下一语句之后中断执行", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "清除输出视窗", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "注释/消除注释", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "不能在现行编辑视窗对脚本进行除错", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = nil, -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "在当前项目中寻找不到文件 '%s' 以进行激活然后除错, 更新项目或是在编辑器里开启文件后再除错", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = nil, -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = nil, -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "不能处理自动恢复存档: %s", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = nil, -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "不能执行entry point脚本 ('%s')", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "除错动作失败 '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "不能启动除错,没有文档被开启或当前更改过的文档还没保存('%s')", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = nil, -- src\editor\debugger.lua
|
||||
["Cancel"] = "取消", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = nil, -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "选择项目文件夹", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "请选...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = nil, -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = nil, -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "选择项目文件夹", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Choose..."] = "请选...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = nil, -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = nil, -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "编译或除错前清除输出视窗", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "关闭其他页面", -- src\editor\gui.lua
|
||||
@@ -99,21 +95,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "复制被选的text到clipboard", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = nil, -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "不能激活 '%s' 以除错; 省略后继续进行", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "新建空文档", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "新建空文档", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "剪切", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "剪切被选的text到clipboard", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "除错伺服器起始于 %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = nil, -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "除错会话完成 (%s)", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "除错会话于 '%s' 起始", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "除错挂起于 %s:%s (不能激活文档).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "除错挂起于 '%s:%s' (不能激活文档).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = nil, -- src\editor\menu_project.lua
|
||||
["Directory"] = "文件夹", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = nil, -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = nil, -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = nil, -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "需要重新导入吗?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "需要把更改保存于 '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "离开", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = nil, -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "输入Lua代码然后按 <Enter> 以执行", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = nil, -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = nil, -- src\editor\editor.lua
|
||||
@@ -124,31 +121,30 @@ return {
|
||||
["Error"] = "错误", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = nil, -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "执行当前项目/文档和更新代码以便得到执行结果", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "执行当前项目/文档", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "执行当前项目/文档", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "执行出错误", -- src\editor\debugger.lua
|
||||
["Exit program"] = "离开程式", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "磁碟上的文档 '%s' 已被更改", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "文档 '%s' 的时间戳比 '%s' 更新近; 请检验后再保存", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = nil, -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "文档 '%s' 已不存在", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "文档类", -- src\editor\findreplace.lua
|
||||
["File already exists."] = nil, -- src\editor\commands.lua
|
||||
["File history"] = "文档历史", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "在文档中查找", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "查找下一个", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "查找上一个", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "在文档中查找", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = nil, -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "在文档中查找text然后更换", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "查找text然后更换", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "查找text然后更换", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "在文档中查找", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "在文档中查找text", -- src\editor\menu_search.lua
|
||||
["Find text"] = "查找text", -- src\editor\menu_search.lua
|
||||
["Find text"] = "查找text", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "查找之前出现的text", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "查找之後将出现的text", -- src\editor\menu_search.lua
|
||||
["Find"] = "查找", -- src\editor\findreplace.lua
|
||||
["Find"] = "查找", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "折叠/展开所有代码折叠", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "找到自动恢复存档和恢复已存对话", -- src\editor\commands.lua
|
||||
["Found"] = "找到", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "全屏", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = nil, -- src\editor\editor.lua
|
||||
["Go To File..."] = nil, -- src\editor\menu_search.lua
|
||||
@@ -161,24 +157,26 @@ return {
|
||||
["Go to symbol"] = nil, -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.lua
|
||||
["In Files"] = "在档案里", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = nil, -- src\editor\outline.lua
|
||||
["Indexing completed."] = nil, -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = nil, -- src\editor\menu_search.lua
|
||||
["Known Files"] = "所知的文档", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "行: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "本地主控台", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "Lua 解释器", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = nil, -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "映射远程请求 '%s' 至 '%s'", -- src\editor\debugger.lua
|
||||
["Match &case"] = "case匹配", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "全句匹配", -- src\editor\findreplace.lua
|
||||
["Match case"] = "case匹配", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "全句匹配", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "发现混杂的EOL编码", -- src\editor\commands.lua
|
||||
["Navigate"] = nil, -- src\editor\menu_search.lua
|
||||
["New &File"] = nil, -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = nil, -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "打开现存文档", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "打开现存文档", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "打开文档", -- src\editor\commands.lua
|
||||
["Options"] = "选项", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = nil, -- src\editor\menu_view.lua
|
||||
["Outline"] = nil, -- src\editor\outline.lua
|
||||
["Output (running)"] = "输出 (进行中)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -200,48 +198,59 @@ return {
|
||||
["Project"] = "项目", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "项目/文档树 视窗", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = nil, -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = nil, -- src\editor\menu_search.lua
|
||||
["R/O"] = "唯读", -- src\editor\editor.lua
|
||||
["R/W"] = "读写", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "在文档中替换", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = nil, -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = nil, -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = nil, -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "最近的文档", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "重做最后被取消的编辑", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = nil, -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Refresh"] = "刷新", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "因为有另一个除错在进行,拒绝开启新的除错对话", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "正则表达式", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "正则表达式", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "远程主控台", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = nil, -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "更换全部", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = nil, -- src\editor\editor.lua
|
||||
["Replace"] = "更换", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "更换全部", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = nil, -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "以%s更换无效的UTF8字元", -- src\editor\commands.lua
|
||||
["Replaced"] = "更换", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "更换中", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "重置缺省布局", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "以Scratchpad执行", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "以Scratchpad执行", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = nil, -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "以Scratchpad执行", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "停止除错", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "停止进程", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "另存为...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "全部存档", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "存档更新?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "保存所有开启的文档", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "保存所有开启的文档", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "文档另存为", -- src\editor\commands.lua
|
||||
["Save file?"] = "保存文档?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "用新档案名称保存当前文档", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "保存当前文档", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "保存当前文档", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "在 %s 存档自动恢复", -- src\editor\commands.lua
|
||||
["Scope"] = "范围", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "暂存器错误", -- src\editor\debugger.lua
|
||||
["Searching for"] = "搜索", -- src\editor\findreplace.lua
|
||||
["Search direction"] = nil, -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = nil, -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = nil, -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = nil, -- src\editor\editor.lua
|
||||
["Select &All"] = "选全部", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = nil, -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = nil, -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "选编辑器内的所有text", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = nil, -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = nil, -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = nil, -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = nil, -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "从当前文档设置", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "从当前文档设置项目文件夹", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "从当前文档设置项目文件夹", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = nil, -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "设置解释器", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "设置项目文件夹", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "设置: 系统", -- src\editor\menu_edit.lua
|
||||
@@ -251,40 +260,50 @@ return {
|
||||
["Show Hidden Files"] = nil, -- src\editor\filetree.lua
|
||||
["Show Location"] = nil, -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = nil, -- src\editor\filetree.lua
|
||||
["Show context"] = nil, -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = nil, -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = nil, -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "在当前的位置展现tooltip; 把游标放置于函数的开括号之后", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = nil, -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = nil, -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = nil, -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "对被选的行进行排列", -- src\editor\menu_edit.lua
|
||||
["Source"] = nil, -- src\editor\menu_edit.lua
|
||||
["Stack"] = "堆栈", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "开始除错", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = nil, -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "除错运行 进入子程序/函数", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "除错运行 掠过子程序/函数", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "除错运行 离开子程序/函数", -- src\editor\menu_project.lua
|
||||
["Step into"] = "除错运行 进入子程序/函数", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "除错运行 离开当前的函数", -- src\editor\menu_project.lua
|
||||
["Step over"] = "除错运行 掠过子程序/函数", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = nil, -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "终止目前进行着的进程", -- src\editor\menu_project.lua
|
||||
["Step into"] = "除错运行 进入子程序/函数", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "除错运行 离开当前的函数", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "除错运行 掠过子程序/函数", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "终止目前进行着的进程", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "切换全屏模式", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = nil, -- src\editor\outline.lua
|
||||
["Text not found."] = "寻找不到text", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "API file必须存放在API文件夹中的子文件夹", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "切换中断点", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "切换中断点", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = nil, -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "切换中断点", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "追踪", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "执行追踪展示每一执行过的语句", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "导出文件失败 '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "保存文件失败 '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "停止程序失败 (pid: %d), 代码 %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "清除前编辑动作", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = nil, -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = nil, -- src\editor\outline.lua
|
||||
["Use %s to close."] = nil, -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "用 '%s' 来看全解析", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "用 '%s' 来显示语句的终结和 '%s' 来进行转换", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "用 'clear' 来清除shell的输出和历史", -- src\editor\shellbox.lua
|
||||
@@ -292,11 +311,11 @@ return {
|
||||
["View the outline window"] = nil, -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "查看输出/主控台视窗", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "查看项目/文件树视窗", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "查看堆栈视窗", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "查看监视视窗", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "查看堆栈视窗", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "查看监视视窗", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "监视", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "欢迎来到互动 Lua interpreter.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "卷绕", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "卷绕", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "必须先保存程序", -- src\editor\commands.lua
|
||||
["Zoom In"] = nil, -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = nil, -- src\editor\menu_view.lua
|
||||
|
||||
137
cfg/i18n/de.lua
137
cfg/i18n/de.lua
@@ -1,26 +1,24 @@
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = {"%d Instanz", "%d Instanzen"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "Ereignis fehlgeschlagen : %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = "%s%% geladen...", -- src\editor\commands.lua
|
||||
["&About"] = "&Über", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Beobachtungspunkt hinzufügen", -- src\editor\debugger.lua
|
||||
["&Break"] = "&Unterbrechung", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "S&eite schließen", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = "&Community", -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Compiler", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = "Wert kopieren", -- src\editor\debugger.lua
|
||||
["&Copy"] = "&Kopieren", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Standard-&Layout", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "&Beobachtungspunkt entfernen", -- src\editor\debugger.lua
|
||||
["&Delete"] = "&Entfernen", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "&Dokumentation", -- src\editor\menu_help.lua
|
||||
["&Down"] = "&Runter", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "Projektverzeichnis ändern", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "Wert editieren", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "&Beobachtungspunkt bearbeiten", -- src\editor\debugger.lua
|
||||
["&Edit"] = "&Bearbeiten", -- src\editor\menu_edit.lua
|
||||
["&File"] = "&Datei", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "&Alle finden", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "&Nächsten finden", -- src\editor\findreplace.lua
|
||||
["&Find"] = "&Finden", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "A&lles ein-/ausklappen", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "&FAQ", -- src\editor\menu_help.lua
|
||||
@@ -35,8 +33,7 @@ return {
|
||||
["&Project"] = "&Projekt", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "&Wiederholen", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "&Umbenennen", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "&Alles ersetzen", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "&Ersetzen", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "&Ersetzen", -- src\editor\menu_search.lua
|
||||
["&Run"] = "&Starten", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Speichern", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "&Suchen", -- src\editor\menu_search.lua
|
||||
@@ -44,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "&Stapel/Stack", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "De&bugserver starten", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "S&tatuszeile", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "&Unterverzeichnisse", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "&Werkzeugleiste", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "&Tutorien", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "&Rückgängig", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "&Hoch", -- src\editor\findreplace.lua
|
||||
["&View"] = "&Ansicht", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "&Beobachtungspunkte", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".&bak bei Ersetzen", -- src\editor\findreplace.lua
|
||||
["About %s"] = "Über %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Zu Entwurf hinzufügen", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Beobachtungspunkt hinzufügen", -- src\editor\editor.lua
|
||||
@@ -61,25 +55,27 @@ return {
|
||||
["Analyze"] = "&Analyseroutine", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Auto-Vervollständigen von Bezeichnern", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Auto-Vervollständigen beim Tippen", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = "Binärdatei ist als schreibgeschützt angezeigt, da sie nur teilweise geladen wurde.", -- src\editor\commands.lua
|
||||
["Bookmark"] = "Lese&zeichen", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Programmausführung bei der nächsten ausgeführten Zeile stoppen", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Programmausführung bei der nächsten ausgeführten Zeile stoppen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "Ausgabefenster l&öschen", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "(Aus-)/K&ommentieren", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Script kann im aktiven Editorfenster nicht gedebuggt werden.", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Kann den Ausdruck nicht auswerten solange die Anwendung läuft.", -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "Kann Datei '%s' zwecks Debugging im aktuellen Projekt nicht finden. Bitte Projekt aktualisieren oder Datei in den Editor laden.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Kann Datei '%s' nicht öffnen: %s", -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = "Kann Datei '%s' nicht öffnen: %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Auto-Wiederherstellen nicht möglich; ungültiges Format: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = "Ersetzen in schreibgeschütztem Text nicht möglich.", -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Kann Script für Einsprungspunkt ('%s') nicht ausführen.", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Kann Debugserver nicht starten (%s:%d): %s.", -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = "Kann Debuggen nicht starten für '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Debugging kann nicht gestartet werden wegen internem Fehler '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Debugging kann ohne geöffnete Datei nicht gestartet werden oder wenn die aktuelle Datei nicht gespeichert ist ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Kann Debugserver nicht stoppen wenn er vorher nicht gestartet wurde.", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Abbrechen", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Durch Benutzer abgebrochen.", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Projektverzeichnis auswählen", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Wählen...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Liste &löschen", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = "Bitte Verzeichnis wählen zum virtuellen Einbinden", -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Projektverzeichnis auswählen", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = "Bitte Verzeichnis zum Durchsuchen auswählen.", -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Wählen...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Liste &löschen", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Diese Liste löschen", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Vor Kompilieren oder Debuggen das Ausgabefenster löschen", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "A&ndere Seiten schließen", -- src\editor\gui.lua
|
||||
@@ -100,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Text in Zwischenablage kopieren", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "E&inzug korrigieren", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Konnte Datei '%s' zwecks nicht Debugging aktivieren; fahre ohne die Datei fort.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Leeres Dokument anlegen", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Leeres Dokument anlegen", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "A&usschneiden", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Schneide ausgewählten Text in die Zwischenablage hinein", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Debugserver gestartet als %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Debugserver gestoppt als %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Debugging Session beendet (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Debugging Session gestartet '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Debugging angehalten bei %s:%s (konnte Datei nicht aktivieren).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Debugging angehalten bei '%s:%s' (konnte Datei nicht aktivieren).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Prozeß abkoppeln", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Verzeichnis", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = "Indizieren ausschalten für '%s'", -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Soll '%s' gelöscht werden?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Überschreiben?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Neu laden?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Änderungen an '%s' speichern?", -- src\editor\commands.lua
|
||||
["E&xit"] = "&Beenden", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = "Indizieren aktivieren", -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Lua-Code eingeben und Enter drücken zum Ausführen.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Kommandozeilenparameter eingeben (Cancel zum löschen)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Neuen Text eingeben", -- src\editor\editor.lua
|
||||
@@ -125,31 +122,30 @@ return {
|
||||
["Error"] = "Fehler", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "In Konsole auswerten", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Aktuelles Projekt/ aktuelle Datei ausführen und Quellcode ändern, um Ergebnisse in Echtzeit zu sehen", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Aktuelles Projekt/ aktuelle Datei ausführen", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Aktuelles Projekt/ aktuelle Datei ausführen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Fehler bei Ausführung", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Programm beenden", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "Datei '%s' wurde auf der Festplatte geändert.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "Datei '%s' hat neueren Zeitstempel als wiederhergestellte Datei '%s'; bitte vor dem Speichern kontrollieren.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "Datei '%s' fehlt und kann nicht wiederhergestellt werden.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "Datei '%s' existiert nicht mehr.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "Dateityp", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Datei existiert bereits.", -- src\editor\commands.lua
|
||||
["File history"] = "Dateiverlauf", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Finde &in Dateien", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Finde &Nächste", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Finde &Vorherige", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Finde in Dateien", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = "Suchen und Einfügen von Funktion aus Bibliothek", -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Finde und ersetze Text in Dateien", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Finde und ersetze Text", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Finde und ersetze Text", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Finde in dateien", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Finde Text in Dateien", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Finde Text", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Finde Text", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Finde vorheriges Auftreten des Textes", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Finde nächstes Auftreten des Textes", -- src\editor\menu_search.lua
|
||||
["Find"] = "Finden", -- src\editor\findreplace.lua
|
||||
["Find"] = "Finden", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Alle Stellen im Code ein-/ausklappen ", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {"Eine Instanz gefunden", "%d Instanzen gefunden."}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Autowiederherstellen-Aufzeichnung gefunden und vorherige Sitzung wiederhergestellt.", -- src\editor\commands.lua
|
||||
["Found"] = "Gefunden", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "&Vollbild", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Gehe zu Definition", -- src\editor\editor.lua
|
||||
["Go To File..."] = "Gehe zu Datei...", -- src\editor\menu_search.lua
|
||||
@@ -162,24 +158,26 @@ return {
|
||||
["Go to symbol"] = "Gehe zu Symbol", -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = "Verstecke '.%s' Dateien", -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = "Dateien im ausgewählten Verzeichnis ignorieren und keine Symbole indizieren.", -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Ignorierter Fehler im Debugger-Init-Code: %s.", -- src\editor\debugger.lua
|
||||
["In Files"] = "In Dateien", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = "%d Dateien indizieren: '%s'...", -- src\editor\outline.lua
|
||||
["Indexing completed."] = "Indizierung abgeschlossen.", -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = "Füge Funktion aus Bibliothek ein", -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Bekannte Dateien", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Zeile: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Lokale Konsole", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "&Lua Interpreter", -- src\editor\menu_project.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Mapped remote request for '%s' to '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "&Groß-/Kleinschreibung", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "Ganzes &Wort", -- src\editor\findreplace.lua
|
||||
["Map Directory..."] = "Verzeichnis virtuell einbinden...", -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Fern-Aufforderung für '%s' auf '%s' abgebildet.", -- src\editor\debugger.lua
|
||||
["Match case"] = "Groß-/Kleinschreibung", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Ganzes Wort", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Gemischte End-of-Line Kodierung entdeckt.", -- src\editor\commands.lua
|
||||
["Navigate"] = "Navigieren", -- src\editor\menu_search.lua
|
||||
["New &File"] = "Neue &Datei", -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Mit Standardanwendung öffnen", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Öffne existierendes Dokument", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Öffne existierendes Dokument", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Öffne Datei", -- src\editor\commands.lua
|
||||
["Options"] = "Optionen", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Übersichtsfenster", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Übersicht", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Ausgabe (ausgeführt)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -201,48 +199,59 @@ return {
|
||||
["Project"] = "Projekt", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "&Projekt/Datei Fenster", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Kommandozeilenparameter angeben", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = "%d Dateien zum Indizieren vorgemerkt.", -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Ersetze in &Dateien", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Ausgewählte Zeilen neu einrücken", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = "Ende des Textes erreicht, setze am Beginn fort.", -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "Letzte &Projekte", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Letzte Dateien", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Stelle letzte rückgängig gemachte Bearbeitung wieder her", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = "Index erneuern", -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = "Erneuere indizierte Symbole in Dateien des ausgewählten Verzeichnisses", -- src\editor\outline.lua
|
||||
["Refresh"] = "Aktualisieren", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Starten einer neuen Debuggingsession abgelehnt, da bereits eine läuft.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "&Regulärer Ausdruck", -- src\editor\findreplace.lua
|
||||
["Remote console"] = "Fensteuerungs-Konsole", -- src\editor\shellbox.lua
|
||||
["Regular expression"] = "Regulärer Ausdruck", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Fernsteuerungs-Konsole", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Umbenennen aller Instanzen", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "A&lles ersetzen", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Alle Auswahlen ersetzen", -- src\editor\editor.lua
|
||||
["Replace"] = "Ersetzen", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Alles ersetzen", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = "Nächste Instanz ersetzen", -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {"Eine Instanz ersetzt.", "%d Instanzen ersetzt."}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Unbekanntes UTF8-Symbol ersetzt mit %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Ersetzt:", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Am Ersetzen", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Standard-Layout wiederherstellen", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Als &Entwurf starten", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Als &Entwurf starten", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = "Stoppe Ausführung an Cursorposition", -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Als &Entwurf starten", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = "Stoppe Ausführung an Cursorposition", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "Debugging a&nhalten", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "Prozeß &anhalten", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "S&peichern als...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "&Alle Speichern", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Änderungen speichern?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Alle offenen Dokumente speichern", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Alle offenen Dokumente speichern", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Datei speichern als", -- src\editor\commands.lua
|
||||
["Save file?"] = "Datei speichern?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Aktuelles Dokument unter neuem Namen speichern", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Aktuelles Dokument speichern", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Aktuelles Dokument speichern", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "%s Autowiederherstellen gespeichert.", -- src\editor\commands.lua
|
||||
["Scope"] = "Richtung", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Fehler im Entwurf", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Suchen nach", -- src\editor\findreplace.lua
|
||||
["Search direction"] = "Suchrichtung", -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = "Suche in Unterverzeichnissen", -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = "Suche nach '%s'.", -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Ausgew.: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "&Alles Auswählen", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Auswählen und nächstes finden", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Auswählen und vorheriges finden", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Kompletten Text im Editor auswählen", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Auswählen und nächstes finden", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Auswählen und vorheriges finden", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Wort unter dem Cursor auswählen und nächstes Auftauchen finden", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Wort unter dem Cursor auswählen und vorheriges Auftauchen finden", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = "Als Startdatei definieren.", -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Anhand der aktuellen Datei festlegen", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Lege Projektverzeichnis anhand der aktuellen Datei fest", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = "Setze als Projektverzeichnis", -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Lege Projektverzeichnis anhand der aktuellen Datei fest", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = "Setze Suchverzeichnis", -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Wähle zu benutzenden Interpreter aus", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Lege zu benutzendes Projektverzeichnis fest", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Einstellungen: System", -- src\editor\menu_edit.lua
|
||||
@@ -252,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = "Zeige versteckte Dateien", -- src\editor\filetree.lua
|
||||
["Show Location"] = "Ordner öffnen", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = "Zeige alle Dateien", -- src\editor\filetree.lua
|
||||
["Show context"] = "Zeige Kontext", -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = "Zeige Dateien die zuvor versteckt wurden", -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = "Zeige mehrere Ergebnisfenster", -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Zeige Tooltip für aktuelle Position; setze Cursor hinter die öffnende Klammer der Funktion", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Statuszeile zeigen/verstecken", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Werkzeugleiste zeigen/verstecken", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = "Sortiere nach Namen", -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Ausgewählte Zeilen sortieren", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Source", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Stack", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "&Debugging starten", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Debuggen starten/fortsetzen", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Debuggen starten/fortsetzen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Schritt h&inein", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "&Überspringen", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Schritt &raus", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Schritt hinein", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Schritt aus der aktuellen Funktion heraus", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Überspringen", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Beende debuggen und setze den Prozeß fort", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Aktuell laufenden Prozeß stoppen", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Schritt hinein", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Schritt aus der aktuellen Funktion heraus", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Überspringen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Beende debuggen und setze den Prozeß fort", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Aktuell laufenden Prozeß stoppen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Vollbild an/aus", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = "Symbolindex", -- src\editor\outline.lua
|
||||
["Text not found."] = "Text nicht gefunden.", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "Die API-Datei muß sich in einem Unterverzeichnis des API-Vereichnisses befinden.", -- src\editor\autocomplete.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "Die API-Datei muß sich in einem Unterverzeichnis des API-Verzeichnisses befinden.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Lesezeichen setzen/löschen", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "&Haltepunkt an/aus", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Lesezeichen setzen/löschen", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Haltepunkt an/aus", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Lesezeichen setzen/löschen", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Haltepunkt an/aus", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "Ablauf &verfolgen", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Ablaufverfolgung zeigt jede ausgeführte Zeile an", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Kann kein Verzeichnis '%s' erstellen.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Kann Datei '%s' nicht erstellen.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Scheitern beim Löschen von Verzeichnis '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = "Kann Datei '%s' nicht löschen: %s", -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Scheitern beim Laden von Datei '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Scheitern beim umbenennen von Datei '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Scheitern beim Speichern von Datei '%s' : %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Scheitern beim Stoppen des Prozesses (pid : %d), code %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Letzte Änderung rückgängig machen", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = "virtuelle Einbindung beenden", -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = "'%s' ist nicht mehr Startdatei", -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {"Eine Datei aktualisiert", "%d Dateien aktualisiert."}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = "Aktualisiere Symbolindex und Einstellungen...", -- src\editor\outline.lua
|
||||
["Use %s to close."] = "%s zum Schließen.", -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "'%s' für eine komplette Beschreibung.", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "'%s' um Zeilenende-Codes zu sehen, und '%s' um sie zu konvertieren.", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "'clear' um Ausgabefenster und Verlauf zu löschen.", -- src\editor\shellbox.lua
|
||||
@@ -293,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Übersichtsfenster ansehen", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Ausgabe-/Konsolenfenster ansehen", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Projekt-/Dateifenster ansehen", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Stapel/Stack-Fenster ansehen", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Fenster für Beobachtungspunkte ansehen", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Stapel/Stack-Fenster ansehen", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Fenster für Beobachtungspunkte ansehen", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Beobachtungspunkte", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Willkommen zum interaktiven Lua-Interpretr!", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "Am Anfang fortsetzen", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Am Anfang fortsetzen", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Erst das Programm speichern.", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Hineinzoomen", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Herauszoomen", -- src\editor\menu_view.lua
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["traced %d instruction"] = {"traced %d instruction", "traced %d instructions"}, -- src\editor\debugger.lua
|
||||
["%d instance"] = {"%d instance", "%d instances"}, -- src\editor\findreplace.lua
|
||||
["Found %d instance."] = {"Found %d instance.", "Found %d instances."}, -- src\editor\findreplace.lua
|
||||
["Replaced %d instance."] = {"Replaced %d instance.", "Replaced %d instances."}, -- src\editor\findreplace.lua
|
||||
["Updated %d file."] = {"Updated %d file.", "Updated %d files."}, -- src\editor\findreplace.lua
|
||||
}
|
||||
|
||||
132
cfg/i18n/eo.lua
132
cfg/i18n/eo.lua
@@ -1,27 +1,24 @@
|
||||
-- Traduko fare de cosmotect
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = {"%d aperaĵo", "%d aperaĵoj"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "%s evento malplenumiĝas: %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = nil, -- src\editor\commands.lua
|
||||
["&About"] = "&Pri", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Aldoni observadaĵon", -- src\editor\debugger.lua
|
||||
["&Break"] = "&Haltigi", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "&Fermi paĝon", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = "&Komunumo", -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Kompili", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Copy"] = "&Kopii", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "&Defaŭlta aranĝo", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "&Forigi observadaĵon", -- src\editor\debugger.lua
|
||||
["&Delete"] = "&Forigi", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "&Dokumentado", -- src\editor\menu_help.lua
|
||||
["&Down"] = "&Malsupren", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "&Redakti projektan dosierujon", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "&Redakti valoron", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "&Redakti observadaĵon", -- src\editor\debugger.lua
|
||||
["&Edit"] = "&Redakti", -- src\editor\menu_edit.lua
|
||||
["&File"] = "&Dosiero", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "Tra&serĉi ĉion", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "&Pluserĉi", -- src\editor\findreplace.lua
|
||||
["&Find"] = "Tra&serĉi", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "&Kaŝi/Malkaŝi ĉion", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "&Oftaj demandoj", -- src\editor\menu_help.lua
|
||||
@@ -36,8 +33,7 @@ return {
|
||||
["&Project"] = "&Projekto", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "&Refari", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "&Renomigi", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "&Anstataŭi ĉion", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "&Anstataŭi", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "&Anstataŭi", -- src\editor\menu_search.lua
|
||||
["&Run"] = "&Plenumi", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Konservi", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "&Serĉi", -- src\editor\menu_search.lua
|
||||
@@ -45,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "&Staka fenestro", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "&Ekfunkciigi sencimigilo-servilon", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "&Stata breto", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "&Subdosierujoj", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "&Ilobreto", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "&Lerniloj", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "&Malfari", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "&Supren", -- src\editor\findreplace.lua
|
||||
["&View"] = "&Vidi", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "&Observada fenestro", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".&bak post anstataŭigo", -- src\editor\findreplace.lua
|
||||
["About %s"] = "Pri %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Aldoni al malnetdosiero", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Aldoni observadaĵan esprimon", -- src\editor\editor.lua
|
||||
@@ -62,25 +55,27 @@ return {
|
||||
["Analyze"] = "Analizi", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Aŭtomate kompletigi fontkodnomojn", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Aŭtomate kompletigi dumtajpe", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = nil, -- src\editor\commands.lua
|
||||
["Bookmark"] = "Legosigno", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Haltigi plenumon ĉe la sekva plenumata linio da fontkodo", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Haltigi plenumon ĉe la sekva plenumata linio da fontkodo", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "Viŝi eligan fenestron", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "F&orkomenti/Eksforkomenti", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Ne povas sencimigi la skripton en la aktiva redaktila fenestro.", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Ne povas malkodi la esprimon dum funkciatas la aplikaĵo.", -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "Ne povas trovi la dosieron '%s' en la kuranta projekto por aktivi por sencimigo. Ĝisdatigu la projekton aŭ malfermu la dosieron en redaktilo antaŭ sencimigo.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Ne povas malfermi la dosieron '%s': %s", -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = "Ne povas malfermi la dosieron '%s': %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Ne povas analizi aŭtomatrestaŭran dosieron; neprava dosierformo: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = nil, -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Ne povas plenumi la enirejan skripton", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Ne povas ekfunkciigi sencimigilo-servilon ĉe %s:%d: %s.", -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Ne povas komenci sencimigan seancon pro interna eraro", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Ne povas ek-sencimigon sen malfermita dosiero aŭ kun la kuranta dosiero nekonserviĝas ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Ne povas malfunkciigi sencimigilo-servilon, ĉar ĝi ne funkciantas", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Nuligi", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Nuligita per la uzanto", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Elekti projektan dosierujon", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Elekti...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Viŝi anojn", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = nil, -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Elekti projektan dosierujon", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Elekti...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Viŝi anojn", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Senlistigi tiujn ĉi anojn", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Viŝi la eligan fenestron antaŭ kompilado aŭ sencimigado", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "Fermi &aliajn paĝojn", -- src\editor\gui.lua
|
||||
@@ -101,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Kopii elektitan tekston al la tondejo", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "Korekti &alineon", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Ne povis aktivi la dosieron '%s' por sencimigi; daŭrantas sen ĝi.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Krei malplenan dokumenton", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Krei malplenan dokumenton", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "El&tondi", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Eltondi la elektitan tekston al la tondejo", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Sencimigilo-servilon ekfunkciiĝis ĉe %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Sencimigilo-servilon malfunkciiĝis ĉe %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Sencimiga seanco estas finita (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Sencimiga seanco komencitas en '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "La sencimigo estis finetita ĉe %s:%s (ne povis aktivi la dosieron).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "La sencimigo estis finetita ĉe '%s:%s' (ne povis aktivi la dosieron).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Deigi &procezon", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Dosierujo", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = nil, -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Ĉu vi volas forigi je '%s'?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Ĉu vi volas superskribi ĉi tiun?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Ĉu vi volas reŝarĝi tiun ĉi?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Ĉu vi volas konservi ĉiujn ŝanĝojn, kiuj enfaris je '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "&Eliri", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = nil, -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Enigu fontkodon de Lua kaj premu enenklavon por plenumi ĝin.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Enigu komandliniajn parametrojn (uzu nulig-butonon por viŝi)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Enigu anstataŭigan tekston", -- src\editor\editor.lua
|
||||
@@ -126,31 +122,30 @@ return {
|
||||
["Error"] = "Eraro", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Malkodi en la konzolo", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Plenumi la kurantan projekton/dosieron, kaj ĝisdatigadi la fontkodon por vidi tujajn rezultojn", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Plenumi la kurantan projekton/dosieron", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Plenumi la kurantan projekton/dosieron", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Eraro de plenumo", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Eliri programon", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "La dosiero nome de '%s' ŝanĝitis en disko.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "La dosiero nome de '%s' havas pli freŝan tempindikon, ol la ripardosiero '%s'; bonvolu ekzameni ĝin antaû konservi.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "La dosiero nome de '%s' forestas kaj ne povas esti reakirita.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "La dosiero nome de '%s' ne plu ekzistas.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "Dosierspeco", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Jam ekzistas tiu ĉi dosiero.", -- src\editor\commands.lua
|
||||
["File history"] = "Dosiera historio", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Traserĉi &en dosieroj", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "&Pluserĉi", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Traserĉi &antaŭanta", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Traserĉi en dosieroj", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = nil, -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Traserĉi kaj anstataŭi tekston en dosieroj", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Traserĉi kaj anstataŭi tekston", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Traserĉi kaj anstataŭi tekston", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Traserĉi en dosieroj", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Traserĉi tekston en dosieroj", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Traserĉi tekston", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Traserĉi tekston", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Traserĉi la antaŭantan aperaĵon da teksto", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Pluserĉi la aperaĵon da teksto", -- src\editor\menu_search.lua
|
||||
["Find"] = "Traserĉi", -- src\editor\findreplace.lua
|
||||
["Find"] = "Traserĉi", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Kaŝi aŭ malkaŝi ĉiujn faldaĵojn da fontkodoj", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Trovis aŭtomatrestaŭran dosieron kaj riparis konservitan seancon.", -- src\editor\commands.lua
|
||||
["Found"] = "Trovis", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Plenekrana &reĝimo", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Iri al deklaro", -- src\editor\editor.lua
|
||||
["Go To File..."] = nil, -- src\editor\menu_search.lua
|
||||
@@ -163,24 +158,26 @@ return {
|
||||
["Go to symbol"] = nil, -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Ignoris eraron en pravaloriza kodo de la sencimigilo: %s.", -- src\editor\debugger.lua
|
||||
["In Files"] = "Ene de dosieroj", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = nil, -- src\editor\outline.lua
|
||||
["Indexing completed."] = nil, -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = nil, -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Konataj dosieroj", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Ln: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Loka konzolo", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "Interpretilo de Lua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = nil, -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Mapi faran peton pri '%s' al '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "Atenti &usklecon", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "Atenti &plenan vorton", -- src\editor\findreplace.lua
|
||||
["Match case"] = "Atenti usklecon", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Atenti plenan vorton", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Detektis kodoprezentojn miksitajn linifinajn", -- src\editor\commands.lua
|
||||
["Navigate"] = nil, -- src\editor\menu_search.lua
|
||||
["New &File"] = "Nova &dosiero", -- src\editor\filetree.lua
|
||||
["OVR"] = "SUS", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Malfermi per la defaŭlta programo", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Malfermi jaman dokumenton", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Malfermi jaman dokumenton", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Malfermi dosieron", -- src\editor\commands.lua
|
||||
["Options"] = "Opcioj", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Skemo-fenestro", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Skemo", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Eligo (funkciata)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -202,48 +199,59 @@ return {
|
||||
["Project"] = "Projekto", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "Projekta/&Dosierarba Fenestro", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Doni komandliniajn parametrojn", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = nil, -- src\editor\menu_search.lua
|
||||
["R/O"] = "L/A", -- src\editor\editor.lua
|
||||
["R/W"] = "L/S", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Anstataŭi en dosieroj", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Realinei elektitajn liniojn", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = nil, -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "Antaŭnelongaj &projektoj", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Antaŭnelongaj dosieroj", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Refari lastan redakton", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = nil, -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Refresh"] = "Refreŝigu", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Peto por komenci novan sencimigan seancon malakceptis, ĉar seanco jam faratas.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "Regul&esprimo", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "Regul&esprimo", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Fora konzolo", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Renomigi ĉiujn aperaĵojn", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "Anstataŭi ĉ&ion", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Anstataŭi ĉiujn elektojn", -- src\editor\editor.lua
|
||||
["Replace"] = "Anstataŭi", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Anstataŭi ĉion", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = nil, -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Anstataŭis UTF8-an signon per %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Anstataŭita", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Anstataŭanta", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Rekomenciĝi al defaŭltan aranĝon", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Plenumi kiel malnetdosieron", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Plenumi kiel malnetdosieron", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = nil, -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Plenumi kiel malnetdosieron", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "&Fini sencimigo", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "&Fini procezon", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "Konservi &kiel...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Konservi ĉ&ion", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Ĉu konservi ĉiujn ŝanĝojn?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Konservi ĉiujn malfermajn dokumentojn", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Konservi ĉiujn malfermajn dokumentojn", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Konservi dosieron kiel", -- src\editor\commands.lua
|
||||
["Save file?"] = "Ĉu konservi dosieron?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Konservi la kurantan dokumenton kun dosiero novanome", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Konservi la kurantan dokumenton", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Konservi la kurantan dokumenton", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Konservis aŭtomatrestaŭron je %s.", -- src\editor\commands.lua
|
||||
["Scope"] = "Amplekso", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Eraro de malnetdosiero", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Serĉanti pri", -- src\editor\findreplace.lua
|
||||
["Search direction"] = nil, -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = nil, -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = nil, -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Ele: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "Elekti &ĉion", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Elekti kaj pluserĉi", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Elekti kaj traserĉi antaŭantan", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Elekti la tekston en la redaktilo", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Elekti kaj pluserĉi", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Elekti kaj traserĉi antaŭantan", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Elekti la vorton sub la tajpmontrilo, kaj pluserĉi", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Elekti la vorton sub la tajpmontrilo, kaj traserĉi antaŭantan", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Precizigi per la kuranta dosiero", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Precizigi la projektan dosierujon per la kurantan dosieron", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Precizigi la projektan dosierujon per la kurantan dosieron", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = nil, -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Precizigi la interpretiloton", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Precizigi la projekt-dosierujoton", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Agordoj de la sistemo", -- src\editor\menu_edit.lua
|
||||
@@ -253,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = nil, -- src\editor\filetree.lua
|
||||
["Show Location"] = "Montri lokon", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = nil, -- src\editor\filetree.lua
|
||||
["Show context"] = nil, -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = nil, -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = nil, -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Montri ŝpruchelpilon pri la kuranta pozicio; meti la tajpmontrilon preter la ronda ekkrampo de la funkcio", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Montri/Kaŝi la statan breton", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Montri/Kaŝi la ilobreton", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = nil, -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Ordi la elektitajn liniojn", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Fontkodo", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Stako", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Ek-&sencimigi", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Komenci aŭ pluigi sencimigon", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Komenci aŭ pluigi sencimigon", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Eniri &enen", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "Trans&salti", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Eliri el", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Eniri enen", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Eliri el la kuranta funkcio", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Transsalti", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Fini sencimigon kaj plenumadi la procezon", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Fini la nunfunkciatan procezon", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Eniri enen", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Eliri el la kuranta funkcio", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Transsalti", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Fini sencimigon kaj plenumadi la procezon", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Fini la nunfunkciatan procezon", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Interŝanĝi al aŭ el plenekrana reĝimo", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = nil, -- src\editor\outline.lua
|
||||
["Text not found."] = "Teksto ne trovitis", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "La dosiero de API devas troviĝi en subdosierujo de la API-a dosierujo.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Baskuli legosignon", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "Baskuli halto&punkto", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Baskuli legosignon", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Baskuli haltopunkto", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Baskuli legosignon", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Baskuli haltopunkto", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "Spuri", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Spurili plenumon per montri ĉiun plenumitan linion", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Ne kapablas krei je la dosierujo '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Ne kapablas krei je la dosiero '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Ne kapablas forigi je la dosierujo '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Ne kapablas ŝarĝi je la dosiero '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Ne kapablas renomigi je la dosiero '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Ne kapablas konservi je la dosiero '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Ne kapablas fini la programon (pid: %d), kodo %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Malfari la antaŭan redakton", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = nil, -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = nil, -- src\editor\outline.lua
|
||||
["Use %s to close."] = nil, -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "Uzu je '%s' por vidi plenan priskribon", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "Uzu je '%s' por montri linifinojn kaj je '%s' por konverti ilin", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Tajpu 'clear' por viŝi la eligon kaj historion de la ŝelo.", -- src\editor\shellbox.lua
|
||||
@@ -294,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Vidi la skemo-fenestron", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Vidi la eligo/konzolo-fenestron", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Vidi la projekto/dosierarbo-fenestron", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Vidi la stako-fenestron", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Vidi la observado-fenestron", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Vidi la stako-fenestron", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Vidi la observado-fenestron", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Observado", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Bonvenon al la interaga interpretilo de Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "&Ĉirkaŭflui", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Ĉirkaŭflui", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Vi unue devas konservi la programon.", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Zomi", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Malzomi", -- src\editor\menu_view.lua
|
||||
|
||||
132
cfg/i18n/es.lua
132
cfg/i18n/es.lua
@@ -1,27 +1,24 @@
|
||||
-- Traducción realiazada por Iñigo Sola
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = nil, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = nil, -- src\editor\package.lua
|
||||
["%s%% loaded..."] = nil, -- src\editor\commands.lua
|
||||
["&About"] = "&Acerca de...", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "Añadir observación", -- src\editor\debugger.lua
|
||||
["&Break"] = "Ruptura", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "Cerrar página", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = nil, -- src\editor\menu_help.lua
|
||||
["&Compile"] = "Compilar", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Copy"] = "Copiar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Diseño por defecto", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "Eliminar observación", -- src\editor\debugger.lua
|
||||
["&Delete"] = nil, -- src\editor\filetree.lua
|
||||
["&Documentation"] = nil, -- src\editor\menu_help.lua
|
||||
["&Down"] = nil, -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = nil, -- src\editor\filetree.lua
|
||||
["&Edit Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "Editar observación", -- src\editor\debugger.lua
|
||||
["&Edit"] = "Editar", -- src\editor\menu_edit.lua
|
||||
["&File"] = "Archivo", -- src\editor\menu_file.lua
|
||||
["&Find All"] = nil, -- src\editor\findreplace.lua
|
||||
["&Find Next"] = nil, -- src\editor\findreplace.lua
|
||||
["&Find"] = "Buscar", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "Plegar/desplegar todo", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = nil, -- src\editor\menu_help.lua
|
||||
@@ -36,8 +33,7 @@ return {
|
||||
["&Project"] = "Proyecto", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "Rehacer", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = nil, -- src\editor\filetree.lua
|
||||
["&Replace All"] = nil, -- src\editor\findreplace.lua
|
||||
["&Replace"] = "Remplazar", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "Remplazar", -- src\editor\menu_search.lua
|
||||
["&Run"] = "Ejecutar", -- src\editor\menu_project.lua
|
||||
["&Save"] = "Guardar", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "Buscar", -- src\editor\menu_search.lua
|
||||
@@ -45,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "Ventana de la pila de ejecución", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "Lanzar servidor de depuración", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = nil, -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = nil, -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = nil, -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = nil, -- src\editor\menu_help.lua
|
||||
["&Undo"] = "Deshacer", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = nil, -- src\editor\findreplace.lua
|
||||
["&View"] = "Ver", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "Ventana de observaciones", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = nil, -- src\editor\findreplace.lua
|
||||
["About %s"] = "Acerca de %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Añadir al borrador", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Añadir expresión de observación", -- src\editor\editor.lua
|
||||
@@ -62,25 +55,27 @@ return {
|
||||
["Analyze"] = "Analizar", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Autocompletar identificadores", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Autocompletar mientras se escribe", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = nil, -- src\editor\commands.lua
|
||||
["Bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Parar ejecución en la siguiente línea de código", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Parar ejecución en la siguiente línea de código", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "Limpiar ventana de Salida", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "Comentar/descomentar", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "No se puede depurar el script en la ventana activa del editor", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = nil, -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "No se puede encontrar el archivo '%s' en el proyecto actual para activar la depuración. Actualiza el proyecto o abre el archivo en el editor antes de depurar.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = nil, -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = nil, -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "No se puede procesar la autorrecuperación; formato inválido: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = nil, -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "No se pude ejecutar el punto de entrada del script (%s).", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "No se puede iniciar la sesión de depuración debido a un error interno '%s'.'", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "No se puede iniciar la depuración sin abrir un archivo o si no ha sido guardado ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = nil, -- src\editor\debugger.lua
|
||||
["Cancel"] = nil, -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = nil, -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Elegir el directorio del proyecto", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = nil, -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = nil, -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = nil, -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Elegir el directorio del proyecto", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Choose..."] = nil, -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = nil, -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = nil, -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Limpiar la ventana de salida antes de compilar o depurar", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = nil, -- src\editor\gui.lua
|
||||
@@ -101,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Copiar el texto seleccionado al portapapeles", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = nil, -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "No se pudo activar el archivo '%s' para la depuración; continuar sin él.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Crear un documento en blanco", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Crear un documento en blanco", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "Cortar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Cortar el texto selecionado al portapapeles", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Servidor de depuración inciado en %s:%s", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = nil, -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Sesión de depuración completada (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Sesión de depuración iniciada en '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = nil, -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = nil, -- src\editor\debugger.lua
|
||||
["Detach &Process"] = nil, -- src\editor\menu_project.lua
|
||||
["Directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = nil, -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = nil, -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = nil, -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "¿Quieres recargarlo?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "¿Quieres guardar los cambios en '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "Salir", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = nil, -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Introduce código Lua y pulsa <Entrer> para ejecutarlo.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = nil, -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = nil, -- src\editor\editor.lua
|
||||
@@ -126,31 +122,30 @@ return {
|
||||
["Error"] = "Error", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Evaluar en consola", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Ejecutar el proyecto/archivo actual y manteniendo actualizado el código para ver resultados en tiempo real", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Ejecutar el proyecto/archivo actual", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Ejecutar el proyecto/archivo actual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Error de ejecución", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Salir del programa", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "El archivo '%s' ha sido modificado en el disco.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "El archivo '%s' tiene una fecha más reciente que el restaurado '%s'; por favor, revísalo antes de guardar.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = nil, -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "El archivo '%s' no existe.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = nil, -- src\editor\findreplace.lua
|
||||
["File already exists."] = nil, -- src\editor\commands.lua
|
||||
["File history"] = "Historial de archivos", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Buscar en archivos", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Buscar siguiente", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Buscar anterior", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = nil, -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = nil, -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Buscar y remplazar texto en archivos", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Buscar y rempleazar texto", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Buscar y rempleazar texto", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = nil, -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Buscar texto en archivos", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Buscar texto", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Buscar texto", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Buscar la anterior aparición del texto", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Buscar la siguiente aparecición del texto", -- src\editor\menu_search.lua
|
||||
["Find"] = nil, -- src\editor\findreplace.lua
|
||||
["Find"] = nil, -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Plegar o desplegar todo el código plegado", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Encontrada autorrecuperación y sesión restaurada.", -- src\editor\commands.lua
|
||||
["Found"] = nil, -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Pantalla completa", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = nil, -- src\editor\editor.lua
|
||||
["Go To File..."] = nil, -- src\editor\menu_search.lua
|
||||
@@ -163,24 +158,26 @@ return {
|
||||
["Go to symbol"] = nil, -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.lua
|
||||
["In Files"] = nil, -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = nil, -- src\editor\outline.lua
|
||||
["Indexing completed."] = nil, -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = nil, -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Archivos conocidos", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Ln: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Consola local", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "Intérprete Lua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = nil, -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = nil, -- src\editor\debugger.lua
|
||||
["Match &case"] = nil, -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = nil, -- src\editor\findreplace.lua
|
||||
["Match case"] = nil, -- src\editor\toolbar.lua
|
||||
["Match whole word"] = nil, -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = nil, -- src\editor\commands.lua
|
||||
["Navigate"] = nil, -- src\editor\menu_search.lua
|
||||
["New &File"] = nil, -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = nil, -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Abrir un documento existente", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Abrir un documento existente", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Abrir archivo", -- src\editor\commands.lua
|
||||
["Options"] = nil, -- src\editor\findreplace.lua
|
||||
["Outline Window"] = nil, -- src\editor\menu_view.lua
|
||||
["Outline"] = nil, -- src\editor\outline.lua
|
||||
["Output (running)"] = "Salida (en ejecución)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -202,48 +199,59 @@ return {
|
||||
["Project"] = "Proyecto", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "Ventana de proyecto/árbol de archivos", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = nil, -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = nil, -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Remplazar en archivos", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = nil, -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = nil, -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = nil, -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Archivos recientes", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Rehacer la última edición deshecha", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = nil, -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Refresh"] = "Refrescar", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "No se pudo lanzar una nueva sesión de depuración porque ya hay una en curso.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = nil, -- src\editor\findreplace.lua
|
||||
["Regular expression"] = nil, -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Consola remota", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = nil, -- src\editor\editor.lua
|
||||
["Replace A&ll"] = nil, -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = nil, -- src\editor\editor.lua
|
||||
["Replace"] = nil, -- src\editor\findreplace.lua
|
||||
["Replace all"] = nil, -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = nil, -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = nil, -- src\editor\commands.lua
|
||||
["Replaced"] = nil, -- src\editor\findreplace.lua
|
||||
["Replacing"] = nil, -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Restablecer el diseño por defecto", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Ejecutar como borrador", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Ejecutar como borrador", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = nil, -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Ejecutar como borrador", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "Parar depuración", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "Parar proceso", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "Guardar como...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Guardar todo", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "¿Guardar cambios?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Guardar todos los documentos abiertos", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Guardar todos los documentos abiertos", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Guardar archivo como", -- src\editor\commands.lua
|
||||
["Save file?"] = "¿Guardar archivo?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Guardar el documento actual en un archivo con un nombre nuevo", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Guardar el documento actual", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Guardar el documento actual", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Guardar autorrecuperación en %s.", -- src\editor\commands.lua
|
||||
["Scope"] = nil, -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Error en el borrador", -- src\editor\debugger.lua
|
||||
["Searching for"] = nil, -- src\editor\findreplace.lua
|
||||
["Search direction"] = nil, -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = nil, -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = nil, -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = nil, -- src\editor\editor.lua
|
||||
["Select &All"] = "Seleccionar todo", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = nil, -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = nil, -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Seleccionar todo el texto en el editor", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = nil, -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = nil, -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = nil, -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = nil, -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Set From Current File"] = nil, -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Establecer el directorio del proyecto del archivo actual", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Establecer el directorio del proyecto del archivo actual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = nil, -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Establecer el intérprete a ser usado", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = nil, -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = nil, -- src\editor\menu_edit.lua
|
||||
@@ -253,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = nil, -- src\editor\filetree.lua
|
||||
["Show Location"] = nil, -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = nil, -- src\editor\filetree.lua
|
||||
["Show context"] = nil, -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = nil, -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = nil, -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Ver tooltip para la posición actual; posicionar el cursor después de abrir el paréntisis de los argumentos de la función", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = nil, -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = nil, -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = nil, -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Clasificar las líneas seleccionadas", -- src\editor\menu_edit.lua
|
||||
["Source"] = nil, -- src\editor\menu_edit.lua
|
||||
["Stack"] = nil, -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Comenzar depuración", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = nil, -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Paso dentro", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "Paso sin entrar", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Paso fuera", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Paso dentro", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Hasta salir de la función actual", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Paso sin entrar", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = nil, -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Parar el proceso en ejecución", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Paso dentro", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Hasta salir de la función actual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Paso sin entrar", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Parar el proceso en ejecución", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Conmutar el modo de pantalla completa", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = nil, -- src\editor\outline.lua
|
||||
["Text not found."] = nil, -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "El archivo de API debe ser almacenado en un subdirectorio del directorio de API.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "Conmutar punto de ruptura", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = nil, -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Conmutar punto de ruptura", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = nil, -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Conmutar punto de ruptura", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "Traza", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Traza de ejecución mostrando cada línea ejecutada", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "No se pudo cargar el archivo '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = nil, -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "No se pudo guardar el archivo '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "No se puedo parar el programa (pid: %d), código %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Deshacer la última edición", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = nil, -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = nil, -- src\editor\outline.lua
|
||||
["Use %s to close."] = nil, -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = nil, -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = nil, -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Usa 'clear' para limpiar la consola de salida y el historial.", -- src\editor\shellbox.lua
|
||||
@@ -294,11 +312,11 @@ return {
|
||||
["View the outline window"] = nil, -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Ver ventana de salida/consola", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Ver la ventana de proyecto/árbol de archivos", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Ver la ventana de la pila de ejecución", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Ver la ventana de observación", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Ver la ventana de la pila de ejecución", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Ver la ventana de observación", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = nil, -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Bienvenido al intérprete interactico de Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = nil, -- src\editor\findreplace.lua
|
||||
["Wrap around"] = nil, -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Debes guardar el programa primero", -- src\editor\commands.lua
|
||||
["Zoom In"] = nil, -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = nil, -- src\editor\menu_view.lua
|
||||
|
||||
131
cfg/i18n/fr.lua
131
cfg/i18n/fr.lua
@@ -1,26 +1,24 @@
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = {"%d occurrence", "%d occurrences"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "L'événement %s a échoué : %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = "%s%% chargé", -- src\editor\commands.lua
|
||||
["&About"] = "&À propos", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Ajouter une expression", -- src\editor\debugger.lua
|
||||
["&Break"] = "&Interrompre", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "&Fermer la page", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = "&Communauté", -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Compiler", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = "Copier la &valeur", -- src\editor\debugger.lua
|
||||
["&Copy"] = "Co&pier", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Affichage par &défaut", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "&Supprimer une expression", -- src\editor\debugger.lua
|
||||
["&Delete"] = "&Supprimer", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "&Documentation", -- src\editor\menu_help.lua
|
||||
["&Down"] = "Vers le &bas", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "&Modifier le répertoire de projet", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "&Modifier une valeur", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "&Modifier une expression", -- src\editor\debugger.lua
|
||||
["&Edit"] = "É&dition", -- src\editor\menu_edit.lua
|
||||
["&File"] = "&Fichier", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "&Rechercher tout", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "&Rechercher", -- src\editor\findreplace.lua
|
||||
["&Find"] = "&Rechercher", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "Re&plier/Déplier tout", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "&Foire aux questions" , -- src\editor\menu_help.lua
|
||||
@@ -35,8 +33,7 @@ return {
|
||||
["&Project"] = "&Projet", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "&Rétablir", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "&Renommer", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "Remplacer &tout", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "Re&mplacer", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "Re&mplacer", -- src\editor\menu_search.lua
|
||||
["&Run"] = "&Exécuter", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Enregistrer", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "&Recherche", -- src\editor\menu_search.lua
|
||||
@@ -44,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "&Pile d'exécution", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "Lancer le &serveur de débogage", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "Barre d'&état", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "&Sous-répertoires", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "Barre d'&outils", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "&Tutoriels", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "&Annuler", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "Vers le &haut", -- src\editor\findreplace.lua
|
||||
["&View"] = "&Affichage", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "E&xpressions espionnes", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".&bak avant remplacement", -- src\editor\findreplace.lua
|
||||
["About %s"] = "À propos de %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Ajouter au brouillon", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Ajouter une expression espionne", -- src\editor\editor.lua
|
||||
@@ -61,25 +55,27 @@ return {
|
||||
["Analyze"] = "Analyser", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Auto-compléter les identifiants", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Auto-complète lors de la saisie", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = "Le fichier binaire est affiché en lecture seule parce qu'il a été chargé partiellement.", -- src\editor\commands.lua
|
||||
["Bookmark"] = "Marque-pages", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Interrompt l'exécution à la ligne suivante", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Interrompt l'exécution à la ligne suivante", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "E&ffacer la fenêtre de sortie", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "Co&mmenter/Décommenter", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Impossible de déboguer le script dans la fenêtre d'édition active.", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Impossible d'évaluer l'expression pendant que l'application est en cours d'exécution.", -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "Impossible de trouver le fichier '%s' dans le projet courant pour permettre le débogage. Mettez le projet à jour ou ouvrez le fichier dans l'éditeur avant débogage.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Impossible d'ouvrir le fichier '%s': %s", -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = "Impossible d'ouvrir le fichier '%s': %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Impossible de lire la récupération automatique ; format invalide : %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = "Impossible de remplacer dans un texte en lecture seule.", -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Impossible d'exécuter le point d'entrée du script ('%s').", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Impossible de lancer le serveur de débogage à %s:%d: %s." , -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = "Impossible de lancer le débogage pour '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Impossible de lancer la session de débogage : erreur interne '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Impossible de lancer le débogage si aucun fichier n'est ouvert ou si le fichier courant n'a pas été enregistré ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Impossible d'arrêter le serveur de débogage car il n'a pas été démarré.", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Annuler", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Annulé par l'utilisateur.", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Choisir un répertoire de projet", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Choisir...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Effacer les éléments", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = "Choisir un répertoire à mapper", -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Choisir un répertoire de projet", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = "Choisir un répertoire dans lequel rechercher", -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Choisir...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Effacer les éléments", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Efface les éléments de cette liste", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Efface la fenêtre de sortie avant compilation ou débogage", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "Fermer les &autres pages", -- src\editor\gui.lua
|
||||
@@ -100,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Copie le texte sélectionné dans le presse-papiers", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "Corriger l'&indentation", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Impossible d'activer le fichier '%s' pour débogage ; poursuite du processus en ignorant le fichier.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Crée un document vierge", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Crée un document vierge", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "&Couper", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Coupe le texte sélectionné et le copie dans le presse-papiers", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Serveur de débogage démarré à %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Serveur de débogage stoppé à %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Session de débogage terminée (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Session de débogage démarrée dans '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Débogage interrompu à %s:%s (impossible d'activer le fichier).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Débogage interrompu à '%s:%s' (impossible d'activer le fichier).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Détacher le p&rocessus", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Répertoire ", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = "Désactiver l'indexation pour '%s'", -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Voulez-vous effacer '%s' ?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Voulez-vous l'écraser ?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Voulez-vous le recharger ?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Voulez-vous enregistrer les modifications dans '%s' ?", -- src\editor\commands.lua
|
||||
["E&xit"] = "&Quitter", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = "Activer l'indexation", -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Saisissez du code Lua et appuyez sur <Entrée> pour l´exécuter.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Saisissez les paramètres de ligne de commande (cliquez sur Annuler pour effacer)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Saisissez le texte de remplacement", -- src\editor\editor.lua
|
||||
@@ -125,31 +122,30 @@ return {
|
||||
["Error"] = "Erreur", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Évaluer dans la console", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Exécute le projet/fichier courant en prenant en compte à la volée les modifications de code", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Exécute le projet/fichier courant", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Exécute le projet/fichier courant", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Erreur d'exécution", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Quitte le programme", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "Le fichier '%s' a été modifié sur le disque.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "Le fichier '%s' a un horodatage plus récent que celui restauré '%s' ; veuillez vérifier avant d'enregistrer.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "Le fichier '%s' est manquant et ne peut pas être récupéré.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "Le fichier '%s' n'existe plus.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "Type de fichier ", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Le fichier existe déjà.", -- src\editor\commands.lua
|
||||
["File history"] = "Historique de fichier", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Rec&hercher dans les fichiers", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Rechercher le &suivant", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Rechercher le &précédent", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Rechercher dans les fichiers", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = "Recherche et insère une fonction d'une bibliothèque", -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Recherche et remplace le texte dans les fichiers", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Recherche et remplace le texte", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Recherche et remplace le texte", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Rechercher dans les fichiers", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Recherche le texte dans les fichiers", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Recherche le texte", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Recherche le texte", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Recherche l'occurrence précédente du texte", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Recherche l'occurrence suivante du texte", -- src\editor\menu_search.lua
|
||||
["Find"] = "Rechercher ", -- src\editor\findreplace.lua
|
||||
["Find"] = "Rechercher ", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Replie ou déplie tous les blocs de code", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {"%d occurence trouvée.", "%d occurences trouvées."}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Une récupération automatique a été trouvée et la session a été restaurée.", -- src\editor\commands.lua
|
||||
["Found"] = "Occurrences trouvées :", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Plein é&cran", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Aller à la définition", -- src\editor\editor.lua
|
||||
["Go To File..."] = "Aller au fichier...", -- src\editor\menu_search.lua
|
||||
@@ -162,24 +158,26 @@ return {
|
||||
["Go to symbol"] = "Permet d'accéder directement à un symbole", -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = "Masquer les fichiers '.%s'", -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = "Ignorer et ne pas indexer les symboles dans les fichiers provenant du répertoire sélectionné", -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Une erreur dans le code d'initialisation du debogage a été ignorée: %s.", -- src\editor\debugger.lua
|
||||
["In Files"] = "Dans les fichiers", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = "%d fichiers indexés: '%s'...", -- src\editor\outline.lua
|
||||
["Indexing completed."] = "Indexation terminée.", -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = "Insérer une fonction d'une bibliothèque...", -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Fichiers connus", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Lig : %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Console locale", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "Interpréteur L&ua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = "Mapper un répertoire...", -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "La requête distante pour '%s' a été associée à '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "Respecter la &casse", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "&Mot entier uniquement", -- src\editor\findreplace.lua
|
||||
["Match case"] = "Respecter la casse", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Mot entier uniquement", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Plusieurs codages de fin de ligne ont été détectés.", -- src\editor\commands.lua
|
||||
["Navigate"] = "Naviguer", -- src\editor\menu_search.lua
|
||||
["New &File"] = "Nouveau &fichier", -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Ouvrir avec le programme par défaut", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Ouvre un document existant", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Ouvre un document existant", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Ouvrir un fichier", -- src\editor\commands.lua
|
||||
["Options"] = "Options", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Structure", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Structure", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Sortie (en cours d'exécution)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -201,48 +199,59 @@ return {
|
||||
["Project"] = "Projet", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "&Explorateur de projet", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Définit les paramètres de ligne de commande", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = "%d fichiers mis en attente pour l'indexation.", -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Remp&lacer dans les fichiers", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Ré-indente les lignes sélectionnées", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = "Fin de texte atteinte et repositionnement en début de texte.", -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "&Projets récents", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Fichiers récents", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Rétablit la dernière modification", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = "Actualiser l'index", -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = "Actualiser les symboles indexés à partir des fichiers du répertoire sélectionné", -- src\editor\outline.lua
|
||||
["Refresh"] = "Rafraîchir", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Une requête de lancement de débogage a été refusée car une session de débogage est déjà en cours.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "&Expression régulière", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "Expression régulière", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Console à distance", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Renommer toutes les occurrences", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "Remplacer &tout", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Remplacer toutes les sélections", -- src\editor\editor.lua
|
||||
["Replace"] = "Remplacer par ", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Remplacer tout", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = "Remplacer l'occurence suivante", -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {"%d occurence remplacée.","%d occurences remplacées."}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Un caractère UTF8 invalide a été remplacé par %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Occurrences remplacées :", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Remplacement de", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Restaure l'affichage par défaut", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Exécuter comme brouillon", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Exécuter comme brouillon", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = "Exécuter jusqu'au curseur", -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Exécuter comme brouillon", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = "Exécuter jusqu'au curseur", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "&Arrêter le débogage", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "&Arrêter le processus", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "Enregistrer &sous...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Enregistrer &tout", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Enregistrer les modifications ?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Enregistre tous les documents ouverts", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Enregistre tous les documents ouverts", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Enregistrer le fichier sous", -- src\editor\commands.lua
|
||||
["Save file?"] = "Enregistrer le fichier ?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Enregistre le document courant sous un nouveau nom", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Enregistre le document courant", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Enregistre le document courant", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Récup. auto enregistrée à %s.", -- src\editor\commands.lua
|
||||
["Scope"] = "Direction", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Erreur dans le brouillon", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Recherche de", -- src\editor\findreplace.lua
|
||||
["Search direction"] = "Direction de recherche", -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = "Rechercher dans les sous-répertoires", -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = "Recherche de '%s'.", -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Sel: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "Sélectionner &tout", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Sélectionner et rechercher le suivant", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Sélectionner et rerchercher le précédent", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Sélectionne tout le texte dans l'éditeur", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Sélectionner et rechercher le suivant", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Sélectionner et rerchercher le précédent", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Sélectionne le mot sous le curseur et recherche son occurence suivante", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Sélectionne le mot sous le curseur et recherche son occurence précédente", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = "Définir le fichier en tant que point d'entrée", -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Définir à partir du fichier courant", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Définit le répertoire de projet à partir du fichier courant", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = "Utiliser le répertoire de projet", -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Définit le répertoire de projet à partir du fichier courant", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = "Définir le répertoire de recherche", -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Définit l'interpréteur à utiliser", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Définit le répertoire de projet à utiliser", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Paramètres : Système", -- src\editor\menu_edit.lua
|
||||
@@ -252,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = "Afficher les fichiers masqués", -- src\editor\filetree.lua
|
||||
["Show Location"] = "Afficher l'emplacement", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = "Affiche tous les fichiers", -- src\editor\filetree.lua
|
||||
["Show context"] = "Affiche le contexte", -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = "Affiche les fichiers précédemment masqués", -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = "Affiche les multiples fenêtres de résultat", -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Affiche l'info-bulle pour la position courante ; placez le curseur après la parenthèse ouvrante de la fonction", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Affiche/Masque la barre d'état", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Affiche/Masque la barre d'outils", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = "Trie par nom", -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Trie les lignes sélectionnées", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Code", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Pile d'exécution", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Lancer le &débogage", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Démarre ou continue le debogage", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Démarre ou continue le debogage", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Pas à pas détai&llé", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "Pas à pas so&mmaire", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Pas à pas so&rtant", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Rentre dans l'instruction suivante", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Sort de la fonction courante", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Enjambe l'instruction suivante", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Arrête le débogage et continue l'exécution du processus", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Arrête le processus en cours d'exécution", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Rentre dans l'instruction suivante", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Sort de la fonction courante", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Enjambe l'instruction suivante", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Arrête le débogage et continue l'exécution du processus", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Arrête le processus en cours d'exécution", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Active ou désactive le mode plein écran", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = "Index des symboles", -- src\editor\outline.lua
|
||||
["Text not found."] = "Texte non trouvé.", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "Le fichier d'API doit être placé dans un sous-répertoire du répertoire d'API.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Créer/Supprimer un marque-page", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "Créer/Supprimer un &point d'arrêt", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Crée ou supprime un marque-page", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Crée ou supprime un point d'arrêt", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Crée ou supprime un marque-page", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Crée ou supprime un point d'arrêt", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "&Tracer", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Trace l'exécution en affichant chaque ligne de code exécutée", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Impossible de créer le répertoire '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Impossible de créer le fichier '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Impossible de supprimer le répertoire '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = "Impossible de supprimer le fichier '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Impossible de charger le le fichier '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Impossible de renommer le fichier '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Impossible d'enregistrer le fichier '%s' : %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Impossible d'arrêter le programme (pid : %d), code %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Annule la dernière modification", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = "Démapper le répertoire", -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = "Ne plus utiliser le fichier '%s' en tant que point d'entrée", -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {"%d fichier mis à jour.","%d fichiers mis à jour."}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = "Mise à jour en cours de l'index des symboles et des paramètres...", -- src\editor\outline.lua
|
||||
["Use %s to close."] = "Utiliser %s pour fermer.", -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "Utilisez '%s' pour voir la description complète.", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "Utilisez '%s' pour afficher les fins de ligne et '%s' pour les convertir.", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Utilisez 'clear' pour effacer la sortie console et l´historique.", -- src\editor\shellbox.lua
|
||||
@@ -293,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Affiche la fenêtre de structure", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Affiche la fenêtre de sortie/console", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Affiche la fenêtre d'explorateur de projet", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Affiche la fenêtre de pile d'exécution", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Affiche la fenêtre d'expressions espionnes", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Affiche la fenêtre de pile d'exécution", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Affiche la fenêtre d'expressions espionnes", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Expressions espionnes", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Bienvenue dans l´interpréteur interactif Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "B&oucler", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Boucler", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Vous devez d'abord enregistrer le programme.", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Zoomer", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Dézoomer", -- src\editor\menu_view.lua
|
||||
|
||||
131
cfg/i18n/it.lua
131
cfg/i18n/it.lua
@@ -1,26 +1,24 @@
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = {"%d occorrenza", "%d occorrenze"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "L'evento %s è fallito : %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = "%s%% caricato...", -- src\editor\commands.lua
|
||||
["&About"] = "Informazioni", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Aggiungi Espressione di Controllo", -- src\editor\debugger.lua
|
||||
["&Break"] = "Interrompi", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "&Chiudi pagina", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = "&Comunità", -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Compila", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = "&Copia Valore", -- src\editor\debugger.lua
|
||||
["&Copy"] = "&Copia", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Visualizzazione di &Default", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "Elimina Espressione di Controllo", -- src\editor\debugger.lua
|
||||
["&Delete"] = "Elimina", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "Documentazione", -- src\editor\menu_help.lua
|
||||
["&Down"] = "Verso il basso", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "Modifica directory di progetto", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "Modifica Valore", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "Modifica Espressione di Controllo", -- src\editor\debugger.lua
|
||||
["&Edit"] = "Modifica", -- src\editor\menu_edit.lua
|
||||
["&File"] = "File", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "Trova Tutti", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "Trova Successivo", -- src\editor\findreplace.lua
|
||||
["&Find"] = "Ricerca", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "Apri/Chiudi tutto", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "Domande &Frequenti", -- src\editor\menu_help.lua
|
||||
@@ -35,8 +33,7 @@ return {
|
||||
["&Project"] = "&Progetto", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "&Ripeti", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "&Rinomina", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "Sostituisci Tutti", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "Sostituisci", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "Sostituisci", -- src\editor\menu_search.lua
|
||||
["&Run"] = "Lancia", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Salva", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "Ricerca", -- src\editor\menu_search.lua
|
||||
@@ -44,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "Stack di chiamate", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "Avvia Debugger Server", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "Barra di stato", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "Sotto Directory", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "Barra degli strumenti", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "Guide", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "Annulla", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "Verso l'alto", -- src\editor\findreplace.lua
|
||||
["&View"] = "Visualizza", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "Finestra Espressioni di Controllo", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".bak su Sostituisci", -- src\editor\findreplace.lua
|
||||
["About %s"] = "Informazioni su %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Aggiungi a Scratchpad ", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Aggiungi Espressione di Controllo", -- src\editor\editor.lua
|
||||
@@ -61,25 +55,27 @@ return {
|
||||
["Analyze"] = "Analizza", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Autocompletamento identificatori", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Autocompletamento in linea", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = "Il file binario è aperto in sola lettura, poichè caricato solo parzialmente.", -- src\editor\commands.lua
|
||||
["Bookmark"] = "Segnalibro", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Interrompi l'esecuzione alla successiva riga di codice ", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Interrompi l'esecuzione alla successiva riga di codice ", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "Pulisci finestra di output", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "Commenta/Scommenta", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Impossibile farte debug dello script nella finestra attiva", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Impossibile interpretare l'espressione se l'applicazione è in esecuzione.", -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "File '%s' non trovato nel progetto per attivare il debug. Modificare il progetto o apire il file prima di lanciare il debug.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Impossibile aprire il file '%s': %s", -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = "Impossibile aprire il file '%s': %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Impossibile procedere all'auto-recovery; Formato non valido: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = "Impossibile sostituire in un testo in sola lettura", -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Impossibile eseguire il punto di ingresos dello script (%s).", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Impossibile lanciare il server debugger a %s:%d: %s.", -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = "Impossibile iniziare il debug perchè '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Impossibile lanciare la sessione di debug: errore interno '%s'.'", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Impossibile lanciare il debug senza aver aperto un file o se il file corrente non è stato salvato ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Impossibile fermare il server debugger perchè non è stato avviato", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Annulla", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Annullato dall'utente", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Scegli la directory di un progetto", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Scegli...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Pulisci elementi", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = "Scegli una directory da mappare", -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Scegli la directory di un progetto", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = "Scegli una directory di ricerca", -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Scegli...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Pulisci elementi", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Pulisci elementi della lista", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Pulisci la finestra di output prima di compilare o lanciare debug", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "Chidi le Altre Pagine", -- src\editor\gui.lua
|
||||
@@ -100,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Copia il testo selezionato negli appunti", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "Correggi &Indentazione", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Impossibile attivare il file '%s' per debug; si prosegue senza.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Crea un documento vuoto", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Crea un documento vuoto", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "&Taglia", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Taglia il testo selezionato e mette negli appunti", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Server Debugger iniziato %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Server Debugger fermato %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Sessione di debug completata (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Sessione di debug iniziata da '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Debug sospeso a %s:%s (impossibile attivare il file).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Debug sospeso a '%s:%s' (impossibile attivare il file).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Scollega Processo", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Directory", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = "Disabilita Indicizzazione per '%s'", -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Vuoi eliminare '%s'?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Vuoi sovrascrivere '%s'?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Vuoi ricaricarlo?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Vuoi salvare le modifiche a '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "Uscita", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = "Abilita Indicizzazione", -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Inserisci codice Lua e premi <Enter> per eseguirlo.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Inserisci i parametri riga di comando (Annulla per pulire)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Inserisci il testo da sostituire", -- src\editor\editor.lua
|
||||
@@ -125,31 +122,30 @@ return {
|
||||
["Error"] = "Errore", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Elabora in console", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Esegue il progetto/file corrente e permette di modificare il codice per vedere i risultati in tempo reale", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Esegue il progetto/file corrente", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Esegue il progetto/file corrente", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Errore di esecuzione", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Uscita dal programma", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "Il file '%s' e' stato modificato sul disco.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "Il file '%s' ha un timestamp più recente di quello ripristinato '%s'; verificare prima di salvare.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "Il file '%s' non è stato trovato e non può essere recuperato.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "Il file '%s' non esiste piu'.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "File Type", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Il file esiste già.", -- src\editor\commands.lua
|
||||
["File history"] = "Storia del file", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Ricerca nei files", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Cerca il successivo", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Cerca il precedente", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Ricerca nei Files", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = "Trova e inserisci funzione di libreria", -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Cerca e sostituisci testo nei files", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Cerca e sostituisci testo", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Cerca e sostituisci testo", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Ricerca nei files", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Cerca testo nei files", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Cerca testo", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Cerca testo", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Cerca la precedente occorrenza nel testo", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Cerca la successiva occorrenza nel testo", -- src\editor\menu_search.lua
|
||||
["Find"] = "Ricerca", -- src\editor\findreplace.lua
|
||||
["Find"] = "Ricerca", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Apri o chiudi tutti i blocchi di codice", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {"Trovata %d istanza.", "Trovate %d istanze."}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Trovato punto di auto-revcovery e ripristinata la sessione salvata", -- src\editor\commands.lua
|
||||
["Found"] = "Occorrenze trovate:", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Schermo intero", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Vai a Definizione", -- src\editor\editor.lua
|
||||
["Go To File..."] = "Vai al File...", -- src\editor\menu_search.lua
|
||||
@@ -162,24 +158,26 @@ return {
|
||||
["Go to symbol"] = "Vai al simbolo", -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = "Nascondi Files '.%s'", -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = "Ignora e non indicizzare simboli nella directory selezionata", -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Errore ignorato durante l'inizializzaione del debugger codice: %s.", -- src\editor\debugger.lua
|
||||
["In Files"] = "Nei Files", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = "Indicizzazione %d file: '%s'...", -- src\editor\outline.lua
|
||||
["Indexing completed."] = "Indicizzazione completata", -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = "Inserisci Funzione di Libreria...", -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Files conosciuti", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Ln: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Console locale", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "&Interprete Lua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = "Mappa directory...", -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Richiesta remota '%s' mappata su '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "Maiuscole/Minuscole", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "Intera parola", -- src\editor\findreplace.lua
|
||||
["Match case"] = "Maiuscole/Minuscole", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Intera parola", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Trovata codifica Fine-Riga mista.", -- src\editor\commands.lua
|
||||
["Navigate"] = "Naviga", -- src\editor\menu_search.lua
|
||||
["New &File"] = "Nuovo &File", -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Apri con programma predefinito", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Apri un documento esistente", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Apri un documento esistente", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Apri un file", -- src\editor\commands.lua
|
||||
["Options"] = "Opzioni", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Finestra Outline", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Outline", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Output (in corso d'esecuzione)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -201,48 +199,59 @@ return {
|
||||
["Project"] = "Progetto", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "Progetto/Explorer", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Fornire parametri riga di comando", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = "Accodati %d file per indicizzazione.", -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Sostituisci nei files", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Re-indenta le linee selezionate", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = "Raggiunta la fine del testo e ricominciato da inizio", -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "Progetti Recenti", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Files recenti", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Ripeti l'ultima azione annullata", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = "Aggiorna Indici", -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = "Aggiorna simboli indicizzati dai files nella directory selezionata", -- src\editor\outline.lua
|
||||
["Refresh"] = "Rinfrescare", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Impossibile aprire una nuova sessione di debug in quanto ne esiste una in corso", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "Regular &expression", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "Regular expression", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Console remota", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Rinomina tutte le occorrenze", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "Sostituisci Tutto", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Sostituisci Tutte le Selezioni", -- src\editor\editor.lua
|
||||
["Replace"] = "Sostituisci", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Sostituisci Tutto", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = "Sostituisci istanza successiva", -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {"Sostituita %d istanza.", "Sostituite %d istanze."}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Sostituito un carattere UTF8 invalido con %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Sostituiti :", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Sostituzione", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Ritorna al default layout", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Esegui in Scratchpad (Live coding)", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Esegui in Scratchpad (Live coding)", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = "Esegui fino al Cursore", -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Esegui in Scratchpad (Live coding)", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = "Esegui fino al cursore", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "Ferma il debugger", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "Ferma il processo", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "S&alva con nome...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Sa&lva tutto", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Vuoi salvare le modifiche?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Salva tutti i documenti aperti", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Salva tutti i documenti aperti", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Salva il file con nome", -- src\editor\commands.lua
|
||||
["Save file?"] = "Vuoi salvare il file?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Salva il documento corrente in un file con un nuovo nome", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Salva il documento corrente", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Salva il documento corrente", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Salvato auto-recover a %s.", -- src\editor\commands.lua
|
||||
["Scope"] = "Direzione", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Errore durente Scratchpad", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Ricerca di", -- src\editor\findreplace.lua
|
||||
["Search direction"] = "Direzione ricerca", -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = "Ricerca nelle sotto-directory", -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = "Ricerca di '%s'.", -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Sel: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "Selezion&a Tutto", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Seleziona e trova successivo", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Seleziona e trova precedente", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Seleziona tutto il testo nell'editor", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Seleziona e trova successivo", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Seleziona e trova precedente", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Seleziona la parola e trova successivo", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Seleziona la parola e trova precedente", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = "Imposta come File di Partenza", -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Impostato da file corrente", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Definisci la directory del progeetto dal file corrente", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = "Imposta a Directory di Progetto", -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Definisci la directory del progeetto dal file corrente", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = "Imposta directory ricerca", -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Definisci l'interprete da utilizzare", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Imposta la directory di progetto da usare", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Impostazioni: Sistema", -- src\editor\menu_edit.lua
|
||||
@@ -252,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = "Mostra File nascosti", -- src\editor\filetree.lua
|
||||
["Show Location"] = "Mostra posizione", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = "Mostra tutti i file", -- src\editor\filetree.lua
|
||||
["Show context"] = "Mostra contesto", -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = "Mostra i file precedentemente nascosti", -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = "Mostra più finestre dei risultati", -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Mostra i consigli per la posizione corrente; muovi il cursore dopo la parentesi o la funzione", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Mostra/Nascondi la barra di stato", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Mostra/Nascondi la barra degli strumenti", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = "Ordina per Nome", -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Ordina le righe selezionate", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Sorgente", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Stack", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Inizia il &Debug", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Inizia o continua il debug", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Inizia o continua il debug", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Step &Into", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "Step &Over", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Step O&ut", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Step into", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Contina fino all'uscita della funzione", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Continua senza entrare nella funzione", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Ferma il debug e continua l'esecuzione del processo", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Ferma il processo in esecuzione", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Step into", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Contina fino all'uscita della funzione", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Continua senza entrare nella funzione", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Ferma il debug e continua l'esecuzione del processo", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Ferma il processo in esecuzione", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Passa da tutto schermo a finestra", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = "Indice Simboli", -- src\editor\outline.lua
|
||||
["Text not found."] = "Testo non trovato.", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "Il file API deve essere presente in una sottodirectory o nella direcotory API.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Attiva/Disattiva Segnalibro", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "Attiva/Disattiva Break&point", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Attiva/Disattiva Segnalibro", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Attiva/Disattiva Breakpoint", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Attiva/Disattiva Segnalibro", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Attiva/Disattiva Breakpoint", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "Tr&ace", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Traccia l'esecuzione mostrando le righe eseguite", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Impossibile creare la directory '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Impossibile creare il file '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Impossibile cancellare la directory '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = "Impossibile cancellare file '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Impossibile aprire il file '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Impossibile rinominare il file '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Impossibile salvare il file '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Impossibile fermare il programma (pid: %d), code %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Annulla l'ultima azione di edit", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = "Togli mappatura Directory", -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = "Togli '%s' come File di Partenza", -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {"Aggiornato %d file.", "Aggiornati %d file."}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = "Aggiornamento indice simbili e impostazioni...", -- src\editor\outline.lua
|
||||
["Use %s to close."] = "Utilizza %s per chiudere.", -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "Utilizza '%s' per vedere la descrizione completa.", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "Utilizza '%s' per vedere la fine della riga e '%s' per convertirli.", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Utilizza 'clear' per pulire l`output e lo storico.", -- src\editor\shellbox.lua
|
||||
@@ -293,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Visualizza la finestra di outline", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Mostra la finestra di output/console", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Mostra la finestra di progetto/explorer", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Mostra la finestra dello Stack", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Mostra la finestra delle Espressioni di Controllo", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Mostra la finestra dello Stack", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Mostra la finestra delle Espressioni di Controllo", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Watch", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Benvenuti nell`interprete interattivo Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "Wrap ar&ound", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Wrap around", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Devi prima salvare il programma", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Zoom In", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Zoom Out", -- src\editor\menu_view.lua
|
||||
|
||||
@@ -1,29 +1,24 @@
|
||||
---
|
||||
-- @author Evandro Costa <evandro.co>
|
||||
-- @date 26/12/2014
|
||||
return {
|
||||
[0] = function(c) return c == 1 and 1 or 2 end, -- plural
|
||||
["%d instance"] = {"%d ocorrência", "%d ocorrências"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "Evento %s falhou: %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = nil, -- src\editor\commands.lua
|
||||
["&About"] = "Sobre", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Adicionar observador", -- src\editor\debugger.lua
|
||||
["&Break"] = "Interromper", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "Fe&char guia", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = "&Comunidade", -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Compilar", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = nil, -- src\editor\debugger.lua
|
||||
["&Copy"] = "&Copiar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Re&definir painéis", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "Remover observa&dor", -- src\editor\debugger.lua
|
||||
["&Delete"] = "Apagar", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "&Documentação", -- src\editor\menu_help.lua
|
||||
["&Down"] = "&Descendente", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "&Editar pasta do projeto", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "&Editar valor", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "&Editar observador", -- src\editor\debugger.lua
|
||||
["&Edit"] = "&Editar", -- src\editor\menu_edit.lua
|
||||
["&File"] = "Arquivo", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "Localizar tudo", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "Localizar próxima", -- src\editor\findreplace.lua
|
||||
["&Find"] = "Localizar", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "Expandir/Recolher tudo", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "Perguntas &frequentes", -- src\editor\menu_help.lua
|
||||
@@ -38,8 +33,7 @@ return {
|
||||
["&Project"] = "&Projeto", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "&Refazer", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "&Renomear", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "Substitui&r tudo", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "Substitui&r", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "Substitui&r", -- src\editor\menu_search.lua
|
||||
["&Run"] = "Executa&r", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Salvar", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "Localizar", -- src\editor\menu_search.lua
|
||||
@@ -47,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "Pilha de execução", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "Iniciar &servidor de depuração", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "Barra de &status", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "&Subpastas", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "Barra de ferramen&tas", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "&Tutoriais", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "Desfazer", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "Ascendente", -- src\editor\findreplace.lua
|
||||
["&View"] = "Exibir", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "Observador", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".&bak ao substituir", -- src\editor\findreplace.lua
|
||||
["About %s"] = "Sobre %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Adicionar ao rascunho", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Adicionar observador", -- src\editor\editor.lua
|
||||
@@ -64,25 +55,27 @@ return {
|
||||
["Analyze"] = "Analisar", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Autocompletar identificadores", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Autocompletar ao digitar", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = nil, -- src\editor\commands.lua
|
||||
["Bookmark"] = "Marcador", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Interromper execução na próxima linha de código", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Interromper execução na próxima linha de código", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "&Limpar janela de saída", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "C&omentar/Descomentar", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Impossível de depurar o script na janela ativa do editor.", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Impossível executar a expressão enquanto a aplicação estiver em execução.", -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "Impossível localizar o arquivo '%s' no projeto atual para iniciar a depuração. Atualize o projeto ou abra o arquivo no editor antes de depurar.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Impossível abrir o arquivo '%s': %s", -- src\editor\singleinstance.lua
|
||||
["Can't open file '%s': %s"] = "Impossível abrir o arquivo '%s': %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Impossível de processar registro de autorrecuperação; formato inválido: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = nil, -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Impossível de executar o ponto de entrada do script ('%s').", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Impossível de iniciar o sevidor de depuração em %s:%d: %s.", -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = nil, -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Impossível iniciar sessão de depuração devido ao erro interno '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Impossível iniciar depuração sem abrir um arquivo ou se o arquivo atual não foi salvo ainda ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Impossível interromper servidor de depuração se ele não foi iniciado.", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Cancelar", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Cancelado pelo usuário", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Selecionar pasta do projeto", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Selecionar...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Limpar itens", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = nil, -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Selecionar pasta do projeto", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Selecionar...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Limpar itens", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Limpar itens desta lista", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Limpar janela de saída antes de compilar ou depurar", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "Fechar &outras guias", -- src\editor\gui.lua
|
||||
@@ -103,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Copiar texto selecionado para a área de transfêrencia", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "Corr&igir recuo", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Impossível ativar o arquivo '%s' para a depuração; continuando sem ele.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Criar um documento em branco", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Criar um documento em branco", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "Recor&tar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Recortar texto selecionado para a área de transfêrencia", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Servidor de depuração iniciado em %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Servidor de depuração interrompido em %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Sessão de depuração completada (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Sessão de depuração iniciada em '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Depuração suspendida em %s:%s (impossível ativar o arquivo).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Depuração suspendida em '%s:%s' (impossível ativar o arquivo).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Separar &processo", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Pasta", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = nil, -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Deseja mesmo apagar '%s'?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Deseja mesmo sobrescrevê-lo?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Deseja mesmo atualizá-lo?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Deseja salvar as alterações em '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "Sair", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = nil, -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Digite o código Lua e pressione Enter para executá-lo.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Digite os parâmetros da linha de comandos (use Cancelar para limpar)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Digite o texto para substituir", -- src\editor\editor.lua
|
||||
@@ -128,31 +122,30 @@ return {
|
||||
["Error"] = "Erro", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Executar no console", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Executar o projeto/arquivo atual, mantendo o código atualizado para ver os resultados em tempo real", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Executar o projeto/arquivo atual", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Executar o projeto/arquivo atual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Erro na execução", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Sair do programa", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "Arquivo '%s' foi alterado no disco.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "Arquivo '%s' possui uma data mais recente do que o restaurado '%s'; verifique antes de salvar.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "Arquivo '%s' está faltando e não pode ser restaurado.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "Arquivo '%s' não existe mais.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "Tipo de arquivo", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Arquivo já existe", -- src\editor\commands.lua
|
||||
["File history"] = "Histórico do arquivo", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Local&izar em arquivos", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Localizar próximo", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Localizar anterior", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Localizar em arquivos", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = "Localizar e inserir função de biblioteca", -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Localizar e substituir texto em arquivos", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Localizar e substituir texto", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Localizar e substituir texto", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Localizar em arquivos", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Localizar texto em arquivos", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Localizar texto", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Localizar texto", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Localizar a ocorrência anterior do texto", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Localizar a ocorrência posterior do texto", -- src\editor\menu_search.lua
|
||||
["Find"] = "Localizar", -- src\editor\findreplace.lua
|
||||
["Find"] = "Localizar", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Expandir ou recolher todos os blocos do código", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Registro de autorrecuperação encontrado e sessão restaurada.", -- src\editor\commands.lua
|
||||
["Found"] = "Encontrado", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Tela inteira", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Ir para a definição", -- src\editor\editor.lua
|
||||
["Go To File..."] = "Ir para o arquivo...", -- src\editor\menu_search.lua
|
||||
@@ -165,24 +158,26 @@ return {
|
||||
["Go to symbol"] = "Ir para o símbolo", -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = "Ocultar arquivos '.%s'", -- src\editor\filetree.lua
|
||||
["INS"] = "INS", -- src\editor\editor.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Erro ignorado no código de inicialização do depurador: %s.", -- src\editor\debugger.lua
|
||||
["In Files"] = "Em arquivos", -- src\editor\findreplace.lua
|
||||
["Indexing %d files: '%s'..."] = nil, -- src\editor\outline.lua
|
||||
["Indexing completed."] = nil, -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = "Inserir função de biblioteca...", -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Arquivos conhecidos", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Ln: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Console local", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "&Interpretador Lua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = nil, -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Solicitação remota '%s' mapeada para '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "Diferenciar maiúsc/minúsc", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "Somente palavras inteiras", -- src\editor\findreplace.lua
|
||||
["Match case"] = "Diferenciar maiúsc/minúsc", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Somente palavras inteiras", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Multíplas codificações de fim-de-linha encontradas.", -- src\editor\commands.lua
|
||||
["Navigate"] = "Navegar", -- src\editor\menu_search.lua
|
||||
["New &File"] = "Novo arquivo", -- src\editor\filetree.lua
|
||||
["OVR"] = "OVR", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Abrir com o programa padrão", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Abrir um documento existente", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Abrir um documento existente", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Abrir arquivo", -- src\editor\commands.lua
|
||||
["Options"] = "Opções", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Saída", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Definições", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Saída (executando)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -204,48 +199,59 @@ return {
|
||||
["Project"] = "Projeto", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "Projeto/Hierarquia de arquivos", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Informar os parâmetros da linha de comandos", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = nil, -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Substituir em arquivos", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Inserir recuos nas linhas selecionadas", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = nil, -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "&Projetos recentes", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Arquivos recentes", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Refazer última edição desfeita", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = nil, -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = nil, -- src\editor\outline.lua
|
||||
["Refresh"] = "Refrescar", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Solicitação de início de uma nova sessão de depuração recusado porque já existe um em progresso.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "&Expressão regular", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "Expressão regular", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Console remoto", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Renomear todas as instâncias", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "Substituir tudo", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Substituir todas as seleções", -- src\editor\editor.lua
|
||||
["Replace"] = "Substituir", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Substituir tudo", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = nil, -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Caractere UTF8 inválido susbtituído por %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Substituído", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Substituindo", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Redefinir painéis para o padrão", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Executar como rascunho", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Executar como rascunho", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = nil, -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Executar como rascunho", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = nil, -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "In&terromper depuração", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "In&terromper processo", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "S&alvar como...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Sa&lvar tudo", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Salvar alterações?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Salvar todos os documentos abertos", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Salvar todos os documentos abertos", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Salvar arquivo como", -- src\editor\commands.lua
|
||||
["Save file?"] = "Salvar arquivo?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Salvar documento atual para um arquivo com outro nome", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Salvar documento atual", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Salvar documento atual", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Autorrecuperação salvo às %s.", -- src\editor\commands.lua
|
||||
["Scope"] = "Direção", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Erro no rascunho", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Localizando por", -- src\editor\findreplace.lua
|
||||
["Search direction"] = nil, -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = nil, -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = nil, -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Sel: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "Selecion&ar tudo", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Selecionar e localizar próxima", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Selecionar e localizar anterior", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Selecionar todo o texto do editor", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Selecionar e localizar próxima", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Selecionar e localizar anterior", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Selecionar palavra no cursor e localizar sua próxima ocorrência", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Selecionar palavra no cursor e localizar sua ocorrência anterior", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Alterar para o arquivo atual", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Alterar pasta do projeto para a pasta do arquivo atual", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = nil, -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Alterar pasta do projeto para a pasta do arquivo atual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = nil, -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Alterar interpretador a ser utilizado", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Alterar pasta do projeto a ser utilizado", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Opções: Sistema", -- src\editor\menu_edit.lua
|
||||
@@ -255,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = "Exibir arquivos ocultos", -- src\editor\filetree.lua
|
||||
["Show Location"] = "Exibir pasta no sistema", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = "Exibir todos os arquivos", -- src\editor\filetree.lua
|
||||
["Show context"] = nil, -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = "Exibir arquivos anteriormente ocultos", -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = nil, -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Exibir dica para a posição atual; posicione o cursor após abrir o parênteses da função", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Exibir/Ocultar a barra de status", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Exibir/Ocultar a barra de ferramentas", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = nil, -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Ordenar linhas selecionadas", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Código", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Pilha de execução", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Iniciar &depuração", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Iniciar ou continuar depuração", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Iniciar ou continuar depuração", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "Passar para dentro", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "Passar s&obre", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "Passar para fora", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Passar para dentro", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Passar para fora da função atual", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Passar para fora", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Interromper depuração e continuar executando o processo", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Interromper o processo atual em execução", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Passar para dentro", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Passar para fora da função atual", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Passar para fora", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Interromper depuração e continuar executando o processo", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Interromper o processo atual em execução", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Entrar/Sair do modo tela inteira", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = nil, -- src\editor\outline.lua
|
||||
["Text not found."] = "Texto não encontrado.", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "O arquivo de API deve estar localizado em uma subpasta da pasta de API", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Alternar marcador", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "Alternar &ponto de interrupção", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Alternar marcador", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Alternar ponto de interrupção", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Alternar marcador", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Alternar ponto de interrupção", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "R&astrear", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Rastrear execução exibindo cada linha de código executada", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Impossível criar pasta '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Impossível criar arquivo '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Impossível apagar a pasta '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = nil, -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Impossível carregar o arquivo '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Impossível renomear o arquivo '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Impossível salvar o arquivo '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Impossível de interromper programa (pid: %d), código %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Refazer última edição", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = nil, -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = nil, -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = nil, -- src\editor\outline.lua
|
||||
["Use %s to close."] = nil, -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "Use '%s' para ver a descrição completa.", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "Use '%s' para exibir os finais de linha e '%s' para convertê-los.", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Use 'clear' para limpar a saída e o histórico.", -- src\editor\shellbox.lua
|
||||
@@ -296,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Exibir a janela de definições", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Exibir a janela de saída/console", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Exibir janela do projeto/hierarquia de arquivos", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Exibir janela da pilha de execução", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Exibir janela do observador", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Exibir janela da pilha de execução", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Exibir janela do observador", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Observador", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Bem-vindo ao interpretador do Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "Repetir direção", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Repetir direção", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Você deve salvar o programa primeiro.", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Ampliar", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Afastar", -- src\editor\menu_view.lua
|
||||
|
||||
137
cfg/i18n/ru.lua
137
cfg/i18n/ru.lua
@@ -1,26 +1,24 @@
|
||||
return {
|
||||
[0] = function(c) c = (c-9)%100 < 9 and 9 or (c-1)%10 return c == 0 and 1 or c < 4 and 2 or 3 end, -- plural
|
||||
["%d instance"] = {"%d совпадение", "%d совпадения", "%d совпадений"}, -- src\editor\findreplace.lua
|
||||
["%s event failed: %s"] = "%s обработчик события вернул ошибку: %s", -- src\editor\package.lua
|
||||
["%s%% loaded..."] = "%s%% загружено...", -- src\editor\commands.lua
|
||||
["&About"] = "&О программе", -- src\editor\menu_help.lua
|
||||
["&Add Watch"] = "&Добавить выражение", -- src\editor\debugger.lua
|
||||
["&Break"] = "Пр&ервать", -- src\editor\menu_project.lua
|
||||
["&Close Page"] = "&Закрыть", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Community"] = nil, -- src\editor\menu_help.lua
|
||||
["&Compile"] = "&Компилировать", -- src\editor\menu_project.lua
|
||||
["&Copy Value"] = "Копировать значение", -- src\editor\debugger.lua
|
||||
["&Copy"] = "&Копировать", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Default Layout"] = "Вид по &умолчанию", -- src\editor\menu_view.lua
|
||||
["&Delete Watch"] = "&Удалить выражение", -- src\editor\debugger.lua
|
||||
["&Delete"] = "&Удалить", -- src\editor\filetree.lua
|
||||
["&Documentation"] = "Документация", -- src\editor\menu_help.lua
|
||||
["&Down"] = "Вниз", -- src\editor\findreplace.lua
|
||||
["&Edit Project Directory"] = "&Редактировать папку проекта", -- src\editor\filetree.lua
|
||||
["&Edit Value"] = "&Редактировать значение", -- src\editor\debugger.lua
|
||||
["&Edit Watch"] = "&Редактировать выражение", -- src\editor\debugger.lua
|
||||
["&Edit"] = "&Правка", -- src\editor\menu_edit.lua
|
||||
["&File"] = "&Файл", -- src\editor\menu_file.lua
|
||||
["&Find All"] = "Найти все", -- src\editor\findreplace.lua
|
||||
["&Find Next"] = "Найти далее", -- src\editor\findreplace.lua
|
||||
["&Find"] = "&Найти", -- src\editor\menu_search.lua
|
||||
["&Fold/Unfold All"] = "Св&ернуть/развернуть все", -- src\editor\menu_edit.lua
|
||||
["&Frequently Asked Questions"] = "&Часто задаваемые вопросы", -- src\editor\menu_help.lua
|
||||
@@ -35,8 +33,7 @@ return {
|
||||
["&Project"] = "Пр&оект", -- src\editor\menu_project.lua
|
||||
["&Redo"] = "Верну&ть", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Rename"] = "Переименовать", -- src\editor\filetree.lua
|
||||
["&Replace All"] = "Заменить всe", -- src\editor\findreplace.lua
|
||||
["&Replace"] = "За&менить", -- src\editor\findreplace.lua, src\editor\menu_search.lua
|
||||
["&Replace"] = "За&менить", -- src\editor\menu_search.lua
|
||||
["&Run"] = "За&пустить", -- src\editor\menu_project.lua
|
||||
["&Save"] = "&Сохранить", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["&Search"] = "По&иск", -- src\editor\menu_search.lua
|
||||
@@ -44,14 +41,11 @@ return {
|
||||
["&Stack Window"] = "Окно &стека", -- src\editor\menu_view.lua
|
||||
["&Start Debugger Server"] = "Запустить сервер отла&дки", -- src\editor\menu_project.lua
|
||||
["&Status Bar"] = "Панель состояния", -- src\editor\menu_view.lua
|
||||
["&Subdirectories"] = "В папках", -- src\editor\findreplace.lua
|
||||
["&Tool Bar"] = "Панель инструментов", -- src\editor\menu_view.lua
|
||||
["&Tutorials"] = "&Обучающие материалы", -- src\editor\menu_help.lua
|
||||
["&Undo"] = "&Отменить", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["&Up"] = "Вверх", -- src\editor\findreplace.lua
|
||||
["&View"] = "&Вид", -- src\editor\menu_view.lua
|
||||
["&Watch Window"] = "Окно &выражений", -- src\editor\menu_view.lua
|
||||
[".&bak on Replace"] = ".&bak после замены", -- src\editor\findreplace.lua
|
||||
["About %s"] = "О %s", -- src\editor\menu_help.lua
|
||||
["Add To Scratchpad"] = "Добавить в черновик", -- src\editor\editor.lua
|
||||
["Add Watch Expression"] = "Добавить выражение", -- src\editor\editor.lua
|
||||
@@ -61,25 +55,27 @@ return {
|
||||
["Analyze"] = "Анализировать", -- src\editor\inspect.lua
|
||||
["Auto Complete Identifiers"] = "Автодополнение идентификаторов", -- src\editor\menu_edit.lua
|
||||
["Auto complete while typing"] = "Автоматически дополнять идентификаторы при наборе", -- src\editor\menu_edit.lua
|
||||
["Binary file is shown as read-only as it is only partially loaded."] = "Двоичный файл открыт только для чтения, так как загружен частично.", -- src\editor\commands.lua
|
||||
["Bookmark"] = "Закладка", -- src\editor\menu_edit.lua
|
||||
["Break execution at the next executed line of code"] = "Прервать выполнение на следующей строке", -- src\editor\menu_project.lua
|
||||
["Break execution at the next executed line of code"] = "Прервать выполнение на следующей строке", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["C&lear Output Window"] = "Очистка ок&на вывода", -- src\editor\gui.lua, src\editor\menu_project.lua
|
||||
["C&omment/Uncomment"] = "Зако&мментировать/раскомментировать", -- src\editor\menu_edit.lua
|
||||
["Can't debug the script in the active editor window."] = "Невозможно отладить скрипт в текущем окне редактирования.", -- src\editor\debugger.lua
|
||||
["Can't evaluate the expression while the application is running."] = nil, -- src\editor\debugger.lua
|
||||
["Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging."] = "Файл '%s', необходимый для отладки, не найден в текущем проекте. Обновите проект или откройте файл в редакторе перед началом отладки.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Ошибка открытия файла '%s': %s", -- src\editor\singleinstance.lua
|
||||
["Can't evaluate the expression while the application is running."] = "Невозможно вычеслить значение выражения пока приложение выполняется.", -- src\editor\debugger.lua
|
||||
["Can't open file '%s': %s"] = "Ошибка открытия файла '%s': %s", -- src\editor\findreplace.lua, src\editor\singleinstance.lua, src\editor\inspect.lua, src\editor\outline.lua
|
||||
["Can't process auto-recovery record; invalid format: %s."] = "Ошибка обработки записи автоматического восстановления; неверный формат: %s.", -- src\editor\commands.lua
|
||||
["Can't replace in read-only text."] = "Ошибка замены в тексте не доступном для записи.", -- src\editor\findreplace.lua
|
||||
["Can't run the entry point script ('%s')."] = "Ошибка выполнения стартового скрипта ('%s').", -- src\editor\debugger.lua
|
||||
["Can't start debugger server at %s:%d: %s."] = "Невозможно запустить сервер отладки %s:%d: %s", -- src\editor\debugger.lua
|
||||
["Can't start debugging for '%s'."] = "Невозможно начать отладку для '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging session due to internal error '%s'."] = "Невозможно начать отладочную сессию из-за внутренней ошибки '%s'.", -- src\editor\debugger.lua
|
||||
["Can't start debugging without an opened file or with the current file not being saved ('%s')."] = "Невозможно начать отладку без открытого файла или с несохраненным текущим файлом ('%s').", -- src\editor\debugger.lua
|
||||
["Can't stop debugger server as it is not started."] = "Невозможно остановить сервер отладки пока он не запущен", -- src\editor\debugger.lua
|
||||
["Cancel"] = "Отмена", -- src\editor\findreplace.lua
|
||||
["Cancelled by the user."] = "Отменено пользователем.", -- src\editor\findreplace.lua
|
||||
["Choose a project directory"] = "Выберите папку проекта", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose..."] = "Выбрать...", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Очистить список", -- src\editor\menu_file.lua
|
||||
["Choose a directory to map"] = "Выберите папку для добавления в список", -- src\editor\filetree.lua
|
||||
["Choose a project directory"] = "Выберите папку проекта", -- src\editor\toolbar.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Choose a search directory"] = "Выберите папку поиска", -- src\editor\findreplace.lua
|
||||
["Choose..."] = "Выбрать...", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Clear Items"] = "Очистить список", -- src\editor\findreplace.lua, src\editor\menu_file.lua
|
||||
["Clear items from this list"] = "Удалить элементы из списка", -- src\editor\menu_file.lua
|
||||
["Clear the output window before compiling or debugging"] = "Очистить окно вывода перед компиляцией или отладкой", -- src\editor\menu_project.lua
|
||||
["Close &Other Pages"] = "Закрыть &остальные вкладки", -- src\editor\gui.lua
|
||||
@@ -100,21 +96,22 @@ return {
|
||||
["Copy selected text to clipboard"] = "Скопировать выделенный текст в буфер обмена", -- src\editor\menu_edit.lua
|
||||
["Correct &Indentation"] = "Откорректировать отступ", -- src\editor\menu_edit.lua
|
||||
["Couldn't activate file '%s' for debugging; continuing without it."] = "Невозможно открыть файл '%s' для отладки; выполнение будет продолжено без него.", -- src\editor\debugger.lua
|
||||
["Create an empty document"] = "Создать новый документ", -- src\editor\menu_file.lua
|
||||
["Create an empty document"] = "Создать новый документ", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Cu&t"] = "Вы&резать", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Cut selected text to clipboard"] = "Вырезать выделенный текст в буфер обмена", -- src\editor\menu_edit.lua
|
||||
["Debugger server started at %s:%d."] = "Сервер отладки запущен на %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugger server stopped at %s:%d."] = "Сервер отладки остановлен %s:%d.", -- src\editor\debugger.lua
|
||||
["Debugging session completed (%s)."] = "Отладочная сессия завершена (%s).", -- src\editor\debugger.lua
|
||||
["Debugging session started in '%s'."] = "Отладочная сессия запущена в '%s'.", -- src\editor\debugger.lua
|
||||
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Отладка остановлена на %s:%s (невозможно открыть файл).", -- src\editor\debugger.lua
|
||||
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Отладка остановлена в '%s:%s' (невозможно активировать файл).", -- src\editor\debugger.lua
|
||||
["Detach &Process"] = "Отсоединить процесс", -- src\editor\menu_project.lua
|
||||
["Directory"] = "Папка", -- src\editor\findreplace.lua
|
||||
["Disable Indexing For '%s'"] = "Запретить индексирование для '%s'", -- src\editor\outline.lua
|
||||
["Do you want to delete '%s'?"] = "Удалить '%s'?", -- src\editor\filetree.lua
|
||||
["Do you want to overwrite it?"] = "Переписать его?", -- src\editor\commands.lua
|
||||
["Do you want to reload it?"] = "Перезагрузить его?", -- src\editor\editor.lua
|
||||
["Do you want to save the changes to '%s'?"] = "Сохранить изменения в '%s'?", -- src\editor\commands.lua
|
||||
["E&xit"] = "Вы&ход", -- src\editor\menu_file.lua
|
||||
["Enable Indexing"] = "Разрешить индекcирование", -- src\editor\outline.lua
|
||||
["Enter Lua code and press Enter to run it."] = "Введите код на Lua и нажмите Enter для выполнения.", -- src\editor\shellbox.lua
|
||||
["Enter command line parameters (use Cancel to clear)"] = "Введите параметры командной строки (Cancel чтобы очистить)", -- src\editor\menu_project.lua
|
||||
["Enter replacement text"] = "Введите текст замены", -- src\editor\editor.lua
|
||||
@@ -125,31 +122,30 @@ return {
|
||||
["Error"] = "Ошибка", -- src\editor\commands.lua
|
||||
["Evaluate In Console"] = "Выполнить в консоли", -- src\editor\editor.lua
|
||||
["Execute the current project/file and keep updating the code to see immediate results"] = "Запустить текущий проект/файл и продолжать вносить изменения в код с немедленным выводом результатов", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Запустить текущий проект/файл", -- src\editor\menu_project.lua
|
||||
["Execute the current project/file"] = "Запустить текущий проект/файл", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Execution error"] = "Ошибка выполнения", -- src\editor\debugger.lua
|
||||
["Exit program"] = "Выйти из программы", -- src\editor\menu_file.lua
|
||||
["File '%s' has been modified on disk."] = "Файл '%s' был изменен на диске.", -- src\editor\editor.lua
|
||||
["File '%s' has more recent timestamp than restored '%s'; please review before saving."] = "Файл '%s' имеет более позднее время модификации, чем восстановленный '%s'; пожалуйста просмотрите его перед сохранением.", -- src\editor\commands.lua
|
||||
["File '%s' is missing and can't be recovered."] = "Файл '%s' отсутствует и не может быть восстановлен.", -- src\editor\commands.lua
|
||||
["File '%s' no longer exists."] = "Файл '%s' больше не существует.", -- src\editor\menu_file.lua, src\editor\editor.lua
|
||||
["File Type"] = "Тип файла", -- src\editor\findreplace.lua
|
||||
["File already exists."] = "Файл уже существует.", -- src\editor\commands.lua
|
||||
["File history"] = "История файлов", -- src\editor\menu_file.lua
|
||||
["Find &In Files"] = "Н&айти в файлах", -- src\editor\menu_search.lua
|
||||
["Find &Next"] = "Найти &далее", -- src\editor\menu_search.lua
|
||||
["Find &Previous"] = "Найти &ранее", -- src\editor\menu_search.lua
|
||||
["Find In Files"] = "Найти в файлах", -- src\editor\findreplace.lua
|
||||
["Find and insert library function"] = "Найти и вставить библиотечную функцию", -- src\editor\menu_search.lua
|
||||
["Find and replace text in files"] = "Найти и заменить текст в файлах", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Найти и заменить текст", -- src\editor\menu_search.lua
|
||||
["Find and replace text"] = "Найти и заменить текст", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find in files"] = "Найти в файлах", -- src\editor\toolbar.lua
|
||||
["Find text in files"] = "Найти текст в файлах", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Найти текст", -- src\editor\menu_search.lua
|
||||
["Find text"] = "Найти текст", -- src\editor\toolbar.lua, src\editor\menu_search.lua
|
||||
["Find the earlier text occurence"] = "Найти предыдущее вхождение текста", -- src\editor\menu_search.lua
|
||||
["Find the next text occurrence"] = "Найти следующее вхождение текста", -- src\editor\menu_search.lua
|
||||
["Find"] = "Найти", -- src\editor\findreplace.lua
|
||||
["Find"] = "Найти", -- src\editor\toolbar.lua
|
||||
["Fold or unfold all code folds"] = "Свернуть или развернуть все блоки кода", -- src\editor\menu_edit.lua
|
||||
["Found %d instance."] = {"Найдено %d совпадение.", "Найдено %d совпадения.", "Найдено %d совпадений."}, -- src\editor\findreplace.lua
|
||||
["Found auto-recovery record and restored saved session."] = "Найдена запись авто-восстановления и восстановлена сохраненная сессия.", -- src\editor\commands.lua
|
||||
["Found"] = "Найдено", -- src\editor\findreplace.lua
|
||||
["Full &Screen"] = "Во весь экр&ан", -- src\editor\menu_view.lua
|
||||
["Go To Definition"] = "Перейти к определению", -- src\editor\editor.lua
|
||||
["Go To File..."] = "Перейти к файлу...", -- src\editor\menu_search.lua
|
||||
@@ -162,24 +158,26 @@ return {
|
||||
["Go to symbol"] = "Перейти к символу", -- src\editor\menu_search.lua
|
||||
["Hide '.%s' Files"] = "Спрятать '.%s' файлы", -- src\editor\filetree.lua
|
||||
["INS"] = "ВСТ", -- src\editor\editor.lua
|
||||
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.lua
|
||||
["In Files"] = "Установки файлов", -- src\editor\findreplace.lua
|
||||
["Ignore and don't index symbols from files in the selected directory"] = "Игнорировать и не индексировать файлы в выбранной папке", -- src\editor\outline.lua
|
||||
["Ignored error in debugger initialization code: %s."] = "Проигнорирована ошибка в коде инициализации отладчика: %s.", -- src\editor\debugger.lua
|
||||
["Indexing %d files: '%s'..."] = "Индексировано %d: '%s'...", -- src\editor\outline.lua
|
||||
["Indexing completed."] = "Индексирование закончено.", -- src\editor\outline.lua
|
||||
["Insert Library Function..."] = "Вставить библиотечную функцию...", -- src\editor\menu_search.lua
|
||||
["Known Files"] = "Файлы Lua", -- src\editor\commands.lua
|
||||
["Ln: %d"] = "Стр: %d", -- src\editor\editor.lua
|
||||
["Local console"] = "Локальная консоль", -- src\editor\gui.lua, src\editor\shellbox.lua
|
||||
["Lua &Interpreter"] = "&Интерпретатор Lua", -- src\editor\menu_project.lua
|
||||
["Map Directory..."] = "Добавить папку в список", -- src\editor\filetree.lua
|
||||
["Mapped remote request for '%s' to '%s'."] = "Удаленный запрос для '%s' отображен на '%s'.", -- src\editor\debugger.lua
|
||||
["Match &case"] = "Совпадение регистра", -- src\editor\findreplace.lua
|
||||
["Match &whole word"] = "Совпадение целого слова", -- src\editor\findreplace.lua
|
||||
["Match case"] = "Совпадение регистра", -- src\editor\toolbar.lua
|
||||
["Match whole word"] = "Совпадение целого слова", -- src\editor\toolbar.lua
|
||||
["Mixed end-of-line encodings detected."] = "Обнаружены смешанные символы конца строки.", -- src\editor\commands.lua
|
||||
["Navigate"] = "Перейти", -- src\editor\menu_search.lua
|
||||
["New &File"] = "Новый файл", -- src\editor\filetree.lua
|
||||
["OVR"] = "ЗАМ", -- src\editor\editor.lua
|
||||
["Open With Default Program"] = "Открыть используя программу по умолчанию", -- src\editor\filetree.lua
|
||||
["Open an existing document"] = "Открыть существующий документ", -- src\editor\menu_file.lua
|
||||
["Open an existing document"] = "Открыть существующий документ", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Open file"] = "Открыть файл", -- src\editor\commands.lua
|
||||
["Options"] = "Установки", -- src\editor\findreplace.lua
|
||||
["Outline Window"] = "Окно структуры", -- src\editor\menu_view.lua
|
||||
["Outline"] = "Структура", -- src\editor\outline.lua
|
||||
["Output (running)"] = "Вывод (запущен)", -- src\editor\debugger.lua, src\editor\output.lua
|
||||
@@ -201,48 +199,59 @@ return {
|
||||
["Project"] = "Проект", -- src\editor\filetree.lua
|
||||
["Project/&FileTree Window"] = "Окно &проекта/списка файлов", -- src\editor\menu_view.lua
|
||||
["Provide command line parameters"] = "Установить параметры командной строки", -- src\editor\menu_project.lua
|
||||
["Queued %d files to index."] = "Помещено %d файлов в очередь на индексирование.", -- src\editor\menu_search.lua
|
||||
["R/O"] = "R/O", -- src\editor\editor.lua
|
||||
["R/W"] = "R/W", -- src\editor\editor.lua
|
||||
["Re&place In Files"] = "Замени&ть в файлах", -- src\editor\menu_search.lua
|
||||
["Re-indent selected lines"] = "Исправить отступ в выделенных строчках", -- src\editor\menu_edit.lua
|
||||
["Reached end of text and wrapped around."] = "Достигнут конец текста и произведен возврат к началу.", -- src\editor\findreplace.lua
|
||||
["Recent &Projects"] = "Недавние &проекты", -- src\editor\menu_file.lua
|
||||
["Recent Files"] = "Недавние файлы", -- src\editor\menu_file.lua
|
||||
["Redo last edit undone"] = "Вернуть последнее отмененное изменение", -- src\editor\menu_edit.lua
|
||||
["Refresh Index"] = "Обновить индекс", -- src\editor\outline.lua
|
||||
["Refresh indexed symbols from files in the selected directory"] = "Обновить индекс символов из файлов в выбранной папке", -- src\editor\outline.lua
|
||||
["Refresh"] = "Oбновление", -- src\editor\filetree.lua
|
||||
["Refused a request to start a new debugging session as there is one in progress already."] = "Отказано в запросе на запуск новой отладочной сессии, поскольку одна сессия уже выполняется.", -- src\editor\debugger.lua
|
||||
["Regular &expression"] = "Регулярное выражение", -- src\editor\findreplace.lua
|
||||
["Regular expression"] = "Регулярное выражение", -- src\editor\toolbar.lua
|
||||
["Remote console"] = "Удаленная консоль", -- src\editor\shellbox.lua
|
||||
["Rename All Instances"] = "Переименовать все совпадения", -- src\editor\editor.lua
|
||||
["Replace A&ll"] = "Заменить все", -- src\editor\findreplace.lua
|
||||
["Replace All Selections"] = "Заменить все выделенные фрагменты", -- src\editor\editor.lua
|
||||
["Replace"] = "Заменить", -- src\editor\findreplace.lua
|
||||
["Replace all"] = "Заменить все", -- src\editor\toolbar.lua
|
||||
["Replace next instance"] = "Заменить следующее совпадение", -- src\editor\toolbar.lua
|
||||
["Replaced %d instance."] = {"Заменено %d совпадение.", "Заменено %d совпадения.", "Заменено %d совпадений."}, -- src\editor\findreplace.lua
|
||||
["Replaced an invalid UTF8 character with %s."] = "Некорректный символ UTF8 заменен на %s.", -- src\editor\commands.lua
|
||||
["Replaced"] = "Заменено", -- src\editor\findreplace.lua
|
||||
["Replacing"] = "Замена", -- src\editor\findreplace.lua
|
||||
["Reset to default layout"] = "Установить расположение окон по умолчанию", -- src\editor\menu_view.lua
|
||||
["Run as Scratchpad"] = "Запустить как черновик", -- src\editor\menu_project.lua
|
||||
["Run As Scratchpad"] = "Запустить как черновик", -- src\editor\menu_project.lua
|
||||
["Run To Cursor"] = "Выполнить до курсора", -- src\editor\menu_project.lua, src\editor\editor.lua
|
||||
["Run as Scratchpad"] = "Запустить как черновик", -- src\editor\toolbar.lua
|
||||
["Run to cursor"] = "Выполнить до курсора", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["S&top Debugging"] = "&Завершить отладку", -- src\editor\menu_project.lua
|
||||
["S&top Process"] = "&Завершить процесс", -- src\editor\menu_project.lua
|
||||
["Save &As..."] = "Сохранить &как...", -- src\editor\gui.lua, src\editor\menu_file.lua
|
||||
["Save A&ll"] = "Сохранить &все", -- src\editor\menu_file.lua
|
||||
["Save Changes?"] = "Сохранить изменения?", -- src\editor\commands.lua
|
||||
["Save all open documents"] = "Сохранить все открытые документы", -- src\editor\menu_file.lua
|
||||
["Save all open documents"] = "Сохранить все открытые документы", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Save file as"] = "Сохранить файл как", -- src\editor\commands.lua
|
||||
["Save file?"] = "Сохранить файл?", -- src\editor\commands.lua
|
||||
["Save the current document to a file with a new name"] = "Сохранить текущий документ в файл под новым именем", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Сохранить текущий документ", -- src\editor\menu_file.lua
|
||||
["Save the current document"] = "Сохранить текущий документ", -- src\editor\toolbar.lua, src\editor\menu_file.lua
|
||||
["Saved auto-recover at %s."] = "Сохранено авто-восст в %s.", -- src\editor\commands.lua
|
||||
["Scope"] = "Направление", -- src\editor\findreplace.lua
|
||||
["Scratchpad error"] = "Ошибка в черновике", -- src\editor\debugger.lua
|
||||
["Searching for"] = "Поиск", -- src\editor\findreplace.lua
|
||||
["Search direction"] = "Направление поиска", -- src\editor\toolbar.lua
|
||||
["Search in subdirectories"] = "Поиск во вложенных папках", -- src\editor\toolbar.lua
|
||||
["Searching for '%s'."] = "Искать '%s'.", -- src\editor\findreplace.lua
|
||||
["Sel: %d/%d"] = "Выд: %d/%d", -- src\editor\editor.lua
|
||||
["Select &All"] = "Выделить &все", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
|
||||
["Select And Find Next"] = "Выделить и найти далее", -- src\editor\menu_search.lua
|
||||
["Select And Find Previous"] = "Выделить и найти ранее", -- src\editor\menu_search.lua
|
||||
["Select all text in the editor"] = "Выделить весь текст в редакторе", -- src\editor\menu_edit.lua
|
||||
["Select and Find Next"] = "Выделить и найти далее", -- src\editor\menu_search.lua
|
||||
["Select and Find Previous"] = "Выделить и найти ранее", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its next occurrence"] = "Выделить слово под курсором и найти далее", -- src\editor\menu_search.lua
|
||||
["Select the word under cursor and find its previous occurrence"] = "Выделить слово под курсором и найти ранее", -- src\editor\menu_search.lua
|
||||
["Set As Start File"] = "Установить как файл запуска", -- src\editor\filetree.lua
|
||||
["Set From Current File"] = "Установить по текущему файлу", -- src\editor\menu_project.lua
|
||||
["Set project directory from current file"] = "Установить папку проекта по текущему файлу", -- src\editor\menu_project.lua
|
||||
["Set To Project Directory"] = "Установить папку проекта", -- src\editor\findreplace.lua
|
||||
["Set project directory from current file"] = "Установить папку проекта по текущему файлу", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Set search directory"] = "Установить папку поиска", -- src\editor\toolbar.lua
|
||||
["Set the interpreter to be used"] = "Установить используемый интерпретатор", -- src\editor\menu_project.lua
|
||||
["Set the project directory to be used"] = "Установить используемую папку проекта", -- src\editor\menu_project.lua, src\editor\filetree.lua
|
||||
["Settings: System"] = "Установки: Системы", -- src\editor\menu_edit.lua
|
||||
@@ -252,40 +261,50 @@ return {
|
||||
["Show Hidden Files"] = "Показать спрятанные файлы", -- src\editor\filetree.lua
|
||||
["Show Location"] = "Показать файл в папке", -- src\editor\gui.lua, src\editor\filetree.lua
|
||||
["Show all files"] = "Показать все файлы", -- src\editor\filetree.lua
|
||||
["Show context"] = "Показать контекст", -- src\editor\toolbar.lua
|
||||
["Show files previously hidden"] = "Показать ранее спрятанные файлы", -- src\editor\filetree.lua
|
||||
["Show multiple result windows"] = "Показать результаты поиска в разных окнах", -- src\editor\toolbar.lua
|
||||
["Show tooltip for current position; place cursor after opening bracket of function"] = "Показать подсказку в текущей позиции; переместите курсор в позицию после открывающей скобки функции", -- src\editor\menu_edit.lua
|
||||
["Show/Hide the status bar"] = "Показать/спрятать панель состояния", -- src\editor\menu_view.lua
|
||||
["Show/Hide the toolbar"] = "Показать/спрятать панель инструментов", -- src\editor\menu_view.lua
|
||||
["Sort By Name"] = "Сортировать по имени", -- src\editor\outline.lua
|
||||
["Sort selected lines"] = "Отсортировать выделенные строки", -- src\editor\menu_edit.lua
|
||||
["Source"] = "Исходный код", -- src\editor\menu_edit.lua
|
||||
["Stack"] = "Стек", -- src\editor\debugger.lua
|
||||
["Start &Debugging"] = "Начать &отладку", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Начать или продолжить отладку", -- src\editor\menu_project.lua
|
||||
["Start or continue debugging"] = "Начать или продолжить отладку", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step &Into"] = "&Войти", -- src\editor\menu_project.lua
|
||||
["Step &Over"] = "&Следующая строка", -- src\editor\menu_project.lua
|
||||
["Step O&ut"] = "В&ыйти", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Войти в функцию", -- src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Выйти из текущей функции", -- src\editor\menu_project.lua
|
||||
["Step over"] = "Перейти на следующую строку", -- src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Завершить отладку и продолжить текущий процесс", -- src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Завершить текущий процесс", -- src\editor\menu_project.lua
|
||||
["Step into"] = "Войти в функцию", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step out of the current function"] = "Выйти из текущей функции", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Step over"] = "Перейти на следующую строку", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop debugging and continue running the process"] = "Завершить отладку и продолжить текущий процесс", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Stop the currently running process"] = "Завершить текущий процесс", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Switch to or from full screen mode"] = "Переключить полноэкранный режим", -- src\editor\menu_view.lua
|
||||
["Symbol Index"] = "Индекс символов", -- src\editor\outline.lua
|
||||
["Text not found."] = "Текст не найден.", -- src\editor\findreplace.lua
|
||||
["The API file must be located in a subdirectory of the API directory."] = "Файл определений API должен быть расположен внутри папки API.", -- src\editor\autocomplete.lua
|
||||
["Toggle Bookmark"] = "Установить/Снять закладку", -- src\editor\menu_edit.lua
|
||||
["Toggle Break&point"] = "&Точка останова", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Установить/Снять закладку", -- src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Переключить точку останова", -- src\editor\menu_project.lua
|
||||
["Toggle bookmark"] = "Установить/Снять закладку", -- src\editor\toolbar.lua, src\editor\menu_edit.lua
|
||||
["Toggle breakpoint"] = "Переключить точку останова", -- src\editor\toolbar.lua, src\editor\menu_project.lua
|
||||
["Tr&ace"] = "Т&рассировка", -- src\editor\menu_project.lua
|
||||
["Trace execution showing each executed line"] = "Отслеживать выполнение, показывая каждую выполненную строку", -- src\editor\menu_project.lua
|
||||
["Unable to create directory '%s'."] = "Ошибка создания папки '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to create file '%s'."] = "Ошибка создания файла '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Ошибка удаления директории '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete directory '%s': %s"] = "Ошибка удаления папки '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to delete file '%s': %s"] = "Ошибка удаления файла '%s': %s", -- src\editor\filetree.lua
|
||||
["Unable to load file '%s'."] = "Ошибка загрузки файла '%s'.", -- src\editor\commands.lua
|
||||
["Unable to rename file '%s'."] = "Ошибка переименования файла '%s'.", -- src\editor\filetree.lua
|
||||
["Unable to save file '%s': %s"] = "Ошибка сохранения файла '%s': %s", -- src\editor\commands.lua
|
||||
["Unable to stop program (pid: %d), code %d."] = "Невозможно завершить программу (pid: %d), код %d.", -- src\editor\debugger.lua
|
||||
["Undo last edit"] = "Отменить последнее действие", -- src\editor\menu_edit.lua
|
||||
["Unmap Directory"] = "Убрать папку из списка", -- src\editor\filetree.lua
|
||||
["Unset '%s' As Start File"] = "Отменить '%s' как файл запуска", -- src\editor\filetree.lua
|
||||
["Updated %d file."] = {"Обновлен %d файл.", "Обновлено %d файла.", "Обновлено %d файлов."}, -- src\editor\findreplace.lua
|
||||
["Updating symbol index and settings..."] = "Обновляется индекс символов и установки...", -- src\editor\outline.lua
|
||||
["Use %s to close."] = "Используйте %s для закрытия.", -- src\editor\findreplace.lua
|
||||
["Use '%s' to see full description."] = "Используйте '%s' для полного описания.", -- src\editor\editor.lua
|
||||
["Use '%s' to show line endings and '%s' to convert them."] = "Используйте '%s' для отображения символов конца строки и '%s' для их преобразования.", -- src\editor\commands.lua
|
||||
["Use 'clear' to clear the shell output and the history."] = "Используйте команду 'clear' для очистки содержимого окна и истории.", -- src\editor\shellbox.lua
|
||||
@@ -293,11 +312,11 @@ return {
|
||||
["View the outline window"] = "Показать окно структуры", -- src\editor\menu_view.lua
|
||||
["View the output/console window"] = "Показать окно вывода/консоли", -- src\editor\menu_view.lua
|
||||
["View the project/filetree window"] = "Показать окно проекта/списка файлов", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Показать окно стека", -- src\editor\menu_view.lua
|
||||
["View the watch window"] = "Показать окно выражений", -- src\editor\menu_view.lua
|
||||
["View the stack window"] = "Показать окно стека", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["View the watch window"] = "Показать окно выражений", -- src\editor\toolbar.lua, src\editor\menu_view.lua
|
||||
["Watch"] = "Выражение", -- src\editor\debugger.lua
|
||||
["Welcome to the interactive Lua interpreter."] = "Добро пожаловать в интерактивный интерпретатор Lua.", -- src\editor\shellbox.lua
|
||||
["Wrap ar&ound"] = "Продолжить сначала", -- src\editor\findreplace.lua
|
||||
["Wrap around"] = "Продолжить сначала", -- src\editor\toolbar.lua
|
||||
["You must save the program first."] = "Вы должны сначала сохранить программу.", -- src\editor\commands.lua
|
||||
["Zoom In"] = "Приблизить", -- src\editor\menu_view.lua
|
||||
["Zoom Out"] = "Удалить", -- src\editor\menu_view.lua
|
||||
|
||||
@@ -16,8 +16,8 @@ luaspec.exts[#luaspec.exts+1] = "luaz"
|
||||
luaspec.keywords[1] = luaspec.keywords[1] .. ' foo'
|
||||
|
||||
-- to modify a key mapping; see the full list of IDs in src/editor/keymap.lua
|
||||
local G = ...
|
||||
keymap[G.ID_STARTDEBUG] = "Ctrl-Shift-D"
|
||||
-- starting from v0.95, ID.<menuid> can be used instead of G.ID_<menuid>
|
||||
keymap[ID.STARTDEBUG] = "Ctrl-Shift-D"
|
||||
|
||||
-- to change font size to 12
|
||||
editor.fontsize = 12 -- this is mapped to ide.config.editor.fontsize
|
||||
@@ -157,3 +157,8 @@ styles["keywords"..num] = {fg = {240, 0, 0}, b = true}
|
||||
-- enable `Opt+Shift+Left/Right` shortcut on OSX
|
||||
editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_LEFT, wxstc.wxSTC_SCMOD_ALT+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_WORDLEFTEXTEND, "Macintosh"}
|
||||
editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_RIGHT, wxstc.wxSTC_SCMOD_ALT+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_WORDRIGHTENDEXTEND, "Macintosh"}
|
||||
|
||||
-- enable Emacs bindings to use `Ctrl-A` and `Ctrl-E` to go to the line start/end
|
||||
editor.keymap[#editor.keymap+1] = {('A'):byte(), wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_HOME}
|
||||
editor.keymap[#editor.keymap+1] = {('E'):byte(), wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_LINEEND}
|
||||
keymap[ID.SELECTALL] = nil -- remove `Ctrl-A` shortcut from `SelectAll`
|
||||
|
||||
@@ -1,74 +1,73 @@
|
||||
-- Copy the content of this file to user.lua;
|
||||
-- see the [configuration](http://studio.zerobrane.com/doc-configuration.html) page for details.
|
||||
|
||||
local G = ...
|
||||
-- Alt-Shift-Cmd-X (Alt maps to Option, Ctrl maps to Command)
|
||||
-- The mapping is largely based on [Xcode Keyboard Shortcuts](http://developer.apple.com/library/mac/#documentation/IDEs/Conceptual/xcode_help-command_shortcuts/MenuCommands/MenuCommands014.html).
|
||||
local xcode = {
|
||||
-- File menu
|
||||
[G.ID_NEW] = "Ctrl-N",
|
||||
[G.ID_OPEN] = "Ctrl-O",
|
||||
[G.ID_CLOSE] = "Ctrl-W",
|
||||
[G.ID_SAVE] = "Ctrl-S",
|
||||
[G.ID_SAVEAS] = "Shift-Ctrl-S",
|
||||
[G.ID_SAVEALL] = "Alt-Ctrl-S",
|
||||
[G.ID_RECENTFILES] = "",
|
||||
[G.ID_EXIT] = "Ctrl-Q",
|
||||
[ID.NEW] = "Ctrl-N",
|
||||
[ID.OPEN] = "Ctrl-O",
|
||||
[ID.CLOSE] = "Ctrl-W",
|
||||
[ID.SAVE] = "Ctrl-S",
|
||||
[ID.SAVEAS] = "Shift-Ctrl-S",
|
||||
[ID.SAVEALL] = "Alt-Ctrl-S",
|
||||
[ID.RECENTFILES] = "",
|
||||
[ID.EXIT] = "Ctrl-Q",
|
||||
-- Edit menu
|
||||
[G.ID_CUT] = "Ctrl-X",
|
||||
[G.ID_COPY] = "Ctrl-C",
|
||||
[G.ID_PASTE] = "Ctrl-V",
|
||||
[G.ID_SELECTALL] = "Ctrl-A",
|
||||
[G.ID_UNDO] = "Ctrl-Z",
|
||||
[G.ID_REDO] = "Shift-Ctrl-Z",
|
||||
[G.ID_SHOWTOOLTIP] = "Ctrl-T",
|
||||
[G.ID_AUTOCOMPLETE] = "Ctrl-K",
|
||||
[G.ID_AUTOCOMPLETEENABLE] = "",
|
||||
[G.ID_COMMENT] = "Ctrl-U",
|
||||
[G.ID_FOLD] = "F12",
|
||||
[G.ID_CLEARDYNAMICWORDS] = "",
|
||||
[ID.CUT] = "Ctrl-X",
|
||||
[ID.COPY] = "Ctrl-C",
|
||||
[ID.PASTE] = "Ctrl-V",
|
||||
[ID.SELECTALL] = "Ctrl-A",
|
||||
[ID.UNDO] = "Ctrl-Z",
|
||||
[ID.REDO] = "Shift-Ctrl-Z",
|
||||
[ID.SHOWTOOLTIP] = "Ctrl-T",
|
||||
[ID.AUTOCOMPLETE] = "Ctrl-K",
|
||||
[ID.AUTOCOMPLETEENABLE] = "",
|
||||
[ID.COMMENT] = "Ctrl-U",
|
||||
[ID.FOLD] = "F12",
|
||||
[ID.CLEARDYNAMICWORDS] = "",
|
||||
-- Search menu
|
||||
[G.ID_FIND] = "Ctrl-F",
|
||||
[G.ID_FINDNEXT] = "Ctrl-G",
|
||||
[G.ID_FINDPREV] = "Shift-Ctrl-G",
|
||||
[G.ID_REPLACE] = "Alt-Ctrl-F",
|
||||
[G.ID_FINDINFILES] = "Shift-Ctrl-F",
|
||||
[G.ID_REPLACEINFILES] = "Alt-Shift-Ctrl-F",
|
||||
[G.ID_GOTOLINE] = "",
|
||||
[G.ID_SORT] = "",
|
||||
[ID.FIND] = "Ctrl-F",
|
||||
[ID.FINDNEXT] = "Ctrl-G",
|
||||
[ID.FINDPREV] = "Shift-Ctrl-G",
|
||||
[ID.REPLACE] = "Alt-Ctrl-F",
|
||||
[ID.FINDINFILES] = "Shift-Ctrl-F",
|
||||
[ID.REPLACEINFILES] = "Alt-Shift-Ctrl-F",
|
||||
[ID.SORT] = "",
|
||||
-- View menu
|
||||
[G.ID_VIEWFILETREE] = "Shift-Ctrl-P",
|
||||
[G.ID_VIEWOUTPUT] = "Shift-Ctrl-O",
|
||||
[G.ID_VIEWWATCHWINDOW] = "Shift-Ctrl-W",
|
||||
[G.ID_VIEWCALLSTACK] = "Shift-Ctrl-S",
|
||||
[G.ID_VIEWDEFAULTLAYOUT] = "",
|
||||
[G.ID_VIEWFULLSCREEN] = "Shift-Ctrl-A",
|
||||
[ID.VIEWFILETREE] = "Shift-Ctrl-P",
|
||||
[ID.VIEWOUTPUT] = "Shift-Ctrl-O",
|
||||
[ID.VIEWWATCHWINDOW] = "Shift-Ctrl-W",
|
||||
[ID.VIEWCALLSTACK] = "Shift-Ctrl-S",
|
||||
[ID.VIEWDEFAULTLAYOUT] = "",
|
||||
[ID.VIEWFULLSCREEN] = "Shift-Ctrl-A",
|
||||
-- Project menu
|
||||
[G.ID_RUN] = "Ctrl-R",
|
||||
[G.ID_RUNNOW] = "Shift-Ctrl-R",
|
||||
[G.ID_COMPILE] = "Ctrl-B",
|
||||
[G.ID_ANALYZE] = "Shift-Ctrl-B",
|
||||
[G.ID_STARTDEBUG] = "F5",
|
||||
[G.ID_ATTACHDEBUG] = "",
|
||||
[G.ID_STOPDEBUG] = "Ctrl-.",
|
||||
[G.ID_STEP] = "F7",
|
||||
[G.ID_STEPOVER] = "F6",
|
||||
[G.ID_STEPOUT] = "F8",
|
||||
[G.ID_TRACE] = "",
|
||||
[G.ID_BREAK] = "Ctrl-Y",
|
||||
[G.ID_TOGGLEBREAKPOINT] = "Ctrl-\\",
|
||||
[G.ID_CLEAROUTPUT] = "",
|
||||
[G.ID_INTERPRETER] = "",
|
||||
[G.ID_PROJECTDIR] = "",
|
||||
[ID.RUN] = "Ctrl-R",
|
||||
[ID.RUNNOW] = "Shift-Ctrl-R",
|
||||
[ID.COMPILE] = "Ctrl-B",
|
||||
[ID.ANALYZE] = "Shift-Ctrl-B",
|
||||
[ID.STARTDEBUG] = "F5",
|
||||
[ID.ATTACHDEBUG] = "",
|
||||
[ID.STOPDEBUG] = "Ctrl-.",
|
||||
[ID.STEP] = "F7",
|
||||
[ID.STEPOVER] = "F6",
|
||||
[ID.STEPOUT] = "F8",
|
||||
[ID.TRACE] = "",
|
||||
[ID.BREAK] = "Ctrl-Y",
|
||||
[ID.TOGGLEBREAKPOINT] = "Ctrl-\\",
|
||||
[ID.CLEAROUTPUT] = "",
|
||||
[ID.INTERPRETER] = "",
|
||||
[ID.PROJECTDIR] = "",
|
||||
-- Help menu
|
||||
[G.ID_ABOUT] = "F1",
|
||||
[ID.ABOUT] = "F1",
|
||||
-- Watch window menu items
|
||||
[G.ID_ADDWATCH] = "Ins",
|
||||
[G.ID_EDITWATCH] = "F2",
|
||||
[G.ID_DELETEWATCH] = "Del",
|
||||
[ID.ADDWATCH] = "Ins",
|
||||
[ID.EDITWATCH] = "F2",
|
||||
[ID.DELETEWATCH] = "Del",
|
||||
-- Editor popup menu items
|
||||
[G.ID_QUICKADDWATCH] = "",
|
||||
[G.ID_QUICKEVAL] = "",
|
||||
[ID.QUICKADDWATCH] = "",
|
||||
[ID.QUICKEVAL] = "",
|
||||
}
|
||||
|
||||
local G = ...
|
||||
for id, key in G.pairs(xcode) do keymap[id] = key end
|
||||
|
||||
@@ -11,16 +11,20 @@ return {
|
||||
busted = busted or ide.config.path.busted -- check if the path is configured
|
||||
if not busted then
|
||||
local sep = win and ';' or ':'
|
||||
local path = (os.getenv('PATH') or '')..sep
|
||||
local default =
|
||||
win and GenerateProgramFilesPath('LuaRocks\\systree\\bin', sep)..sep
|
||||
or ''
|
||||
local path = default
|
||||
..(os.getenv('PATH') or '')..sep
|
||||
..(os.getenv('HOME') and os.getenv('HOME') .. '/bin' or '')
|
||||
local paths = {}
|
||||
for p in path:gmatch("[^"..sep.."]+") do
|
||||
busted = busted or GetFullPathIfExists(p, win and 'busted.exe' or 'busted')
|
||||
busted = busted or GetFullPathIfExists(p, win and 'busted.bat' or 'busted')
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not busted then
|
||||
DisplayOutput("Can't find busted executable in any of the folders in PATH: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find busted executable in any of the folders in PATH: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -39,7 +43,7 @@ return {
|
||||
file = tmpfile:GetFullPath()
|
||||
local f = io.open(file, "w")
|
||||
if not f then
|
||||
DisplayOutput("Can't open temporary file '"..file.."' for writing\n")
|
||||
DisplayOutputLn("Can't open temporary file '"..file.."' for writing.")
|
||||
return
|
||||
end
|
||||
f:write(code)
|
||||
|
||||
@@ -26,15 +26,16 @@ return {
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not corona then
|
||||
DisplayOutput("Can't find corona executable in any of the folders in PATH: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find corona executable in any of the folders in PATH: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local file = GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua')
|
||||
if not file then
|
||||
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
|
||||
DisplayOutputLn(("Can't find 'main.lua' file in the current project folder: '%s'.")
|
||||
:format(self:fworkdir(wfilename)))
|
||||
return
|
||||
end
|
||||
|
||||
@@ -83,7 +84,7 @@ return {
|
||||
local debugopt = mac and "-debug 1 -project " or "-debug "
|
||||
local skin = cfg.skin and (" -skin "..ide.config.corona.skin) or ""
|
||||
local noconsole = (cfg.showconsole and ""
|
||||
or (win and "-no-console " or "-no-console YES "))
|
||||
or (mac and "-no-console YES " or "-no-console "))
|
||||
local cmd = ('"%s" %s%s"%s"%s')
|
||||
:format(corona, noconsole, rundebug and debugopt or "", file, skin)
|
||||
|
||||
|
||||
@@ -22,8 +22,8 @@ return {
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not gslshell then
|
||||
DisplayOutput("Can't find gsl-shell executable in any of the following folders: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find gsl-shell executable in any of the following folders: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -57,7 +57,7 @@ return {
|
||||
filepath = tmpfile:GetFullPath()
|
||||
local f = io.open(filepath, "w")
|
||||
if not f then
|
||||
DisplayOutput("Can't open temporary file '"..filepath.."' for writing\n")
|
||||
DisplayOutputLn("Can't open temporary file '"..filepath.."' for writing.")
|
||||
return
|
||||
end
|
||||
f:write(rundebug)
|
||||
|
||||
@@ -5,8 +5,8 @@ local win = ide.osname == "Windows"
|
||||
local mac = ide.osname == "Macintosh"
|
||||
|
||||
return {
|
||||
name = "Love2d",
|
||||
description = "Love2d game engine",
|
||||
name = "LÖVE",
|
||||
description = "LÖVE game engine",
|
||||
api = {"baselib", "love2d"},
|
||||
frun = function(self,wfilename,rundebug)
|
||||
love2d = love2d or ide.config.path.love2d -- check if the path is configured
|
||||
@@ -26,14 +26,15 @@ return {
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not love2d then
|
||||
DisplayOutput("Can't find love2d executable in any of the following folders: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find love2d executable in any of the following folders: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if not GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua') then
|
||||
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
|
||||
DisplayOutputLn(("Can't find 'main.lua' file in the current project folder: '%s'.")
|
||||
:format(self:fworkdir(wfilename)))
|
||||
return
|
||||
end
|
||||
|
||||
@@ -41,11 +42,17 @@ return {
|
||||
DebuggerAttachDefault({runstart = ide.config.debugger.runonstart == true})
|
||||
end
|
||||
|
||||
-- suppress hiding ConsoleWindowClass as this is used by Love console
|
||||
local uhw = ide.config.unhidewindow
|
||||
local cwc = uhw and uhw.ConsoleWindowClass
|
||||
if uhw then uhw.ConsoleWindowClass = 0 end
|
||||
|
||||
local params = ide.config.arg.any or ide.config.arg.love2d
|
||||
local cmd = ('"%s" "%s"%s%s'):format(love2d, self:fworkdir(wfilename),
|
||||
params and " "..params or "", rundebug and ' -debug' or '')
|
||||
-- CommandLineRun(cmd,wdir,tooutput,nohide,stringcallback,uid,endcallback)
|
||||
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true)
|
||||
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true,nil,nil,
|
||||
function() if uhw then uhw.ConsoleWindowClass = cwc end end)
|
||||
end,
|
||||
hasdebugger = true,
|
||||
fattachdebug = function(self) DebuggerAttachDefault() end,
|
||||
|
||||
@@ -30,7 +30,7 @@ return {
|
||||
filepath = tmpfile:GetFullPath()
|
||||
local f = io.open(filepath, "w")
|
||||
if not f then
|
||||
DisplayOutput("Can't open temporary file '"..filepath.."' for writing\n")
|
||||
DisplayOutputLn("Can't open temporary file '"..filepath.."' for writing.")
|
||||
return
|
||||
end
|
||||
f:write(rundebug)
|
||||
|
||||
@@ -1,19 +1,141 @@
|
||||
-- Copyright 2011-13 Paul Kulchenko, ZeroBrane LLC
|
||||
|
||||
--[[
|
||||
|
||||
Support for Hub added by Marmalade.
|
||||
|
||||
--]]
|
||||
|
||||
local quick
|
||||
local win = ide.osname == "Windows"
|
||||
local mac = ide.osname == "Macintosh"
|
||||
local exe = win and [[win32\s3e_simulator_debug.exe]] or [[loader/osx/s3e_simulator_debug]]
|
||||
local exe = win and [[win32\s3e_simulator_release.exe]] or [[loader/osx/s3e_simulator_release]]
|
||||
local exe_d = win and [[win32\s3e_simulator_debug.exe]] or [[loader/osx/s3e_simulator_debug]]
|
||||
local s3e = os.getenv("S3E_DIR")
|
||||
local prev_debug_loader
|
||||
|
||||
--[[
|
||||
Parse project file
|
||||
--]]
|
||||
function ProjectSettings(hub_project)
|
||||
local project_settings = {}
|
||||
local in_section = false
|
||||
for line in io.lines(hub_project) do
|
||||
-- Ignore comments and blank lines
|
||||
if not line:find('^%s*;') and not line:match('^%s*$') then
|
||||
section = line:match('^%s*%[([^%]]+)%]%s*$')
|
||||
if section then
|
||||
in_section = "GENERAL" == section:upper()
|
||||
elseif in_section then
|
||||
local key, value = line:match('^%s*(%w+)%s*=%s*(.-)%s*$')
|
||||
if tonumber(value) then
|
||||
project_settings[key] = tonumber(value)
|
||||
elseif value:upper() == "TRUE" then
|
||||
project_settings[key] = true
|
||||
elseif value:upper() == "FALSE" then
|
||||
project_settings[key] = false
|
||||
else
|
||||
project_settings[key] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return project_settings
|
||||
end
|
||||
|
||||
function GetFileName(filePath)
|
||||
if (not filePath) then return end
|
||||
local wxn = wx.wxFileName(filePath)
|
||||
return wxn:GetName()
|
||||
end
|
||||
|
||||
function GetQuickBuildFolder(mkb_quick)
|
||||
for line in io.lines(mkb_quick) do
|
||||
if line:find('^QUICK') then
|
||||
local dir = line:match('^QUICK;([^;]+);')
|
||||
return dir
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local project_settings = {}
|
||||
|
||||
function LauncherFromHubProject(projdir, project_name)
|
||||
|
||||
local sep = GetPathSeparator()
|
||||
|
||||
local mkb_quick = projdir..sep.."project_"..project_name..sep.."mkb-quick.txt"
|
||||
|
||||
if not mkb_quick or not wx.wxFileExists(mkb_quick) then
|
||||
DisplayOutputLn(("Warning: can't find '%s' file."):format(mkb_quick))
|
||||
return
|
||||
end
|
||||
|
||||
local build_folder = GetQuickBuildFolder(mkb_quick)
|
||||
|
||||
if not build_folder or not wx.wxDirExists(projdir..sep..build_folder) then
|
||||
DisplayOutputLn(("Warning: can't find '%s' Quick build folder."):format(build_folder))
|
||||
return
|
||||
end
|
||||
|
||||
local project_file = projdir..sep.."project_"..project_name..sep.."project.ini"
|
||||
|
||||
if not project_file or not wx.wxFileExists(project_file) then
|
||||
DisplayOutputLn(("Warning: can't find '%s' Hub project file."):format(project_file))
|
||||
else
|
||||
project_settings = ProjectSettings(project_file)
|
||||
end
|
||||
|
||||
if next(project_settings) == nil then
|
||||
DisplayOutputLn(("Warning: can't read settings from '%s' project file. Using defaults."):format(project_file))
|
||||
project_settings = {}
|
||||
end
|
||||
|
||||
-- Use simulator config
|
||||
local via = projdir..sep..build_folder..sep..project_name.."_"..(project_settings.isDebug and 'debug' or 'release')..".via"
|
||||
|
||||
if not via or not wx.wxFileExists(via) then
|
||||
DisplayOutputLn(("Warning: can't find '%s' via file."):format(via))
|
||||
via = projdir..sep..build_folder..sep.."web_"..(project_settings.isDebug and 'debug' or 'release')..".via"
|
||||
end
|
||||
|
||||
if not via or not wx.wxFileExists(via) then
|
||||
DisplayOutputLn(("Warning: can't find '%s' via file."):format(via))
|
||||
via = nil
|
||||
end
|
||||
|
||||
return via
|
||||
end
|
||||
|
||||
return {
|
||||
name = "Marmalade Quick",
|
||||
description = "Marmalade Quick mobile framework",
|
||||
api = {"baselib", "marmalade"},
|
||||
frun = function(self,wfilename,rundebug)
|
||||
quick = quick or ide.config.path.quick or (s3e and GetFullPathIfExists(s3e, exe))
|
||||
local projdir = self:fworkdir(wfilename)
|
||||
-- check for *.mkb file; it can be in the same or in the parent folder
|
||||
local mproj, mfile = MergeFullPath(projdir, "./")
|
||||
for _, file in ipairs(FileSysGetRecursive(mproj, false, "*.mkb")) do mfile = file end
|
||||
if not mfile then
|
||||
mproj, mfile = MergeFullPath(projdir, "../")
|
||||
for _, file in ipairs(FileSysGetRecursive(mproj, false, "*.mkb")) do mfile = file end
|
||||
end
|
||||
if not mfile then
|
||||
DisplayOutputLn(("Can't find '%s' project file."):format(mproj))
|
||||
return
|
||||
end
|
||||
|
||||
-- Check Marmalade project configuration
|
||||
local via = LauncherFromHubProject(mproj, GetFileName(mfile))
|
||||
|
||||
quick = prev_debug_loader == project_settings.isDebugLoader and quick or nil
|
||||
|
||||
quick = quick or ide.config.path.quick or (project_settings.isDebugLoader and (s3e and GetFullPathIfExists(s3e, exe_d)) or (s3e and GetFullPathIfExists(s3e, exe)))
|
||||
|
||||
prev_debug_loader = project_settings.isDebugLoader
|
||||
|
||||
if not quick then
|
||||
local sep = win and ';' or ':'
|
||||
local sep = wx.wxPATH_SEP
|
||||
local path =
|
||||
win and ([[C:\Marmalade]]..sep..[[D:\Marmalade]]..sep..
|
||||
GenerateProgramFilesPath('Marmalade', sep)..sep)
|
||||
@@ -47,38 +169,45 @@ return {
|
||||
|
||||
if not s3e then s3e = quick:gsub(exe, '') end
|
||||
|
||||
local projdir = self:fworkdir(wfilename)
|
||||
local file = GetFullPathIfExists(projdir, 'main.lua')
|
||||
if not file then
|
||||
DisplayOutputLn("Can't find 'main.lua' file in the current project folder.")
|
||||
local options
|
||||
local datadir
|
||||
|
||||
if via then
|
||||
options = ([[--via="%s"]]):format(via)
|
||||
datadir = FileRead(via):match('--data="([^"]+)"')
|
||||
else
|
||||
local mkb = FileRead(mfile)
|
||||
datadir = mkb:match("options%s*%{[^%}]*s3e%-data%-dir%s*=%s*(.-)%s*[\r\n%}]")
|
||||
datadir = datadir and datadir:gsub("^['\"]", ""):gsub("['\"][\r\n]*$", "")
|
||||
local icf1, icf2 = mkb:match("options%s*%{[^%}]*app%-icf%s*=%s*(.-)%s*[\r\n%}]")
|
||||
icf1 = icf1 and icf1:gsub("^['\"]", ""):gsub("['\"][\r\n]*$", "")
|
||||
if icf1 and icf1:find(",") then
|
||||
icf1, icf2 = icf1:match("(.+),(.*)")
|
||||
end
|
||||
|
||||
datadir = datadir and (wx.wxIsAbsolutePath(datadir) and datadir or MergeFullPath(mproj, datadir))
|
||||
icf1 = icf1 and (wx.wxIsAbsolutePath(icf1) and icf1 or MergeFullPath(mproj, icf1))
|
||||
icf2 = icf2 and (wx.wxIsAbsolutePath(icf2) and icf2 or MergeFullPath(mproj, icf2))
|
||||
|
||||
local quick_prebuilt = project_settings.isDebug and "quick_prebuilt_d.s86" or "quick_prebuilt.s86"
|
||||
|
||||
local dll = GetFullPathIfExists(s3e, "../quick/target/"..quick_prebuilt)
|
||||
or MergeFullPath(s3e, ("../quick/target/%s/"..quick_prebuilt):format(mac and 'osx' or 'win'))
|
||||
options = table.concat({
|
||||
([[--dll="%s"]]):format(dll),
|
||||
(datadir and ([[--data="%s"]]):format(datadir) or ''),
|
||||
-- Quick doesn't handle correctly spaces in quoted parameters on OSX,
|
||||
-- so replace those with escaped spaces; still quote on Windows
|
||||
(icf1 and ([[--app-icf1=%s]]):format(mac and icf1:gsub(" ", "\\ ") or '"'..icf1..'"') or ''),
|
||||
(icf2 and ([[--app-icf2=%s]]):format(mac and icf2:gsub(" ", "\\ ") or '"'..icf2..'"') or nil),
|
||||
}, " ")
|
||||
end
|
||||
|
||||
if not datadir then
|
||||
DisplayOutputLn("Failed to determine data dir")
|
||||
return
|
||||
end
|
||||
|
||||
-- check for *.mkb file; it can be in the same or in the parent folder
|
||||
local mproj, mfile = MergeFullPath(projdir, "./")
|
||||
for _, file in ipairs(FileSysGetRecursive(mproj, false, "*.mkb")) do mfile = file end
|
||||
if not mfile then
|
||||
mproj, mfile = MergeFullPath(projdir, "../")
|
||||
for _, file in ipairs(FileSysGetRecursive(mproj, false, "*.mkb")) do mfile = file end
|
||||
end
|
||||
if not mfile then
|
||||
DisplayOutputLn(("Can't find '%s' project file."):format(mproj))
|
||||
return
|
||||
end
|
||||
|
||||
local mkb = FileRead(mfile)
|
||||
local datadir = mkb:match("options%s*%{[^%}]*s3e%-data%-dir%s*=%s*(.-)%s*[\r\n%}]")
|
||||
datadir = datadir and datadir:gsub("^['\"]", ""):gsub("['\"][\r\n]*$", "")
|
||||
local icf1, icf2 = mkb:match("options%s*%{[^%}]*app%-icf%s*=%s*(.-)%s*[\r\n%}]")
|
||||
icf1 = icf1 and icf1:gsub("^['\"]", ""):gsub("['\"][\r\n]*$", "")
|
||||
if icf1 and icf1:find(",") then
|
||||
icf1, icf2 = icf1:match("(.+),(.*)")
|
||||
end
|
||||
|
||||
datadir = datadir and (wx.wxIsAbsolutePath(datadir) and datadir or MergeFullPath(mproj, datadir))
|
||||
icf1 = icf1 and (wx.wxIsAbsolutePath(icf1) and icf1 or MergeFullPath(mproj, icf1))
|
||||
icf2 = icf2 and (wx.wxIsAbsolutePath(icf2) and icf2 or MergeFullPath(mproj, icf2))
|
||||
|
||||
if rundebug then
|
||||
-- start running the application right away
|
||||
DebuggerAttachDefault({redirect = mac and "r" or "c", basedir = datadir,
|
||||
@@ -99,17 +228,6 @@ return {
|
||||
end
|
||||
end
|
||||
|
||||
local dll = GetFullPathIfExists(s3e, "../quick/target/quick_prebuilt_d.s86")
|
||||
or MergeFullPath(s3e, ("../quick/target/%s/quick_prebuilt_d.s86"):format(mac and 'osx' or 'win'))
|
||||
local options = table.concat({
|
||||
([[--dll="%s"]]):format(dll),
|
||||
(datadir and ([[--data="%s"]]):format(datadir) or ''),
|
||||
-- Quick doesn't handle correctly spaces in quoted parameters on OSX,
|
||||
-- so replace those with escaped spaces; still quote on Windows
|
||||
(icf1 and ([[--app-icf1=%s]]):format(mac and icf1:gsub(" ", "\\ ") or '"'..icf1..'"') or ''),
|
||||
(icf2 and ([[--app-icf2=%s]]):format(mac and icf2:gsub(" ", "\\ ") or '"'..icf2..'"') or nil),
|
||||
}, " ")
|
||||
|
||||
local cmd = ('"%s" %s'):format(quick, options)
|
||||
-- CommandLineRun(cmd,wdir,tooutput,nohide,stringcallback,uid,endcallback)
|
||||
return CommandLineRun(cmd,GetPathWithSep(projdir),true,true)
|
||||
|
||||
@@ -22,8 +22,8 @@ return {
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not moai then
|
||||
DisplayOutput("Can't find moai executable in any of the folders in PATH or MOAI_BIN: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find moai executable in any of the folders in PATH or MOAI_BIN: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -37,9 +37,9 @@ return {
|
||||
if file then break end
|
||||
end
|
||||
if not file then
|
||||
DisplayOutput("Can't find any of the specified entry points ("
|
||||
DisplayOutputLn("Can't find any of the specified entry points ("
|
||||
..table.concat(epoints, ", ")
|
||||
..") in the current project; continuing with the current file...\n")
|
||||
..") in the current project; continuing with the current file...")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -58,7 +58,7 @@ return {
|
||||
file = tmpfile:GetFullPath()
|
||||
local f = io.open(file, "w")
|
||||
if not f then
|
||||
DisplayOutput("Can't open temporary file '"..file.."' for writing\n")
|
||||
DisplayOutputLn("Can't open temporary file '"..file.."' for writing.")
|
||||
return
|
||||
end
|
||||
f:write(code)
|
||||
|
||||
@@ -57,17 +57,27 @@ local function match_comment(s, pos)
|
||||
return '--' .. part, pos
|
||||
end
|
||||
|
||||
-- note: matches invalid numbers too
|
||||
-- note: matches invalid numbers too (for example, 0x)
|
||||
local function match_numberlike(s, pos)
|
||||
local tok = s:match('^0[xX][0-9A-Fa-f]*', pos)
|
||||
if tok then return tok end
|
||||
local tok = s:match('^[0-9%.]+', pos)
|
||||
if tok then
|
||||
local tok2 = s:match('^[eE][+-]?[0-9]*', pos + #tok)
|
||||
if tok2 then tok = tok .. tok2 end
|
||||
return tok
|
||||
local hex = s:match('^0[xX]', pos)
|
||||
if hex then pos = pos + #hex end
|
||||
|
||||
local longint = (hex and '^%x+' or '^%d+') .. '[uU]?[lL][lL]'
|
||||
local mantissa1 = hex and '^%x+%.?%x*' or '^%d+%.?%d*'
|
||||
local mantissa2 = hex and '^%.%x+' or '^%.%d+'
|
||||
local exponent = hex and '^[pP][+%-]?%x*' or '^[eE][+%-]?%d*'
|
||||
local imaginary = '^[iI]'
|
||||
local tok = s:match(longint, pos)
|
||||
if not tok then
|
||||
tok = s:match(mantissa1, pos) or s:match(mantissa2, pos)
|
||||
if tok then
|
||||
local tok2 = s:match(exponent, pos + #tok)
|
||||
if tok2 then tok = tok..tok2 end
|
||||
tok2 = s:match(imaginary, pos + #tok)
|
||||
if tok2 then tok = tok..tok2 end
|
||||
end
|
||||
end
|
||||
return nil
|
||||
return tok and (hex or '') .. tok or hex
|
||||
end
|
||||
|
||||
local function newset(s)
|
||||
@@ -105,7 +115,7 @@ function M.lex(code, f, pos)
|
||||
local tok = code:match('^#![^\n]*\n', pos) -- shebang
|
||||
if tok then f('Shebang', tok, 1) pos = pos + #tok end
|
||||
while pos <= #code do
|
||||
local p2, n2, n1 = code:match('^%s*()((%S)%S?)', pos)
|
||||
local p2, n2, n1, n3 = code:match('^%s*()((%S)(%S?))', pos)
|
||||
if not p2 then assert(code:sub(pos):match('^%s*$')); break end
|
||||
pos = p2
|
||||
|
||||
@@ -141,7 +151,7 @@ function M.lex(code, f, pos)
|
||||
f('Unknown', code:sub(pos), pos) -- unterminated string
|
||||
pos = #code + 1
|
||||
end
|
||||
elseif dig[n1] then
|
||||
elseif dig[n1] or (n1 == '.' and dig[n3]) then
|
||||
local tok = match_numberlike(code, pos)
|
||||
assert(tok)
|
||||
f('Number', tok, pos)
|
||||
@@ -193,7 +203,7 @@ function M.lexc(code, f, pos)
|
||||
M.lex(code, function(tag, name, pos)
|
||||
yield {tag=tag, name, lineinfo=pos}
|
||||
end, pos)
|
||||
yield {tag='Eof'}
|
||||
yield {tag='Eof', lineinfo = #code+1}
|
||||
end)
|
||||
return setmetatable({f=func}, Stream)
|
||||
end
|
||||
|
||||
@@ -9,10 +9,6 @@ local PARSE = {}
|
||||
local unpack = table.unpack or unpack
|
||||
local LEX = require 'lua_lexer_loose'
|
||||
|
||||
local function warn(message, position)
|
||||
io.stderr:write('WARNING: ', tostring(position), ': ', message, '\n')
|
||||
end
|
||||
|
||||
--[[
|
||||
Loose parser.
|
||||
|
||||
@@ -47,11 +43,7 @@ function PARSE.parse_scope(lx, f, level)
|
||||
end
|
||||
local function scope_end(opt, lineinfo)
|
||||
local scope = #scopes
|
||||
if scope <= 1 then
|
||||
warn("'end' without opening block", lineinfo)
|
||||
else
|
||||
table.remove(scopes)
|
||||
end
|
||||
if scope > 1 then table.remove(scopes) end
|
||||
local inside_local = false
|
||||
for scope = scope-1, 1, -1 do
|
||||
if scopes[scope].inside_local then inside_local = true; break end
|
||||
@@ -181,21 +173,40 @@ function PARSE.parse_scope(lx, f, level)
|
||||
scopes[#scopes].inside_table = newval
|
||||
end
|
||||
elseif c.tag == 'Id' then
|
||||
local scope = #scopes
|
||||
local inside_local = scopes[scope].inside_local ~= nil
|
||||
local inside_table = scopes[scope].inside_table
|
||||
local cnext = lx:peek()
|
||||
if cnext.tag == 'Keyword' and (cnext[1] == '(' or cnext[1] == '{')
|
||||
or cnext.tag == 'String' then
|
||||
f('FunctionCall', c[1], c.lineinfo, scopes[#scopes].inside_local ~= nil)
|
||||
f('FunctionCall', c[1], c.lineinfo, inside_local)
|
||||
end
|
||||
local scope = #scopes
|
||||
local inside_local = scopes[scope].inside_local ~= nil
|
||||
if (scopes[scope].inside_table or cprev[1] == ',')
|
||||
and cnext.tag == 'Keyword' and cnext[1] == '=' then
|
||||
-- table field
|
||||
f('String', c[1], c.lineinfo, inside_local)
|
||||
-- either this is inside a table or it continues from a comma,
|
||||
-- which may be a field assignment, so assume it's in a table
|
||||
if (inside_table or cprev[1] == ',') and cnext.tag == 'Keyword' and cnext[1] == '=' then
|
||||
-- table field; table fields are tricky to handle during incremental
|
||||
-- processing as "a = 1" may be either an assignment (in which case
|
||||
-- 'a' is Id) or a field initialization (in which case it's a String).
|
||||
-- Since it's not possible to decide between two cases in isolation,
|
||||
-- this is not a good place to insert a break; instead, the break is
|
||||
-- inserted at the location of the previous keyword, which allows
|
||||
-- to properly handle those cases. The desired location of
|
||||
-- the restart point is returned as the `nobreak` value.
|
||||
f('String', c[1], c.lineinfo,
|
||||
inside_local or cprev and cprev.tag == 'Keyword' and cprev.lineinfo)
|
||||
elseif cprev.tag == 'Keyword' and (cprev[1] == ':' or cprev[1] == '.') then
|
||||
f('String', c[1], c.lineinfo, true)
|
||||
else
|
||||
f('Id', c[1], c.lineinfo, inside_local)
|
||||
f('Id', c[1], c.lineinfo, true)
|
||||
-- this looks like the left side of (multi-variable) assignment
|
||||
-- unless it's a part of `= var, field = value`, so skip if inside a table
|
||||
if not inside_table and not (cprev and cprev.tag == 'Keyword' and cprev[1] == '=') then
|
||||
while lx:peek().tag == 'Keyword' and lx:peek()[1] == ',' do
|
||||
local c = lx:next(); if lx:peek().tag ~= 'Id' then break end
|
||||
c = lx:next()
|
||||
f('Id', c[1], c.lineinfo, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -249,11 +260,7 @@ function PARSE.parse_scope_resolve(lx, f, vars)
|
||||
vars = newscope(vars, name, lineinfo)
|
||||
elseif op == 'EndScope' then
|
||||
local mt = getmetatable(vars)
|
||||
if mt == nil then
|
||||
warn("'end' without opening block.", lineinfo)
|
||||
else
|
||||
vars = mt.__index
|
||||
end
|
||||
if mt ~= nil then vars = mt.__index end
|
||||
elseif op == 'Id'
|
||||
or op == 'String' or op == 'FunctionCall' or op == 'Function' then
|
||||
-- Just make callback
|
||||
|
||||
@@ -515,7 +515,7 @@ function M.require_inspect(name, report, spath)
|
||||
vinfo = T.error'module not found' --IMPROVE: include search paths?
|
||||
end
|
||||
M.package_loaded[name] = {vinfo, mast}
|
||||
return vinfo
|
||||
return vinfo, mast
|
||||
end
|
||||
|
||||
|
||||
@@ -703,12 +703,31 @@ function M.infer_values(top_ast, tokenlist, src, report)
|
||||
if #iter_ast == 1 and iter_ast[1].tag == 'Call' and iter_ast[1][1].value == ipairs then
|
||||
for i, var_ast in ipairs(varlist_ast) do
|
||||
if i == 1 then set_value(var_ast, T.number)
|
||||
elseif i == 2 then set_value(var_ast, T.universal)
|
||||
-- handle the type of the value as the type of the first element
|
||||
-- in the table that is a parameter for ipairs
|
||||
elseif i == 2 then
|
||||
local t_ast = iter_ast[1][2]
|
||||
local value = T.universal
|
||||
if (known(t_ast.value) or T.istabletype[t_ast.value]) then
|
||||
local ok; ok, value = pzcall(tindex, {t_ast, {tag='Number', 1}}, t_ast.value, 1)
|
||||
if not ok then value = T.error(t_ast.value) end
|
||||
end
|
||||
set_value(var_ast, value)
|
||||
else set_value(var_ast, nil) end
|
||||
end
|
||||
elseif #iter_ast == 1 and iter_ast[1].tag == 'Call' and iter_ast[1][1].value == pairs then
|
||||
local t_ast = iter_ast[1][2]
|
||||
local value = T.universal
|
||||
local key
|
||||
if t_ast.value and (known(t_ast.value) or T.istabletype[t_ast.value]) then
|
||||
key = next(t_ast.value)
|
||||
local ok; ok, value = pzcall(tindex, {t_ast, {tag='String', key}}, t_ast.value, key)
|
||||
if not ok then value = T.error(t_ast.value) end
|
||||
end
|
||||
|
||||
for i, var_ast in ipairs(varlist_ast) do
|
||||
if i <= 2 then set_value(var_ast, T.number)
|
||||
if i == 1 then set_value(var_ast, type(key))
|
||||
elseif i == 2 then set_value(var_ast, value)
|
||||
else set_value(var_ast, nil) end
|
||||
end
|
||||
else -- general case, unknown iterator
|
||||
@@ -771,11 +790,12 @@ function M.infer_values(top_ast, tokenlist, src, report)
|
||||
-- Any call to require is handled specially (source analysis).
|
||||
if func == require and type(argvalues[1]) == 'string' then
|
||||
local spath = tostring(ast.lineinfo.first):gsub('<C|','<'):match('<([^|]+)') -- a HACK? relies on AST lineinfo
|
||||
local val = M.require_inspect(argvalues[1], report, spath:gsub('[^\\/]+$', ''))
|
||||
local val, mast = M.require_inspect(argvalues[1], report, spath:gsub('[^\\/]+$', ''))
|
||||
if known(val) and val ~= nil then
|
||||
ast.value = val
|
||||
found = true
|
||||
end -- note: on nil value, assumes analysis failed (not found). This is a heuristic only.
|
||||
if mast and mast.valueglobals then ast.valueglobals = mast.valueglobals end
|
||||
end
|
||||
-- Attempt call if safe.
|
||||
if not found and (LS.safe_function[func] or func == pcall and LS.safe_function[argvalues[1]]) then
|
||||
@@ -820,8 +840,7 @@ function M.infer_values(top_ast, tokenlist, src, report)
|
||||
local x
|
||||
local val = function() x=nil end
|
||||
local fpos = LA.ast_pos_range(ast, tokenlist)
|
||||
local source = tostring(ast.lineinfo.first):gsub('<C|','<'):match('<([^|]+)') -- a HACK? relies on AST lineinfo
|
||||
local linenum = LA.pos_to_linecol(fpos, src)
|
||||
local source, linenum = tostring(ast.lineinfo.first):gsub('<C|','<'):match('<([^|]+)|L(%d+)') -- a HACK? relies on AST lineinfo
|
||||
local retvals
|
||||
if ENABLE_RETURN_ANALYSIS then
|
||||
retvals = get_func_return_values(ast) --Q:move outside of containing conditional?
|
||||
@@ -1071,10 +1090,10 @@ function M.uninspect(top_ast)
|
||||
ast.note = nil
|
||||
|
||||
ast.nocollect = nil
|
||||
end)
|
||||
|
||||
-- undo infer_values
|
||||
top_ast.valueglobals = nil
|
||||
-- undo infer_values
|
||||
ast.valueglobals = nil
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -1125,6 +1144,10 @@ function M.inspect(top_ast, tokenlist, src, report)
|
||||
end
|
||||
|
||||
LA.walk(top_ast, function(ast)
|
||||
if top_ast ~= ast and ast.valueglobals then
|
||||
for k in pairs(ast.valueglobals) do globals[k] = {set = ast} end
|
||||
ast.valueglobals = nil
|
||||
end
|
||||
if ast.tag == 'Id' or ast.isfield then
|
||||
local vname = ast[1]
|
||||
--TODO: rename definedglobal to definedfield for clarity
|
||||
|
||||
@@ -202,12 +202,15 @@ lexer.patterns = {
|
||||
--final_short_comment = "^%-%-([^\n]*)()$",
|
||||
long_comment = "^%-%-%[(=*)%[\n?(.-)%]%1%]()",
|
||||
long_string = "^%[(=*)%[\n?(.-)%]%1%]()",
|
||||
number_longint = "^%d+[uU]?[lL][lL]()",
|
||||
number_longint_hex = "^%x+[uU]?[lL][lL]()",
|
||||
number_mantissa = { "^%d+%.?%d*()", "^%d*%.%d+()" },
|
||||
number_mantissa_hex = { "^%x+%.?%x*()", "^%x*%.%x+()" }, --Lua5.1 and Lua5.2
|
||||
number_exponant = "^[eE][%+%-]?%d+()",
|
||||
number_exponant_hex = "^[pP][%+%-]?%d+()", --Lua5.2
|
||||
number_exponent = "^[eE][%+%-]?%d+()",
|
||||
number_exponent_hex = "^[pP][%+%-]?%d+()", --Lua5.2
|
||||
number_hex = "^0[xX]()",
|
||||
word = "^([%a_][%w_]*)()"
|
||||
number_imaginary = "^[iI]()",
|
||||
word = "^([%a_][%w_]*)()",
|
||||
}
|
||||
|
||||
----------------------------------------------------------------------
|
||||
@@ -411,28 +414,31 @@ end
|
||||
-- Extract Number.
|
||||
----------------------------------------------------------------------
|
||||
function lexer :extract_number()
|
||||
local j = self.src:match(self.patterns.number_hex, self.i)
|
||||
if j then
|
||||
j = self.src:match (self.patterns.number_mantissa_hex[1], j) or
|
||||
self.src:match (self.patterns.number_mantissa_hex[2], j)
|
||||
if j then
|
||||
j = self.src:match (self.patterns.number_exponant_hex, j) or j
|
||||
end
|
||||
local patt = self.patterns
|
||||
local s = self.src
|
||||
local j = s:match(patt.number_hex, self.i)
|
||||
local hex = j ~= nil
|
||||
local longint = hex and patt.number_longint_hex or patt.number_longint
|
||||
local mantissa1 = hex and patt.number_mantissa_hex[1] or patt.number_mantissa[1]
|
||||
local mantissa2 = hex and patt.number_mantissa_hex[2] or patt.number_mantissa[2]
|
||||
local exponent = hex and patt.number_exponent_hex or patt.number_exponent
|
||||
if not hex then j = self.i end
|
||||
|
||||
local t = s:match(longint, j)
|
||||
if t then
|
||||
j = t
|
||||
else
|
||||
j = self.src:match (self.patterns.number_mantissa[1], self.i) or
|
||||
self.src:match (self.patterns.number_mantissa[2], self.i)
|
||||
if j then
|
||||
j = self.src:match (self.patterns.number_exponant, j) or j
|
||||
end
|
||||
j = s:match(mantissa1, j) or s:match(mantissa2, j)
|
||||
if not j then return end
|
||||
j = s:match(exponent, j) or j
|
||||
j = s:match(patt.number_imaginary, j) or j
|
||||
end
|
||||
if not j then return end
|
||||
-- Number found, interpret with tonumber() and return it
|
||||
|
||||
local str = self.src:sub (self.i, j-1)
|
||||
-- :TODO: tonumber on Lua5.2 floating hex may or may not work on Lua5.1
|
||||
local n = tonumber (str)
|
||||
if not n then error(str.." is not a valid number according to tonumber()") end
|
||||
self.i = j
|
||||
return 'Number', n
|
||||
-- Number found, interpret with tonumber() and return it
|
||||
-- return str as the fallback when processing formats not supported by the current interpreter
|
||||
return 'Number', (tonumber (str) or str)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
@@ -19,7 +19,7 @@ end)("os")
|
||||
|
||||
local mobdebug = {
|
||||
_NAME = "mobdebug",
|
||||
_VERSION = 0.613,
|
||||
_VERSION = 0.628,
|
||||
_COPYRIGHT = "Paul Kulchenko",
|
||||
_DESCRIPTION = "Mobile Remote Debugger for the Lua programming language",
|
||||
port = os and os.getenv and tonumber((os.getenv("MOBDEBUG_PORT"))) or 8172,
|
||||
@@ -37,6 +37,7 @@ local setmetatable = setmetatable
|
||||
local tonumber = tonumber
|
||||
local unpack = table.unpack or unpack
|
||||
local rawget = rawget
|
||||
local gsub, sub, find = string.gsub, string.sub, string.find
|
||||
|
||||
-- if strict.lua is used, then need to avoid referencing some global
|
||||
-- variables, as they can be undefined;
|
||||
@@ -61,6 +62,7 @@ local corocreate = ngx and coroutine._create or coroutine.create
|
||||
local cororesume = ngx and coroutine._resume or coroutine.resume
|
||||
local coroyield = ngx and coroutine._yield or coroutine.yield
|
||||
local corostatus = ngx and coroutine._status or coroutine.status
|
||||
local corowrap = coroutine.wrap
|
||||
|
||||
if not setfenv then -- Lua 5.2+
|
||||
-- based on http://lua-users.org/lists/lua-l/2010-06/msg00314.html
|
||||
@@ -124,34 +126,36 @@ local debugee = function ()
|
||||
for _ = 1, 10 do a = a + 1 end
|
||||
error(deferror)
|
||||
end
|
||||
local function q(s) return s:gsub('([%(%)%.%%%+%-%*%?%[%^%$%]])','%%%1') end
|
||||
local function q(s) return string.gsub(s, '([%(%)%.%%%+%-%*%?%[%^%$%]])','%%%1') end
|
||||
|
||||
local serpent = (function() ---- include Serpent module for serialization
|
||||
local n, v = "serpent", 0.28 -- (C) 2012-15 Paul Kulchenko; MIT License
|
||||
local n, v = "serpent", 0.285 -- (C) 2012-15 Paul Kulchenko; MIT License
|
||||
local c, d = "Paul Kulchenko", "Lua serializer and pretty printer"
|
||||
local snum = {[tostring(1/0)]='1/0 --[[math.huge]]',[tostring(-1/0)]='-1/0 --[[-math.huge]]',[tostring(0/0)]='0/0'}
|
||||
local badtype = {thread = true, userdata = true, cdata = true}
|
||||
local getmetatable = debug and debug.getmetatable or getmetatable
|
||||
local keyword, globals, G = {}, {}, (_G or _ENV)
|
||||
for _,k in ipairs({'and', 'break', 'do', 'else', 'elseif', 'end', 'false',
|
||||
'for', 'function', 'goto', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat',
|
||||
'return', 'then', 'true', 'until', 'while'}) do keyword[k] = true end
|
||||
for k,v in pairs(G) do globals[v] = k end -- build func to name mapping
|
||||
for _,g in ipairs({'coroutine', 'debug', 'io', 'math', 'string', 'table', 'os'}) do
|
||||
for k,v in pairs(G[g] or {}) do globals[v] = g..'.'..k end end
|
||||
for k,v in pairs(type(G[g]) == 'table' and G[g] or {}) do globals[v] = g..'.'..k end end
|
||||
|
||||
local function s(t, opts)
|
||||
local name, indent, fatal, maxnum = opts.name, opts.indent, opts.fatal, opts.maxnum
|
||||
local sparse, custom, huge = opts.sparse, opts.custom, not opts.nohuge
|
||||
local space, maxl = (opts.compact and '' or ' '), (opts.maxlevel or math.huge)
|
||||
local iname, comm = '_'..(name or ''), opts.comment and (tonumber(opts.comment) or math.huge)
|
||||
local numformat = opts.numformat or "%.17g"
|
||||
local seen, sref, syms, symn = {}, {'local '..iname..'={}'}, {}, 0
|
||||
local function gensym(val) return '_'..(tostring(tostring(val)):gsub("[^%w]",""):gsub("(%d%w+)",
|
||||
-- tostring(val) is needed because __tostring may return a non-string value
|
||||
function(s) if not syms[s] then symn = symn+1; syms[s] = symn end return tostring(syms[s]) end)) end
|
||||
local function safestr(s) return type(s) == "number" and tostring(huge and snum[tostring(s)] or s)
|
||||
local function safestr(s) return type(s) == "number" and tostring(huge and snum[tostring(s)] or numformat:format(s))
|
||||
or type(s) ~= "string" and tostring(s) -- escape NEWLINE/010 and EOF/026
|
||||
or ("%q"):format(s):gsub("\010","n"):gsub("\026","\\026") end
|
||||
local function comment(s,l) return comm and (l or 0) < comm and ' --[['..tostring(s)..']]' or '' end
|
||||
local function comment(s,l) return comm and (l or 0) < comm and ' --[['..select(2, pcall(tostring, s))..']]' or '' end
|
||||
local function globerr(s,l) return globals[s] and globals[s]..comment(s,l) or not fatal
|
||||
and safestr(select(2, pcall(tostring, s))) or error("Can't serialize "..tostring(s)) end
|
||||
local function safename(path, name) -- generates foo.bar, foo[3], or foo['b a r']
|
||||
@@ -175,7 +179,9 @@ local function s(t, opts)
|
||||
if seen[t] then -- already seen this element
|
||||
sref[#sref+1] = spath..space..'='..space..seen[t]
|
||||
return tag..'nil'..comment('ref', level) end
|
||||
if type(mt) == 'table' and (mt.__serialize or mt.__tostring) then -- knows how to serialize itself
|
||||
-- protect from those cases where __tostring may fail
|
||||
if type(mt) == 'table' and pcall(function() return mt.__tostring and mt.__tostring(t) end)
|
||||
and (mt.__serialize or mt.__tostring) then -- knows how to serialize itself
|
||||
seen[t] = insref or spath
|
||||
if mt.__serialize then t = mt.__serialize(t) else t = tostring(t) end
|
||||
ttype = type(t) end -- new value falls through to be serialized
|
||||
@@ -195,6 +201,7 @@ local function s(t, opts)
|
||||
local value, ktype, plainindex = t[key], type(key), n <= maxn and not sparse
|
||||
if opts.valignore and opts.valignore[value] -- skip ignored values; do nothing
|
||||
or opts.keyallow and not opts.keyallow[key]
|
||||
or opts.keyignore and opts.keyignore[key]
|
||||
or opts.valtypeignore and opts.valtypeignore[type(value)] -- skipping ignored value types
|
||||
or sparse and value == nil then -- skipping nils; do nothing
|
||||
elseif ktype == 'table' or ktype == 'function' or badtype[ktype] then
|
||||
@@ -274,12 +281,22 @@ local function stack(start)
|
||||
local func = debug.getinfo(f, "f").func
|
||||
local i = 1
|
||||
local locals = {}
|
||||
-- get locals
|
||||
while true do
|
||||
local name, value = debug.getlocal(f, i)
|
||||
if not name then break end
|
||||
if string.sub(name, 1, 1) ~= '(' then locals[name] = {value, tostring(value)} end
|
||||
i = i + 1
|
||||
end
|
||||
-- get varargs (these use negative indices)
|
||||
i = 1
|
||||
while true do
|
||||
local name, value = debug.getlocal(f, -i)
|
||||
if not name then break end
|
||||
locals[name:gsub("%)$"," "..i..")")] = {value, tostring(value)}
|
||||
i = i + 1
|
||||
end
|
||||
-- get upvalues
|
||||
i = 1
|
||||
local ups = {}
|
||||
while func and true do -- check for func as it may be nil for tail calls
|
||||
@@ -563,26 +580,26 @@ local function debug_hook(event, line)
|
||||
-- Unfortunately, there is no reliable/quick way to figure out
|
||||
-- what is the filename and what is the source code.
|
||||
-- The following will work if the supplied filename uses Unix path.
|
||||
if file:find("^@") then
|
||||
file = file:gsub("^@", ""):gsub("\\", "/")
|
||||
if find(file, "^@") then
|
||||
file = gsub(gsub(file, "^@", ""), "\\", "/")
|
||||
-- need this conversion to be applied to relative and absolute
|
||||
-- file names as you may write "require 'Foo'" to
|
||||
-- load "foo.lua" (on a case insensitive file system) and breakpoints
|
||||
-- set on foo.lua will not work if not converted to the same case.
|
||||
if iscasepreserving then file = string.lower(file) end
|
||||
if file:find("%./") == 1 then file = file:sub(3)
|
||||
else file = file:gsub("^"..q(basedir), "") end
|
||||
if find(file, "%./") == 1 then file = sub(file, 3)
|
||||
else file = gsub(file, "^"..q(basedir), "") end
|
||||
-- some file systems allow newlines in file names; remove these.
|
||||
file = file:gsub("\n", ' ')
|
||||
file = gsub(file, "\n", ' ')
|
||||
else
|
||||
-- this is either a file name coming from loadstring("chunk", "file"),
|
||||
-- or the actual source code that needs to be serialized (as it may
|
||||
-- include newlines); assume it's a file name if it's all on one line.
|
||||
if file:find("[\r\n]") then
|
||||
if find(file, "[\r\n]") then
|
||||
file = mobdebug.line(file)
|
||||
else
|
||||
if iscasepreserving then file = string.lower(file) end
|
||||
file = file:gsub("\\", "/"):gsub(file:find("^%./") and "^%./" or "^"..q(basedir), "")
|
||||
file = gsub(gsub(file, "\\", "/"), find(file, "^%./") and "^%./" or "^"..q(basedir), "")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -638,7 +655,7 @@ local function debug_hook(event, line)
|
||||
-- need to recheck once more as resume after 'stack' command may
|
||||
-- return something else (for example, 'exit'), which needs to be handled
|
||||
if status and res and res ~= 'stack' then
|
||||
if not abort and res == "exit" then os.exit(1, true); return end
|
||||
if not abort and res == "exit" then mobdebug.onexit(1, true); return end
|
||||
if not abort and res == "done" then mobdebug.done(); return end
|
||||
abort = res
|
||||
-- only abort if safe; if not, there is another (earlier) check inside
|
||||
@@ -906,7 +923,6 @@ local function debugger_loop(sev, svars, sfile, sline)
|
||||
elseif command == "SUSPEND" then
|
||||
-- do nothing; it already fulfilled its role
|
||||
elseif command == "DONE" then
|
||||
server:send("200 OK\n")
|
||||
coroyield("done")
|
||||
return -- done with all the debugging
|
||||
elseif command == "STACK" then
|
||||
@@ -935,7 +951,7 @@ local function debugger_loop(sev, svars, sfile, sline)
|
||||
if stream and mode and stream == "stdout" then
|
||||
-- assign "print" in the global environment
|
||||
local default = mode == 'd'
|
||||
genv.print = default and iobase.print or coroutine.wrap(function()
|
||||
genv.print = default and iobase.print or corowrap(function()
|
||||
-- wrapping into coroutine.wrap protects this function from
|
||||
-- being stepped through in the debugger.
|
||||
-- don't use vararg (...) as it adds a reference for its values,
|
||||
@@ -1071,7 +1087,7 @@ local function controller(controller_host, controller_port, scratchpad)
|
||||
else
|
||||
if status then -- normal execution is done
|
||||
break
|
||||
elseif err and not tostring(err):find(deferror) then
|
||||
elseif err and not string.find(tostring(err), deferror) then
|
||||
-- report the error back
|
||||
-- err is not necessarily a string, so convert to string to report
|
||||
report(debug.traceback(coro_debugee), tostring(err))
|
||||
@@ -1164,8 +1180,7 @@ local function handle(params, client, options)
|
||||
local breakpoint = client:receive()
|
||||
if not breakpoint then
|
||||
print("Program finished")
|
||||
os.exit(0, true)
|
||||
return -- use return here for those cases where os.exit() is not wanted
|
||||
return
|
||||
end
|
||||
local _, _, status = string.find(breakpoint, "^(%d+)")
|
||||
if status == "200" then
|
||||
@@ -1194,24 +1209,17 @@ local function handle(params, client, options)
|
||||
if size then
|
||||
local msg = client:receive(tonumber(size))
|
||||
print("Error in remote application: " .. msg)
|
||||
os.exit(1, true)
|
||||
return nil, nil, msg -- use return here for those cases where os.exit() is not wanted
|
||||
return nil, nil, msg
|
||||
end
|
||||
else
|
||||
print("Unknown error")
|
||||
os.exit(1, true)
|
||||
-- use return here for those cases where os.exit() is not wanted
|
||||
return nil, nil, "Debugger error: unexpected response '" .. breakpoint .. "'"
|
||||
end
|
||||
if done then break end
|
||||
end
|
||||
elseif command == "done" then
|
||||
client:send(string.upper(command) .. "\n")
|
||||
if client:receive() ~= "200 OK" then
|
||||
print("Unknown error")
|
||||
os.exit(1, true)
|
||||
return nil, nil, "Debugger error: unexpected response after DONE"
|
||||
end
|
||||
-- no response is expected
|
||||
elseif command == "setb" or command == "asetb" then
|
||||
_, _, _, file, line = string.find(params, "^([a-z]+)%s+(.-)%s+(%d+)%s*$")
|
||||
if file and line then
|
||||
@@ -1498,7 +1506,9 @@ local function handle(params, client, options)
|
||||
print("exit -- exits debugger and the application")
|
||||
else
|
||||
local _, _, spaces = string.find(params, "^(%s*)$")
|
||||
if not spaces then
|
||||
if spaces then
|
||||
return nil, nil, "Empty command"
|
||||
else
|
||||
print("Invalid command")
|
||||
return nil, nil, "Invalid command"
|
||||
end
|
||||
@@ -1537,9 +1547,11 @@ local function listen(host, port)
|
||||
|
||||
while true do
|
||||
io.write("> ")
|
||||
local line = io.read("*line")
|
||||
handle(line, client)
|
||||
local file, line, err = handle(io.read("*line"), client)
|
||||
if not file and not err then break end -- completed debugging
|
||||
end
|
||||
|
||||
client:close()
|
||||
end
|
||||
|
||||
local cocreate
|
||||
@@ -1591,10 +1603,7 @@ mobdebug.coro = coro
|
||||
mobdebug.done = done
|
||||
mobdebug.pause = function() step_into = true end
|
||||
mobdebug.yield = nil -- callback
|
||||
mobdebug.onexit = os and os.exit or done
|
||||
mobdebug.basedir = function(b) if b then basedir = b end return basedir end
|
||||
|
||||
-- this is needed to make "require 'modebug'" to work when mobdebug
|
||||
-- module is loaded manually
|
||||
package.loaded.mobdebug = mobdebug
|
||||
|
||||
return mobdebug
|
||||
|
||||
@@ -10,6 +10,7 @@ local P = {
|
||||
-- Events that are marked with "return false" can return `false` to
|
||||
-- abort further processing.
|
||||
-- For `onEditorPreSave` event it means that file saving will be aborted.
|
||||
-- For `onEditorPreClose` event it means that closing an editor tab will be aborted.
|
||||
-- For `onEditorKeyDown` event it means that the key will be "eaten".
|
||||
-- For `onEditorAction` event it means that the action will not be executed.
|
||||
-- For `onFiletreeActivate` event it means that no further processing is done.
|
||||
@@ -20,6 +21,7 @@ local events = {
|
||||
onRegister = function(self) end,
|
||||
onUnRegister = function(self) end,
|
||||
onEditorLoad = function(self, editor) end,
|
||||
onEditorPreClose = function(self, editor) end, -- return false
|
||||
onEditorClose = function(self, editor) end,
|
||||
onEditorNew = function(self, editor) end,
|
||||
onEditorPreSave = function(self, editor, filepath) end, -- return false
|
||||
@@ -30,15 +32,18 @@ local events = {
|
||||
onEditorKeyDown = function(self, editor, event) end, -- return false
|
||||
onEditorCharAdded = function(self, editor, event) end, -- return false
|
||||
onEditorUserlistSelection = function(self, editor, event) end, -- return false
|
||||
onEditorUpdateUI = function(self, editor, event) end, -- return false
|
||||
onEditorPainted = function(self, editor, event) end, -- return false
|
||||
onEditorUpdateUI = function(self, editor, event) end,
|
||||
onEditorPainted = function(self, editor, event) end,
|
||||
onEditorCallTip = function(self, editor, tip, value, eval) end, -- return false
|
||||
onFiletreeActivate = function(self, tree, event, item) end, -- return false
|
||||
onFiletreeLDown = function(self, tree, event, item) end,
|
||||
onFiletreeRDown = function(self, tree, event, item) end,
|
||||
onMenuEditor = function(self, menu, editor, event) end,
|
||||
onMenuEditorTab = function(self, menu, notebook, event, index) end,
|
||||
onMenuOutput = function(self, menu, editor, event) end,
|
||||
onMenuFiletree = function(self, menu, tree, event) end,
|
||||
onMenuOutline = function(self, menu, tree, event) end,
|
||||
onMenuWatch = function(self, menu, tree, event) end,
|
||||
onProjectPreLoad = function(self, project) end, -- before project is changed
|
||||
onProjectLoad = function(self, project) end, -- after project is changed
|
||||
onProjectClose = function(self, project) end,
|
||||
|
||||
@@ -4,11 +4,13 @@ function CMarkSymbols(code, pos, vars)
|
||||
local isfndef = function(str, pos)
|
||||
local s,e,pref,cap
|
||||
while true do
|
||||
s,e,pref,cap,parms = str:find("([\r\n]%s*)"..funcdeftmpl, pos)
|
||||
s,e,pref,cap,parms = str:find("^(%s*)"..funcdeftmpl, pos)
|
||||
if (not s) then
|
||||
s,e,pref,cap,parms = str:find("^(%s*)"..funcdeftmpl, pos)
|
||||
s,e,pref,cap,parms = str:find("([\r\n]%s*)"..funcdeftmpl, pos)
|
||||
end
|
||||
if parms and #parms > 0 and not parms:find(idtmpl) then
|
||||
-- skip strange parameters and things of `else if ()` variety
|
||||
if parms and #parms > 0 and not parms:find(idtmpl)
|
||||
or cap and cap:find("%sif%s*$") then
|
||||
pos = s+#pref+#cap+#parms
|
||||
else
|
||||
break
|
||||
|
||||
22
spec/lua.lua
22
spec/lua.lua
@@ -71,15 +71,19 @@ return {
|
||||
end,
|
||||
isincindent = function(str)
|
||||
-- remove "long" comments and escaped slashes (to process \' and \" below)
|
||||
str = str:gsub('%-%-%[=*%[.-%]=*%]',''):gsub([[\\]],'')
|
||||
str = str:gsub('%-%-%[=*%[.-%]=*%]',''):gsub('\\[\\\'"]','')
|
||||
while true do
|
||||
local num, sep = nil, str:match("['\"]")
|
||||
if not sep then break end
|
||||
str, num = str:gsub(sep..".-\\"..sep,sep):gsub(sep..".-"..sep,"")
|
||||
if num == 0 then break end
|
||||
end
|
||||
-- strip comments after strings are processed and remove all function calls
|
||||
str = str:gsub('%-%-.*',''):gsub("%b()","()")
|
||||
str = (str
|
||||
:gsub('%[=*%[.-%]=*%]','') -- remove long strings
|
||||
:gsub('%[=*%[.*','') -- remove partial long strings
|
||||
:gsub('%-%-.*','') -- strip comments after strings are processed
|
||||
:gsub("%b()","()") -- remove all function calls
|
||||
)
|
||||
|
||||
local term = str:match("^%s*(%w+)%W*")
|
||||
local terminc = term and incindent[term] and 1 or 0
|
||||
@@ -140,8 +144,8 @@ return {
|
||||
|
||||
while (line <= endline) do
|
||||
local ls = editor:PositionFromLine(line)
|
||||
local s = bit.band(editor:GetStyleAt(ls),31)
|
||||
local tx = editor:GetLine(line) --= string
|
||||
local s = bit.band(editor:GetStyleAt(ls + #tx:match("^%s*") + 2),31)
|
||||
|
||||
-- check for assignments
|
||||
local sep = editor.spec.sep
|
||||
@@ -160,10 +164,16 @@ return {
|
||||
local var,typ = tx:match("%s*"..identifier.."%s*=%s*([^;]+)")
|
||||
|
||||
var = var and var:gsub("local",""):gsub("%s","")
|
||||
-- handle `require` as a special case that returns a type that matches its parameter
|
||||
-- (this is without deeper analysis on loaded files and should work most of the time)
|
||||
local req = typ and typ:match("^require%s*%(?%s*['\"](.+)['\"]%s*%)?")
|
||||
typ = req or typ
|
||||
typ = (typ and typ
|
||||
:gsub("%b()","")
|
||||
:gsub("%b{}","")
|
||||
:gsub("%b[]",".0")
|
||||
-- replace concatenation with addition to avoid misidentifying types
|
||||
:gsub("%.%.+","+")
|
||||
-- remove comments; they may be in strings, but that's okay here
|
||||
:gsub("%-%-.*",""))
|
||||
if (typ and (typ:match(",") or typ:match("%sor%s") or typ:match("%sand%s"))) then
|
||||
@@ -187,7 +197,7 @@ return {
|
||||
|
||||
if (var and typ) then
|
||||
local class,func = typ:match(varname.."["..q(sep).."]"..varname)
|
||||
if (assigns[typ]) then
|
||||
if (assigns[typ] and not req) then
|
||||
assigns[var] = assigns[typ]
|
||||
elseif (func) then
|
||||
local added
|
||||
@@ -251,6 +261,7 @@ return {
|
||||
[[bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract
|
||||
bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift
|
||||
coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield
|
||||
coroutine.isyieldable
|
||||
debug.debug debug.getfenv debug.gethook debug.getinfo debug.getlocal
|
||||
debug.getmetatable debug.getregistry debug.getupvalue debug.getuservalue debug.setfenv
|
||||
debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.setuservalue
|
||||
@@ -260,6 +271,7 @@ return {
|
||||
math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp
|
||||
math.floor math.fmod math.frexp math.ldexp math.log math.log10 math.max math.min math.modf
|
||||
math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh
|
||||
math.type math.tointeger math.maxinteger math.mininteger math.ult
|
||||
os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname
|
||||
package.loadlib package.searchpath package.seeall package.config
|
||||
package.cpath package.loaded package.loaders package.path package.preload package.searchers
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
local ide = ide
|
||||
local statusBar = ide.frame.statusBar
|
||||
|
||||
local q = EscapeMagic
|
||||
|
||||
-- api loading depends on Lua interpreter
|
||||
@@ -189,7 +187,7 @@ end
|
||||
local function generateAPIInfo(only)
|
||||
for i,api in pairs(apis) do
|
||||
if ((not only) or i == only) then
|
||||
fillTips(api,"",i)
|
||||
fillTips(api,"")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -226,8 +224,19 @@ local function resolveAssign(editor,tx)
|
||||
local c
|
||||
if (assigns) then
|
||||
-- find assign
|
||||
local change = true
|
||||
local change, n, refs, stopat = true, 0, {}, os.clock() + 0.2
|
||||
while (change) do
|
||||
-- abort the check if the auto-complete is taking too long
|
||||
if n > 50 and os.clock() > stopat then
|
||||
if ide.config.acandtip.warning then
|
||||
DisplayOutputLn("Warning: Auto-complete was aborted after taking too long to complete."
|
||||
.. " Please report this warning along with the text you were typing to support@zerobrane.com.")
|
||||
end
|
||||
break
|
||||
else
|
||||
n = n + 1
|
||||
end
|
||||
|
||||
local classname = nil
|
||||
c = ""
|
||||
change = false
|
||||
@@ -244,7 +253,12 @@ local function resolveAssign(editor,tx)
|
||||
c = c..w..s
|
||||
end
|
||||
end
|
||||
-- check for loops in type assignment
|
||||
if refs[tx] then break end
|
||||
refs[tx] = c
|
||||
tx = c
|
||||
-- if there is any class duplication, abort the loop
|
||||
if classname and select(2, c:gsub(classname, classname)) > 1 then break end
|
||||
end
|
||||
else
|
||||
c = tx
|
||||
@@ -402,6 +416,7 @@ function DynamicWordsRem(editor,content,line,numlines)
|
||||
end
|
||||
|
||||
function DynamicWordsRemoveAll(editor)
|
||||
if ide.config.acandtip.nodynwords then return end
|
||||
DynamicWordsRem(editor,editor:GetText())
|
||||
end
|
||||
|
||||
@@ -453,7 +468,7 @@ local function getAutoCompApiList(childs,fragment,method)
|
||||
return ret
|
||||
end
|
||||
|
||||
if cache[childs] then
|
||||
if cache[childs] and cache[childs][fragment] then
|
||||
return cache[childs][fragment]
|
||||
end
|
||||
|
||||
@@ -513,8 +528,8 @@ function CreateAutoCompList(editor,key,pos)
|
||||
|
||||
local tab,rest = resolveAssign(editor,key)
|
||||
local progress = tab and tab.childs
|
||||
statusBar:SetStatusText(progress and tab.classname or "",1)
|
||||
if not (progress) then return end
|
||||
ide:SetStatusFor(progress and tab.classname and ("Auto-completing '%s'..."):format(tab.classname) or "")
|
||||
if not progress then return end
|
||||
|
||||
if (tab == ac) then
|
||||
local _, krest = rest:match("([%w_]+)["..q(sep).."]([%w_]*)%s*$")
|
||||
@@ -528,33 +543,6 @@ function CreateAutoCompList(editor,key,pos)
|
||||
rest = rest:gsub("[^%w_]","")
|
||||
end
|
||||
|
||||
local last = key:match("([%w_]+)%s*$")
|
||||
|
||||
-- build dynamic word list
|
||||
-- only if api search couldnt descend
|
||||
-- ie we couldnt find matching sub items
|
||||
local dw = ""
|
||||
if (last and #last >= (ide.config.acandtip.startat or 2)) then
|
||||
last = last:lower()
|
||||
if dynamicwords[last] then
|
||||
local list = dynamicwords[last]
|
||||
table.sort(list,function(a,b)
|
||||
local ma,mb = a:sub(1,#last)==last, b:sub(1,#last)==last
|
||||
if (ma and mb) or (not ma and not mb) then return a<b end
|
||||
return ma
|
||||
end)
|
||||
-- ignore if word == last and sole user
|
||||
for i,v in ipairs(list) do
|
||||
if (v:lower() == last and dywordentries[v] == 1) then
|
||||
table.remove(list,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
dw = table.concat(list," ")
|
||||
end
|
||||
end
|
||||
|
||||
-- list from api
|
||||
local apilist = getAutoCompApiList(tab.childs or tab,rest,method)
|
||||
|
||||
@@ -586,7 +574,9 @@ function CreateAutoCompList(editor,key,pos)
|
||||
if token.fpos and pos and token.fpos > pos then break end
|
||||
if token[1] == 'Id' or token[1] == 'Var' then
|
||||
local var = token.name
|
||||
if var ~= key and var:find(key, 1, true) == 1 then
|
||||
if var:find(key, 1, true) == 1
|
||||
-- skip the variable formed by what's being typed
|
||||
and (not token.fpos or not pos or token.fpos < pos-#key) then
|
||||
-- if it's a global variable, store in the auto-complete list,
|
||||
-- but if it's local, store separately as it needs to be checked
|
||||
table.insert(token.context[var] and vars or apilist, var)
|
||||
@@ -599,33 +589,42 @@ function CreateAutoCompList(editor,key,pos)
|
||||
end
|
||||
end
|
||||
|
||||
local compstr = ""
|
||||
-- include dynamic words
|
||||
local last = key:match("([%w_]+)%s*$")
|
||||
if (last and #last >= (ide.config.acandtip.startat or 2)) then
|
||||
last = last:lower()
|
||||
for i,v in ipairs(dynamicwords[last] or {}) do
|
||||
-- ignore if word == last and sole user
|
||||
if (v:lower() == last and dywordentries[v] == 1) then break end
|
||||
table.insert(apilist, v)
|
||||
end
|
||||
end
|
||||
|
||||
local li
|
||||
if apilist then
|
||||
if (#rest > 0) then
|
||||
local strategy = ide.config.acandtip.strategy
|
||||
|
||||
if (strategy == 2 and #apilist < 128) then
|
||||
local pat = rest:gsub(".",function(c)
|
||||
local l = c:lower()..c:upper()
|
||||
return "["..l.."]([^"..l.." ]*)"
|
||||
end)
|
||||
|
||||
local g = string.gsub
|
||||
-- when matching "ret": "ret." < "re.t" < "r.et"
|
||||
local patany = rest:gsub(".", function(c) return "["..c:lower()..c:upper().."](.-)" end)
|
||||
local patcase = rest:gsub(".", function(c) return c.."(.-)" end)
|
||||
local weights = {}
|
||||
local penalty = 0.1
|
||||
local function weight(str)
|
||||
if not weights[str] then
|
||||
local w = 0
|
||||
str:gsub(patany,function(...)
|
||||
local l = {...}
|
||||
-- penalize gaps between matches, more so at the beginning
|
||||
for n, v in ipairs(l) do w = w + #v * (1 + (#l-n)*penalty) end
|
||||
end)
|
||||
weights[str] = w + (str:find(patcase) and 0 or penalty)
|
||||
end
|
||||
return weights[str]
|
||||
end
|
||||
table.sort(apilist,function(a,b)
|
||||
local ma,mb = 0,0
|
||||
g(a,pat,function(...)
|
||||
local l = {...}
|
||||
for _, v in ipairs(l) do
|
||||
ma = ma + ((v=="") and 0 or 1)
|
||||
end
|
||||
end)
|
||||
g(b,pat,function(...)
|
||||
local l = {...}
|
||||
for _, v in ipairs(l) do
|
||||
mb = mb + ((v=="") and 0 or 1)
|
||||
end
|
||||
end)
|
||||
|
||||
local ma, mb = weight(a), weight(b)
|
||||
if (ma == mb) then return a:lower()<b:lower() end
|
||||
return ma<mb
|
||||
end)
|
||||
@@ -647,11 +646,7 @@ function CreateAutoCompList(editor,key,pos)
|
||||
else prev = apilist[i] end
|
||||
end
|
||||
|
||||
compstr = table.concat(apilist," ")
|
||||
li = table.concat(apilist," ")
|
||||
end
|
||||
|
||||
-- concat final, list complete first
|
||||
local li = compstr .. (#compstr > 0 and #dw > 0 and " " or "") .. dw
|
||||
|
||||
return li ~= "" and (#li > 1024 and li:sub(1,1024).."..." or li) or nil
|
||||
return li and #li > 1024 and li:sub(1,1024).."..." or li
|
||||
end
|
||||
|
||||
@@ -1,34 +1,44 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
---------------------------------------------------------
|
||||
|
||||
local maxlines = 8
|
||||
local row_height = 46
|
||||
local row_width = 450
|
||||
local win = ide.osname == 'Windows'
|
||||
|
||||
function CommandBarShow(params)
|
||||
local onDone, onUpdate, onItem, onSelection, defaultText, selectedText =
|
||||
params.onDone, params.onUpdate, params.onItem, params.onSelection,
|
||||
params.defaultText, params.selectedText
|
||||
local row_width = ide.config.commandbar.width or 0
|
||||
if row_width < 1 then
|
||||
row_width = math.max(450, math.floor(row_width * ide:GetMainFrame():GetClientSize():GetWidth()))
|
||||
end
|
||||
|
||||
local lines = {}
|
||||
local linesnow = #lines
|
||||
local linenow = 0
|
||||
|
||||
local ed = ide:GetEditor()
|
||||
local pos = ed and ed:GetScreenPosition() or ide:GetEditorNotebook():GetScreenPosition()
|
||||
local nb = ide:GetEditorNotebook()
|
||||
local pos = nb:GetScreenPosition()
|
||||
if pos then
|
||||
pos:SetX(pos:GetX()+ide:GetEditorNotebook():GetClientSize():GetWidth()-row_width-16)
|
||||
pos:SetY(pos:GetY()+2)
|
||||
if not win then pos = ide:GetMainFrame():ScreenToClient(pos) end
|
||||
local miny
|
||||
for p = 0, nb:GetPageCount()-1 do
|
||||
local y = nb:GetPage(p):GetScreenPosition():GetY()
|
||||
-- just in case, compare with the position of the notebook itself;
|
||||
-- this is needed because the tabs that haven't been refreshed yet
|
||||
-- may report 0 as their screen position on Linux, which is incorrect.
|
||||
if y > pos:GetY() and (not miny or y < miny) then miny = y end
|
||||
end
|
||||
pos:SetX(pos:GetX()+nb:GetClientSize():GetWidth()-row_width-16)
|
||||
pos:SetY((miny or pos:GetY())+2)
|
||||
else
|
||||
pos = wx.wxDefaultPosition
|
||||
end
|
||||
|
||||
local frame = win and wx.wxFrame(ide:GetMainFrame(), wx.wxID_ANY, "Command Bar",
|
||||
local frame = wx.wxFrame(ide:GetMainFrame(), wx.wxID_ANY, "Command Bar",
|
||||
pos, wx.wxDefaultSize,
|
||||
wx.wxFRAME_TOOL_WINDOW + wx.wxFRAME_FLOAT_ON_PARENT + wx.wxNO_BORDER)
|
||||
wx.wxFRAME_NO_TASKBAR + wx.wxFRAME_FLOAT_ON_PARENT + wx.wxNO_BORDER)
|
||||
local panel = wx.wxPanel(frame or ide:GetMainFrame(), wx.wxID_ANY,
|
||||
win and wx.wxDefaultPosition or pos, wx.wxDefaultSize, wx.wxFULL_REPAINT_ON_RESIZE)
|
||||
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxFULL_REPAINT_ON_RESIZE)
|
||||
local search = wx.wxTextCtrl(panel, wx.wxID_ANY, "\1",
|
||||
wx.wxDefaultPosition,
|
||||
-- make the text control a bit smaller on OSX
|
||||
@@ -37,8 +47,6 @@ function CommandBarShow(params)
|
||||
local results = wx.wxScrolledWindow(panel, wx.wxID_ANY,
|
||||
wx.wxDefaultPosition, wx.wxSize(0, 0))
|
||||
|
||||
if not frame then frame = panel end
|
||||
|
||||
local style, styledef = ide.config.styles, StylesGetDefault()
|
||||
local textcolor = wx.wxColour(unpack(style.text.fg or styledef.text.fg))
|
||||
local backcolor = wx.wxColour(unpack(style.text.bg or styledef.text.bg))
|
||||
@@ -81,7 +89,7 @@ function CommandBarShow(params)
|
||||
-- needed because KILL_FOCUS handler can be called after closing window
|
||||
local function onExit(index)
|
||||
onExit = function() end
|
||||
onDone(index and lines[index], index ~= nil, search:GetValue())
|
||||
onDone(index and lines[index], index, search:GetValue())
|
||||
frame:Close()
|
||||
end
|
||||
|
||||
@@ -172,7 +180,10 @@ function CommandBarShow(params)
|
||||
|
||||
local function onKeyDown(event)
|
||||
local keycode = event:GetKeyCode()
|
||||
if event:GetModifiers() ~= wx.wxMOD_NONE then
|
||||
if keycode == wx.WXK_RETURN then
|
||||
onExit(linenow)
|
||||
return
|
||||
elseif event:GetModifiers() ~= wx.wxMOD_NONE then
|
||||
event:Skip()
|
||||
return
|
||||
elseif keycode == wx.WXK_UP then
|
||||
@@ -195,7 +206,7 @@ function CommandBarShow(params)
|
||||
if linenow <= 0 then linenow = 1 end
|
||||
end
|
||||
elseif keycode == wx.WXK_ESCAPE then
|
||||
onExit()
|
||||
onExit(false)
|
||||
return
|
||||
else
|
||||
event:Skip()
|
||||
@@ -252,6 +263,8 @@ function CommandBarShow(params)
|
||||
search:Connect(wx.wxEVT_KILL_FOCUS, function() onExit() end)
|
||||
|
||||
frame:Show(true)
|
||||
frame:Update()
|
||||
frame:Refresh()
|
||||
|
||||
search:SetValue((defaultText or "")..(selectedText or ""))
|
||||
search:SetSelection(#(defaultText or ""), -1)
|
||||
@@ -306,21 +319,36 @@ function CommandBarScoreItems(t, pattern, limit)
|
||||
local r, plen = {}, #pattern
|
||||
local maxp = 0
|
||||
local num = 0
|
||||
local prefilter = ide.config.commandbar and ide.config.commandbar.prefilter <= #t
|
||||
and pattern:gsub("[^%w_]+",""):lower():gsub(".", "%1.*"):gsub("%.%*$","")
|
||||
local prefilter = ide.config.commandbar and ide.config.commandbar.prefilter
|
||||
-- anchor for 1-2 symbol patterns to speed up search
|
||||
local needanchor = prefilter and prefilter * 4 <= #t and plen <= 2
|
||||
local filter = prefilter and prefilter <= #t
|
||||
-- expand `abc` into `a.*b.*c`, but limit the prefix to avoid penalty for `s.*s.*s.*....`
|
||||
and pattern:gsub("[^%w_]+",""):sub(1,4):lower():gsub(".", "%1.*"):gsub("%.%*$","")
|
||||
or nil
|
||||
for _, v in ipairs(t) do
|
||||
if #v >= plen and (not prefilter or v:lower():find(prefilter)) then
|
||||
local p = score(pattern, v)
|
||||
maxp = math.max(p, maxp)
|
||||
if p > 1 and p > maxp / 4 then
|
||||
num = num + 1
|
||||
r[num] = {v, p}
|
||||
if #v >= plen then
|
||||
local match = filter and v:lower():find(filter)
|
||||
-- check if the current name needs to be prefiltered or anchored (for better performance);
|
||||
-- if it needs to be anchored, then anchor it at the beginning of the string or the word
|
||||
if not filter or (match and (not needanchor or match == 1 or v:find("^[%p%s]", match-1))) then
|
||||
local p = score(pattern, v)
|
||||
maxp = math.max(p, maxp)
|
||||
if p > 1 and p > maxp / 4 then
|
||||
num = num + 1
|
||||
r[num] = {v, p}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
table.sort(r, function(a, b) return a[2] > b[2] end)
|
||||
if limit then r[limit] = nil end -- limit the list to be displayed
|
||||
-- limit the list to be displayed
|
||||
-- `r[limit+1] = nil` is not desired as the resulting table may be sorted incorrectly
|
||||
if tonumber(limit) and limit < #r then
|
||||
local tmp = r
|
||||
r = {}
|
||||
for i = 1, limit do r[i] = tmp[i] end
|
||||
end
|
||||
return r
|
||||
end
|
||||
|
||||
|
||||
@@ -40,10 +40,14 @@ local function findUnusedEditor()
|
||||
end
|
||||
|
||||
function LoadFile(filePath, editor, file_must_exist, skipselection)
|
||||
local filePath = wx.wxFileName(filePath)
|
||||
filePath = filePath:gsub("%s+$","")
|
||||
filePath = wx.wxFileName(filePath)
|
||||
filePath:Normalize() -- make it absolute and remove all .. and . if possible
|
||||
filePath = filePath:GetFullPath()
|
||||
|
||||
-- if the file name is empty or is a directory, don't do anything
|
||||
if filePath == '' or wx.wxDirExists(filePath) then return nil end
|
||||
|
||||
-- prevent files from being reopened again
|
||||
if (not editor) then
|
||||
local doc = ide:FindDocument(filePath)
|
||||
@@ -57,54 +61,69 @@ function LoadFile(filePath, editor, file_must_exist, skipselection)
|
||||
end
|
||||
end
|
||||
|
||||
-- if not opened yet, try open now
|
||||
local file_text = FileRead(filePath)
|
||||
if file_text then
|
||||
if GetConfigIOFilter("input") then
|
||||
file_text = GetConfigIOFilter("input")(filePath,file_text)
|
||||
end
|
||||
elseif file_must_exist then
|
||||
return nil
|
||||
end
|
||||
local filesize = FileSize(filePath)
|
||||
if not filesize and file_must_exist then return nil end
|
||||
|
||||
local current = editor and editor:GetCurrentPos()
|
||||
editor = editor or findUnusedEditor() or CreateEditor()
|
||||
|
||||
editor:Freeze()
|
||||
editor:SetupKeywords(GetFileExt(filePath))
|
||||
editor:MarkerDeleteAll(-1)
|
||||
|
||||
-- remove BOM from UTF-8 encoded files; store BOM to add back when saving
|
||||
if filesize then editor:Allocate(filesize) end
|
||||
editor:SetText("")
|
||||
editor.bom = string.char(0xEF,0xBB,0xBF)
|
||||
if file_text and editor:GetCodePage() == wxstc.wxSTC_CP_UTF8
|
||||
and file_text:find("^"..editor.bom) then
|
||||
file_text = file_text:gsub("^"..editor.bom, "")
|
||||
else
|
||||
-- set to 'false' as checks for nil on wxlua objects may fail at run-time
|
||||
editor.bom = false
|
||||
end
|
||||
editor:SetText(file_text or "")
|
||||
|
||||
-- check the editor as it can be empty if the file has malformed UTF8;
|
||||
-- skip binary files with unknown extensions as they may have any sequences;
|
||||
-- can't show them anyway.
|
||||
if file_text and #file_text > 0 and #(editor:GetText()) == 0
|
||||
and (editor.spec ~= ide.specs.none or not isBinary(file_text)) then
|
||||
local replacement, invalid = "\022"
|
||||
file_text, invalid = FixUTF8(file_text, replacement)
|
||||
if #invalid > 0 then
|
||||
editor:AppendText(file_text)
|
||||
local lastline = nil
|
||||
for _, n in ipairs(invalid) do
|
||||
local line = editor:LineFromPosition(n)
|
||||
if line ~= lastline then
|
||||
DisplayOutputLn(("%s:%d: %s")
|
||||
:format(filePath, line+1, TR("Replaced an invalid UTF8 character with %s."):format(replacement)))
|
||||
lastline = line
|
||||
local inputfilter = GetConfigIOFilter("input")
|
||||
local file_text
|
||||
ide:PushStatus("")
|
||||
FileRead(filePath, 1024*1024, function(s)
|
||||
if not file_text then
|
||||
-- remove BOM from UTF-8 encoded files; store BOM to add back when saving
|
||||
if s and editor:GetCodePage() == wxstc.wxSTC_CP_UTF8 and s:find("^"..editor.bom) then
|
||||
s = s:gsub("^"..editor.bom, "")
|
||||
else
|
||||
-- set to 'false' as checks for nil on wxlua objects may fail at run-time
|
||||
editor.bom = false
|
||||
end
|
||||
file_text = s
|
||||
end
|
||||
if inputfilter then s = inputfilter(filePath, s) end
|
||||
local expected = editor:GetLength() + #s
|
||||
editor:AppendText(s)
|
||||
-- if the length is not as expected, then either it's a binary file or invalid UTF8
|
||||
if editor:GetLength() ~= expected then
|
||||
-- skip binary files with unknown extensions as they may have any sequences
|
||||
if editor.spec == ide.specs.none and IsBinary(s) then
|
||||
DisplayOutputLn(("%s: %s"):format(filePath,
|
||||
TR("Binary file is shown as read-only as it is only partially loaded.")))
|
||||
file_text = ''
|
||||
editor:SetReadOnly(true)
|
||||
return false
|
||||
end
|
||||
|
||||
-- handle invalid UTF8 characters
|
||||
-- fix: doesn't handle characters split by callback buffer
|
||||
local replacement, invalid = "\022"
|
||||
s, invalid = FixUTF8(s, replacement)
|
||||
if #invalid > 0 then
|
||||
editor:AppendText(s)
|
||||
local lastline = nil
|
||||
for _, n in ipairs(invalid) do
|
||||
local line = editor:LineFromPosition(n)
|
||||
if line ~= lastline then
|
||||
DisplayOutputLn(("%s:%d: %s"):format(filePath, line+1,
|
||||
TR("Replaced an invalid UTF8 character with %s."):format(replacement)))
|
||||
lastline = line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if filesize and filesize > 0 then
|
||||
ide:PopStatus()
|
||||
ide:PushStatus(TR("%s%% loaded..."):format(math.floor(100*editor:GetLength()/filesize)))
|
||||
end
|
||||
end)
|
||||
ide:PopStatus()
|
||||
|
||||
editor:Colourise(0, -1)
|
||||
editor:ResetTokenList() -- reset list of tokens if this is a reused editor
|
||||
@@ -128,7 +147,7 @@ function LoadFile(filePath, editor, file_must_exist, skipselection)
|
||||
DisplayOutputLn(("%s: %s")
|
||||
:format(filePath, TR("Mixed end-of-line encodings detected.")..' '..
|
||||
TR("Use '%s' to show line endings and '%s' to convert them.")
|
||||
:format("GetEditor():SetViewEOL(1)", "GetEditor():ConvertEOLs(GetEditor():GetEOLMode())")))
|
||||
:format("ide:GetEditor():SetViewEOL(1)", "ide:GetEditor():ConvertEOLs(ide:GetEditor():GetEOLMode())")))
|
||||
elseif foundcrlf then
|
||||
editor:SetEOLMode(wxstc.wxSTC_EOL_CRLF)
|
||||
elseif foundlf then
|
||||
@@ -138,18 +157,19 @@ function LoadFile(filePath, editor, file_must_exist, skipselection)
|
||||
end
|
||||
|
||||
editor:EmptyUndoBuffer()
|
||||
local id = editor:GetId()
|
||||
if openDocuments[id] then -- existing editor; switch to the tab
|
||||
notebook:SetSelection(openDocuments[id].index)
|
||||
local doc = ide:GetDocument(editor)
|
||||
if doc then -- existing editor; switch to the tab
|
||||
notebook:SetSelection(doc:GetTabIndex())
|
||||
else -- the editor has not been added to notebook
|
||||
AddEditor(editor, wx.wxFileName(filePath):GetFullName()
|
||||
doc = AddEditor(editor, wx.wxFileName(filePath):GetFullName()
|
||||
or ide.config.default.fullname)
|
||||
end
|
||||
openDocuments[id].filePath = filePath
|
||||
openDocuments[id].fileName = wx.wxFileName(filePath):GetFullName()
|
||||
openDocuments[id].modTime = GetFileModTime(filePath)
|
||||
doc.filePath = filePath
|
||||
doc.fileName = wx.wxFileName(filePath):GetFullName()
|
||||
doc.modTime = GetFileModTime(filePath)
|
||||
|
||||
SetDocumentModified(id, false, openDocuments[id].fileName)
|
||||
doc:SetModified(false)
|
||||
doc:SetTabText(doc:GetFileName())
|
||||
|
||||
-- activate the editor; this is needed for those cases when the editor is
|
||||
-- created from some other element, for example, from a project tree.
|
||||
@@ -201,9 +221,7 @@ end
|
||||
|
||||
function ActivateFile(filename)
|
||||
local name, suffix, value = filename:match('(.+):([lLpP]?)(%d+)$')
|
||||
if name and not wx.wxFileExists(filename) and not wx.wxIsAbsolutePath(filename) then
|
||||
filename = name
|
||||
end
|
||||
if name and not wx.wxFileExists(filename) then filename = name end
|
||||
|
||||
-- check if non-existing file can be loaded from the project folder;
|
||||
-- this is to handle: "project file" used on the command line
|
||||
@@ -267,8 +285,8 @@ function SaveFile(editor, filePath)
|
||||
end
|
||||
end
|
||||
|
||||
local st = (editor:GetCodePage() == wxstc.wxSTC_CP_UTF8 and editor.bom or "")
|
||||
.. editor:GetText()
|
||||
local st = ((editor:GetCodePage() == wxstc.wxSTC_CP_UTF8 and editor.bom or "")
|
||||
.. editor:GetText())
|
||||
if GetConfigIOFilter("output") then
|
||||
st = GetConfigIOFilter("output")(filePath,st)
|
||||
end
|
||||
@@ -276,12 +294,14 @@ function SaveFile(editor, filePath)
|
||||
local ok, err = FileWrite(filePath, st)
|
||||
if ok then
|
||||
editor:SetSavePoint()
|
||||
local id = editor:GetId()
|
||||
openDocuments[id].filePath = filePath
|
||||
openDocuments[id].fileName = wx.wxFileName(filePath):GetFullName()
|
||||
openDocuments[id].modTime = GetFileModTime(filePath)
|
||||
SetDocumentModified(id, false, openDocuments[id].fileName)
|
||||
local doc = ide:GetDocument(editor)
|
||||
doc.filePath = filePath
|
||||
doc.fileName = wx.wxFileName(filePath):GetFullName()
|
||||
doc.modTime = GetFileModTime(filePath)
|
||||
doc:SetModified(false)
|
||||
doc:SetTabText(doc:GetFileName())
|
||||
SetAutoRecoveryMark()
|
||||
FileTreeMarkSelected(filePath)
|
||||
|
||||
PackageEventHandle("onEditorSave", editor)
|
||||
|
||||
@@ -336,7 +356,6 @@ function SaveFileAs(editor)
|
||||
|
||||
if cansave and SaveFile(editor, filePath) then
|
||||
SetEditorSelection() -- update title of the editor
|
||||
FileTreeMarkSelected(filePath)
|
||||
if ext ~= GetFileExt(filePath) then
|
||||
-- new extension, so setup new keywords and re-apply indicators
|
||||
editor:ClearDocumentStyle() -- remove styles from the document
|
||||
@@ -426,6 +445,11 @@ end
|
||||
function ClosePage(selection)
|
||||
local editor = GetEditor(selection)
|
||||
local id = editor:GetId()
|
||||
|
||||
if PackageEventHandle("onEditorPreClose", editor) == false then
|
||||
return false
|
||||
end
|
||||
|
||||
if SaveModifiedDialog(editor, true) ~= wx.wxID_CANCEL then
|
||||
DynamicWordsRemoveAll(editor)
|
||||
local debugger = ide.debugger
|
||||
@@ -445,7 +469,9 @@ function ClosePage(selection)
|
||||
|
||||
-- disable full screen if the last tab is closed
|
||||
if not (notebook:GetSelection() >= 0) then ShowFullScreen(false) end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function CloseAllPagesExcept(selection)
|
||||
@@ -501,62 +527,13 @@ function SaveOnExit(allow_cancel)
|
||||
-- if all documents have been saved or refused to save, then mark those that
|
||||
-- are still modified as not modified (they don't need to be saved)
|
||||
-- to keep their tab names correct
|
||||
for id, document in pairs(openDocuments) do
|
||||
if document.isModified then SetDocumentModified(id, false) end
|
||||
for _, document in pairs(openDocuments) do
|
||||
if document.isModified then document:SetModified(false) end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
-- circle through "fold all" => "hide base lines" => "unfold all"
|
||||
function FoldSome()
|
||||
local editor = GetEditor()
|
||||
editor:Colourise(0, -1) -- update doc's folding info
|
||||
local foldall = false -- at least on header unfolded => fold all
|
||||
local hidebase = false -- at least one base is visible => hide all
|
||||
|
||||
for ln = 0, editor.LineCount - 1 do
|
||||
local foldRaw = editor:GetFoldLevel(ln)
|
||||
local foldLvl = foldRaw % 4096
|
||||
local foldHdr = (math.floor(foldRaw / 8192) % 2) == 1
|
||||
|
||||
-- at least one header is expanded
|
||||
foldall = foldall or (foldHdr and editor:GetFoldExpanded(ln))
|
||||
|
||||
-- at least one base can be hidden
|
||||
hidebase = hidebase or (
|
||||
not foldHdr
|
||||
and ln > 1 -- first line can't be hidden, so ignore it
|
||||
and foldLvl == wxstc.wxSTC_FOLDLEVELBASE
|
||||
and bit.band(foldRaw, wxstc.wxSTC_FOLDLEVELWHITEFLAG) == 0
|
||||
and editor:GetLineVisible(ln))
|
||||
end
|
||||
|
||||
-- shows lines; this doesn't change fold status for folded lines
|
||||
if not foldall and not hidebase then editor:ShowLines(0, editor.LineCount-1) end
|
||||
|
||||
for ln = 0, editor.LineCount-1 do
|
||||
local foldRaw = editor:GetFoldLevel(ln)
|
||||
local foldLvl = foldRaw % 4096
|
||||
local foldHdr = (math.floor(foldRaw / 8192) % 2) == 1
|
||||
|
||||
if foldall then
|
||||
if foldHdr and editor:GetFoldExpanded(ln) then
|
||||
editor:ToggleFold(ln)
|
||||
end
|
||||
elseif hidebase then
|
||||
if not foldHdr and (foldLvl == wxstc.wxSTC_FOLDLEVELBASE) then
|
||||
editor:HideLines(ln, ln)
|
||||
end
|
||||
else -- unfold all
|
||||
if foldHdr and not editor:GetFoldExpanded(ln) then
|
||||
editor:ToggleFold(ln)
|
||||
end
|
||||
end
|
||||
end
|
||||
editor:EnsureCaretVisible()
|
||||
end
|
||||
|
||||
function SetAllEditorsReadOnly(enable)
|
||||
for _, document in pairs(openDocuments) do
|
||||
document.editor:SetReadOnly(enable)
|
||||
@@ -600,6 +577,7 @@ function CompileProgram(editor, params)
|
||||
:format(compileOk/compileTotal*100, compileOk, compileTotal))
|
||||
end
|
||||
else
|
||||
ActivateOutput()
|
||||
DisplayOutputLn(TR("Compilation error").." "..TR("on line %d"):format(line)..":")
|
||||
DisplayOutputLn((err:gsub("\n$", "")))
|
||||
-- check for escapes invalid in LuaJIT/Lua 5.2 that are allowed in Lua 5.1
|
||||
@@ -736,21 +714,21 @@ function SetOpenTabs(params)
|
||||
DisplayOutputLn(TR("Found auto-recovery record and restored saved session."))
|
||||
end
|
||||
for _,doc in ipairs(nametab) do
|
||||
-- check for missing file is no content is stored
|
||||
-- check for missing file if no content is stored
|
||||
if doc.filepath and not doc.content and not wx.wxFileExists(doc.filepath) then
|
||||
DisplayOutputLn(TR("File '%s' is missing and can't be recovered.")
|
||||
:format(doc.filepath))
|
||||
else
|
||||
local editor = (doc.filepath and LoadFile(doc.filepath,nil,true,true)
|
||||
or findUnusedEditor() or NewFile(doc.filename))
|
||||
local opendoc = openDocuments[editor:GetId()]
|
||||
local opendoc = ide:GetDocument(editor)
|
||||
if doc.content then
|
||||
editor:SetText(doc.content)
|
||||
if doc.filepath and opendoc.modTime and doc.modified < opendoc.modTime:GetTicks() then
|
||||
DisplayOutputLn(TR("File '%s' has more recent timestamp than restored '%s'; please review before saving.")
|
||||
:format(doc.filepath, doc.tabname))
|
||||
:format(doc.filepath, opendoc:GetTabText()))
|
||||
end
|
||||
SetDocumentModified(editor:GetId(), true)
|
||||
opendoc:SetModified(true)
|
||||
end
|
||||
editor:GotoPosDelayed(doc.cursorpos or 0)
|
||||
end
|
||||
@@ -762,21 +740,23 @@ end
|
||||
local function getOpenTabs()
|
||||
local opendocs = {}
|
||||
for _, document in pairs(ide.openDocuments) do
|
||||
local editor = document:GetEditor()
|
||||
table.insert(opendocs, {
|
||||
filename = document.fileName,
|
||||
filepath = document.filePath,
|
||||
tabname = notebook:GetPageText(document.index),
|
||||
modified = document.modTime and document.modTime:GetTicks(), -- get number of seconds
|
||||
content = document.isModified and document.editor:GetText() or nil,
|
||||
id = document.index, cursorpos = document.editor:GetCurrentPos()})
|
||||
filename = document:GetFileName(),
|
||||
filepath = document:GetFilePath(),
|
||||
tabname = document:GetTabText(),
|
||||
modified = document:GetModTime() and document:GetModTime():GetTicks(), -- get number of seconds
|
||||
content = document:IsModified() and editor:GetText() or nil,
|
||||
id = document:GetTabIndex(),
|
||||
cursorpos = editor:GetCurrentPos()})
|
||||
end
|
||||
|
||||
-- to keep tab order
|
||||
table.sort(opendocs, function(a,b) return (a.id < b.id) end)
|
||||
|
||||
local id = GetEditor()
|
||||
id = id and id:GetId()
|
||||
return opendocs, {index = (id and openDocuments[id].index or 0)}
|
||||
local ed = GetEditor()
|
||||
local doc = ed and ide:GetDocument(ed)
|
||||
return opendocs, {index = (doc and doc:GetTabIndex() or 0)}
|
||||
end
|
||||
|
||||
function SetAutoRecoveryMark()
|
||||
@@ -816,8 +796,7 @@ local function saveAutoRecovery(force)
|
||||
ide.settings:Flush()
|
||||
end
|
||||
ide.session.lastsaved = now
|
||||
ide.frame.statusBar:SetStatusText(
|
||||
TR("Saved auto-recover at %s."):format(os.date("%H:%M:%S")), 1)
|
||||
ide:SetStatus(TR("Saved auto-recover at %s."):format(os.date("%H:%M:%S")))
|
||||
end
|
||||
|
||||
local function fastWrap(func, ...)
|
||||
@@ -874,8 +853,9 @@ function StoreRestoreProjectTabs(curdir, newdir)
|
||||
fastWrap(SetOpenFiles, files, {index = #files + notebook:GetPageCount()})
|
||||
end
|
||||
|
||||
if params and params.interpreter then
|
||||
ProjectSetInterpreter(params.interpreter) -- set the interpreter
|
||||
-- either interpreter is chosen for the project or the default value is set
|
||||
if (params and params.interpreter) or (not params and ide.config.interpreter) then
|
||||
ProjectSetInterpreter(params and params.interpreter or ide.config.interpreter)
|
||||
end
|
||||
|
||||
if ide.osname ~= 'Macintosh' then notebook:Thaw() end
|
||||
@@ -963,7 +943,9 @@ ide.editorApp:Connect(wx.wxEVT_SET_FOCUS, function(event)
|
||||
local class = win:GetClassInfo():GetClassName()
|
||||
-- don't set focus on the main frame or toolbar
|
||||
if ide.infocus and (class == 'wxAuiToolBar' or class == 'wxFrame') then
|
||||
pcall(function() ide.infocus:SetFocus() end)
|
||||
-- check if the window is shown before returning focus to it,
|
||||
-- as it may lead to a recursion in event handlers on OSX (wxwidgets 2.9.5).
|
||||
pcall(function() if ide:IsWindowShown(ide.infocus) then ide.infocus:SetFocus() end end)
|
||||
return
|
||||
end
|
||||
|
||||
@@ -1007,14 +989,12 @@ ide.editorApp:Connect(wx.wxEVT_ACTIVATE_APP,
|
||||
-- restore focus to the last element that received it;
|
||||
-- wrap into pcall in case the element has disappeared
|
||||
-- while the application was out of focus
|
||||
pcall(function() ide.infocus:SetFocus() end)
|
||||
pcall(function() if ide:IsWindowShown(ide.infocus) then ide.infocus:SetFocus() end end)
|
||||
end
|
||||
|
||||
local active = event:GetActive()
|
||||
-- save auto-recovery record when making the app inactive
|
||||
if not active then saveAutoRecovery(true) end
|
||||
-- also collect all the garbage
|
||||
if not active then collectgarbage() end
|
||||
|
||||
-- disable UI refresh when app is inactive, but only when not running
|
||||
wx.wxUpdateUIEvent.SetUpdateInterval(
|
||||
@@ -1042,3 +1022,28 @@ function PaneFloatToggle(window)
|
||||
end
|
||||
uimgr:Update()
|
||||
end
|
||||
|
||||
local cma, cman = 0, 1
|
||||
frame:Connect(wx.wxEVT_IDLE,
|
||||
function(event)
|
||||
local debugger = ide.debugger
|
||||
if (debugger.update) then debugger.update() end
|
||||
if (debugger.scratchpad) then DebuggerRefreshScratchpad() end
|
||||
if IndicateIfNeeded() then event:RequestMore(true) end
|
||||
PackageEventHandleOnce("onIdleOnce", event)
|
||||
PackageEventHandle("onIdle", event)
|
||||
|
||||
-- process onidle events if any
|
||||
if #ide.onidle > 0 then table.remove(ide.onidle)() end
|
||||
if #ide.onidle > 0 then event:RequestMore(true) end -- request more if anything left
|
||||
|
||||
if ide.config.showmemoryusage then
|
||||
local mem = collectgarbage("count")
|
||||
local alpha = math.max(tonumber(ide.config.showmemoryusage) or 0, 1/cman)
|
||||
cman = cman + 1
|
||||
cma = alpha * mem + (1-alpha) * cma
|
||||
ide:SetStatus(("cur: %sKb; avg: %sKb"):format(math.floor(mem), math.floor(cma)))
|
||||
end
|
||||
|
||||
event:Skip() -- let other EVT_IDLE handlers to work on the event
|
||||
end)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Original authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
-- Integration with MobDebug
|
||||
@@ -20,6 +20,7 @@ debugger.stackCtrl = nil -- the stack ctrl that shows stack information
|
||||
debugger.toggleview = {
|
||||
bottomnotebook = true, -- output/console is "on" by default
|
||||
stackpanel = false, watchpanel = false, toolbar = false }
|
||||
debugger.needrefresh = {} -- track components that may need a refresh
|
||||
debugger.hostname = ide.config.debugger.hostname or (function()
|
||||
local hostname = socket.dns.gethostname()
|
||||
return hostname and socket.dns.toip(hostname) and hostname or "localhost"
|
||||
@@ -65,8 +66,9 @@ local function updateWatchesSync(onlyitem)
|
||||
local watchCtrl = debugger.watchCtrl
|
||||
local pane = ide.frame.uimgr:GetPane("watchpanel")
|
||||
local shown = watchCtrl and (pane:IsOk() and pane:IsShown() or not pane:IsOk() and watchCtrl:IsShown())
|
||||
if shown and debugger.server and not debugger.running
|
||||
and not debugger.scratchpad and not (debugger.options or {}).noeval then
|
||||
local canupdate = (debugger.server and not debugger.running and not debugger.scratchpad
|
||||
and not (debugger.options or {}).noeval)
|
||||
if shown and canupdate then
|
||||
local bgcl = watchCtrl:GetBackgroundColour()
|
||||
local hicl = wx.wxColour(math.floor(bgcl:Red()*.9),
|
||||
math.floor(bgcl:Green()*.9), math.floor(bgcl:Blue()*.9))
|
||||
@@ -114,6 +116,8 @@ local function updateWatchesSync(onlyitem)
|
||||
if onlyitem then break end
|
||||
item = watchCtrl:GetNextSibling(item)
|
||||
end
|
||||
elseif not shown and canupdate then
|
||||
debugger.needrefresh.watches = true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -124,8 +128,8 @@ local function updateStackSync()
|
||||
local stackCtrl = debugger.stackCtrl
|
||||
local pane = ide.frame.uimgr:GetPane("stackpanel")
|
||||
local shown = stackCtrl and (pane:IsOk() and pane:IsShown() or not pane:IsOk() and stackCtrl:IsShown())
|
||||
if shown and debugger.server and not debugger.running
|
||||
and not debugger.scratchpad then
|
||||
local canupdate = debugger.server and not debugger.running and not debugger.scratchpad
|
||||
if shown and canupdate then
|
||||
local stack, _, err = debugger.stack()
|
||||
if not stack or #stack == 0 then
|
||||
stackCtrl:DeleteAll()
|
||||
@@ -196,12 +200,14 @@ local function updateStackSync()
|
||||
stackCtrl:EnsureVisible(stackCtrl:GetFirstChild(root))
|
||||
stackCtrl:SetScrollPos(wx.wxHORIZONTAL, 0, true)
|
||||
stackCtrl:Thaw()
|
||||
elseif not shown and canupdate then
|
||||
debugger.needrefresh.stack = true
|
||||
end
|
||||
end
|
||||
|
||||
local function updateStackAndWatches()
|
||||
-- check if the debugger is running and may be waiting for a response.
|
||||
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
|
||||
-- allow that request to finish, otherwise this function does nothing.
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running then
|
||||
copas.addthread(function() updateStackSync() updateWatchesSync() end)
|
||||
@@ -210,14 +216,29 @@ end
|
||||
|
||||
local function updateWatches(item)
|
||||
-- check if the debugger is running and may be waiting for a response.
|
||||
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
|
||||
-- allow that request to finish, otherwise this function does nothing.
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running then
|
||||
copas.addthread(function() updateWatchesSync(item) end)
|
||||
end
|
||||
end
|
||||
|
||||
local function updateStack()
|
||||
-- check if the debugger is running and may be waiting for a response.
|
||||
-- allow that request to finish, otherwise this function does nothing.
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running then
|
||||
copas.addthread(function() updateStackSync() end)
|
||||
end
|
||||
end
|
||||
|
||||
local function debuggerToggleViews(show)
|
||||
-- don't toggle if the current state is the same as the new one
|
||||
local shown = debugger.toggleview.shown
|
||||
if (show and shown) or (not show and not shown) then return end
|
||||
|
||||
debugger.toggleview.shown = nil
|
||||
|
||||
local mgr = ide.frame.uimgr
|
||||
local refresh = false
|
||||
for view, needed in pairs(debugger.toggleview) do
|
||||
@@ -239,6 +260,7 @@ local function debuggerToggleViews(show)
|
||||
end
|
||||
end
|
||||
if refresh then mgr:Update() end
|
||||
if show then debugger.toggleview.shown = true end
|
||||
end
|
||||
|
||||
local function killClient()
|
||||
@@ -304,6 +326,13 @@ local function activateDocument(file, line, activatehow)
|
||||
if line == math.huge then line = 1 end
|
||||
end
|
||||
local line = line - 1 -- editor line operations are zero-based
|
||||
if debugger.runtocursor then
|
||||
local ed, ln = unpack(debugger.runtocursor)
|
||||
if ed:GetId() == editor:GetId() and ln == line then
|
||||
DebuggerToggleBreakpoint(ed, ln)
|
||||
debugger.runtocursor = nil
|
||||
end
|
||||
end
|
||||
editor:MarkerAdd(line, CURRENT_LINE_MARKER)
|
||||
editor:Refresh() -- needed for background markers that don't get refreshed (wx2.9.5)
|
||||
|
||||
@@ -393,7 +422,7 @@ end
|
||||
|
||||
debugger.shell = function(expression, isstatement)
|
||||
-- check if the debugger is running and may be waiting for a response.
|
||||
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
|
||||
-- allow that request to finish, otherwise this function does nothing.
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running
|
||||
and (not debugger.scratchpad or debugger.scratchpad.paused) then
|
||||
@@ -556,9 +585,10 @@ debugger.listen = function(start)
|
||||
debugger.stats = {line = 0}
|
||||
debugger.missing = {}
|
||||
debugger.editormap = {}
|
||||
debugger.runtocursor = nil
|
||||
|
||||
local wxfilepath = GetEditorFileAndCurInfo()
|
||||
local startfile = options.startwith
|
||||
local startfile = ide:GetProjectStartFile() or options.startwith
|
||||
or (wxfilepath and wxfilepath:GetFullPath())
|
||||
|
||||
if not startfile then
|
||||
@@ -622,10 +652,14 @@ debugger.listen = function(start)
|
||||
.." "..TR("Compilation error")
|
||||
..":\n"..err)
|
||||
return debugger.terminate()
|
||||
elseif options.runstart and not debugger.scratchpad
|
||||
and stoppedAtBreakpoint(file, line) then
|
||||
activateDocument(file, line)
|
||||
options.runstart = false
|
||||
elseif options.runstart and not debugger.scratchpad then
|
||||
if stoppedAtBreakpoint(file, line) then
|
||||
activateDocument(file, line)
|
||||
options.runstart = false
|
||||
end
|
||||
elseif file and line then
|
||||
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
|
||||
:format(file, line))
|
||||
end
|
||||
elseif not (options.run or debugger.scratchpad) then
|
||||
local file, line, err = debugger.loadfile(startfile)
|
||||
@@ -634,7 +668,7 @@ debugger.listen = function(start)
|
||||
-- with start() method, which can't load new files
|
||||
-- if file and line are set, this indicates option #2
|
||||
if err then
|
||||
DisplayOutputLn(TR("Can't debug the script in the active editor window.")
|
||||
DisplayOutputLn(TR("Can't start debugging for '%s'."):format(startfile)
|
||||
.." "..TR("Compilation error")
|
||||
..":\n"..err)
|
||||
return debugger.terminate()
|
||||
@@ -672,9 +706,8 @@ debugger.listen = function(start)
|
||||
end
|
||||
|
||||
if not activated then
|
||||
DisplayOutputLn(TR("Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging.")
|
||||
:format(file))
|
||||
return debugger.terminate()
|
||||
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
|
||||
:format(file, line))
|
||||
end
|
||||
|
||||
-- debugger may still be available for scratchpad,
|
||||
@@ -682,7 +715,11 @@ debugger.listen = function(start)
|
||||
debugger.scratchable = ide.interpreter.scratchextloop ~= nil
|
||||
else
|
||||
debugger.scratchable = true
|
||||
activateDocument(startfile, 0) -- find the appropriate line
|
||||
local activated = activateDocument(startfile, 0) -- find the appropriate line
|
||||
if not activated then
|
||||
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
|
||||
:format(startfile, '?'))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -708,6 +745,11 @@ debugger.listen = function(start)
|
||||
activateDocument(file, line)
|
||||
end
|
||||
end
|
||||
|
||||
-- refresh toolbar and menus in case the main app is not active
|
||||
if ide.config.debugger.requestattention then RequestAttention() end
|
||||
ide:GetMainFrame():UpdateWindowUI(wx.wxUPDATE_UI_FROMIDLE)
|
||||
ide:GetToolBar():UpdateWindowUI(wx.wxUPDATE_UI_FROMIDLE)
|
||||
end)
|
||||
debugger.listening = server
|
||||
end
|
||||
@@ -720,11 +762,8 @@ end
|
||||
|
||||
debugger.handle = function(command, server, options)
|
||||
local verbose = ide.config.debugger.verbose
|
||||
local osexit, gprint
|
||||
osexit, os.exit = os.exit, function () end
|
||||
gprint, _G.print = _G.print, function (...)
|
||||
if verbose then DisplayOutputLn(...) end
|
||||
end
|
||||
local gprint = _G.print
|
||||
_G.print = function (...) if verbose then DisplayOutputLn(...) end end
|
||||
|
||||
nameOutputTab(TR("Output (running)"))
|
||||
debugger.running = true
|
||||
@@ -735,14 +774,15 @@ debugger.handle = function(command, server, options)
|
||||
-- only set suspended if the debugging hasn't been terminated
|
||||
if debugger.server then nameOutputTab(TR("Output (suspended)")) end
|
||||
|
||||
os.exit = osexit
|
||||
_G.print = gprint
|
||||
return file, line, err
|
||||
end
|
||||
|
||||
debugger.exec = function(command)
|
||||
debugger.exec = function(command, func)
|
||||
if debugger.server and not debugger.running then
|
||||
copas.addthread(function ()
|
||||
-- execute a custom function (if any) in the context of this thread
|
||||
if type(func) == 'function' then func() end
|
||||
local out
|
||||
local attempts = 0
|
||||
while true do
|
||||
@@ -778,7 +818,7 @@ debugger.exec = function(command)
|
||||
-- If this happens, stop and report allowing users to set
|
||||
-- breakpoints and step through.
|
||||
if debugger.breaking then
|
||||
DisplayOutputLn(TR("Debugging suspended at %s:%s (couldn't activate the file).")
|
||||
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
|
||||
:format(file, line))
|
||||
updateStackAndWatches()
|
||||
return
|
||||
@@ -849,6 +889,7 @@ do
|
||||
-- if there is any pending activation
|
||||
if debugger.activate then
|
||||
local file, line, content = unpack(debugger.activate)
|
||||
debugger.activate = nil
|
||||
if content then
|
||||
local editor = NewFile()
|
||||
editor:SetText(content)
|
||||
@@ -865,11 +906,16 @@ do
|
||||
activateDocument(file, line)
|
||||
end
|
||||
end
|
||||
debugger.activate = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function isemptyline(editor, line)
|
||||
local text = editor:GetLine(line-1)
|
||||
return not text:find("%S")
|
||||
or (text:find("^%s*%-%-") ~= nil and text:find("^%s*%-%-%[=*%[") == nil)
|
||||
end
|
||||
|
||||
debugger.terminate = function()
|
||||
if debugger.server then
|
||||
if debugger.pid then -- if there is PID, try local kill
|
||||
@@ -885,10 +931,53 @@ debugger.trace = function()
|
||||
debugger.loop = true
|
||||
debugger.exec("step")
|
||||
end
|
||||
debugger.runto = function(editor, line)
|
||||
-- check if the location is valid for a breakpoint
|
||||
if isemptyline(editor, line+1) then return end
|
||||
|
||||
local ed, ln = unpack(debugger.runtocursor or {})
|
||||
local same = ed and ln and ed:GetId() == editor:GetId() and ln == line
|
||||
|
||||
-- check if there is already a breakpoint in the "run to" location;
|
||||
-- if so, don't mark the location as "run to" as it will stop there anyway
|
||||
if bit.band(editor:MarkerGet(line), BREAKPOINT_MARKER_VALUE) > 0
|
||||
and not same then
|
||||
debugger.runtocursor = nil
|
||||
debugger.run()
|
||||
return
|
||||
end
|
||||
|
||||
-- save the location of the breakpoint
|
||||
debugger.runtocursor = {editor, line}
|
||||
-- set breakpoint and execute run
|
||||
debugger.exec("run", function()
|
||||
-- if run-to-cursor location is already set, then remove the breakpoint,
|
||||
-- but only if this location is different
|
||||
if ed and ln and not same then
|
||||
DebuggerToggleBreakpoint(ed, ln)
|
||||
debugger.wait()
|
||||
end
|
||||
if not same then
|
||||
DebuggerToggleBreakpoint(editor, line)
|
||||
debugger.wait()
|
||||
end
|
||||
end)
|
||||
end
|
||||
debugger.wait = function()
|
||||
-- wait for all results to come back
|
||||
while debugger.running do debugger.update() end
|
||||
end
|
||||
debugger.over = function() debugger.exec("over") end
|
||||
debugger.out = function() debugger.exec("out") end
|
||||
debugger.run = function() debugger.exec("run") end
|
||||
debugger.detach = function() debugger.exec("done") end
|
||||
debugger.detach = function()
|
||||
if debugger.running then
|
||||
debugger.handleDirect("done")
|
||||
debugger.server = nil
|
||||
else
|
||||
debugger.exec("done")
|
||||
end
|
||||
end
|
||||
debugger.evaluate = function(expression) return debugger.handle('eval ' .. expression) end
|
||||
debugger.execute = function(expression) return debugger.handle('exec ' .. expression) end
|
||||
debugger.stack = function() return debugger.handle('stack') end
|
||||
@@ -997,6 +1086,13 @@ local function debuggerCreateStackWindow()
|
||||
return true
|
||||
end)
|
||||
|
||||
stackCtrl:Connect(wx.wxEVT_SET_FOCUS, function(event)
|
||||
if debugger.needrefresh.stack then
|
||||
updateStack()
|
||||
debugger.needrefresh.stack = false
|
||||
end
|
||||
end)
|
||||
|
||||
-- register navigation callback
|
||||
stackCtrl:Connect(wx.wxEVT_LEFT_DCLICK, function (event)
|
||||
local item_id = stackCtrl:HitTest(event:GetPosition())
|
||||
@@ -1011,7 +1107,7 @@ local function debuggerCreateStackWindow()
|
||||
if file then
|
||||
local editor = LoadFile(file,nil,true)
|
||||
editor:SetFocus()
|
||||
if line then editor:GotoPos(editor:PositionFromLine(line-1)) end
|
||||
if line then editor:GotoLine(line-1) end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -1081,9 +1177,8 @@ local function debuggerCreateWatchWindow()
|
||||
and (watchCtrl:IsWatch(item) or watchCtrl:GetItemName(item) ~= nil))
|
||||
end
|
||||
|
||||
function watchCtrl:UpdateItemValue(item, value)
|
||||
function watchCtrl:GetItemFullExpression(item)
|
||||
local expr = ''
|
||||
local origitem = item
|
||||
while true do
|
||||
local name = watchCtrl:GetItemName(item)
|
||||
expr = (watchCtrl:IsWatch(item)
|
||||
@@ -1094,6 +1189,25 @@ local function debuggerCreateWatchWindow()
|
||||
item = watchCtrl:GetItemParent(item)
|
||||
if not item:IsOk() then break end
|
||||
end
|
||||
return expr, item:IsOk() and item or nil
|
||||
end
|
||||
|
||||
function watchCtrl:CopyItemValue(item)
|
||||
local expr = self:GetItemFullExpression(item)
|
||||
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running
|
||||
and (not debugger.scratchpad or debugger.scratchpad.paused) then
|
||||
copas.addthread(function ()
|
||||
local _, values, error = debugger.evaluate(expr)
|
||||
ide:CopyToClipboard(error and error:gsub("%[.-%]:%d+:%s+","")
|
||||
or (#values == 0 and 'nil' or values[1]))
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function watchCtrl:UpdateItemValue(item, value)
|
||||
local expr, itemupd = self:GetItemFullExpression(item)
|
||||
|
||||
if debugger.running then debugger.update() end
|
||||
if debugger.server and not debugger.running
|
||||
@@ -1101,9 +1215,9 @@ local function debuggerCreateWatchWindow()
|
||||
copas.addthread(function ()
|
||||
local _, _, err = debugger.execute(expr..'='..value)
|
||||
if err then
|
||||
watchCtrl:SetItemText(origitem, 'error: '..err:gsub("%[.-%]:%d+:%s+",""))
|
||||
else
|
||||
updateWatchesSync(item)
|
||||
watchCtrl:SetItemText(item, 'error: '..err:gsub("%[.-%]:%d+:%s+",""))
|
||||
elseif itemupd then
|
||||
updateWatchesSync(itemupd)
|
||||
end
|
||||
updateStackSync()
|
||||
end)
|
||||
@@ -1139,6 +1253,14 @@ local function debuggerCreateWatchWindow()
|
||||
names[value] = nil
|
||||
end)
|
||||
|
||||
watchCtrl:Connect(wx.wxEVT_SET_FOCUS, function(event)
|
||||
if debugger.needrefresh.watches then
|
||||
updateWatches()
|
||||
debugger.needrefresh.watches = false
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
local item
|
||||
-- wx.wxEVT_CONTEXT_MENU is only triggered over tree items on OSX,
|
||||
-- but it needs to be also triggered below any item to add a watch,
|
||||
@@ -1148,11 +1270,14 @@ local function debuggerCreateWatchWindow()
|
||||
-- store the item to be used in edit/delete actions
|
||||
item = watchCtrl:HitTest(watchCtrl:ScreenToClient(wx.wxGetMousePosition()))
|
||||
local editlabel = watchCtrl:IsWatch(item) and TR("&Edit Watch") or TR("&Edit Value")
|
||||
watchCtrl:PopupMenu(wx.wxMenu {
|
||||
local menu = wx.wxMenu {
|
||||
{ ID_ADDWATCH, TR("&Add Watch")..KSC(ID_ADDWATCH) },
|
||||
{ ID_EDITWATCH, editlabel..KSC(ID_EDITWATCH) },
|
||||
{ ID_DELETEWATCH, TR("&Delete Watch")..KSC(ID_DELETEWATCH) },
|
||||
})
|
||||
{ ID_COPYWATCHVALUE, TR("&Copy Value")..KSC(ID_COPYWATCHVALUE) },
|
||||
}
|
||||
PackageEventHandle("onMenuWatch", menu, watchCtrl, event)
|
||||
watchCtrl:PopupMenu(menu)
|
||||
item = nil
|
||||
end)
|
||||
|
||||
@@ -1169,6 +1294,14 @@ local function debuggerCreateWatchWindow()
|
||||
watchCtrl:Connect(ID_DELETEWATCH, wx.wxEVT_UPDATE_UI,
|
||||
function (event) event:Enable(watchCtrl:IsWatch(item or watchCtrl:GetSelection())) end)
|
||||
|
||||
watchCtrl:Connect(ID_COPYWATCHVALUE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function (event) watchCtrl:CopyItemValue(item or watchCtrl:GetSelection()) end)
|
||||
watchCtrl:Connect(ID_COPYWATCHVALUE, wx.wxEVT_UPDATE_UI, function (event)
|
||||
-- allow copying only when the debugger is available
|
||||
event:Enable(item:IsOk() and debugger.server and not debugger.running
|
||||
and (not debugger.scratchpad or debugger.scratchpad.paused))
|
||||
end)
|
||||
|
||||
local label
|
||||
watchCtrl:Connect(wx.wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT,
|
||||
function (event)
|
||||
@@ -1253,6 +1386,10 @@ function DebuggerStop(resetpid)
|
||||
local lines = TR("traced %d instruction", debugger.stats.line):format(debugger.stats.line)
|
||||
DisplayOutputLn(TR("Debugging session completed (%s)."):format(lines))
|
||||
nameOutputTab(debugger.pid and TR("Output (running)") or TR("Output"))
|
||||
if debugger.runtocursor then
|
||||
local ed, ln = unpack(debugger.runtocursor)
|
||||
DebuggerToggleBreakpoint(ed, ln)
|
||||
end
|
||||
else
|
||||
-- it's possible that the application couldn't start, or that the
|
||||
-- debugger in the application didn't start, which means there is
|
||||
@@ -1270,13 +1407,19 @@ local function debuggerMakeFileName(editor)
|
||||
end
|
||||
|
||||
function DebuggerToggleBreakpoint(editor, line)
|
||||
local markers = editor:MarkerGet(line)
|
||||
local filePath = debugger.editormap and debugger.editormap[editor]
|
||||
or debuggerMakeFileName(editor)
|
||||
if bit.band(markers, BREAKPOINT_MARKER_VALUE) > 0 then
|
||||
if bit.band(editor:MarkerGet(line), BREAKPOINT_MARKER_VALUE) > 0 then
|
||||
-- if there is pending "run-to-cursor" call at this location, remove it
|
||||
local ed, ln = unpack(debugger.runtocursor or {})
|
||||
local same = ed and ln and ed:GetId() == editor:GetId() and ln == line
|
||||
if same then debugger.runtocursor = nil end
|
||||
|
||||
editor:MarkerDelete(line, BREAKPOINT_MARKER)
|
||||
if debugger.server then debugger.breakpoint(filePath, line+1, false) end
|
||||
else
|
||||
if isemptyline(editor, line+1) then return end
|
||||
|
||||
editor:MarkerAdd(line, BREAKPOINT_MARKER)
|
||||
if debugger.server then debugger.breakpoint(filePath, line+1, true) end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -6,7 +6,6 @@
|
||||
local editorID = 100 -- window id to create editor pages with, incremented for new editors
|
||||
|
||||
local openDocuments = ide.openDocuments
|
||||
local statusBar = ide.frame.statusBar
|
||||
local notebook = ide.frame.notebook
|
||||
local edcfg = ide.config.editor
|
||||
local styles = ide.config.styles
|
||||
@@ -14,7 +13,7 @@ local unpack = table.unpack or unpack
|
||||
local q = EscapeMagic
|
||||
|
||||
local margin = { LINENUMBER = 0, MARKER = 1, FOLD = 2 }
|
||||
local linenummask = "99999"
|
||||
local linenumlen = 4 + 0.5
|
||||
local foldtypes = {
|
||||
[0] = { wxstc.wxSTC_MARKNUM_FOLDEROPEN, wxstc.wxSTC_MARKNUM_FOLDER,
|
||||
wxstc.wxSTC_MARKNUM_FOLDERSUB, wxstc.wxSTC_MARKNUM_FOLDERTAIL, wxstc.wxSTC_MARKNUM_FOLDEREND,
|
||||
@@ -57,7 +56,7 @@ local function updateStatusText(editor)
|
||||
if ide.frame then
|
||||
for n in ipairs(texts) do
|
||||
if (texts[n] ~= statusTextTable[n]) then
|
||||
statusBar:SetStatusText(texts[n], n+1)
|
||||
ide:SetStatus(texts[n], n)
|
||||
statusTextTable[n] = texts[n]
|
||||
end
|
||||
end
|
||||
@@ -168,7 +167,6 @@ end
|
||||
function SetEditorSelection(selection)
|
||||
local editor = GetEditor(selection)
|
||||
updateStatusText(editor) -- update even if nil
|
||||
statusBar:SetStatusText("",1)
|
||||
ide.frame:SetTitle(ExpandPlaceholders(ide.config.format.apptitle))
|
||||
|
||||
if editor then
|
||||
@@ -208,17 +206,6 @@ function GetEditorFileAndCurInfo(nochecksave)
|
||||
return fn,info
|
||||
end
|
||||
|
||||
-- Set if the document is modified and update the notebook page text
|
||||
function SetDocumentModified(id, modified, text)
|
||||
local modpref, doc = '* ', openDocuments[id]
|
||||
if not doc then return end
|
||||
local pageText = text or notebook:GetPageText(doc.index):gsub("^"..EscapeMagic(modpref), "")
|
||||
|
||||
if modified then pageText = modpref..pageText end
|
||||
openDocuments[id].isModified = modified
|
||||
notebook:SetPageText(doc.index, pageText)
|
||||
end
|
||||
|
||||
function EditorAutoComplete(editor)
|
||||
if not (editor and editor.spec) then return end
|
||||
|
||||
@@ -247,15 +234,10 @@ function EditorAutoComplete(editor)
|
||||
-- know now which string is to be completed
|
||||
local userList = CreateAutoCompList(editor, lt, pos)
|
||||
|
||||
-- remove any suggestions that match the word the cursor is on
|
||||
-- for example, if typing 'foo' in front of 'bar', 'foobar' is not offered
|
||||
-- don't show if what's typed so far matches one of the options
|
||||
local right = linetx:sub(localpos+1,#linetx):match("^([%a_]+[%w_]*)")
|
||||
if userList and right then
|
||||
userList = userList:gsub("%f[%w_]"..lt..right.."%f[%W]",""):gsub(" +"," ")
|
||||
end
|
||||
|
||||
-- don't show the list if it only suggests what's already typed
|
||||
if userList and #userList > 0 and not lt:find(userList.."$") then
|
||||
local left = lt:match("[%w_]*$") -- extract one word on the left (without separators)
|
||||
if userList and #userList > 0 and not userList:find("%f[%w_]"..left..(right or "").."%f[^%w_]") then
|
||||
editor:UserListShow(1, userList)
|
||||
elseif editor:AutoCompActive() then
|
||||
editor:AutoCompCancel()
|
||||
@@ -421,8 +403,13 @@ function EditorIsModified(editor)
|
||||
end
|
||||
|
||||
-- Indicator handling for functions and local/global variables
|
||||
-- indicator.MASKED is handled separately, so don't include in MAX
|
||||
local indicator = {FNCALL = 0, LOCAL = 1, GLOBAL = 2, MASKING = 3, MASKED = 4, MAX = 3}
|
||||
local indicator = {
|
||||
FNCALL = ide:GetIndicator("core.fncall"),
|
||||
LOCAL = ide:GetIndicator("core.varlocal"),
|
||||
GLOBAL = ide:GetIndicator("core.varglobal"),
|
||||
MASKING = ide:GetIndicator("core.varmasking"),
|
||||
MASKED = ide:GetIndicator("core.varmasked"),
|
||||
}
|
||||
|
||||
function IndicateFunctionsOnly(editor, lines, linee)
|
||||
local sindic = styles.indicator
|
||||
@@ -517,7 +504,7 @@ function IndicateAll(editor, lines)
|
||||
|
||||
-- this function can be called for an editor tab that is already closed
|
||||
-- when there are still some pending events for it, so handle it.
|
||||
if not pcall(function() editor:GetId() end) then return end
|
||||
if not ide:IsValidCtrl(editor) then return end
|
||||
|
||||
-- if markvars is not set in the spec, nothing else to do
|
||||
if not (editor.spec and editor.spec.marksymbols) then return end
|
||||
@@ -582,7 +569,9 @@ function IndicateAll(editor, lines)
|
||||
end
|
||||
|
||||
local cleared = {}
|
||||
for indic = 0, indicator.MAX do cleared[indic] = pos end
|
||||
for _, indic in ipairs {indicator.FNCALL, indicator.LOCAL, indicator.GLOBAL, indicator.MASKING} do
|
||||
cleared[indic] = pos
|
||||
end
|
||||
|
||||
local function IndicateOne(indic, pos, length)
|
||||
editor:SetIndicatorCurrent(indic)
|
||||
@@ -629,8 +618,10 @@ function IndicateAll(editor, lines)
|
||||
|
||||
if indic.varmasking then IndicateOne(indicator.MASKING, lineinfo, #name) end
|
||||
end
|
||||
if lineinfo and not nobreak and (op == 'Statement' or op == 'String') and TimeGet()-s > canwork then
|
||||
delayed[editor] = {lineinfo, vars}
|
||||
-- in some rare cases `nobreak` may be a number indicating a desired
|
||||
-- position from which to start in case of a break
|
||||
if lineinfo and nobreak ~= true and (op == 'Statement' or op == 'String') and TimeGet()-s > canwork then
|
||||
delayed[editor] = {tonumber(nobreak) or lineinfo, vars}
|
||||
break
|
||||
end
|
||||
end
|
||||
@@ -641,11 +632,11 @@ function IndicateAll(editor, lines)
|
||||
-- don't clear "masked" indicators as those can be set out of order (so
|
||||
-- last updated fragment is not always the last in terms of its position);
|
||||
-- these indicators should be up-to-date to the end of the code fragment.
|
||||
-- also don't clear "funccall" indicators as those can be set based on
|
||||
-- IndicateFunctionsOnly processing, which is dealt with separately
|
||||
local funconly = ide.config.editor.showfncall and editor.spec.isfncall
|
||||
for indic = funconly and indicator.LOCAL or indicator.FNCALL, indicator.MAX do
|
||||
IndicateOne(indic, pos, 0)
|
||||
for _, indic in ipairs {indicator.FNCALL, indicator.LOCAL, indicator.GLOBAL, indicator.MASKING} do
|
||||
-- don't clear "funccall" indicators as those can be set based on
|
||||
-- IndicateFunctionsOnly processing, which is dealt with separately
|
||||
if indic ~= indicator.FNCALL or not funconly then IndicateOne(indic, pos, 0) end
|
||||
end
|
||||
|
||||
local needmore = delayed[editor] ~= nil
|
||||
@@ -660,19 +651,19 @@ end
|
||||
-- ----------------------------------------------------------------------------
|
||||
-- Create an editor
|
||||
function CreateEditor(bare)
|
||||
local editor = wxstc.wxStyledTextCtrl(notebook, editorID,
|
||||
wx.wxDefaultPosition, wx.wxSize(0, 0),
|
||||
wx.wxBORDER_NONE)
|
||||
local editor = ide:CreateStyledTextCtrl(notebook, editorID,
|
||||
wx.wxDefaultPosition, wx.wxSize(0, 0), wx.wxBORDER_NONE)
|
||||
|
||||
editorID = editorID + 1 -- increment so they're always unique
|
||||
|
||||
editor.matchon = false
|
||||
editor.assignscache = false
|
||||
editor.autocomplete = false
|
||||
editor.bom = false
|
||||
editor.updated = 0
|
||||
editor.jumpstack = {}
|
||||
editor.ctrlcache = {}
|
||||
editor.tokenlist = {}
|
||||
editor.onidle = {}
|
||||
-- populate cache with Ctrl-<letter> combinations for workaround on Linux
|
||||
-- http://wxwidgets.10942.n7.nabble.com/Menu-shortcuts-inconsistentcy-issue-td85065.html
|
||||
for id, shortcut in pairs(ide.config.keymap) do
|
||||
@@ -701,7 +692,7 @@ function CreateEditor(bare)
|
||||
editor:SetTabWidth(tonumber(edcfg.tabwidth) or 2)
|
||||
editor:SetIndent(tonumber(edcfg.tabwidth) or 2)
|
||||
editor:SetUseTabs(edcfg.usetabs and true or false)
|
||||
editor:SetIndentationGuides(edcfg.indentguide and true or false)
|
||||
editor:SetIndentationGuides(tonumber(edcfg.indentguide) or (edcfg.indentguide and true or false))
|
||||
editor:SetViewWhiteSpace(edcfg.whitespace and true or false)
|
||||
|
||||
if (edcfg.usewrap) then
|
||||
@@ -736,7 +727,7 @@ function CreateEditor(bare)
|
||||
editor:SetMarginType(margin.LINENUMBER, wxstc.wxSTC_MARGIN_NUMBER)
|
||||
editor:SetMarginMask(margin.LINENUMBER, 0)
|
||||
editor:SetMarginWidth(margin.LINENUMBER,
|
||||
editor:TextWidth(wxstc.wxSTC_STYLE_DEFAULT, linenummask))
|
||||
math.floor(linenumlen * editor:TextWidth(wxstc.wxSTC_STYLE_DEFAULT, "8")))
|
||||
|
||||
editor:SetMarginWidth(margin.MARKER, 18)
|
||||
editor:SetMarginType(margin.MARKER, wxstc.wxSTC_MARGIN_SYMBOL)
|
||||
@@ -786,32 +777,14 @@ function CreateEditor(bare)
|
||||
editor:AutoCompStops([[ \n\t=-+():.,;*/!"'$%&~'#°^@?´`<>][|}{]])
|
||||
end
|
||||
|
||||
function editor:GotoPosEnforcePolicy(pos)
|
||||
self:GotoPos(pos)
|
||||
self:EnsureVisibleEnforcePolicy(self:LineFromPosition(pos))
|
||||
end
|
||||
|
||||
local function getMarginWidth(editor)
|
||||
local width = 0
|
||||
for m = 0, 7 do width = width + editor:GetMarginWidth(m) end
|
||||
return width
|
||||
end
|
||||
|
||||
function editor:ShowPosEnforcePolicy(pos)
|
||||
local line = self:LineFromPosition(pos)
|
||||
self:EnsureVisibleEnforcePolicy(line)
|
||||
if edcfg.usewrap then return end -- skip the rest if line wrapping is on
|
||||
local xwidth = self:GetClientSize():GetWidth() - getMarginWidth(editor)
|
||||
local xoffset = self:GetTextExtent(self:GetLine(line):sub(1, pos-self:PositionFromLine(line)+1))
|
||||
self:SetXOffset(xoffset > xwidth and xoffset-xwidth or 0)
|
||||
end
|
||||
|
||||
function editor:GetTokenList() return self.tokenlist end
|
||||
function editor:ResetTokenList() self.tokenlist = {}; return self.tokenlist end
|
||||
|
||||
function editor:SetupKeywords(...) return SetupKeywords(self, ...) end
|
||||
function editor:ValueFromPosition(pos) return getValAtPosition(self, pos) end
|
||||
|
||||
function editor:DoWhenIdle(func) table.insert(self.onidle, func) end
|
||||
|
||||
-- GotoPos should work by itself, but it doesn't (wx 2.9.5).
|
||||
-- This is likely because the editor window hasn't been refreshed yet,
|
||||
-- so its LinesOnScreen method returns 0/-1, which skews the calculations.
|
||||
@@ -850,13 +823,12 @@ function CreateEditor(bare)
|
||||
if marginno == margin.MARKER then
|
||||
DebuggerToggleBreakpoint(editor, line)
|
||||
elseif marginno == margin.FOLD then
|
||||
local header = bit.band(editor:GetFoldLevel(line),
|
||||
wxstc.wxSTC_FOLDLEVELHEADERFLAG) == wxstc.wxSTC_FOLDLEVELHEADERFLAG
|
||||
if wx.wxGetKeyState(wx.WXK_SHIFT) and wx.wxGetKeyState(wx.WXK_CONTROL) then
|
||||
FoldSome()
|
||||
else
|
||||
local level = editor:GetFoldLevel(line)
|
||||
if HasBit(level, wxstc.wxSTC_FOLDLEVELHEADERFLAG) then
|
||||
editor:ToggleFold(line)
|
||||
end
|
||||
editor:FoldSome()
|
||||
elseif header then
|
||||
editor:ToggleFold(line)
|
||||
end
|
||||
end
|
||||
end)
|
||||
@@ -867,14 +839,25 @@ function CreateEditor(bare)
|
||||
editor.assignscache = false
|
||||
end
|
||||
local evtype = event:GetModificationType()
|
||||
if bit.band(evtype, wxstc.wxSTC_MOD_CHANGEMARKER) == 0 then
|
||||
-- this event is being called on OSX too frequently, so skip these notifications
|
||||
editor.updated = TimeGet()
|
||||
end
|
||||
local pos = event:GetPosition()
|
||||
local firstLine = editor:LineFromPosition(pos)
|
||||
local inserted = bit.band(evtype, wxstc.wxSTC_MOD_INSERTTEXT) ~= 0
|
||||
local deleted = bit.band(evtype, wxstc.wxSTC_MOD_DELETETEXT) ~= 0
|
||||
if (inserted or deleted) then
|
||||
SetAutoRecoveryMark()
|
||||
|
||||
local firstLine = editor:LineFromPosition(event:GetPosition())
|
||||
local linesChanged = inserted and event:GetLinesAdded() or 0
|
||||
table.insert(editor.ev, {event:GetPosition(), linesChanged})
|
||||
-- collate events if they are for the same line
|
||||
local events = #editor.ev
|
||||
if events == 0 or editor.ev[events][1] ~= firstLine then
|
||||
editor.ev[events+1] = {firstLine, linesChanged}
|
||||
elseif events > 0 and editor.ev[events][1] == firstLine then
|
||||
editor.ev[events][2] = math.max(editor.ev[events][2], linesChanged)
|
||||
end
|
||||
DynamicWordsAdd(editor, nil, firstLine, linesChanged)
|
||||
end
|
||||
|
||||
@@ -883,29 +866,37 @@ function CreateEditor(bare)
|
||||
|
||||
if (beforeInserted or beforeDeleted) then
|
||||
-- unfold the current line being changed if folded
|
||||
local firstLine = editor:LineFromPosition(event:GetPosition())
|
||||
if not editor:GetFoldExpanded(firstLine) then editor:ToggleFold(firstLine) end
|
||||
local lastLine = editor:LineFromPosition(pos+event:GetLength())
|
||||
if not editor:GetFoldExpanded(firstLine)
|
||||
or not editor:GetLineVisible(firstLine)
|
||||
or not editor:GetLineVisible(lastLine) then
|
||||
editor:ToggleFold(firstLine)
|
||||
for line = firstLine, lastLine do
|
||||
if not editor:GetLineVisible(line) then editor:ToggleFold(line) end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- hide calltip/auto-complete after undo/redo/delete
|
||||
local undodelete = (wxstc.wxSTC_MOD_DELETETEXT
|
||||
+ wxstc.wxSTC_PERFORMED_UNDO + wxstc.wxSTC_PERFORMED_REDO)
|
||||
if bit.band(evtype, undodelete) ~= 0 then
|
||||
if editor:CallTipActive() then editor:CallTipCancel() end
|
||||
if editor:AutoCompActive() then editor:AutoCompCancel() end
|
||||
editor:DoWhenIdle(function(editor)
|
||||
if editor:CallTipActive() then editor:CallTipCancel() end
|
||||
if editor:AutoCompActive() then editor:AutoCompCancel() end
|
||||
end)
|
||||
end
|
||||
|
||||
if ide.config.acandtip.nodynwords then return end
|
||||
-- only required to track changes
|
||||
|
||||
if beforeDeleted then
|
||||
local pos = event:GetPosition()
|
||||
local text = editor:GetTextRange(pos, pos+event:GetLength())
|
||||
local _, numlines = text:gsub("\r?\n","%1")
|
||||
DynamicWordsRem(editor,nil,editor:LineFromPosition(pos), numlines)
|
||||
DynamicWordsRem(editor,nil,firstLine, numlines)
|
||||
end
|
||||
if beforeInserted then
|
||||
DynamicWordsRem(editor,nil,editor:LineFromPosition(event:GetPosition()), 0)
|
||||
DynamicWordsRem(editor,nil,firstLine, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -943,7 +934,9 @@ function CreateEditor(bare)
|
||||
|
||||
if edcfg.smartindent
|
||||
-- don't apply smartindent to multi-line comments or strings
|
||||
and not (editor.spec.iscomment[style] or editor.spec.isstring[style])
|
||||
and not (editor.spec.iscomment[style]
|
||||
or editor.spec.isstring[style]
|
||||
or (MarkupIsAny and MarkupIsAny(style)))
|
||||
and editor.spec.isdecindent and editor.spec.isincindent then
|
||||
local closed, blockend = editor.spec.isdecindent(linedone)
|
||||
local opened = editor.spec.isincindent(linedone)
|
||||
@@ -976,9 +969,9 @@ function CreateEditor(bare)
|
||||
|
||||
elseif ide.config.autocomplete then -- code completion prompt
|
||||
local trigger = linetxtopos:match("["..editor.spec.sep.."%w_]+$")
|
||||
-- make sure .autocomplete is never `nil` or editor.autocomplete fails
|
||||
editor.autocomplete = trigger and (#trigger > 1 or trigger:match("["..editor.spec.sep.."]"))
|
||||
and true or false
|
||||
if trigger and (#trigger > 1 or trigger:match("["..editor.spec.sep.."]")) then
|
||||
editor:DoWhenIdle(function(editor) EditorAutoComplete(editor) end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -1018,17 +1011,39 @@ function CreateEditor(bare)
|
||||
|
||||
editor:Connect(wx.wxEVT_KILL_FOCUS,
|
||||
function (event)
|
||||
if editor:AutoCompActive() then editor:AutoCompCancel() end
|
||||
-- on OSX clicking on scrollbar in the popup is causing the editor to lose focus,
|
||||
-- which causes canceling of auto-complete, which later cause crash because
|
||||
-- the window is destroyed in wxwidgets after already being closed. Skip on OSX.
|
||||
if ide.osname ~= 'Macintosh' and editor:AutoCompActive() then editor:AutoCompCancel() end
|
||||
PackageEventHandle("onEditorFocusLost", editor)
|
||||
event:Skip()
|
||||
end)
|
||||
|
||||
local eol = {
|
||||
[wxstc.wxSTC_EOL_CRLF] = "\r\n",
|
||||
[wxstc.wxSTC_EOL_LF] = "\n",
|
||||
[wxstc.wxSTC_EOL_CR] = "\r",
|
||||
}
|
||||
local function addOneLine(editor, adj)
|
||||
local pos = editor:GetLineEndPosition(editor:LineFromPosition(editor:GetCurrentPos())+(adj or 0))
|
||||
local added = eol[editor:GetEOLMode()] or "\n"
|
||||
editor:InsertText(pos, added)
|
||||
editor:SetCurrentPos(pos+#added)
|
||||
|
||||
local ev = wxstc.wxStyledTextEvent(wxstc.wxEVT_STC_CHARADDED)
|
||||
ev:SetKey(string.byte("\n"))
|
||||
editor:AddPendingEvent(ev)
|
||||
end
|
||||
|
||||
editor:Connect(wxstc.wxEVT_STC_USERLISTSELECTION,
|
||||
function (event)
|
||||
if PackageEventHandle("onEditorUserlistSelection", editor, event) == false then
|
||||
return
|
||||
end
|
||||
|
||||
-- if used Shift-Enter, then skip auto complete and just do Enter
|
||||
if wx.wxGetKeyState(wx.WXK_SHIFT) then return addOneLine(editor) end
|
||||
|
||||
if ide.wxver >= "2.9.5" and editor:GetSelections() > 1 then
|
||||
local text = event:GetText()
|
||||
-- capture all positions as the selection may change
|
||||
@@ -1043,14 +1058,14 @@ function CreateEditor(bare)
|
||||
editor:BeginUndoAction()
|
||||
for s = #positions, 1, -1 do
|
||||
local pos = positions[s]
|
||||
local start_pos = editor:WordStartPosition(pos, true)
|
||||
editor:SetSelection(start_pos, pos)
|
||||
local startpos = editor:WordStartPosition(pos, true)
|
||||
editor:SetSelection(startpos, pos)
|
||||
editor:ReplaceSelection(text)
|
||||
-- if this is the main position, save new cursor position to restore
|
||||
if pos == mainpos then mainpos = editor:GetCurrentPos()
|
||||
elseif pos < mainpos then
|
||||
-- adjust main position as earlier changes may affect it
|
||||
mainpos = mainpos + #text - (pos - start_pos)
|
||||
mainpos = mainpos + #text - (pos - startpos)
|
||||
end
|
||||
end
|
||||
editor:EndUndoAction()
|
||||
@@ -1058,20 +1073,23 @@ function CreateEditor(bare)
|
||||
editor:GotoPos(mainpos)
|
||||
else
|
||||
local pos = editor:GetCurrentPos()
|
||||
local start_pos = editor:WordStartPosition(pos, true)
|
||||
editor:SetSelection(start_pos, pos)
|
||||
local startpos = editor:WordStartPosition(pos, true)
|
||||
local endpos = editor:WordEndPosition(pos, true)
|
||||
editor:SetSelection(startpos, ide.config.acandtip.droprest and endpos or pos)
|
||||
editor:ReplaceSelection(event:GetText())
|
||||
end
|
||||
end)
|
||||
|
||||
editor:Connect(wxstc.wxEVT_STC_SAVEPOINTREACHED,
|
||||
function ()
|
||||
SetDocumentModified(editor:GetId(), false)
|
||||
local doc = ide:GetDocument(editor)
|
||||
if doc then doc:SetModified(false) end
|
||||
end)
|
||||
|
||||
editor:Connect(wxstc.wxEVT_STC_SAVEPOINTLEFT,
|
||||
function ()
|
||||
SetDocumentModified(editor:GetId(), true)
|
||||
local doc = ide:GetDocument(editor)
|
||||
if doc then doc:SetModified(true) end
|
||||
end)
|
||||
|
||||
-- "updateStatusText" should be called in UPDATEUI event, but it creates
|
||||
@@ -1099,11 +1117,21 @@ function CreateEditor(bare)
|
||||
editor:Refresh()
|
||||
end
|
||||
end
|
||||
|
||||
-- adjust line number margin, but only if it's already shown
|
||||
local linecount = #tostring(editor:GetLineCount()) + 0.5
|
||||
local mwidth = editor:GetMarginWidth(margin.LINENUMBER)
|
||||
if mwidth > 0 then
|
||||
local width = math.max(linecount, linenumlen) * editor:TextWidth(wxstc.wxSTC_STYLE_DEFAULT, "8")
|
||||
if mwidth ~= width then editor:SetMarginWidth(margin.LINENUMBER, math.floor(width)) end
|
||||
end
|
||||
end)
|
||||
|
||||
local alreadyProcessed = 0
|
||||
editor:Connect(wxstc.wxEVT_STC_UPDATEUI,
|
||||
function (event)
|
||||
PackageEventHandle("onEditorUpdateUI", editor, event)
|
||||
|
||||
-- some of UPDATEUI events are triggered by blinking cursor, and since
|
||||
-- there are no changes, the rest of the processing can be skipped;
|
||||
-- the reason for `alreadyProcessed` is that it is not possible
|
||||
@@ -1119,20 +1147,20 @@ function CreateEditor(bare)
|
||||
end
|
||||
alreadyProcessed = alreadyProcessed + 1
|
||||
|
||||
PackageEventHandle("onEditorUpdateUI", editor, event)
|
||||
|
||||
if ide.osname ~= 'Windows' then updateStatusText(editor) end
|
||||
|
||||
editor:GotoPosDelayed()
|
||||
updateBraceMatch(editor)
|
||||
local minupdated
|
||||
for _,iv in ipairs(editor.ev) do
|
||||
local line = editor:LineFromPosition(iv[1])
|
||||
local line = iv[1]
|
||||
if not minupdated or line < minupdated then minupdated = line end
|
||||
local ok, res = pcall(IndicateAll, editor, line)
|
||||
if not ok then DisplayOutputLn("Internal error: ",res,line,line+iv[2]) end
|
||||
IndicateFunctionsOnly(editor,line,line+iv[2])
|
||||
end
|
||||
if minupdated then
|
||||
local ok, res = pcall(IndicateAll, editor, minupdated)
|
||||
if not ok then DisplayOutputLn("Internal error: ",res,minupdated) end
|
||||
end
|
||||
local firstvisible = editor:DocLineFromVisible(editor:GetFirstVisibleLine())
|
||||
local lastline = math.min(editor:GetLineCount(),
|
||||
firstvisible + editor:LinesOnScreen())
|
||||
@@ -1145,11 +1173,7 @@ function CreateEditor(bare)
|
||||
|
||||
editor:Connect(wx.wxEVT_IDLE,
|
||||
function (event)
|
||||
-- show auto-complete if needed
|
||||
if editor.autocomplete then
|
||||
EditorAutoComplete(editor)
|
||||
editor.autocomplete = false
|
||||
end
|
||||
while #editor.onidle > 0 do table.remove(editor.onidle)(editor) end
|
||||
end)
|
||||
|
||||
editor:Connect(wx.wxEVT_LEFT_DOWN,
|
||||
@@ -1204,8 +1228,14 @@ function CreateEditor(bare)
|
||||
local first, last = 0, notebook:GetPageCount()-1
|
||||
if PackageEventHandle("onEditorKeyDown", editor, event) == false then
|
||||
-- this event has already been handled
|
||||
elseif keycode == wx.WXK_ESCAPE and ide.frame:IsFullScreen() then
|
||||
ShowFullScreen(false)
|
||||
elseif keycode == wx.WXK_ESCAPE then
|
||||
if editor:CallTipActive() or editor:AutoCompActive() then
|
||||
event:Skip()
|
||||
elseif ide.findReplace:IsShown() then
|
||||
ide.findReplace:Hide()
|
||||
elseif ide:GetMainFrame():IsFullScreen() then
|
||||
ShowFullScreen(false)
|
||||
end
|
||||
-- Ctrl-Home and Ctrl-End don't work on OSX with 2.9.5+; fix it
|
||||
elseif ide.osname == 'Macintosh' and ide.wxver >= "2.9.5"
|
||||
and (mod == wx.wxMOD_RAW_CONTROL or mod == (wx.wxMOD_RAW_CONTROL + wx.wxMOD_SHIFT))
|
||||
@@ -1228,18 +1258,7 @@ function CreateEditor(bare)
|
||||
and (mod == wx.wxMOD_NONE) then
|
||||
-- Delete and Backspace behave the same way for selected text
|
||||
if #(editor:GetSelectedText()) > 0 then
|
||||
local length = editor:GetLength()
|
||||
local selections = ide.wxver >= "2.9.5" and editor:GetSelections() or 1
|
||||
editor:Clear() -- remove selected fragments
|
||||
|
||||
-- check if the modification has failed, which may happen
|
||||
-- if there is "invisible" text in the selected fragment.
|
||||
-- if there is only one selection, then delete manually.
|
||||
if length == editor:GetLength() and selections == 1 then
|
||||
editor:SetTargetStart(editor:GetSelectionStart())
|
||||
editor:SetTargetEnd(editor:GetSelectionEnd())
|
||||
editor:ReplaceTarget("")
|
||||
end
|
||||
editor:ClearAny()
|
||||
else
|
||||
local pos = editor:GetCurrentPos()
|
||||
if keycode == wx.WXK_BACK then
|
||||
@@ -1283,6 +1302,9 @@ function CreateEditor(bare)
|
||||
or (keycode == wx.WXK_INSERT and mod == wx.wxMOD_CONTROL) then
|
||||
ide.frame:AddPendingEvent(wx.wxCommandEvent(
|
||||
wx.wxEVT_COMMAND_MENU_SELECTED, keycode == wx.WXK_INSERT and ID_COPY or ID_CUT))
|
||||
elseif (keycode == wx.WXK_RETURN or keycode == wx.WXK_NUMPAD_ENTER)
|
||||
and (mod == wx.wxMOD_CONTROL or mod == (wx.wxMOD_CONTROL + wx.wxMOD_SHIFT)) then
|
||||
addOneLine(editor, mod == (wx.wxMOD_CONTROL + wx.wxMOD_SHIFT) and -1 or 0)
|
||||
elseif ide.osname == "Unix" and ide.wxver >= "2.9.5"
|
||||
and mod == wx.wxMOD_CONTROL and editor.ctrlcache[keycode] then
|
||||
ide.frame:AddPendingEvent(wx.wxCommandEvent(
|
||||
@@ -1334,8 +1356,6 @@ function CreateEditor(bare)
|
||||
|
||||
editor:Connect(wxstc.wxEVT_STC_ZOOM,
|
||||
function(event)
|
||||
editor:SetMarginWidth(margin.LINENUMBER,
|
||||
editor:TextWidth(wxstc.wxSTC_STYLE_DEFAULT, linenummask))
|
||||
-- if Shift+Zoom is used, then zoom all editors, not just the current one
|
||||
if wx.wxGetKeyState(wx.WXK_SHIFT) then
|
||||
local zoom = editor:GetZoom()
|
||||
@@ -1377,6 +1397,7 @@ function CreateEditor(bare)
|
||||
{ ID_QUICKADDWATCH, TR("Add Watch Expression") },
|
||||
{ ID_QUICKEVAL, TR("Evaluate In Console") },
|
||||
{ ID_ADDTOSCRATCHPAD, TR("Add To Scratchpad") },
|
||||
{ ID_RUNTO, TR("Run To Cursor") },
|
||||
}
|
||||
|
||||
menu:Enable(ID_GOTODEFINITION, instances and instances[0])
|
||||
@@ -1403,6 +1424,13 @@ function CreateEditor(bare)
|
||||
editor:SetMouseDwellTime(dwelltime) -- restore dwelling
|
||||
end)
|
||||
|
||||
editor:Connect(ID_RUNTO, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
if pos ~= wxstc.wxSTC_INVALID_POSITION then
|
||||
ide:GetDebugger().runto(editor, editor:LineFromPosition(pos))
|
||||
end
|
||||
end)
|
||||
|
||||
editor:Connect(ID_GOTODEFINITION, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function(event)
|
||||
if value and instances[0] then
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
@@ -12,25 +12,34 @@ ide.filetree = {
|
||||
projdirlist = {},
|
||||
projdirpartmap = {},
|
||||
projtreeCtrl = nil,
|
||||
imglist = ide:CreateImageList("PROJECT", "FOLDER", "FILE-KNOWN", "FILE-NORMAL"),
|
||||
settings = {extensionignore = {}},
|
||||
imglist = ide:CreateImageList("PROJECT",
|
||||
"FOLDER", "FILE-KNOWN", "FILE-NORMAL", "FILE-NORMAL-START",
|
||||
"FOLDER-MAPPED"),
|
||||
settings = {extensionignore = {}, startfile = {}, mapped = {}},
|
||||
}
|
||||
local filetree = ide.filetree
|
||||
local iscaseinsensitive = wx.wxFileName("A"):SameAs(wx.wxFileName("a"))
|
||||
local pathsep = GetPathSeparator()
|
||||
local q = EscapeMagic
|
||||
local image = { DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2 }
|
||||
local image = {
|
||||
DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2, FILEOTHERSTART = 3,
|
||||
DIRECTORYMAPPED = 4,
|
||||
}
|
||||
|
||||
do
|
||||
local settings = ide:AddPackage('core.filetree', {}):GetSettings()
|
||||
for setting in pairs(filetree.settings) do
|
||||
if settings[setting] then filetree.settings[setting] = settings[setting] end
|
||||
end
|
||||
end
|
||||
MergeSettings(filetree.settings, ide:AddPackage('core.filetree', {}):GetSettings())
|
||||
|
||||
-- generic tree
|
||||
-- ------------
|
||||
|
||||
local function getIcon(name, isdir)
|
||||
local startfile = GetFullPathIfExists(FileTreeGetDir(),
|
||||
filetree.settings.startfile[FileTreeGetDir()])
|
||||
local known = GetSpec(GetFileExt(name))
|
||||
local icon = isdir and image.DIRECTORY or known and image.FILEKNOWN or image.FILEOTHER
|
||||
if startfile and startfile == name then icon = image.FILEOTHERSTART end
|
||||
return icon
|
||||
end
|
||||
|
||||
local function treeAddDir(tree,parent_id,rootdir)
|
||||
local items = {}
|
||||
local item, cookie = tree:GetFirstChild(parent_id)
|
||||
@@ -41,14 +50,27 @@ local function treeAddDir(tree,parent_id,rootdir)
|
||||
|
||||
local cache = {}
|
||||
local curr
|
||||
local files = FileSysGetRecursive(rootdir)
|
||||
local dirmapped = {}
|
||||
if tree:IsRoot(parent_id) then
|
||||
local mapped = filetree.settings.mapped[FileTreeGetDir()] or {}
|
||||
table.sort(mapped)
|
||||
-- insert into files at the sorted order
|
||||
for i, v in ipairs(mapped) do
|
||||
table.insert(files, i, v)
|
||||
dirmapped[v] = true
|
||||
end
|
||||
end
|
||||
|
||||
for _, file in ipairs(FileSysGetRecursive(rootdir)) do
|
||||
for _, file in ipairs(files) do
|
||||
local name, dir = file:match("([^"..pathsep.."]+)("..pathsep.."?)$")
|
||||
local isdir = #dir>0
|
||||
local ext = GetFileExt(name)
|
||||
if isdir or not filetree.settings.extensionignore[ext] then
|
||||
local known = GetSpec(ext)
|
||||
local icon = isdir and image.DIRECTORY or known and image.FILEKNOWN or image.FILEOTHER
|
||||
if isdir or not filetree.settings.extensionignore[GetFileExt(name)] then
|
||||
local icon = getIcon(file, isdir)
|
||||
|
||||
-- keep full name for the mapped directories
|
||||
if dirmapped[file] then name, icon = file, image.DIRECTORYMAPPED end
|
||||
|
||||
local item = items[name .. icon]
|
||||
if item then -- existing item
|
||||
-- keep deleting items until we find item
|
||||
@@ -145,8 +167,10 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
local function isIt(item, imgtype) return tree:GetItemImage(item) == imgtype end
|
||||
|
||||
function tree:IsDirectory(item_id) return isIt(item_id, image.DIRECTORY) end
|
||||
function tree:IsDirMapped(item_id) return isIt(item_id, image.DIRECTORYMAPPED) end
|
||||
function tree:IsFileKnown(item_id) return isIt(item_id, image.FILEKNOWN) end
|
||||
function tree:IsFileOther(item_id) return isIt(item_id, image.FILEOTHER) end
|
||||
function tree:IsFileStart(item_id) return isIt(item_id, image.FILEOTHERSTART) end
|
||||
function tree:IsRoot(item_id) return not tree:GetItemParent(item_id):IsOk() end
|
||||
|
||||
function tree:FindItem(match)
|
||||
@@ -204,7 +228,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
|
||||
-- refresh the folder
|
||||
if (tree:IsDirectory(item_id)) then
|
||||
if (tree:IsDirectory(item_id) or tree:IsDirMapped(item_id)) then
|
||||
if wx.wxDirExists(name) then treeAddDir(tree,item_id,name)
|
||||
else refreshAncestors(tree:GetItemParent(item_id)) end -- stale content
|
||||
else -- open file
|
||||
@@ -213,11 +237,36 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
end
|
||||
|
||||
local function unMapDir(dir)
|
||||
local project = FileTreeGetDir()
|
||||
local mapped = filetree.settings.mapped[project] or {}
|
||||
for k, m in ipairs(mapped) do
|
||||
if m == dir then table.remove(mapped, k) end
|
||||
end
|
||||
filetree.settings.mapped[project] = mapped
|
||||
refreshAncestors(tree:GetRootItem())
|
||||
end
|
||||
local function mapDir()
|
||||
local project = FileTreeGetDir()
|
||||
local dirPicker = wx.wxDirDialog(ide.frame, TR("Choose a directory to map"),
|
||||
project ~= "" and project or wx.wxGetCwd(), wx.wxDIRP_DIR_MUST_EXIST)
|
||||
if dirPicker:ShowModal(true) ~= wx.wxID_OK then return end
|
||||
local dir = wx.wxFileName.DirName(FixDir(dirPicker:GetPath())):GetFullPath()
|
||||
local mapped = filetree.settings.mapped[project] or {}
|
||||
for _, m in ipairs(mapped) do
|
||||
if m == dir then return end -- already on the list
|
||||
end
|
||||
table.insert(mapped, dir)
|
||||
filetree.settings.mapped[project] = mapped
|
||||
refreshAncestors(tree:GetRootItem())
|
||||
end
|
||||
|
||||
local empty = ""
|
||||
local function renameItem(itemsrc, target)
|
||||
local isdir = tree:GetItemImage(itemsrc) == image.DIRECTORY
|
||||
local isnew = tree:GetItemText(itemsrc) == empty
|
||||
local source = tree:GetItemFullName(itemsrc)
|
||||
local cache = type(itemsrc) == 'table' and itemsrc or nil
|
||||
local isdir = not cache and tree:IsDirectory(itemsrc) or cache and cache.isdir or false
|
||||
local isnew = not cache and tree:GetItemText(itemsrc) == empty or cache and cache.isnew or false
|
||||
local source = cache and cache.fullname or tree:GetItemFullName(itemsrc)
|
||||
local fn = wx.wxFileName(target)
|
||||
|
||||
-- check if the target is the same as the source;
|
||||
@@ -239,9 +288,9 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
|
||||
-- check if existing file/dir is going to be overwritten
|
||||
if (wx.wxFileExists(target) or wx.wxDirExists(target))
|
||||
and not wx.wxFileName(source):SameAs(fn)
|
||||
and not ApproveFileOverwrite() then return false end
|
||||
local overwrite = ((wx.wxFileExists(target) or wx.wxDirExists(target))
|
||||
and not wx.wxFileName(source):SameAs(fn))
|
||||
if overwrite and not ApproveFileOverwrite() then return false end
|
||||
|
||||
if not fn:Mkdir(tonumber(755,8), wx.wxPATH_MKDIR_FULL) then
|
||||
ReportError(TR("Unable to create directory '%s'."):format(target))
|
||||
@@ -263,7 +312,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
end
|
||||
|
||||
refreshAncestors(tree:GetItemParent(itemsrc))
|
||||
refreshAncestors(cache and cache.parent or tree:GetItemParent(itemsrc))
|
||||
-- load file(s) into the same editor (if any); will also refresh the tree
|
||||
if #docs > 0 then
|
||||
for _, doc in ipairs(docs) do
|
||||
@@ -273,8 +322,12 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
-- /foo/baz/bar/file.lua, so change /foo/bar to /foo/baz/bar
|
||||
local path = (not iscaseinsensitive and fullpath:gsub(q(source), target)
|
||||
or fullpath:lower():gsub(q(source:lower()), target))
|
||||
LoadFile(path, doc.editor)
|
||||
if not isdir then PackageEventHandle("onEditorSave", doc.editor) end
|
||||
local editor = LoadFile(path)
|
||||
-- check if the file was loaded into another editor;
|
||||
-- this is possible is "foo" is renamed to "bar" and both are opened;
|
||||
-- if this happens, then "bar" is refreshed and "foo" can be closed.
|
||||
if doc.editor:GetId() ~= editor:GetId() then ClosePage(doc.index) end
|
||||
if not isdir and editor then PackageEventHandle("onEditorSave", editor) end
|
||||
end
|
||||
else -- refresh the tree and select the new item
|
||||
local itemdst = tree:FindItem(target)
|
||||
@@ -285,10 +338,23 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
tree:SetScrollPos(wx.wxHORIZONTAL, 0, true)
|
||||
end
|
||||
end
|
||||
|
||||
-- refresh the target if it's open and has been overwritten
|
||||
if overwrite and not isdir then
|
||||
local doc = ide:FindDocument(target)
|
||||
if doc then LoadFile(doc:GetFilePath(), doc:GetEditor()) end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
local function deleteItem(item_id)
|
||||
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
|
||||
-- if delete is for mapped directory, unmap it instead
|
||||
if tree:IsDirMapped(item_id) then
|
||||
unMapDir(tree:GetItemText(item_id))
|
||||
return
|
||||
end
|
||||
|
||||
local isdir = tree:IsDirectory(item_id)
|
||||
local source = tree:GetItemFullName(item_id)
|
||||
|
||||
if isdir and FileDirHasContent(source..pathsep) then return false end
|
||||
@@ -305,7 +371,10 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
else
|
||||
local doc = ide:FindDocument(source)
|
||||
if doc then ClosePage(doc.index) end
|
||||
wx.wxRemoveFile(source)
|
||||
if not wx.wxRemoveFile(source) then
|
||||
ReportError(TR("Unable to delete file '%s': %s")
|
||||
:format(source, wx.wxSysErrorMsg()))
|
||||
end
|
||||
end
|
||||
refreshAncestors(tree:GetItemParent(item_id))
|
||||
return true
|
||||
@@ -324,9 +393,12 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
tree:ActivateItem(event:GetItem())
|
||||
end)
|
||||
|
||||
-- save configuration and refresh the tree
|
||||
local function saveSettingsAndRefresh()
|
||||
local function saveSettings()
|
||||
ide:AddPackage('core.filetree', {}):SetSettings(filetree.settings)
|
||||
end
|
||||
|
||||
-- refresh the tree
|
||||
local function refreshChildren()
|
||||
tree:RefreshChildren()
|
||||
-- now mark the current file (if it was previously disabled)
|
||||
local editor = ide:GetEditor()
|
||||
@@ -335,7 +407,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
|
||||
-- handle context menu
|
||||
local function addItem(item_id, name, img)
|
||||
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
|
||||
local isdir = tree:IsDirectory(item_id)
|
||||
local parent = isdir and item_id or tree:GetItemParent(item_id)
|
||||
if isdir then tree:Expand(item_id) end -- expand to populate if needed
|
||||
|
||||
@@ -348,6 +420,25 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
return item
|
||||
end
|
||||
|
||||
local function unsetStartFile()
|
||||
local project = FileTreeGetDir()
|
||||
local startfile = filetree.settings.startfile[project]
|
||||
filetree.settings.startfile[project] = nil
|
||||
if startfile then
|
||||
local item_id = tree:FindItem(startfile)
|
||||
if item_id and item_id:IsOk() then
|
||||
tree:SetItemImage(item_id, getIcon(tree:GetItemFullName(item_id)))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function setStartFile(item_id)
|
||||
local project = FileTreeGetDir()
|
||||
local startfile = tree:GetItemFullName(item_id):gsub(project, "")
|
||||
filetree.settings.startfile[project] = startfile
|
||||
tree:SetItemImage(item_id, getIcon(tree:GetItemFullName(item_id)))
|
||||
end
|
||||
|
||||
tree:Connect(ID_NEWFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
tree:EditLabel(addItem(tree:GetSelection(), empty, image.FILEOTHER))
|
||||
@@ -361,13 +452,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
tree:Connect(ID_DELETEFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function() deleteItem(tree:GetSelection()) end)
|
||||
tree:Connect(ID_COPYFULLPATH, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
local tdo = wx.wxTextDataObject(tree:GetItemFullName(tree:GetSelection()))
|
||||
if wx.wxClipboard:Get():Open() then
|
||||
wx.wxClipboard:Get():SetData(tdo)
|
||||
wx.wxClipboard:Get():Close()
|
||||
end
|
||||
end)
|
||||
function() ide:CopyToClipboard(tree:GetItemFullName(tree:GetSelection())) end)
|
||||
tree:Connect(ID_OPENEXTENSION, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
local fname = tree:GetItemFullName(tree:GetSelection())
|
||||
@@ -389,18 +474,43 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
end
|
||||
end)
|
||||
tree:Connect(ID_REFRESH, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function() refreshChildren() end)
|
||||
tree:Connect(ID_SHOWLOCATION, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function() ShowLocation(tree:GetItemFullName(tree:GetSelection())) end)
|
||||
tree:Connect(ID_HIDEEXTENSION, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
local ext = GetFileExt(tree:GetItemText(tree:GetSelection()))
|
||||
filetree.settings.extensionignore[ext] = true
|
||||
saveSettingsAndRefresh()
|
||||
saveSettings()
|
||||
refreshChildren()
|
||||
end)
|
||||
tree:Connect(ID_SHOWEXTENSIONALL, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
filetree.settings.extensionignore = {}
|
||||
saveSettingsAndRefresh()
|
||||
saveSettings()
|
||||
refreshChildren()
|
||||
end)
|
||||
tree:Connect(ID_SETSTARTFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
unsetStartFile()
|
||||
setStartFile(tree:GetSelection())
|
||||
saveSettings()
|
||||
end)
|
||||
tree:Connect(ID_UNSETSTARTFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
unsetStartFile()
|
||||
saveSettings()
|
||||
end)
|
||||
tree:Connect(ID_MAPDIRECTORY, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
mapDir()
|
||||
saveSettings()
|
||||
end)
|
||||
tree:Connect(ID_UNMAPDIRECTORY, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
unMapDir(tree:GetItemText(tree:GetSelection()))
|
||||
saveSettings()
|
||||
end)
|
||||
|
||||
tree:Connect(wx.wxEVT_COMMAND_TREE_ITEM_MENU,
|
||||
@@ -413,15 +523,22 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
or TR("&Rename"))
|
||||
local fname = tree:GetItemText(item_id)
|
||||
local ext = GetFileExt(fname)
|
||||
local startfile = filetree.settings.startfile[FileTreeGetDir()]
|
||||
local menu = wx.wxMenu {
|
||||
{ ID_NEWFILE, TR("New &File") },
|
||||
{ ID_NEWDIRECTORY, TR("&New Directory") },
|
||||
{ },
|
||||
{ ID_RENAMEFILE, renamelabel..KSC(ID_RENAMEFILE) },
|
||||
{ ID_DELETEFILE, TR("&Delete")..KSC(ID_DELETEFILE) },
|
||||
{ ID_REFRESH, TR("Refresh") },
|
||||
{ },
|
||||
{ ID_HIDEEXTENSION, TR("Hide '.%s' Files"):format(ext) },
|
||||
{ },
|
||||
{ ID_SETSTARTFILE, TR("Set As Start File") },
|
||||
{ ID_UNSETSTARTFILE, TR("Unset '%s' As Start File"):format(startfile or "<none>") },
|
||||
{ },
|
||||
{ ID_MAPDIRECTORY, TR("Map Directory...") },
|
||||
{ ID_UNMAPDIRECTORY, TR("Unmap Directory") },
|
||||
{ ID_OPENEXTENSION, TR("Open With Default Program") },
|
||||
{ ID_COPYFULLPATH, TR("Copy Full Path") },
|
||||
{ ID_SHOWLOCATION, TR("Show Location") },
|
||||
@@ -435,10 +552,13 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
table.insert(extlist, 1, {id, '.'..ext})
|
||||
menu:Connect(id, wx.wxEVT_COMMAND_MENU_SELECTED, function()
|
||||
filetree.settings.extensionignore[ext] = nil
|
||||
saveSettingsAndRefresh()
|
||||
saveSettings()
|
||||
refreshChildren()
|
||||
end)
|
||||
end
|
||||
menu:Insert(7, wx.wxMenuItem(menu, ID_SHOWEXTENSION,
|
||||
local _, _, hideextpos = ide:FindMenuItem(ID_HIDEEXTENSION, menu)
|
||||
assert(hideextpos, "Can't find HideExtension menu item")
|
||||
menu:Insert(hideextpos+1, wx.wxMenuItem(menu, ID_SHOWEXTENSION,
|
||||
TR("Show Hidden Files"), TR("Show files previously hidden"),
|
||||
wx.wxITEM_NORMAL, wx.wxMenu(extlist)))
|
||||
|
||||
@@ -449,11 +569,17 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
local projectdirectory = wx.wxMenuItem(menu, ID_PROJECTDIR,
|
||||
TR("Project Directory"), TR("Set the project directory to be used"),
|
||||
wx.wxITEM_NORMAL, projectdirectorymenu)
|
||||
menu:Insert(9, projectdirectory)
|
||||
local _, _, unmapdirpos = ide:FindMenuItem(ID_UNMAPDIRECTORY, menu)
|
||||
assert(unmapdirpos, "Can't find UnMapDirectory menu item")
|
||||
menu:Insert(unmapdirpos+1, projectdirectory)
|
||||
FileTreeProjectListUpdate(projectdirectorymenu, 0)
|
||||
|
||||
-- disable Delete on non-empty directories
|
||||
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
|
||||
local isdir = tree:IsDirectory(item_id)
|
||||
local ismapped = tree:IsDirMapped(item_id)
|
||||
menu:Destroy(ismapped and ID_MAPDIRECTORY or ID_UNMAPDIRECTORY)
|
||||
if not startfile then menu:Destroy(ID_UNSETSTARTFILE) end
|
||||
if ismapped then menu:Enable(ID_RENAMEFILE, false) end
|
||||
if isdir then
|
||||
local source = tree:GetItemFullName(item_id)
|
||||
menu:Enable(ID_DELETEFILE, not FileDirHasContent(source..pathsep))
|
||||
@@ -464,11 +590,26 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
menu:Enable(ID_OPENEXTENSION, ft and #ft:GetOpenCommand("") > 0)
|
||||
menu:Enable(ID_HIDEEXTENSION, not filetree.settings.extensionignore[ext])
|
||||
end
|
||||
menu:Enable(ID_SETSTARTFILE, tree:IsFileOther(item_id) or tree:IsFileKnown(item_id))
|
||||
menu:Enable(ID_SHOWEXTENSION, next(filetree.settings.extensionignore) ~= nil)
|
||||
|
||||
PackageEventHandle("onMenuFiletree", menu, tree, event)
|
||||
|
||||
-- stopping/restarting garbage collection is generally not needed,
|
||||
-- but on Linux not stopping is causing crashes (wxwidgets 2.9.5 and 3.1.0)
|
||||
-- when symbol indexing is done while popup menu is open (with gc methods in the trace).
|
||||
-- this only happens when EVT_IDLE is called when popup menu is open.
|
||||
collectgarbage("stop")
|
||||
|
||||
-- stopping UI updates is generally not needed as well,
|
||||
-- but it's causing a crash on OSX (wxwidgets 2.9.5 and 3.1.0)
|
||||
-- when symbol indexing is done while popup menu is open, so it's disabled
|
||||
local interval = wx.wxUpdateUIEvent.GetUpdateInterval()
|
||||
wx.wxUpdateUIEvent.SetUpdateInterval(-1) -- don't update
|
||||
|
||||
tree:PopupMenu(menu)
|
||||
wx.wxUpdateUIEvent.SetUpdateInterval(interval)
|
||||
collectgarbage("restart")
|
||||
end)
|
||||
|
||||
tree:Connect(wx.wxEVT_RIGHT_DOWN,
|
||||
@@ -494,7 +635,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
end
|
||||
|
||||
if item_id and bit.band(flags, mask) > 0 then
|
||||
if tree:GetItemImage(item_id) == image.DIRECTORY then
|
||||
if tree:IsDirectory(item_id) then
|
||||
tree:Toggle(item_id)
|
||||
tree:SelectItem(item_id)
|
||||
else
|
||||
@@ -511,7 +652,7 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
function (event)
|
||||
local itemsrc = event:GetItem()
|
||||
parent = tree:GetItemParent(itemsrc)
|
||||
if not itemsrc:IsOk() then event:Veto() end
|
||||
if not itemsrc:IsOk() or tree:IsDirMapped(itemsrc) then event:Veto() end
|
||||
end)
|
||||
tree:Connect(wx.wxEVT_COMMAND_TREE_END_LABEL_EDIT,
|
||||
function (event)
|
||||
@@ -525,19 +666,36 @@ local function treeSetConnectorsAndIcons(tree)
|
||||
local label = event:GetLabel():gsub("^%s+$","") -- clean all spaces
|
||||
|
||||
-- edited the root element; set the new project directory if needed
|
||||
local cancelled = event:IsEditCancelled()
|
||||
if tree:IsRoot(itemsrc) then
|
||||
if not event:IsEditCancelled() and wx.wxDirExists(label) then
|
||||
if not cancelled and wx.wxDirExists(label) then
|
||||
ProjectUpdateProjectDir(label)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if not parent or not parent:IsOk() then return end
|
||||
local sourcedir = tree:GetItemFullName(parent)
|
||||
local target = MergeFullPath(sourcedir, label)
|
||||
if event:IsEditCancelled() or label == empty
|
||||
or target and not renameItem(itemsrc, target)
|
||||
then refreshAncestors(parent) end
|
||||
local target = MergeFullPath(tree:GetItemFullName(parent), label)
|
||||
if cancelled or label == empty then refreshAncestors(parent)
|
||||
elseif target then
|
||||
-- normally, none of this caching would be needed as `renameItem`
|
||||
-- would be called to check if the item can be renamed;
|
||||
-- however, as it may open a dialog box, on Linux it's causing a crash
|
||||
-- (caused by the same END_LABEL_EDIT even triggered one more time),
|
||||
-- so to protect from that, `renameItem` is called from IDLE event.
|
||||
-- Unfortunately, by that time, the filetree item (`itemsrc`) may
|
||||
-- already have incorrect state (as it's removed from the tree),
|
||||
-- so its properties need to be cached to be used from IDLE event.
|
||||
local cache = {
|
||||
isdir = tree:IsDirectory(itemsrc),
|
||||
isnew = tree:GetItemText(itemsrc) == empty,
|
||||
fullname = tree:GetItemFullName(itemsrc),
|
||||
parent = parent,
|
||||
}
|
||||
ide:DoWhenIdle(function()
|
||||
if not renameItem(cache, target) then refreshAncestors(parent) end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
local itemsrc
|
||||
@@ -693,7 +851,7 @@ local curr_file
|
||||
function FileTreeMarkSelected(file)
|
||||
if not file or not filetree.projdir or #filetree.projdir == 0 then return end
|
||||
|
||||
local item_id = projtree:FindItem(file)
|
||||
local item_id = wx.wxIsAbsolutePath(file) and projtree:FindItem(file)
|
||||
|
||||
-- if the select item is different from the current one
|
||||
-- or the current one is the same, but not bold (which may happen when
|
||||
@@ -701,7 +859,7 @@ function FileTreeMarkSelected(file)
|
||||
if curr_file ~= file
|
||||
or item_id and not projtree:IsBold(item_id) then
|
||||
if curr_file then
|
||||
local curr_id = projtree:FindItem(curr_file)
|
||||
local curr_id = wx.wxIsAbsolutePath(curr_file) and projtree:FindItem(curr_file)
|
||||
if curr_id and projtree:IsBold(curr_id) then
|
||||
projtree:SetItemBold(curr_id, false)
|
||||
end
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
-- Lomtik Software (J. Winwood & John Labenski)
|
||||
---------------------------------------------------------
|
||||
@@ -44,16 +44,27 @@ local function createFrame()
|
||||
end)
|
||||
|
||||
local menuBar = wx.wxMenuBar()
|
||||
local statusBar = frame:CreateStatusBar(6)
|
||||
local statusBar = frame:CreateStatusBar(5)
|
||||
local section_width = statusBar:GetTextExtent("OVRW")
|
||||
statusBar:SetStatusStyles({wx.wxSB_FLAT, wx.wxSB_FLAT, wx.wxSB_FLAT,
|
||||
wx.wxSB_FLAT, wx.wxSB_FLAT, wx.wxSB_FLAT})
|
||||
statusBar:SetStatusWidths(
|
||||
{-1, section_width*6, section_width, section_width, section_width*5, section_width*4})
|
||||
statusBar:SetStatusStyles({wx.wxSB_FLAT, wx.wxSB_FLAT, wx.wxSB_FLAT, wx.wxSB_FLAT, wx.wxSB_FLAT})
|
||||
statusBar:SetStatusWidths({-1, section_width, section_width, section_width*5, section_width*4})
|
||||
statusBar:SetStatusText(GetIDEString("statuswelcome"))
|
||||
statusBar:Connect(wx.wxEVT_LEFT_DOWN, function (event)
|
||||
local rect = wx.wxRect()
|
||||
statusBar:GetFieldRect(4, rect)
|
||||
if rect:Contains(event:GetPosition()) then -- click on the interpreter
|
||||
local menuitem = ide:FindMenuItem(ID.INTERPRETER)
|
||||
if menuitem then
|
||||
local menu = menuitem:GetSubMenu()
|
||||
if menu then statusBar:PopupMenu(menu) end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local mgr = wxaui.wxAuiManager()
|
||||
mgr:SetManagedWindow(frame)
|
||||
-- allow the panes to be larger than the defalt 1/3 of the main window size
|
||||
mgr:SetDockSizeConstraint(0.8,0.8)
|
||||
|
||||
frame.menuBar = menuBar
|
||||
frame.statusBar = statusBar
|
||||
@@ -74,8 +85,9 @@ local function menuDropDownPosition(event)
|
||||
end
|
||||
|
||||
local function tbIconSize()
|
||||
-- use large icons by default on OSX and on large screens
|
||||
local iconsize = (tonumber(ide.config.toolbar and ide.config.toolbar.iconsize)
|
||||
or (ide.osname == 'Macintosh' and 24 or 16))
|
||||
or ((ide.osname == 'Macintosh' or wx.wxGetClientDisplayRect():GetWidth() >= 1500) and 24 or 16))
|
||||
if iconsize ~= 24 then iconsize = 16 end
|
||||
return iconsize
|
||||
end
|
||||
@@ -100,7 +112,7 @@ local function createToolBar(frame)
|
||||
local icon, description = unpack(iconmap)
|
||||
local isbitmap = type(icon) == "userdata" and icon:GetClassInfo():GetClassName() == "wxBitmap"
|
||||
local bitmap = isbitmap and icon or ide:GetBitmap(icon, "TOOLBAR", toolBmpSize)
|
||||
toolBar:AddTool(id, "", bitmap, TR(description)..SCinB(id))
|
||||
toolBar:AddTool(id, "", bitmap, (TR)(description)..SCinB(id))
|
||||
end
|
||||
end
|
||||
prev = id
|
||||
@@ -201,6 +213,8 @@ local function createNotebook(frame)
|
||||
local editor = GetEditor(page)
|
||||
if editor then ide.openDocuments[editor:GetId()].index = page end
|
||||
end
|
||||
-- first set the selection on the dragged tab to reset its state
|
||||
notebook:SetSelection(event:GetSelection())
|
||||
-- select the content of the tab after drag is done
|
||||
SetEditorSelection(event:GetSelection())
|
||||
event:Skip()
|
||||
@@ -273,11 +287,7 @@ local function createNotebook(frame)
|
||||
notebook:Connect(ID_SHOWLOCATION, wx.wxEVT_UPDATE_UI, IfAtLeastOneTab)
|
||||
|
||||
notebook:Connect(ID_COPYFULLPATH, wx.wxEVT_COMMAND_MENU_SELECTED, function()
|
||||
local tdo = wx.wxTextDataObject(ide:GetDocument(GetEditor(selection)):GetFilePath())
|
||||
if wx.wxClipboard:Get():Open() then
|
||||
wx.wxClipboard:Get():SetData(tdo)
|
||||
wx.wxClipboard:Get():Close()
|
||||
end
|
||||
ide:CopyToClipboard(ide:GetDocument(GetEditor(selection)):GetFilePath())
|
||||
end)
|
||||
|
||||
frame.notebook = notebook
|
||||
@@ -297,6 +307,7 @@ local function addDND(notebook)
|
||||
if winid == ide:GetOutput():GetId()
|
||||
or winid == ide:GetConsole():GetId()
|
||||
or winid == ide:GetProjectTree():GetId()
|
||||
or ide.findReplace:IsPreview(win) -- search results preview
|
||||
then return end
|
||||
|
||||
local mgr = ide.frame.uimgr
|
||||
@@ -390,17 +401,37 @@ local function createBottomNotebook(frame)
|
||||
|
||||
addDND(bottomnotebook)
|
||||
|
||||
bottomnotebook:Connect(wxaui.wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED,
|
||||
function (event)
|
||||
if not ide.findReplace then return end
|
||||
local nb = event:GetEventObject():DynamicCast("wxAuiNotebook")
|
||||
local preview = ide.findReplace:IsPreview(nb:GetPage(nb:GetSelection()))
|
||||
local flags = nb:GetWindowStyleFlag()
|
||||
if preview and bit.band(flags, wxaui.wxAUI_NB_CLOSE_ON_ACTIVE_TAB) == 0 then
|
||||
nb:SetWindowStyleFlag(flags + wxaui.wxAUI_NB_CLOSE_ON_ACTIVE_TAB)
|
||||
elseif not preview and bit.band(flags, wxaui.wxAUI_NB_CLOSE_ON_ACTIVE_TAB) ~= 0 then
|
||||
nb:SetWindowStyleFlag(flags - wxaui.wxAUI_NB_CLOSE_ON_ACTIVE_TAB)
|
||||
end
|
||||
end)
|
||||
|
||||
-- disallow tabs closing
|
||||
bottomnotebook:Connect(wxaui.wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE,
|
||||
function (event) event:Veto() end)
|
||||
function (event)
|
||||
local nb = event:GetEventObject():DynamicCast("wxAuiNotebook")
|
||||
if ide.findReplace
|
||||
and ide.findReplace:IsPreview(nb:GetPage(nb:GetSelection())) then
|
||||
event:Skip()
|
||||
else
|
||||
event:Veto()
|
||||
end
|
||||
end)
|
||||
|
||||
local errorlog = wxstc.wxStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
|
||||
local errorlog = ide:CreateStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
|
||||
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxBORDER_NONE)
|
||||
|
||||
errorlog:Connect(wx.wxEVT_CONTEXT_MENU,
|
||||
function (event)
|
||||
errorlog:PopupMenu(
|
||||
wx.wxMenu {
|
||||
local menu = wx.wxMenu {
|
||||
{ ID_UNDO, TR("&Undo") },
|
||||
{ ID_REDO, TR("&Redo") },
|
||||
{ },
|
||||
@@ -411,13 +442,14 @@ local function createBottomNotebook(frame)
|
||||
{ },
|
||||
{ ID_CLEAROUTPUT, TR("C&lear Output Window") },
|
||||
}
|
||||
)
|
||||
PackageEventHandle("onMenuOutput", menu, errorlog, event)
|
||||
errorlog:PopupMenu(menu)
|
||||
end)
|
||||
|
||||
errorlog:Connect(ID_CLEAROUTPUT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function(event) ClearOutput(true) end)
|
||||
|
||||
local shellbox = wxstc.wxStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
|
||||
local shellbox = ide:CreateStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
|
||||
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxBORDER_NONE)
|
||||
|
||||
bottomnotebook:AddPage(errorlog, TR("Output"), true)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -25,12 +25,6 @@ ID_NEWFILE = NewID()
|
||||
ID_NEWDIRECTORY = NewID()
|
||||
ID_RENAMEFILE = NewID()
|
||||
ID_DELETEFILE = NewID()
|
||||
ID_HIDEEXTENSION = NewID()
|
||||
ID_SHOWEXTENSION = NewID()
|
||||
ID_SHOWEXTENSIONALL = NewID()
|
||||
ID_OPENEXTENSION = NewID()
|
||||
ID_COPYFULLPATH = NewID()
|
||||
ID_SHOWLOCATION = NewID()
|
||||
ID_SAVE = linux and NewID() or wx.wxID_SAVE
|
||||
ID_SAVEAS = linux and NewID() or wx.wxID_SAVEAS
|
||||
ID_SAVEALL = NewID()
|
||||
@@ -109,6 +103,7 @@ ID_DETACHDEBUG = NewID()
|
||||
ID_STEP = NewID()
|
||||
ID_STEPOVER = NewID()
|
||||
ID_STEPOUT = NewID()
|
||||
ID_RUNTO = NewID()
|
||||
ID_BREAK = NewID()
|
||||
ID_TRACE = NewID()
|
||||
ID_CLEAROUTPUT = NewID()
|
||||
@@ -129,6 +124,7 @@ ID_HELPCOMMUNITY = NewID()
|
||||
ID_ADDWATCH = NewID()
|
||||
ID_EDITWATCH = NewID()
|
||||
ID_DELETEWATCH = NewID()
|
||||
ID_COPYWATCHVALUE = NewID()
|
||||
-- Editor popup menu items
|
||||
ID_GOTODEFINITION = NewID()
|
||||
ID_RENAMEALLINSTANCES = NewID()
|
||||
@@ -136,6 +132,41 @@ ID_REPLACEALLSELECTIONS = NewID()
|
||||
ID_QUICKADDWATCH = NewID()
|
||||
ID_QUICKEVAL = NewID()
|
||||
ID_ADDTOSCRATCHPAD = NewID()
|
||||
-- filetree menu
|
||||
ID_HIDEEXTENSION = NewID()
|
||||
ID_SETSTARTFILE = NewID()
|
||||
ID_UNSETSTARTFILE = NewID()
|
||||
ID_SHOWEXTENSION = NewID()
|
||||
ID_SHOWEXTENSIONALL = NewID()
|
||||
ID_MAPDIRECTORY = NewID()
|
||||
ID_UNMAPDIRECTORY = NewID()
|
||||
ID_OPENEXTENSION = NewID()
|
||||
ID_COPYFULLPATH = NewID()
|
||||
ID_SHOWLOCATION = NewID()
|
||||
ID_REFRESH = NewID()
|
||||
ID_SYMBOLDIRREFRESH = NewID()
|
||||
ID_SYMBOLDIRINDEX = NewID()
|
||||
ID_SYMBOLDIRDISABLE = NewID()
|
||||
ID_SYMBOLDIRENABLE = NewID()
|
||||
-- outline menu
|
||||
ID_OUTLINESORT = NewID()
|
||||
-- search toolbar
|
||||
ID_FINDALL = NewID()
|
||||
ID_FINDREPLACENEXT = NewID()
|
||||
ID_FINDREPLACEALL = NewID()
|
||||
ID_FINDSETDIR = NewID()
|
||||
ID_FINDSETTOPROJDIR = NewID()
|
||||
ID_FINDOPTSCOPE = NewID()
|
||||
ID_FINDOPTSTATUS = NewID()
|
||||
ID_FINDOPTDIRECTION = NewID()
|
||||
ID_FINDOPTWRAPWROUND = NewID()
|
||||
ID_FINDOPTWORD = NewID()
|
||||
ID_FINDOPTCASE = NewID()
|
||||
ID_FINDOPTREGEX = NewID()
|
||||
ID_FINDOPTCONTEXT = NewID()
|
||||
ID_FINDOPTSUBDIR = NewID()
|
||||
ID_FINDOPTMULTIRESULTS = NewID()
|
||||
ID_RECENTSCOPECLEAR = NewID()
|
||||
|
||||
local ids = {}
|
||||
function IDgen (name)
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
-- Copyright 2012-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2012-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Integration with LuaInspect
|
||||
---------------------------------------------------------
|
||||
|
||||
local M, LA, LI, T = {}
|
||||
local FAST = true
|
||||
|
||||
local function init()
|
||||
if LA then return end
|
||||
@@ -16,11 +15,6 @@ local function init()
|
||||
LA = require "luainspect.ast"
|
||||
LI = require "luainspect.init"
|
||||
T = require "luainspect.types"
|
||||
|
||||
if FAST then
|
||||
LI.eval_comments = function () end
|
||||
LI.infer_values = function () end
|
||||
end
|
||||
end
|
||||
|
||||
function M.pos2line(pos)
|
||||
@@ -33,16 +27,25 @@ function M.warnings_from_string(src, file)
|
||||
local ast, err, linenum, colnum = LA.ast_from_string(src, file)
|
||||
if not ast and err then return nil, err, linenum, colnum end
|
||||
|
||||
if FAST then
|
||||
LI.inspect(ast, nil, src)
|
||||
LA.ensure_parents_marked(ast)
|
||||
else
|
||||
LI.uninspect(ast)
|
||||
if ide.config.staticanalyzer.infervalue then
|
||||
local tokenlist = LA.ast_to_tokenlist(ast, src)
|
||||
LI.clear_cache()
|
||||
LI.inspect(ast, tokenlist, src)
|
||||
LI.mark_related_keywords(ast, tokenlist, src)
|
||||
else
|
||||
-- stub out LI functions that depend on tokenlist,
|
||||
-- which is not built in the "fast" mode
|
||||
local ec, iv = LI.eval_comments, LI.infer_values
|
||||
LI.eval_comments, LI.infer_values = function() end, function() end
|
||||
|
||||
LI.inspect(ast, nil, src)
|
||||
LA.ensure_parents_marked(ast)
|
||||
|
||||
LI.eval_comments, LI.infer_values = ec, iv
|
||||
end
|
||||
|
||||
local globinit = {}
|
||||
local globinit = {arg = true} -- skip `arg` global variable
|
||||
local spec = GetSpec(wx.wxFileName(file):GetExt())
|
||||
for k in pairs(spec and GetApi(spec.apitype or "none").ac.childs or {}) do
|
||||
globinit[k] = true
|
||||
@@ -57,12 +60,15 @@ local function cleanError(err)
|
||||
end
|
||||
|
||||
function AnalyzeFile(file)
|
||||
local warn, err, line, pos = M.warnings_from_string(FileRead(file), file)
|
||||
local src, err = FileRead(file)
|
||||
if not src and err then return nil, TR("Can't open file '%s': %s"):format(file, err) end
|
||||
|
||||
local warn, err, line, pos = M.warnings_from_string(src, file)
|
||||
return warn, cleanError(err), line, pos
|
||||
end
|
||||
|
||||
function AnalyzeString(src)
|
||||
local warn, err, line, pos = M.warnings_from_string(src, "<string>")
|
||||
function AnalyzeString(src, file)
|
||||
local warn, err, line, pos = M.warnings_from_string(src, file or "<string>")
|
||||
return warn, cleanError(err), line, pos
|
||||
end
|
||||
|
||||
@@ -73,7 +79,10 @@ function M.show_warnings(top_ast, globinit)
|
||||
end
|
||||
local function known(o) return not T.istype[o] end
|
||||
local function index(f) -- build abc.def.xyz name recursively
|
||||
return (f[1].tag == 'Id' and f[1][1] or index(f[1])) .. '.' .. f[2][1] end
|
||||
if not f or f.tag ~= 'Index' or not f[1] or not f[2] then return end
|
||||
local main = f[1].tag == 'Id' and f[1][1] or index(f[1])
|
||||
return main and type(f[2][1]) == "string" and (main .. '.' .. f[2][1]) or nil
|
||||
end
|
||||
local globseen, isseen, fieldseen = globinit or {}, {}, {}
|
||||
LA.walk(top_ast, function(ast)
|
||||
M.ast = ast
|
||||
@@ -126,7 +135,7 @@ function M.show_warnings(top_ast, globinit)
|
||||
line, path)
|
||||
end
|
||||
else
|
||||
if parent.tag == 'Localrec' then -- local function foo...
|
||||
if parent and parent.tag == 'Localrec' then -- local function foo...
|
||||
warn("unused local function '" .. name .. "'", line, path)
|
||||
else
|
||||
warn("unused local variable '" .. name .. "'; "..
|
||||
@@ -134,16 +143,24 @@ function M.show_warnings(top_ast, globinit)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- added check for FAST as ast.seevalue relies on value evaluation,
|
||||
-- added check for "fast" mode as ast.seevalue relies on value evaluation,
|
||||
-- which is very slow even on simple and short scripts
|
||||
if not FAST and ast.isfield and not(known(ast.seevalue.value) and ast.seevalue.value ~= nil) then
|
||||
if ide.config.staticanalyzer.infervalue and ast.isfield
|
||||
and not(known(ast.seevalue.value) and ast.seevalue.value ~= nil) then
|
||||
if not fieldseen[name] then
|
||||
fieldseen[name] = true
|
||||
local parent = ast.parent
|
||||
and (" in '"..index(ast.parent):gsub("%."..name.."$","").."'")
|
||||
local var = index(ast.parent)
|
||||
local parent = ast.parent and var
|
||||
and (" in '"..var:gsub("%."..name.."$","").."'")
|
||||
or ""
|
||||
warn("first use of unknown field '" .. name .."'"..parent,
|
||||
ast.lineinfo and tostring(ast.lineinfo.first):match('|L(%d+)'), path)
|
||||
|
||||
local tblref = ast.parent and ast.parent[1]
|
||||
local localparam = (tblref and tblref.localdefinition
|
||||
and tblref.localdefinition.isparam)
|
||||
if not localparam then
|
||||
warn("first use of unknown field '" .. name .."'"..parent,
|
||||
ast.lineinfo and tostring(ast.lineinfo.first):match('|L(%d+)'), path)
|
||||
end
|
||||
end
|
||||
elseif ast.tag == 'Id' and not ast.localdefinition and not ast.definedglobal then
|
||||
if not globseen[name] then
|
||||
@@ -191,10 +208,10 @@ if compilepos then
|
||||
menu:Insert(compilepos+1, ID_ANALYZE, TR("Analyze")..KSC(ID_ANALYZE), TR("Analyze the source code"))
|
||||
end
|
||||
|
||||
local debugger = ide.debugger
|
||||
|
||||
local function analyzeProgram(editor)
|
||||
ClearOutput()
|
||||
-- save all files (if requested) for "infervalue" analysis to keep the changes on disk
|
||||
if ide.config.editor.saveallonrun and ide.config.staticanalyzer.infervalue then SaveAll(true) end
|
||||
if ide:GetLaunchedProcess() == nil and not ide:GetDebugger():IsConnected() then ClearOutput() end
|
||||
DisplayOutput("Analyzing the source code")
|
||||
frame:Update()
|
||||
|
||||
@@ -203,13 +220,13 @@ local function analyzeProgram(editor)
|
||||
local filePath = doc:GetFilePath() or doc:GetFileName()
|
||||
local warn, err = M.warnings_from_string(editorText, filePath)
|
||||
if err then -- report compilation error
|
||||
DisplayOutput((": not completed.\n%s\n"):format(cleanError(err)))
|
||||
DisplayOutputLn((": not completed.\n%s"):format(cleanError(err)))
|
||||
return false
|
||||
end
|
||||
|
||||
DisplayOutput((": %s warning%s.\n")
|
||||
DisplayOutputLn((": %s warning%s.")
|
||||
:format(#warn > 0 and #warn or 'no', #warn == 1 and '' or 's'))
|
||||
DisplayOutputNoMarker(table.concat(warn, "\n") .. "\n")
|
||||
DisplayOutputNoMarker(table.concat(warn, "\n") .. (#warn > 0 and "\n" or ""))
|
||||
|
||||
return true -- analyzed ok
|
||||
end
|
||||
@@ -223,7 +240,4 @@ frame:Connect(ID_ANALYZE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
end
|
||||
end)
|
||||
frame:Connect(ID_ANALYZE, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
event:Enable((debugger.server == nil and debugger.pid == nil) and (editor ~= nil))
|
||||
end)
|
||||
function (event) event:Enable(GetEditor() ~= nil) end)
|
||||
|
||||
@@ -25,87 +25,89 @@ listed below (again, case doesn't matter):
|
||||
|
||||
ide.config.keymap = {
|
||||
-- File menu
|
||||
[ID_NEW] = "Ctrl-N",
|
||||
[ID_OPEN] = "Ctrl-O",
|
||||
[ID_CLOSE] = "Ctrl-W",
|
||||
[ID_SAVE] = "Ctrl-S",
|
||||
[ID_SAVEAS] = "Alt-Shift-S",
|
||||
[ID_SAVEALL] = "",
|
||||
[ID_RECENTFILES] = "",
|
||||
[ID_RECENTFILESPREV] = "Ctrl-,",
|
||||
[ID_RECENTFILESNEXT] = "Ctrl-.",
|
||||
[ID_EXIT] = "Ctrl-Q",
|
||||
[ID_RECENTPROJECTSPREV] = "Ctrl-Shift-<",
|
||||
[ID.NEW] = "Ctrl-N",
|
||||
[ID.OPEN] = "Ctrl-O",
|
||||
[ID.CLOSE] = "Ctrl-W",
|
||||
[ID.SAVE] = "Ctrl-S",
|
||||
[ID.SAVEAS] = "Alt-Shift-S",
|
||||
[ID.SAVEALL] = "",
|
||||
[ID.RECENTFILES] = "",
|
||||
[ID.RECENTFILESPREV] = "Ctrl-,",
|
||||
[ID.RECENTFILESNEXT] = "Ctrl-.",
|
||||
[ID.EXIT] = "Ctrl-Q",
|
||||
[ID.RECENTPROJECTSPREV] = "Ctrl-Shift-<",
|
||||
-- Edit menu
|
||||
[ID_CUT] = "Ctrl-X",
|
||||
[ID_COPY] = "Ctrl-C",
|
||||
[ID_PASTE] = "Ctrl-V",
|
||||
[ID_SELECTALL] = "Ctrl-A",
|
||||
[ID_UNDO] = "Ctrl-Z",
|
||||
[ID_REDO] = "Ctrl-Y",
|
||||
[ID_SHOWTOOLTIP] = "Ctrl-T",
|
||||
[ID_AUTOCOMPLETE] = "Ctrl-K",
|
||||
[ID_AUTOCOMPLETEENABLE] = "",
|
||||
[ID_COMMENT] = "Ctrl-U",
|
||||
[ID_FOLD] = "F12",
|
||||
[ID_CLEARDYNAMICWORDS] = "",
|
||||
[ID_REINDENT] = "Ctrl-I",
|
||||
[ID_BOOKMARKTOGGLE] = "Ctrl-F2",
|
||||
[ID_BOOKMARKNEXT] = "F2",
|
||||
[ID_BOOKMARKPREV] = "Shift-F2",
|
||||
[ID_NAVIGATETOFILE] = "Ctrl-P",
|
||||
[ID_NAVIGATETOLINE] = "Ctrl-G",
|
||||
[ID_NAVIGATETOSYMBOL] = "Ctrl-B",
|
||||
[ID_NAVIGATETOMETHOD] = "Ctrl-;",
|
||||
[ID.CUT] = "Ctrl-X",
|
||||
[ID.COPY] = "Ctrl-C",
|
||||
[ID.PASTE] = "Ctrl-V",
|
||||
[ID.SELECTALL] = "Ctrl-A",
|
||||
[ID.UNDO] = "Ctrl-Z",
|
||||
[ID.REDO] = "Ctrl-Y",
|
||||
[ID.SHOWTOOLTIP] = "Ctrl-T",
|
||||
[ID.AUTOCOMPLETE] = "Ctrl-K",
|
||||
[ID.AUTOCOMPLETEENABLE] = "",
|
||||
[ID.COMMENT] = "Ctrl-U",
|
||||
[ID.FOLD] = "F12",
|
||||
[ID.CLEARDYNAMICWORDS] = "",
|
||||
[ID.REINDENT] = "Ctrl-I",
|
||||
[ID.BOOKMARKTOGGLE] = "Ctrl-F2",
|
||||
[ID.BOOKMARKNEXT] = "F2",
|
||||
[ID.BOOKMARKPREV] = "Shift-F2",
|
||||
[ID.NAVIGATETOFILE] = "Ctrl-P",
|
||||
[ID.NAVIGATETOLINE] = "Ctrl-G",
|
||||
[ID.NAVIGATETOSYMBOL] = "Ctrl-B",
|
||||
[ID.NAVIGATETOMETHOD] = "Ctrl-;",
|
||||
-- Search menu
|
||||
[ID_FIND] = "Ctrl-F",
|
||||
[ID_FINDNEXT] = "F3",
|
||||
[ID_FINDPREV] = "Shift-F3",
|
||||
[ID_FINDSELECTNEXT] = "Ctrl-F3",
|
||||
[ID_FINDSELECTPREV] = "Ctrl-Shift-F3",
|
||||
[ID_REPLACE] = "Ctrl-R",
|
||||
[ID_FINDINFILES] = "Ctrl-Shift-F",
|
||||
[ID_REPLACEINFILES] = "Ctrl-Shift-R",
|
||||
[ID_SORT] = "",
|
||||
[ID.FIND] = "Ctrl-F",
|
||||
[ID.FINDNEXT] = "F3",
|
||||
[ID.FINDPREV] = "Shift-F3",
|
||||
[ID.FINDSELECTNEXT] = "Ctrl-F3",
|
||||
[ID.FINDSELECTPREV] = "Ctrl-Shift-F3",
|
||||
[ID.REPLACE] = "Ctrl-R",
|
||||
[ID.FINDINFILES] = "Ctrl-Shift-F",
|
||||
[ID.REPLACEINFILES] = "Ctrl-Shift-R",
|
||||
[ID.SORT] = "",
|
||||
-- View menu
|
||||
[ID_VIEWFILETREE] = "Ctrl-Shift-P",
|
||||
[ID_VIEWOUTPUT] = "Ctrl-Shift-O",
|
||||
[ID_VIEWWATCHWINDOW] = "Ctrl-Shift-W",
|
||||
[ID_VIEWCALLSTACK] = "Ctrl-Shift-S",
|
||||
[ID_VIEWDEFAULTLAYOUT] = "",
|
||||
[ID_VIEWFULLSCREEN] = "Ctrl-Shift-A",
|
||||
[ID_ZOOMRESET] = "Ctrl-0",
|
||||
[ID_ZOOMIN] = "Ctrl-+",
|
||||
[ID_ZOOMOUT] = "Ctrl--",
|
||||
[ID.VIEWFILETREE] = "Ctrl-Shift-P",
|
||||
[ID.VIEWOUTPUT] = "Ctrl-Shift-O",
|
||||
[ID.VIEWWATCHWINDOW] = "Ctrl-Shift-W",
|
||||
[ID.VIEWCALLSTACK] = "Ctrl-Shift-S",
|
||||
[ID.VIEWDEFAULTLAYOUT] = "",
|
||||
[ID.VIEWFULLSCREEN] = "Ctrl-Shift-A",
|
||||
[ID.ZOOMRESET] = "Ctrl-0",
|
||||
[ID.ZOOMIN] = "Ctrl-+",
|
||||
[ID.ZOOMOUT] = "Ctrl--",
|
||||
-- Project menu
|
||||
[ID_RUN] = "F6",
|
||||
[ID_RUNNOW] = "Ctrl-F6",
|
||||
[ID_COMPILE] = "F7",
|
||||
[ID_ANALYZE] = "Shift-F7",
|
||||
[ID_STARTDEBUG] = "F5",
|
||||
[ID_ATTACHDEBUG] = "",
|
||||
[ID_STOPDEBUG] = "Shift-F5",
|
||||
[ID_STEP] = "F10",
|
||||
[ID_STEPOVER] = "Shift-F10",
|
||||
[ID_STEPOUT] = "Ctrl-F10",
|
||||
[ID_TRACE] = "",
|
||||
[ID_BREAK] = "Shift-F9",
|
||||
[ID_TOGGLEBREAKPOINT] = "F9",
|
||||
[ID_CLEAROUTPUT] = "",
|
||||
[ID_INTERPRETER] = "",
|
||||
[ID_PROJECTDIR] = "",
|
||||
[ID.RUN] = "F6",
|
||||
[ID.RUNNOW] = "Ctrl-F6",
|
||||
[ID.COMPILE] = "F7",
|
||||
[ID.ANALYZE] = "Shift-F7",
|
||||
[ID.STARTDEBUG] = "F5",
|
||||
[ID.ATTACHDEBUG] = "",
|
||||
[ID.DETACHDEBUG] = "",
|
||||
[ID.STOPDEBUG] = "Shift-F5",
|
||||
[ID.STEP] = "F10",
|
||||
[ID.STEPOVER] = "Shift-F10",
|
||||
[ID.STEPOUT] = "Ctrl-F10",
|
||||
[ID.RUNTO] = "Ctrl-Shift-F10",
|
||||
[ID.TRACE] = "",
|
||||
[ID.BREAK] = "Shift-F9",
|
||||
[ID.TOGGLEBREAKPOINT] = "F9",
|
||||
[ID.CLEAROUTPUT] = "",
|
||||
[ID.INTERPRETER] = "",
|
||||
[ID.PROJECTDIR] = "",
|
||||
-- Help menu
|
||||
[ID_ABOUT] = "F1",
|
||||
[ID.ABOUT] = "F1",
|
||||
-- Watch window menu items
|
||||
[ID_ADDWATCH] = "Ins",
|
||||
[ID_EDITWATCH] = "F2",
|
||||
[ID_DELETEWATCH] = "Del",
|
||||
[ID.ADDWATCH] = "Ins",
|
||||
[ID.EDITWATCH] = "F2",
|
||||
[ID.DELETEWATCH] = "Del",
|
||||
-- Editor popup menu items
|
||||
[ID_QUICKADDWATCH] = "",
|
||||
[ID_QUICKEVAL] = "",
|
||||
[ID.QUICKADDWATCH] = "",
|
||||
[ID.QUICKEVAL] = "",
|
||||
-- Filetree popup menu items
|
||||
[ID_RENAMEFILE] = "F2",
|
||||
[ID_DELETEFILE] = "Del",
|
||||
[ID.RENAMEFILE] = "F2",
|
||||
[ID.DELETEFILE] = "Del",
|
||||
}
|
||||
|
||||
function KSC(id, default)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- styles for comment markup
|
||||
---------------------------------------------------------
|
||||
|
||||
@@ -14,13 +14,13 @@ local MD_MARK_BOXD = '|' -- highlight
|
||||
local MD_MARK_MARK = ' ' -- separator
|
||||
local MD_LINK_NEWWINDOW = '+' -- indicator to open a new window for links
|
||||
local markup = {
|
||||
[MD_MARK_BOXD] = {st=25, fg={127,0,127}, b=true},
|
||||
[MD_MARK_CODE] = {st=26, fg={127,127,127}, fs=10},
|
||||
[MD_MARK_HEAD] = {st=27, fn="Lucida Console", b=true},
|
||||
[MD_MARK_LINK] = {st=28, u=true, hs={32,32,127}},
|
||||
[MD_MARK_BOLD] = {st=29, b=true},
|
||||
[MD_MARK_ITAL] = {st=30, i=true},
|
||||
[MD_MARK_MARK] = {st=31, v=false},
|
||||
[MD_MARK_BOXD] = {st=ide:AddIndicator("markup.boxd", 25), fg={127,0,127}, b=true},
|
||||
[MD_MARK_CODE] = {st=ide:AddIndicator("markup.code", 26), fg={127,127,127}, fs=10},
|
||||
[MD_MARK_HEAD] = {st=ide:AddIndicator("markup.head", 27), fn="Lucida Console", b=true},
|
||||
[MD_MARK_LINK] = {st=ide:AddIndicator("markup.link", 28), u=true, hs={32,32,127}},
|
||||
[MD_MARK_BOLD] = {st=ide:AddIndicator("markup.bold", 29), b=true},
|
||||
[MD_MARK_ITAL] = {st=ide:AddIndicator("markup.ital", 30), i=true},
|
||||
[MD_MARK_MARK] = {st=ide:AddIndicator("markup.mark", 31), v=false},
|
||||
}
|
||||
|
||||
-- allow other editor features to recognize this special markup
|
||||
@@ -99,7 +99,7 @@ local function ismarkup (tx)
|
||||
local marksep = "[%s!%?%.,;:%(%)]"
|
||||
while true do
|
||||
-- find a separator first
|
||||
local st,_,sep,more = string.find(tx, "(["..MD_MARK_PTRN.."]+)(.)", start)
|
||||
local st,_,sep,more = string.find(tx, "(["..MD_MARK_PTRN.."])(.)", start)
|
||||
if not st then return end
|
||||
|
||||
-- check if this is a first character of a multi-character separator
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -46,22 +46,41 @@ menuBar:Append(editMenu, TR("&Edit"))
|
||||
|
||||
editMenu:Check(ID_AUTOCOMPLETEENABLE, ide.config.autocomplete)
|
||||
|
||||
local function getCtrlWithFocus(edType)
|
||||
local ctrl = ide:GetMainFrame():FindFocus()
|
||||
return ctrl and ctrl:GetClassInfo():GetClassName() == edType and ctrl:DynamicCast(edType) or nil
|
||||
end
|
||||
|
||||
local function onUpdateUIEditorInFocus(event)
|
||||
event:Enable(GetEditorWithFocus(GetEditor()) ~= nil)
|
||||
end
|
||||
|
||||
local function onUpdateUIEditMenu(event)
|
||||
local menu_id = event:GetId()
|
||||
local editor = GetEditorWithFocus()
|
||||
if editor == nil then event:Enable(false); return end
|
||||
if editor == nil then
|
||||
local editor = getCtrlWithFocus("wxTextCtrl")
|
||||
event:Enable(editor and (
|
||||
menu_id == ID_PASTE and editor:CanPaste() or
|
||||
menu_id == ID_UNDO and editor:CanUndo() or
|
||||
menu_id == ID_REDO and editor:CanRedo() or
|
||||
menu_id == ID_CUT and editor:CanCut() or
|
||||
menu_id == ID_COPY and editor:CanCopy() or
|
||||
menu_id == ID_SELECTALL and true
|
||||
) or false)
|
||||
return
|
||||
end
|
||||
|
||||
local alwaysOn = {
|
||||
[ID_SELECTALL] = true,
|
||||
-- allow Cut and Copy commands as these work on a line if no selection
|
||||
[ID_COPY] = true, [ID_CUT] = true,
|
||||
}
|
||||
local menu_id = event:GetId()
|
||||
local enable =
|
||||
menu_id == ID_PASTE and editor:CanPaste() or
|
||||
-- pasting is allowed when the document is not read-only and the selection
|
||||
-- (if any) has no protected text; since pasting handles protected text,
|
||||
-- use GetReadOnly() instead of CanPaste()
|
||||
menu_id == ID_PASTE and (not editor:GetReadOnly()) or
|
||||
menu_id == ID_UNDO and editor:CanUndo() or
|
||||
menu_id == ID_REDO and editor:CanRedo() or
|
||||
alwaysOn[menu_id]
|
||||
@@ -69,14 +88,26 @@ local function onUpdateUIEditMenu(event)
|
||||
end
|
||||
|
||||
local function onEditMenu(event)
|
||||
local menu_id = event:GetId()
|
||||
local editor = GetEditorWithFocus()
|
||||
if editor == nil then event:Skip(); return end
|
||||
if editor == nil then
|
||||
local editor = getCtrlWithFocus("wxTextCtrl")
|
||||
if not editor or not (
|
||||
menu_id == ID_PASTE and editor:Paste() or
|
||||
menu_id == ID_UNDO and editor:Undo() or
|
||||
menu_id == ID_REDO and editor:Redo() or
|
||||
menu_id == ID_CUT and editor:Cut() or
|
||||
menu_id == ID_COPY and editor:Copy() or
|
||||
menu_id == ID_SELECTALL and editor:SetSelection(-1, -1) or
|
||||
true
|
||||
) then event:Skip() end
|
||||
return
|
||||
end
|
||||
|
||||
if PackageEventHandle("onEditorAction", editor, event) == false then
|
||||
return
|
||||
end
|
||||
|
||||
local menu_id = event:GetId()
|
||||
local copytext
|
||||
if (menu_id == ID_CUT or menu_id == ID_COPY)
|
||||
and ide.wxver >= "2.9.5" and editor:GetSelections() > 1 then
|
||||
@@ -90,13 +121,22 @@ local function onEditMenu(event)
|
||||
end
|
||||
end
|
||||
|
||||
local spos, epos = editor:GetSelectionStart(), editor:GetSelectionEnd()
|
||||
if menu_id == ID_CUT then
|
||||
if editor:GetSelectionStart() == editor:GetSelectionEnd()
|
||||
then editor:LineCut() else editor:Cut() end
|
||||
if spos == epos then editor:LineCopy() else editor:Copy() end
|
||||
if spos == epos then
|
||||
local line = editor:LineFromPosition(spos)
|
||||
spos, epos = editor:PositionFromLine(line), editor:PositionFromLine(line+1)
|
||||
editor:SetSelectionStart(spos)
|
||||
editor:SetSelectionEnd(epos)
|
||||
end
|
||||
if spos ~= epos then editor:ClearAny() end
|
||||
elseif menu_id == ID_COPY then
|
||||
if editor:GetSelectionStart() == editor:GetSelectionEnd()
|
||||
then editor:LineCopy() else editor:Copy() end
|
||||
elseif menu_id == ID_PASTE then editor:Paste()
|
||||
if spos == epos then editor:LineCopy() else editor:Copy() end
|
||||
elseif menu_id == ID_PASTE then
|
||||
-- first clear the text in case there is any hidden markup
|
||||
if spos ~= epos then editor:ClearAny() end
|
||||
editor:Paste()
|
||||
elseif menu_id == ID_SELECTALL then editor:SelectAll()
|
||||
elseif menu_id == ID_UNDO then editor:Undo()
|
||||
elseif menu_id == ID_REDO then editor:Redo()
|
||||
@@ -117,12 +157,6 @@ for _, event in pairs({
|
||||
frame:Connect(event, wx.wxEVT_UPDATE_UI, onUpdateUIEditorInFocus)
|
||||
end
|
||||
|
||||
frame:Connect(ID_FOLD, wx.wxEVT_UPDATE_UI,
|
||||
function(event)
|
||||
local editor = GetEditorWithFocus(GetEditor())
|
||||
event:Enable(ide.config.editor.fold and editor ~= nil)
|
||||
end)
|
||||
|
||||
frame:Connect(ID_COMMENT, wx.wxEVT_UPDATE_UI,
|
||||
function(event)
|
||||
local editor = GetEditorWithFocus(GetEditor())
|
||||
@@ -133,7 +167,7 @@ frame:Connect(ID_COMMENT, wx.wxEVT_UPDATE_UI,
|
||||
|
||||
local function generateConfigMessage(type)
|
||||
return ([==[--[[--
|
||||
Use this file to specify %s preferences.
|
||||
Use this file to specify **%s** preferences.
|
||||
Review [examples](+%s) or check [online documentation](%s) for details.
|
||||
--]]--
|
||||
]==])
|
||||
@@ -144,14 +178,14 @@ end
|
||||
frame:Connect(ID_PREFERENCESSYSTEM, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function ()
|
||||
local editor = LoadFile(ide.configs.system)
|
||||
if editor and #editor:GetText() == 0 then
|
||||
if editor and editor:GetLength() == 0 then
|
||||
editor:AddText(generateConfigMessage("System")) end
|
||||
end)
|
||||
|
||||
frame:Connect(ID_PREFERENCESUSER, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function ()
|
||||
local editor = LoadFile(ide.configs.user)
|
||||
if editor and #editor:GetText() == 0 then
|
||||
if editor and editor:GetLength() == 0 then
|
||||
editor:AddText(generateConfigMessage("User")) end
|
||||
end)
|
||||
frame:Connect(ID_PREFERENCESUSER, wx.wxEVT_UPDATE_UI,
|
||||
@@ -212,14 +246,13 @@ frame:Connect(ID_COMMENT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
-- go last to first as selection positions we captured may be affected
|
||||
-- by text changes
|
||||
for line = eline, sline, -1 do
|
||||
local pos = sel and (sline == eline or rect)
|
||||
and ssel-editor:PositionFromLine(sline)+1 or 1
|
||||
local pos = sel and (sline == eline or rect) and ssel-editor:PositionFromLine(sline)+1 or 1
|
||||
local text = editor:GetLine(line)
|
||||
local validline = (line == sline or line < eline or esel-editor:PositionFromLine(line) > 0)
|
||||
local _, cpos = text:find("^%s*"..qlc, pos)
|
||||
if not comment and cpos then
|
||||
if not comment and cpos and validline then
|
||||
editor:DeleteRange(cpos-#lc+editor:PositionFromLine(line), #lc)
|
||||
elseif comment and text:find("%S")
|
||||
and (line == sline or line < eline or esel-editor:PositionFromLine(line) > 0) then
|
||||
elseif comment and text:find("%S") and validline then
|
||||
editor:SetTargetStart(pos+editor:PositionFromLine(line)-1)
|
||||
editor:SetTargetEnd(editor:GetTargetStart())
|
||||
editor:ReplaceTarget(lc)
|
||||
@@ -267,11 +300,11 @@ local function reIndent(editor, buf)
|
||||
local decindent, incindent = editor.spec.isdecindent, editor.spec.isincindent
|
||||
if not (decindent and incindent) then return end
|
||||
|
||||
local line = editor:LineFromPosition(editor:GetSelectionStart())
|
||||
local edline = editor:LineFromPosition(editor:GetSelectionStart())
|
||||
local indent = 0
|
||||
local text = ''
|
||||
-- find the last non-empty line in the previous block (if any)
|
||||
for n = line-1, 1, -1 do
|
||||
for n = edline-1, 1, -1 do
|
||||
indent = editor:GetLineIndentation(n)
|
||||
text = editor:GetLine(n)
|
||||
if text:match('[^\r\n]') then break end
|
||||
@@ -283,9 +316,12 @@ local function reIndent(editor, buf)
|
||||
local indents = {}
|
||||
local isstatic = {}
|
||||
for line = 1, #buf+1 do
|
||||
local style = bit.band(editor:GetStyleAt(editor:PositionFromLine(line-1)), 31)
|
||||
local ls = editor:PositionFromLine(edline+line-1)
|
||||
local style = bit.band(editor:GetStyleAt(ls), 31)
|
||||
-- don't reformat multi-line comments or strings
|
||||
isstatic[line] = editor.spec.iscomment[style] or editor.spec.isstring[style]
|
||||
isstatic[line] = (editor.spec.iscomment[style]
|
||||
or editor.spec.isstring[style]
|
||||
or (MarkupIsAny and MarkupIsAny(style)))
|
||||
if not isstatic[line] or line == 1 or not isstatic[line-1] then
|
||||
local closed, blockend = decindent(text)
|
||||
local opened = incindent(text)
|
||||
@@ -320,8 +356,13 @@ frame:Connect(ID_REINDENT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
processSelection(editor, function(buf) reIndent(editor, buf) end)
|
||||
end)
|
||||
|
||||
frame:Connect(ID_FOLD, wx.wxEVT_UPDATE_UI,
|
||||
function(event)
|
||||
local editor = GetEditorWithFocus()
|
||||
event:Enable(editor and editor:CanFold() or false)
|
||||
end)
|
||||
frame:Connect(ID_FOLD, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function (event) FoldSome() end)
|
||||
function (event) GetEditorWithFocus():FoldSome() end)
|
||||
|
||||
local BOOKMARK_MARKER = StylesGetMarker("bookmark")
|
||||
local BOOKMARK_MARKER_VALUE = 2^BOOKMARK_MARKER
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -185,12 +185,14 @@ frame:Connect(ID_NEW, wx.wxEVT_COMMAND_MENU_SELECTED, function() return NewFile(
|
||||
frame:Connect(ID_OPEN, wx.wxEVT_COMMAND_MENU_SELECTED, OpenFile)
|
||||
frame:Connect(ID_SAVE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function ()
|
||||
local editor = GetEditor()
|
||||
SaveFile(editor, openDocuments[editor:GetId()].filePath)
|
||||
local editor = ide.findReplace:CanSave(GetEditorWithFocus()) or GetEditor()
|
||||
local doc = ide:GetDocument(editor)
|
||||
SaveFile(editor, doc and doc:GetFilePath() or nil)
|
||||
end)
|
||||
frame:Connect(ID_SAVE, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
event:Enable(EditorIsModified(GetEditor()))
|
||||
event:Enable(ide.findReplace:CanSave(GetEditorWithFocus())
|
||||
and true or EditorIsModified(GetEditor()))
|
||||
end)
|
||||
|
||||
frame:Connect(ID_SAVEAS, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
@@ -220,11 +222,18 @@ frame:Connect(ID_SAVEALL, wx.wxEVT_UPDATE_UI,
|
||||
|
||||
frame:Connect(ID_CLOSE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function (event)
|
||||
ClosePage() -- this will find the current editor tab
|
||||
local editor = GetEditorWithFocus()
|
||||
local nb = ide:GetOutputNotebook()
|
||||
local index = editor and nb:GetPageIndex(editor)
|
||||
if index and ide.findReplace:IsPreview(editor) and index >= 0 then
|
||||
nb:DeletePage(index) -- close preview tab
|
||||
else
|
||||
ClosePage() -- this will find the current editor tab
|
||||
end
|
||||
end)
|
||||
frame:Connect(ID_CLOSE, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
event:Enable(GetEditor() ~= nil)
|
||||
event:Enable(ide.findReplace:IsPreview(GetEditorWithFocus()) or GetEditor() ~= nil)
|
||||
end)
|
||||
|
||||
frame:Connect(ID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
---------------------------------------------------------
|
||||
|
||||
local ide = ide
|
||||
@@ -32,7 +32,7 @@ local helpMenu = wx.wxMenu{
|
||||
-- do not translate Help menu on Mac as it won't merge with "standard" menus
|
||||
menuBar:Append(helpMenu, ide.osname == 'Macintosh' and "&Help" or TR("&Help"))
|
||||
|
||||
local function DisplayAbout(event)
|
||||
local function displayAbout(event)
|
||||
local logo = ide:GetAppName().."/"..GetIDEString("logo")
|
||||
local logoimg = wx.wxFileName(logo):FileExists() and
|
||||
([[<tr><td><img src="%s"></td></tr>]]):format(logo) or ""
|
||||
@@ -46,7 +46,7 @@ local function DisplayAbout(event)
|
||||
<tr>
|
||||
<td>
|
||||
<b>ZeroBrane Studio (%s; MobDebug %s)</b><br>
|
||||
<b>Copyright © 2011-2014 ZeroBrane LLC</b><br>
|
||||
<b>Copyright © 2011-2015 ZeroBrane LLC</b><br>
|
||||
Paul Kulchenko<br>
|
||||
Licensed under the MIT License.
|
||||
</td>
|
||||
@@ -111,7 +111,7 @@ local function DisplayAbout(event)
|
||||
dlg:Destroy()
|
||||
end
|
||||
|
||||
frame:Connect(ID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED, DisplayAbout)
|
||||
frame:Connect(ID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED, displayAbout)
|
||||
for item, page in pairs(urls) do
|
||||
frame:Connect(item, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function() wx.wxLaunchDefaultBrowser(url..page, 0) end)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -16,7 +16,7 @@ local uimgr = frame.uimgr
|
||||
|
||||
local debugTab = {
|
||||
{ ID_RUN, TR("&Run")..KSC(ID_RUN), TR("Execute the current project/file") },
|
||||
{ ID_RUNNOW, TR("Run as Scratchpad")..KSC(ID_RUNNOW), TR("Execute the current project/file and keep updating the code to see immediate results"), wx.wxITEM_CHECK },
|
||||
{ ID_RUNNOW, TR("Run As Scratchpad")..KSC(ID_RUNNOW), TR("Execute the current project/file and keep updating the code to see immediate results"), wx.wxITEM_CHECK },
|
||||
{ ID_COMPILE, TR("&Compile")..KSC(ID_COMPILE), TR("Compile the current file") },
|
||||
{ ID_STARTDEBUG, TR("Start &Debugging")..KSC(ID_STARTDEBUG), TR("Start or continue debugging") },
|
||||
{ ID_ATTACHDEBUG, TR("&Start Debugger Server")..KSC(ID_ATTACHDEBUG), TR("Allow external process to start debugging"), wx.wxITEM_CHECK },
|
||||
@@ -26,6 +26,7 @@ local debugTab = {
|
||||
{ ID_STEP, TR("Step &Into")..KSC(ID_STEP), TR("Step into") },
|
||||
{ ID_STEPOVER, TR("Step &Over")..KSC(ID_STEPOVER), TR("Step over") },
|
||||
{ ID_STEPOUT, TR("Step O&ut")..KSC(ID_STEPOUT), TR("Step out of the current function") },
|
||||
{ ID_RUNTO, TR("Run To Cursor")..KSC(ID_RUNTO), TR("Run to cursor") },
|
||||
{ ID_TRACE, TR("Tr&ace")..KSC(ID_TRACE), TR("Trace execution showing each executed line") },
|
||||
{ ID_BREAK, TR("&Break")..KSC(ID_BREAK), TR("Break execution at the next executed line of code") },
|
||||
{ },
|
||||
@@ -60,22 +61,28 @@ local function selectInterpreter(id)
|
||||
|
||||
local changed = ide.interpreter ~= interpreters[id]
|
||||
if ide.interpreter and changed then
|
||||
PackageEventHandle("onInterpreterClose", ide.interpreter) end
|
||||
PackageEventHandle("onInterpreterClose", ide.interpreter)
|
||||
end
|
||||
if interpreters[id] and changed then
|
||||
PackageEventHandle("onInterpreterLoad", interpreters[id]) end
|
||||
PackageEventHandle("onInterpreterLoad", interpreters[id])
|
||||
end
|
||||
|
||||
ide.interpreter = interpreters[id]
|
||||
|
||||
DebuggerShutdown()
|
||||
|
||||
ide.frame.statusBar:SetStatusText(ide.interpreter.name or "", 5)
|
||||
ide:SetStatus(ide.interpreter.name or "", 4)
|
||||
if changed then ReloadLuaAPI() end
|
||||
end
|
||||
|
||||
function ProjectSetInterpreter(name)
|
||||
local id = IDget("debug.interpreter."..name)
|
||||
if (not interpreters[id]) then return end
|
||||
selectInterpreter(id)
|
||||
if id and interpreters[id] then
|
||||
selectInterpreter(id)
|
||||
else
|
||||
DisplayOutputLn(("Can't find interpreter '%s'; using the default interpreter instead.")
|
||||
:format(name))
|
||||
end
|
||||
end
|
||||
|
||||
local function evSelectInterpreter(event)
|
||||
@@ -96,7 +103,7 @@ function ProjectUpdateInterpreters()
|
||||
table.sort(names)
|
||||
|
||||
interpreters = {}
|
||||
for i, file in ipairs(names) do
|
||||
for _, file in ipairs(names) do
|
||||
local inter = ide.interpreters[file]
|
||||
local id = ID("debug.interpreter."..file)
|
||||
inter.fname = file
|
||||
@@ -109,8 +116,8 @@ function ProjectUpdateInterpreters()
|
||||
local id = (
|
||||
-- interpreter is set and is (still) on the list of known interpreters
|
||||
IDget("debug.interpreter."
|
||||
..(ide.interpreter and ide.interpreters[ide.interpreter.fname]
|
||||
and ide.interpreter.fname or ide.config.interpreter)) or
|
||||
..(ide.interpreter and ide.interpreters[ide.interpreter.fname] and ide.interpreter.fname
|
||||
or ide.config.interpreter or ide.config.default.interpreter)) or
|
||||
-- otherwise use default interpreter
|
||||
ID("debug.interpreter."..ide.config.default.interpreter)
|
||||
)
|
||||
@@ -121,17 +128,19 @@ end
|
||||
-- Project directory handling
|
||||
|
||||
function ProjectUpdateProjectDir(projdir,skiptree)
|
||||
-- strip trailing spaces as this may create issues with "path/ " on Windows
|
||||
projdir = projdir:gsub("%s+$","")
|
||||
local dir = wx.wxFileName.DirName(FixDir(projdir))
|
||||
dir:Normalize() -- turn into absolute path if needed
|
||||
if not wx.wxDirExists(dir:GetFullPath()) then return end
|
||||
|
||||
projdir = dir:GetPath(wx.wxPATH_GET_VOLUME) -- no trailing slash
|
||||
|
||||
ide.config.path.projectdir = projdir ~= "" and projdir or nil
|
||||
frame:SetStatusText(projdir)
|
||||
ide:SetStatus(projdir)
|
||||
frame:SetTitle(ExpandPlaceholders(ide.config.format.apptitle))
|
||||
if (not skiptree) then
|
||||
ide.filetree:updateProjectDir(projdir)
|
||||
end
|
||||
if (not skiptree) then ide.filetree:updateProjectDir(projdir) end
|
||||
return true
|
||||
end
|
||||
|
||||
local function projChoose(event)
|
||||
@@ -144,13 +153,12 @@ local function projChoose(event)
|
||||
local filePicker = wx.wxDirDialog(frame, TR("Choose a project directory"),
|
||||
projectdir ~= "" and projectdir or wx.wxGetCwd(), wx.wxDIRP_DIR_MUST_EXIST)
|
||||
if filePicker:ShowModal(true) == wx.wxID_OK then
|
||||
ProjectUpdateProjectDir(filePicker:GetPath())
|
||||
return ProjectUpdateProjectDir(filePicker:GetPath())
|
||||
end
|
||||
return true
|
||||
return false
|
||||
end
|
||||
|
||||
frame:Connect(ID_PROJECTDIRCHOOSE, wx.wxEVT_COMMAND_MENU_SELECTED, projChoose)
|
||||
frame:Connect(ID_PROJECTDIRCHOOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED, projChoose)
|
||||
|
||||
local function projFromFile(event)
|
||||
local editor = GetEditor()
|
||||
@@ -176,6 +184,7 @@ frame:Connect(ID_PROJECTDIRFROMFILE, wx.wxEVT_UPDATE_UI,
|
||||
|
||||
local function getNameToRun(skipcheck)
|
||||
local editor = GetEditor()
|
||||
if not editor then return end
|
||||
|
||||
-- test compile it before we run it, if successful then ask to save
|
||||
-- only compile if lua api
|
||||
@@ -187,19 +196,20 @@ local function getNameToRun(skipcheck)
|
||||
return
|
||||
end
|
||||
|
||||
local id = editor:GetId()
|
||||
if not openDocuments[id].filePath then SetDocumentModified(id, true) end
|
||||
local doc = ide:GetDocument(editor)
|
||||
local name = ide:GetProjectStartFile() or doc:GetFilePath()
|
||||
if not name then doc:SetModified(true) end
|
||||
if not SaveIfModified(editor) then return end
|
||||
if ide.config.editor.saveallonrun then SaveAll(true) end
|
||||
|
||||
return wx.wxFileName(openDocuments[id].filePath)
|
||||
return wx.wxFileName(name or doc:GetFilePath())
|
||||
end
|
||||
|
||||
function ActivateOutput()
|
||||
if not ide.config.activateoutput then return end
|
||||
-- show output/errorlog pane
|
||||
if not uimgr:GetPane("bottomnotebook"):IsShown() then
|
||||
uimgr:GetPane("bottomnotebook"):Show(true)
|
||||
if not uimgr:GetPane(bottomnotebook):IsShown() then
|
||||
uimgr:GetPane(bottomnotebook):Show(true)
|
||||
uimgr:Update()
|
||||
end
|
||||
-- activate output/errorlog window
|
||||
@@ -267,15 +277,13 @@ frame:Connect(ID_TOGGLEBREAKPOINT, wx.wxEVT_UPDATE_UI,
|
||||
|
||||
frame:Connect(ID_COMPILE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function ()
|
||||
local editor = GetEditor()
|
||||
ActivateOutput()
|
||||
CompileProgram(editor)
|
||||
CompileProgram(GetEditor(), {
|
||||
keepoutput = ide:GetLaunchedProcess() ~= nil or ide:GetDebugger():IsConnected()
|
||||
})
|
||||
end)
|
||||
frame:Connect(ID_COMPILE, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
event:Enable((debugger.server == nil and debugger.pid == nil) and (editor ~= nil))
|
||||
end)
|
||||
function (event) event:Enable(GetEditor() ~= nil) end)
|
||||
|
||||
frame:Connect(ID_RUN, wx.wxEVT_COMMAND_MENU_SELECTED, function () ProjectRun() end)
|
||||
frame:Connect(ID_RUN, wx.wxEVT_UPDATE_UI,
|
||||
@@ -320,7 +328,6 @@ frame:Connect(ID_ATTACHDEBUG, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
end)
|
||||
frame:Connect(ID_ATTACHDEBUG, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
event:Enable(ide.interpreter and ide.interpreter.fattachdebug and true or false)
|
||||
ide.frame.menuBar:Check(event:GetId(), debugger.listening and true or false)
|
||||
end)
|
||||
@@ -356,8 +363,19 @@ frame:Connect(ID_DETACHDEBUG, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function () debugger.detach() end)
|
||||
frame:Connect(ID_DETACHDEBUG, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
event:Enable((debugger.server ~= nil) and (not debugger.scratchpad))
|
||||
end)
|
||||
|
||||
frame:Connect(ID_RUNTO, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function ()
|
||||
local editor = GetEditor()
|
||||
debugger.runto(editor, editor:GetCurrentLine())
|
||||
end)
|
||||
frame:Connect(ID_RUNTO, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
event:Enable((debugger.server ~= nil) and (not debugger.running)
|
||||
and (not debugger.scratchpad))
|
||||
and (editor ~= nil) and (not debugger.scratchpad))
|
||||
end)
|
||||
|
||||
frame:Connect(ID_STEP, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
@@ -423,13 +441,3 @@ frame:Connect(ID_COMMANDLINEPARAMETERS, wx.wxEVT_UPDATE_UI,
|
||||
function (event)
|
||||
event:Enable(ide.interpreter and ide.interpreter.takeparameters and true or false)
|
||||
end)
|
||||
|
||||
frame:Connect(wx.wxEVT_IDLE,
|
||||
function(event)
|
||||
if (debugger.update) then debugger.update() end
|
||||
if (debugger.scratchpad) then DebuggerRefreshScratchpad() end
|
||||
if IndicateIfNeeded() then event:RequestMore(true) end
|
||||
PackageEventHandleOnce("onIdleOnce", event)
|
||||
PackageEventHandle("onIdle", event)
|
||||
event:Skip() -- let other EVT_IDLE handlers to work on the event
|
||||
end)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -15,8 +15,8 @@ local findMenu = wx.wxMenu{
|
||||
{ ID_FIND, TR("&Find")..KSC(ID_FIND), TR("Find text") },
|
||||
{ ID_FINDNEXT, TR("Find &Next")..KSC(ID_FINDNEXT), TR("Find the next text occurrence") },
|
||||
{ ID_FINDPREV, TR("Find &Previous")..KSC(ID_FINDPREV), TR("Find the earlier text occurence") },
|
||||
{ ID_FINDSELECTNEXT, TR("Select and Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
|
||||
{ ID_FINDSELECTPREV, TR("Select and Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
|
||||
{ ID_FINDSELECTNEXT, TR("Select And Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
|
||||
{ ID_FINDSELECTPREV, TR("Select And Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
|
||||
{ ID_REPLACE, TR("&Replace")..KSC(ID_REPLACE), TR("Find and replace text") },
|
||||
{ },
|
||||
{ ID_FINDINFILES, TR("Find &In Files")..KSC(ID_FINDINFILES), TR("Find text in files") },
|
||||
@@ -64,8 +64,8 @@ frame:Connect(ID_FINDNEXT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
editor:SetMainSelection(selection)
|
||||
editor:ShowPosEnforcePolicy(editor:GetCurrentPos())
|
||||
else
|
||||
if findReplace:GetSelectedString() or findReplace:HasText() then
|
||||
findReplace:FindString()
|
||||
if findReplace:SetFind(findReplace:GetFind() or findReplace:GetSelection()) then
|
||||
findReplace:Find()
|
||||
else
|
||||
findReplace:Show(false)
|
||||
end
|
||||
@@ -82,8 +82,8 @@ frame:Connect(ID_FINDPREV, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
editor:SetMainSelection(selection)
|
||||
editor:ShowPosEnforcePolicy(editor:GetCurrentPos())
|
||||
else
|
||||
if findReplace:GetSelectedString() or findReplace:HasText() then
|
||||
findReplace:FindString(true) -- search up
|
||||
if findReplace:SetFind(findReplace:GetFind() or findReplace:GetSelection()) then
|
||||
findReplace:Find(true) -- search up
|
||||
else
|
||||
findReplace:Show(false)
|
||||
end
|
||||
@@ -94,43 +94,18 @@ frame:Connect(ID_FINDPREV, wx.wxEVT_UPDATE_UI, onUpdateUISearchMenu)
|
||||
-- Select and Find behaves like Find if there is a current selection;
|
||||
-- if not, it selects a word under cursor (if any) and does find.
|
||||
|
||||
local function selectWordUnderCaret(editor)
|
||||
local pos = editor:GetCurrentPos()
|
||||
local text = editor:GetTextRange( -- try to select a word under caret
|
||||
editor:WordStartPosition(pos, true), editor:WordEndPosition(pos, true))
|
||||
return #text > 0 and text or editor:GetTextRange( -- try to select a non-word under caret
|
||||
editor:WordStartPosition(pos, false), editor:WordEndPosition(pos, false))
|
||||
end
|
||||
frame:Connect(ID_FINDSELECTNEXT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
if editor:GetSelectionStart() ~= editor:GetSelectionEnd() then
|
||||
ide.frame:AddPendingEvent(
|
||||
wx.wxCommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, ID_FINDNEXT))
|
||||
return
|
||||
end
|
||||
|
||||
local text = selectWordUnderCaret(editor)
|
||||
if #text > 0 then
|
||||
findReplace.findText = text
|
||||
findReplace:FindString()
|
||||
if findReplace:SetFind(findReplace:GetSelection() or findReplace:GetWordAtCaret()) then
|
||||
findReplace:Find()
|
||||
end
|
||||
end)
|
||||
frame:Connect(ID_FINDSELECTNEXT, wx.wxEVT_UPDATE_UI, onUpdateUISearchMenu)
|
||||
|
||||
frame:Connect(ID_FINDSELECTPREV, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function (event)
|
||||
local editor = GetEditor()
|
||||
if editor:GetSelectionStart() ~= editor:GetSelectionEnd() then
|
||||
ide.frame:AddPendingEvent(
|
||||
wx.wxCommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, ID_FINDPREV))
|
||||
return
|
||||
end
|
||||
|
||||
local text = selectWordUnderCaret(editor)
|
||||
if #text > 0 then
|
||||
findReplace.findText = text
|
||||
findReplace:FindString(true)
|
||||
if findReplace:SetFind(findReplace:GetSelection() or findReplace:GetWordAtCaret()) then
|
||||
findReplace:Find(true)
|
||||
end
|
||||
end)
|
||||
frame:Connect(ID_FINDSELECTPREV, wx.wxEVT_UPDATE_UI, onUpdateUISearchMenu)
|
||||
@@ -139,6 +114,11 @@ local markername = "commandbar.background"
|
||||
local mac = ide.osname == 'Macintosh'
|
||||
local win = ide.osname == 'Windows'
|
||||
local special = {SYMBOL = '@', LINE = ':', METHOD = ';'}
|
||||
local tabsep = "\0"
|
||||
local function name2index(name)
|
||||
local p = name:find(tabsep)
|
||||
return p and tonumber(name:sub(p + #tabsep)) or nil
|
||||
end
|
||||
local function navigateTo(default, selected)
|
||||
local styles = ide.config.styles
|
||||
local marker = ide:AddMarker(markername,
|
||||
@@ -146,6 +126,7 @@ local function navigateTo(default, selected)
|
||||
|
||||
local nb = ide:GetEditorNotebook()
|
||||
local selection = nb:GetSelection()
|
||||
local maxitems = ide.config.commandbar.maxitems
|
||||
local files, preview, origline, functions, methods
|
||||
|
||||
local function markLine(ed, toline)
|
||||
@@ -167,18 +148,31 @@ local function navigateTo(default, selected)
|
||||
local ed = ide:GetEditor()
|
||||
if ed and origline then
|
||||
ed:MarkerDeleteAll(marker)
|
||||
ed:EnsureVisibleEnforcePolicy(origline-1)
|
||||
-- only restore original line if Escape was used (enter == false)
|
||||
if enter == false then ed:EnsureVisibleEnforcePolicy(origline-1) end
|
||||
end
|
||||
|
||||
local pindex = preview and nb:GetPageIndex(preview)
|
||||
if enter then
|
||||
local fline, sline, tabindex = unpack(t or {})
|
||||
local ed = ide:GetEditor()
|
||||
|
||||
-- jump to symbol; tabindex has the position of the symbol
|
||||
if text and text:find(special.SYMBOL) and tabindex then
|
||||
ed:GotoPos(tabindex-1)
|
||||
ed:EnsureVisibleEnforcePolicy(ed:LineFromPosition(tabindex-1))
|
||||
ed:SetFocus() -- in case the focus is on some other panel
|
||||
if text and text:find(special.SYMBOL) then
|
||||
if sline and tabindex then
|
||||
local index = name2index(sline)
|
||||
local editor = index and nb:GetPage(index):DynamicCast("wxStyledTextCtrl")
|
||||
if not editor then
|
||||
local doc = ide:FindDocument(sline)
|
||||
-- reload the file (including the preview to refresh its symbols in the outline)
|
||||
editor = LoadFile(sline, (not doc or doc:GetTabIndex() == pindex) and preview or nil)
|
||||
end
|
||||
if editor then
|
||||
if pindex and pindex ~= ide:GetDocument(editor):GetTabIndex() then ClosePage(pindex) end
|
||||
editor:SetFocus() -- in case the focus is on some other panel
|
||||
editor:GotoPos(tabindex-1)
|
||||
editor:EnsureVisibleEnforcePolicy(editor:LineFromPosition(tabindex-1))
|
||||
end
|
||||
end
|
||||
-- insert selected method
|
||||
elseif text and text:find('^%s*'..special.METHOD) then
|
||||
if ed then -- clean up text and insert at the current location
|
||||
@@ -195,7 +189,7 @@ local function navigateTo(default, selected)
|
||||
end
|
||||
end
|
||||
-- set line position in the (current) editor if requested
|
||||
elseif text and text:find(special.LINE) then
|
||||
elseif text and text:find(special.LINE..'(%d+)%s*$') then
|
||||
local toline = tonumber(text:match(special.LINE..'(%d+)'))
|
||||
if toline and ed then
|
||||
ed:GotoLine(toline-1)
|
||||
@@ -204,16 +198,27 @@ local function navigateTo(default, selected)
|
||||
end
|
||||
elseif tabindex then -- switch to existing tab
|
||||
SetEditorSelection(tabindex)
|
||||
if preview then -- close preview if not selected
|
||||
local pindex = nb:GetPageIndex(preview)
|
||||
if pindex ~= tabindex then ClosePage(pindex) end
|
||||
if pindex and pindex ~= tabindex then ClosePage(pindex) end
|
||||
-- load a new file (into preview if set)
|
||||
elseif sline or text then
|
||||
-- 1. use "text" if Ctrl/Cmd-Enter is used
|
||||
-- 2. otherwise use currently selected file
|
||||
-- 3. otherwise use "text"
|
||||
local file = (wx.wxGetKeyState(wx.WXK_CONTROL) and text) or sline or text
|
||||
local fullPath = MergeFullPath(ide:GetProject(), file)
|
||||
local doc = ide:FindDocument(fullPath)
|
||||
-- if the document is already opened (not in the preview)
|
||||
-- or can't be opened as a file or folder, then close the preview
|
||||
if doc and doc.index ~= pindex
|
||||
or not LoadFile(fullPath, preview or nil) and not ProjectUpdateProjectDir(fullPath) then
|
||||
if pindex then ClosePage(pindex) end
|
||||
end
|
||||
elseif sline then -- load a new file (into preview if set)
|
||||
LoadFile(MergeFullPath(ide:GetProject(), sline), preview or nil, true)
|
||||
end
|
||||
elseif enter == nil then -- changed focus
|
||||
-- do nothing; keep everything as is
|
||||
else
|
||||
-- close preview
|
||||
if preview then ClosePage(nb:GetPageIndex(preview)) end
|
||||
if pindex then ClosePage(pindex) end
|
||||
-- restore original selection if canceled
|
||||
if nb:GetSelection() ~= selection then nb:SetSelection(selection) end
|
||||
end
|
||||
@@ -237,24 +242,45 @@ local function navigateTo(default, selected)
|
||||
-- reset cached methods if no method search
|
||||
if text and not text:find(special.METHOD) then methods = nil end
|
||||
|
||||
if ed and text and text:find(special.SYMBOL) then
|
||||
if text and text:find(special.SYMBOL) then
|
||||
local file, symbol = text:match('^(.*)'..special.SYMBOL..'(.*)')
|
||||
if not functions then
|
||||
local funcs, nums = OutlineFunctions(ed), {}
|
||||
local nums, paths = {}, {}
|
||||
functions = {pos = {}, src = {}}
|
||||
for _, func in ipairs(funcs) do
|
||||
table.insert(functions, func.name)
|
||||
nums[func.name] = (nums[func.name] or 0) + 1
|
||||
local num = nums[func.name]
|
||||
local line = ed:LineFromPosition(func.pos-1)
|
||||
functions.src[func.name..num] = ed:GetLine(line):gsub("^%s+","")
|
||||
functions.pos[func.name..num] = func.pos
|
||||
|
||||
local function populateSymbols(path, symbols)
|
||||
for _, func in ipairs(symbols) do
|
||||
table.insert(functions, func.name)
|
||||
nums[func.name] = (nums[func.name] or 0) + 1
|
||||
local num = nums[func.name]
|
||||
functions.src[func.name..num] = path
|
||||
functions.pos[func.name..num] = func.pos
|
||||
end
|
||||
end
|
||||
|
||||
local currentonly = #file > 0 and ed
|
||||
local outline = ide:GetOutline()
|
||||
for _, doc in pairs(currentonly and {ide:GetDocument(ed)} or ide:GetDocuments()) do
|
||||
local path, editor = doc:GetFilePath(), doc:GetEditor()
|
||||
if path then paths[path] = true end
|
||||
populateSymbols(path or doc:GetFileName()..tabsep..doc:GetTabIndex(), outline:GetEditorSymbols(editor))
|
||||
end
|
||||
|
||||
-- now add all other files in the project
|
||||
if not currentonly and ide.config.commandbar.showallsymbols then
|
||||
local n = 0
|
||||
outline:RefreshSymbols(projdir, function(path)
|
||||
local symbols = outline:GetFileSymbols(path)
|
||||
if not paths[path] and symbols then populateSymbols(path, symbols) end
|
||||
if not symbols then n = n + 1 end
|
||||
end)
|
||||
if n > 0 then ide:SetStatusFor(TR("Queued %d files to index."):format(n)) end
|
||||
end
|
||||
end
|
||||
local symbol = text:match(special.SYMBOL..'(.*)')
|
||||
local nums = {}
|
||||
if #symbol > 0 then
|
||||
local topscore
|
||||
for _, item in ipairs(CommandBarScoreItems(functions, symbol, 100)) do
|
||||
for _, item in ipairs(CommandBarScoreItems(functions, symbol, maxitems)) do
|
||||
local func, score = unpack(item)
|
||||
topscore = topscore or score
|
||||
nums[func] = (nums[func] or 0) + 1
|
||||
@@ -266,6 +292,7 @@ local function navigateTo(default, selected)
|
||||
end
|
||||
else
|
||||
for n, name in ipairs(functions) do
|
||||
if n > maxitems then break end
|
||||
nums[name] = (nums[name] or 0) + 1
|
||||
local num = nums[name]
|
||||
lines[n] = {name, functions.src[name..num], functions.pos[name..num]}
|
||||
@@ -291,7 +318,7 @@ local function navigateTo(default, selected)
|
||||
local method = text:match(special.METHOD..'(.*)')
|
||||
if #method > 0 then
|
||||
local topscore
|
||||
for _, item in ipairs(CommandBarScoreItems(methods, method, 100)) do
|
||||
for _, item in ipairs(CommandBarScoreItems(methods, method, maxitems)) do
|
||||
local method, score = unpack(item)
|
||||
topscore = topscore or score
|
||||
if score > topscore / 4 and score > 1 then
|
||||
@@ -299,23 +326,15 @@ local function navigateTo(default, selected)
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif text and text:find(special.LINE) then
|
||||
elseif text and text:find(special.LINE..'(%d*)%s*$') then
|
||||
local toline = tonumber(text:match(special.LINE..'(%d+)'))
|
||||
if toline and ed then markLine(ed, toline) end
|
||||
elseif text and #text > 0 and projdir and #projdir > 0 then
|
||||
-- populate the list of files
|
||||
if not files then
|
||||
files = FileSysGetRecursive(projdir, true)
|
||||
for k = #files, 1, -1 do
|
||||
if IsDirectory(files[k]) then
|
||||
table.remove(files, k)
|
||||
else
|
||||
files[k] = files[k]:gsub("^"..q(projdir), "")
|
||||
end
|
||||
end
|
||||
end
|
||||
files = files or FileSysGetRecursive(projdir, true, "*",
|
||||
{sort = false, path = false, folder = false, skipbinary = true})
|
||||
local topscore
|
||||
for _, item in ipairs(CommandBarScoreItems(files, text, 100)) do
|
||||
for _, item in ipairs(CommandBarScoreItems(files, text, maxitems)) do
|
||||
local file, score = unpack(item)
|
||||
topscore = topscore or score
|
||||
if score > topscore / 4 and score > 1 then
|
||||
@@ -342,10 +361,9 @@ local function navigateTo(default, selected)
|
||||
end,
|
||||
onSelection = function(t, text)
|
||||
local _, file, tabindex = unpack(t)
|
||||
local pos
|
||||
if text and text:find(special.SYMBOL) then
|
||||
local ed = ide:GetEditor()
|
||||
if ed then markLine(ed, ed:LineFromPosition(tabindex-1)+1) end
|
||||
return
|
||||
pos, tabindex = tabindex, name2index(file)
|
||||
elseif text and text:find(special.METHOD) then
|
||||
return
|
||||
end
|
||||
@@ -365,7 +383,7 @@ local function navigateTo(default, selected)
|
||||
elseif file then
|
||||
-- skip binary files with unknown extensions
|
||||
if #ide:GetKnownExtensions(GetFileExt(file)) > 0
|
||||
or not isBinary(FileRead(file, 2048)) then
|
||||
or not IsBinary(FileRead(file, 2048)) then
|
||||
preview = preview or NewFile()
|
||||
preview:SetEvtHandlerEnabled(false)
|
||||
LoadFile(file, preview, true, true)
|
||||
@@ -380,6 +398,11 @@ local function navigateTo(default, selected)
|
||||
end
|
||||
end
|
||||
nb:SetEvtHandlerEnabled(true)
|
||||
|
||||
if text and text:find(special.SYMBOL) then
|
||||
local ed = ide:GetEditor()
|
||||
if ed then markLine(ed, ed:LineFromPosition(pos-1)+1) end
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -61,8 +61,10 @@ local panels = {
|
||||
|
||||
local function togglePanel(event)
|
||||
local panel = panels[event:GetId()]
|
||||
local shown = not uimgr:GetPane(panel):IsShown()
|
||||
uimgr:GetPane(panel):Show(shown)
|
||||
local pane = uimgr:GetPane(panel)
|
||||
local shown = not pane:IsShown()
|
||||
if not shown then pane:BestSize(pane.window:GetSize()) end
|
||||
pane:Show(shown)
|
||||
uimgr:Update()
|
||||
|
||||
return shown
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
-- Copyright 2014 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2014-15 Paul Kulchenko, ZeroBrane LLC
|
||||
|
||||
local ide = ide
|
||||
ide.outline = {
|
||||
outlineCtrl = nil,
|
||||
imglist = ide:CreateImageList("OUTLINE", "FILE-NORMAL", "VALUE-LCALL",
|
||||
"VALUE-GCALL", "VALUE-ACALL", "VALUE-SCALL", "VALUE-MCALL"),
|
||||
settings = {
|
||||
symbols = {},
|
||||
ignoredirs = {},
|
||||
},
|
||||
needsaving = false,
|
||||
indexqueue = {[0] = {}},
|
||||
indexpurged = false, -- flag that the index has been purged from old records; once per session
|
||||
}
|
||||
|
||||
local outline = ide.outline
|
||||
local image = { FILE = 0, LFUNCTION = 1, GFUNCTION = 2, AFUNCTION = 3,
|
||||
SMETHOD = 4, METHOD = 5,
|
||||
}
|
||||
@@ -20,22 +29,59 @@ local function setData(ctrl, item, value)
|
||||
end
|
||||
end
|
||||
|
||||
local function resetOutlineTimer()
|
||||
if ide.config.outlineinactivity then
|
||||
ide.timers.outline:Start(ide.config.outlineinactivity*1000, wx.wxTIMER_ONE_SHOT)
|
||||
end
|
||||
end
|
||||
|
||||
local function resetIndexTimer(interval)
|
||||
if ide.config.symbolindexinactivity and not ide.timers.symbolindex:IsRunning() then
|
||||
ide.timers.symbolindex:Start(interval or ide.config.symbolindexinactivity*1000, wx.wxTIMER_ONE_SHOT)
|
||||
end
|
||||
end
|
||||
|
||||
local function outlineRefresh(editor, force)
|
||||
if not editor then return end
|
||||
local tokens = editor:GetTokenList()
|
||||
local text = editor:GetText()
|
||||
local sep = editor.spec.sep
|
||||
local varname = "([%w_][%w_"..q(sep:sub(1,1)).."]*)"
|
||||
local funcs = {}
|
||||
local funcs = {updated = TimeGet()}
|
||||
local var = {}
|
||||
local outcfg = ide.config.outline or {}
|
||||
local scopes = {}
|
||||
local funcnum = 0
|
||||
local SCOPENUM, FUNCNUM = 1, 2
|
||||
local text
|
||||
for _, token in ipairs(tokens) do
|
||||
local op = token[1]
|
||||
if op == 'Var' or op == 'Id' then
|
||||
var = {name = token.name, fpos = token.fpos, global = token.context[token.name] == nil}
|
||||
elseif outcfg.showcurrentfunction and op == 'Scope' then
|
||||
local fundepth = #scopes
|
||||
if token.name == '(' then -- a function starts a new scope
|
||||
funcnum = funcnum + 1 -- increment function count
|
||||
local nested = fundepth == 0 or scopes[fundepth][SCOPENUM] > 0
|
||||
scopes[fundepth + (nested and 1 or 0)] = {1, funcnum}
|
||||
elseif fundepth > 0 then
|
||||
scopes[fundepth][SCOPENUM] = scopes[fundepth][SCOPENUM] + 1
|
||||
end
|
||||
elseif outcfg.showcurrentfunction and op == 'EndScope' then
|
||||
local fundepth = #scopes
|
||||
if fundepth > 0 and scopes[fundepth][SCOPENUM] > 0 then
|
||||
scopes[fundepth][SCOPENUM] = scopes[fundepth][SCOPENUM] - 1
|
||||
if scopes[fundepth][SCOPENUM] == 0 then
|
||||
local funcnum = scopes[fundepth][FUNCNUM]
|
||||
if funcs[funcnum] then
|
||||
funcs[funcnum].poe = token.fpos + (token.name and #token.name or 0)
|
||||
end
|
||||
table.remove(scopes)
|
||||
end
|
||||
end
|
||||
elseif op == 'Function' then
|
||||
local depth = token.context['function'] or 1
|
||||
local name, pos = token.name, token.fpos
|
||||
text = text or editor:GetText()
|
||||
local _, _, rname, params = text:find('([^%(]*)(%b())', pos)
|
||||
if name and rname:find(token.name, 1, true) ~= 1 then
|
||||
name = rname:gsub("%s+$","")
|
||||
@@ -59,23 +105,25 @@ local function outlineRefresh(editor, force)
|
||||
or var.name and name:find('^'..var.name..'['..q(sep)..']') then
|
||||
ftype = var.global and image.GFUNCTION or image.LFUNCTION
|
||||
end
|
||||
if name or outcfg.showanonymous then
|
||||
funcs[#funcs+1] = {
|
||||
name = (name or outcfg.showanonymous)..params,
|
||||
depth = depth,
|
||||
image = ftype,
|
||||
pos = name and pos or token.fpos,
|
||||
}
|
||||
end
|
||||
name = name or outcfg.showanonymous
|
||||
funcs[#funcs+1] = {
|
||||
name = ((name or '~')..params):gsub("%s+", " "),
|
||||
skip = (not name) and true or nil,
|
||||
depth = depth,
|
||||
image = ftype,
|
||||
pos = name and pos or token.fpos,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
local ctrl = ide.outline.outlineCtrl
|
||||
if force == nil then return funcs end
|
||||
|
||||
local ctrl = outline.outlineCtrl
|
||||
local cache = caches[editor] or {}
|
||||
caches[editor] = cache
|
||||
|
||||
-- add file
|
||||
local filename = ide:GetDocument(editor):GetFileName()
|
||||
local filename = ide:GetDocument(editor):GetTabText()
|
||||
local fileitem = cache.fileitem
|
||||
if not fileitem then
|
||||
local root = ctrl:GetRootItem()
|
||||
@@ -101,7 +149,7 @@ local function outlineRefresh(editor, force)
|
||||
func.item = prevfuncs[n].item -- carry over cached items
|
||||
if func.depth ~= prevfuncs[n].depth then
|
||||
nochange = false
|
||||
elseif nochange then
|
||||
elseif nochange and prevfuncs[n].item then
|
||||
if func.name ~= prevfuncs[n].name then
|
||||
ctrl:SetItemText(prevfuncs[n].item, func.name)
|
||||
if outcfg.sort then resort[ctrl:GetItemParent(prevfuncs[n].item)] = true end
|
||||
@@ -129,18 +177,32 @@ local function outlineRefresh(editor, force)
|
||||
local win = ide:GetMainFrame():FindFocus()
|
||||
|
||||
ctrl:Freeze()
|
||||
|
||||
-- disabling event handlers is not strictly necessary, but it's expected
|
||||
-- to fix a crash on Windows that had DeleteChildren in the trace (#442).
|
||||
ctrl:SetEvtHandlerEnabled(false)
|
||||
ctrl:DeleteChildren(fileitem)
|
||||
ctrl:SetEvtHandlerEnabled(true)
|
||||
|
||||
local edpos = editor:GetCurrentPos()+1
|
||||
local stack = {fileitem}
|
||||
local resort = {} -- items that need to be re-sorted
|
||||
for n, func in ipairs(funcs) do
|
||||
local depth = outcfg.showflat and 1 or func.depth
|
||||
local parent = stack[depth]
|
||||
while not parent do depth = depth - 1; parent = stack[depth] end
|
||||
local item = ctrl:AppendItem(parent, func.name, func.image)
|
||||
if outcfg.sort then resort[parent] = true end
|
||||
setData(ctrl, item, n)
|
||||
func.item = item
|
||||
stack[func.depth+1] = item
|
||||
if not func.skip then
|
||||
local item = ctrl:AppendItem(parent, func.name, func.image)
|
||||
if ide.config.outline.showcurrentfunction
|
||||
and edpos >= func.pos and func.poe and edpos <= func.poe then
|
||||
ctrl:SetItemBold(item, true)
|
||||
end
|
||||
if outcfg.sort then resort[parent] = true end
|
||||
setData(ctrl, item, n)
|
||||
func.item = item
|
||||
stack[func.depth+1] = item
|
||||
end
|
||||
func.skip = nil
|
||||
end
|
||||
if outcfg.sort then -- resort items for all parents that have been modified
|
||||
for item in pairs(resort) do ctrl:SortChildren(item) end
|
||||
@@ -158,22 +220,59 @@ local function outlineRefresh(editor, force)
|
||||
if win and win ~= ide:GetMainFrame():FindFocus() then win:SetFocus() end
|
||||
end
|
||||
|
||||
local function indexFromQueue()
|
||||
if #outline.indexqueue == 0 then return end
|
||||
|
||||
local editor = ide:GetEditor()
|
||||
local inactivity = ide.config.symbolindexinactivity
|
||||
if editor and inactivity and editor.updated > TimeGet()-inactivity then
|
||||
-- reschedule timer for later time
|
||||
resetIndexTimer()
|
||||
else
|
||||
local fname = table.remove(outline.indexqueue, 1)
|
||||
outline.indexqueue[0][fname] = nil
|
||||
-- check if fname is already loaded
|
||||
ide:SetStatusFor(TR("Indexing %d files: '%s'..."):format(#outline.indexqueue+1, fname))
|
||||
local content, err = FileRead(fname)
|
||||
if content then
|
||||
local editor = ide:CreateBareEditor()
|
||||
editor:SetupKeywords(GetFileExt(fname))
|
||||
editor:SetText(content)
|
||||
editor:Colourise(0, -1)
|
||||
editor:ResetTokenList()
|
||||
while IndicateAll(editor) do end
|
||||
|
||||
outline:UpdateSymbols(fname, outlineRefresh(editor))
|
||||
editor:Destroy()
|
||||
else
|
||||
DisplayOutputLn(TR("Can't open file '%s': %s"):format(fname, err))
|
||||
end
|
||||
if #outline.indexqueue == 0 then
|
||||
outline:SaveSettings()
|
||||
ide:SetStatusFor(TR("Indexing completed."))
|
||||
end
|
||||
ide:DoWhenIdle(indexFromQueue)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local function outlineCreateOutlineWindow()
|
||||
local REFRESH, REINDEX = 1, 2
|
||||
local width, height = 360, 200
|
||||
local ctrl = wx.wxTreeCtrl(ide.frame, wx.wxID_ANY,
|
||||
wx.wxDefaultPosition, wx.wxSize(width, height),
|
||||
wx.wxTR_LINES_AT_ROOT + wx.wxTR_HAS_BUTTONS + wx.wxTR_SINGLE
|
||||
wx.wxTR_LINES_AT_ROOT + wx.wxTR_HAS_BUTTONS
|
||||
+ wx.wxTR_HIDE_ROOT + wx.wxNO_BORDER)
|
||||
|
||||
ide.outline.outlineCtrl = ctrl
|
||||
ide.timers.outline = wx.wxTimer(ctrl)
|
||||
outline.outlineCtrl = ctrl
|
||||
ide.timers.outline = wx.wxTimer(ctrl, REFRESH)
|
||||
ide.timers.symbolindex = wx.wxTimer(ctrl, REINDEX)
|
||||
|
||||
ctrl:AddRoot("Outline")
|
||||
ctrl:SetImageList(ide.outline.imglist)
|
||||
ctrl:SetImageList(outline.imglist)
|
||||
ctrl:SetFont(ide.font.fNormal)
|
||||
|
||||
function ctrl:ActivateItem(item_id)
|
||||
ctrl:SelectItem(item_id, true)
|
||||
local data = ctrl:GetItemData(item_id)
|
||||
if ctrl:GetItemImage(item_id) == image.FILE then
|
||||
-- activate editor tab
|
||||
@@ -218,13 +317,41 @@ local function outlineCreateOutlineWindow()
|
||||
return true
|
||||
end
|
||||
|
||||
ctrl:Connect(wx.wxEVT_TIMER, function() outlineRefresh(GetEditor()) end)
|
||||
ctrl:Connect(wx.wxEVT_TIMER, function(event)
|
||||
if event:GetId() == REFRESH then outlineRefresh(GetEditor(), false) end
|
||||
if event:GetId() == REINDEX then ide:DoWhenIdle(indexFromQueue) end
|
||||
end)
|
||||
ctrl:Connect(wx.wxEVT_LEFT_DOWN, activateByPosition)
|
||||
ctrl:Connect(wx.wxEVT_LEFT_DCLICK, activateByPosition)
|
||||
ctrl:Connect(wx.wxEVT_COMMAND_TREE_ITEM_ACTIVATED, function(event)
|
||||
ctrl:ActivateItem(event:GetItem())
|
||||
end)
|
||||
|
||||
ctrl:Connect(ID_OUTLINESORT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function()
|
||||
ide.config.outline.sort = not ide.config.outline.sort
|
||||
for editor, cache in pairs(caches) do
|
||||
ide:SetStatus(("Refreshing '%s'..."):format(ide:GetDocument(editor):GetFileName()))
|
||||
local isexpanded = ctrl:IsExpanded(cache.fileitem)
|
||||
outlineRefresh(editor, true)
|
||||
if not isexpanded then ctrl:Collapse(cache.fileitem) end
|
||||
end
|
||||
ide:SetStatus('')
|
||||
end)
|
||||
|
||||
ctrl:Connect(wx.wxEVT_COMMAND_TREE_ITEM_MENU,
|
||||
function (event)
|
||||
local menu = wx.wxMenu {
|
||||
{ ID_OUTLINESORT, TR("Sort By Name"), "", wx.wxITEM_CHECK },
|
||||
}
|
||||
menu:Check(ID_OUTLINESORT, ide.config.outline.sort)
|
||||
|
||||
PackageEventHandle("onMenuOutline", menu, ctrl, event)
|
||||
|
||||
ctrl:PopupMenu(menu)
|
||||
end)
|
||||
|
||||
|
||||
local function reconfigure(pane)
|
||||
pane:TopDockable(false):BottomDockable(false)
|
||||
:MinSize(150,-1):BestSize(300,-1):FloatingSize(200,300)
|
||||
@@ -238,36 +365,78 @@ local function outlineCreateOutlineWindow()
|
||||
end
|
||||
end
|
||||
|
||||
local function eachNode(eachFunc, root)
|
||||
local ctrl = ide.outline.outlineCtrl
|
||||
local function eachNode(eachFunc, root, recursive)
|
||||
local ctrl = outline.outlineCtrl
|
||||
local item = ctrl:GetFirstChild(root or ctrl:GetRootItem())
|
||||
while true do
|
||||
if not item:IsOk() then break end
|
||||
if eachFunc and eachFunc(ctrl, item) then break end
|
||||
if recursive and ctrl:ItemHasChildren(item) then eachNode(eachFunc, item, recursive) end
|
||||
item = ctrl:GetNextSibling(item)
|
||||
end
|
||||
end
|
||||
|
||||
outlineCreateOutlineWindow()
|
||||
|
||||
function OutlineFunctions(editor)
|
||||
-- force token refresh (as these may be not updated yet)
|
||||
if #editor:GetTokenList() == 0 then
|
||||
while IndicateAll(editor) do end
|
||||
end
|
||||
|
||||
outlineRefresh(editor, true)
|
||||
return caches[editor].funcs
|
||||
local pathsep = GetPathSeparator()
|
||||
local function isInSubDir(name, path)
|
||||
return #name > #path and path..pathsep == name:sub(1, #path+#pathsep)
|
||||
end
|
||||
|
||||
ide:AddPackage('core.outline', {
|
||||
local function isIgnoredInIndex(name)
|
||||
local ignoredirs = outline.settings.ignoredirs
|
||||
if ignoredirs[name] then return true end
|
||||
|
||||
-- check through ignored dirs to see if any of them match the file
|
||||
for path in pairs(ignoredirs) do
|
||||
if isInSubDir(name, path) then return true end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
local function purgeIndex(path)
|
||||
local symbols = outline.settings.symbols
|
||||
for name in pairs(symbols) do
|
||||
if isInSubDir(name, path) then outline:UpdateSymbols(name, nil) end
|
||||
end
|
||||
end
|
||||
|
||||
local function purgeQueue(path)
|
||||
local curqueue = outline.indexqueue
|
||||
local newqueue = {[0] = {}}
|
||||
for _, name in ipairs(curqueue) do
|
||||
if not isInSubDir(name, path) then
|
||||
table.insert(newqueue, name)
|
||||
newqueue[0][name] = true
|
||||
end
|
||||
end
|
||||
outline.indexqueue = newqueue
|
||||
end
|
||||
|
||||
local function disableIndex(path)
|
||||
outline.settings.ignoredirs[path] = true
|
||||
outline:SaveSettings(true)
|
||||
|
||||
-- purge the path from the index and the (current) queue
|
||||
purgeIndex(path)
|
||||
purgeQueue(path)
|
||||
end
|
||||
|
||||
local function enableIndex(path)
|
||||
outline.settings.ignoredirs[path] = nil
|
||||
outline:SaveSettings(true)
|
||||
outline:RefreshSymbols(path)
|
||||
end
|
||||
|
||||
local package = ide:AddPackage('core.outline', {
|
||||
-- remove the editor from the list
|
||||
onEditorClose = function(self, editor)
|
||||
local cache = caches[editor]
|
||||
local fileitem = cache and cache.fileitem
|
||||
caches[editor] = nil -- remove from cache
|
||||
if (ide.config.outline or {}).showonefile then return end
|
||||
if fileitem then ide.outline.outlineCtrl:Delete(fileitem) end
|
||||
if fileitem then outline.outlineCtrl:Delete(fileitem) end
|
||||
end,
|
||||
|
||||
-- handle rename of the file in the current editor
|
||||
@@ -276,25 +445,30 @@ ide:AddPackage('core.outline', {
|
||||
local cache = caches[editor]
|
||||
local fileitem = cache and cache.fileitem
|
||||
local doc = ide:GetDocument(editor)
|
||||
local ctrl = ide.outline.outlineCtrl
|
||||
if doc and fileitem and ctrl:GetItemText(fileitem) ~= doc:GetFileName() then
|
||||
ctrl:SetItemText(fileitem, doc:GetFileName())
|
||||
local ctrl = outline.outlineCtrl
|
||||
if doc and fileitem and ctrl:GetItemText(fileitem) ~= doc:GetTabText() then
|
||||
ctrl:SetItemText(fileitem, doc:GetTabText())
|
||||
end
|
||||
local path = doc and doc:GetFilePath()
|
||||
if path and cache and cache.funcs then
|
||||
outline:UpdateSymbols(path, cache.funcs.updated > editor.updated and cache.funcs or nil)
|
||||
outline:SaveSettings()
|
||||
end
|
||||
end,
|
||||
|
||||
-- go over the file items to turn bold on/off or collapse/expand
|
||||
onEditorFocusSet = function(self, editor)
|
||||
if (ide.config.outline or {}).showonefile then
|
||||
if (ide.config.outline or {}).showonefile and ide.config.outlineinactivity then
|
||||
outlineRefresh(editor, true)
|
||||
return
|
||||
end
|
||||
|
||||
local cache = caches[editor]
|
||||
local fileitem = cache and cache.fileitem
|
||||
local ctrl = ide.outline.outlineCtrl
|
||||
local itemname = ide:GetDocument(editor):GetFileName()
|
||||
local ctrl = outline.outlineCtrl
|
||||
local itemname = ide:GetDocument(editor):GetTabText()
|
||||
|
||||
-- fix file name if it changed in the editor
|
||||
-- update file name if it changed in the editor
|
||||
if fileitem and ctrl:GetItemText(fileitem) ~= itemname then
|
||||
ctrl:SetItemText(fileitem, itemname)
|
||||
end
|
||||
@@ -302,9 +476,8 @@ ide:AddPackage('core.outline', {
|
||||
-- if the editor is not in the cache, which may happen if the user
|
||||
-- quickly switches between tabs that don't have outline generated,
|
||||
-- regenerate it manually
|
||||
if not cache and ide.config.outlineinactivity then
|
||||
ide.timers.outline:Start(ide.config.outlineinactivity*1000, wx.wxTIMER_ONE_SHOT)
|
||||
end
|
||||
if not cache then resetOutlineTimer() end
|
||||
resetIndexTimer()
|
||||
|
||||
eachNode(function(ctrl, item)
|
||||
local found = fileitem and item:GetValue() == fileitem:GetValue()
|
||||
@@ -321,4 +494,177 @@ ide:AddPackage('core.outline', {
|
||||
ctrl:SetScrollPos(wx.wxHORIZONTAL, 0, true)
|
||||
end
|
||||
end,
|
||||
|
||||
onMenuFiletree = function(self, menu, tree, event)
|
||||
local item_id = event:GetItem()
|
||||
local name = tree:GetItemFullName(item_id)
|
||||
local symboldirmenu = wx.wxMenu {
|
||||
{ID_SYMBOLDIRREFRESH, TR("Refresh Index"), TR("Refresh indexed symbols from files in the selected directory")},
|
||||
{ID_SYMBOLDIRDISABLE, TR("Disable Indexing For '%s'"):format(name), TR("Ignore and don't index symbols from files in the selected directory")},
|
||||
}
|
||||
local _, _, projdirpos = ide:FindMenuItem(ID_PROJECTDIR, menu)
|
||||
if projdirpos then
|
||||
local ignored = isIgnoredInIndex(name)
|
||||
local enabledirmenu = wx.wxMenu()
|
||||
local paths = {}
|
||||
for path in pairs(outline.settings.ignoredirs) do table.insert(paths, path) end
|
||||
table.sort(paths)
|
||||
for i, path in ipairs(paths) do
|
||||
local id = ID("file.enablesymboldir."..i)
|
||||
enabledirmenu:Append(id, path, "")
|
||||
tree:Connect(id, wx.wxEVT_COMMAND_MENU_SELECTED, function() enableIndex(path) end)
|
||||
end
|
||||
|
||||
symboldirmenu:Append(wx.wxMenuItem(symboldirmenu, ID_SYMBOLDIRENABLE,
|
||||
TR("Enable Indexing"), "", wx.wxITEM_NORMAL, enabledirmenu))
|
||||
menu:Insert(projdirpos+1, wx.wxMenuItem(menu, ID_SYMBOLDIRINDEX,
|
||||
TR("Symbol Index"), "", wx.wxITEM_NORMAL, symboldirmenu))
|
||||
|
||||
-- disable "enable" if it's empty
|
||||
menu:Enable(ID_SYMBOLDIRENABLE, #paths > 0)
|
||||
-- disable "refresh" and "disable" if the directory is ignored
|
||||
-- or if any of the directories above it are ignored
|
||||
menu:Enable(ID_SYMBOLDIRREFRESH, tree:IsDirectory(item_id) and not ignored)
|
||||
menu:Enable(ID_SYMBOLDIRDISABLE, tree:IsDirectory(item_id) and not ignored)
|
||||
|
||||
tree:Connect(ID_SYMBOLDIRREFRESH, wx.wxEVT_COMMAND_MENU_SELECTED, function()
|
||||
-- purge files in this directory as some might have been removed;
|
||||
-- files will be purged based on time, but this is a good time to clean.
|
||||
purgeIndex(name)
|
||||
outline:RefreshSymbols(name)
|
||||
resetIndexTimer(1) -- start after 1ms
|
||||
end)
|
||||
tree:Connect(ID_SYMBOLDIRDISABLE, wx.wxEVT_COMMAND_MENU_SELECTED, function()
|
||||
disableIndex(name)
|
||||
end)
|
||||
end
|
||||
end,
|
||||
|
||||
onEditorPainted = function(self, editor)
|
||||
local ctrl = ide.outline.outlineCtrl
|
||||
if not ide:IsWindowShown(ctrl) then return end
|
||||
|
||||
local cache = caches[editor]
|
||||
if not cache or not ide.config.outline.showcurrentfunction then return end
|
||||
|
||||
local edpos = editor:GetCurrentPos()+1
|
||||
local edline = editor:LineFromPosition(edpos-1)+1
|
||||
if cache.pos and cache.pos == edpos then return end
|
||||
if cache.line and cache.line == edline then return end
|
||||
|
||||
cache.pos = edpos
|
||||
cache.line = edline
|
||||
|
||||
local n = 0
|
||||
local MIN, MAX = 1, 2
|
||||
local visible = {[MIN] = math.huge, [MAX] = 0}
|
||||
local needshown = {[MIN] = math.huge, [MAX] = 0}
|
||||
|
||||
ctrl:Unselect()
|
||||
-- scan all items recursively starting from the current file
|
||||
eachNode(function(ctrl, item)
|
||||
local func = cache.funcs[ctrl:GetItemData(item):GetData()]
|
||||
local val = edpos >= func.pos and func.poe and edpos <= func.poe
|
||||
if edline == editor:LineFromPosition(func.pos)+1
|
||||
or (func.poe and edline == editor:LineFromPosition(func.poe)+1) then
|
||||
cache.line = nil
|
||||
end
|
||||
ctrl:SetItemBold(item, val)
|
||||
if val then ctrl:SelectItem(item, val) end
|
||||
|
||||
if not ide.config.outline.jumptocurrentfunction then return end
|
||||
n = n + 1
|
||||
-- check that this and the items around it are all visible;
|
||||
-- this is to avoid the situation when the current item is only partially visible
|
||||
local isvisible = ctrl:IsVisible(item) and ctrl:GetNextVisible(item):IsOk() and ctrl:GetPrevVisible(item):IsOk()
|
||||
if val and not isvisible then
|
||||
needshown[MIN] = math.min(needshown[MIN], n)
|
||||
needshown[MAX] = math.max(needshown[MAX], n)
|
||||
elseif isvisible then
|
||||
visible[MIN] = math.min(visible[MIN], n)
|
||||
visible[MAX] = math.max(visible[MAX], n)
|
||||
end
|
||||
end, cache.fileitem, true)
|
||||
|
||||
if not ide.config.outline.jumptocurrentfunction then return end
|
||||
if needshown[MAX] > visible[MAX] then
|
||||
ctrl:ScrollLines(needshown[MAX]-visible[MAX]) -- scroll forward to the last hidden line
|
||||
elseif needshown[MIN] < visible[MIN] then
|
||||
ctrl:ScrollLines(needshown[MIN]-visible[MIN]) -- scroll backward to the first hidden line
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local function queuePath(path)
|
||||
-- only queue if symbols inactivity is set, so files will be indexed
|
||||
if ide.config.symbolindexinactivity and not outline.indexqueue[0][path] then
|
||||
outline.indexqueue[0][path] = true
|
||||
table.insert(outline.indexqueue, 1, path)
|
||||
end
|
||||
end
|
||||
|
||||
function outline:GetFileSymbols(path)
|
||||
local symbols = self.settings.symbols[path]
|
||||
-- queue path to process when appropriate
|
||||
if not symbols then queuePath(path) end
|
||||
return symbols
|
||||
end
|
||||
|
||||
function outline:GetEditorSymbols(editor)
|
||||
-- force token refresh (as these may be not updated yet)
|
||||
if #editor:GetTokenList() == 0 then
|
||||
while IndicateAll(editor) do end
|
||||
end
|
||||
|
||||
-- only refresh the functions when none is present
|
||||
if not caches[editor] or #caches[editor].funcs == 0 then outlineRefresh(editor, true) end
|
||||
return caches[editor].funcs
|
||||
end
|
||||
|
||||
function outline:RefreshSymbols(path, callback)
|
||||
if isIgnoredInIndex(path) then return end
|
||||
|
||||
local exts = {}
|
||||
for _, ext in pairs(ide:GetKnownExtensions()) do
|
||||
local spec = GetSpec(ext)
|
||||
if spec and spec.marksymbols then table.insert(exts, ext) end
|
||||
end
|
||||
|
||||
local opts = {sort = false, folder = false, skipbinary = true, yield = true,
|
||||
-- skip those directories that are on the "ignore" list
|
||||
ondirectory = function(name) return outline.settings.ignoredirs[name] == nil end
|
||||
}
|
||||
local nextfile = coroutine.wrap(function() FileSysGetRecursive(path, true, table.concat(exts, ";"), opts) end)
|
||||
while true do
|
||||
local file = nextfile()
|
||||
if not file then break end
|
||||
if not isIgnoredInIndex(file) then (callback or queuePath)(file) end
|
||||
end
|
||||
end
|
||||
|
||||
function outline:UpdateSymbols(fname, symb)
|
||||
local symbols = self.settings.symbols
|
||||
symbols[fname] = symb
|
||||
|
||||
-- purge outdated records
|
||||
local threshold = TimeGet() - 60*60*24*7 -- cache for 7 days
|
||||
if not self.indexpurged then
|
||||
for k, v in pairs(symbols) do
|
||||
if v.updated < threshold then symbols[k] = nil end
|
||||
end
|
||||
self.indexpurged = true
|
||||
end
|
||||
|
||||
self.needsaving = true
|
||||
end
|
||||
|
||||
function outline:SaveSettings(force)
|
||||
if self.needsaving or force then
|
||||
ide:PushStatus(TR("Updating symbol index and settings..."))
|
||||
package:SetSettings(self.settings, {keyignore = {depth = true, image = true, poe = true, item = true, skip = true}})
|
||||
ide:PopStatus()
|
||||
self.needsaving = false
|
||||
end
|
||||
end
|
||||
|
||||
MergeSettings(outline.settings, package:GetSettings())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -318,10 +318,9 @@ errorlog:Connect(wx.wxEVT_END_PROCESS, function(event)
|
||||
-- check if editor still exists; it may not if the window is closed
|
||||
if editor then editor:SetFocus() end
|
||||
end
|
||||
nameTab(errorlog, TR("Output"))
|
||||
|
||||
unHideWindow(0)
|
||||
DebuggerStop(true)
|
||||
nameTab(errorlog, TR("Output"))
|
||||
DisplayOutputLn(TR("Program completed in %.2f seconds (pid: %d).")
|
||||
:format(TimeGet() - customprocs[pid].started, pid))
|
||||
customprocs[pid] = nil
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2013-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2013-15 Paul Kulchenko, ZeroBrane LLC
|
||||
---------------------------------------------------------
|
||||
|
||||
local ide = ide
|
||||
@@ -66,23 +66,23 @@ function PackageRegister(file, ...)
|
||||
end
|
||||
|
||||
function ide:GetRootPath(path)
|
||||
return MergeFullPath(GetPathWithSep(ide.editorFilename), path or '')
|
||||
return MergeFullPath(GetPathWithSep(self.editorFilename), path or '')
|
||||
end
|
||||
function ide:GetPackagePath(packname)
|
||||
return MergeFullPath(
|
||||
ide.oshome and MergeFullPath(ide.oshome, '.'..ide:GetAppName()..'/') or ide:GetRootPath(),
|
||||
self.oshome and MergeFullPath(self.oshome, '.'..self:GetAppName()..'/') or self:GetRootPath(),
|
||||
MergeFullPath('packages', packname or '')
|
||||
)
|
||||
end
|
||||
function ide:GetApp() return self.editorApp end
|
||||
function ide:GetAppName() return ide.appname end
|
||||
function ide:GetAppName() return self.appname end
|
||||
function ide:GetEditor(index) return GetEditor(index) end
|
||||
function ide:GetEditorWithFocus(ed) return GetEditorWithFocus(ed) end
|
||||
function ide:GetEditorWithLastFocus()
|
||||
-- make sure ide.infocus is still a valid component and not "some" userdata
|
||||
return (pcall(function() ide.infocus:GetId() end)
|
||||
and ide.infocus:GetClassInfo():GetClassName() == "wxStyledTextCtrl"
|
||||
and ide.infocus:DynamicCast("wxStyledTextCtrl") or nil)
|
||||
return (self:IsValidCtrl(self.infocus)
|
||||
and self.infocus:GetClassInfo():GetClassName() == "wxStyledTextCtrl"
|
||||
and self.infocus:DynamicCast("wxStyledTextCtrl") or nil)
|
||||
end
|
||||
function ide:GetMenuBar() return self.frame.menuBar end
|
||||
function ide:GetStatusBar() return self.frame.statusBar end
|
||||
@@ -94,7 +94,7 @@ function ide:GetDocument(ed) return self.openDocuments[ed:GetId()] end
|
||||
function ide:GetDocuments() return self.openDocuments end
|
||||
function ide:GetKnownExtensions(ext)
|
||||
local knownexts, extmatch = {}, ext and ext:lower()
|
||||
for _, spec in pairs(ide.specs) do
|
||||
for _, spec in pairs(self.specs) do
|
||||
for _, ext in ipairs(spec.exts or {}) do
|
||||
if not extmatch or extmatch == ext:lower() then
|
||||
table.insert(knownexts, ext)
|
||||
@@ -104,12 +104,14 @@ function ide:GetKnownExtensions(ext)
|
||||
return knownexts
|
||||
end
|
||||
|
||||
function ide:DoWhenIdle(func) table.insert(self.onidle, func) end
|
||||
|
||||
function ide:FindTopMenu(item)
|
||||
local index = ide:GetMenuBar():FindMenu(TR(item))
|
||||
return ide:GetMenuBar():GetMenu(index), index
|
||||
local index = self:GetMenuBar():FindMenu((TR)(item))
|
||||
return self:GetMenuBar():GetMenu(index), index
|
||||
end
|
||||
function ide:FindMenuItem(itemid, menu)
|
||||
local item, imenu = ide:GetMenuBar():FindItem(itemid, menu)
|
||||
local item, imenu = self:GetMenuBar():FindItem(itemid, menu)
|
||||
if menu and not item then item = menu:FindItem(itemid) end
|
||||
if not item then return end
|
||||
menu = menu or imenu
|
||||
@@ -124,7 +126,7 @@ end
|
||||
|
||||
function ide:FindDocument(path)
|
||||
local fileName = wx.wxFileName(path)
|
||||
for _, doc in pairs(ide.openDocuments) do
|
||||
for _, doc in pairs(self:GetDocuments()) do
|
||||
if doc.filePath and fileName:SameAs(wx.wxFileName(doc.filePath)) then
|
||||
return doc
|
||||
end
|
||||
@@ -139,7 +141,7 @@ function ide:FindDocumentsByPartialPath(path)
|
||||
local lpattern = pattern:lower()
|
||||
|
||||
local docs = {}
|
||||
for _, doc in pairs(ide.openDocuments) do
|
||||
for _, doc in pairs(self:GetDocuments()) do
|
||||
if doc.filePath
|
||||
and (doc.filePath:find(pattern)
|
||||
or iscaseinsensitive and doc.filePath:lower():find(lpattern)) then
|
||||
@@ -155,17 +157,153 @@ function ide:GetOutput() return self.frame.bottomnotebook.errorlog end
|
||||
function ide:GetConsole() return self.frame.bottomnotebook.shellbox end
|
||||
function ide:GetEditorNotebook() return self.frame.notebook end
|
||||
function ide:GetOutputNotebook() return self.frame.bottomnotebook end
|
||||
function ide:GetOutline() return self.outline end
|
||||
function ide:GetProjectNotebook() return self.frame.projnotebook end
|
||||
function ide:GetProject() return FileTreeGetDir() end
|
||||
function ide:GetProjectStartFile()
|
||||
local projectdir = FileTreeGetDir()
|
||||
local startfile = self.filetree.settings.startfile[projectdir]
|
||||
return MergeFullPath(projectdir, startfile), startfile
|
||||
end
|
||||
function ide:GetLaunchedProcess() return self.debugger and self.debugger.pid end
|
||||
function ide:GetProjectTree() return ide.filetree.projtreeCtrl end
|
||||
function ide:GetOutlineTree() return ide.outline.outlineCtrl end
|
||||
function ide:GetProjectTree() return self.filetree.projtreeCtrl end
|
||||
function ide:GetOutlineTree() return self.outline.outlineCtrl end
|
||||
function ide:GetWatch() return self.debugger and self.debugger.watchCtrl end
|
||||
function ide:GetStack() return self.debugger and self.debugger.stackCtrl end
|
||||
|
||||
local statusreset
|
||||
function ide:SetStatusFor(text, interval, field)
|
||||
field = field or 0
|
||||
interval = interval or 2
|
||||
local statusbar = self:GetStatusBar()
|
||||
if not ide.timers.status then
|
||||
ide.timers.status = wx.wxTimer(statusbar)
|
||||
statusbar:Connect(wx.wxEVT_TIMER, function(event) if statusreset then statusreset() end end)
|
||||
end
|
||||
statusreset = function()
|
||||
if statusbar:GetStatusText(field) == text then statusbar:SetStatusText("", field) end
|
||||
end
|
||||
ide.timers.status:Start(interval*1000, wx.wxTIMER_ONE_SHOT)
|
||||
statusbar:SetStatusText(text, field)
|
||||
end
|
||||
function ide:SetStatus(text, field) self:GetStatusBar():SetStatusText(text, field or 0) end
|
||||
function ide:GetStatus(field) return self:GetStatusBar():GetStatusText(field or 0) end
|
||||
function ide:PushStatus(text, field) self:GetStatusBar():PushStatusText(text, field or 0) end
|
||||
function ide:PopStatus(field) self:GetStatusBar():PopStatusText(field or 0) end
|
||||
function ide:Yield() wx.wxYield() end
|
||||
function ide:CreateBareEditor() return CreateEditor(true) end
|
||||
function ide:CreateStyledTextCtrl(...)
|
||||
local editor = wxstc.wxStyledTextCtrl(...)
|
||||
function editor:GotoPosEnforcePolicy(pos)
|
||||
self:GotoPos(pos)
|
||||
self:EnsureVisibleEnforcePolicy(self:LineFromPosition(pos))
|
||||
end
|
||||
|
||||
function editor:CanFold()
|
||||
local foldable = false
|
||||
for m = 0, ide.MAXMARGIN do
|
||||
if editor:GetMarginWidth(m) > 0
|
||||
and editor:GetMarginMask(m) == wxstc.wxSTC_MASK_FOLDERS then
|
||||
foldable = true
|
||||
end
|
||||
end
|
||||
return foldable
|
||||
end
|
||||
|
||||
-- circle through "fold all" => "hide base lines" => "unfold all"
|
||||
function editor:FoldSome()
|
||||
editor:Colourise(0, -1) -- update doc's folding info
|
||||
local foldall = false -- at least on header unfolded => fold all
|
||||
local hidebase = false -- at least one base is visible => hide all
|
||||
local lines = editor:GetLineCount()
|
||||
|
||||
for ln = 0, lines-1 do
|
||||
local foldRaw = editor:GetFoldLevel(ln)
|
||||
local foldLvl = foldRaw % 4096
|
||||
local foldHdr = (math.floor(foldRaw / 8192) % 2) == 1
|
||||
|
||||
-- at least one header is expanded
|
||||
foldall = foldall or (foldHdr and editor:GetFoldExpanded(ln))
|
||||
|
||||
-- at least one base can be hidden
|
||||
hidebase = hidebase or (
|
||||
not foldHdr
|
||||
and ln > 1 -- first line can't be hidden, so ignore it
|
||||
and foldLvl == wxstc.wxSTC_FOLDLEVELBASE
|
||||
and bit.band(foldRaw, wxstc.wxSTC_FOLDLEVELWHITEFLAG) == 0
|
||||
and editor:GetLineVisible(ln))
|
||||
end
|
||||
|
||||
-- shows lines; this doesn't change fold status for folded lines
|
||||
if not foldall and not hidebase then editor:ShowLines(0, lines-1) end
|
||||
|
||||
for ln = 0, lines-1 do
|
||||
local foldRaw = editor:GetFoldLevel(ln)
|
||||
local foldLvl = foldRaw % 4096
|
||||
local foldHdr = (math.floor(foldRaw / 8192) % 2) == 1
|
||||
|
||||
if foldall then
|
||||
if foldHdr and editor:GetFoldExpanded(ln) then
|
||||
editor:ToggleFold(ln)
|
||||
end
|
||||
elseif hidebase then
|
||||
if not foldHdr and (foldLvl == wxstc.wxSTC_FOLDLEVELBASE) then
|
||||
editor:HideLines(ln, ln)
|
||||
end
|
||||
else -- unfold all
|
||||
if foldHdr and not editor:GetFoldExpanded(ln) then
|
||||
editor:ToggleFold(ln)
|
||||
end
|
||||
end
|
||||
end
|
||||
editor:EnsureCaretVisible()
|
||||
end
|
||||
|
||||
local function getMarginWidth(editor)
|
||||
local width = 0
|
||||
for m = 0, ide.MAXMARGIN do width = width + editor:GetMarginWidth(m) end
|
||||
return width
|
||||
end
|
||||
|
||||
function editor:ShowPosEnforcePolicy(pos)
|
||||
local line = self:LineFromPosition(pos)
|
||||
self:EnsureVisibleEnforcePolicy(line)
|
||||
-- skip the rest if line wrapping is on
|
||||
if editor:GetWrapMode() ~= wxstc.wxSTC_WRAP_NONE then return end
|
||||
local xwidth = self:GetClientSize():GetWidth() - getMarginWidth(self)
|
||||
local xoffset = self:GetTextExtent(self:GetLine(line):sub(1, pos-self:PositionFromLine(line)+1))
|
||||
self:SetXOffset(xoffset > xwidth and xoffset-xwidth or 0)
|
||||
end
|
||||
|
||||
function editor:ClearAny()
|
||||
local length = self:GetLength()
|
||||
local selections = ide.wxver >= "2.9.5" and self:GetSelections() or 1
|
||||
self:Clear() -- remove selected fragments
|
||||
|
||||
-- check if the modification has failed, which may happen
|
||||
-- if there is "invisible" text in the selected fragment.
|
||||
-- if there is only one selection, then delete manually.
|
||||
if length == self:GetLength() and selections == 1 then
|
||||
self:SetTargetStart(self:GetSelectionStart())
|
||||
self:SetTargetEnd(self:GetSelectionEnd())
|
||||
self:ReplaceTarget("")
|
||||
end
|
||||
end
|
||||
|
||||
return editor
|
||||
end
|
||||
|
||||
function ide:LoadFile(...) return LoadFile(...) end
|
||||
|
||||
function ide:CopyToClipboard(text)
|
||||
if wx.wxClipboard:Get():Open() then
|
||||
wx.wxClipboard:Get():SetData(wx.wxTextDataObject(text))
|
||||
wx.wxClipboard:Get():Close()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function ide:GetSetting(path, setting)
|
||||
local settings = self.settings
|
||||
local curpath = settings:GetPath()
|
||||
@@ -176,10 +314,10 @@ function ide:GetSetting(path, setting)
|
||||
end
|
||||
|
||||
function ide:RemoveMenuItem(id, menu)
|
||||
local _, menu, pos = ide:FindMenuItem(id, menu)
|
||||
local _, menu, pos = self:FindMenuItem(id, menu)
|
||||
if menu then
|
||||
ide:GetMainFrame():Disconnect(id, wx.wxID_ANY, wx.wxEVT_COMMAND_MENU_SELECTED)
|
||||
ide:GetMainFrame():Disconnect(id, wx.wxID_ANY, wx.wxEVT_UPDATE_UI)
|
||||
self:GetMainFrame():Disconnect(id, wx.wxID_ANY, wx.wxEVT_COMMAND_MENU_SELECTED)
|
||||
self:GetMainFrame():Disconnect(id, wx.wxID_ANY, wx.wxEVT_UPDATE_UI)
|
||||
menu:Disconnect(id, wx.wxID_ANY, wx.wxEVT_COMMAND_MENU_SELECTED)
|
||||
menu:Disconnect(id, wx.wxID_ANY, wx.wxEVT_UPDATE_UI)
|
||||
menu:Remove(id)
|
||||
@@ -196,7 +334,7 @@ function ide:RemoveMenuItem(id, menu)
|
||||
end
|
||||
|
||||
function ide:ExecuteCommand(cmd, wdir, callback, endcallback)
|
||||
local proc = wx.wxProcess(ide:GetOutput())
|
||||
local proc = wx.wxProcess(self:GetOutput())
|
||||
proc:Redirect()
|
||||
|
||||
local cwd
|
||||
@@ -215,7 +353,7 @@ function ide:ExecuteCommand(cmd, wdir, callback, endcallback)
|
||||
end
|
||||
|
||||
function ide:CreateImageList(group, ...)
|
||||
local log = wx.wxLogNull() -- disable error reporting in popup
|
||||
local _ = wx.wxLogNull() -- disable error reporting in popup
|
||||
local size = wx.wxSize(16,16)
|
||||
local imglist = wx.wxImageList(16,16)
|
||||
for i = 1, select('#', ...) do
|
||||
@@ -228,49 +366,78 @@ function ide:CreateImageList(group, ...)
|
||||
return imglist
|
||||
end
|
||||
|
||||
local tintdef = 100
|
||||
local function iconFilter(bitmap, tint)
|
||||
if type(tint) == 'function' then return tint(bitmap) end
|
||||
if type(tint) ~= 'table' or #tint ~= 3 then return bitmap end
|
||||
|
||||
local tr, tg, tb = tint[1]/255, tint[2]/255, tint[3]/255
|
||||
local pi = 0.299*tr + 0.587*tg + 0.114*tb -- pixel intensity
|
||||
local perc = (tint[0] or tintdef)/tintdef
|
||||
tr, tg, tb = tr*perc, tg*perc, tb*perc
|
||||
|
||||
local img = bitmap:ConvertToImage()
|
||||
for x = 0, img:GetWidth()-1 do
|
||||
for y = 0, img:GetHeight()-1 do
|
||||
if not img:IsTransparent(x, y) then
|
||||
local r, g, b = img:GetRed(x, y)/255, img:GetGreen(x, y)/255, img:GetBlue(x, y)/255
|
||||
local gs = (r + g + b) / 3
|
||||
local weight = 1-4*(gs-0.5)*(gs-0.5)
|
||||
r = math.max(0, math.min(255, math.floor(255 * (gs + (tr-pi) * weight))))
|
||||
g = math.max(0, math.min(255, math.floor(255 * (gs + (tg-pi) * weight))))
|
||||
b = math.max(0, math.min(255, math.floor(255 * (gs + (tb-pi) * weight))))
|
||||
img:SetRGB(x, y, r, g, b)
|
||||
end
|
||||
end
|
||||
end
|
||||
return wx.wxBitmap(img)
|
||||
end
|
||||
|
||||
local icons = {} -- icon cache to avoid reloading the same icons
|
||||
function ide:GetBitmap(id, client, size)
|
||||
local im = ide.config.imagemap
|
||||
local im = self.config.imagemap
|
||||
local width = size:GetWidth()
|
||||
local key = width.."/"..id
|
||||
local keyclient = key.."-"..client
|
||||
local mapped = im[keyclient] or im[id.."-"..client] or im[key] or im[id]
|
||||
if im[id.."-"..client] then keyclient = width.."/"..im[id.."-"..client]
|
||||
elseif im[keyclient] then keyclient = im[keyclient]
|
||||
elseif im[id] then
|
||||
-- mapped may be a file name/path or wxImage object; take that into account
|
||||
if type(im[id.."-"..client]) == 'string' then keyclient = width.."/"..im[id.."-"..client]
|
||||
elseif type(im[keyclient]) == 'string' then keyclient = im[keyclient]
|
||||
elseif type(im[id]) == 'string' then
|
||||
id = im[id]
|
||||
key = width.."/"..id
|
||||
keyclient = key.."-"..client
|
||||
end
|
||||
|
||||
local fileClient = ide:GetAppName() .. "/res/" .. keyclient .. ".png"
|
||||
local fileKey = ide:GetAppName() .. "/res/" .. key .. ".png"
|
||||
local fileClient = self:GetAppName() .. "/res/" .. keyclient .. ".png"
|
||||
local fileKey = self:GetAppName() .. "/res/" .. key .. ".png"
|
||||
local isImage = type(mapped) == 'userdata' and mapped:GetClassInfo():GetClassName() == 'wxImage'
|
||||
local file
|
||||
if mapped and wx.wxFileName(mapped):FileExists() then file = mapped
|
||||
if mapped and (isImage or wx.wxFileName(mapped):FileExists()) then file = mapped
|
||||
elseif wx.wxFileName(fileClient):FileExists() then file = fileClient
|
||||
elseif wx.wxFileName(fileKey):FileExists() then file = fileKey
|
||||
else return wx.wxArtProvider.GetBitmap(id, client, size) end
|
||||
local icon = icons[file] or wx.wxBitmap(file)
|
||||
local icon = icons[file] or iconFilter(wx.wxBitmap(file), self.config.imagetint)
|
||||
icons[file] = icon
|
||||
return icon, file
|
||||
end
|
||||
|
||||
function ide:AddPackage(name, package)
|
||||
ide.packages[name] = setmetatable(package, ide.proto.Plugin)
|
||||
ide.packages[name].fname = name
|
||||
return ide.packages[name]
|
||||
self.packages[name] = setmetatable(package, self.proto.Plugin)
|
||||
self.packages[name].fname = name
|
||||
return self.packages[name]
|
||||
end
|
||||
function ide:RemovePackage(name) ide.packages[name] = nil end
|
||||
function ide:RemovePackage(name) self.packages[name] = nil end
|
||||
|
||||
function ide:AddWatch(watch, value)
|
||||
local mgr = ide.frame.uimgr
|
||||
local mgr = self.frame.uimgr
|
||||
local pane = mgr:GetPane("watchpanel")
|
||||
if (pane:IsOk() and not pane:IsShown()) then
|
||||
pane:Show()
|
||||
mgr:Update()
|
||||
end
|
||||
|
||||
local watchCtrl = ide.debugger.watchCtrl
|
||||
local watchCtrl = self.debugger.watchCtrl
|
||||
if not watchCtrl then return end
|
||||
|
||||
local root = watchCtrl:GetRootItem()
|
||||
@@ -292,7 +459,7 @@ function ide:AddWatch(watch, value)
|
||||
end
|
||||
|
||||
function ide:AddInterpreter(name, interpreter)
|
||||
self.interpreters[name] = setmetatable(interpreter, ide.proto.Interpreter)
|
||||
self.interpreters[name] = setmetatable(interpreter, self.proto.Interpreter)
|
||||
ProjectUpdateInterpreters()
|
||||
end
|
||||
function ide:RemoveInterpreter(name)
|
||||
@@ -319,18 +486,37 @@ function ide:AddMarker(...) return StylesAddMarker(...) end
|
||||
function ide:GetMarker(marker) return StylesGetMarker(marker) end
|
||||
function ide:RemoveMarker(marker) StylesRemoveMarker(marker) end
|
||||
|
||||
local indicators = {}
|
||||
function ide:AddIndicator(indic, num)
|
||||
num = num or indicators[indic]
|
||||
if not num then -- new indicator; find the smallest available number
|
||||
local nums = {}
|
||||
for _, indicator in pairs(indicators) do
|
||||
if indicator >= wxstc.wxSTC_INDIC_CONTAINER then
|
||||
nums[indicator-wxstc.wxSTC_INDIC_CONTAINER+1] = true
|
||||
end
|
||||
end
|
||||
num = #nums + wxstc.wxSTC_INDIC_CONTAINER
|
||||
if num > wxstc.wxSTC_INDIC_MAX then return end
|
||||
end
|
||||
indicators[indic] = num
|
||||
return num
|
||||
end
|
||||
function ide:GetIndicator(indic) return indicators[indic] end
|
||||
function ide:RemoveIndicator(indic) indicators[indic] = nil end
|
||||
|
||||
-- this provides a simple stack for saving/restoring current configuration
|
||||
local configcache = {}
|
||||
function ide:AddConfig(name, files)
|
||||
if not name or configcache[name] then return end -- don't overwrite existing slots
|
||||
configcache[name] = require('mobdebug').dump(ide.config, {nocode = true})
|
||||
configcache[name] = require('mobdebug').dump(self.config, {nocode = true})
|
||||
for _, file in pairs(files) do LoadLuaConfig(MergeFullPath(name, file)) end
|
||||
ReApplySpecAndStyles() -- apply current config to the UI
|
||||
end
|
||||
function ide:RemoveConfig(name)
|
||||
if not name or not configcache[name] then return end
|
||||
local ok, res = LoadSafe(configcache[name])
|
||||
if ok then ide.config = res
|
||||
if ok then self.config = res
|
||||
else
|
||||
DisplayOutputLn(("Error while restoring configuration: '%s'."):format(res))
|
||||
end
|
||||
@@ -341,7 +527,7 @@ end
|
||||
local panels = {}
|
||||
function ide:AddPanel(ctrl, panel, name, conf)
|
||||
local width, height = 360, 200
|
||||
local notebook = wxaui.wxAuiNotebook(ide.frame, wx.wxID_ANY,
|
||||
local notebook = wxaui.wxAuiNotebook(self.frame, wx.wxID_ANY,
|
||||
wx.wxDefaultPosition, wx.wxDefaultSize,
|
||||
wxaui.wxAUI_NB_DEFAULT_STYLE + wxaui.wxAUI_NB_TAB_EXTERNAL_MOVE
|
||||
- wxaui.wxAUI_NB_CLOSE_ON_ACTIVE_TAB + wx.wxNO_BORDER)
|
||||
@@ -351,7 +537,7 @@ function ide:AddPanel(ctrl, panel, name, conf)
|
||||
notebook:Connect(wxaui.wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE,
|
||||
function(event) event:Veto() end)
|
||||
|
||||
local mgr = ide.frame.uimgr
|
||||
local mgr = self.frame.uimgr
|
||||
mgr:AddPane(notebook, wxaui.wxAuiPaneInfo():
|
||||
Name(panel):Float():CaptionVisible(false):PaneBorder(false):
|
||||
MinSize(width/2,height/2):
|
||||
@@ -370,13 +556,25 @@ function ide:AddPanelDocked(notebook, ctrl, panel, name, conf, activate)
|
||||
return notebook
|
||||
end
|
||||
function ide:IsPanelDocked(panel)
|
||||
local layout = ide:GetSetting("/view", "uimgrlayout")
|
||||
local layout = self:GetSetting("/view", "uimgrlayout")
|
||||
return layout and not layout:find(panel)
|
||||
end
|
||||
|
||||
function ide:IsValidCtrl(ctrl)
|
||||
return ctrl and pcall(function() ctrl:GetId() end)
|
||||
end
|
||||
|
||||
function ide:IsWindowShown(win)
|
||||
while win do
|
||||
if not win:IsShown() then return false end
|
||||
win = win:GetParent()
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function ide:RestorePanelByLabel(name)
|
||||
if not panels[name] then return end
|
||||
return ide:AddPanel(unpack(panels[name]))
|
||||
return self:AddPanel(unpack(panels[name]))
|
||||
end
|
||||
|
||||
function ide:AddTool(name, command, updateui)
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
-- Copyright 2013-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2013-15 Paul Kulchenko, ZeroBrane LLC
|
||||
---------------------------------------------------------
|
||||
|
||||
local q = EscapeMagic
|
||||
local modpref = ide.MODPREF
|
||||
|
||||
ide.proto.Document = {__index = {
|
||||
GetFileName = function(self) return self.fileName end,
|
||||
GetFilePath = function(self) return self.filePath end,
|
||||
@@ -9,10 +12,21 @@ ide.proto.Document = {__index = {
|
||||
GetEditor = function(self) return self.editor end,
|
||||
GetTabIndex = function(self) return self.index end,
|
||||
IsModified = function(self) return self.isModified end,
|
||||
SetModified = function(self, modified) SetDocumentModified(self.editor:GetId(), modified) end,
|
||||
SetTabText = function(self, text) SetDocumentModified(self.editor:GetId(), self.isModified, text) end,
|
||||
SetModified = function(self, modified)
|
||||
self.isModified = modified
|
||||
self:SetTabText()
|
||||
end,
|
||||
SetTabText = function(self, text)
|
||||
ide:GetEditorNotebook():SetPageText(self.index,
|
||||
(self.isModified and modpref or '')..(text or self:GetTabText()))
|
||||
end,
|
||||
GetTabText = function(self)
|
||||
if self.index == nil then return self.fileName end
|
||||
return ide:GetEditorNotebook():GetPageText(self.index):gsub("^"..q(modpref), "")
|
||||
end,
|
||||
SetActive = function(self) SetEditorSelection(self.index) end,
|
||||
Save = function(self) return SaveFile(self.editor, self.filePath) end
|
||||
Save = function(self) return SaveFile(self.editor, self.filePath) end,
|
||||
Close = function(self) return ClosePage(self.index) end,
|
||||
}}
|
||||
|
||||
ide.proto.Plugin = {__index = {
|
||||
@@ -20,7 +34,7 @@ ide.proto.Plugin = {__index = {
|
||||
GetFileName = function(self) return self.fname end,
|
||||
GetConfig = function(self) return ide.config[self.fname] or {} end,
|
||||
GetSettings = function(self) return SettingsRestorePackage(self.fname) end,
|
||||
SetSettings = function(self, settings) SettingsSavePackage(self.fname, settings) end,
|
||||
SetSettings = function(self, settings, opts) SettingsSavePackage(self.fname, settings, opts) end,
|
||||
}}
|
||||
|
||||
ide.proto.Interpreter = {__index = {
|
||||
@@ -44,6 +58,6 @@ ide.proto.Debugger = {__index = {
|
||||
}}
|
||||
|
||||
ide.proto.ID = {
|
||||
__index = function(t, id) return _G['ID_'..id] end,
|
||||
__call = function(t, id) return IDgen(id) end,
|
||||
__index = function(_, id) return _G['ID_'..id] end,
|
||||
__call = function(_, id) return IDgen(id) end,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
@@ -18,8 +18,24 @@ local layoutlabel = {
|
||||
-- ----------------------------------------------------------------------------
|
||||
-- Initialize the wxConfig for loading/saving the preferences
|
||||
|
||||
local settings = wx.wxFileConfig(GetIDEString("settingsapp"),
|
||||
GetIDEString("settingsvendor"), ide.config.ini or "")
|
||||
local ini = ide.config.ini
|
||||
-- if ini path is relative and includes a directory name, make it relative to the IDE location
|
||||
ini = ini and (not wx.wxIsAbsolutePath(ini) and wx.wxFileName(ini):GetDirCount() > 0
|
||||
and MergeFullPath(GetPathWithSep(ide.editorFilename), ini) or ini)
|
||||
-- check that the ini file doesn't point to a directory
|
||||
if ini and (wx.wxFileName(ini):IsDir() or wx.wxIsAbsolutePath(ini) and wx.wxDirExists(ini)) then
|
||||
print(("Can't use 'ini' configuration setting '%s' that points to a directory instead of a file; ignored.")
|
||||
:format(ini))
|
||||
ini = nil
|
||||
end
|
||||
-- check that the directory is writable
|
||||
if ini and wx.wxIsAbsolutePath(ini) and not wx.wxFileName(ini):IsDirWritable() then
|
||||
print(("Can't use 'ini' configuration setting '%s' that points to a non-writable directory; ignored.")
|
||||
:format(ini))
|
||||
ini = nil
|
||||
end
|
||||
|
||||
local settings = wx.wxFileConfig(GetIDEString("settingsapp"), GetIDEString("settingsvendor"), ini or "")
|
||||
ide.settings = settings
|
||||
|
||||
local function settingsReadSafe(settings,what,default)
|
||||
@@ -238,13 +254,18 @@ function SettingsRestorePackage(package)
|
||||
local path = settings:GetPath()
|
||||
settings:SetPath(packagename)
|
||||
local outtab = {}
|
||||
local report = DisplayOutputLn or print
|
||||
local ismore, key, index = settings:GetFirstEntry("", 0)
|
||||
while (ismore) do
|
||||
local couldread, value = settings:Read(key, "")
|
||||
if couldread then
|
||||
local ok, res = LoadSafe("return "..value)
|
||||
if ok then outtab[key] = res
|
||||
else outtab[key] = nil end
|
||||
else
|
||||
outtab[key] = nil
|
||||
report(("Couldn't load and ignored '%s' settings for package '%s': %s")
|
||||
:format(key, package, res))
|
||||
end
|
||||
end
|
||||
ismore, key, index = settings:GetNextEntry(index)
|
||||
end
|
||||
@@ -252,16 +273,41 @@ function SettingsRestorePackage(package)
|
||||
return outtab
|
||||
end
|
||||
|
||||
function SettingsSavePackage(package, values)
|
||||
local function plaindump(val, opts, done)
|
||||
local keyignore = opts and opts.keyignore or {}
|
||||
local final = done == nil
|
||||
opts, done = opts or {}, done or {}
|
||||
local t = type(val)
|
||||
if t == "table" then
|
||||
done[#done+1] = '{'
|
||||
done[#done+1] = ''
|
||||
for key, value in pairs (val) do
|
||||
if not keyignore[key] then
|
||||
done[#done+1] = '['
|
||||
plaindump(key, opts, done)
|
||||
done[#done+1] = ']='
|
||||
plaindump(value, opts, done)
|
||||
done[#done+1] = ","
|
||||
end
|
||||
end
|
||||
done[#done] = '}'
|
||||
elseif t == "string" then
|
||||
done[#done+1] = ("%q"):format(val):gsub("\010","n"):gsub("\026","\\026")
|
||||
elseif t == "number" then
|
||||
done[#done+1] = ("%.17g"):format(val)
|
||||
else
|
||||
done[#done+1] = tostring(val)
|
||||
end
|
||||
return final and table.concat(done, '')
|
||||
end
|
||||
|
||||
function SettingsSavePackage(package, values, opts)
|
||||
local packagename = "/package/"..package
|
||||
local path = settings:GetPath()
|
||||
local mdb = require('mobdebug')
|
||||
|
||||
settings:DeleteGroup(packagename)
|
||||
settings:SetPath(packagename)
|
||||
for k,v in pairs(values or {}) do
|
||||
settings:Write(k, mdb.line(v, {comment = false, nocode = true}))
|
||||
end
|
||||
for k,v in pairs(values or {}) do settings:Write(k, plaindump(v, opts)) end
|
||||
settings:SetPath(path)
|
||||
end
|
||||
|
||||
@@ -416,7 +462,7 @@ function SettingsRestoreView()
|
||||
end
|
||||
|
||||
-- check if debugging panes are not mentioned and float them
|
||||
for _, name in pairs({"stackpanel", "watchpanel"}) do
|
||||
for _, name in pairs({"stackpanel", "watchpanel", "searchpanel"}) do
|
||||
local pane = frame.uimgr:GetPane(name)
|
||||
if pane:IsOk() and not layout:find(name) then pane:Float() end
|
||||
end
|
||||
@@ -520,8 +566,9 @@ function SettingsRestoreEditorSettings()
|
||||
local path = settings:GetPath()
|
||||
settings:SetPath(listname)
|
||||
|
||||
ide.config.interpreter = settingsReadSafe(settings,"interpreter",ide.config.interpreter)
|
||||
ProjectSetInterpreter(ide.config.interpreter)
|
||||
local interpreter = settingsReadSafe(settings, "interpreter",
|
||||
ide.config.interpreter or ide.config.default.interpreter)
|
||||
ProjectSetInterpreter(interpreter)
|
||||
|
||||
settings:SetPath(path)
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
@@ -50,9 +50,7 @@ if success then -- ok, server was started, we are solo
|
||||
if filename then
|
||||
RequestAttention()
|
||||
if wx.wxDirExists(filename) then
|
||||
local dir = wx.wxFileName.DirName(filename)
|
||||
dir:Normalize() -- turn into absolute path if needed
|
||||
ProjectUpdateProjectDir(dir:GetFullPath())
|
||||
ProjectUpdateProjectDir(filename)
|
||||
elseif not ActivateFile(filename) then
|
||||
DisplayOutputLn(TR("Can't open file '%s': %s"):format(filename, wx.wxSysErrorMsg()))
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
----------
|
||||
@@ -75,15 +75,17 @@ function StylesGetDefault()
|
||||
output = {},
|
||||
prompt = {},
|
||||
error = {},
|
||||
searchmatchfile = {},
|
||||
},
|
||||
|
||||
-- indicators
|
||||
indicator = {
|
||||
fncall = {st = wxstc.wxSTC_INDIC_HIDDEN}, -- hide by default
|
||||
fncall = {},
|
||||
varlocal = {},
|
||||
varglobal = {},
|
||||
varmasking = {},
|
||||
varmasked = {},
|
||||
searchmatch = {},
|
||||
},
|
||||
}
|
||||
end
|
||||
@@ -96,6 +98,7 @@ local markers = {
|
||||
output = {4, wxstc.wxSTC_MARK_BACKGROUND, wx.wxBLACK, wx.wxColour(240, 240, 240)},
|
||||
prompt = {5, wxstc.wxSTC_MARK_ARROWS, wx.wxBLACK, wx.wxColour(220, 220, 220)},
|
||||
error = {6, wxstc.wxSTC_MARK_BACKGROUND, wx.wxBLACK, wx.wxColour(255, 220, 220)},
|
||||
searchmatchfile = {7, wxstc.wxSTC_MARK_EMPTY, wx.wxBLACK, wx.wxColour(196, 0, 0)},
|
||||
}
|
||||
function StylesGetMarker(marker) return unpack(markers[marker] or {}) end
|
||||
function StylesRemoveMarker(marker) markers[marker] = nil end
|
||||
@@ -236,6 +239,8 @@ local specialmapping = {
|
||||
auxwindow = function(editor,style)
|
||||
if not style then return end
|
||||
|
||||
-- don't color toolbars as they have their own color/style
|
||||
local skipcolor = {wxAuiToolBar = true, wxToolBar = true}
|
||||
local default = wxstc.wxSTC_STYLE_DEFAULT
|
||||
local bg = style.bg and wx.wxColour(unpack(style.bg)) or editor:StyleGetBackground(default)
|
||||
local fg = style.fg and wx.wxColour(unpack(style.fg)) or editor:StyleGetForeground(default)
|
||||
@@ -253,7 +258,7 @@ local specialmapping = {
|
||||
for child = 0, children:GetCount()-1 do
|
||||
local data = children:Item(child):GetData()
|
||||
local _, window = pcall(function() return data:DynamicCast("wxWindow") end)
|
||||
if window and panes:Item(index).name ~= 'toolbar' then
|
||||
if window and not skipcolor[window:GetClassInfo():GetClassName()] then
|
||||
window:SetBackgroundColour(bg)
|
||||
window:SetForegroundColour(fg)
|
||||
window:Refresh()
|
||||
@@ -355,16 +360,25 @@ function StylesApplyToEditor(styles,editor,font,fontitalic,lexerconvert)
|
||||
if type(styles.fncall) == 'table' and next(styles.fncall)
|
||||
and not (type(indic.fncall) == 'table' and next(indic.fncall)) then indic.fncall = styles.fncall end
|
||||
|
||||
editor:IndicatorSetStyle(0, indic.fncall and indic.fncall.st or ide.wxver >= "2.9.5" and wxstc.wxSTC_INDIC_ROUNDBOX or wxstc.wxSTC_INDIC_TT)
|
||||
editor:IndicatorSetForeground(0, wx.wxColour(unpack(indic.fncall and indic.fncall.fg or {128, 128, 255})))
|
||||
editor:IndicatorSetStyle(1, indic.varlocal and indic.varlocal.st or wxstc.wxSTC_INDIC_DOTS or wxstc.wxSTC_INDIC_TT)
|
||||
editor:IndicatorSetForeground(1, wx.wxColour(unpack(indic.varlocal and indic.varlocal.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(2, indic.varglobal and indic.varglobal.st or wxstc.wxSTC_INDIC_PLAIN)
|
||||
editor:IndicatorSetForeground(2, wx.wxColour(unpack(indic.varglobal and indic.varglobal.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(3, indic.varmasking and indic.varmasking.st or wxstc.wxSTC_INDIC_DASH or wxstc.wxSTC_INDIC_DIAGONAL)
|
||||
editor:IndicatorSetForeground(3, wx.wxColour(unpack(indic.varmasking and indic.varmasking.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(4, indic.varmasked and indic.varmasked.st or wxstc.wxSTC_INDIC_STRIKE)
|
||||
editor:IndicatorSetForeground(4, wx.wxColour(unpack(indic.varmasked and indic.varmasked.fg or defaultfg)))
|
||||
local fncall = ide:AddIndicator("core.fncall")
|
||||
local varlocal = ide:AddIndicator("core.varlocal")
|
||||
local varglobal = ide:AddIndicator("core.varglobal")
|
||||
local varmasking = ide:AddIndicator("core.varmasking")
|
||||
local varmasked = ide:AddIndicator("core.varmasked")
|
||||
local searchmatch = ide:AddIndicator("core.searchmatch")
|
||||
|
||||
editor:IndicatorSetStyle(fncall, indic.fncall and indic.fncall.st or ide.wxver >= "2.9.5" and wxstc.wxSTC_INDIC_ROUNDBOX or wxstc.wxSTC_INDIC_TT)
|
||||
editor:IndicatorSetForeground(fncall, wx.wxColour(unpack(indic.fncall and indic.fncall.fg or {128, 128, 255})))
|
||||
editor:IndicatorSetStyle(varlocal, indic.varlocal and indic.varlocal.st or wxstc.wxSTC_INDIC_DOTS or wxstc.wxSTC_INDIC_TT)
|
||||
editor:IndicatorSetForeground(varlocal, wx.wxColour(unpack(indic.varlocal and indic.varlocal.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(varglobal, indic.varglobal and indic.varglobal.st or wxstc.wxSTC_INDIC_PLAIN)
|
||||
editor:IndicatorSetForeground(varglobal, wx.wxColour(unpack(indic.varglobal and indic.varglobal.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(varmasking, indic.varmasking and indic.varmasking.st or wxstc.wxSTC_INDIC_DASH or wxstc.wxSTC_INDIC_DIAGONAL)
|
||||
editor:IndicatorSetForeground(varmasking, wx.wxColour(unpack(indic.varmasking and indic.varmasking.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(varmasked, indic.varmasked and indic.varmasked.st or wxstc.wxSTC_INDIC_STRIKE)
|
||||
editor:IndicatorSetForeground(varmasked, wx.wxColour(unpack(indic.varmasked and indic.varmasked.fg or defaultfg)))
|
||||
editor:IndicatorSetStyle(searchmatch, indic.searchmatch and indic.searchmatch.st or wxstc.wxSTC_INDIC_BOX)
|
||||
editor:IndicatorSetForeground(searchmatch, wx.wxColour(unpack(indic.searchmatch and indic.searchmatch.fg or {196, 0, 0})))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,37 +1,54 @@
|
||||
-- Copyright 2014 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2014-15 Paul Kulchenko, ZeroBrane LLC
|
||||
|
||||
local TR = function(...) return ... end
|
||||
|
||||
ide.config.toolbar.icons = {
|
||||
ID_NEW, ID_OPEN, ID_SAVE, ID_SAVEALL, ID_PROJECTDIRFROMFILE, ID_PROJECTDIRCHOOSE,
|
||||
ID_SEPARATOR,
|
||||
ID_FIND, ID_REPLACE, ID_FINDINFILES,
|
||||
ID_SEPARATOR,
|
||||
ID_RUN, ID_STARTDEBUG, ID_RUNNOW, ID_STOPDEBUG, ID_DETACHDEBUG, ID_BREAK, ID_STEP, ID_STEPOVER, ID_STEPOUT,
|
||||
ID_SEPARATOR,
|
||||
ID_TOGGLEBREAKPOINT, ID_BOOKMARKTOGGLE, ID_VIEWCALLSTACK, ID_VIEWWATCHWINDOW,
|
||||
[ID_FINDINFILES] = false,
|
||||
ID.NEW, ID.OPEN, ID.SAVE, ID.SAVEALL, ID.PROJECTDIRFROMFILE, ID.PROJECTDIRCHOOSE,
|
||||
ID.SEPARATOR,
|
||||
ID.FIND, ID.REPLACE, ID.FINDINFILES,
|
||||
ID.SEPARATOR,
|
||||
ID.RUN, ID.STARTDEBUG, ID.RUNNOW, ID.STOPDEBUG, ID.DETACHDEBUG, ID.BREAK,
|
||||
ID.STEP, ID.STEPOVER, ID.STEPOUT, ID.RUNTO,
|
||||
ID.SEPARATOR,
|
||||
ID.TOGGLEBREAKPOINT, ID.BOOKMARKTOGGLE, ID.VIEWCALLSTACK, ID.VIEWWATCHWINDOW,
|
||||
[ID.FINDINFILES] = false,
|
||||
}
|
||||
|
||||
ide.config.toolbar.iconmap = {
|
||||
[ID_NEW] = {"FILE-NEW", "Create an empty document"},
|
||||
[ID_OPEN] = {"FILE-OPEN", "Open an existing document"},
|
||||
[ID_SAVE] = {"FILE-SAVE", "Save the current document"},
|
||||
[ID_SAVEALL] = {"FILE-SAVE-ALL", "Save all open documents"},
|
||||
[ID_PROJECTDIRFROMFILE]= {"DIR-SETUP-FILE", "Set project directory from current file"},
|
||||
[ID_PROJECTDIRCHOOSE] = {"DIR-SETUP", "Choose a project directory"},
|
||||
[ID_FIND] = {"FIND", "Find text"},
|
||||
[ID_REPLACE] = {"FIND-AND-REPLACE", "Find and replace text"},
|
||||
[ID_FINDINFILES] = {"FIND-IN-FILES", "Find in files"},
|
||||
[ID_RUN] = {"RUN", "Execute the current project/file"},
|
||||
[ID_RUNNOW] = {"RUN-NOW", "Run as Scratchpad"},
|
||||
[ID_STARTDEBUG] = {"DEBUG-START", "Start or continue debugging"},
|
||||
[ID_STOPDEBUG] = {"DEBUG-STOP", "Stop the currently running process"},
|
||||
[ID_DETACHDEBUG]= {"DEBUG-DETACH", "Stop debugging and continue running the process"},
|
||||
[ID_BREAK] = {"DEBUG-BREAK", "Break execution at the next executed line of code"},
|
||||
[ID_STEP] = {"DEBUG-STEP-INTO", "Step into"},
|
||||
[ID_STEPOVER] = {"DEBUG-STEP-OVER", "Step over"},
|
||||
[ID_STEPOUT] = {"DEBUG-STEP-OUT", "Step out of the current function"},
|
||||
[ID_TOGGLEBREAKPOINT] = {"DEBUG-BREAKPOINT-TOGGLE", "Toggle breakpoint"},
|
||||
[ID_BOOKMARKTOGGLE] = {"BOOKMARK-TOGGLE", "Toggle bookmark"},
|
||||
[ID_VIEWCALLSTACK] = {"DEBUG-CALLSTACK", "View the stack window"},
|
||||
[ID_VIEWWATCHWINDOW] = {"DEBUG-WATCH", "View the watch window"},
|
||||
[ID.NEW] = {"FILE-NEW", TR("Create an empty document")},
|
||||
[ID.OPEN] = {"FILE-OPEN", TR("Open an existing document")},
|
||||
[ID.SAVE] = {"FILE-SAVE", TR("Save the current document")},
|
||||
[ID.SAVEALL] = {"FILE-SAVE-ALL", TR("Save all open documents")},
|
||||
[ID.PROJECTDIRFROMFILE]= {"DIR-SETUP-FILE", TR("Set project directory from current file")},
|
||||
[ID.PROJECTDIRCHOOSE] = {"DIR-SETUP", TR("Choose a project directory")},
|
||||
[ID.FIND] = {"FIND", TR("Find text")},
|
||||
[ID.REPLACE] = {"FIND-AND-REPLACE", TR("Find and replace text")},
|
||||
[ID.FINDINFILES] = {"FIND-IN-FILES", TR("Find in files")},
|
||||
[ID.RUN] = {"RUN", TR("Execute the current project/file")},
|
||||
[ID.RUNNOW] = {"RUN-NOW", TR("Run as Scratchpad")},
|
||||
[ID.STARTDEBUG] = {"DEBUG-START", TR("Start or continue debugging")},
|
||||
[ID.STOPDEBUG] = {"DEBUG-STOP", TR("Stop the currently running process")},
|
||||
[ID.DETACHDEBUG]= {"DEBUG-DETACH", TR("Stop debugging and continue running the process")},
|
||||
[ID.BREAK] = {"DEBUG-BREAK", TR("Break execution at the next executed line of code")},
|
||||
[ID.RUNTO] = {"DEBUG-RUN-TO", TR("Run to cursor")},
|
||||
[ID.STEP] = {"DEBUG-STEP-INTO", TR("Step into")},
|
||||
[ID.STEPOVER] = {"DEBUG-STEP-OVER", TR("Step over")},
|
||||
[ID.STEPOUT] = {"DEBUG-STEP-OUT", TR("Step out of the current function")},
|
||||
[ID.TOGGLEBREAKPOINT] = {"DEBUG-BREAKPOINT-TOGGLE", TR("Toggle breakpoint")},
|
||||
[ID.BOOKMARKTOGGLE] = {"BOOKMARK-TOGGLE", TR("Toggle bookmark")},
|
||||
[ID.VIEWCALLSTACK] = {"DEBUG-CALLSTACK", TR("View the stack window")},
|
||||
[ID.VIEWWATCHWINDOW] = {"DEBUG-WATCH", TR("View the watch window")},
|
||||
-- search toolbar
|
||||
[ID.FINDNEXT] = {"FIND", TR("Find")},
|
||||
[ID.FINDREPLACENEXT] = {"FIND-REPLACE-NEXT", TR("Replace next instance")},
|
||||
[ID.FINDREPLACEALL] = {"FIND-AND-REPLACE", TR("Replace all")},
|
||||
[ID.FINDSETDIR] = {"FIND-OPT-SETDIR", TR("Set search directory")},
|
||||
[ID.FINDOPTDIRECTION] = {"FIND-OPT-DOWN", TR("Search direction")},
|
||||
[ID.FINDOPTWRAPWROUND] = {"FIND-OPT-WRAP-AROUND", TR("Wrap around")},
|
||||
[ID.FINDOPTWORD] = {"FIND-OPT-WORD", TR("Match whole word")},
|
||||
[ID.FINDOPTCASE] = {"FIND-OPT-CASE-SENSITIVE", TR("Match case")},
|
||||
[ID.FINDOPTREGEX] = {"FIND-OPT-REGEX", TR("Regular expression")},
|
||||
[ID.FINDOPTCONTEXT] = {"FIND-OPT-CONTEXT", TR("Show context")},
|
||||
[ID.FINDOPTSUBDIR] = {"FIND-OPT-SUBDIR", TR("Search in subdirectories")},
|
||||
[ID.FINDOPTMULTIRESULTS] = {"FIND-OPT-MULTI-RESULTS", TR("Show multiple result windows")},
|
||||
}
|
||||
|
||||
97
src/main.lua
97
src/main.lua
@@ -1,11 +1,16 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
---------------------------------------------------------
|
||||
|
||||
-- put bin/ and lualibs/ first to avoid conflicts with included modules
|
||||
-- that may have other versions present somewhere else in path/cpath.
|
||||
local function isproc()
|
||||
local file = io.open("/proc")
|
||||
if file then file:close() end
|
||||
return file ~= nil
|
||||
end
|
||||
local iswindows = os.getenv('WINDIR') or (os.getenv('OS') or ''):match('[Ww]indows')
|
||||
local islinux = not iswindows and not os.getenv('DYLD_LIBRARY_PATH') and io.open("/proc")
|
||||
local islinux = not iswindows and isproc()
|
||||
local arch = "x86" -- use 32bit by default
|
||||
local unpack = table.unpack or unpack
|
||||
|
||||
@@ -29,6 +34,8 @@ package.path = 'lualibs/?.lua;lualibs/?/?.lua;lualibs/?/init.lua;lualibs/?/?/?.
|
||||
|
||||
require("wx")
|
||||
require("bit")
|
||||
require("mobdebug")
|
||||
if jit and jit.on then jit.on() end -- turn jit "on" as "mobdebug" may turn it off for LuaJIT
|
||||
|
||||
dofile "src/util.lua"
|
||||
|
||||
@@ -36,17 +43,20 @@ dofile "src/util.lua"
|
||||
-- IDE
|
||||
--
|
||||
ide = {
|
||||
MODPREF = "* ",
|
||||
MAXMARGIN = 4,
|
||||
config = {
|
||||
path = {
|
||||
projectdir = "",
|
||||
app = nil,
|
||||
},
|
||||
editor = {
|
||||
autoactivate = false,
|
||||
foldcompact = true,
|
||||
checkeol = true,
|
||||
saveallonrun = false,
|
||||
caretline = true,
|
||||
showfncall = true,
|
||||
showfncall = false,
|
||||
autotabs = false,
|
||||
usetabs = false,
|
||||
tabwidth = 2,
|
||||
@@ -64,6 +74,7 @@ ide = {
|
||||
port = nil,
|
||||
runonstart = nil,
|
||||
redirect = nil,
|
||||
requestattention = true,
|
||||
maxdatalength = 400,
|
||||
maxdatanum = 400,
|
||||
maxdatalevel = 3,
|
||||
@@ -80,7 +91,9 @@ ide = {
|
||||
mousemove = true,
|
||||
},
|
||||
outline = {
|
||||
jumptocurrentfunction = true,
|
||||
showanonymous = '~',
|
||||
showcurrentfunction = true,
|
||||
showflat = false,
|
||||
showmethodindicator = false,
|
||||
showonefile = false,
|
||||
@@ -88,6 +101,20 @@ ide = {
|
||||
},
|
||||
commandbar = {
|
||||
prefilter = 250, -- number of records after which to apply filtering
|
||||
maxitems = 30, -- max number of items to show
|
||||
width = 0.35, -- <1 -- size in proportion to the app frame width; >1 -- size in pixels
|
||||
showallsymbols = true,
|
||||
},
|
||||
staticanalyzer = {
|
||||
infervalue = false, -- off by default as it's a slower mode
|
||||
},
|
||||
search = {
|
||||
autocomplete = true,
|
||||
contextlinesbefore = 2,
|
||||
contextlinesafter = 2,
|
||||
showaseditor = false,
|
||||
zoom = 0,
|
||||
autohide = false,
|
||||
},
|
||||
|
||||
toolbar = {
|
||||
@@ -112,9 +139,11 @@ ide = {
|
||||
nodynwords = true,
|
||||
ignorecase = false,
|
||||
symbols = true,
|
||||
droprest = true,
|
||||
strategy = 2,
|
||||
width = 60,
|
||||
maxlength = 450,
|
||||
warning = true,
|
||||
},
|
||||
arg = {}, -- command line arguments
|
||||
api = {}, -- additional APIs to load
|
||||
@@ -130,15 +159,19 @@ ide = {
|
||||
projectautoopen = true,
|
||||
autorecoverinactivity = 10, -- seconds
|
||||
outlineinactivity = 0.250, -- seconds
|
||||
symbolindexinactivity = 2, -- seconds
|
||||
filehistorylength = 20,
|
||||
projecthistorylength = 20,
|
||||
bordersize = 2,
|
||||
savebak = false,
|
||||
singleinstance = false,
|
||||
singleinstanceport = 0xe493,
|
||||
interpreter = "luadeb",
|
||||
showmemoryusage = false,
|
||||
hidpi = false, -- HiDPI/Retina display support
|
||||
hotexit = false,
|
||||
-- file exclusion lists
|
||||
excludelist = {".svn/", ".git/", ".hg/", "CVS/", "*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db"},
|
||||
binarylist = {"*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip", ".gz", ".rar"},
|
||||
},
|
||||
specs = {
|
||||
none = {
|
||||
@@ -151,6 +184,7 @@ ide = {
|
||||
packages = {},
|
||||
apis = {},
|
||||
timers = {},
|
||||
onidle = {},
|
||||
|
||||
proto = {}, -- prototypes for various classes
|
||||
|
||||
@@ -361,15 +395,14 @@ local function loadPackages(filter)
|
||||
end
|
||||
|
||||
-- check dependencies and assign file names to each package
|
||||
local report = DisplayOutputLn or print
|
||||
local unload = {}
|
||||
for fname, package in pairs(ide.packages) do
|
||||
if type(package.dependencies) == 'table'
|
||||
and package.dependencies.osname
|
||||
and not package.dependencies.osname:find(ide.osname, 1, true) then
|
||||
(DisplayOutputLn or print)(
|
||||
("Package '%s' not loaded: requires %s platform, but you are running %s.")
|
||||
:format(fname, package.dependencies.osname, ide.osname)
|
||||
)
|
||||
report(("Package '%s' not loaded: requires %s platform, but you are running %s.")
|
||||
:format(fname, package.dependencies.osname, ide.osname))
|
||||
table.insert(unload, fname)
|
||||
end
|
||||
|
||||
@@ -378,10 +411,8 @@ local function loadPackages(filter)
|
||||
or -1
|
||||
local isversion = tonumber(ide.VERSION)
|
||||
if isversion and needsversion > isversion then
|
||||
(DisplayOutputLn or print)(
|
||||
("Package '%s' not loaded: requires version %s, but you are running version %s.")
|
||||
:format(fname, needsversion, ide.VERSION)
|
||||
)
|
||||
report(("Package '%s' not loaded: requires version %s, but you are running version %s.")
|
||||
:format(fname, needsversion, ide.VERSION))
|
||||
table.insert(unload, fname)
|
||||
end
|
||||
package.fname = fname
|
||||
@@ -444,9 +475,13 @@ end
|
||||
|
||||
-- set ide.config environment
|
||||
setmetatable(ide.config, {__index = {os = os, wxstc = wxstc, wx = wx, ID = ID}})
|
||||
ide.config.load = { interpreters = loadInterpreters, specs = loadSpecs,
|
||||
tools = loadTools }
|
||||
ide.config.load = {interpreters = loadInterpreters, specs = loadSpecs, tools = loadTools}
|
||||
do
|
||||
ide.configs = {
|
||||
system = MergeFullPath("cfg", "user.lua"),
|
||||
user = ide.oshome and MergeFullPath(ide.oshome, "."..ide.appname.."/user.lua"),
|
||||
}
|
||||
|
||||
local num = 0
|
||||
ide.config.package = function(p)
|
||||
if p then
|
||||
@@ -455,6 +490,18 @@ do
|
||||
ide.packages[name] = setmetatable(p, ide.proto.Plugin)
|
||||
end
|
||||
end
|
||||
|
||||
local includes = {}
|
||||
ide.config.include = function(c)
|
||||
if c then
|
||||
for _, config in ipairs({ide.configs.system, ide.configs.user}) do
|
||||
local p = config and MergeFullPath(config.."/../", c)
|
||||
includes[p] = (includes[p] or 0) + 1
|
||||
if includes[p] > 1 or LoadLuaConfig(p) then return end
|
||||
end
|
||||
print(("Can't find configuration file '%s' to process."):format(c))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
LoadLuaConfig(ide.appname.."/config.lua")
|
||||
@@ -485,11 +532,6 @@ loadSpecs()
|
||||
loadTools()
|
||||
|
||||
do
|
||||
ide.configs = {
|
||||
system = MergeFullPath("cfg", "user.lua"),
|
||||
user = ide.oshome and MergeFullPath(ide.oshome, "."..ide.appname.."/user.lua"),
|
||||
}
|
||||
|
||||
-- process configs
|
||||
LoadLuaConfig(ide.configs.system)
|
||||
LoadLuaConfig(ide.configs.user)
|
||||
@@ -511,6 +553,10 @@ do
|
||||
if ide.config.language then
|
||||
LoadLuaFileExt(ide.config.messages, "cfg"..sep.."i18n"..sep..ide.config.language..".lua")
|
||||
end
|
||||
-- always load 'en' as it's requires as a fallback for pluralization
|
||||
if ide.config.language ~= 'en' then
|
||||
LoadLuaFileExt(ide.config.messages, "cfg"..sep.."i18n"..sep.."en.lua")
|
||||
end
|
||||
end
|
||||
|
||||
loadPackages()
|
||||
@@ -519,7 +565,7 @@ loadPackages()
|
||||
-- Load App
|
||||
|
||||
for _, file in ipairs({
|
||||
"markup", "settings", "singleinstance", "iofilters", "package",
|
||||
"settings", "singleinstance", "iofilters", "package", "markup",
|
||||
"gui", "filetree", "output", "debugger", "outline", "commandbar",
|
||||
"editor", "findreplace", "commands", "autocomplete", "shellbox",
|
||||
"menu_file", "menu_edit", "menu_search",
|
||||
@@ -553,17 +599,13 @@ do
|
||||
for _, filename in ipairs(filenames) do
|
||||
if filename ~= "--" then
|
||||
if wx.wxDirExists(filename) then
|
||||
local dir = wx.wxFileName.DirName(filename)
|
||||
dir:Normalize() -- turn into absolute path if needed
|
||||
ProjectUpdateProjectDir(dir:GetFullPath())
|
||||
ProjectUpdateProjectDir(filename)
|
||||
elseif not ActivateFile(filename) then
|
||||
DisplayOutputLn(("Can't open file '%s': %s"):format(filename, wx.wxSysErrorMsg()))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local notebook = ide.frame.notebook
|
||||
if notebook:GetPageCount() == 0 then NewFile() end
|
||||
if ide:GetEditorNotebook():GetPageCount() == 0 then NewFile() end
|
||||
end
|
||||
|
||||
if app.postinit then app.postinit() end
|
||||
@@ -597,7 +639,8 @@ local function remapkey(event)
|
||||
local keycode = event:GetKeyCode()
|
||||
local mod = event:GetModifiers()
|
||||
for id, obj in pairs(remap) do
|
||||
if obj:FindFocus():GetId() == obj:GetId() then
|
||||
local focus = obj:FindFocus()
|
||||
if focus and focus:GetId() == obj:GetId() then
|
||||
local ae = wx.wxAcceleratorEntry(); ae:FromString(KSC(id))
|
||||
if ae:GetFlags() == mod and ae:GetKeyCode() == keycode then
|
||||
rerouteMenuCommand(obj, id)
|
||||
|
||||
282
src/util.lua
282
src/util.lua
@@ -1,4 +1,4 @@
|
||||
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
|
||||
-- Copyright 2011-15 Paul Kulchenko, ZeroBrane LLC
|
||||
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
||||
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
||||
-- David Manura
|
||||
@@ -9,28 +9,6 @@ function iff(cond, a, b) if cond then return a else return b end end
|
||||
|
||||
function EscapeMagic(s) return s:gsub('([%(%)%.%%%+%-%*%?%[%^%$%]])','%%%1') end
|
||||
|
||||
-- Does the num have all the bits in value
|
||||
function HasBit(value, num)
|
||||
for n = 32, 0, -1 do
|
||||
local b = 2^n
|
||||
local num_b = num - b
|
||||
local value_b = value - b
|
||||
if num_b >= 0 then
|
||||
num = num_b
|
||||
else
|
||||
return true -- already tested bits in num
|
||||
end
|
||||
if value_b >= 0 then
|
||||
value = value_b
|
||||
end
|
||||
if (num_b >= 0) and (value_b < 0) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function GetPathSeparator()
|
||||
return string.char(wx.wxFileName.GetPathSeparator())
|
||||
end
|
||||
@@ -137,10 +115,14 @@ function GetFileModTime(filePath)
|
||||
end
|
||||
|
||||
function GetFileExt(filePath)
|
||||
local match = filePath and filePath:match("%.([^./\\]*)$")
|
||||
local match = filePath and filePath:gsub("%s+$",""):match("%.([^./\\]*)$")
|
||||
return match and match:lower() or ''
|
||||
end
|
||||
|
||||
function GetFileName(filePath)
|
||||
return filePath and filePath:gsub("%s+$",""):match("([^/\\]*)$") or ''
|
||||
end
|
||||
|
||||
function IsLuaFile(filePath)
|
||||
return filePath and (string.len(filePath) > 4) and
|
||||
(string.lower(string.sub(filePath, -4)) == ".lua")
|
||||
@@ -156,51 +138,125 @@ function FileDirHasContent(dir)
|
||||
return #f>0
|
||||
end
|
||||
|
||||
function FileSysGetRecursive(path, recursive, spec, skip)
|
||||
spec = spec or "*"
|
||||
function FileSysGetRecursive(path, recursive, spec, opts)
|
||||
local content = {}
|
||||
local sep = GetPathSeparator()
|
||||
local queue = {path}
|
||||
local pathpatt = "^"..EscapeMagic(path)
|
||||
local optyield = (opts or {}).yield
|
||||
local optfolder = (opts or {}).folder ~= false
|
||||
local optsort = (opts or {}).sort ~= false
|
||||
local optpath = (opts or {}).path ~= false
|
||||
local optskipbinary = (opts or {}).skipbinary
|
||||
local optondirectory = (opts or {}).ondirectory
|
||||
|
||||
-- recursion is done in all folders but only those folders that match
|
||||
-- the spec are returned. This is the pattern that matches the spec.
|
||||
local specmask = spec:gsub("%.", "%%."):gsub("%*", ".*").."$"
|
||||
local function spec2list(spec, list)
|
||||
-- return empty list if no spec is provided
|
||||
if spec == nil or spec == "*" or spec == "*.*" then return {}, 0 end
|
||||
-- accept "*.lua" and "*.txt,*.wlua" combinations
|
||||
if type(spec) == 'table' then spec = table.concat(spec, ",") end
|
||||
local masknum, list = 0, list or {}
|
||||
for m in spec:gmatch("[^%s;,]+") do
|
||||
m = m:gsub("[\\/]", sep)
|
||||
if m:find("^%*%.%w+"..sep.."?$") then
|
||||
list[m:sub(2)] = true
|
||||
else
|
||||
-- escape all special characters
|
||||
-- and replace (escaped) ** with .* and (escaped) * with [^\//]*
|
||||
table.insert(list, EscapeMagic(m)
|
||||
:gsub("%%%*%%%*", ".*"):gsub("%%%*", "[^/\\]*").."$")
|
||||
end
|
||||
masknum = masknum + 1
|
||||
end
|
||||
return list, masknum
|
||||
end
|
||||
|
||||
local function getDir(path, spec)
|
||||
local dir = wx.wxDir(path)
|
||||
if not dir:IsOpened() then return end
|
||||
local inmasks, masknum = spec2list(spec)
|
||||
if masknum >= 2 then spec = nil end
|
||||
|
||||
local exmasks = spec2list(ide.config.excludelist or {})
|
||||
if optskipbinary then -- add any binary files to the list to skip
|
||||
exmasks = spec2list(type(optskipbinary) == 'table' and optskipbinary
|
||||
or ide.config.binarylist or {}, exmasks)
|
||||
end
|
||||
|
||||
local function ismatch(file, inmasks, exmasks)
|
||||
-- convert extension 'foo' to '.foo', as need to distinguish file
|
||||
-- from extension with the same name
|
||||
local ext = '.'..GetFileExt(file)
|
||||
-- check exclusions if needed
|
||||
if exmasks[file] or exmasks[ext] then return false end
|
||||
for _, mask in ipairs(exmasks) do
|
||||
if file:find(mask) then return false end
|
||||
end
|
||||
|
||||
-- return true if none of the exclusions match and no inclusion list
|
||||
if not inmasks or not next(inmasks) then return true end
|
||||
|
||||
-- now check inclusions
|
||||
if inmasks[file] or inmasks[ext] then return true end
|
||||
for _, mask in ipairs(inmasks) do
|
||||
if file:find(mask) then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function report(fname)
|
||||
if optyield then return coroutine.yield(fname) end
|
||||
table.insert(content, fname)
|
||||
end
|
||||
|
||||
local dir = wx.wxDir()
|
||||
local function getDir(path)
|
||||
dir:Open(path)
|
||||
if not dir:IsOpened() then
|
||||
if DisplayOutputLn and TR then
|
||||
DisplayOutputLn(TR("Can't open '%s': %s"):format(path, wx.wxSysErrorMsg()))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- recursion is done in all folders if requested,
|
||||
-- but only those folders that match the spec are returned
|
||||
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
|
||||
local found, file = dir:GetFirst("*", wx.wxDIR_DIRS)
|
||||
while found do
|
||||
if not skip or not file:find(skip) then
|
||||
local fname = wx.wxFileName(path, file):GetFullPath()
|
||||
if fname:find(specmask) then table.insert(content, fname..sep) end
|
||||
-- check if this name already appears in the path earlier;
|
||||
-- Skip the processing if it does as it could lead to infinite
|
||||
-- recursion with circular references created by symlinks.
|
||||
if recursive and select(2, fname:gsub(EscapeMagic(file..sep),'')) <= 2 then
|
||||
getDir(fname, spec)
|
||||
end
|
||||
local fname = wx.wxFileName(path, file):GetFullPath()
|
||||
if optfolder and ismatch(fname..sep, inmasks, exmasks) then
|
||||
report((optpath and fname or fname:gsub(pathpatt, ""))..sep)
|
||||
end
|
||||
found, file = dir:GetNext()
|
||||
end
|
||||
found, file = dir:GetFirst(spec, wx.wxDIR_FILES)
|
||||
while found do
|
||||
if not skip or not file:find(skip) then
|
||||
local fname = wx.wxFileName(path, file):GetFullPath()
|
||||
table.insert(content, fname)
|
||||
end
|
||||
found, file = dir:GetNext()
|
||||
end
|
||||
end
|
||||
getDir(path, spec)
|
||||
|
||||
local prefix = '\001' -- prefix to sort directories first
|
||||
local shadow = {}
|
||||
for _, v in ipairs(content) do
|
||||
shadow[v] = (v:sub(-1) == sep and prefix or '')..v:lower()
|
||||
if recursive and ismatch(fname..sep, nil, exmasks)
|
||||
and (not optondirectory or optondirectory(fname) ~= false)
|
||||
-- check if this name already appears in the path earlier;
|
||||
-- Skip the processing if it does as it could lead to infinite
|
||||
-- recursion with circular references created by symlinks.
|
||||
and select(2, fname:gsub(EscapeMagic(file..sep),'')) <= 2 then
|
||||
table.insert(queue, fname)
|
||||
end
|
||||
found, file = dir:GetNext()
|
||||
end
|
||||
found, file = dir:GetFirst(spec or "*", wx.wxDIR_FILES)
|
||||
while found do
|
||||
local fname = wx.wxFileName(path, file):GetFullPath()
|
||||
if ismatch(fname, inmasks, exmasks) then
|
||||
report(optpath and fname or fname:gsub(pathpatt, ""))
|
||||
end
|
||||
found, file = dir:GetNext()
|
||||
end
|
||||
end
|
||||
while #queue > 0 do getDir(table.remove(queue)) end
|
||||
|
||||
if optyield then return end
|
||||
|
||||
if optsort then
|
||||
local prefix = '\001' -- prefix to sort directories first
|
||||
local shadow = {}
|
||||
for _, v in ipairs(content) do
|
||||
shadow[v] = (v:sub(-1) == sep and prefix or '')..v:lower()
|
||||
end
|
||||
table.sort(content, function(a,b) return shadow[a] < shadow[b] end)
|
||||
end
|
||||
table.sort(content, function(a,b) return shadow[a] < shadow[b] end)
|
||||
|
||||
return content
|
||||
end
|
||||
@@ -238,20 +294,45 @@ function FileWrite(file, content)
|
||||
local file = wx.wxFile(file, wx.wxFile.write)
|
||||
if not file:IsOpened() then return nil, wx.wxSysErrorMsg() end
|
||||
|
||||
file:Write(content, #content)
|
||||
local ok = file:Write(content, #content) == #content
|
||||
file:Close()
|
||||
return true
|
||||
return ok, not ok and wx.wxSysErrorMsg() or nil
|
||||
end
|
||||
|
||||
function FileRead(file, length)
|
||||
function FileSize(fname)
|
||||
if not wx.wxFileExists(fname) then return end
|
||||
local size = wx.wxFileSize(fname)
|
||||
-- size can be returned as 0 for symlinks, so check with wxFile:Length();
|
||||
-- can't use wxFile:Length() as it's reported incorrectly for some non-seekable files
|
||||
-- (see https://github.com/pkulchenko/ZeroBraneStudio/issues/458);
|
||||
-- the combination of wxFileSize and wxFile:Length() should do the right thing.
|
||||
if size == 0 then size = wx.wxFile(fname, wx.wxFile.read):Length() end
|
||||
return size
|
||||
end
|
||||
|
||||
function FileRead(fname, length, callback)
|
||||
-- on OSX "Open" dialog allows to open applications, which are folders
|
||||
if wx.wxDirExists(file) then return nil, "Can't read directory as file." end
|
||||
if wx.wxDirExists(fname) then return nil, "Can't read directory as file." end
|
||||
|
||||
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
|
||||
local file = wx.wxFile(file, wx.wxFile.read)
|
||||
local file = wx.wxFile(fname, wx.wxFile.read)
|
||||
if not file:IsOpened() then return nil, wx.wxSysErrorMsg() end
|
||||
|
||||
local _, content = file:Read(length or file:Length())
|
||||
if type(callback) == 'function' then
|
||||
length = length or 8192
|
||||
local pos = 0
|
||||
while true do
|
||||
local len, content = file:Read(length)
|
||||
local res, msg = callback(content) -- may return `false` to signal to stop
|
||||
if res == false then return false, msg or "Unknown error" end
|
||||
if len < length then break end
|
||||
pos = pos + len
|
||||
file:Seek(pos)
|
||||
end
|
||||
return true, wx.wxSysErrorMsg()
|
||||
end
|
||||
|
||||
local _, content = file:Read(length or FileSize(fname))
|
||||
file:Close()
|
||||
return content, wx.wxSysErrorMsg()
|
||||
end
|
||||
@@ -269,7 +350,7 @@ end
|
||||
local ok, socket = pcall(require, "socket")
|
||||
TimeGet = ok and socket.gettime or os.clock
|
||||
|
||||
function isBinary(text) return text:find("[^\7\8\9\10\12\13\27\32-\255]") end
|
||||
function IsBinary(text) return text:find("[^\7\8\9\10\12\13\27\32-\255]") and true or false end
|
||||
|
||||
function pairsSorted(t, f)
|
||||
local a = {}
|
||||
@@ -288,15 +369,15 @@ end
|
||||
function FixUTF8(s, repl)
|
||||
local p, len, invalid = 1, #s, {}
|
||||
while p <= len do
|
||||
if p == s:find("[%z\1-\127]", p) then p = p + 1
|
||||
elseif p == s:find("[\194-\223][\128-\191]", p) then p = p + 2
|
||||
elseif p == s:find( "\224[\160-\191][\128-\191]", p)
|
||||
or p == s:find("[\225-\236][\128-\191][\128-\191]", p)
|
||||
or p == s:find( "\237[\128-\159][\128-\191]", p)
|
||||
or p == s:find("[\238-\239][\128-\191][\128-\191]", p) then p = p + 3
|
||||
elseif p == s:find( "\240[\144-\191][\128-\191][\128-\191]", p)
|
||||
or p == s:find("[\241-\243][\128-\191][\128-\191][\128-\191]", p)
|
||||
or p == s:find( "\244[\128-\143][\128-\191][\128-\191]", p) then p = p + 4
|
||||
if s:find("^[%z\1-\127]", p) then p = p + 1
|
||||
elseif s:find("^[\194-\223][\128-\191]", p) then p = p + 2
|
||||
elseif s:find( "^\224[\160-\191][\128-\191]", p)
|
||||
or s:find("^[\225-\236][\128-\191][\128-\191]", p)
|
||||
or s:find( "^\237[\128-\159][\128-\191]", p)
|
||||
or s:find("^[\238-\239][\128-\191][\128-\191]", p) then p = p + 3
|
||||
elseif s:find( "^\240[\144-\191][\128-\191][\128-\191]", p)
|
||||
or s:find("^[\241-\243][\128-\191][\128-\191][\128-\191]", p)
|
||||
or s:find( "^\244[\128-\143][\128-\191][\128-\191]", p) then p = p + 4
|
||||
else
|
||||
local repl = type(repl) == 'function' and repl(s:sub(p,p)) or repl
|
||||
s = s:sub(1, p-1)..repl..s:sub(p+1)
|
||||
@@ -341,14 +422,19 @@ function RequestAttention()
|
||||
end
|
||||
end
|
||||
|
||||
local messages, lang, counter
|
||||
function TR(msg, count)
|
||||
lang = lang or ide.config.language
|
||||
messages = messages or ide.config.messages
|
||||
counter = counter or (messages[lang] and messages[lang][0])
|
||||
local messages = ide.config.messages
|
||||
local lang = ide.config.language
|
||||
local counter = messages[lang] and messages[lang][0]
|
||||
local message = messages[lang] and messages[lang][msg]
|
||||
-- if there is count and no corresponding message, then
|
||||
-- get the message from the (default) english language,
|
||||
-- otherwise the message is not going to be pluralized properly
|
||||
if count and (not message or type(message) == 'table' and not next(message)) then
|
||||
message, counter = messages.en[msg], messages.en[0]
|
||||
end
|
||||
return count and counter and message and type(message) == 'table'
|
||||
and message[counter(count)] or message or msg
|
||||
and message[counter(count)] or (type(message) == 'string' and message or msg)
|
||||
end
|
||||
|
||||
-- wxwidgets 2.9.x may report the last folder twice (depending on how the
|
||||
@@ -431,6 +517,7 @@ function LoadLuaConfig(filename,isstring)
|
||||
report(("Error while processing configuration %s: '%s'."):format(msg, err))
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function LoadSafe(data)
|
||||
@@ -464,12 +551,18 @@ function GetEditorWithFocus(...)
|
||||
return isCtrlFocused(ed) and ed or nil
|
||||
end
|
||||
|
||||
local bnb = ide.frame.bottomnotebook
|
||||
for _, e in pairs({bnb.shellbox, bnb.errorlog}) do
|
||||
if isCtrlFocused(e) then return e end
|
||||
end
|
||||
local editor = GetEditor()
|
||||
return isCtrlFocused(editor) and editor or nil
|
||||
if isCtrlFocused(editor) then return editor end
|
||||
|
||||
local nb = ide:GetOutputNotebook()
|
||||
for p = 0, nb:GetPageCount()-1 do
|
||||
local ctrl = nb:GetPage(p)
|
||||
if ctrl:GetClassInfo():GetClassName() == "wxStyledTextCtrl"
|
||||
and isCtrlFocused(ctrl) then
|
||||
return ctrl:DynamicCast("wxStyledTextCtrl")
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function GenerateProgramFilesPath(exec, sep)
|
||||
@@ -516,3 +609,24 @@ function ExpandPlaceholders(msg, ph)
|
||||
}
|
||||
return(msg:gsub('%%(%w)', function(p) return ph[p] or def[p] or '?' end))
|
||||
end
|
||||
|
||||
function MergeSettings(localSettings, savedSettings)
|
||||
for name in pairs(localSettings) do
|
||||
if savedSettings[name] ~= nil
|
||||
and type(savedSettings[name]) == type(localSettings[name]) then
|
||||
if type(localSettings[name]) == 'table'
|
||||
and next(localSettings[name]) ~= nil then
|
||||
-- check every value in the table to make sure that it's possible
|
||||
-- to add new keys to the table and they get correct default values
|
||||
-- (even though that are absent in savedSettings)
|
||||
for setting in pairs(localSettings[name]) do
|
||||
if savedSettings[name][setting] ~= nil then
|
||||
localSettings[name][setting] = savedSettings[name][setting]
|
||||
end
|
||||
end
|
||||
else
|
||||
localSettings[name] = savedSettings[name]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,16 +8,16 @@ local replace = "4"
|
||||
editor:AppendText(search..search.."\n"..search..search)
|
||||
|
||||
ide.frame:ProcessEvent(wx.wxCommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, ID_FIND))
|
||||
ok(findReplace.dialog, "Open Find/Replace dialog.")
|
||||
ok(findReplace.panel, "Open Find/Replace panel.")
|
||||
|
||||
findReplace.findText = search
|
||||
findReplace:SetFind(search)
|
||||
ok(findReplace:HasText(), "Update text to search.")
|
||||
|
||||
findReplace:FindString()
|
||||
findReplace:Find()
|
||||
ok(editor:GetSelectionStart() ~= editor:GetSelectionEnd(), "Find text with Find Next.")
|
||||
|
||||
local selend = editor:GetSelectionEnd()
|
||||
findReplace:FindString()
|
||||
findReplace:Find()
|
||||
is(editor:GetSelectionStart(), selend, "Find Next doesn't skip consecutive matches.")
|
||||
|
||||
editor:GotoPos(0) -- reset current selection
|
||||
@@ -32,26 +32,26 @@ ide.frame:ProcessEvent(wx.wxCommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, ID_FIND
|
||||
is(editor:GetSelectionStart(), selend, "Quick Find finds next match.")
|
||||
|
||||
-- check that text in "find" control is checked against selection with replacing
|
||||
findReplace.findText = "something else"
|
||||
findReplace.replaceText = replace
|
||||
findReplace:SetFind("something else")
|
||||
findReplace:SetReplace(replace)
|
||||
findReplace.foundString = true
|
||||
findReplace:ReplaceString()
|
||||
findReplace:Replace()
|
||||
is(select(2, editor:GetText():gsub(search, search)), 4, "Replace doesn't replace selection that doesn't match 'find' text.")
|
||||
|
||||
-- restore position and selection
|
||||
editor:GotoPos(4) -- reset current selection
|
||||
findReplace.findText = search
|
||||
findReplace:FindString()
|
||||
findReplace:SetFind(search)
|
||||
findReplace:Find()
|
||||
|
||||
-- replace the text once
|
||||
findReplace:ReplaceString()
|
||||
findReplace:Replace()
|
||||
local _, replacements = editor:GetText():gsub(replace, replace)
|
||||
is(replacements, 1, "Replace replaces once.")
|
||||
|
||||
-- replace the current text and to the end of file
|
||||
editor:GotoPos(3)
|
||||
findReplace.fWrap = false
|
||||
findReplace:ReplaceString(true)
|
||||
findReplace:GetFlags().Wrap = false
|
||||
findReplace:Replace(true)
|
||||
local _, replacements = editor:GetText():gsub(replace, replace)
|
||||
is(replacements, 3, "Replace All without wrapping replaces to the end of file.")
|
||||
|
||||
@@ -61,14 +61,41 @@ is(editor:GetText(), expected, "Replace All with Wrap Around result is as expect
|
||||
-- start after the match to test wrapping
|
||||
editor:AppendText("\n"..search..search)
|
||||
editor:GotoPos(3)
|
||||
findReplace.fWrap = true
|
||||
findReplace:ReplaceString(true)
|
||||
findReplace:GetFlags().Wrap = true
|
||||
findReplace:Replace(true)
|
||||
ok(not editor:GetText():find(search), "Replace All with Wrap Around replaces everything.")
|
||||
|
||||
local expected = replace..replace.."\n"..replace..replace.."\n"..replace..replace
|
||||
is(editor:GetText(), expected, "Replace All without Wrap Around result is as expected.")
|
||||
|
||||
-- check that the replacement only happens in the matched text in preview
|
||||
editor:SetText("1: 123")
|
||||
findReplace:SetFind("1")
|
||||
findReplace:SetReplace("9")
|
||||
findReplace:Replace(true, editor)
|
||||
ok(editor:GetText():find("923") ~= nil, "Replace in preview replaces matched text.")
|
||||
ok(editor:GetText():find("^1:") ~= nil, "Replace in preview doesn't replace line numbers.")
|
||||
|
||||
editor:SetText("")
|
||||
editor:AppendText([[
|
||||
t/1-findreplace.lua
|
||||
99999: some text
|
||||
]])
|
||||
editor.searchpreview = true
|
||||
editor.replace = true
|
||||
local FILE_MARKER = ide:GetMarker("searchmatchfile")
|
||||
editor:MarkerAdd(0, FILE_MARKER)
|
||||
ide:GetDocument(editor):Save()
|
||||
is(editor:GetText():match("Updated %d"), "Updated 0", "Replace fails on invalid line numbers.")
|
||||
|
||||
|
||||
findReplace:SetFind("something")
|
||||
findReplace:Show() -- set focus on the find
|
||||
ide.frame:ProcessEvent(wx.wxCommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, ID_CUT))
|
||||
ok(findReplace:GetFind() == nil, "`Cut` command cuts content of the `Find` control in the search panel.")
|
||||
|
||||
-- cleanup
|
||||
ide.findReplace.dialog:Hide()
|
||||
findReplace:Hide()
|
||||
while editor:CanUndo() do editor:Undo() end
|
||||
ide:GetDocument(editor):SetModified(false)
|
||||
ClosePage()
|
||||
|
||||
@@ -25,6 +25,15 @@ ok(limit(10000, function() CreateAutoCompList(editor, "smth:") end),
|
||||
ok(pcall(CreateAutoCompList, editor, "%1000"),
|
||||
"Auto-complete doesn't trigger 'invalid capture index' on '%...'.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText([[
|
||||
local tweaks = require("tweaks")
|
||||
local require = tweaks.require
|
||||
local modules = tweaks.modules]])
|
||||
|
||||
ok(limit(10000, function() CreateAutoCompList(editor, "tweaks.modules") end),
|
||||
"Auto-complete doesn't loop for recursive 'modules'.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText([[
|
||||
result = result.list[1] --> "does the test" test
|
||||
@@ -52,6 +61,15 @@ editor:AddText([[
|
||||
ok(limit(10000, function() EditorAutoComplete(editor) end),
|
||||
"Auto-complete doesn't loop for classes that reference '...'.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText([[
|
||||
buf = str
|
||||
str = buf..str
|
||||
buf = buf..]])
|
||||
|
||||
ok(limit(10000, function() EditorAutoComplete(editor) end),
|
||||
"Auto-complete doesn't loop for string concatenations with self-reference.")
|
||||
|
||||
-- create a valuetype self-reference
|
||||
-- this is to test "s = Scan(); s:" fragment
|
||||
ide.apis.lua.baselib.io.valuetype = "io"
|
||||
@@ -78,8 +96,29 @@ ok(c == 1,
|
||||
("Auto-complete doesn't offer duplicates with the same name ('%s').")
|
||||
:format(ac))
|
||||
|
||||
for k, v in pairs({
|
||||
ree = "repeat require",
|
||||
ret = "return repeat rawget rawset",
|
||||
}) do
|
||||
local ac = CreateAutoCompList(editor, k)
|
||||
is(ac, v,
|
||||
("Auto-complete for '%s' offers results in the expected order."):format(k))
|
||||
end
|
||||
|
||||
ProjectSetInterpreter(interpreter)
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('local t = require("table")\nt.')
|
||||
local ac = CreateAutoCompList(editor, "t.")
|
||||
ok(ac ~= nil and ac:find("concat") ~= nil,
|
||||
"Auto-complete recognizes variables set based on `require`.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('local table = require("io")\nt = require("table")\nt.')
|
||||
local ac = CreateAutoCompList(editor, "t.")
|
||||
ok(ac ~= nil and ac:find("concat") ~= nil,
|
||||
"Auto-complete recognizes variables set based on `require` even when it's re-assigned.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('print(1,io.')
|
||||
|
||||
@@ -94,6 +133,23 @@ ok(value and value:find("close"), "Auto-complete is shown after comma.")
|
||||
ok(not (CreateAutoCompList(editor, "pri.") or ""):match('print'),
|
||||
"Auto-complete doesn't offer 'print' after 'pri.'.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('local name = "abc"; local namelen = #name')
|
||||
IndicateAll(editor)
|
||||
EditorAutoComplete(editor)
|
||||
local isactive = editor:AutoCompActive()
|
||||
editor:AutoCompCancel() -- cleanup
|
||||
|
||||
ok(not isactive, "Auto-complete is not shown if typed sequence matches one of the options.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText(' -- a = io\na:')
|
||||
editor:Colourise(0, -1) -- set proper styles
|
||||
editor.assignscache = false
|
||||
|
||||
ok((CreateAutoCompList(editor, "a:") or "") == "",
|
||||
"Auto-complete doesn't process assignments in comments.")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('-- @tparam string foo\n')
|
||||
editor.assignscache = false
|
||||
@@ -108,6 +164,25 @@ editor.assignscache = false
|
||||
ok((CreateAutoCompList(editor, "foo:") or ""):match('byte'),
|
||||
"Auto-complete offers methods for variable defined as '@param[type=string]'.")
|
||||
|
||||
local strategy = ide.config.acandtip.strategy
|
||||
ide.config.acandtip.strategy = 1
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('local value\nprint(va')
|
||||
IndicateAll(editor)
|
||||
|
||||
local status, res = pcall(CreateAutoCompList, editor, "va")
|
||||
ok(status and (res or ""):match('value'),
|
||||
"Auto-complete offers methods for strategy=1' (1/2).")
|
||||
|
||||
editor:SetText('')
|
||||
editor:AddText('local value\nprint(va')
|
||||
|
||||
local status, res = pcall(CreateAutoCompList, editor, "va")
|
||||
ok(status and (res or ""):match('value'),
|
||||
"Auto-complete offers methods for strategy=1' (2/2).")
|
||||
|
||||
-- cleanup
|
||||
ide.config.acandtip.strategy = strategy
|
||||
ide:GetDocument(editor).isModified = false
|
||||
ClosePage()
|
||||
|
||||
@@ -8,8 +8,8 @@ editor:AddText(([[
|
||||
3]]):format(line))
|
||||
|
||||
local findReplace = ide.findReplace
|
||||
findReplace.findText = line
|
||||
findReplace:FindString()
|
||||
findReplace:SetFind(line)
|
||||
findReplace:Find()
|
||||
|
||||
ide.frame:ProcessEvent(wx.wxCommandEvent(
|
||||
wx.wxEVT_COMMAND_MENU_SELECTED, ID_COMMENT))
|
||||
@@ -18,8 +18,8 @@ local text = editor:GetText()
|
||||
ok(text:find(comment..line) and not text:find(comment.."3"),
|
||||
"One-line selection is commented.")
|
||||
|
||||
findReplace.findText = "--"..line
|
||||
findReplace:FindString()
|
||||
findReplace:SetFind("--"..line)
|
||||
findReplace:Find()
|
||||
editor:SetCurrentPos(editor:GetLength())
|
||||
|
||||
ide.frame:ProcessEvent(wx.wxCommandEvent(
|
||||
@@ -29,7 +29,7 @@ text = editor:GetText()
|
||||
ok(text:find(comment.." "..comment..line) and text:find(comment.."3"),
|
||||
"Commented and uncommented lines are commented.")
|
||||
|
||||
findReplace:FindString()
|
||||
findReplace:Find()
|
||||
editor:SetCurrentPos(editor:GetLength())
|
||||
|
||||
ide.frame:ProcessEvent(wx.wxCommandEvent(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local output = ide.frame.bottomnotebook.errorlog
|
||||
local shell = ide.frame.bottomnotebook.shellbox
|
||||
local output = ide:GetOutput()
|
||||
local shell = ide:GetConsole()
|
||||
|
||||
local text = output:GetText()
|
||||
output:SetReadOnly(false)
|
||||
|
||||
94
t/8-file.lua
Normal file
94
t/8-file.lua
Normal file
@@ -0,0 +1,94 @@
|
||||
ok(not LoadFile(''), "Don't load file with an empty name.")
|
||||
ok(not LoadFile("\r\n "), "Don't load file with name that only has whitespaces.")
|
||||
ok(not LoadFile('t'), "Don't load file with directory as the name (1/2).")
|
||||
ok(not LoadFile('./'), "Don't load file with directory as the name (2/2).")
|
||||
ok(pcall(function() LoadFile('some-nonexisting-name') end), "Load non-existing files.")
|
||||
ClosePage()
|
||||
|
||||
local fullpath = MergeFullPath(wx.wxFileName.GetCwd(), 't/test.lua')
|
||||
ok(ActivateFile('t/test.lua:10'), "Load file:line.")
|
||||
ok(not ActivateFile('t/foo.bar:10'), "Doesn't load non-existent file:line.")
|
||||
ok(ActivateFile(fullpath..':10'), "Load fullpath/file:line.")
|
||||
ok(not ActivateFile(fullpath..'/foo.bar:10'), "Doesn't load non-existent fullpath/file:line.")
|
||||
ClosePage() -- close activated file
|
||||
|
||||
local luas = FileSysGetRecursive('.', true, '*.lua')
|
||||
local more = FileSysGetRecursive('.', true, '*.lua; *.more')
|
||||
cmp_ok(#luas, '>', 0, "List of files is returned for '.lua' extension")
|
||||
is(#luas, #more, "List of files is returned for '.lua' and '.lua; .more' is the same.")
|
||||
|
||||
local luasnodir = FileSysGetRecursive('.', true, '*.lua', {folder = false})
|
||||
is(#luas, #luasnodir, "List of files is returned for '.lua' does not include folders.")
|
||||
|
||||
local fcopy = "t/copy.lua!"
|
||||
ok(FileCopy("t/test.lua", fcopy), "File copied successfully.")
|
||||
local copy = FileRead(fcopy)
|
||||
ok(copy, "Copied file exists.")
|
||||
ok(copy == FileRead("t/test.lua"), "Copy matches the original.")
|
||||
|
||||
local luasmore = FileSysGetRecursive('.', true, '*.lua')
|
||||
is(#luasmore, #luas, ("Mask '.lua' doesn't match '%s'"):format(fcopy))
|
||||
os.remove(fcopy)
|
||||
ok(not FileRead(fcopy), "File deleted successfully.")
|
||||
|
||||
local exlist = ide.config.excludelist
|
||||
local path = 'zbstudio/res/16'
|
||||
local bins0 = FileSysGetRecursive(path, true, '*.*')
|
||||
local bins1 = FileSysGetRecursive(path, true, '*.png')
|
||||
ok(#bins0 > 1, "'*.*' mask retrieves binary files.")
|
||||
|
||||
ide.config.excludelist = ".png/"
|
||||
local bins = FileSysGetRecursive(path, true, '*.*')
|
||||
is(#bins, #bins0, "Excluding '.png/' still returns 'png' files.")
|
||||
|
||||
ide.config.excludelist = ".png"
|
||||
bins = FileSysGetRecursive(path, true, '*.*')
|
||||
is(#bins, 1, "Excluding '.png' skips 'png' files.")
|
||||
|
||||
ide.config.excludelist = "*.png"
|
||||
bins = FileSysGetRecursive(path, true, '*.*')
|
||||
is(#bins, 1, "Excluding '*.png' skips 'png' files.")
|
||||
|
||||
ide.config.excludelist = "FIND*.png"
|
||||
bins = FileSysGetRecursive(path, true, '*.png')
|
||||
ok(#bins < #bins1, "Excluding `FIND*.png` filters out files with that mask.")
|
||||
|
||||
ide.config.excludelist = "*.png"
|
||||
bins = FileSysGetRecursive(path, true, 'FIND*.png')
|
||||
ok(#bins < #bins1, "Requesting `FIND*.png` filters specific files.")
|
||||
|
||||
ide.config.excludelist = ""
|
||||
local bina = FileSysGetRecursive('.', true, '*.lua')
|
||||
|
||||
ide.config.excludelist = "src"
|
||||
bins = FileSysGetRecursive('.', true, '*.lua')
|
||||
is(#bins, #bina, "Excluding `src` still returns the content of `src` folder.")
|
||||
|
||||
ide.config.excludelist = "src/"
|
||||
bins = FileSysGetRecursive('.', true, '*.lua')
|
||||
ok(#bins < #bina, "Excluding `src/` skips the content of `src` folder.")
|
||||
|
||||
ide.config.excludelist = "src\\"
|
||||
local nosrc = #bins
|
||||
bins = FileSysGetRecursive('.', true, '*.lua')
|
||||
ok(#bins < #bina, "Excluding `src\\` skips the content of `src` folder.")
|
||||
is(#bins, nosrc, "Excluding `src\\` and `src/` produce the same result.")
|
||||
|
||||
nosrc = #FileSysGetRecursive('.', true, '*.lua', {folder = false})
|
||||
ide.config.excludelist = "src/**.lua"
|
||||
bins = FileSysGetRecursive('.', true, '*.lua', {folder = false})
|
||||
is(#bins, nosrc, "Excluding `src/**.lua` skips lua files in subfolders.")
|
||||
|
||||
ide.config.excludelist = ""
|
||||
local editor = #FileSysGetRecursive('src/editor', true, '*.lua', {folder = false})
|
||||
|
||||
ide.config.excludelist = "src/*.lua"
|
||||
bins = FileSysGetRecursive('.', true, '*.lua', {folder = false})
|
||||
is(#bins, nosrc+editor, "Excluding `src/*.lua` skips lua files only in `src` folder.")
|
||||
|
||||
ide.config.excludelist = exlist
|
||||
bins = FileSysGetRecursive(path, true, '*', {skipbinary = true})
|
||||
is(#bins, 1, "Default mask excludes `png` files with `skipbinary`.")
|
||||
|
||||
bins = FileSysGetRecursive("bin", true, '*.exe', {folder = false})
|
||||
is(bins, {}, "Default mask excludes `*.exe` files.")
|
||||
43
t/9-misc.lua
Normal file
43
t/9-misc.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
for _, ln in ipairs({'cn', 'de', 'eo', 'pt-br', 'es', 'fr', 'it', 'ru'}) do
|
||||
local func = loadfile(("cfg/i18n/%s.lua"):format(ln))
|
||||
ok(type(func) == 'function' and func() ~= nil, ("Loaded '%s' language file."):format(ln))
|
||||
end
|
||||
|
||||
local fixed, invalid = FixUTF8("+\128\129\130+\194\127+", "+")
|
||||
is(fixed, "++++++\127+", "Invalid UTF8 is fixed (1/2).")
|
||||
is(#invalid, 4, "Invalid UTF8 is fixed (2/2).")
|
||||
|
||||
local UTF8s = {
|
||||
"ABCDE", -- 1 byte codes
|
||||
"\194\160\194\161\194\162\194\163\194\164", -- 2 byte codes
|
||||
"\225\160\160\225\161\161\225\162\162\225\163\163\225\164\164", -- 3 byte codes
|
||||
}
|
||||
|
||||
for n, code in ipairs(UTF8s) do
|
||||
is(FixUTF8(code), code, ("Valid UTF8 code is left unmodified (%d/%d)."):format(n, #UTF8s))
|
||||
end
|
||||
|
||||
|
||||
local editor = NewFile()
|
||||
|
||||
for _, tst in ipairs({
|
||||
"_ = .1 + 1. + 1.1 + 0xa",
|
||||
"_ = 1e1 + 0xa.ap1",
|
||||
"_ = 0xabcULL + 0x1LL + 1LL + 1ULL",
|
||||
"_ = .1e1i + 0x1.1p1i + 0xa.ap1i",
|
||||
}) do
|
||||
ok(AnalyzeString(tst) ~= nil,
|
||||
("Numeric expression '%s' can be checked with static analysis."):format(tst))
|
||||
|
||||
editor:SetText(tst)
|
||||
editor:ResetTokenList()
|
||||
while IndicateAll(editor) do end
|
||||
local defonly = true
|
||||
for _, token in ipairs(GetEditor():GetTokenList()) do
|
||||
if token.name ~= '_' then defonly = false end
|
||||
end
|
||||
ok(defonly == true, ("Numeric expression '%s' can be checked with inline parser."):format(tst))
|
||||
end
|
||||
|
||||
ide:GetDocument(editor).isModified = false
|
||||
ClosePage()
|
||||
@@ -1,2 +1 @@
|
||||
@echo off
|
||||
zbstudio -cfg t/test.lua
|
||||
@zbstudio -cfg t/test.lua
|
||||
|
||||
@@ -21,6 +21,10 @@ ide.app.postinit = function()
|
||||
debug.sethook(function() error("exceeded") end, "", limit)
|
||||
local ok, res = pcall(func)
|
||||
debug.sethook()
|
||||
if ok and ide:GetOutput():GetText():find("Auto-complete was aborted") then
|
||||
ok, res = false, "Auto-complete was aborted"
|
||||
ide:GetOutput():SetText('')
|
||||
end
|
||||
return ok, res
|
||||
end
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ return binpath and {
|
||||
local myMenu = wx.wxMenu{
|
||||
{ ID "glslc.compile.input", "&Custom Args", "when set a popup for custom compiler args will be envoked", wx.wxITEM_CHECK },
|
||||
{ ID "glslc.compile.separable", "Separable", "when set separable programs are used", wx.wxITEM_CHECK },
|
||||
{ ID "glslc.compile.preproc", "Preprocess File", "Pre-process the files only, resolving #inlcudes", wx.wxITEM_CHECK },
|
||||
{ },
|
||||
{ ID "glslc.compile.ext", "Compile from .ext\tCtrl-1", "Compile based on file extension" },
|
||||
{ ID "glslc.compile.all", "Link multiple .ext\tCtrl-2", "Tries to link multiple shaders based on filename" },
|
||||
@@ -31,6 +32,7 @@ return binpath and {
|
||||
local data = {}
|
||||
data.customarg = false
|
||||
data.separable = false
|
||||
data.preproc = false
|
||||
data.custom = ""
|
||||
data.domains = {
|
||||
[ID "glslc.compile.vertex"] = 1,
|
||||
@@ -312,7 +314,11 @@ return binpath and {
|
||||
data.separable = event:IsChecked()
|
||||
end)
|
||||
|
||||
|
||||
frame:Connect(ID "glslc.compile.preproc",wx.wxEVT_COMMAND_MENU_SELECTED,
|
||||
function(event)
|
||||
data.preproc = event:IsChecked()
|
||||
end)
|
||||
|
||||
-- Compile
|
||||
local function evCompile(event)
|
||||
local filename,info = GetEditorFileAndCurInfo()
|
||||
@@ -346,7 +352,11 @@ return binpath and {
|
||||
end
|
||||
|
||||
local function getCompileArg(filename,domain)
|
||||
return "-profile "..data.domainprofiles[domain]..' "'..filename:GetFullPath()..'" '
|
||||
local str = ""
|
||||
if (data.preproc) then
|
||||
str = '-P "'..filename:GetPath(wx.wxPATH_GET_VOLUME + wx.wxPATH_GET_SEPARATOR).."_"..filename:GetFullName()..'" '
|
||||
end
|
||||
return str.."-profile "..data.domainprofiles[domain]..' "'..filename:GetFullPath()..'" '
|
||||
end
|
||||
|
||||
|
||||
@@ -408,6 +418,7 @@ return binpath and {
|
||||
|
||||
local cmdline = binpath.."/glslc.exe "
|
||||
cmdline = cmdline..(args and args.." " or "")
|
||||
cmdline = cmdline..(data.preproc and "-E " or "")
|
||||
cmdline = cmdline..(data.separable and "-separable " or "")
|
||||
cmdline = cmdline.."-o "..outname.." "
|
||||
cmdline = cmdline..compileargs
|
||||
@@ -431,7 +442,7 @@ return binpath and {
|
||||
return str,postfunc
|
||||
end
|
||||
|
||||
local wdir = filename:GetPath()
|
||||
local wdir = filename:GetPath(wx.wxPATH_GET_VOLUME)
|
||||
|
||||
-- run compiler process
|
||||
CommandLineRun(cmdline,wdir,true,nil,compilecallback)
|
||||
|
||||
BIN
zbstudio.exe
BIN
zbstudio.exe
Binary file not shown.
@@ -2,7 +2,8 @@
|
||||
|
||||
ZBS_PATH=${0%/*/*}
|
||||
if [ ! -d $ZBS_PATH ]; then ZBS_PATH=${PWD%/*}; fi
|
||||
export DYLD_LIBRARY_PATH="$ZBS_PATH/ZeroBraneStudio/bin"
|
||||
if [[ ! -e $DYLD_LIBRARY_PATH/libedit.3.dylib && ! -e /usr/lib/libedit.3.dylib ]]
|
||||
then ln -s /usr/lib/libedit.2.dylib $DYLD_LIBRARY_PATH/libedit.3.dylib; fi
|
||||
ZBS_BIN="$ZBS_PATH/ZeroBraneStudio/bin"
|
||||
if [[ ! -e "$ZBS_BIN/libedit.3.dylib" && ! -e /usr/lib/libedit.3.dylib ]]
|
||||
then ln -s /usr/lib/libedit.2.dylib "$ZBS_BIN/libedit.3.dylib"; fi
|
||||
export DYLD_LIBRARY_PATH="$ZBS_BIN:${DYLD_LIBRARY_PATH}"
|
||||
(cd "$ZBS_PATH/ZeroBraneStudio"; bin/lua src/main.lua zbstudio "$@")
|
||||
|
||||
@@ -31,6 +31,7 @@ unhidewindow = { -- allow unhiding of GUI windows
|
||||
ConsoleWindowClass = 2,
|
||||
-- ignore the following windows when "showing all"
|
||||
IME = 0,
|
||||
wxDisplayHiddenWindow = 0,
|
||||
['MSCTFIME UI'] = 0,
|
||||
-- GLUT/opengl/SDL applications (for example, moai or love2d)
|
||||
GLUT = 1, FREEGLUT = 1, SDL_app = 1,
|
||||
|
||||
BIN
zbstudio/res/16/DEBUG-RUN-TO.png
Normal file
BIN
zbstudio/res/16/DEBUG-RUN-TO.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 321 B |
BIN
zbstudio/res/16/FILE-NORMAL-START.png
Normal file
BIN
zbstudio/res/16/FILE-NORMAL-START.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 743 B |
BIN
zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png
Normal file
BIN
zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 402 B |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user