Compare commits

...

213 Commits
1.10 ... 1.20

Author SHA1 Message Date
Paul Kulchenko
653d9b52ca Updated documentation for 1.20. 2015-10-08 15:24:01 -07:00
Paul Kulchenko
d74711580b Upgraded Lua 5.3 interpreter to 5.3.1 on Linux (x86 and x64). 2015-10-07 20:10:59 -07:00
Paul Kulchenko
2a164bee4e Upgraded Lua 5.3 interpreter to 5.3.1 on OSX. 2015-10-07 19:42:06 -07:00
Paul Kulchenko
70f51b7ba7 Updated CHANGELOG with translation updates. 2015-10-06 22:14:06 -07:00
Paul Kulchenko
74a37fb2c1 Updated Russian translation (#70). 2015-10-05 10:02:33 -07:00
Paul Kulchenko
f6f4797483 Merge branch 'italian-translation' (#70, closes #536). 2015-10-05 08:24:51 -07:00
Leo Bartoloni
4ace576eb2 fixed translations 2015-10-05 08:23:26 -07:00
Leo Bartoloni
0b3084964c Added italian translations 2015-10-05 08:23:26 -07:00
Leo Bartoloni
d3b6ab00a3 Added Italian translations 2015-10-05 08:23:26 -07:00
Paul Kulchenko
f4527705aa Upgraded Lua 5.3 interpreter to 5.3.1 on Windows (closes #453, closes #460).
This also fixes seek/tell functions on large (>2GB) files on Windows.
2015-10-04 09:11:14 -07:00
riidom
ae4c4a1f02 Update de.lua
completed
2015-10-03 14:10:12 +02:00
riidom
b5fa3955dd Update de.lua
2 nils missing, see respective issue pls.
2015-10-03 12:49:00 +02:00
Paul Kulchenko
f7e3b71b94 Updated CHANGELOG with recent changes. 2015-10-02 19:44:56 -07:00
Yonaba
ebd5557620 Updated french translation as of commit 84c2846033 (#70) 2015-10-03 01:13:58 +00:00
Paul Kulchenko
84c2846033 Updated translation files for new messages (#70). 2015-09-30 20:44:20 -07:00
Paul Kulchenko
29e8fbfda8 Updated a message to match one of the existing ones (#70). 2015-09-30 20:32:21 -07:00
Paul Kulchenko
9dc00aa39b Updated translation logic to accept empty tables for pluralization values (#70). 2015-09-30 20:21:46 -07:00
Paul Kulchenko
cd7692cdc1 Added handling of translation messages that require pluralization (#70). 2015-09-30 20:21:04 -07:00
Paul Kulchenko
0d604bfd1d Fixed text search and fuzzy symbol search in symlinks (#458, #530). 2015-09-26 21:49:56 -07:00
Paul Kulchenko
10257c5034 Updated build scripts to use the most recent releases of LuaJIT and Lua 5.2. 2015-09-25 14:56:33 -07:00
Paul Kulchenko
1b3cd9a11b Added check for non-zero file size before reporting load progress (#530). 2015-09-24 11:57:50 -07:00
Paul Kulchenko
125850f150 Added switching interpreters by clicking on the interpreter label in the status bar. 2015-09-23 10:08:04 -07:00
Paul Kulchenko
e6ab186571 Added handling of editor commands (Copy/Paste/SelectAll/Undo/Redo) in search panel controls. 2015-09-22 18:19:26 -07:00
Paul Kulchenko
c5e6c9608c Fixed an error when scope field is updated in the search dialog (side effect of 8dc07e22). 2015-09-21 22:00:48 -07:00
Paul Kulchenko
576da864fb Added position to the end-of-file lexer token (closes #529). 2015-09-21 10:18:58 -07:00
Paul Kulchenko
7606d014e2 Updated OSX launcher to keep DYLD_LIBRARY_PATH if already set. 2015-09-20 14:19:19 -07:00
Paul Kulchenko
0f37b84027 Added reporting when a file can't be removed from a project tree. 2015-09-18 09:09:19 -07:00
Paul Kulchenko
845f5863f9 Fixed opening only one tab for external debugging of dynamic code on Linux (closes #526). 2015-09-17 13:59:58 -07:00
Paul Kulchenko
fe6b57811c Merge branch 'master' of https://github.com/marmalade/ZeroBraneStudio 2015-09-17 09:27:32 -07:00
Nick
a583431a03 Fix live picking up debug vs release binaries
Was previously picking up the switch from Marmalade Hub only at the
point where ZB is opened from the Hub. This change makes it work "live"
- picks up the last hub setting whenever you run the project in ZB.
2015-09-17 16:39:10 +01:00
Nick
c4ad99c913 Update marmalade API definition to 7.9
Updated API definition to match 7.9 APIs (Valid back to 7.8 as no new
APIs since then)
2015-09-17 16:39:10 +01:00
Nick
8e06c1de5c Integrate ZeroBrane with Marmalade's Hub GUI
Output from Marmalade simulator now goes to ZB console instead of
external window.
Marmalade interpreter now reads config info from Hub project and uses
these loader binaries: "release sim" for release configuration, and
"console" for debug.
Save project settings immediately.
NB: Requires Marmalade > 7.9.0 for interpreter to be set automatically.
Older versions will work but user has to set interpreter.
2015-09-17 16:36:40 +01:00
Paul Kulchenko
45c38ab3ec Fixed running Run/Debug commands on unnamed files; regression from 5e4e1962. 2015-09-17 08:24:14 -07:00
Paul Kulchenko
9005b25723 Added explicit initialization for editor.autoactivate default setting. 2015-09-16 22:44:39 -07:00
Paul Kulchenko
aece6108aa Added allowing editor.saveallonrun with infervalue static analyzer (closes #524). 2015-09-16 22:43:05 -07:00
Paul Kulchenko
d2e7a8908a Updated static analyzer (luainspect) to take globals in 'required' files into account (#520).
This change is in effect only when `staticanalyzer.infervalue` is set to `true`.
2015-09-15 15:52:08 -07:00
Paul Kulchenko
9287326291 Updated static analyzer to refresh cache of 'required' modules (#520). 2015-09-15 15:50:28 -07:00
Paul Kulchenko
a4ef4f64b3 Added support for include command in config files. 2015-09-14 12:09:57 -07:00
Paul Kulchenko
c6bf32b0d2 Updated 'auto-completing...' message to hide after a brief delay. 2015-09-12 22:48:48 -07:00
Paul Kulchenko
578fcb1518 Disabled unhiding one of wxwidgets windows that is only used for message passing (Windows). 2015-09-11 17:01:53 -07:00
Paul Kulchenko
8a455a0077 Added document Close method (#166). 2015-09-11 17:00:44 -07:00
Paul Kulchenko
e2331637af Added descriptions for new Lua 5.3 math.* and coroutine.* functions. 2015-09-10 13:10:50 -07:00
Paul Kulchenko
2de0f88d10 Added functions new to Lua 5.3 to the list of keywords. 2015-09-10 12:55:58 -07:00
Paul Kulchenko
a1e7d262fd Added reporting of deserialization failures for saved package data. 2015-09-09 22:18:50 -07:00
Paul Kulchenko
75056fa9c2 Simplified reporting of error messages from the main script. 2015-09-09 22:18:15 -07:00
Paul Kulchenko
e5d7341e43 Fixed highlighting for those specs that don't have information on where functions end (#515). 2015-09-08 22:16:36 -07:00
Paul Kulchenko
a8cede0052 Merge branch 'master' of http://git.code.sf.net/p/estrelaeditor/code 2015-09-08 22:12:37 -07:00
Paul Kulchenko
036cf0b745 Updated C/cpp spec to skip if(...) from the list of functions. 2015-09-08 15:15:47 -07:00
Paul Kulchenko
41964c458e Updated C/cpp spec to properly handle functions at the beginning of a file. 2015-09-08 15:15:04 -07:00
Paul Kulchenko
a7ae8713d8 Added collapsing white spaces from names shown in the Outline. 2015-09-08 14:57:22 -07:00
Paul Kulchenko
e80118de1e Updated package data serialization to use simpler dumper for faster processing. 2015-09-07 21:20:15 -07:00
Paul Kulchenko
aa32586f94 Updated saving symbol index to be called less frequently (#499). 2015-09-07 21:16:47 -07:00
Paul Kulchenko
c3dafa0af8 Updated list of fields to skip from saved symbol index (#499). 2015-09-07 21:15:59 -07:00
Paul Kulchenko
2078608012 Fixed highlighting the current function when anonymous functions are hidden (#515). 2015-09-05 10:42:52 -07:00
Paul Kulchenko
5e4e1962bd Updated Run/Debug to not force saving new tabs when Start file is set. 2015-09-04 11:56:38 -07:00
Christoph Kubisch
95ecc1876d glslc tool: add menu option for pre-process mode 2015-09-04 19:28:17 +02:00
Paul Kulchenko
8dc07e2282 Added workaround for a memory leak in wxlua after a search panel is opened.
The leak happens when a non-existing property is checked on a wxlua object
inside `pcall`. wxlua throws `wxLua: Unable to call an unknown method '...' on
a '...' type.`, which is handled correctly, but leaks about 0.5Kb per call.
2015-09-03 11:21:23 -07:00
Paul Kulchenko
b9ac6ce4c4 Updated default interpreter not set in the previous commit (#518). 2015-09-02 22:22:55 -07:00
Paul Kulchenko
7541b830ea Updated interpreter handling to allow setting of default value in the config (closes #518). 2015-09-02 20:55:06 -07:00
Paul Kulchenko
1f83927462 Updated highlighting of the current function in the Outline to select one item (#515). 2015-09-02 08:54:29 -07:00
Paul Kulchenko
14d55bdfe3 Added jumping to the current function in the outline (#515). 2015-08-31 15:20:48 -07:00
Paul Kulchenko
26f0a6bd4c Added highlighting current functions for better visibility (#515). 2015-08-30 16:01:05 -07:00
Paul Kulchenko
5a1b42330f Added skipping unneded fields from the symbol index to reduce memory usage (#515). 2015-08-30 16:00:37 -07:00
Paul Kulchenko
413a6b611f Disabled initial highlight when showing current function disabled in the outline (#515). 2015-08-30 15:32:26 -07:00
Paul Kulchenko
34276cf9ff Added showing position of the current function in the Outline (closes #515). 2015-08-29 14:51:36 -07:00
Paul Kulchenko
45a4924686 Added explicit editor destroy during find and replace to conserve memory. 2015-08-28 09:21:26 -07:00
Paul Kulchenko
cc085d4fb4 Added explicit editor destroy during symbol indexing to conserve memory. 2015-08-28 09:20:39 -07:00
Paul Kulchenko
dbf6098e84 Added turning jitting on when running under LuaJIT. 2015-08-23 15:39:06 -07:00
Paul Kulchenko
752b30166c Added Run to Cursor to the popup menu in the editor (#413). 2015-08-22 22:06:20 -07:00
Paul Kulchenko
443903b528 Fixed styling of comments that include markup inside markup (fixes #514). 2015-08-18 22:41:13 -07:00
Paul Kulchenko
fc408c794c Added showing memory usage stats in the status bar configured by showmemoryusage. 2015-08-13 22:27:41 -07:00
Paul Kulchenko
ddd5e41659 Disabled dragging out search results tab to avoid unexpected results (#416). 2015-08-12 15:45:44 -07:00
Paul Kulchenko
f63b140c14 Updated auto-complete to close when one of the options matches the current input. 2015-08-11 23:09:09 -07:00
Paul Kulchenko
f84424da44 Updated applying limit to the commandbar results to allow them to be resorted. 2015-08-10 15:50:32 -07:00
Paul Kulchenko
21a4e9862a Fixed updating symbols in new files that haven't been indexed yet (#499). 2015-08-10 15:50:00 -07:00
Paul Kulchenko
fc9bc61d9c Fixed opening empty files (fixes #510). 2015-08-09 22:32:59 -07:00
Paul Kulchenko
90fd18f8a0 Added skipping opening a file from symbol search when nothing is matched. 2015-08-09 22:27:26 -07:00
Paul Kulchenko
49335e62cf Merge branch 'project-symbol-search' 2015-08-09 20:10:29 -07:00
Paul Kulchenko
fd31261ec4 Fixed autocomplete for words that may include underscores in suggestions. 2015-08-09 19:59:58 -07:00
Paul Kulchenko
8c00238409 Added skipping directories during directory traversal (#499). 2015-08-09 19:55:28 -07:00
Paul Kulchenko
52389e9897 Updated status messages for better visibility on OSX during index refresh (#499). 2015-08-09 19:53:49 -07:00
Paul Kulchenko
23322f4e47 Added SetStatusFor package method to set temporary status (#166). 2015-08-09 19:51:06 -07:00
Paul Kulchenko
f22918b494 Added forcing immediate refresh of symbol index when requested from the menu (#499). 2015-08-08 17:49:08 -07:00
Paul Kulchenko
3ff35270fc Fixed crash on OSX during symbol indexing when filetree menu is open (#499). 2015-08-07 20:15:41 -07:00
Paul Kulchenko
45bb80e92e Updated tracking of editor updates to skip unneeded notifications on OSX (#499). 2015-08-07 16:48:03 -07:00
Paul Kulchenko
582c63b042 Fixed crash on Linux during symbol indexing when filetree menu is open (fixes #507). 2015-08-07 15:19:40 -07:00
Paul Kulchenko
53e2bfa06a Improved auto-complete suggestions for case-sensitive matches. 2015-08-06 22:14:00 -07:00
Paul Kulchenko
46e103dea3 Fixed duplicates between variables and dynamic words in auto-complete. 2015-08-06 21:58:46 -07:00
Paul Kulchenko
fb06395bf9 Fixed uncommenting of the last line in the selection to keep un/comment reversible (fixes #509). 2015-08-05 10:18:14 -07:00
Paul Kulchenko
110264beb8 Added onMenuOutput event (#166). 2015-08-03 13:52:22 -07:00
Paul Kulchenko
579005ae2e Added onMenuWatch event (#166). 2015-08-02 20:45:24 -07:00
Paul Kulchenko
bd208273bc Added disabling symbol indexing for directories/projects (#499). 2015-08-01 11:19:12 -07:00
Paul Kulchenko
a587857b2c Added refreshing of symbol index to the project menu (#499). 2015-07-31 10:22:36 -07:00
Paul Kulchenko
6b94ce24de Added reporting of the number of files queued for indexing (#499). 2015-07-30 10:29:49 -07:00
Paul Kulchenko
bbb7f6a423 Added reporting when indexing is completed (#499). 2015-07-30 10:29:22 -07:00
Paul Kulchenko
cc83b80022 Updated symbol refresh to do processing as soon as the path is known (#499). 2015-07-30 10:28:38 -07:00
Paul Kulchenko
069e9def30 Refactored file and editor symbol handling (#499). 2015-07-30 09:35:35 -07:00
Paul Kulchenko
6790cc4190 Added GetOutline package method (#166, #499). 2015-07-29 23:20:27 -07:00
Paul Kulchenko
5171a20852 Added exclusion to not report arg as global in static analysis (closes #503). 2015-07-28 14:15:25 -07:00
Paul Kulchenko
153a2d162b Added commandbar.width to set the width of command bar. 2015-07-27 22:17:26 -07:00
Paul Kulchenko
cc35ca76ff Added skipping symbol index queue when symbol inactivity is not set (#499). 2015-07-26 19:57:47 -07:00
Paul Kulchenko
7f7aa6383e Updated symbol index to skip unused elements in serialization (#499). 2015-07-25 23:41:10 -07:00
Paul Kulchenko
54ffda99c5 Upgraded Mobdebug (0.628) to include keyignore serializer option. 2015-07-25 23:39:35 -07:00
Paul Kulchenko
d0a1e792d6 Added setting different types of indentation guides. 2015-07-22 15:34:27 -07:00
Paul Kulchenko
cdc464b6cf Updated prefiltering to limit prefix to avoid penalty for long s.*s.*s... (#31). 2015-07-22 15:32:55 -07:00
Paul Kulchenko
62118654f7 Added optimization with prefiltering for short patterns (#31, #499). 2015-07-21 23:13:01 -07:00
Paul Kulchenko
a17080bde7 Updated package SetSettings method to allow passing of additional parameters (#166). 2015-07-20 14:51:52 -07:00
Paul Kulchenko
85e186bdd5 Added status message during index update (#499). 2015-07-19 09:20:47 -07:00
Paul Kulchenko
e6495beec7 Improved compactness of saved package settings (#166, #499). 2015-07-18 16:19:20 -07:00
Paul Kulchenko
69c4415452 Improved performance of saving symbol index data (#499). 2015-07-17 15:31:32 -07:00
Paul Kulchenko
076d08afc8 Optimized saving package settings (#166, #499). 2015-07-17 15:26:56 -07:00
Paul Kulchenko
785af96859 Added purging of outdated cache for symbol indexing (#499). 2015-07-16 17:07:18 -07:00
Paul Kulchenko
46b02faac7 Updated status of files indexing for symbol search (#499). 2015-07-16 16:32:17 -07:00
Paul Kulchenko
da8aed3f25 Added symbol processing of tabs that are not saved yet (#499). 2015-07-16 14:40:24 -07:00
Paul Kulchenko
fa79f3b501 Added indexing of project files (#499). 2015-07-16 13:54:44 -07:00
Paul Kulchenko
008c040171 Added commandbar.maxitems configuration setting (#499). 2015-07-16 10:37:24 -07:00
Paul Kulchenko
eb73e209b4 Updated DoWhenIdle handling to gracefully handle a long queue. 2015-07-16 10:36:25 -07:00
Paul Kulchenko
1ecb99420c Added caching of symbols for open files (#499). 2015-07-16 10:12:31 -07:00
Paul Kulchenko
ef82d423b6 Updated Go To Symbol to refresh files loaded in the preview (#499, #385). 2015-07-15 22:13:39 -07:00
Paul Kulchenko
69e9807990 Updated symbol search to only refresh outline when it's not populated (#385). 2015-07-15 16:33:32 -07:00
Paul Kulchenko
abd6560faf Added support for file.lua@symbol fuzzy search (#385). 2015-07-14 12:37:54 -07:00
Paul Kulchenko
74eecb999e Added symbol search in all open files (#385). 2015-07-14 12:37:53 -07:00
Paul Kulchenko
789078f86e Optimized UTF8 validation (thanks to Joergen von Bargen). 2015-07-14 10:13:46 -07:00
Paul Kulchenko
09f7a56fdd Added check to avoid loops in type assignment during auto-complete (#498). 2015-07-12 16:03:10 -07:00
Paul Kulchenko
3ffc6d1354 Fixed assignment parsing when the type value is re-assigned (#498). 2015-07-12 15:13:20 -07:00
Paul Kulchenko
69d2788bfd Added primitive handling of require in type assignments for known APIs (fixes #498). 2015-07-12 15:12:45 -07:00
Paul Kulchenko
b4656ca0f6 Updated search logic to avoid showing search results in recent files (#416). 2015-07-10 21:48:29 -07:00
Paul Kulchenko
813c8de968 Updated line number handling to adjust for large files (#491). 2015-07-09 12:42:48 -07:00
Paul Kulchenko
f5077b89a2 Fixed mouse selection in auto-complete on OSX (fixes #496). 2015-07-08 18:06:41 -07:00
Paul Kulchenko
aa40d7f7c3 Updated busted interpreter to check for proper extension on Windows (closes #495). 2015-07-07 10:54:02 -07:00
Paul Kulchenko
97e4d11dd2 Updated handling of binary and utf8 validness checks for large files (#491). 2015-07-07 10:52:56 -07:00
Paul Kulchenko
3816be8336 Fixed fuzzy file search to not double open already opened files (#31). 2015-07-06 16:26:38 -07:00
Paul Kulchenko
353c99a182 Upgraded Mobdebug (0.627) to improve debugging of code with overloaded string methods.
The upgrade also eliminated a need to overwrite `os.exit` in the controller.
2015-07-06 15:23:51 -07:00
Paul Kulchenko
b8ab9968f8 Improved memory usage when closing large files (#491). 2015-07-06 15:09:00 -07:00
Paul Kulchenko
1d8663942e Added support for aborting file reading callback (#491). 2015-07-05 19:20:49 -07:00
Paul Kulchenko
1b8dd87843 Added progress display when loading large files (#491). 2015-07-05 10:03:17 -07:00
Paul Kulchenko
0ce1700dfc Improved handling of large files (#491). 2015-07-04 22:42:58 -07:00
Paul Kulchenko
8167c67f35 Added status methods: GetStatus, PushStatus, and PopStatus (#166). 2015-07-04 22:18:06 -07:00
Paul Kulchenko
6e0a168230 Updated build scripts for Lua 5.3 to use 5.3.1. 2015-07-03 13:58:47 -07:00
Paul Kulchenko
91fcca962d Added onMenuOutline callback (#166, #337). 2015-07-02 15:10:53 -07:00
Paul Kulchenko
3e0d507a2a Added ability to toggle outline sorting from the local menu (#337, #494). 2015-07-02 15:09:25 -07:00
Paul Kulchenko
a864d5c889 Added activating Output panel after compilation errors. 2015-07-01 15:00:13 -07:00
Paul Kulchenko
dc0064ad70 Updated toolbar to show large icons by default on large screens. 2015-06-29 21:37:07 -07:00
Paul Kulchenko
8e893e3b9e Fixed indentation of lines that end with partial long strings with opening brackets (#324). 2015-06-28 14:14:52 -07:00
Paul Kulchenko
d7def66cf3 Fixed indentation of lines with long strings that include opening brackets (#324). 2015-06-28 14:14:14 -07:00
Paul Kulchenko
5adc17d7bb Refactored status updates to use SetStatus method. 2015-06-26 13:58:08 -07:00
Paul Kulchenko
bf82fd23e2 Replaced references to internal variables with method calls (#166). 2015-06-26 12:09:24 -07:00
Paul Kulchenko
41d29c3bc0 Updated package methods to use self reference as needed (#166). 2015-06-26 12:07:38 -07:00
Paul Kulchenko
1bd10f98c8 Added package SetStatus method (#166). 2015-06-26 11:53:40 -07:00
Paul Kulchenko
d302c35221 Updated message to reference package methods instead of obsolete ones. 2015-06-26 09:14:11 -07:00
Paul Kulchenko
d460b380c1 Added Ctrl/Cmd-Enter/Ctrl/Cmd-Shift-Enter to add line after/before the current one (#334). 2015-06-26 09:12:45 -07:00
Paul Kulchenko
9a2d98f7ca Added ignoring current selection in auto-complete with Shift-Enter (closes #494). 2015-06-26 09:11:13 -07:00
Paul Kulchenko
e5fa2afe3c Added hiding auto-complete after typing one of the offered options (#494). 2015-06-25 12:12:38 -07:00
Paul Kulchenko
5144e92e89 Added activating Output notebook to show search results if it's hidden (#416). 2015-06-23 16:14:47 -07:00
Paul Kulchenko
234f9b4aaa Added reporting of errors when unable to open file for static analysis. 2015-06-23 12:07:03 -07:00
Paul Kulchenko
6b06d0a190 Updated outline to only retrieve entry text when there are tokens to process (#337). 2015-06-22 11:50:57 -07:00
Paul Kulchenko
04d2ef8127 Added collapsing whitespaces in function parameters in the outline (#337). 2015-06-21 21:28:50 -07:00
Paul Kulchenko
3829792e68 Updated getting text length without requesting editor content. 2015-06-21 21:21:12 -07:00
Paul Kulchenko
3eeebd274b Added emphasis for the preference type in the config file template. 2015-06-21 21:01:07 -07:00
Paul Kulchenko
1f2b5d0bf2 Fixed indicators on table fields after variables that look like multiple assignments (#492). 2015-06-20 10:30:46 -07:00
Paul Kulchenko
d53463f14e Fixed indicators on table fields after variables (fixes #492). 2015-06-19 20:38:44 -07:00
Paul Kulchenko
edfab46685 Aded FileSize method as the default one returns non-zero result for non-existing files. 2015-06-17 21:33:20 -07:00
Paul Kulchenko
0050c7fedd Fixed variable usage based on static analysis. 2015-06-16 18:35:41 -07:00
Paul Kulchenko
eff9150f24 Added reporting of FileWrite failing to write the entire content. 2015-06-15 15:22:35 -07:00
Paul Kulchenko
807ad0f957 Switched to the bottom location for the search results by default (#416). 2015-06-14 20:52:20 -07:00
Paul Kulchenko
6142843f4b Fixed initial select-and-find search. 2015-06-14 20:48:49 -07:00
Paul Kulchenko
b4d1019e71 Updated showing function indicator handling to allow for easier enabling. 2015-06-14 20:38:36 -07:00
Paul Kulchenko
cc1f36af2f Updated indicator processing to use new API. 2015-06-13 16:34:32 -07:00
Paul Kulchenko
790493b6d1 Added package methods AddIndicator, GetIndicator, and RemoveIndicator (#166). 2015-06-13 16:30:56 -07:00
Paul Kulchenko
38c6cd28fa Fixed returning focus to the editor after find-in-files followed by page search (#416). 2015-06-11 20:59:03 -07:00
Paul Kulchenko
18d471be2c Updated ID references in toolbar to use the new access method. 2015-06-10 16:42:32 -07:00
Paul Kulchenko
feb7f53e2c Added missing Detach Process id to keymap (pkulchenko/MobDebug#19). 2015-06-10 09:13:24 -07:00
Paul Kulchenko
b7cd8aa30f Updated ID references in keymap to use the new access method. 2015-06-10 09:12:09 -07:00
Paul Kulchenko
1d02e3131d Updated Detach Process to allow access to it while the process is running.
Closes pkulchenko/MobDebug#19.
2015-06-10 09:08:27 -07:00
Paul Kulchenko
adcdb71894 Upgraded Mobdebug (0.624) to make DONE async and to add __tostring protection (closes #446). 2015-06-09 19:57:22 -07:00
Christoph Kubisch
2ee84a0c47 glslc, bugfix working dir must use full path 2015-06-07 22:23:50 +02:00
Paul Kulchenko
44219f008e Added a check for ini setting pointing to a path with a writeable directory (#483). 2015-06-06 09:37:20 -07:00
Paul Kulchenko
0ef9c297cb Added a check for ini setting pointing to a directory (#483). 2015-06-06 09:36:36 -07:00
Paul Kulchenko
b256912dee Added processing of ini setting relative to the IDE location (closes #483). 2015-06-05 16:31:30 -07:00
Paul Kulchenko
47c9f0a88f Fixed performance of initial fuzzy search for line numbers (closes #476). 2015-06-05 14:35:31 -07:00
Paul Kulchenko
164341bedf Added Watch view refresh after switching focus when needed. 2015-06-04 22:46:19 -07:00
Paul Kulchenko
dcf9ed7d26 Added Stack view refresh after switching focus when needed. 2015-06-04 22:33:27 -07:00
Paul Kulchenko
fa248c5be1 Updated metalua/static analyzer to accept long integer and imaginary numbers (closes #482). 2015-06-04 15:03:43 -07:00
Paul Kulchenko
fe5b1d8bf6 Updated internal parser to accept long integer, imaginary, and floating point hex numbers (#482). 2015-06-04 15:01:59 -07:00
Paul Kulchenko
e6ed7d7cc4 Updated internal parser to accept numbers that start with a period (#482). 2015-06-04 15:00:40 -07:00
Paul Kulchenko
c839beac25 Updated compilation and static analysis to keep output when running/debugging (#479). 2015-06-04 09:15:21 -07:00
Paul Kulchenko
67af8bb65f Enabled compilation during running/debugging (closes #479). 2015-06-03 22:03:06 -07:00
Paul Kulchenko
8350d3c609 Enabled static analysis during running/debugging (#479). 2015-06-03 22:02:44 -07:00
Paul Kulchenko
a8c6f3a0dc Optimized handling of multi-line changes in the editor (closes #477). 2015-06-03 21:59:39 -07:00
Paul Kulchenko
ead5a9d46a Added forced Refresh/Update to improve redrawing of commandbar on Windows 8. 2015-05-29 23:31:44 -07:00
Paul Kulchenko
0eadfdab00 Added a check for a window to be shown to avoid callback recursion on OSX (fixes #473). 2015-05-28 22:45:27 -07:00
Paul Kulchenko
b2deb54012 Added package IsWindowShown method (#166). 2015-05-28 22:40:06 -07:00
Paul Kulchenko
6bf310daae Added package onEditorPreClose event (#166, closes #461). 2015-05-28 14:18:16 -07:00
Paul Kulchenko
267fd50f24 Merge branch 'autocomplete' of https://github.com/IonoclastBrigham/ZeroBraneStudio into autocomplete-better-order 2015-05-28 09:29:47 -07:00
Brigham Toskin
d3c668f046 Revised: auto-complete results (amends #469, w/@pkulchenko patch) 2015-05-27 23:07:52 -07:00
Paul Kulchenko
5a149166f8 Updated build script on Windows to support compiling luasec for different versions. 2015-05-27 21:44:00 -07:00
Paul Kulchenko
6fe0f3a32c Updated build script on Windows to support compiling winapi for different versions. 2015-05-27 21:43:59 -07:00
Paul Kulchenko
33a129a416 Updated build script on Windows to use dot-versioned directories for dependencies. 2015-05-27 21:43:50 -07:00
Paul Kulchenko
bbaab90515 Fixed Output tab name when debugging aborted after run-time error. 2015-05-27 11:41:44 -07:00
Paul Kulchenko
c172289354 Removed forced garbage collection as it led to crashes on Linux (#425, closes #464).
The forced collection didn't have the expected effect and also caused
sporadic crashes on some Linux versions.
2015-05-27 10:41:15 -07:00
Paul Kulchenko
418631ee69 Updated Windows launcher to add dpi awareness for high dpi monitors. 2015-05-26 18:10:33 -07:00
Paul Kulchenko
7aa89ed23b Improved the order of results in auto-complete (closes #469). 2015-05-25 12:51:19 -07:00
Paul Kulchenko
87c4f5f89a Fixed issue with moving files in the tree caused by a61c9e26 (fixes #468). 2015-05-23 23:31:58 -07:00
Paul Kulchenko
48e8d33c1f Fixed recursive file traversal to skip directories when mask is specified. 2015-05-21 18:22:30 -07:00
Paul Kulchenko
fd3f86a54b Added deleting the rest of the word on auto-complete (acandtip.droprest). 2015-05-21 12:41:55 -07:00
Paul Kulchenko
7de970fd69 Added closing editor tab when renaming to an open file from the project tree. 2015-05-20 17:45:13 -07:00
Paul Kulchenko
e5d4045860 Added refresh of the target file after renaming from the project tree. 2015-05-20 17:43:46 -07:00
Paul Kulchenko
bcc81716ca Added a check for object with a focus (occasionally triggered on Linux). 2015-05-20 17:42:35 -07:00
Paul Kulchenko
a61c9e26be Added workaround to fix crash on Linux from the project tree (#425, #464).
This could happen when a new file is created in the project tree with the
same name as the existing file and then the application loses focus.

This cancels editing of the filename (END_LABEL_EDIT), which shows a dialog
to confirm overwriting of the existing file. When the dialog is shown,
another event that cancels editing is generated (but in wxwidgets 2.9.5?),
which causes two dialogs to be displayed, which leads to a crash after the
second one is closed.

The workaround moves the overwrite confirmation to the IDLE event.
2015-05-20 17:41:14 -07:00
Paul Kulchenko
346a5326a6 Added DoWhenIdle package method (#166). 2015-05-20 11:14:36 -07:00
Paul Kulchenko
b136a79bf3 Fixed crash in collectgarbage from the filetree on Linux (#425, #464).
This appears to be a wxwidgets (2.9.5) issue and can be reproduced
by doing the following:

- Start editing a new item in the file tree;
- Right click on the text control (while editing);
- This opens a context menu and triggers ACTIVATE_APP event;
- `collectgarbage` call from that event causes a crash.

Switching garbage collection to ACTIVATE_APP event when the app becomes
active eliminates the crash.
2015-05-19 22:44:40 -07:00
Paul Kulchenko
7a8027e827 Updated indentation after strings with brackets and escaped quotes (#324). 2015-05-17 19:59:45 -07:00
Paul Kulchenko
5c63257572 Updated AnalyzeString to add filename parameter (closes #463).
This can be used to provide a filename that would then load proper spec
for the file (to take known API descriptions into account).
2015-05-16 12:01:49 -07:00
72 changed files with 3733 additions and 1173 deletions

View File

@@ -1,5 +1,220 @@
# 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

View File

@@ -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)",
},
},
},

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.

Binary file not shown.

Binary file not shown.

View File

@@ -125,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"
@@ -134,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"
LUA_BASENAME="lua-5.3.1"
LUA_FILENAME="$LUA_BASENAME.tar.gz"
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

View File

@@ -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"
LUA_BASENAME="lua-5.3.1"
LUA_FILENAME="$LUA_BASENAME.tar.gz"
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

View File

@@ -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"
LUA_BASENAME="lua-5.3.1"
LUA_FILENAME="$LUA_BASENAME.tar.gz"
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:

View File

@@ -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(", $", "")

View File

@@ -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");

View File

@@ -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,7 +95,7 @@ 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
@@ -108,12 +104,13 @@ return {
["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
["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,50 +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 all"] = "更换全部", -- 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 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 all text in the editor"] = "选编辑器内的所有text", -- src\editor\menu_edit.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
@@ -253,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
@@ -294,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 around"] = "卷绕", -- 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

View File

@@ -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,7 +96,7 @@ 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
@@ -109,12 +105,13 @@ return {
["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
["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
["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\findreplace.lua
["Match whole word"] = "Ganzes Wort", -- src\editor\findreplace.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,50 +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
["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 all"] = "Alles 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 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 all text in the editor"] = "Kompletten Text im Editor auswählen", -- src\editor\menu_edit.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
@@ -254,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
@@ -295,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 around"] = "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

View File

@@ -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,7 +96,7 @@ 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
@@ -110,12 +105,13 @@ return {
["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
["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,50 +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"] = "Refreŝigu", -- src\editor\menu_file.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 all"] = "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 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 all text in the editor"] = "Elekti la tekston en la redaktilo", -- src\editor\menu_edit.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
@@ -255,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
@@ -296,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 around"] = "Ĉ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

View File

@@ -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,7 +96,7 @@ 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
@@ -110,12 +105,13 @@ return {
["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
["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,50 +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 all"] = 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 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 all text in the editor"] = "Seleccionar todo el texto en el editor", -- src\editor\menu_edit.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
@@ -255,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
@@ -296,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 around"] = 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

View File

@@ -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,7 +96,7 @@ 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
@@ -109,12 +105,13 @@ return {
["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
["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,50 +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 all"] = "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 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 all text in the editor"] = "Sélectionne tout le texte dans l'éditeur", -- src\editor\menu_edit.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
@@ -254,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
@@ -295,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 around"] = "Boucler", -- 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

View File

@@ -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,7 +96,7 @@ 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
@@ -109,12 +105,13 @@ return {
["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
["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,50 +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 all"] = "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 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 all text in the editor"] = "Seleziona tutto il testo nell'editor", -- src\editor\menu_edit.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
@@ -254,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
@@ -295,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 around"] = "Wrap around", -- 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

View File

@@ -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,7 +96,7 @@ 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
@@ -112,12 +105,13 @@ return {
["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
["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,50 +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 all"] = "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 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 all text in the editor"] = "Selecionar todo o texto do editor", -- src\editor\menu_edit.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
@@ -257,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
@@ -298,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 around"] = "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

View File

@@ -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 evaluate the expression while the application is running."] = "Невозможно вычеслить значение выражения пока приложение выполняется.", -- src\editor\debugger.lua
["Can't open file '%s': %s"] = "Ошибка открытия файла '%s': %s", -- src\editor\singleinstance.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 directory to map"] = "Выберите папку для добавления в список", -- src\editor\filetree.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 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,7 +96,7 @@ 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
@@ -109,12 +105,13 @@ return {
["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
["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,8 +158,10 @@ 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
@@ -171,16 +169,15 @@ return {
["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
@@ -202,43 +199,47 @@ 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 all"] = "Заменить все", -- 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 To Cursor"] = "Выполнить до курсора", -- 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\menu_project.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
@@ -248,7 +249,9 @@ return {
["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
@@ -258,35 +261,40 @@ 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
@@ -294,6 +302,9 @@ return {
["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
@@ -301,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 around"] = "Продолжить сначала", -- 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

View File

@@ -11,11 +11,15 @@ 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

View File

@@ -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)

View File

@@ -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

View File

@@ -173,17 +173,17 @@ 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
-- 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 (scopes[scope].inside_table or cprev[1] == ',')
and cnext.tag == 'Keyword' and cnext[1] == '=' then
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).
@@ -199,10 +199,13 @@ function PARSE.parse_scope(lx, f, level)
else
f('Id', c[1], c.lineinfo, true)
-- this looks like the left side of (multi-variable) assignment
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)
-- 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

View File

@@ -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
@@ -790,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
@@ -1089,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
@@ -1143,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

View File

@@ -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
----------------------------------------------------------------------

View File

@@ -19,7 +19,7 @@ end)("os")
local mobdebug = {
_NAME = "mobdebug",
_VERSION = 0.62,
_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
@@ -573,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
@@ -648,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
@@ -916,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
@@ -945,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,
@@ -1081,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))
@@ -1174,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
@@ -1204,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
@@ -1508,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
@@ -1547,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
@@ -1601,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

View File

@@ -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
@@ -38,7 +40,10 @@ local events = {
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,

View File

@@ -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

View File

@@ -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
@@ -160,6 +164,10 @@ 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{}","")
@@ -189,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
@@ -253,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
@@ -262,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

View File

@@ -3,8 +3,6 @@
---------------------------------------------------------
local ide = ide
local statusBar = ide.frame.statusBar
local q = EscapeMagic
-- api loading depends on Lua interpreter
@@ -226,7 +224,7 @@ local function resolveAssign(editor,tx)
local c
if (assigns) then
-- find assign
local change, n, stopat = true, 0, os.clock() + 0.2
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
@@ -255,6 +253,9 @@ 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
@@ -415,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
@@ -526,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*$")
@@ -541,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)
@@ -599,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)
@@ -612,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)
@@ -660,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

View File

@@ -3,12 +3,16 @@
local maxlines = 8
local row_height = 46
local row_width = 450
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
@@ -259,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)
@@ -313,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

View File

@@ -61,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
@@ -132,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
@@ -270,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
@@ -430,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
@@ -449,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)
@@ -555,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
@@ -773,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, ...)
@@ -831,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
@@ -920,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
@@ -964,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(
@@ -999,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)

View File

@@ -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,6 +200,8 @@ 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
@@ -217,6 +223,15 @@ local function updateWatches(item)
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
@@ -747,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
@@ -762,7 +774,6 @@ 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
@@ -878,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)
@@ -894,7 +906,6 @@ do
activateDocument(file, line)
end
end
debugger.activate = nil
end
end
end
@@ -959,7 +970,14 @@ 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
@@ -1068,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())
@@ -1228,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,
@@ -1237,12 +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)

View File

@@ -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
@@ -236,17 +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
-- remove all spaces that may be left if "foo" removed from "foo foo"
userList = (userList:gsub("%f[%w_]"..lt..right.."%f[%W]","")
:gsub("^ +",""):gsub(" +$",""):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()
@@ -412,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
@@ -573,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)
@@ -634,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
@@ -661,6 +659,7 @@ function CreateEditor(bare)
editor.matchon = false
editor.assignscache = false
editor.bom = false
editor.updated = 0
editor.jumpstack = {}
editor.ctrlcache = {}
editor.tokenlist = {}
@@ -693,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
@@ -728,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)
@@ -840,6 +839,10 @@ 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
@@ -848,7 +851,13 @@ function CreateEditor(bare)
SetAutoRecoveryMark()
local linesChanged = inserted and event:GetLinesAdded() or 0
table.insert(editor.ev, {pos, 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
@@ -1002,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
@@ -1027,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()
@@ -1042,8 +1073,9 @@ 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)
@@ -1085,6 +1117,14 @@ 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
@@ -1113,12 +1153,14 @@ function CreateEditor(bare)
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())
@@ -1260,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(
@@ -1311,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()
@@ -1354,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])
@@ -1380,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

View File

@@ -263,9 +263,10 @@ local function treeSetConnectorsAndIcons(tree)
local empty = ""
local function renameItem(itemsrc, target)
local isdir = tree:IsDirectory(itemsrc)
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;
@@ -287,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))
@@ -311,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
@@ -321,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)
@@ -333,6 +338,13 @@ 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)
@@ -359,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
@@ -580,7 +595,21 @@ local function treeSetConnectorsAndIcons(tree)
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,
@@ -637,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

View File

@@ -118,6 +118,7 @@ function findReplace:SetStatus(msg)
end
function findReplace:SetFind(text)
if not self.panel then self:createPanel() end
local ctrl = self.findCtrl
if text and ctrl then
if ctrl:GetValue() ~= text then ctrl:ChangeValue(text) end
@@ -131,8 +132,10 @@ function findReplace:GetFind(...) return self:HasText() end
function findReplace:GetFlags() return self.settings.flags end
function findReplace:SetReplace(text)
if text and self.replaceCtrl then
self.replaceCtrl:ChangeValue(text)
if not self.panel then self:createPanel() end
local ctrl = self.replaceCtrl
if text and ctrl then
if ctrl:GetValue() ~= text then ctrl:ChangeValue(text) end
return text
end
return
@@ -251,7 +254,9 @@ function findReplace:FindAll(inFileRegister)
return found
end
local indicator = {SEARCHMATCH = 5}
local indicator = {
SEARCHMATCH = ide:GetIndicator("core.searchmatch"),
}
-- returns true if replacements were done
function findReplace:Replace(fReplaceAll, resultsEditor)
@@ -497,8 +502,6 @@ function findReplace:RunInFiles(replace)
ide.config.editor.fold = true
if showaseditor then
reseditor = NewFile(resultsText)
-- set file path to avoid treating results as unsaved document
ide:GetDocument(reseditor).filePath = resultsText
else
reseditor = ide:CreateBareEditor()
reseditor:SetupKeywords("")
@@ -602,6 +605,13 @@ function findReplace:RunInFiles(replace)
local nb = showaseditor and ide:GetEditorNotebook() or nb
nb:SetPageText(nb:GetPageIndex(reseditor), previewText .. findText)
end
if not showaseditor and nb then -- show the bottom notebook if hidden
local uimgr = ide:GetUIManager()
if not uimgr:GetPane(nb):IsShown() then
uimgr:GetPane(nb):Show(true)
uimgr:Update()
end
end
self:SetStatus(TR("Searching for '%s'."):format(findText))
wx.wxSafeYield() -- allow the status to update
@@ -643,6 +653,7 @@ function findReplace:RunInFiles(replace)
self:SetStatus(not completed and TR("Cancelled by the user.")
or TR("Found %d instance.", self.occurrences):format(self.occurrences))
if completed and ide.config.search.autohide then self:Hide() end
self.oveditor:Destroy()
self.oveditor = nil
self.toolbar:UpdateWindowUI(wx.wxUPDATE_UI_FROMIDLE)
end
@@ -823,6 +834,7 @@ function findReplace:createPanel()
local replaceCtrl = wx.wxTextCtrl(ctrl, wx.wxID_ANY, replaceHintText,
wx.wxDefaultPosition, wx.wxDefaultSize,
wx.wxTE_PROCESS_ENTER + wx.wxTE_PROCESS_TAB + wx.wxBORDER_STATIC)
self.ac = {[findCtrl:GetId()] = {}, [replaceCtrl:GetId()] = {}, [scope:GetId()] = {}}
local findSizer = wx.wxBoxSizer(wx.wxHORIZONTAL)
findSizer:Add(findCtrl, 1, wx.wxLEFT + wx.wxRIGHT + wx.wxALIGN_LEFT + wx.wxEXPAND + wx.wxFIXED_MINSIZE, 1)
@@ -872,10 +884,12 @@ function findReplace:createPanel()
if not ide.config.search.autocomplete then return end
local obj = event:GetEventObject():DynamicCast('wxTextCtrl')
local ok, keycode, needac = pcall(
function() return obj.lastkeycode, obj.needautocomplete end)
obj.needautocomplete = false
if not ok or not needac or not keycode then return end
local ac = self.ac[obj:GetId()]
if not ac then return end
local keycode, needac = ac.lastkeycode, ac.needautocomplete
if needac then ac.needautocomplete = false end
if not needac or not keycode then return end
-- if the last key was Delete or Backspace, don't autocomplete
if keycode == wx.WXK_DELETE or keycode == wx.WXK_BACK then return end
@@ -904,7 +918,7 @@ function findReplace:createPanel()
end
-- don't search when used with "infiles", but still trigger autocomplete
if self.infiles or self:Find() then
event:GetEventObject():DynamicCast('wxTextCtrl').needautocomplete = true
self.ac[event:GetEventObject():DynamicCast('wxTextCtrl'):GetId()].needautocomplete = true
end
end
@@ -947,7 +961,7 @@ function findReplace:createPanel()
local taborder = {findCtrl, replaceCtrl, scope}
local function charHandle(event)
local keycode = event:GetKeyCode()
event:GetEventObject().lastkeycode = keycode
self.ac[event:GetEventObject():DynamicCast('wxTextCtrl'):GetId()].lastkeycode = keycode
if keycode == wx.WXK_ESCAPE then
self:Hide(event:ShiftDown())
elseif keycode == wx.WXK_TAB then
@@ -974,7 +988,7 @@ function findReplace:createPanel()
function(event)
event:Skip()
local ed = self:GetEditor()
if ed then
if ed and ed ~= self.oveditor then
self.backfocus = {
editor = ed,
position = (ed:GetSelectionStart() == ed:GetSelectionEnd()
@@ -993,7 +1007,7 @@ function findReplace:createPanel()
end)
replaceCtrl:Connect(wx.wxEVT_COMMAND_TEXT_ENTER, findReplaceNext)
replaceCtrl:Connect(wx.wxEVT_COMMAND_TEXT_UPDATED, function(event)
event:GetEventObject():DynamicCast('wxTextCtrl').needautocomplete = true
self.ac[event:GetEventObject():DynamicCast('wxTextCtrl'):GetId()].needautocomplete = true
end)
replaceCtrl:Connect(wx.wxEVT_CHAR, charHandle)
@@ -1100,8 +1114,6 @@ function findReplace:Hide(restorepos)
local ctrl = self.panel:FindFocus()
if not ctrl or ctrl:GetParent():GetId() ~= self.panel:GetId() then
-- if focus outside of the search panel, do nothing
elseif self:IsPreview(self.reseditor) then -- there is a preview, go there
self.reseditor:SetFocus()
elseif self.backfocus and ide:IsValidCtrl(self.backfocus.editor) then
local editor = self.backfocus.editor
-- restore original position for Shift-Esc or failed search
@@ -1109,6 +1121,8 @@ function findReplace:Hide(restorepos)
editor:GotoPos(self.backfocus.position)
end
editor:SetFocus()
elseif self:IsPreview(self.reseditor) then -- there is a preview, go there
self.reseditor:SetFocus()
end
local mgr = ide:GetUIManager()
@@ -1188,6 +1202,7 @@ local package = ide:AddPackage('core.findreplace', {
:format(fname, mismatch and "mismatch on line "..mismatch or err))
end
end
oveditor:Destroy() -- destroy the editor to release its memory
if report then editor:AppendText("\n"..report) end
editor:AppendText(("\n\nUpdated %d %s in %d %s.")
:format(

View File

@@ -44,13 +44,22 @@ 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)
@@ -76,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
@@ -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
@@ -420,8 +431,7 @@ local function createBottomNotebook(frame)
errorlog:Connect(wx.wxEVT_CONTEXT_MENU,
function (event)
errorlog:PopupMenu(
wx.wxMenu {
local menu = wx.wxMenu {
{ ID_UNDO, TR("&Undo") },
{ ID_REDO, TR("&Redo") },
{ },
@@ -432,7 +442,8 @@ 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,

View File

@@ -25,17 +25,6 @@ ID_NEWFILE = NewID()
ID_NEWDIRECTORY = NewID()
ID_RENAMEFILE = NewID()
ID_DELETEFILE = NewID()
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_SAVE = linux and NewID() or wx.wxID_SAVE
ID_SAVEAS = linux and NewID() or wx.wxID_SAVEAS
ID_SAVEALL = NewID()
@@ -143,6 +132,24 @@ 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()

View File

@@ -27,8 +27,10 @@ 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
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
@@ -43,7 +45,7 @@ function M.warnings_from_string(src, file)
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
@@ -58,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
@@ -203,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()
@@ -235,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)

View File

@@ -25,88 +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_RUNTO] = "Ctrl-Shift-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)

View File

@@ -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

View File

@@ -46,20 +46,36 @@ 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 =
-- pasting is allowed when the document is not read-only and the selection
-- (if any) has no protected text; since pasting handles protected text,
@@ -72,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
@@ -139,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.
--]]--
]==])
@@ -150,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,
@@ -218,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)

View File

@@ -71,7 +71,7 @@ local function selectInterpreter(id)
DebuggerShutdown()
ide.frame.statusBar:SetStatusText(ide.interpreter.name or "", 5)
ide:SetStatus(ide.interpreter.name or "", 4)
if changed then ReloadLuaAPI() end
end
@@ -116,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)
)
@@ -137,7 +137,7 @@ function ProjectUpdateProjectDir(projdir,skiptree)
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
return true
@@ -184,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
@@ -196,18 +197,19 @@ local function getNameToRun(skipcheck)
end
local doc = ide:GetDocument(editor)
if not doc:GetFilePath() then doc:SetModified(true) end
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(ide:GetProjectStartFile() or doc:GetFilePath())
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
@@ -275,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,
@@ -363,8 +363,7 @@ 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.running)
and (not debugger.scratchpad))
event:Enable((debugger.server ~= nil) and (not debugger.scratchpad))
end)
frame:Connect(ID_RUNTO, wx.wxEVT_COMMAND_MENU_SELECTED,
@@ -442,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)

View File

@@ -114,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,
@@ -121,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)
@@ -151,10 +157,22 @@ local function navigateTo(default, selected)
local fline, sline, tabindex = unpack(t or {})
-- 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
@@ -188,8 +206,11 @@ local function navigateTo(default, selected)
-- 3. otherwise use "text"
local file = (wx.wxGetKeyState(wx.WXK_CONTROL) and text) or sline or text
local fullPath = MergeFullPath(ide:GetProject(), file)
if not LoadFile(fullPath, preview or nil)
and not ProjectUpdateProjectDir(fullPath) then
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
end
@@ -221,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
@@ -250,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]}
@@ -275,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
@@ -283,7 +326,7 @@ local function navigateTo(default, selected)
end
end
end
elseif text and text:find(special.LINE..'(%d+)%s*$') 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
@@ -291,7 +334,7 @@ local function navigateTo(default, selected)
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
@@ -318,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
@@ -356,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

View File

@@ -2,10 +2,19 @@
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,18 +105,20 @@ 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
@@ -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
@@ -136,17 +184,25 @@ local function outlineRefresh(editor, force)
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
@@ -164,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
@@ -224,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)
@@ -244,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
@@ -282,10 +445,15 @@ ide:AddPackage('core.outline', {
local cache = caches[editor]
local fileitem = cache and cache.fileitem
local doc = ide:GetDocument(editor)
local ctrl = ide.outline.outlineCtrl
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
@@ -297,10 +465,10 @@ ide:AddPackage('core.outline', {
local cache = caches[editor]
local fileitem = cache and cache.fileitem
local ctrl = ide.outline.outlineCtrl
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
@@ -308,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()
@@ -327,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())

View File

@@ -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

View File

@@ -66,16 +66,16 @@ 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()
@@ -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,18 +157,39 @@ 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 = ide.filetree.settings.startfile[projectdir]
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(...)
@@ -291,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)
@@ -311,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
@@ -372,7 +395,7 @@ 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
@@ -386,35 +409,35 @@ function ide:GetBitmap(id, client, size)
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 (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 iconFilter(wx.wxBitmap(file), ide.config.imagetint)
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()
@@ -436,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)
@@ -463,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
@@ -485,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)
@@ -495,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):
@@ -514,7 +556,7 @@ 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
@@ -522,9 +564,17 @@ 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)

View File

@@ -25,7 +25,8 @@ ide.proto.Document = {__index = {
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 = {
@@ -33,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 = {

View File

@@ -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
@@ -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

View File

@@ -80,7 +80,7 @@ function StylesGetDefault()
-- indicators
indicator = {
fncall = {st = wxstc.wxSTC_INDIC_HIDDEN}, -- hide by default
fncall = {},
varlocal = {},
varglobal = {},
varmasking = {},
@@ -360,18 +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)))
editor:IndicatorSetStyle(5, indic.searchmatch and indic.searchmatch.st or wxstc.wxSTC_INDIC_BOX)
editor:IndicatorSetForeground(5, wx.wxColour(unpack(indic.searchmatch and indic.searchmatch.fg or {196, 0, 0})))
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

View File

@@ -3,52 +3,52 @@
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_RUNTO,
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", 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")},
[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")},
[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")},
}

View File

@@ -34,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"
@@ -49,11 +51,12 @@ ide = {
app = nil,
},
editor = {
autoactivate = false,
foldcompact = true,
checkeol = true,
saveallonrun = false,
caretline = true,
showfncall = true,
showfncall = false,
autotabs = false,
usetabs = false,
tabwidth = 2,
@@ -88,7 +91,9 @@ ide = {
mousemove = true,
},
outline = {
jumptocurrentfunction = true,
showanonymous = '~',
showcurrentfunction = true,
showflat = false,
showmethodindicator = false,
showonefile = false,
@@ -96,6 +101,9 @@ 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
@@ -104,7 +112,7 @@ ide = {
autocomplete = true,
contextlinesbefore = 2,
contextlinesafter = 2,
showaseditor = true,
showaseditor = false,
zoom = 0,
autohide = false,
},
@@ -131,6 +139,7 @@ ide = {
nodynwords = true,
ignorecase = false,
symbols = true,
droprest = true,
strategy = 2,
width = 60,
maxlength = 450,
@@ -150,13 +159,14 @@ 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
@@ -174,6 +184,7 @@ ide = {
packages = {},
apis = {},
timers = {},
onidle = {},
proto = {}, -- prototypes for various classes
@@ -384,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
@@ -401,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
@@ -467,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
@@ -478,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")
@@ -508,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)
@@ -546,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",
@@ -620,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)

View File

@@ -148,6 +148,7 @@ function FileSysGetRecursive(path, recursive, spec, opts)
local optsort = (opts or {}).sort ~= false
local optpath = (opts or {}).path ~= false
local optskipbinary = (opts or {}).skipbinary
local optondirectory = (opts or {}).ondirectory
local function spec2list(spec, list)
-- return empty list if no spec is provided
@@ -221,14 +222,15 @@ function FileSysGetRecursive(path, recursive, spec, opts)
local found, file = dir:GetFirst("*", wx.wxDIR_DIRS)
while found do
local fname = wx.wxFileName(path, file):GetFullPath()
if optfolder and ismatch(fname..sep, nil, exmasks) then
if optfolder and ismatch(fname..sep, inmasks, exmasks) then
report((optpath and fname or fname:gsub(pathpatt, ""))..sep)
end
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.
if recursive and ismatch(fname..sep, nil, exmasks)
and select(2, fname:gsub(EscapeMagic(file..sep),'')) <= 2 then
table.insert(queue, fname)
end
@@ -292,12 +294,23 @@ 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(fname, 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(fname) then return nil, "Can't read directory as file." end
@@ -305,7 +318,21 @@ function FileRead(fname, length)
local file = wx.wxFile(fname, wx.wxFile.read)
if not file:IsOpened() then return nil, wx.wxSysErrorMsg() end
local _, content = file:Read(length or wx.wxFileSize(fname))
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
@@ -342,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)
@@ -403,11 +430,11 @@ function TR(msg, count)
-- 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 then
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
@@ -490,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)

View File

@@ -88,8 +88,14 @@ 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
findReplace.panel:Hide()
findReplace:Hide()
while editor:CanUndo() do editor:Undo() end
ide:GetDocument(editor):SetModified(false)
ClosePage()

View File

@@ -96,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.')
@@ -112,6 +133,15 @@ 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

View File

@@ -2,6 +2,8 @@ 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.")
@@ -13,7 +15,10 @@ 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")
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.")

43
t/9-misc.lua Normal file
View 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()

View File

@@ -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)

Binary file not shown.

View File

@@ -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 "$@")

View File

@@ -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,