Compare commits

..

198 Commits
0.90 ... 1.00

Author SHA1 Message Date
Paul Kulchenko
41041733c4 Updated documentation for 1.00. 2015-03-13 18:09:48 -07:00
Paul Kulchenko
16257035ca Updated encoding in the image LICENSE file. 2015-03-11 17:48:13 -07:00
Paul Kulchenko
4fde42e919 Disabled field checks for local parameters in staic analyzer (closes #421). 2015-03-10 11:51:12 -07:00
Paul Kulchenko
d08ac51fee Updated Corona API for v2015.2576. 2015-03-10 09:23:00 -07:00
Paul Kulchenko
1116365a43 Removed unused variables. 2015-03-08 21:41:12 -07:00
Paul Kulchenko
9c05c8e31a Improved static analyzer to handle more cases with infervalue set (#414).
This fixes handling of `tostring(foo):rep(1)` and `(false or {}).bar()`.
2015-03-07 23:12:00 -08:00
Paul Kulchenko
3ce020c0e3 Added staticanalyzer.infervalue to enable deeper/slower analysis (#414). 2015-03-06 14:51:50 -08:00
Paul Kulchenko
27ea52e5bd Updated static analyzer output formatting. 2015-03-06 12:40:54 -08:00
Paul Kulchenko
cc598490fa Updated analyzer to also check value of pairs parameter (#414). 2015-03-06 12:08:50 -08:00
Paul Kulchenko
b361a0b6a5 Fixed analyzer to check value of ipairs parameter (fixes #414).
This takes the actual type into account instead of reporting an unknown
field.
2015-03-05 22:20:43 -08:00
Paul Kulchenko
2b4c5eafc8 Updated debugging suspended message to not trigger with runonstart.
This is to address the changes caused by 89751b43.
2015-03-04 21:53:14 -08:00
Paul Kulchenko
e910f945b5 Fixed OS detection on Linux that sets DYLD_LIBRARY_PATH (fixes #417). 2015-03-03 21:57:27 -08:00
Paul Kulchenko
7a838227c7 Fixed saving auto-recovery record with no editor tabs opened (fixes #418). 2015-03-03 21:29:16 -08:00
Paul Kulchenko
d86582ebc6 Added project path in the error reporting for love2d/corona interpreters. 2015-03-03 19:23:54 -08:00
Paul Kulchenko
d8d1fc6f67 Updated messages in interpreters to fix line endings. 2015-03-01 19:18:04 -08:00
Paul Kulchenko
0ee46ba55f Added an example with enabling Emacs bindings in the editor. 2015-02-26 09:47:27 -08:00
Paul Kulchenko
e179a63b8c Refactored use of image constants in the project tree. 2015-02-25 15:37:31 -08:00
Paul Kulchenko
0018964637 Disabled menu item for renaming/editing for mapped directories (#223). 2015-02-25 15:30:53 -08:00
Paul Kulchenko
7010d51bc7 Added Russian translations for new messages (#70). 2015-02-25 12:42:58 -08:00
Paul Kulchenko
7b09399ede Updated lettercase in menu items for consistency. 2015-02-24 22:05:12 -08:00
Paul Kulchenko
a36e746d45 Added a warning on class resolution taking too much time in auto-complete. 2015-02-23 22:23:21 -08:00
Paul Kulchenko
f7ec693b03 Fixed looping in auto-complete when processing recursive assignments. 2015-02-22 21:23:08 -08:00
Paul Kulchenko
056dd6dedf Added check for empty/comment lines when breakpoints are set. 2015-02-21 13:35:32 -08:00
Paul Kulchenko
1c8b0d1101 Removing .mailmap as it didn't help link pre-2011 commits on github. 2015-02-20 16:00:56 -08:00
Paul Kulchenko
bc5d2eed97 Updated CHANGELOG with recent changes. 2015-02-19 19:19:44 -08:00
Paul Kulchenko
35692e3f00 Added directory mapping to the project tree (closes #223). 2015-02-18 13:27:33 -08:00
Paul Kulchenko
bb06087881 Removed obsolete event handler. 2015-02-17 20:50:35 -08:00
Paul Kulchenko
9442292c0f Updated UpdateUI handling to fix multi-view refresh, as in DocumentMap (#352). 2015-02-16 20:18:12 -08:00
Paul Kulchenko
b1eba7ff3c Added Run to Cursor (closes #413). 2015-02-16 16:12:31 -08:00
Paul Kulchenko
d69a3724ac Fixed filename used in the recovery message. 2015-02-15 21:49:35 -08:00
Paul Kulchenko
353fa0dff5 Fixed typo in a comment. 2015-02-15 21:48:59 -08:00
Paul Kulchenko
af241fffe7 Refactored document modification tracking to remove SetDocumentModified. 2015-02-15 21:48:15 -08:00
Paul Kulchenko
227db9a10f Updated Outline to use editor tab text (instead of a file name).
This is to improve integration with packages that modify tab text,
like `uniquetabname` plugin.

Closes pkulchenko/ZeroBranePackage#11.
2015-02-14 21:36:15 -08:00
Paul Kulchenko
2cf79f22a8 Added document method GetTabText (#166). 2015-02-14 21:29:11 -08:00
Paul Kulchenko
798a31a64f Updated message on failure to start debugging to add the file name. 2015-02-13 21:30:55 -08:00
Paul Kulchenko
59a90c7030 Fixed Output/Console window to stay shown after failure to start debugging. 2015-02-13 21:29:48 -08:00
Paul Kulchenko
ee1a4a5752 Added showing love2d console when requested. 2015-02-11 11:13:17 -08:00
Paul Kulchenko
01ef664895 Added support to set/unset start file for a project (closes #411). 2015-02-09 12:21:22 -08:00
Paul Kulchenko
2f339302d1 Updated debugging suspended message to put location in quotes. 2015-02-09 11:53:13 -08:00
Paul Kulchenko
aaf7723014 Added requesting attention for debugger even when the file is not activated. 2015-02-09 11:48:09 -08:00
Paul Kulchenko
89751b430d Added reporting of location in more cases when debugging is suspended. 2015-02-09 11:46:19 -08:00
Paul Kulchenko
b9de69d4e9 Added starting debugging even when the file is not opened in the IDE. 2015-02-08 17:49:25 -08:00
Paul Kulchenko
b4c7d6deaa Fixed auto-complete for non-default acandtip.strategy values (fixed #409). 2015-02-08 16:05:10 -08:00
Paul Kulchenko
71667d2912 Fixed loading file with absolute name and line number (fixes #408).
This was broken by the change in 2ee9599 that was made to avoid delay when
relative filename with a line number looked like a network path (Windows).
2015-02-06 10:03:23 -08:00
Paul Kulchenko
fa704f5e2c Merge branch 'master' of http://git.code.sf.net/p/estrelaeditor/code 2015-02-05 18:27:53 -08:00
Paul Kulchenko
967a7fb8ad Added switching project directory from the command bar (#31). 2015-02-05 12:25:34 -08:00
Paul Kulchenko
3e7fb7f8b8 Added trimming of trailing spaces in the directory name when switching projects. 2015-02-05 12:24:25 -08:00
Paul Kulchenko
3e0abc6953 Added closing preview if the file failed to load in commandbar (#31). 2015-02-05 11:31:21 -08:00
Paul Kulchenko
216a1e5350 Refactored path normalization for project directory. 2015-02-05 11:11:30 -08:00
Paul Kulchenko
ea3c98c65f Added handling of Ctrl/Cmd-Enter in commandbar to force open file (#31). 2015-02-04 11:36:44 -08:00
Paul Kulchenko
fb1c754532 Added skipping loading files with empty and directory names. 2015-02-04 11:30:02 -08:00
Paul Kulchenko
3585de0f21 Updated tests to use current API. 2015-02-04 11:29:20 -08:00
Paul Kulchenko
3bd4fc0305 Updated line check in command bar to not trigger on Windows file names. 2015-02-04 11:08:13 -08:00
Paul Kulchenko
0e355074cd Added trimming of trailing spaces in the file name when loading a file. 2015-02-04 11:06:33 -08:00
Paul Kulchenko
7e6249ef3f Added file selection in the project tree after saving a new file. 2015-02-03 20:59:59 -08:00
Paul Kulchenko
af2a000af1 Added opening/creating file from the command bar (#31). 2015-02-03 20:31:52 -08:00
Paul Kulchenko
1a9efa6e5b Fixed an issue with search initiated from Output/Console panels (fixes #406). 2015-02-02 15:33:58 -08:00
Christoph Kubisch
dd97978d56 updated glewgl api (glew 1.12.0) 2015-02-01 18:33:20 +01:00
Paul Kulchenko
81aaaef538 Updated documentation for 0.95. 2015-01-30 10:29:54 -08:00
Paul Kulchenko
205c71fcf9 Added showing/hiding Output/Console panel during debugging. 2015-01-29 15:49:02 -08:00
Paul Kulchenko
3ea892018f Updated CHANGELOG with recent changes. 2015-01-28 14:34:29 -08:00
Paul Kulchenko
6c14118f32 Upgraded Mobdebug to 0.613 to improve Lua 5.3 compatibility (#401); thanks to @andrewstarks. 2015-01-26 17:31:12 -08:00
Paul Kulchenko
824cbdfec5 Added bordersize to configure sash size.
This is useful on large resolution screens where it may be difficult to
position mouse over a thin border.
2015-01-22 22:15:52 -08:00
Paul Kulchenko
67e2a71e63 Added package LoadFile method (#166). 2015-01-21 20:08:02 -08:00
Paul Kulchenko
49e1e86457 Merge branch 'master' of https://github.com/Fringale/ZeroBraneStudio into update-fr 2015-01-19 15:32:14 -08:00
Paul Kulchenko
9525511b61 Updated usage instructions in README. 2015-01-19 14:44:53 -08:00
Alexis Jarreau
51ce63c256 Update French translation with latest strings, plus some minor tweaks and consistency fixes 2015-01-19 23:29:24 +01:00
Evandro Costa
58ba572e21 Update pt-br.lua 2015-01-19 19:16:06 -02:00
Evandro Costa
bf6352936b Update pt-br.lua 2015-01-19 19:12:49 -02:00
Leo Bartoloni
3100e1022d updated italian translation
updated italian translation
2015-01-16 14:36:38 +01:00
riidom
2ea70b6d4b Update de.lua 2015-01-16 06:31:05 +01:00
Paul Kulchenko
a6501ffb44 Added Russian translation for new messages (#70). 2015-01-15 20:23:50 -08:00
Paul Kulchenko
519ed0bd3a Removed menu undeline from some updated items for consistency (#70). 2015-01-15 20:22:01 -08:00
Paul Kulchenko
974726dac9 Updated language files with new messages (#70). 2015-01-15 19:44:49 -08:00
Paul Kulchenko
efc0b277fe Fixed translation of a message in pt-br (#70, #389). 2015-01-15 19:42:37 -08:00
Paul Kulchenko
23d1e03dde Updated language files for Go to line messages (#70). 2015-01-15 19:37:00 -08:00
Paul Kulchenko
9d07d80b5b Enabled html and C/cpp specs by default (#395). 2015-01-13 12:16:23 -08:00
Paul Kulchenko
1829e78d05 Fixed find-and-replace to replace in already selected fragment if matched. 2015-01-12 22:51:42 -08:00
Paul Kulchenko
a71df9a2ac Updated case in the name of a local function. 2015-01-12 22:51:11 -08:00
Paul Kulchenko
62f72a7daa Update API descriptions with functions new in Lua 5.3. 2015-01-11 14:55:55 -08:00
Paul Kulchenko
2601c3f562 Added syntax highlighting for functions new in Lua 5.3. 2015-01-10 11:22:59 -08:00
Paul Kulchenko
1f7f96b8fd Fixed incorrect getfenv reference in Lua API. 2015-01-09 12:19:04 -08:00
Paul Kulchenko
e142566496 Updated loose parser to support Lua 5.2+ labels. 2015-01-09 11:35:38 -08:00
Paul Kulchenko
9824a1290f Updated loose parser to support goto and Lua 5.3 bitops. 2015-01-09 11:10:05 -08:00
Paul Kulchenko
a5d244f594 Updated Metalua to support Lua 5.3 bitops. 2015-01-09 10:17:47 -08:00
Paul Kulchenko
3b119a0efa Updated Metalua to support goto/labels in static analysis for Lua 5.2/5.3. 2015-01-08 10:49:33 -08:00
Paul Kulchenko
c9898f7839 Added commandbar.prefilter to commandbar to improve performance (#31). 2015-01-08 10:44:09 -08:00
Paul Kulchenko
5ed5032c94 Added custom formatting for APIs. 2015-01-07 21:05:19 -08:00
Paul Kulchenko
96c3f838d6 Added Insert Library Function to Navigate menu. 2015-01-07 15:41:49 -08:00
Paul Kulchenko
707c0d8f64 Added hiding tooltip/auto-complete popup after undo/redo/delete operations. 2015-01-06 17:50:59 -08:00
Paul Kulchenko
367a7abadb Improved handling of complex types in LDoc expressions in auto-complete. 2015-01-05 19:22:09 -08:00
Paul Kulchenko
076a48c378 Added api handling to the config to support custom APIs. 2015-01-04 22:19:18 -08:00
Paul Kulchenko
5cffb33c25 Removed wxwidgets from the list of default APIs for Lua interpreters. 2015-01-04 22:17:43 -08:00
Paul Kulchenko
9107b369f9 Improved failed search 'shake' visualization by forcing window redraw. 2015-01-03 21:34:55 -08:00
Paul Kulchenko
a721217996 Refactored handling of special symbols in commandbar (#31). 2015-01-03 17:31:49 -08:00
Paul Kulchenko
09599f8b7b Added Lapis and Moonscript debugging links to README. 2015-01-02 18:03:52 -08:00
Paul Kulchenko
c65d14f759 Added Contributing section to README. 2015-01-02 15:34:55 -08:00
Paul Kulchenko
9aa0bf200f Added LICENSE link to README. 2015-01-02 15:34:36 -08:00
Paul Kulchenko
4fb73d0eef Added Lua 5.3 links to README; updated links to remove '.html'. 2015-01-02 15:30:08 -08:00
Paul Kulchenko
9bbf4308d5 Added PgUp and PgDn navigation for commandbar (#31). 2015-01-01 18:12:48 -08:00
Paul Kulchenko
e1d6f594d5 Disabled commandbar navigation when any of the modifiers are pressed (#31). 2015-01-01 17:56:58 -08:00
Paul Kulchenko
b609038b3f Merge branch 'master' of https://github.com/evandro-costa/ZeroBraneStudio 2015-01-01 17:33:26 -08:00
Evandro Costa
79e7695af4 Update pt-br.lua 2015-01-01 23:10:14 -02:00
Evandro Costa
fef069abd9 Update pt-br.lua 2014-12-29 20:15:00 -02:00
Paul Kulchenko
e1195631f4 Added auto-complete support for LDoc '@tparam' and '@param[type=...]'. 2014-12-27 16:49:14 -08:00
Paul Kulchenko
63b018c321 Fixed localization on a function used in auto-complete. 2014-12-27 16:47:35 -08:00
Paul Kulchenko
9f2f1a1b9b Fixed fuzzy search tests. 2014-12-27 16:06:08 -08:00
Paul Kulchenko
8170111c9b Fixed search navigation to shift horizontally when usewrap is off. 2014-12-26 20:45:44 -08:00
Estudiiio
812000751e Brazilian Portuguese (pt-br) translation 2014-12-26 21:23:09 -02:00
Paul Kulchenko
8e59efb236 Upgraded Mobdebug (v0.611) to fix tooltips during Corona debugging (closes #387). 2014-12-25 10:46:21 -08:00
Paul Kulchenko
3b7b0891d9 Fixed variable localization. 2014-12-24 21:36:17 -08:00
Paul Kulchenko
e9b97650f3 Fixed indentation for lines with mixed string separators (#324, #388). 2014-12-24 21:35:43 -08:00
Paul Kulchenko
661ecf094e Fixed indentation for lines with escaped slashes (#324, closes #388). 2014-12-24 09:05:07 -08:00
Paul Kulchenko
f3d6188756 Added showing the symbol under cursor in Go To Symbol (#385). 2014-12-13 12:24:48 -08:00
Paul Kulchenko
eeb44e6ba5 Updated CommandBarShow to accept text fragment to select (#31). 2014-12-12 22:11:32 -08:00
Paul Kulchenko
c8fa7b77ac Added editor:ValueFromPosition method (#166). 2014-12-12 21:55:34 -08:00
Paul Kulchenko
3d54e08bee Fixed handling of duplicate symbols in Go To Symbol (#385). 2014-12-11 12:42:15 -08:00
Paul Kulchenko
43b90458d9 Added shortcut for Go To Symbol (#385). 2014-12-11 09:30:41 -08:00
Paul Kulchenko
be331ca054 Updated commandbar to avoid cache collisions (#31). 2014-12-10 21:41:55 -08:00
Paul Kulchenko
c57ad47a0e Added closing preview in commandbar when not needed (#31). 2014-12-10 21:27:43 -08:00
Paul Kulchenko
be298b0741 Added content of the line to Go To Symbol (#385). 2014-12-10 20:52:30 -08:00
Paul Kulchenko
0d4cd7821c Added navigation for duplicate symbols to Go To Symbol (#385). 2014-12-10 20:52:29 -08:00
Paul Kulchenko
e3d16402c1 Added menu item for Go To Symbol (#385). 2014-12-10 20:52:28 -08:00
Paul Kulchenko
ad044c9cc9 Added Go To Symbol support to the commandbar (#31, closes #385). 2014-12-10 20:52:19 -08:00
Paul Kulchenko
ce53c92e32 Updated commandbar menu items (#31). 2014-12-09 18:49:58 -08:00
Paul Kulchenko
4a58901580 Allowed renaming of files with different case in the project tree. 2014-12-07 19:40:26 -08:00
Paul Kulchenko
e0cbd25254 Renamed commandbar scoring function to be more generic (#31). 2014-12-06 23:02:43 -08:00
Paul Kulchenko
aacb686b55 Removed misleading comment. 2014-12-06 12:56:36 -08:00
Paul Kulchenko
38c466c839 Added update of file name in the Outline when editor tab is updated (#337). 2014-12-05 20:16:57 -08:00
Paul Kulchenko
64789b868d Fixed refresh of files in command bar preview when selected (#31). 2014-12-05 17:40:08 -08:00
Paul Kulchenko
9914cf9943 Updated parser to avoid splitting foo.bar in incremental processing. 2014-12-05 10:16:12 -08:00
Paul Kulchenko
9970e8194c Fixed recovery of empty (untitled) tabs. 2014-12-04 13:37:55 -08:00
Paul Kulchenko
93545f7b8e Added check for styles being reset in the config file (closes #383). 2014-12-04 09:40:48 -08:00
Paul Kulchenko
cf5c468267 Updated links in CONTRIBUTING documentation. 2014-12-03 21:32:14 -08:00
Paul Kulchenko
c7a4967bde Added loading file from project directory with "proj file" on command line. 2014-12-03 21:32:13 -08:00
Paul Kulchenko
2ee9599863 Improved command line file check for relative files on Windows.
Loading `file:10` was interpreted as network share for non-existing files.
2014-12-03 21:32:01 -08:00
Paul Kulchenko
bcc0d50562 Fixed an auto-complete issue after repeat until <var>. 2014-12-03 09:36:14 -08:00
Paul Kulchenko
d6593abda4 Split console output into shorter lines to improve memory usage and handling. 2014-12-03 09:36:03 -08:00
Paul Kulchenko
395fb2ee48 Renamed debugger.stackmax* settings to debugger.maxdata*. 2014-12-02 21:13:46 -08:00
Paul Kulchenko
0f98d10af1 Removed double check for invalid UTF-8 output in console. 2014-12-02 21:09:09 -08:00
Paul Kulchenko
7b35439f4b Fixed setting focus to the editor in commandbar with one tab (#31). 2014-12-02 14:51:16 -08:00
Paul Kulchenko
7c5a63d97e Added skipping of binary files in commandbar preview (#31). 2014-12-01 15:08:58 -08:00
Paul Kulchenko
a91ea001f2 Updated GetKnownExtensions to accept an optional extension to match against. 2014-12-01 15:07:31 -08:00
Paul Kulchenko
29b9da14a1 Updated FileRead to accept optional length. 2014-12-01 15:06:55 -08:00
Paul Kulchenko
c26e2f5f73 Added CONTRIBUTING file. 2014-11-29 00:04:46 -08:00
Paul Kulchenko
c2f2e2094a Added .mailmap to link pre-2011 commits. 2014-11-27 22:30:03 -08:00
Paul Kulchenko
6f974cc680 Added clearing Output window before showing Find-in-Files results. 2014-11-26 11:34:59 -08:00
Paul Kulchenko
223adbc385 Refactored logic to clear Output window. 2014-11-26 11:29:25 -08:00
Paul Kulchenko
931bd8173f Added default values for Outline config settings (#337). 2014-11-25 20:32:06 -08:00
Paul Kulchenko
d68de22496 Updated layout settings to use constants and new package API. 2014-11-25 20:31:08 -08:00
Paul Kulchenko
51a539ae78 Added package GetProjectNotebook method (#166). 2014-11-25 19:20:21 -08:00
Paul Kulchenko
7c1b8c70c7 Added saving Outline tab configuration in the Project notebook (#337). 2014-11-25 19:03:58 -08:00
Paul Kulchenko
3bf164c109 Upgraded MobDebug (0.61) to add basedir support. 2014-11-25 19:03:57 -08:00
Paul Kulchenko
42d9da815a Added outline.sort option to sort items in the outline (#337). 2014-11-25 19:03:56 -08:00
Paul Kulchenko
36fbb1ca96 Added outline.showflat option to show flat outline (#337). 2014-11-25 19:03:55 -08:00
Paul Kulchenko
320fa6e89f Refactored ID handling to allow using ID.COMMENT in config files. 2014-11-25 19:03:54 -08:00
Paul Kulchenko
bc78623d53 Renamed project tree component internally for consistency. 2014-11-25 19:03:53 -08:00
Paul Kulchenko
b171da7620 Added package GetOutlineTree method (#166). 2014-11-25 19:03:51 -08:00
Paul Kulchenko
fd00ee6ee1 Replaced table.insert with faster t[ind] in commandbar processing. 2014-11-25 19:03:50 -08:00
Ard van Breemen
e9f4b654e8 Add support for armhf architecture 2014-11-25 23:55:19 +01:00
Paul Kulchenko
0be23569f9 Added document Save method (#166). 2014-11-22 20:53:51 -08:00
Paul Kulchenko
5504029af6 Updated status refresh to only happen for the active editor. 2014-11-22 20:52:59 -08:00
Paul Kulchenko
fb53b619b0 Added init.lua to the search path (fixes require 'dist'). 2014-11-21 14:15:00 -08:00
Paul Kulchenko
6ccc47c5c4 Added forced garbage collection when switching from the app. 2014-11-20 23:12:56 -08:00
Paul Kulchenko
88572edfad Reduced the number of displayed matches in commandbar to limit memory (#31). 2014-11-18 20:05:36 -08:00
Paul Kulchenko
9f8d5ae06c Reduced caching in commandbar to conserve memory (#31). 2014-11-18 19:55:27 -08:00
Paul Kulchenko
9b26cec444 Updated toolbar UI checks to happen when running/debugging (#352). 2014-11-18 19:20:09 -08:00
Paul Kulchenko
db77afc787 Added penalty for missing characters in fuzzy search (#31). 2014-11-18 11:09:03 -08:00
Paul Kulchenko
71e78c3595 Fixed Lua 5.2 compatibility in commandbar code (#31). 2014-11-18 10:04:55 -08:00
Paul Kulchenko
ce6a740530 Improved uppercase matching in fuzzy search (#31). 2014-11-18 10:04:46 -08:00
Paul Kulchenko
23445bb2b9 Merge branch 'command-bar' 2014-11-17 15:29:12 -08:00
Paul Kulchenko
0dac8a221f Updated line caching logic to fix commandbar redrawing on OSX (#31). 2014-11-17 14:48:35 -08:00
Paul Kulchenko
bcc17ca3ad Fixed preview redrawing in commandbar on Linux (#31). 2014-11-17 14:02:26 -08:00
Paul Kulchenko
5b882697c4 Increased font size in commandbar (#31). 2014-11-17 13:40:04 -08:00
Paul Kulchenko
85043df0f6 Decreased penalty for case mismatch in fuzzy search (#31). 2014-11-17 13:39:42 -08:00
Paul Kulchenko
d2a12c55e7 Moved commandbar/Navigate menu to Search (#31). 2014-11-17 13:38:43 -08:00
Paul Kulchenko
c66fc390b6 Added line navigation to Navigate menu (#31). 2014-11-17 12:12:29 -08:00
Paul Kulchenko
0ea7b9f281 Updated command bar preview to work with line number navigation (#31). 2014-11-17 12:09:56 -08:00
Paul Kulchenko
02dff1e588 Added handling of line numbers in command bar (#31). 2014-11-17 12:01:32 -08:00
Paul Kulchenko
4acb113ab3 Updated based on static analysis results. 2014-11-17 09:16:34 -08:00
Paul Kulchenko
5f872039af Added caching to improve commandbar performance on large folders (#31). 2014-11-16 22:39:55 -08:00
Paul Kulchenko
66ae840e66 Updated fuzzy matching to better work with short file names (#31). 2014-11-16 20:04:59 -08:00
Paul Kulchenko
5441950fc7 Removed unused parameters in commandbar handling (#31). 2014-11-15 21:06:51 -08:00
Paul Kulchenko
5a312dee65 Fixed commandbar positioning on OSX/Linux (#31). 2014-11-15 13:25:28 -08:00
Paul Kulchenko
1bbf76d339 Updated commandbar to show relative file names (#31). 2014-11-15 13:25:28 -08:00
Paul Kulchenko
cf4e4a9edd Added setting explicit focus on preview tab in commandbar (#31).
This is to fix a strange issue with the cursor in the text control on the
commandbar being in the wrong location (on Windows).
2014-11-15 13:25:27 -08:00
Paul Kulchenko
e0ab26cb2b Disabled notebook 'freezing' in commandbar on OSX (#31). 2014-11-15 13:25:26 -08:00
Paul Kulchenko
1ead741fe2 Fixed mouse selection in commandbar on Linux (#31). 2014-11-15 13:25:25 -08:00
Paul Kulchenko
62bcc65337 Added preview on first selection in commandbar (#31). 2014-11-15 13:25:24 -08:00
Paul Kulchenko
fde1a8998f Added file preview to commandbar (#31). 2014-11-15 13:25:23 -08:00
Paul Kulchenko
7ab528edd7 Added fuzzy search for files in commandbar (closes #31). 2014-11-15 13:25:22 -08:00
Paul Kulchenko
9f59dd5542 Added displaying the list of current tabs for commandbar (#31). 2014-11-15 13:25:21 -08:00
Paul Kulchenko
ff136b025f Added commandbar prototype for file navigation (#31).
Added using editor color settings for the command bar.
Added positioning for the command bar.
Added lines between rows in the command bar.
Added a panel to serve as frame substitute on OSX/Linux.
Updated commandbar colors to match the rest of the colors.
Updated commandbar to use a different type of sizer.
Fixed separators between commandbar lines.
Updated commandbar to use different handling on OSX/Linux than on Win.
  wxTextCtrl in wxFrame doesn't get focus on OSX and Linux; seems to be a
  known wxwidgets issue: http://trac.wxwidgets.org/ticket/11948.
  The workaround is to use wxPanel instead of wxFrame, but it requires
  a bit different handling and positioning.
Added restoring focus after change in selection.
Updated commandbar fonts to use editor settings.
Updated commandbar fonts and separators.
Set commandbar selection to 'none' by default.
Removed logging messages from commandbar processing.
2014-11-15 13:22:10 -08:00
Paul Kulchenko
8e49682ea0 Added reset of tokens when editor content is reloaded (#337). 2014-11-14 17:04:39 -08:00
Paul Kulchenko
be4c0d646a Updated Corona integration to hide console on OSX (2014.2393+). 2014-11-14 09:49:17 -08:00
Paul Kulchenko
9960b046f9 Fixed auto-complete after text not separated by a whitespace or bracket. 2014-11-12 16:16:40 -08:00
Paul Kulchenko
5d86cc51bc Removed border from tree controls (#305). 2014-11-12 15:45:41 -08:00
Paul Kulchenko
03c0677789 Fixed an error when disabling outline by setting outlineinactivity=nil. 2014-11-12 15:40:20 -08:00
67 changed files with 3391 additions and 1391 deletions

View File

@@ -1,5 +1,183 @@
# ZeroBrane Studio Changelog
## v1.00 (Mar 13 2015)
### Highlights
- Added directory mapping to the project tree (closes #223).
- Added `Run to Cursor` (closes #413).
- Added support to set/unset start file for a project (closes #411).
- Added opening/creating file from the command bar (#31).
- Added `staticanalyzer.infervalue` to enable deeper/slower analysis (#414).
- Updated Corona API for v2015.2576.
### Improvements
- Added `staticanalyzer.infervalue` to enable deeper/slower analysis (#414).
- Added project path in the error reporting for love2d/corona interpreters.
- Added an example with enabling Emacs bindings in the editor.
- Added Russian translations for new messages (#70).
- Added a warning on class resolution taking too much time in auto-complete.
- Added check for empty/comment lines when breakpoints are set.
- Added directory mapping to the project tree (closes #223).
- Added `Run to Cursor` (closes #413).
- Added document method `GetTabText` (#166).
- Added showing love2d console when requested.
- Added support to set/unset start file for a project (closes #411).
- Added requesting attention for debugger even when the file is not activated.
- Added reporting of location in more cases when debugging is suspended.
- Added starting debugging even when the file is not opened in the IDE.
- Added switching project directory from the command bar (#31).
- Added trimming of trailing spaces in the directory name when switching projects.
- Added closing preview if the file failed to load in commandbar (#31).
- Added handling of `Ctrl/Cmd-Enter` in commandbar to force open file (#31).
- Added skipping loading files with empty and directory names.
- Added trimming of trailing spaces in the file name when loading a file.
- Added file selection in the project tree after saving a new file.
- Added opening/creating file from the command bar (#31).
- Disabled menu item for renaming/editing for mapped directories (#223).
- Disabled field checks for local parameters in staic analyzer (closes #421).
- Improved static analyzer to handle more cases with `infervalue` set (#414).
- Refactored use of image constants in the project tree.
- Refactored document modification tracking to remove `SetDocumentModified`.
- Refactored path normalization for project directory.
- Updated Corona API for v2015.2576.
- Updated static analyzer output formatting.
- Updated analyzer to also check value of `pairs` parameter (#414).
- Updated `debugging suspended` message to not trigger with `runonstart`.
- Updated messages in interpreters to fix line endings.
- Updated lettercase in menu items for consistency.
- Updated UpdateUI handling to fix multi-view refresh, as in DocumentMap (#352).
- Updated Outline to use editor tab text (instead of a file name).
- Updated message on failure to start debugging to add the file name.
- Updated `debugging suspended` message to put location in quotes.
- Updated line check in command bar to not trigger on Windows file names.
- updated glewgl api (glew 1.12.0)
### Fixes
- Fixed analyzer to check value of `ipairs` parameter (fixes #414).
- Fixed OS detection on Linux that sets `DYLD_LIBRARY_PATH` (fixes #417).
- Fixed saving auto-recovery record with no editor tabs opened (fixes #418).
- Fixed looping in auto-complete when processing recursive assignments.
- Fixed filename used in the recovery message.
- Fixed Output/Console window to stay shown after failure to start debugging.
- Fixed an issue with search initiated from Output/Console panels (fixes #406).
- Fixed auto-complete for non-default `acandtip.strategy` values (fixed #409).
- Fixed loading file with absolute name and line number (fixes #408).
## v0.95 (Jan 30 2015)
### Highlights
- Added fuzzy search with `Go To File`, `Go To Symbol`, `Go To Line`, and `Insert Library Function`.
- Added auto-complete support for LDoc '@tparam' and '@param[type=...]'.
- Added armhf architecture support (thanks to Ard van Breemen).
- Updated static analyzer to support `goto`/labels and bitops for Lua 5.2/5.3.
- Updated internal parser to support Lua 5.2/5.3 syntax.
- Updated Mobdebug to improve Lua 5.3 compatibility (thanks to Andrew Starks).
- Update API descriptions with functions new in Lua 5.3.
### Special thanks
- To [Ard van Breemen](https://github.com/ardje) for armhf architecture support.
- To [Evandro Costa](https://github.com/evandro-costa) for Brazilian Portuguese (pt-br) translation.
- To [Andrew Starks](https://github.com/andrewstarks) for Lua 5.3 compatibility improvements.
- To [Alexis Jarreau](https://github.com/Fringale) for French translation update.
- To [Leo Bartoloni](https://github.com/bartoleo) for Italian translation update.
- To [riidom](https://github.com/riidom) for German translation update.
### Improvements
- Added showing/hiding Output/Console panel during debugging.
- Added `bordersize` to configure sash size.
- Added package `LoadFile` method (#166).
- Added Russian translation for new messages (#70).
- Added syntax highlighting for functions new in Lua 5.3.
- Added `commandbar.prefilter` to commandbar to improve performance (#31).
- Added custom formatting for APIs.
- Added `Insert Library Function` to `Navigate` menu.
- Added hiding tooltip/auto-complete popup after undo/redo/delete operations.
- Added `api` handling to the config to support custom APIs.
- Added Lapis and Moonscript debugging links to README.
- Added `Contributing` section to README.
- Added LICENSE link to README.
- Added Lua 5.3 links to README; updated links to remove '.html'.
- Added `PgUp` and `PgDn` navigation for commandbar (#31).
- Added auto-complete support for LDoc '@tparam' and '@param[type=...]'.
- Added Brazilian Portuguese (pt-br) translation.
- Added showing the symbol under cursor in `Go To Symbol` (#385).
- Added `editor:ValueFromPosition` method (#166).
- Added `Go To Symbol` support to the commandbar (#31, closes #385).
- Allowed renaming of files with different case in the project tree.
- Added update of file name in the Outline when editor tab is updated (#337).
- Added check for `styles` being reset in the config file (closes #383).
- Added loading file from project directory with "proj file" on command line.
- Added skipping of binary files in commandbar preview (#31).
- Added CONTRIBUTING file.
- Added clearing Output window before showing Find-in-Files results.
- Added default values for Outline config settings (#337).
- Added package `GetProjectNotebook` method (#166).
- Added saving Outline tab configuration in the Project notebook (#337).
- Added `outline.sort` option to sort items in the outline (#337).
- Added `outline.showflat` option to show flat outline (#337).
- Added package `GetOutlineTree` method (#166).
- Add support for armhf architecture
- Added document `Save` method (#166).
- Added `init.lua` to the search path (fixes `require 'dist'`).
- Added forced garbage collection when switching from the app.
- Added penalty for missing characters in fuzzy search (#31).
- Added line navigation to `Navigate` menu (#31).
- Added handling of line numbers in command bar (#31).
- Added caching to improve commandbar performance on large folders (#31).
- Added setting explicit focus on preview tab in commandbar (#31).
- Added preview on first selection in commandbar (#31).
- Added file preview to commandbar (#31).
- Added fuzzy search for files in commandbar (closes #31).
- Added displaying the list of current tabs for commandbar (#31).
- Added commandbar prototype for file navigation (#31).
- Added reset of tokens when editor content is reloaded (#337).
- Enabled html and C/cpp specs by default (#395).
- Improved handling of complex types in LDoc expressions in auto-complete.
- Improved failed search 'shake' visualization by forcing window redraw.
- Improved command line file check for relative files on Windows.
- Split console output into shorter lines to improve memory usage and handling.
- Renamed `debugger.stackmax*` settings to `debugger.maxdata*`.
- Removed double check for invalid UTF-8 output in console.
- Refactored ID handling to allow using `ID.COMMENT` in config files.
- Removed `wxwidgets` from the list of default APIs for Lua interpreters.
- Refactored handling of special symbols in commandbar (#31).
- Removed border from tree controls (#305).
- Updated language files with new messages (#70).
- Update API descriptions with functions new in Lua 5.3.
- Updated loose parser to support Lua 5.2+ labels.
- Updated loose parser to support `goto` and Lua 5.3 bitops.
- Updated Metalua to support Lua 5.3 bitops.
- Updated Metalua to support `goto`/labels in static analysis for Lua 5.2/5.3.
- Upgraded Mobdebug (v0.611) to fix tooltips during Corona debugging (closes #387).
- Updated `CommandBarShow` to accept text fragment to select (#31).
- Updated `GetKnownExtensions` to accept an optional extension to match against.
- Updated `FileRead` to accept optional length.
- Updated layout settings to use constants and new package API.
- Updated parser to avoid splitting `foo.bar` in incremental processing.
- Upgraded MobDebug (0.61) to add `basedir` support.
- Updated status refresh to only happen for the active editor.
- Updated toolbar UI checks to happen when running/debugging (#352).
- Updated Corona integration to hide console on OSX (2014.2393+).
- Upgraded Mobdebug to 0.613 to improve Lua 5.3 compatibility (#401); thanks to @andrewstarks.
- Updated usage instructions in README.
- Update de.lua
### Incompatibilities
- Renamed `debugger.stackmax*` settings to `debugger.maxdata*`.
- Removed `wxwidgets` from the list of default APIs for Lua interpreters; use `api` config setting to include it.
### Fixes
- Fixed search navigation to shift horizontally when `usewrap` is off.
- Fixed indentation for lines with mixed string separators (#324, #388).
- Fixed indentation for lines with escaped slashes (#324, closes #388).
- Fixed find-and-replace to replace in already selected fragment if matched.
- Fixed refresh of files in command bar preview when selected (#31).
- Fixed recovery of empty (`untitled`) tabs.
- Fixed an auto-complete issue after `repeat until <var>`.
- Fixed setting focus to the editor in commandbar with one tab (#31).
- Fixed auto-complete after text not separated by a whitespace or bracket.
- Fixed an error when disabling outline by setting `outlineinactivity=nil`.
## v0.90 (Nov 08 2014)
### Highlights

30
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,30 @@
# Help
For questions and feature discussions, please use the the maillist or the IRC channel as described in the [community section](http://studio.zerobrane.com/community) of the project website.
# Bugs
When filing a bug, please help us reproduce the issue by including the following information:
* Steps to reproduce the issue as well as the expected result. Screenshots also help.
* Your operating system and the IDE version (or the latest commit if you are using the development version).
* Any relevant configuration from the config file, if you cannot reproduce the issue with an empty config.
* Any relevant plugins, if you cannot reproduce the issue without plugins.
It always helps to make sure that the issue is still reproducible with the most recent version of the IDE.
If you think that the issue is with the *debugger* (this also includes serialization issues), then open an issue in the [MobDebug repository](https://github.com/pkulchenko/MobDebug/issues).
If the issue is with one of the *plugins*, then open an issue in the [ZeroBranePackage repository](https://github.com/pkulchenko/ZeroBranePackage/issues).
# Contributing
_By contributing to ZeroBrane Studio you are agreeing to release your contribution under the MIT License._
Thank you for contributing to ZeroBrane Studio! Here are some things you can do to improve it:
* **Fixing issues**: If you have ideas or suggestions on [fixing existing issues](https://github.com/pkulchenko/ZeroBraneStudio/issues), please update the tickets directly or send a pull request.
* **Adding translations**: See [translation documentation](http://studio.zerobrane.com/doc-translation) for details.
* **Implementing new features**: Please [discuss with us](http://studio.zerobrane.com/community) any significant changes you plan as early as possible.
Try to implement the changes as a plugin first; the project already provides [plugin API](http://studio.zerobrane.com/doc-plugin) with more than [45 plugins](https://github.com/pkulchenko/ZeroBranePackage) already available.
* **Improving documentation**: All the existing documentation is generated based on pages in [gh-pages branch](https://github.com/pkulchenko/ZeroBraneStudio/tree/gh-pages). You can provide clarifications, check the documentation for errors/typos, or fill any gaps.
* **Spreading the word**!

View File

@@ -2,7 +2,7 @@
ZeroBrane Studio sources are released under the MIT License
Copyright (c) 2011-2012 Paul Kulchenko (paul@kulchenko.com)
Copyright (c) 2011-2015 Paul Kulchenko (paul@kulchenko.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -2,7 +2,11 @@
[ZeroBrane Studio](http://studio.zerobrane.com/) is a lightweight cross-platform Lua IDE with code completion,
syntax highlighting, remote debugger, code analyzer, live coding,
and debugging support for several Lua engines (Lua 5.1, Lua 5.2, Lua 5.3, LuaJIT,
and debugging support for several Lua engines
([Lua 5.1](http://studio.zerobrane.com/doc-lua-debugging),
[Lua 5.2](http://studio.zerobrane.com/doc-lua52-debugging),
[Lua 5.3](http://studio.zerobrane.com/doc-lua53-debugging),
[LuaJIT](http://studio.zerobrane.com/doc-luajit-debugging),
[Löve 2D](http://notebook.kulchenko.com/zerobrane/love2d-debugging),
[Moai](http://notebook.kulchenko.com/zerobrane/moai-debugging-with-zerobrane-studio),
[Gideros](http://notebook.kulchenko.com/zerobrane/gideros-debugging-with-zerobrane-studio-ide),
@@ -11,7 +15,9 @@ and debugging support for several Lua engines (Lua 5.1, Lua 5.2, Lua 5.3, LuaJIT
[Cocos2d-x](http://notebook.kulchenko.com/zerobrane/cocos2d-x-simulator-and-on-device-debugging-with-zerobrane-studio),
[GSL-shell](http://notebook.kulchenko.com/zerobrane/gsl-shell-debugging-with-zerobrane-studio),
[Adobe Lightroom](http://notebook.kulchenko.com/zerobrane/debugging-lightroom-plugins-zerobrane-studio-ide),
[OpenResty/Nginx](http://notebook.kulchenko.com/zerobrane/debugging-openresty-nginx-lua-scripts-with-zerobrane-studio)
[OpenResty/Nginx](http://notebook.kulchenko.com/zerobrane/debugging-openresty-nginx-lua-scripts-with-zerobrane-studio),
[Lapis](http://notebook.kulchenko.com/zerobrane/lapis-debugging-with-zerobrane-studio),
[Moonscript](http://notebook.kulchenko.com/zerobrane/moonscript-debugging-with-zerobrane-studio),
and others). It originated from the [Estrela Editor](http://www.luxinia.de/index.php/Estrela/).
![ZeroBrane Studio debugger screenshot](http://studio.zerobrane.com/images/debugging.png)
@@ -22,33 +28,36 @@ and others). It originated from the [Estrela Editor](http://www.luxinia.de/index
* Small, portable, and cross-platform (Windows, Mac OSX, and Linux).
* Auto-completion for functions, keywords, and custom APIs.
* Interactive console to directly test code snippets with local and remote execution.
* Integrated debugger with local and [remote debugging](http://studio.zerobrane.com/doc-remote-debugging.html) for Lua 5.1,
[Lua 5.2](http://studio.zerobrane.com/doc-lua52-debugging.html),
Lua 5.3,
[LuaJIT](http://studio.zerobrane.com/doc-luajit-debugging.html),
and [other Lua engines](http://studio.zerobrane.com/documentation.html#debugging).
* [Live coding](http://studio.zerobrane.com/documentation.html#live_coding)
* Integrated debugger with local and [remote debugging](http://studio.zerobrane.com/doc-remote-debugging)
for [Lua 5.1](http://studio.zerobrane.com/doc-lua-debugging),
[Lua 5.2](http://studio.zerobrane.com/doc-lua52-debugging),
[Lua 5.3](http://studio.zerobrane.com/doc-lua53-debugging),
[LuaJIT](http://studio.zerobrane.com/doc-luajit-debugging),
and [other Lua engines](http://studio.zerobrane.com/documentation#debugging).
* [Live coding](http://studio.zerobrane.com/documentation#live_coding)
with [Lua](http://notebook.kulchenko.com/zerobrane/live-coding-in-lua-bret-victor-style),
[Löve 2D](http://notebook.kulchenko.com/zerobrane/live-coding-with-love),
[Gideros](http://notebook.kulchenko.com/zerobrane/gideros-live-coding-with-zerobrane-studio-ide),
[Moai](http://notebook.kulchenko.com/zerobrane/live-coding-with-moai-and-zerobrane-studio),
[Corona SDK](http://notebook.kulchenko.com/zerobrane/debugging-and-live-coding-with-corona-sdk-applications-and-zerobrane-studio),
GSL-shell, and other engines.
* Function outline.
* Fuzzy search with `Go To File`, `Go To Symbol`, and `Insert Library Function`.
* Several ways to extend the current functionality:
- specs (`spec/`): specifications for file syntax, lexer, and keywords;
- apis (`api/`): descriptions for [code completion and tooltips](http://studio.zerobrane.com/doc-api-auto-complete.html);
- apis (`api/`): descriptions for [code completion and tooltips](http://studio.zerobrane.com/doc-api-auto-complete);
- interpreters (`interpreters/`): components for setting debugging and run-time project environment;
- packages (`packages/`): [plugins](http://studio.zerobrane.com/doc-plugin.html) that provide additional functionality;
- packages (`packages/`): [plugins](http://studio.zerobrane.com/doc-plugin) that provide additional functionality;
- config (`cfg/`): settings for styles, color themes, and other preferences;
- translations (`cfg/i18n/`): [translations](http://studio.zerobrane.com/doc-translation.html) of the menus and messages to other languages;
- translations (`cfg/i18n/`): [translations](http://studio.zerobrane.com/doc-translation) of the menus and messages to other languages;
- tools (`tools/`): additional tools.
## Documentation
* A [short and simple overview](http://studio.zerobrane.com/doc-getting-started.html) for those who are new to this development environment.
* A list of [frequently asked questions](http://studio.zerobrane.com/doc-faq.html) about the IDE.
* [Tutorials and demos](http://studio.zerobrane.com/tutorials.html) that cover debugging and live coding for different environments.
* [Tips and tricks](http://studio.zerobrane.com/doc-tips-and-tricks.html).
* A [short and simple overview](http://studio.zerobrane.com/doc-getting-started) for those who are new to this development environment.
* A list of [frequently asked questions](http://studio.zerobrane.com/doc-faq) about the IDE.
* [Tutorials and demos](http://studio.zerobrane.com/tutorials) that cover debugging and live coding for different environments.
* [Tips and tricks](http://studio.zerobrane.com/doc-tips-and-tricks).
## Installation
@@ -59,24 +68,28 @@ No compilation is needed, although the scripts to compile required libraries for
```
Open file(s):
zbstudio <filename> [<filename>...]
any non-option will be treated as a file to open or a directory to set as the project directory
zbstudio [option] [<project directory>] <filename> [<filename>...]
non-options are treated as a project directory to set or a file to open
Set project directory:
zbstudio <project directory> [<filename>...]
(0.39+) a directory passed as a parameter will be set as the project directory
Overriding default configuration:
Override default configuration:
zbstudio -cfg "<luacode overriding config>" [<filename>]
e.g.: zbstudio -cfg "editor.fontsize=12" somefile.lua
Loading custom configuration:
Load custom configuration:
zbstudio -cfg path/file.lua [<filename>]
e.g.: zbstudio -cfg cfg/estrela.lua
```
If you are loading a file, you can also request the cursor to be set on a particular line or at a particular position by using `filename:<line>` and `filename:p<pos>` syntax (0.71+).
## Contributing
See [CONTRIBUTING](CONTRIBUTING.md).
## Author
### ZeroBrane Studio and MobDebug
@@ -99,4 +112,4 @@ again.
## License
See LICENSE file.
See [LICENSE](LICENSE).

View File

@@ -1,6 +1,7 @@
return {
-- covers both Lua 5.1 and Lua 5.2; All Lua 5.2 specific items are marked
-- with FUNCTION/ARGUMENT/ARGS/VALUE ADDED/DEPRECATED IN Lua 5.2.
-- covers Lua 5.1, Lua 5.2, and Lua 5.3;
-- Lua 5.2 and Lua 5.3 specific items are marked with
-- FUNCTION/ARGUMENT/ARGS/VALUE ADDED/DEPRECATED IN Lua 5.2 or Lua 5.3.
-- Keywords
["and"] = {type = "keyword"},
@@ -206,7 +207,7 @@ return {
type = "lib",
description = "The operations related to coroutines comprise a sub-library of the basic library and come inside the table coroutine.\nLua supports coroutines, also called collaborative multithreading. A coroutine in Lua represents an independent thread of execution. Unlike threads in multithread systems, however, a coroutine only suspends its execution by explicitly calling a yield function.",
childs = {
getfenv = {
create = {
type = "function",
description = "Creates a new coroutine, with body f.\nf must be a Lua function. Returns this new coroutine, an object with type \"thread\".",
args = "(f: function)",
@@ -355,6 +356,25 @@ return {
args = "(s: string, pattern: string)",
returns = "(function)",
},
pack = {
type = "function",
description = "Returns a binary string containing the values v1, v2, etc. packed (that is, serialized in binary form) according to the format string fmt.\nFUNCTION ADDED IN Lua 5.3.",
args = "(fmt: string, v1, v2, ...)",
returns = "(string)",
valuetype = "string",
},
unpack = {
type = "function",
description = "Returns the values packed in string s (see string.pack) according to the format string fmt. An optional pos marks where to start reading in s (default is 1). After the read values, this function also returns the index of the first unread byte in s.\nFUNCTION ADDED IN Lua 5.3.",
args = "(fmt: string, s: string [, pos: number])",
returns = "(values)",
},
packsize = {
type = "function",
description = "Returns the size of a string resulting from string.pack with the given format. The format string cannot have the variable-length options 's' or 'z'.\nFUNCTION ADDED IN Lua 5.3.",
args = "(fmt: string)",
returns = "(number)",
},
gsub = {
type = "function",
description = "Returns a copy of s in which all (or the first n, if given) occurrences of the pattern have been replaced by a replacement string specified by repl, which can be a string, a table, or a function.\ngsub also returns, as its second value, the total number of matches that occurred. The name gsub comes from Global SUBstitution.\nIf repl is a string, then its value is used for replacement. The character % works as an escape character: any sequence in repl of the form %d, with d between 1 and 9, stands for the value of the d-th captured substring. The sequence %0 stands for the whole match. The sequence %% stands for a single %.\nIf repl is a table, then the table is queried for every match, using the first capture as the key.\nIf repl is a function, then this function is called every time a match occurs, with all captured substrings passed as arguments, in order.\nIn any case, if the pattern specifies no captures, then it behaves as if the whole pattern was inside a capture.\nIf the value returned by the table query or by the function call is a string or a number, then it is used as the replacement string; otherwise, if it is false or nil, then there is no replacement (that is, the original match is kept in the string).",
@@ -443,6 +463,12 @@ return {
args = "(...)",
returns = "(table)",
},
move = {
type = "function",
description = "Moves elements from table a1 to table a2. This function performs the equivalent to the following multiple assignment: a2[t],··· = a1[f],···,a1[e]. The default for a2 is a1. The destination range can overlap with the source range. Index f must be positive.\nFUNCTION ADDED IN Lua 5.3.",
args = "(a1: table, f, e, t [,a2: table])",
returns = "()",
},
remove = {
type = "function",
description = "Removes from list the element at position pos, shifting down the elements list[pos+1], list[pos+2], ···, list[#list] and erasing element list[#list].\nReturns the value of the removed element.\nThe default value for pos is #list, so that a call table.remove(t) removes the last element of list t.",

File diff suppressed because it is too large Load Diff

View File

@@ -1082,6 +1082,8 @@ GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C,
GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D,
GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E,
GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F,
GL_COPY_READ_BUFFER_BINDING = 0x8F36,
GL_COPY_WRITE_BUFFER_BINDING = 0x8F37,
GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9,
GL_VERTEX_ATTRIB_ARRAY_LONG = 0x874E,
GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221,
@@ -1811,7 +1813,7 @@ GL_ALREADY_SIGNALED = 0x911A,
GL_TIMEOUT_EXPIRED = 0x911B,
GL_CONDITION_SATISFIED = 0x911C,
GL_WAIT_FAILED = 0x911D,
GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
//GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
GL_PATCHES = 0xE,
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0,
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1,
@@ -2119,6 +2121,8 @@ GL_HSL_HUE_KHR = 0x92AD,
GL_HSL_SATURATION_KHR = 0x92AE,
GL_HSL_COLOR_KHR = 0x92AF,
GL_HSL_LUMINOSITY_KHR = 0x92B0,
GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB,
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC,
GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002,
//GL_STACK_OVERFLOW = 0x0503,
//GL_STACK_UNDERFLOW = 0x0504,
@@ -2276,6 +2280,10 @@ GL_MINUS_CLAMPED_NV = 0x92B3,
GL_INVERT_OVG_NV = 0x92B4,
GL_COMPUTE_PROGRAM_NV = 0x90FB,
GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC,
GL_CONSERVATIVE_RASTERIZATION_NV = 0x9346,
GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347,
GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348,
GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349,
GL_DEPTH_STENCIL_TO_RGBA_NV = 0x886E,
GL_DEPTH_STENCIL_TO_BGRA_NV = 0x886F,
GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0,
@@ -2317,6 +2325,7 @@ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58,
GL_ALL_COMPLETED_NV = 0x84F2,
GL_FENCE_STATUS_NV = 0x84F3,
GL_FENCE_CONDITION_NV = 0x84F4,
GL_FILL_RECTANGLE_NV = 0x933C,
GL_FLOAT_R_NV = 0x8880,
GL_FLOAT_RG_NV = 0x8881,
GL_FLOAT_RGB_NV = 0x8882,
@@ -2335,6 +2344,8 @@ GL_FLOAT_RGBA_MODE_NV = 0x888E,
GL_FOG_DISTANCE_MODE_NV = 0x855A,
GL_EYE_RADIAL_NV = 0x855B,
GL_EYE_PLANE_ABSOLUTE_NV = 0x855C,
GL_FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD,
GL_FRAGMENT_COVERAGE_COLOR_NV = 0x92DE,
GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868,
GL_FRAGMENT_PROGRAM_NV = 0x8870,
GL_FRAGMENT_PROGRAM_BINDING_NV = 0x8873,
@@ -2344,6 +2355,20 @@ GL_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5,
GL_MAX_PROGRAM_IF_DEPTH_NV = 0x88F6,
GL_MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7,
GL_MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8,
//GL_COLOR_SAMPLES_NV = 0x8E20,
//GL_RASTER_MULTISAMPLE_EXT = 0x9327,
//GL_RASTER_SAMPLES_EXT = 0x9328,
//GL_MAX_RASTER_SAMPLES_EXT = 0x9329,
//GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A,
//GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B,
//GL_EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C,
//GL_DEPTH_SAMPLES_NV = 0x932D,
//GL_STENCIL_SAMPLES_NV = 0x932E,
//GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F,
//GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330,
//GL_COVERAGE_MODULATION_TABLE_NV = 0x9331,
//GL_COVERAGE_MODULATION_NV = 0x9332,
//GL_COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333,
GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB,
GL_RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10,
GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11,
@@ -2387,9 +2412,13 @@ GL_FLOAT16_NV = 0x8FF8,
GL_FLOAT16_VEC2_NV = 0x8FF9,
GL_FLOAT16_VEC3_NV = 0x8FFA,
GL_FLOAT16_VEC4_NV = 0x8FFB,
GL_MULTISAMPLES_NV = 0x9371,
GL_SUPERSAMPLE_SCALE_X_NV = 0x9372,
GL_SUPERSAMPLE_SCALE_Y_NV = 0x9373,
GL_CONFORMANT_NV = 0x9374,
GL_MAX_SHININESS_NV = 0x8504,
GL_MAX_SPOT_EXPONENT_NV = 0x8505,
GL_COLOR_SAMPLES_NV = 0x8E20,
//GL_COLOR_SAMPLES_NV = 0x8E20,
GL_MULTISAMPLE_FILTER_HINT_NV = 0x8534,
GL_PIXEL_COUNTER_BITS_NV = 0x8864,
GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865,
@@ -2432,19 +2461,31 @@ GL_LARGE_CCW_ARC_TO_NV = 0x16,
GL_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17,
GL_LARGE_CW_ARC_TO_NV = 0x18,
GL_RELATIVE_LARGE_CW_ARC_TO_NV = 0x19,
GL_CONIC_CURVE_TO_NV = 0x1A,
GL_RELATIVE_CONIC_CURVE_TO_NV = 0x1B,
GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20,
GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40,
GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80,
GL_ROUNDED_RECT_NV = 0xE8,
GL_RELATIVE_ROUNDED_RECT_NV = 0xE9,
GL_ROUNDED_RECT2_NV = 0xEA,
GL_RELATIVE_ROUNDED_RECT2_NV = 0xEB,
GL_ROUNDED_RECT4_NV = 0xEC,
GL_RELATIVE_ROUNDED_RECT4_NV = 0xED,
GL_ROUNDED_RECT8_NV = 0xEE,
GL_RELATIVE_ROUNDED_RECT8_NV = 0xEF,
GL_RESTART_PATH_NV = 0xF0,
GL_DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2,
GL_DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4,
GL_RECT_NV = 0xF6,
GL_RELATIVE_RECT_NV = 0xF7,
GL_CIRCULAR_CCW_ARC_TO_NV = 0xF8,
GL_CIRCULAR_CW_ARC_TO_NV = 0xFA,
GL_CIRCULAR_TANGENT_ARC_TO_NV = 0xFC,
GL_ARC_TO_NV = 0xFE,
GL_RELATIVE_ARC_TO_NV = 0xFF,
GL_GLYPH_HAS_KERNING_BIT_NV = 0x100,
GL_SECONDARY_COLOR_NV = 0x852D,
//GL_PRIMARY_COLOR = 0x8577,
GL_PATH_FORMAT_SVG_NV = 0x9070,
GL_PATH_FORMAT_PS_NV = 0x9071,
@@ -2467,6 +2508,7 @@ GL_PATH_FILL_MASK_NV = 0x9081,
GL_PATH_FILL_COVER_MODE_NV = 0x9082,
GL_PATH_STROKE_COVER_MODE_NV = 0x9083,
GL_PATH_STROKE_MASK_NV = 0x9084,
GL_PATH_STROKE_BOUND_NV = 0x9086,
GL_COUNT_UP_NV = 0x9088,
GL_COUNT_DOWN_NV = 0x9089,
GL_PATH_OBJECT_BOUNDING_BOX_NV = 0x908A,
@@ -2515,6 +2557,12 @@ GL_PATH_STENCIL_VALUE_MASK_NV = 0x90B9,
GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD,
GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE,
GL_PATH_COVER_DEPTH_FUNC_NV = 0x90BF,
GL_FONT_GLYPHS_AVAILABLE_NV = 0x9368,
GL_FONT_TARGET_UNAVAILABLE_NV = 0x9369,
GL_FONT_UNAVAILABLE_NV = 0x936A,
GL_FONT_UNINTELLIGIBLE_NV = 0x936B,
GL_STANDARD_FONT_FORMAT_NV = 0x936C,
GL_FRAGMENT_INPUT_NV = 0x936D,
GL_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000,
GL_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000,
GL_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000,
@@ -2528,6 +2576,8 @@ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000,
GL_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000,
GL_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000,
GL_FONT_HAS_KERNING_BIT_NV = 0x10000000,
GL_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000,
GL_SHARED_EDGE_NV = 0xC0,
GL_WRITE_PIXEL_DATA_RANGE_NV = 0x8878,
GL_READ_PIXEL_DATA_RANGE_NV = 0x8879,
GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A,
@@ -2551,7 +2601,7 @@ GL_VARIABLE_F_NV = 0x8528,
GL_VARIABLE_G_NV = 0x8529,
GL_CONSTANT_COLOR0_NV = 0x852A,
GL_CONSTANT_COLOR1_NV = 0x852B,
GL_SECONDARY_COLOR_NV = 0x852D,
//GL_SECONDARY_COLOR_NV = 0x852D,
GL_SPARE0_NV = 0x852E,
GL_SPARE1_NV = 0x852F,
GL_DISCARD_NV = 0x8530,
@@ -2592,6 +2642,14 @@ GL_COMBINER5_NV = 0x8555,
GL_COMBINER6_NV = 0x8556,
GL_COMBINER7_NV = 0x8557,
GL_PER_STAGE_CONSTANTS_NV = 0x8535,
GL_SAMPLE_LOCATION_NV = 0x8E50,
GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D,
GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E,
GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F,
GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340,
GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341,
GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342,
GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343,
GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D,
GL_GPU_ADDRESS_NV = 0x8F34,
GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35,
@@ -3517,6 +3575,7 @@ extern void glBlendEquationi(GLuint buf, GLenum mode);
extern void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
extern void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
extern void glMinSampleShading(GLclampf value);
extern GLenum glGetGraphicsResetStatus(void);
extern void glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
extern void glBlendEquationIndexedAMD(GLuint buf, GLenum mode);
extern void glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
@@ -3620,6 +3679,10 @@ extern void glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr s
extern void glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
extern void glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint* param);
extern void glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params);
extern void glGetQueryBufferObjecti64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
extern void glGetQueryBufferObjectiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
extern void glGetQueryBufferObjectui64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
extern void glGetQueryBufferObjectuiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
extern void glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
extern void glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat* params);
extern void glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint* params);
@@ -3792,7 +3855,6 @@ extern GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInt
extern void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
extern void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
extern void glProvokingVertex(GLenum mode);
extern GLenum glGetGraphicsResetStatusARB(void);
extern void glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table);
extern void glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void* img);
extern void glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image);
@@ -4230,6 +4292,7 @@ extern void glUniformHandleui64NV(GLint location, GLuint64 value);
extern void glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64* value);
extern void glBlendBarrierNV(void);
extern void glBlendParameteriNV(GLenum pname, GLint value);
extern void glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits);
extern void glClearDepthdNV(GLdouble depth);
extern void glDepthBoundsdNV(GLdouble zmin, GLdouble zmax);
extern void glDepthRangedNV(GLdouble zNear, GLdouble zFar);
@@ -4252,6 +4315,7 @@ extern void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params);
extern GLboolean glIsFenceNV(GLuint fence);
extern void glSetFenceNV(GLuint fence, GLenum condition);
extern GLboolean glTestFenceNV(GLuint fence);
extern void glFragmentCoverageColorNV(GLuint color);
extern void glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble *params);
extern void glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte* name, GLfloat *params);
extern void glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
@@ -4352,6 +4416,7 @@ extern void glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalf* v);
extern void glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalf* v);
extern void glVertexWeighthNV(GLhalf weight);
extern void glVertexWeighthvNV(const GLhalf* weight);
extern void glGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params);
extern void glBeginOcclusionQueryNV(GLuint id);
extern void glDeleteOcclusionQueriesNV(GLsizei n, const GLuint* ids);
extern void glEndOcclusionQueryNV(void);
@@ -4363,52 +4428,67 @@ extern void glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint
extern void glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
extern void glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
extern void glCopyPathNV(GLuint resultPath, GLuint srcPath);
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glCoverFillPathNV(GLuint path, GLenum coverMode);
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glCoverStrokePathNV(GLuint name, GLenum coverMode);
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glCoverStrokePathNV(GLuint path, GLenum coverMode);
extern void glDeletePathsNV(GLuint path, GLsizei range);
extern GLuint glGenPathsNV(GLsizei range);
extern void glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat* value);
extern void glGetPathColorGenivNV(GLenum color, GLenum pname, GLint* value);
extern void glGetPathCommandsNV(GLuint name, GLubyte* commands);
extern void glGetPathCoordsNV(GLuint name, GLfloat* coords);
extern void glGetPathDashArrayNV(GLuint name, GLfloat* dashArray);
extern void glGetPathCommandsNV(GLuint path, GLubyte* commands);
extern void glGetPathCoordsNV(GLuint path, GLfloat* coords);
extern void glGetPathDashArrayNV(GLuint path, GLfloat* dashArray);
extern GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments);
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
extern void glGetPathParameterfvNV(GLuint name, GLenum param, GLfloat* value);
extern void glGetPathParameterivNV(GLuint name, GLenum param, GLint* value);
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
extern void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value);
extern void glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value);
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
extern void glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat* value);
extern void glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint* value);
extern void glGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params);
extern void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
extern GLboolean glIsPathNV(GLuint path);
extern GLboolean glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y);
extern GLboolean glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y);
extern void glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m);
extern void glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m);
extern void glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
extern void glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m);
extern void glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m);
extern void glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
extern void glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs);
extern void glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords);
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
extern void glPathCoverDepthFuncNV(GLenum zfunc);
extern void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray);
extern void glPathFogGenNV(GLenum genMode);
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern GLenum glPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern GLenum glPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern GLenum glPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
extern void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value);
extern void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value);
extern void glPathParameteriNV(GLuint path, GLenum pname, GLint value);
extern void glPathParameterivNV(GLuint path, GLenum pname, const GLint* value);
extern void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units);
extern void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask);
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString);
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString);
extern void glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords);
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
extern void glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs);
extern GLboolean glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
extern void glProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs);
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
extern void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask);
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
extern void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask);
extern void glStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
extern void glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
extern void glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode);
extern void glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues);
extern void glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]);
extern void glFlushPixelDataRangeNV(GLenum target);
@@ -4435,6 +4515,8 @@ extern void glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname,
extern void glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint* params);
extern void glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat* params);
extern void glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat* params);
extern void glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat* v);
extern void glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
extern void glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT* params);
extern void glGetIntegerui64vNV(GLenum value, GLuint64EXT* result);
extern void glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT* params);
@@ -4857,7 +4939,10 @@ extern GLboolean __GLEW_EXT_pixel_transform;
extern GLboolean __GLEW_EXT_pixel_transform_color_table;
extern GLboolean __GLEW_EXT_point_parameters;
extern GLboolean __GLEW_EXT_polygon_offset;
extern GLboolean __GLEW_EXT_polygon_offset_clamp;
extern GLboolean __GLEW_EXT_post_depth_coverage;
extern GLboolean __GLEW_EXT_provoking_vertex;
extern GLboolean __GLEW_EXT_raster_multisample;
extern GLboolean __GLEW_EXT_rescale_normal;
extern GLboolean __GLEW_EXT_scene_marker;
extern GLboolean __GLEW_EXT_secondary_color;
@@ -4868,6 +4953,7 @@ extern GLboolean __GLEW_EXT_shader_image_load_store;
extern GLboolean __GLEW_EXT_shader_integer_mix;
extern GLboolean __GLEW_EXT_shadow_funcs;
extern GLboolean __GLEW_EXT_shared_texture_palette;
extern GLboolean __GLEW_EXT_sparse_texture2;
extern GLboolean __GLEW_EXT_stencil_clear_tag;
extern GLboolean __GLEW_EXT_stencil_two_side;
extern GLboolean __GLEW_EXT_stencil_wrap;
@@ -4887,6 +4973,7 @@ extern GLboolean __GLEW_EXT_texture_env_add;
extern GLboolean __GLEW_EXT_texture_env_combine;
extern GLboolean __GLEW_EXT_texture_env_dot3;
extern GLboolean __GLEW_EXT_texture_filter_anisotropic;
extern GLboolean __GLEW_EXT_texture_filter_minmax;
extern GLboolean __GLEW_EXT_texture_integer;
extern GLboolean __GLEW_EXT_texture_lod_bias;
extern GLboolean __GLEW_EXT_texture_mirror_clamp;
@@ -4949,6 +5036,7 @@ extern GLboolean __GLEW_NV_blend_equation_advanced_coherent;
extern GLboolean __GLEW_NV_blend_square;
extern GLboolean __GLEW_NV_compute_program5;
extern GLboolean __GLEW_NV_conditional_render;
extern GLboolean __GLEW_NV_conservative_raster;
extern GLboolean __GLEW_NV_copy_depth_to_color;
extern GLboolean __GLEW_NV_copy_image;
extern GLboolean __GLEW_NV_deep_texture3D;
@@ -4959,21 +5047,27 @@ extern GLboolean __GLEW_NV_draw_texture;
extern GLboolean __GLEW_NV_evaluators;
extern GLboolean __GLEW_NV_explicit_multisample;
extern GLboolean __GLEW_NV_fence;
extern GLboolean __GLEW_NV_fill_rectangle;
extern GLboolean __GLEW_NV_float_buffer;
extern GLboolean __GLEW_NV_fog_distance;
extern GLboolean __GLEW_NV_fragment_coverage_to_color;
extern GLboolean __GLEW_NV_fragment_program;
extern GLboolean __GLEW_NV_fragment_program2;
extern GLboolean __GLEW_NV_fragment_program4;
extern GLboolean __GLEW_NV_fragment_program_option;
extern GLboolean __GLEW_NV_fragment_shader_interlock;
extern GLboolean __GLEW_NV_framebuffer_mixed_samples;
extern GLboolean __GLEW_NV_framebuffer_multisample_coverage;
extern GLboolean __GLEW_NV_geometry_program4;
extern GLboolean __GLEW_NV_geometry_shader4;
extern GLboolean __GLEW_NV_geometry_shader_passthrough;
extern GLboolean __GLEW_NV_gpu_program4;
extern GLboolean __GLEW_NV_gpu_program5;
extern GLboolean __GLEW_NV_gpu_program5_mem_extended;
extern GLboolean __GLEW_NV_gpu_program_fp64;
extern GLboolean __GLEW_NV_gpu_shader5;
extern GLboolean __GLEW_NV_half_float;
extern GLboolean __GLEW_NV_internalformat_sample_query;
extern GLboolean __GLEW_NV_light_max_exponent;
extern GLboolean __GLEW_NV_multisample_coverage;
extern GLboolean __GLEW_NV_multisample_filter_hint;
@@ -4982,14 +5076,18 @@ extern GLboolean __GLEW_NV_packed_depth_stencil;
extern GLboolean __GLEW_NV_parameter_buffer_object;
extern GLboolean __GLEW_NV_parameter_buffer_object2;
extern GLboolean __GLEW_NV_path_rendering;
extern GLboolean __GLEW_NV_path_rendering_shared_edge;
extern GLboolean __GLEW_NV_pixel_data_range;
extern GLboolean __GLEW_NV_point_sprite;
extern GLboolean __GLEW_NV_present_video;
extern GLboolean __GLEW_NV_primitive_restart;
extern GLboolean __GLEW_NV_register_combiners;
extern GLboolean __GLEW_NV_register_combiners2;
extern GLboolean __GLEW_NV_sample_locations;
extern GLboolean __GLEW_NV_sample_mask_override_coverage;
extern GLboolean __GLEW_NV_shader_atomic_counters;
extern GLboolean __GLEW_NV_shader_atomic_float;
extern GLboolean __GLEW_NV_shader_atomic_fp16_vector;
extern GLboolean __GLEW_NV_shader_atomic_int64;
extern GLboolean __GLEW_NV_shader_buffer_load;
extern GLboolean __GLEW_NV_shader_storage_buffer_object;
@@ -5022,6 +5120,7 @@ extern GLboolean __GLEW_NV_vertex_program2_option;
extern GLboolean __GLEW_NV_vertex_program3;
extern GLboolean __GLEW_NV_vertex_program4;
extern GLboolean __GLEW_NV_video_capture;
extern GLboolean __GLEW_NV_viewport_array2;
extern GLboolean __GLEW_OES_byte_coordinates;
extern GLboolean __GLEW_OES_compressed_paletted_texture;
extern GLboolean __GLEW_OES_read_format;
@@ -5412,7 +5511,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_EXT_pixel_transform_color_table"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_point_parameters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_polygon_offset"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_polygon_offset_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_post_depth_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_provoking_vertex"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_raster_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_rescale_normal"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_scene_marker"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_secondary_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5423,6 +5525,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_EXT_shader_integer_mix"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_shadow_funcs"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_shared_texture_palette"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_sparse_texture2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_stencil_clear_tag"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_stencil_two_side"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_stencil_wrap"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5442,6 +5545,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_EXT_texture_env_combine"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_env_dot3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_filter_anisotropic"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_filter_minmax"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_integer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_lod_bias"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_EXT_texture_mirror_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5504,6 +5608,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_NV_blend_square"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_compute_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_conditional_render"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_conservative_raster"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_copy_depth_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_copy_image"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_deep_texture3D"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5514,21 +5619,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_NV_evaluators"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_explicit_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fence"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fill_rectangle"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_float_buffer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fog_distance"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_coverage_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_program"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_program2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_program_option"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_fragment_shader_interlock"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_framebuffer_mixed_samples"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_framebuffer_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_geometry_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_geometry_shader4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_geometry_shader_passthrough"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_gpu_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_gpu_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_gpu_program5_mem_extended"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_gpu_program_fp64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_gpu_shader5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_half_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_internalformat_sample_query"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_light_max_exponent"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_multisample_filter_hint"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5537,14 +5648,18 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_NV_parameter_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_parameter_buffer_object2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_path_rendering"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_path_rendering_shared_edge"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_pixel_data_range"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_point_sprite"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_present_video"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_primitive_restart"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_register_combiners"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_register_combiners2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_sample_locations"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_sample_mask_override_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_atomic_counters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_atomic_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_atomic_fp16_vector"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_atomic_int64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_buffer_load"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_shader_storage_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -5577,6 +5692,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["__GLEW_NV_vertex_program3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_vertex_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_video_capture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_NV_viewport_array2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_OES_byte_coordinates"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_OES_compressed_paletted_texture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
["__GLEW_OES_read_format"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
@@ -6700,6 +6816,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"] = { type ='value', },
["GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"] = { type ='value', },
["GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"] = { type ='value', },
["GL_COPY_READ_BUFFER_BINDING"] = { type ='value', },
["GL_COPY_WRITE_BUFFER_BINDING"] = { type ='value', },
["GL_NUM_SHADING_LANGUAGE_VERSIONS"] = { type ='value', },
["GL_VERTEX_ATTRIB_ARRAY_LONG"] = { type ='value', },
["GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"] = { type ='value', },
@@ -7416,7 +7534,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_TIMEOUT_EXPIRED"] = { type ='value', },
["GL_CONDITION_SATISFIED"] = { type ='value', },
["GL_WAIT_FAILED"] = { type ='value', },
["GL_TIMEOUT_IGNORED"] = { type ='value', },
["GL_PATCHES"] = { type ='value', },
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"] = { type ='value', },
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"] = { type ='value', },
@@ -7708,6 +7825,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_HSL_SATURATION_KHR"] = { type ='value', },
["GL_HSL_COLOR_KHR"] = { type ='value', },
["GL_HSL_LUMINOSITY_KHR"] = { type ='value', },
["GL_CONTEXT_RELEASE_BEHAVIOR"] = { type ='value', },
["GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"] = { type ='value', },
["GL_CONTEXT_FLAG_DEBUG_BIT"] = { type ='value', },
["GL_DEBUG_OUTPUT_SYNCHRONOUS"] = { type ='value', },
["GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"] = { type ='value', },
@@ -7835,6 +7954,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_INVERT_OVG_NV"] = { type ='value', },
["GL_COMPUTE_PROGRAM_NV"] = { type ='value', },
["GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV"] = { type ='value', },
["GL_CONSERVATIVE_RASTERIZATION_NV"] = { type ='value', },
["GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV"] = { type ='value', },
["GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV"] = { type ='value', },
["GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV"] = { type ='value', },
["GL_DEPTH_STENCIL_TO_RGBA_NV"] = { type ='value', },
["GL_DEPTH_STENCIL_TO_BGRA_NV"] = { type ='value', },
["GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV"] = { type ='value', },
@@ -7876,6 +7999,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_ALL_COMPLETED_NV"] = { type ='value', },
["GL_FENCE_STATUS_NV"] = { type ='value', },
["GL_FENCE_CONDITION_NV"] = { type ='value', },
["GL_FILL_RECTANGLE_NV"] = { type ='value', },
["GL_FLOAT_R_NV"] = { type ='value', },
["GL_FLOAT_RG_NV"] = { type ='value', },
["GL_FLOAT_RGB_NV"] = { type ='value', },
@@ -7894,6 +8018,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_FOG_DISTANCE_MODE_NV"] = { type ='value', },
["GL_EYE_RADIAL_NV"] = { type ='value', },
["GL_EYE_PLANE_ABSOLUTE_NV"] = { type ='value', },
["GL_FRAGMENT_COVERAGE_TO_COLOR_NV"] = { type ='value', },
["GL_FRAGMENT_COVERAGE_COLOR_NV"] = { type ='value', },
["GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV"] = { type ='value', },
["GL_FRAGMENT_PROGRAM_NV"] = { type ='value', },
["GL_FRAGMENT_PROGRAM_BINDING_NV"] = { type ='value', },
@@ -7946,9 +8072,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_FLOAT16_VEC2_NV"] = { type ='value', },
["GL_FLOAT16_VEC3_NV"] = { type ='value', },
["GL_FLOAT16_VEC4_NV"] = { type ='value', },
["GL_MULTISAMPLES_NV"] = { type ='value', },
["GL_SUPERSAMPLE_SCALE_X_NV"] = { type ='value', },
["GL_SUPERSAMPLE_SCALE_Y_NV"] = { type ='value', },
["GL_CONFORMANT_NV"] = { type ='value', },
["GL_MAX_SHININESS_NV"] = { type ='value', },
["GL_MAX_SPOT_EXPONENT_NV"] = { type ='value', },
["GL_COLOR_SAMPLES_NV"] = { type ='value', },
["GL_MULTISAMPLE_FILTER_HINT_NV"] = { type ='value', },
["GL_PIXEL_COUNTER_BITS_NV"] = { type ='value', },
["GL_CURRENT_OCCLUSION_QUERY_ID_NV"] = { type ='value', },
@@ -7991,19 +8120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_RELATIVE_LARGE_CCW_ARC_TO_NV"] = { type ='value', },
["GL_LARGE_CW_ARC_TO_NV"] = { type ='value', },
["GL_RELATIVE_LARGE_CW_ARC_TO_NV"] = { type ='value', },
["GL_CONIC_CURVE_TO_NV"] = { type ='value', },
["GL_RELATIVE_CONIC_CURVE_TO_NV"] = { type ='value', },
["GL_GLYPH_VERTICAL_BEARING_X_BIT_NV"] = { type ='value', },
["GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV"] = { type ='value', },
["GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV"] = { type ='value', },
["GL_ROUNDED_RECT_NV"] = { type ='value', },
["GL_RELATIVE_ROUNDED_RECT_NV"] = { type ='value', },
["GL_ROUNDED_RECT2_NV"] = { type ='value', },
["GL_RELATIVE_ROUNDED_RECT2_NV"] = { type ='value', },
["GL_ROUNDED_RECT4_NV"] = { type ='value', },
["GL_RELATIVE_ROUNDED_RECT4_NV"] = { type ='value', },
["GL_ROUNDED_RECT8_NV"] = { type ='value', },
["GL_RELATIVE_ROUNDED_RECT8_NV"] = { type ='value', },
["GL_RESTART_PATH_NV"] = { type ='value', },
["GL_DUP_FIRST_CUBIC_CURVE_TO_NV"] = { type ='value', },
["GL_DUP_LAST_CUBIC_CURVE_TO_NV"] = { type ='value', },
["GL_RECT_NV"] = { type ='value', },
["GL_RELATIVE_RECT_NV"] = { type ='value', },
["GL_CIRCULAR_CCW_ARC_TO_NV"] = { type ='value', },
["GL_CIRCULAR_CW_ARC_TO_NV"] = { type ='value', },
["GL_CIRCULAR_TANGENT_ARC_TO_NV"] = { type ='value', },
["GL_ARC_TO_NV"] = { type ='value', },
["GL_RELATIVE_ARC_TO_NV"] = { type ='value', },
["GL_GLYPH_HAS_KERNING_BIT_NV"] = { type ='value', },
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
["GL_PATH_FORMAT_SVG_NV"] = { type ='value', },
["GL_PATH_FORMAT_PS_NV"] = { type ='value', },
["GL_STANDARD_FONT_NAME_NV"] = { type ='value', },
@@ -8025,6 +8166,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_PATH_FILL_COVER_MODE_NV"] = { type ='value', },
["GL_PATH_STROKE_COVER_MODE_NV"] = { type ='value', },
["GL_PATH_STROKE_MASK_NV"] = { type ='value', },
["GL_PATH_STROKE_BOUND_NV"] = { type ='value', },
["GL_COUNT_UP_NV"] = { type ='value', },
["GL_COUNT_DOWN_NV"] = { type ='value', },
["GL_PATH_OBJECT_BOUNDING_BOX_NV"] = { type ='value', },
@@ -8073,6 +8215,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV"] = { type ='value', },
["GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV"] = { type ='value', },
["GL_PATH_COVER_DEPTH_FUNC_NV"] = { type ='value', },
["GL_FONT_GLYPHS_AVAILABLE_NV"] = { type ='value', },
["GL_FONT_TARGET_UNAVAILABLE_NV"] = { type ='value', },
["GL_FONT_UNAVAILABLE_NV"] = { type ='value', },
["GL_FONT_UNINTELLIGIBLE_NV"] = { type ='value', },
["GL_STANDARD_FONT_FORMAT_NV"] = { type ='value', },
["GL_FRAGMENT_INPUT_NV"] = { type ='value', },
["GL_FONT_X_MIN_BOUNDS_BIT_NV"] = { type ='value', },
["GL_FONT_Y_MIN_BOUNDS_BIT_NV"] = { type ='value', },
["GL_FONT_X_MAX_BOUNDS_BIT_NV"] = { type ='value', },
@@ -8086,6 +8234,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_FONT_UNDERLINE_POSITION_BIT_NV"] = { type ='value', },
["GL_FONT_UNDERLINE_THICKNESS_BIT_NV"] = { type ='value', },
["GL_FONT_HAS_KERNING_BIT_NV"] = { type ='value', },
["GL_FONT_NUM_GLYPH_INDICES_BIT_NV"] = { type ='value', },
["GL_SHARED_EDGE_NV"] = { type ='value', },
["GL_WRITE_PIXEL_DATA_RANGE_NV"] = { type ='value', },
["GL_READ_PIXEL_DATA_RANGE_NV"] = { type ='value', },
["GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV"] = { type ='value', },
@@ -8109,7 +8259,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_VARIABLE_G_NV"] = { type ='value', },
["GL_CONSTANT_COLOR0_NV"] = { type ='value', },
["GL_CONSTANT_COLOR1_NV"] = { type ='value', },
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
["GL_SPARE0_NV"] = { type ='value', },
["GL_SPARE1_NV"] = { type ='value', },
["GL_DISCARD_NV"] = { type ='value', },
@@ -8150,6 +8299,14 @@ extern GLboolean __GLEW_WIN_swap_hint;
["GL_COMBINER6_NV"] = { type ='value', },
["GL_COMBINER7_NV"] = { type ='value', },
["GL_PER_STAGE_CONSTANTS_NV"] = { type ='value', },
["GL_SAMPLE_LOCATION_NV"] = { type ='value', },
["GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV"] = { type ='value', },
["GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV"] = { type ='value', },
["GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV"] = { type ='value', },
["GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV"] = { type ='value', },
["GL_PROGRAMMABLE_SAMPLE_LOCATION_NV"] = { type ='value', },
["GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV"] = { type ='value', },
["GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV"] = { type ='value', },
["GL_BUFFER_GPU_ADDRESS_NV"] = { type ='value', },
["GL_GPU_ADDRESS_NV"] = { type ='value', },
["GL_MAX_SHADER_BUFFER_ADDRESS_NV"] = { type ='value', },
@@ -11518,6 +11675,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLclampf value)", },
["glGetGraphicsResetStatus"] = { type ='function',
description = "",
returns = "(GLenum)",
valuetype = nil,
args = "(void)", },
["glDebugMessageEnableAMD"] = { type ='function',
description = "",
returns = "()",
@@ -12033,6 +12195,26 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLuint renderbuffer, GLenum pname, GLint* params)", },
["glGetQueryBufferObjecti64v"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
["glGetQueryBufferObjectiv"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
["glGetQueryBufferObjectui64v"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
["glGetQueryBufferObjectuiv"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
["glGetTextureImage"] = { type ='function',
description = "",
returns = "()",
@@ -12893,11 +13075,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLenum mode)", },
["glGetGraphicsResetStatusARB"] = { type ='function',
description = "",
returns = "(GLenum)",
valuetype = nil,
args = "(void)", },
["glGetnColorTableARB"] = { type ='function',
description = "",
returns = "()",
@@ -15083,6 +15260,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLenum pname, GLint value)", },
["glSubpixelPrecisionBiasNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint xbits, GLuint ybits)", },
["glClearDepthdNV"] = { type ='function',
description = "",
returns = "()",
@@ -15193,6 +15375,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "(GLboolean)",
valuetype = nil,
args = "(GLuint fence)", },
["glFragmentCoverageColorNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint color)", },
["glGetProgramNamedParameterdvNV"] = { type ='function',
description = "",
returns = "()",
@@ -15693,6 +15880,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(const GLhalf* weight)", },
["glGetInternalformatSampleivNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params)", },
["glBeginOcclusionQueryNV"] = { type ='function',
description = "",
returns = "()",
@@ -15752,7 +15944,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
["glCoverFillPathNV"] = { type ='function',
description = "",
returns = "()",
@@ -15762,12 +15954,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
["glCoverStrokePathNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLenum coverMode)", },
args = "(GLuint path, GLenum coverMode)", },
["glDeletePathsNV"] = { type ='function',
description = "",
returns = "()",
@@ -15792,17 +15984,17 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLubyte* commands)", },
args = "(GLuint path, GLubyte* commands)", },
["glGetPathCoordsNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLfloat* coords)", },
args = "(GLuint path, GLfloat* coords)", },
["glGetPathDashArrayNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLfloat* dashArray)", },
args = "(GLuint path, GLfloat* dashArray)", },
["glGetPathLengthNV"] = { type ='function',
description = "",
returns = "(GLfloat)",
@@ -15812,27 +16004,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
args = "(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
["glGetPathMetricsNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
["glGetPathParameterfvNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLenum param, GLfloat* value)", },
args = "(GLuint path, GLenum pname, GLfloat* value)", },
["glGetPathParameterivNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint name, GLenum param, GLint* value)", },
args = "(GLuint path, GLenum pname, GLint* value)", },
["glGetPathSpacingNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
["glGetPathTexGenfvNV"] = { type ='function',
description = "",
returns = "()",
@@ -15843,6 +16035,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLenum texCoordSet, GLenum pname, GLint* value)", },
["glGetProgramResourcefvNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params)", },
["glInterpolatePathsNV"] = { type ='function',
description = "",
returns = "()",
@@ -15863,6 +16060,36 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "(GLboolean)",
valuetype = nil,
args = "(GLuint path, GLfloat x, GLfloat y)", },
["glMatrixLoad3x2fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glMatrixLoad3x3fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glMatrixLoadTranspose3x3fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glMatrixMult3x2fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glMatrixMult3x3fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glMatrixMultTranspose3x3fNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum matrixMode, const GLfloat* m)", },
["glPathColorGenNV"] = { type ='function',
description = "",
returns = "()",
@@ -15877,7 +16104,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords)", },
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)", },
["glPathCoverDepthFuncNV"] = { type ='function',
description = "",
returns = "()",
@@ -15893,16 +16120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLenum genMode)", },
["glPathGlyphIndexArrayNV"] = { type ='function',
description = "",
returns = "(GLenum)",
valuetype = nil,
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
["glPathGlyphIndexRangeNV"] = { type ='function',
description = "",
returns = "(GLenum)",
valuetype = nil,
args = "(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2])", },
["glPathGlyphRangeNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
["glPathGlyphsNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
["glPathMemoryGlyphIndexArrayNV"] = { type ='function',
description = "",
returns = "(GLenum)",
valuetype = nil,
args = "(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
["glPathParameterfNV"] = { type ='function',
description = "",
returns = "()",
@@ -15937,7 +16179,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLenum format, GLsizei length, const void* pathString)", },
args = "(GLuint path, GLenum format, GLsizei length, const void *pathString)", },
["glPathSubCommandsNV"] = { type ='function',
description = "",
returns = "()",
@@ -15947,7 +16189,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords)", },
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)", },
["glPathTexGenNV"] = { type ='function',
description = "",
returns = "()",
@@ -15958,11 +16200,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "(GLboolean)",
valuetype = nil,
args = "(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)", },
["glProgramPathFragmentInputGenNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs)", },
["glStencilFillPathInstancedNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
["glStencilFillPathNV"] = { type ='function',
description = "",
returns = "()",
@@ -15972,12 +16219,32 @@ extern GLboolean __GLEW_WIN_swap_hint;
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
["glStencilStrokePathNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLint reference, GLuint mask)", },
["glStencilThenCoverFillPathInstancedNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
["glStencilThenCoverFillPathNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)", },
["glStencilThenCoverStrokePathInstancedNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
["glStencilThenCoverStrokePathNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint path, GLint reference, GLuint mask, GLenum coverMode)", },
["glTransformPathNV"] = { type ='function',
description = "",
returns = "()",
@@ -16108,6 +16375,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
returns = "()",
valuetype = nil,
args = "(GLenum stage, GLenum pname, GLfloat* params)", },
["glFramebufferSampleLocationsfvNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLenum target, GLuint start, GLsizei count, const GLfloat* v)", },
["glNamedFramebufferSampleLocationsfvNV"] = { type ='function',
description = "",
returns = "()",
valuetype = nil,
args = "(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)", },
["glGetBufferParameterui64vNV"] = { type ='function',
description = "",
returns = "()",

View File

@@ -1,12 +1,19 @@
#!/bin/bash
if [ "$(uname -m)" = "x86_64" ]; then
FPIC="-fpic"
ARCH="x64"
else
FPIC=""
ARCH="x86"
fi
case "$(uname -m)" in
x86_64)
FPIC="-fpic"
ARCH="x64"
;;
armv7l)
FPIC="-fpic"
ARCH="armhf"
;;
*)
FPIC=""
ARCH="x86"
;;
esac
# ZBS binary directory
BIN_DIR="$(dirname "$PWD")/bin/linux/$ARCH"

View File

@@ -24,7 +24,6 @@ return {
["&Fold/Unfold All"] = "全 折叠/展开", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = nil, -- src\editor\menu_help.lua
["&Getting Started Guide"] = nil, -- src\editor\menu_help.lua
["&Go To Line..."] = "到...行", -- src\editor\menu_search.lua
["&Help"] = "帮助", -- src\editor\menu_help.lua
["&New Directory"] = nil, -- src\editor\filetree.lua
["&New"] = "新建", -- src\editor\menu_file.lua
@@ -57,8 +56,8 @@ return {
["Add Watch Expression"] = "添加监视表达式", -- src\editor\editor.lua
["All files"] = "全部文件", -- src\editor\commands.lua
["Allow external process to start debugging"] = "允许外部进程开启除错", -- src\editor\menu_project.lua
["Analyze the source code"] = "分析源代码", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "分析", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "分析源代码", -- src\editor\inspect.lua
["Analyze"] = "分析", -- src\editor\inspect.lua
["Auto Complete Identifiers"] = "自动补全标识符", -- src\editor\menu_edit.lua
["Auto complete while typing"] = "当输入时自动补全", -- src\editor\menu_edit.lua
["Bookmark"] = nil, -- src\editor\menu_edit.lua
@@ -107,7 +106,7 @@ return {
["Debugger server stopped at %s:%d."] = nil, -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "除错会话完成 (%s)", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "除错会话于 '%s' 起始", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "除错挂起于 %s:%s (不能激活文档).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "除错挂起于 '%s:%s' (不能激活文档).", -- src\editor\debugger.lua
["Detach &Process"] = nil, -- src\editor\menu_project.lua
["Directory"] = "文件夹", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = nil, -- src\editor\filetree.lua
@@ -117,7 +116,6 @@ return {
["E&xit"] = "离开", -- src\editor\menu_file.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 line number"] = "输入行号码", -- src\editor\menu_search.lua
["Enter replacement text"] = nil, -- src\editor\editor.lua
["Error while loading API file: %s"] = "导入API档时出错误: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "导入configuration档时出错误: %s", -- src\editor\style.lua
@@ -140,6 +138,7 @@ return {
["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 text in files"] = "在文档中查找text", -- src\editor\menu_search.lua
@@ -152,13 +151,19 @@ return {
["Found"] = "找到", -- src\editor\findreplace.lua
["Full &Screen"] = "全屏", -- src\editor\menu_view.lua
["Go To Definition"] = nil, -- src\editor\editor.lua
["Go To Line"] = "到...行", -- src\editor\menu_search.lua
["Go To File..."] = nil, -- src\editor\menu_search.lua
["Go To Line..."] = "到...行", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = nil, -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = nil, -- src\editor\menu_edit.lua
["Go to a selected line"] = "到所选的行", -- src\editor\menu_search.lua
["Go To Symbol..."] = nil, -- src\editor\menu_search.lua
["Go to file"] = nil, -- src\editor\menu_search.lua
["Go to line"] = "到...行", -- src\editor\menu_search.lua
["Go to symbol"] = nil, -- src\editor\menu_search.lua
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
["INS"] = "INS", -- src\editor\editor.lua
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.lua
["In Files"] = "在档案里", -- src\editor\findreplace.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
@@ -167,6 +172,7 @@ return {
["Match &case"] = "case匹配", -- src\editor\findreplace.lua
["Match &whole word"] = "全句匹配", -- src\editor\findreplace.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
@@ -212,6 +218,7 @@ return {
["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
["S&top Debugging"] = "停止除错", -- src\editor\menu_project.lua
["S&top Process"] = "停止进程", -- src\editor\menu_project.lua
@@ -230,8 +237,8 @@ return {
["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 And Find Next"] = nil, -- src\editor\menu_search.lua
["Select And Find Previous"] = nil, -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = nil, -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = nil, -- src\editor\menu_search.lua
["Set From Current File"] = "从当前文档设置", -- src\editor\menu_project.lua
@@ -241,7 +248,11 @@ return {
["Settings: System"] = "设置: 系统", -- src\editor\menu_edit.lua
["Settings: User"] = "设置: 用户", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "展现tooltip", -- src\editor\menu_edit.lua
["Show All Files"] = nil, -- src\editor\filetree.lua
["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 files previously hidden"] = nil, -- src\editor\filetree.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

View File

@@ -25,7 +25,6 @@ return {
["&Fold/Unfold All"] = "A&lles ein-/ausklappen", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = "&FAQ", -- src\editor\menu_help.lua
["&Getting Started Guide"] = "&Anfängerleitfaden", -- src\editor\menu_help.lua
["&Go To Line..."] = "&Gehe zu Zeile...", -- src\editor\menu_search.lua
["&Help"] = "&Hilfe", -- src\editor\menu_help.lua
["&New Directory"] = "&Neuer Ordner", -- src\editor\filetree.lua
["&New"] = "&Neu", -- src\editor\menu_file.lua
@@ -58,8 +57,8 @@ return {
["Add Watch Expression"] = "Beobachtungspunkt hinzufügen", -- src\editor\editor.lua
["All files"] = "Alle Dateien", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Externem Prozeß erlauben, den Debugger zu starten", -- src\editor\menu_project.lua
["Analyze the source code"] = "Quellcode analysieren", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "&Analyseroutine", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "Quellcode analysieren", -- src\editor\inspect.lua
["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
["Bookmark"] = "Lese&zeichen", -- src\editor\menu_edit.lua
@@ -108,7 +107,7 @@ return {
["Debugger server stopped at %s:%d."] = "Debugserver gestoppt als %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Debugging Session beendet (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Debugging Session gestartet '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Debugging angehalten bei %s:%s (konnte Datei nicht aktivieren).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Debugging angehalten bei '%s:%s' (konnte Datei nicht aktivieren).", -- src\editor\debugger.lua
["Detach &Process"] = "Prozeß abkoppeln", -- src\editor\menu_project.lua
["Directory"] = "Verzeichnis", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Soll '%s' gelöscht werden?", -- src\editor\filetree.lua
@@ -118,7 +117,6 @@ return {
["E&xit"] = "&Beenden", -- src\editor\menu_file.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 line number"] = "Zeilennummer eingeben", -- src\editor\menu_search.lua
["Enter replacement text"] = "Neuen Text eingeben", -- src\editor\editor.lua
["Error while loading API file: %s"] = "Fehler beim Laden von API-Datei: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Fehler beim Laden von Konfigurationsdatei: %s", -- src\editor\style.lua
@@ -141,6 +139,7 @@ return {
["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 text in files"] = "Finde Text in Dateien", -- src\editor\menu_search.lua
@@ -153,13 +152,19 @@ return {
["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 Line"] = "Gehe zu Zeile", -- src\editor\menu_search.lua
["Go To File..."] = "Gehe zu Datei...", -- src\editor\menu_search.lua
["Go To Line..."] = "Gehe zu Zeile...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Zu nächstem Lesezeichen", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Zu vorherigem Lesezeichen", -- src\editor\menu_edit.lua
["Go to a selected line"] = "Gehe zu ausgewählter Zeile", -- src\editor\menu_search.lua
["Go To Symbol..."] = "Gehe zu Symbol...", -- src\editor\menu_search.lua
["Go to file"] = "Gehe zu Datei", -- src\editor\menu_search.lua
["Go to line"] = "Gehe zu Zeile", -- src\editor\menu_search.lua
["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
["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
["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
@@ -168,6 +173,7 @@ return {
["Match &case"] = "&Groß-/Kleinschreibung", -- src\editor\findreplace.lua
["Match &whole word"] = "Ganzes &Wort", -- src\editor\findreplace.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
@@ -213,6 +219,7 @@ return {
["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
["S&top Debugging"] = "Debugging a&nhalten", -- src\editor\menu_project.lua
["S&top Process"] = "Prozeß &anhalten", -- src\editor\menu_project.lua
@@ -231,8 +238,8 @@ return {
["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 And Find Next"] = "Auswählen und nächstes finden", -- src\editor\menu_search.lua
["Select And Find Previous"] = "Auswählen und vorheriges finden", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Wort unter dem Cursor auswählen und nächstes Auftauchen finden", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Wort unter dem Cursor auswählen und vorheriges Auftauchen finden", -- src\editor\menu_search.lua
["Set From Current File"] = "Anhand der aktuellen Datei festlegen", -- src\editor\menu_project.lua
@@ -242,7 +249,11 @@ return {
["Settings: System"] = "Einstellungen: System", -- src\editor\menu_edit.lua
["Settings: User"] = "Einstellungen: Nutzer", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "&Tooltip zeigen", -- src\editor\menu_edit.lua
["Show All Files"] = "Zeige alle Dateien", -- src\editor\filetree.lua
["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 files previously hidden"] = "Zeige Dateien die zuvor versteckt wurden", -- src\editor\filetree.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

View File

@@ -26,7 +26,6 @@ return {
["&Fold/Unfold All"] = "&Kaŝi/Malkaŝi ĉion", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = "&Oftaj demandoj", -- src\editor\menu_help.lua
["&Getting Started Guide"] = "&Ekgvidilo", -- src\editor\menu_help.lua
["&Go To Line..."] = "&Iri al linio...", -- src\editor\menu_search.lua
["&Help"] = "&Helpo", -- src\editor\menu_help.lua
["&New Directory"] = "&Nova dosierujo", -- src\editor\filetree.lua
["&New"] = "&Nova paĝo", -- src\editor\menu_file.lua
@@ -59,8 +58,8 @@ return {
["Add Watch Expression"] = "Aldoni observadaĵan esprimon", -- src\editor\editor.lua
["All files"] = "Ĉiuj dosieroj", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Lasi eksteran procezon ek-sencimigi", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analizi fontkodon", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "Analizi", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "Analizi fontkodon", -- src\editor\inspect.lua
["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
["Bookmark"] = "Legosigno", -- src\editor\menu_edit.lua
@@ -109,7 +108,7 @@ return {
["Debugger server stopped at %s:%d."] = "Sencimigilo-servilon malfunkciiĝis ĉe %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Sencimiga seanco estas finita (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Sencimiga seanco komencitas en '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "La sencimigo estis finetita ĉe %s:%s (ne povis aktivi la dosieron).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "La sencimigo estis finetita ĉe '%s:%s' (ne povis aktivi la dosieron).", -- src\editor\debugger.lua
["Detach &Process"] = "Deigi &procezon", -- src\editor\menu_project.lua
["Directory"] = "Dosierujo", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Ĉu vi volas forigi je '%s'?", -- src\editor\filetree.lua
@@ -119,7 +118,6 @@ return {
["E&xit"] = "&Eliri", -- src\editor\menu_file.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 line number"] = "Enigu linian numeron", -- src\editor\menu_search.lua
["Enter replacement text"] = "Enigu anstataŭigan tekston", -- src\editor\editor.lua
["Error while loading API file: %s"] = "Eraro okazis dum ŝargado de API-a dosiero: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Eraro okazis dum ŝargado de agorda dosiero: %s", -- src\editor\style.lua
@@ -142,6 +140,7 @@ return {
["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 text in files"] = "Traserĉi tekston en dosieroj", -- src\editor\menu_search.lua
@@ -154,13 +153,19 @@ return {
["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 Line"] = "Iri al linio", -- src\editor\menu_search.lua
["Go To File..."] = nil, -- src\editor\menu_search.lua
["Go To Line..."] = "Iri al linio...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Iri al sekvanta legosigno", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Iri al antaŭanta legosigno", -- src\editor\menu_edit.lua
["Go to a selected line"] = "Iri al elektita linio", -- src\editor\menu_search.lua
["Go To Symbol..."] = nil, -- src\editor\menu_search.lua
["Go to file"] = nil, -- src\editor\menu_search.lua
["Go to line"] = "Iri al linio", -- src\editor\menu_search.lua
["Go to symbol"] = nil, -- src\editor\menu_search.lua
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
["INS"] = "INS", -- src\editor\editor.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
["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
@@ -169,6 +174,7 @@ return {
["Match &case"] = "Atenti &usklecon", -- src\editor\findreplace.lua
["Match &whole word"] = "Atenti &plenan vorton", -- src\editor\findreplace.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
@@ -214,6 +220,7 @@ return {
["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
["S&top Debugging"] = "&Fini sencimigo", -- src\editor\menu_project.lua
["S&top Process"] = "&Fini procezon", -- src\editor\menu_project.lua
@@ -232,8 +239,8 @@ return {
["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 And Find Next"] = "Elekti kaj pluserĉi", -- src\editor\menu_search.lua
["Select And Find Previous"] = "Elekti kaj traserĉi antaŭantan", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Elekti la vorton sub la tajpmontrilo, kaj pluserĉi", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Elekti la vorton sub la tajpmontrilo, kaj traserĉi antaŭantan", -- src\editor\menu_search.lua
["Set From Current File"] = "Precizigi per la kuranta dosiero", -- src\editor\menu_project.lua
@@ -243,7 +250,11 @@ return {
["Settings: System"] = "Agordoj de la sistemo", -- src\editor\menu_edit.lua
["Settings: User"] = "Agordoj de la uzanto", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Montri &ŝpruchelpilon", -- src\editor\menu_edit.lua
["Show All Files"] = nil, -- src\editor\filetree.lua
["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 files previously hidden"] = nil, -- src\editor\filetree.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

View File

@@ -26,7 +26,6 @@ return {
["&Fold/Unfold All"] = "Plegar/desplegar todo", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = nil, -- src\editor\menu_help.lua
["&Getting Started Guide"] = nil, -- src\editor\menu_help.lua
["&Go To Line..."] = "Ir a línea...", -- src\editor\menu_search.lua
["&Help"] = "Ayuda", -- src\editor\menu_help.lua
["&New Directory"] = nil, -- src\editor\filetree.lua
["&New"] = "&Nuevo", -- src\editor\menu_file.lua
@@ -59,8 +58,8 @@ return {
["Add Watch Expression"] = "Añadir expresión de observación", -- src\editor\editor.lua
["All files"] = "Todos los archivos", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Permitir proceso externo para iniciar depuración", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analizar el código fuente", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "Analizar", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "Analizar el código fuente", -- src\editor\inspect.lua
["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
["Bookmark"] = nil, -- src\editor\menu_edit.lua
@@ -109,7 +108,7 @@ return {
["Debugger server stopped at %s:%d."] = nil, -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Sesión de depuración completada (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Sesión de depuración iniciada en '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = nil, -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = nil, -- src\editor\debugger.lua
["Detach &Process"] = nil, -- src\editor\menu_project.lua
["Directory"] = nil, -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = nil, -- src\editor\filetree.lua
@@ -119,7 +118,6 @@ return {
["E&xit"] = "Salir", -- src\editor\menu_file.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 line number"] = "Introduce número de línea", -- src\editor\menu_search.lua
["Enter replacement text"] = nil, -- src\editor\editor.lua
["Error while loading API file: %s"] = "Error mientras se cargaba el archivo de API: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = nil, -- src\editor\style.lua
@@ -142,6 +140,7 @@ return {
["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 text in files"] = "Buscar texto en archivos", -- src\editor\menu_search.lua
@@ -154,13 +153,19 @@ return {
["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 Line"] = "Ir a línea", -- src\editor\menu_search.lua
["Go To File..."] = nil, -- src\editor\menu_search.lua
["Go To Line..."] = "Ir a línea...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = nil, -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = nil, -- src\editor\menu_edit.lua
["Go to a selected line"] = "Ir a línea seleccionada", -- src\editor\menu_search.lua
["Go To Symbol..."] = nil, -- src\editor\menu_search.lua
["Go to file"] = nil, -- src\editor\menu_search.lua
["Go to line"] = "Ir a línea", -- src\editor\menu_search.lua
["Go to symbol"] = nil, -- src\editor\menu_search.lua
["Hide '.%s' Files"] = nil, -- src\editor\filetree.lua
["INS"] = "INS", -- src\editor\editor.lua
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.lua
["In Files"] = nil, -- src\editor\findreplace.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
@@ -169,6 +174,7 @@ return {
["Match &case"] = nil, -- src\editor\findreplace.lua
["Match &whole word"] = nil, -- src\editor\findreplace.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
@@ -214,6 +220,7 @@ return {
["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
["S&top Debugging"] = "Parar depuración", -- src\editor\menu_project.lua
["S&top Process"] = "Parar proceso", -- src\editor\menu_project.lua
@@ -232,8 +239,8 @@ return {
["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 And Find Next"] = nil, -- src\editor\menu_search.lua
["Select And Find Previous"] = nil, -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = nil, -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = nil, -- src\editor\menu_search.lua
["Set From Current File"] = nil, -- src\editor\menu_project.lua
@@ -243,7 +250,11 @@ return {
["Settings: System"] = nil, -- src\editor\menu_edit.lua
["Settings: User"] = nil, -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Ver tooltip", -- src\editor\menu_edit.lua
["Show All Files"] = nil, -- src\editor\filetree.lua
["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 files previously hidden"] = nil, -- src\editor\filetree.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

View File

@@ -2,7 +2,7 @@ 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
["&About"] = "À &propos", -- src\editor\menu_help.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
@@ -15,7 +15,7 @@ return {
["&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"] = nil, -- src\editor\debugger.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
@@ -23,16 +23,15 @@ return {
["&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"] = "&Questions Fréquemment Posées" , -- src\editor\menu_help.lua
["&Getting Started Guide"] = "&Guide de Prise en Main", -- src\editor\menu_help.lua
["&Go To Line..."] = "&Aller à la ligne...", -- src\editor\menu_search.lua
["&Frequently Asked Questions"] = "&Foire aux questions" , -- src\editor\menu_help.lua
["&Getting Started Guide"] = "&Guide de prise en main", -- src\editor\menu_help.lua
["&Help"] = "Aid&e", -- src\editor\menu_help.lua
["&New Directory"] = "&Nouveau Répertoire", -- src\editor\filetree.lua
["&New Directory"] = "&Nouveau répertoire", -- src\editor\filetree.lua
["&New"] = "&Nouveau", -- src\editor\menu_file.lua
["&Open..."] = "&Ouvrir...", -- src\editor\menu_file.lua
["&Output/Console Window"] = "&Sortie/Console", -- src\editor\menu_view.lua
["&Paste"] = "Co&ller", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
["&Project Page"] = "&Site Web de ZeroBrane", -- src\editor\menu_help.lua
["&Project Page"] = "&Site web de ZeroBrane", -- src\editor\menu_help.lua
["&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
@@ -44,122 +43,128 @@ return {
["&Sort"] = "&Trier", -- src\editor\menu_edit.lua
["&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
["&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
["&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"] = "&Expressions espionnes", -- 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", -- src\editor\editor.lua
["Add Watch Expression"] = "Ajouter une expression espionne", -- src\editor\editor.lua
["All files"] = "Tous les fichiers", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Autoriser les processus externes à lancer le débogage", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analyser le code source", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "Analyser", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Allow external process to start debugging"] = "Autorise les processus externes à lancer le débogage", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analyse le code source", -- src\editor\inspect.lua
["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éter lors de la saisie", -- src\editor\menu_edit.lua
["Bookmark"] = "&Marque-pages", -- src\editor\menu_edit.lua
["Break execution at the next executed line of code"] = "Interrompre l'exécution à la ligne suivante", -- src\editor\menu_project.lua
["Auto complete while typing"] = "Auto-complète lors de la saisie", -- src\editor\menu_edit.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
["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."] = nil, -- 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"] = nil, -- src\editor\singleinstance.lua
["Can't open file '%s': %s"] = "Impossible d'ouvrir le fichier '%s': %s", -- src\editor\singleinstance.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 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 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
["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"] = "Choisissez un répertoire de projet", -- src\editor\findreplace.lua, src\editor\menu_project.lua, src\editor\filetree.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
["Clear items from this list"] = "Effacer les éléments de cette liste", -- src\editor\menu_file.lua
["Clear the output window before compiling or debugging"] = "Effacer la fenêtre de sortie avant compilation ou débogage", -- src\editor\menu_project.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
["Close A&ll Pages"] = "Fermer &toutes les pages", -- src\editor\gui.lua
["Close the current editor window"] = "Fermer la fenêtre d'édition active", -- src\editor\menu_file.lua
["Close the current editor window"] = "Ferme la fenêtre d'édition courante", -- src\editor\menu_file.lua
["Co&ntinue"] = "Co&ntinuer", -- src\editor\menu_project.lua
["Col: %d"] = "Col : %d", -- src\editor\editor.lua
["Command Line Parameters..."] = "Paramètres de Ligne de Commande...", -- src\editor\menu_project.lua
["Command Line Parameters..."] = "Paramètres de ligne de commande...", -- src\editor\menu_project.lua
["Command line parameters"] = "Paramètres de ligne de commande", -- src\editor\menu_project.lua
["Comment or uncomment current or selected lines"] = "Commenter ou décommenter les lignes courantes ou sélectionnées", -- src\editor\menu_edit.lua
["Comment or uncomment current or selected lines"] = "Commente ou décommente les lignes courantes ou sélectionnées", -- src\editor\menu_edit.lua
["Compilation error"] = "Erreur de compilation", -- src\editor\commands.lua, src\editor\debugger.lua
["Compilation successful; %.0f%% success rate (%d/%d)."] = "Compilation réussie ; taux de succès : %.0f%% (%d/%d).", -- src\editor\commands.lua
["Compile the current file"] = "Сompiler le fichier courant", -- src\editor\menu_project.lua
["Compile the current file"] = "Сompile le fichier courant", -- src\editor\menu_project.lua
["Complete &Identifier"] = "Compléter l'&identifiant", -- src\editor\menu_edit.lua
["Complete the current identifier"] = "Compléter l'identifiant courant", -- src\editor\menu_edit.lua
["Complete the current identifier"] = "Complète l'identifiant courant", -- src\editor\menu_edit.lua
["Consider removing backslash from escape sequence '%s'."] = "Essayez de supprimer les antislashs dans '%s'.", -- src\editor\commands.lua
["Copy Full Path"] = "Copier le chemin absolu", -- src\editor\gui.lua, src\editor\filetree.lua
["Copy selected text to clipboard"] = "Copier le texte sélectionné dans le presse-papiers", -- src\editor\menu_edit.lua
["Correct &Indentation"] = nil, -- src\editor\menu_edit.lua
["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éer un document vierge", -- src\editor\menu_file.lua
["Create an empty document"] = "Crée un document vierge", -- 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"] = "Couper le texte sélectionné et copier dans le presse-papiers", -- src\editor\menu_edit.lua
["Cut selected text to clipboard"] = "Coupe le texte sélectionné et le copie dans le presse-papiers", -- src\editor\menu_edit.lua
["Debugger server started at %s:%d."] = "Serveur de débogage démarré à %s:%d.", -- src\editor\debugger.lua
["Debugger server stopped at %s:%d."] = "Serveur de débogage stoppé à %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Session de débogage terminée (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Session de débogage démarrée dans '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Débogage interrompu à %s:%s (impossible d'activer le fichier).", -- src\editor\debugger.lua
["Detach &Process"] = "Détacher le &processus", -- src\editor\menu_project.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
["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 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
["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)"] = "Entrez des paramètres de ligne de commande (pressez Annuler pour effacer)", -- src\editor\menu_project.lua
["Enter line number"] = "Entrez le numéro de ligne", -- src\editor\menu_search.lua
["Enter replacement text"] = nil, -- src\editor\editor.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
["Error while loading API file: %s"] = "Erreur lors du chargement du fichier d'API : %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Erreur lors du chargement du fichier de configuration : %s", -- src\editor\style.lua
["Error while processing API file: %s"] = "Erreur lors de la lecture du fichier d'API : %s", -- src\editor\autocomplete.lua
["Error while processing configuration file: %s"] = "Erreur lors de la lecture du fichier de configuration : %s", -- src\editor\style.lua
["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écuter le projet/fichier courant en mettant le code à jour afin de voir les résultats en temps réel", -- src\editor\menu_project.lua
["Execute the current project/file"] = "Exécuter le projet/fichier courant", -- src\editor\menu_project.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
["Execution error"] = "Erreur d'exécution", -- src\editor\debugger.lua
["Exit program"] = "Quitter le programme", -- src\editor\menu_file.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."] = nil, -- 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 l'occurrence &suivante", -- src\editor\menu_search.lua
["Find &Previous"] = "Rechercher l'occurrence &précédente", -- 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 replace text in files"] = "Rechercher et remplacer le texte dans les fichiers", -- src\editor\menu_search.lua
["Find and replace text"] = "Rechercher et remplacer le texte", -- src\editor\menu_search.lua
["Find text in files"] = "Rechercher le texte dans les fichiers", -- src\editor\menu_search.lua
["Find text"] = "Rechercher le texte", -- src\editor\menu_search.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 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 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
["Fold or unfold all code folds"] = "Replier ou déplier tous les blocs de code", -- src\editor\menu_edit.lua
["Found auto-recovery record and restored saved session."] = "Une récupération automatique a été trouvé et la session a été restaurée.", -- src\editor\commands.lua
["Fold or unfold all code folds"] = "Replie ou déplie tous les blocs de code", -- src\editor\menu_edit.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
["Full &Screen"] = "Plein é&cran", -- src\editor\menu_view.lua
["Go To Definition"] = "Aller à la définition", -- src\editor\editor.lua
["Go To Line"] = "Aller à la ligne", -- src\editor\menu_search.lua
["Go To File..."] = "Aller au fichier...", -- src\editor\menu_search.lua
["Go To Line..."] = "Aller à la ligne...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Aller au marque-page suivant", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Aller au marque-page précédent", -- src\editor\menu_edit.lua
["Go to a selected line"] = "Aller à la ligne sélectionnée", -- src\editor\menu_search.lua
["Go To Symbol..."] = "Aller au symbole...", -- src\editor\menu_search.lua
["Go to file"] = "Permet d'accéder directement à un fichier", -- src\editor\menu_search.lua
["Go to line"] = "Permet d'accéder directement à une ligne", -- src\editor\menu_search.lua
["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
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.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
["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
@@ -167,21 +172,22 @@ return {
["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
["Mixed end-of-line encodings detected."] = "Plusieurs codages de fin de ligne détectés.", -- src\editor\commands.lua
["New &File"] = "Nouveau &Fichier", -- src\editor\filetree.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"] = "Ouvrir un document existant", -- src\editor\menu_file.lua
["Open an existing document"] = "Ouvre un document existant", -- src\editor\menu_file.lua
["Open file"] = "Ouvrir un fichier", -- src\editor\commands.lua
["Options"] = "Options", -- src\editor\findreplace.lua
["Outline Window"] = nil, -- src\editor\menu_view.lua
["Outline"] = nil, -- src\editor\outline.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
["Output (suspended)"] = nil, -- src\editor\debugger.lua
["Output (suspended)"] = "Sortie (interrompu)", -- src\editor\debugger.lua
["Output"] = "Sortie", -- src\editor\debugger.lua, src\editor\output.lua, src\editor\gui.lua, src\editor\settings.lua
["Paste text from the clipboard"] = "Coller le texte depuis le presse-papiers", -- src\editor\menu_edit.lua
["Paste text from the clipboard"] = "Colle le texte depuis le presse-papiers", -- src\editor\menu_edit.lua
["Preferences"] = "Préférences", -- src\editor\menu_edit.lua
["Prepend '!' to force local execution."] = nil, -- src\editor\shellbox.lua
["Prepend '!' to force local execution."] = "Préfixez par '!' pour forcer une execution locale.", -- src\editor\shellbox.lua
["Prepend '=' to show complex values on multiple lines."] = "Préfixez par '=' pour afficher les valeurs complexes sur plusieurs lignes.", -- src\editor\shellbox.lua
["Press cancel to abort."] = "Cliquez sur Annuler pour annuler.", -- src\editor\commands.lua
["Program '%s' started in '%s' (pid: %d)."] = "Programme '%s' démarré dans '%s' (pid : %d).", -- src\editor\output.lua
@@ -194,97 +200,102 @@ return {
["Project history"] = "Historique de projet", -- src\editor\menu_file.lua
["Project"] = "Projet", -- src\editor\filetree.lua
["Project/&FileTree Window"] = "&Explorateur de projet", -- src\editor\menu_view.lua
["Provide command line parameters"] = "Renseignez les paramètres de ligne de commande", -- src\editor\menu_project.lua
["Provide command line parameters"] = "Définit les paramètres de ligne de commande", -- src\editor\menu_project.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"] = nil, -- src\editor\menu_edit.lua
["Re-indent selected lines"] = "Ré-indente les lignes sélectionnées", -- src\editor\menu_edit.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établir la dernière modification", -- src\editor\menu_edit.lua
["Redo last edit undone"] = "Rétablit la dernière modification", -- src\editor\menu_edit.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
["Remote console"] = "Console à distance", -- src\editor\shellbox.lua
["Rename All Instances"] = "Renommer toutes les occurrences", -- src\editor\editor.lua
["Replace A&ll"] = "Remplacer &tout", -- src\editor\findreplace.lua
["Replace All Selections"] = nil, -- src\editor\editor.lua
["Replace All Selections"] = "Remplacer toutes les sélections", -- src\editor\editor.lua
["Replace"] = "Remplacer par ", -- 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"] = "Restaurer l'affichage par défaut", -- src\editor\menu_view.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
["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"] = "Enregistrer tous les documents ouverts", -- src\editor\menu_file.lua
["Save all open documents"] = "Enregistre tous les documents ouverts", -- 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"] = "Enregistrer le document courant sous un nouveau nom", -- src\editor\menu_file.lua
["Save the current document"] = "Enregistrer le document courant", -- src\editor\menu_file.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
["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
["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électionner tout le texte dans l'éditeur", -- src\editor\menu_edit.lua
["Select and Find Next"] = "Sélectionner et chercher le suivant", -- src\editor\menu_search.lua
["Select and Find Previous"] = "Sélectionner et chercher le précédent", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Sélectionner le mot sous le curseur et chercher son occurence suivante", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Sélectionner le mot sous le curseur et chercher son occurence précédente", -- src\editor\menu_search.lua
["Set From Current File"] = "Définir depuis le fichier courant", -- src\editor\menu_project.lua
["Set project directory from current file"] = "Définir le répertoire de projet depuis le fichier courant", -- src\editor\menu_project.lua
["Set the interpreter to be used"] = "Définir l'interpréteur à utiliser", -- src\editor\menu_project.lua
["Set the project directory to be used"] = "Définir le répertoire de projet à utiliser", -- src\editor\menu_project.lua, src\editor\filetree.lua
["Select all text in the editor"] = "Sélectionne tout le texte dans l'éditeur", -- src\editor\menu_edit.lua
["Select And Find Next"] = "Sélectionner et rechercher le suivant", -- src\editor\menu_search.lua
["Select And Find Previous"] = "Sélectionner et rerchercher le précédent", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Sélectionne le mot sous le curseur et recherche son occurence suivante", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Sélectionne le mot sous le curseur et recherche son occurence précédente", -- src\editor\menu_search.lua
["Set 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 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
["Settings: User"] = "Paramètres : Utilisateur", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Afficher l'info-&bulle", -- src\editor\menu_edit.lua
["Show All Files"] = "Afficher tous les fichiers", -- src\editor\filetree.lua
["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 tooltip for current position; place cursor after opening bracket of function"] = "Afficher l'info-bulle pour la position actuelle ; placez le curseur après la parenthèse ouvrante de la fonction", -- src\editor\menu_edit.lua
["Show/Hide the status bar"] = "Afficher/Masquer la barre de statut", -- src\editor\menu_view.lua
["Show/Hide the toolbar"] = "Afficher/Masquer la barre d'outils", -- src\editor\menu_view.lua
["Sort selected lines"] = "Trier les lignes sélectionnées", -- src\editor\menu_edit.lua
["Source"] = nil, -- src\editor\menu_edit.lua
["Show all files"] = "Affiche tous les fichiers", -- src\editor\filetree.lua
["Show files previously hidden"] = "Affiche les fichiers précédemment masqués", -- src\editor\filetree.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 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émarrer ou continuer le debogage", -- src\editor\menu_project.lua
["Start or continue debugging"] = "Démarre ou continue le debogage", -- 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"] = "Rentrer dans l'instruction suivante", -- src\editor\menu_project.lua
["Step out of the current function"] = "Sortir de la fonction courante", -- src\editor\menu_project.lua
["Step over"] = "Enjamber l'instruction suivante", -- src\editor\menu_project.lua
["Stop debugging and continue running the process"] = "Arrêter le débogage et continuer l'exécution du processus", -- src\editor\menu_project.lua
["Stop the currently running process"] = "Arrêter le processus en cours d'exécution", -- src\editor\menu_project.lua
["Switch to or from full screen mode"] = "Activer ou désactiver le mode plein écran", -- src\editor\menu_view.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
["Switch to or from full screen mode"] = "Active ou désactive le mode plein écran", -- src\editor\menu_view.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éer/Supprimer un marque-page", -- src\editor\menu_edit.lua
["Toggle breakpoint"] = "Créer ou 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
["Tr&ace"] = "&Tracer", -- src\editor\menu_project.lua
["Trace execution showing each executed line"] = "Tracer l'exécution en montrant chaque ligne de code exécutée", -- 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"] = nil, -- src\editor\filetree.lua
["Unable to delete directory '%s': %s"] = "Impossible de supprimer le répertoire '%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"] = "Annuler la dernière modification", -- src\editor\menu_edit.lua
["Undo last edit"] = "Annule la dernière modification", -- src\editor\menu_edit.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
["Use Shift-Enter for multiline code."] = "Appuyez sur <Shift-Entrée> pour du code multiligne.", -- src\editor\shellbox.lua
["View the outline window"] = nil, -- src\editor\menu_view.lua
["View the output/console window"] = "Afficher la fenêtre de sortie/console", -- src\editor\menu_view.lua
["View the project/filetree window"] = "Afficher la fenêtre d'explorateur de projet", -- src\editor\menu_view.lua
["View the stack window"] = "Afficher la fenêtre de pile d'exécution", -- src\editor\menu_view.lua
["View the watch window"] = "Afficher la fenêtre d'expressions espionnes", -- src\editor\menu_view.lua
["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
["Watch"] = "Expressions espionnes", -- src\editor\debugger.lua
["Welcome to the interactive Lua interpreter."] = "Bienvenue dans l´interpréteur interactif Lua.", -- src\editor\shellbox.lua
["Wrap ar&ound"] = "B&oucler", -- src\editor\findreplace.lua

View File

@@ -15,7 +15,7 @@ return {
["&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"] = nil, -- src\editor\debugger.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
@@ -25,7 +25,6 @@ return {
["&Fold/Unfold All"] = "Apri/Chiudi tutto", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = "Domande &Frequenti", -- src\editor\menu_help.lua
["&Getting Started Guide"] = "&Guida Introduttiva", -- src\editor\menu_help.lua
["&Go To Line..."] = "Vai a riga...", -- src\editor\menu_search.lua
["&Help"] = "Aiuto", -- src\editor\menu_help.lua
["&New Directory"] = "&Nuova Directory", -- src\editor\filetree.lua
["&New"] = "&Nuovo", -- src\editor\menu_file.lua
@@ -58,8 +57,8 @@ return {
["Add Watch Expression"] = "Aggiungi Espressione di Controllo", -- src\editor\editor.lua
["All files"] = "Tutti i files", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Permetti a processi esterni di avviare il debug", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analizza il codice", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "Analizza", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "Analizza il codice", -- src\editor\inspect.lua
["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
["Bookmark"] = "Segnalibro", -- src\editor\menu_edit.lua
@@ -67,9 +66,9 @@ return {
["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."] = nil, -- 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"] = nil, -- src\editor\singleinstance.lua
["Can't open file '%s': %s"] = "Impossibile aprire il file '%s': %s", -- src\editor\singleinstance.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 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
@@ -99,7 +98,7 @@ return {
["Consider removing backslash from escape sequence '%s'."] = "Prova a rimuovere i backslash dalla sequenza di escape '%s'.", -- src\editor\commands.lua
["Copy Full Path"] = "Copia Path Completo", -- src\editor\gui.lua, src\editor\filetree.lua
["Copy selected text to clipboard"] = "Copia il testo selezionato negli appunti", -- src\editor\menu_edit.lua
["Correct &Indentation"] = nil, -- 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
["Cu&t"] = "&Taglia", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
@@ -108,7 +107,7 @@ return {
["Debugger server stopped at %s:%d."] = "Server Debugger fermato %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Sessione di debug completata (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Sessione di debug iniziata da '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Debug sospeso a %s:%s (impossibile attivare il file).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Debug sospeso a '%s:%s' (impossibile attivare il file).", -- src\editor\debugger.lua
["Detach &Process"] = "Scollega Processo", -- src\editor\menu_project.lua
["Directory"] = "Directory", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Vuoi eliminare '%s'?", -- src\editor\filetree.lua
@@ -118,8 +117,7 @@ return {
["E&xit"] = "Uscita", -- src\editor\menu_file.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 line number"] = "Inserisci il numero di linea", -- src\editor\menu_search.lua
["Enter replacement text"] = nil, -- src\editor\editor.lua
["Enter replacement text"] = "Inserisci il testo da sostituire", -- src\editor\editor.lua
["Error while loading API file: %s"] = "Errore durante il caricamento del file API: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Errore nel caricamento del file di configurazione: %s", -- src\editor\style.lua
["Error while processing API file: %s"] = "Errore durante l'elaborazione del file API: %s", -- src\editor\autocomplete.lua
@@ -132,7 +130,7 @@ return {
["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."] = nil, -- 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
@@ -141,6 +139,7 @@ return {
["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 text in files"] = "Cerca testo nei files", -- src\editor\menu_search.lua
@@ -153,13 +152,19 @@ return {
["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 Line"] = "Vai alla riga", -- src\editor\menu_search.lua
["Go To File..."] = "Vai al File...", -- src\editor\menu_search.lua
["Go To Line..."] = "Vai a riga...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Vai al Prossimo Segnalibro", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Vai al Precedente Segnalibro", -- src\editor\menu_edit.lua
["Go to a selected line"] = "Vai alla riga selezionata", -- src\editor\menu_search.lua
["Go To Symbol..."] = "Vai al Simbolo...", -- src\editor\menu_search.lua
["Go to file"] = "Vai al file", -- src\editor\menu_search.lua
["Go to line"] = "Vai alla riga", -- src\editor\menu_search.lua
["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
["Ignored error in debugger initialization code: %s."] = nil, -- src\editor\debugger.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
["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
@@ -168,21 +173,22 @@ return {
["Match &case"] = "Maiuscole/Minuscole", -- src\editor\findreplace.lua
["Match &whole word"] = "Intera parola", -- src\editor\findreplace.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 file"] = "Apri un file", -- src\editor\commands.lua
["Options"] = "Opzioni", -- src\editor\findreplace.lua
["Outline Window"] = nil, -- src\editor\menu_view.lua
["Outline"] = nil, -- src\editor\outline.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
["Output (suspended)"] = nil, -- src\editor\debugger.lua
["Output (suspended)"] = "Output (sospeso)", -- src\editor\debugger.lua
["Output"] = "Output", -- src\editor\debugger.lua, src\editor\output.lua, src\editor\gui.lua, src\editor\settings.lua
["Paste text from the clipboard"] = "Incolla testo dagli appunti", -- src\editor\menu_edit.lua
["Preferences"] = "Preferenze", -- src\editor\menu_edit.lua
["Prepend '!' to force local execution."] = nil, -- src\editor\shellbox.lua
["Prepend '=' to show complex values on multiple lines."] = "Prefissa '=' per visualizzare valori complessi su piu` righe", -- src\editor\shellbox.lua
["Prepend '!' to force local execution."] = "Prefissa con '!' per forzare l'esecuzione locale", -- src\editor\shellbox.lua
["Prepend '=' to show complex values on multiple lines."] = "Prefissa con '=' per visualizzare valori complessi su piu` righe", -- src\editor\shellbox.lua
["Press cancel to abort."] = "Premi cancel per bloccare.", -- src\editor\commands.lua
["Program '%s' started in '%s' (pid: %d)."] = "Programma '%s' partito da '%s' (pid: %d).", -- src\editor\output.lua
["Program can't start because conflicting process is running as '%s'."] = "Il programma non puo' partire perchè in conflitto con il processo in esecuzione '%s'.", -- src\editor\output.lua
@@ -198,7 +204,7 @@ return {
["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"] = nil, -- src\editor\menu_edit.lua
["Re-indent selected lines"] = "Re-indenta le linee selezionate", -- src\editor\menu_edit.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
@@ -207,12 +213,13 @@ return {
["Remote console"] = "Console remota", -- src\editor\shellbox.lua
["Rename All Instances"] = "Rinomina tutte le occorrenze", -- src\editor\editor.lua
["Replace A&ll"] = "Sostituisci Tutto", -- src\editor\findreplace.lua
["Replace All Selections"] = nil, -- src\editor\editor.lua
["Replace All Selections"] = "Sostituisci Tutte le Selezioni", -- src\editor\editor.lua
["Replace"] = "Sostituisci", -- 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
["S&top Debugging"] = "Ferma il debugger", -- src\editor\menu_project.lua
["S&top Process"] = "Ferma il processo", -- src\editor\menu_project.lua
@@ -231,8 +238,8 @@ return {
["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 And Find Next"] = "Seleziona e trova successivo", -- src\editor\menu_search.lua
["Select And Find Previous"] = "Seleziona e trova precedente", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Seleziona la parola e trova successivo", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Seleziona la parola e trova precedente", -- src\editor\menu_search.lua
["Set From Current File"] = "Impostato da file corrente", -- src\editor\menu_project.lua
@@ -242,12 +249,16 @@ return {
["Settings: System"] = "Impostazioni: Sistema", -- src\editor\menu_edit.lua
["Settings: User"] = "Impostazioni: Utente", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Mos&tra i consigli", -- src\editor\menu_edit.lua
["Show All Files"] = "Mostra Tutti i File", -- src\editor\filetree.lua
["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 files previously hidden"] = "Mostra i file precedentemente nascosti", -- src\editor\filetree.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 selected lines"] = "Ordina le righe selezionate", -- src\editor\menu_edit.lua
["Source"] = nil, -- 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
@@ -270,7 +281,7 @@ return {
["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"] = nil, -- src\editor\filetree.lua
["Unable to delete directory '%s': %s"] = "Impossibile cancellare la directory '%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
@@ -280,7 +291,7 @@ return {
["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
["Use Shift-Enter for multiline code."] = "Premi <Shift-Invio> per inserire piu` righe di codice.", -- src\editor\shellbox.lua
["View the outline window"] = nil, -- src\editor\menu_view.lua
["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

313
cfg/i18n/pt-br.lua Normal file
View File

@@ -0,0 +1,313 @@
---
-- @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
["&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"] = "&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
["&Getting Started Guide"] = "Primeiros passos", -- src\editor\menu_help.lua
["&Help"] = "Ajuda", -- src\editor\menu_help.lua
["&New Directory"] = "&Nova pasta", -- src\editor\filetree.lua
["&New"] = "&Novo", -- src\editor\menu_file.lua
["&Open..."] = "Abrir...", -- src\editor\menu_file.lua
["&Output/Console Window"] = "Saída/Console", -- src\editor\menu_view.lua
["&Paste"] = "Colar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
["&Project Page"] = "&Página do projeto", -- src\editor\menu_help.lua
["&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
["&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
["&Sort"] = "Ordenar", -- src\editor\menu_edit.lua
["&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
["All files"] = "Todos os arquivos", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Permitir processo externo para iniciar a depuração", -- src\editor\menu_project.lua
["Analyze the source code"] = "Analisar o código-fonte", -- src\editor\inspect.lua
["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
["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
["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 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 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 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
["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
["Close A&ll Pages"] = "Fechar todas as guias", -- src\editor\gui.lua
["Close the current editor window"] = "Fechar janela do editor atual", -- src\editor\menu_file.lua
["Co&ntinue"] = "Co&ntinuar", -- src\editor\menu_project.lua
["Col: %d"] = "Col: %d", -- src\editor\editor.lua
["Command Line Parameters..."] = "Parâmetros da linha de comandos...", -- src\editor\menu_project.lua
["Command line parameters"] = "Parâmetros da linha de comandos", -- src\editor\menu_project.lua
["Comment or uncomment current or selected lines"] = {"Comentar ou descomentar a linha atual", "Comentar ou descomentar as linhas selecionadas"}, -- src\editor\menu_edit.lua
["Compilation error"] = "Erro na compilação", -- src\editor\commands.lua, src\editor\debugger.lua
["Compilation successful; %.0f%% success rate (%d/%d)."] = "Compilação com êxito; taxa de sucesso: %.0f%% (%d/%d).", -- src\editor\commands.lua
["Compile the current file"] = "Compilar arquivo atual", -- src\editor\menu_project.lua
["Complete &Identifier"] = "Completar &identificador", -- src\editor\menu_edit.lua
["Complete the current identifier"] = "Completar o identificador atual", -- src\editor\menu_edit.lua
["Consider removing backslash from escape sequence '%s'."] = "Considere a remoção da contrabarra da sequência de escape '%s'.", -- src\editor\commands.lua
["Copy Full Path"] = "Copiar o caminho completo", -- src\editor\gui.lua, src\editor\filetree.lua
["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
["Cu&t"] = "Recor&tar", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
["Cut selected text to clipboard"] = "Recortar texto selecionado para a área de transfêrencia", -- src\editor\menu_edit.lua
["Debugger server started at %s:%d."] = "Servidor de depuração iniciado em %s:%d.", -- src\editor\debugger.lua
["Debugger server stopped at %s:%d."] = "Servidor de depuração interrompido em %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Sessão de depuração completada (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Sessão de depuração iniciada em '%s'.", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Depuração suspendida em '%s:%s' (impossível ativar o arquivo).", -- src\editor\debugger.lua
["Detach &Process"] = "Separar &processo", -- src\editor\menu_project.lua
["Directory"] = "Pasta", -- src\editor\findreplace.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
["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
["Error while loading API file: %s"] = "Erro ao carregar arquivo de API: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Erro ao carregar arquivo de configuração: %s", -- src\editor\style.lua
["Error while processing API file: %s"] = "Erro ao processar arquivo de API: %s", -- src\editor\autocomplete.lua
["Error while processing configuration file: %s"] = "Erro ao processar arquivo de configuração: %s", -- src\editor\style.lua
["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
["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 text in files"] = "Localizar texto em arquivos", -- src\editor\menu_search.lua
["Find text"] = "Localizar texto", -- 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
["Fold or unfold all code folds"] = "Expandir ou recolher todos os blocos do código", -- src\editor\menu_edit.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
["Go To Line..."] = "Ir para a linha...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Ir para o próximo marcador", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Ir para o marcador anterior", -- src\editor\menu_edit.lua
["Go To Symbol..."] = "Ir para o símbolo...", -- src\editor\menu_search.lua
["Go to file"] = "Ir para o arquivo", -- src\editor\menu_search.lua
["Go to line"] = "Ir para a linha", -- src\editor\menu_search.lua
["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
["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
["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
["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
["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 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
["Output (suspended)"] = "Saída (suspendido)", -- src\editor\debugger.lua
["Output"] = "Saída", -- src\editor\debugger.lua, src\editor\output.lua, src\editor\gui.lua, src\editor\settings.lua
["Paste text from the clipboard"] = "Colar texto da área de transfêrencia", -- src\editor\menu_edit.lua
["Preferences"] = "Preferências", -- src\editor\menu_edit.lua
["Prepend '!' to force local execution."] = "Prefixe com '!' para forçar a execução local.", -- src\editor\shellbox.lua
["Prepend '=' to show complex values on multiple lines."] = "Prefixe com '=' para exibir valores complexos em multíplas linhas.", -- src\editor\shellbox.lua
["Press cancel to abort."] = "Pressionar cancelar para abortar.", -- src\editor\commands.lua
["Program '%s' started in '%s' (pid: %d)."] = "Programa '%s' iniciado em '%s' (pid: %d).", -- src\editor\output.lua
["Program can't start because conflicting process is running as '%s'."] = "Impossível iniciar programa porque um processo conflitante está em execução como '%s'.", -- src\editor\output.lua
["Program completed in %.2f seconds (pid: %d)."] = "Programa completado em %.2f segundos (pid: %d).", -- src\editor\output.lua
["Program starting as '%s'."] = "Iniciando programa como '%s'.", -- src\editor\output.lua
["Program stopped (pid: %d)."] = "Programa interrompido (pid: %d).", -- src\editor\debugger.lua
["Program unable to run as '%s'."] = "Impossível de executar programa como '%s'.", -- src\editor\output.lua
["Project Directory"] = "Pasta do projeto", -- src\editor\menu_project.lua, src\editor\filetree.lua
["Project history"] = "Histórico do projeto", -- src\editor\menu_file.lua
["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
["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
["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
["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
["Remote console"] = "Console remoto", -- src\editor\shellbox.lua
["Rename All Instances"] = "Renomear todas as instâncias", -- src\editor\editor.lua
["Replace A&ll"] = "Substituir tudo", -- src\editor\findreplace.lua
["Replace All Selections"] = "Substituir todas as seleções", -- src\editor\editor.lua
["Replace"] = "Substituir", -- src\editor\findreplace.lua
["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
["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 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
["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
["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 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 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 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
["Settings: User"] = "Opções: Usuário", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Exibir dica", -- src\editor\menu_edit.lua
["Show All Files"] = "Exibir todos os arquivos", -- src\editor\filetree.lua
["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 files previously hidden"] = "Exibir arquivos anteriormente ocultos", -- src\editor\filetree.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 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
["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
["Switch to or from full screen mode"] = "Entrar/Sair do modo tela inteira", -- src\editor\menu_view.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
["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 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
["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
["Use Shift-Enter for multiline code."] = "Usar Shift-Enter para adicionar uma nova linha ao código.", -- src\editor\shellbox.lua
["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
["Watch"] = "Observador", -- src\editor\debugger.lua
["Welcome to the interactive Lua interpreter."] = "Bem-vindo ao interpretador do Lua.", -- src\editor\shellbox.lua
["Wrap ar&ound"] = "Repetir direção", -- src\editor\findreplace.lua
["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
["Zoom to 100%"] = "Ir para 100%", -- src\editor\menu_view.lua
["Zoom"] = "Zoom", -- src\editor\menu_view.lua
["on line %d"] = "na linha %d", -- src\editor\debugger.lua, src\editor\editor.lua, src\editor\commands.lua
["traced %d instruction"] = {"%d instrução rastreada", "%d instruções rastreadas"}, -- src\editor\debugger.lua
["unknown error"] = "erro desconhecido", -- src\editor\debugger.lua
}

View File

@@ -25,7 +25,6 @@ return {
["&Fold/Unfold All"] = "Св&ернуть/развернуть все", -- src\editor\menu_edit.lua
["&Frequently Asked Questions"] = "&Часто задаваемые вопросы", -- src\editor\menu_help.lua
["&Getting Started Guide"] = nil, -- src\editor\menu_help.lua
["&Go To Line..."] = "&Перейти к строке...", -- src\editor\menu_search.lua
["&Help"] = "&Справка", -- src\editor\menu_help.lua
["&New Directory"] = "&Новая папка", -- src\editor\filetree.lua
["&New"] = "Соз&дать", -- src\editor\menu_file.lua
@@ -58,26 +57,26 @@ return {
["Add Watch Expression"] = "Добавить выражение", -- src\editor\editor.lua
["All files"] = "Все файлы", -- src\editor\commands.lua
["Allow external process to start debugging"] = "Разрешить внешнему процессу начать отладку", -- src\editor\menu_project.lua
["Analyze the source code"] = "Проанализировать исходный код", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze"] = "Анализировать", -- src\editor\inspect.lua, src\editor\inspect.lua-profile
["Analyze the source code"] = "Проанализировать исходный код", -- src\editor\inspect.lua
["Analyze"] = "Анализировать", -- src\editor\inspect.lua
["Auto Complete Identifiers"] = "Автодополнение идентификаторов", -- src\editor\menu_edit.lua
["Auto complete while typing"] = "Автоматически дополнять идентификаторы при наборе", -- src\editor\menu_edit.lua
["Bookmark"] = "Закладка", -- src\editor\menu_edit.lua
["Break execution at the next executed line of code"] = "Прервать выполнение на следующей строке", -- 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 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 process auto-recovery record; invalid format: %s."] = "Ошибка обработки записи автоматического восстановления; неверный формат: %s.", -- src\editor\commands.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
@@ -108,7 +107,7 @@ return {
["Debugger server stopped at %s:%d."] = "Сервер отладки остановлен %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Отладочная сессия завершена (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Отладочная сессия запущена в '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Отладка остановлена на %s:%s (невозможно открыть файл).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Отладка остановлена в '%s:%s' (невозможно активировать файл).", -- src\editor\debugger.lua
["Detach &Process"] = "Отсоединить процесс", -- src\editor\menu_project.lua
["Directory"] = "Папка", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Удалить '%s'?", -- src\editor\filetree.lua
@@ -118,7 +117,6 @@ return {
["E&xit"] = "Вы&ход", -- src\editor\menu_file.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 line number"] = "Введите номер строки", -- src\editor\menu_search.lua
["Enter replacement text"] = "Введите текст замены", -- src\editor\editor.lua
["Error while loading API file: %s"] = "Ошибка загрузки файла определений API: %s", -- src\editor\autocomplete.lua
["Error while loading configuration file: %s"] = "Ошибка загрузки файла конфигурации: %s", -- src\editor\style.lua
@@ -132,7 +130,7 @@ return {
["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' 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
@@ -141,6 +139,7 @@ return {
["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 text in files"] = "Найти текст в файлах", -- src\editor\menu_search.lua
@@ -153,21 +152,29 @@ return {
["Found"] = "Найдено", -- src\editor\findreplace.lua
["Full &Screen"] = "Во весь экр&ан", -- src\editor\menu_view.lua
["Go To Definition"] = "Перейти к определению", -- src\editor\editor.lua
["Go To Line"] = "Перейти к строке", -- src\editor\menu_search.lua
["Go To File..."] = "Перейти к файлу...", -- src\editor\menu_search.lua
["Go To Line..."] = "Перейти к строке...", -- src\editor\menu_search.lua
["Go To Next Bookmark"] = "Перейти к следующей закладке", -- src\editor\menu_edit.lua
["Go To Previous Bookmark"] = "Перейти к предыдущей закладке", -- src\editor\menu_edit.lua
["Go to a selected line"] = "Перейти к заданной строке", -- src\editor\menu_search.lua
["Go To Symbol..."] = "Перейти к символу...", -- src\editor\menu_search.lua
["Go to file"] = "Перейти к файлу", -- src\editor\menu_search.lua
["Go to line"] = "Перейти к строке", -- src\editor\menu_search.lua
["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
["Insert Library Function..."] = "Вставить библиотечную функцию...", -- src\editor\menu_search.lua
["Known Files"] = "Файлы Lua", -- src\editor\commands.lua
["Ln: %d"] = "Стр: %d", -- src\editor\editor.lua
["Local console"] = "Локальная консоль", -- src\editor\gui.lua, src\editor\shellbox.lua
["Lua &Interpreter"] = "&Интерпретатор Lua", -- src\editor\menu_project.lua
["Map Directory..."] = "Добавить папку в список", -- src\editor\filetree.lua
["Mapped remote request for '%s' to '%s'."] = "Удаленный запрос для '%s' отображен на '%s'.", -- src\editor\debugger.lua
["Match &case"] = "Совпадение регистра", -- src\editor\findreplace.lua
["Match &whole word"] = "Совпадение целого слова", -- src\editor\findreplace.lua
["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
@@ -198,7 +205,7 @@ return {
["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"] = nil, -- src\editor\menu_edit.lua
["Re-indent selected lines"] = "Исправить отступ в выделенных строчках", -- src\editor\menu_edit.lua
["Recent &Projects"] = "Недавние &проекты", -- src\editor\menu_file.lua
["Recent Files"] = "Недавние файлы", -- src\editor\menu_file.lua
["Redo last edit undone"] = "Вернуть последнее отмененное изменение", -- src\editor\menu_edit.lua
@@ -207,13 +214,16 @@ return {
["Remote console"] = "Удаленная консоль", -- src\editor\shellbox.lua
["Rename All Instances"] = "Переименовать все совпадения", -- src\editor\editor.lua
["Replace A&ll"] = "Заменить все", -- src\editor\findreplace.lua
["Replace All Selections"] = nil, -- src\editor\editor.lua
["Replace All Selections"] = "Заменить все выделенные фрагменты", -- src\editor\editor.lua
["Replace"] = "Заменить", -- src\editor\findreplace.lua
["Replaced an invalid UTF8 character with %s."] = "Некорректный символ UTF8 заменен на %s.", -- src\editor\commands.lua
["Replaced"] = "Заменено", -- src\editor\findreplace.lua
["Replacing"] = "Замена", -- src\editor\findreplace.lua
["Reset to default layout"] = "Установить расположение окон по умолчанию", -- src\editor\menu_view.lua
["Run as Scratchpad"] = "Запустить как черновик", -- src\editor\menu_project.lua
["Run As Scratchpad"] = "Запустить как черновик", -- src\editor\menu_project.lua
["Run To Cursor"] = "Выполнить до курсора", -- src\editor\menu_project.lua
["Run as Scratchpad"] = "Запустить как черновик", -- src\editor\toolbar.lua
["Run to cursor"] = "Выполнить до курсора", -- 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
@@ -230,11 +240,12 @@ return {
["Searching for"] = "Поиск", -- src\editor\findreplace.lua
["Sel: %d/%d"] = "Выд: %d/%d", -- src\editor\editor.lua
["Select &All"] = "Выделить &все", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
["Select And Find Next"] = "Выделить и найти далее", -- src\editor\menu_search.lua
["Select And Find Previous"] = "Выделить и найти ранее", -- src\editor\menu_search.lua
["Select all text in the editor"] = "Выделить весь текст в редакторе", -- src\editor\menu_edit.lua
["Select and Find Next"] = "Выделить и найти далее", -- src\editor\menu_search.lua
["Select and Find Previous"] = "Выделить и найти ранее", -- src\editor\menu_search.lua
["Select the word under cursor and find its next occurrence"] = "Выделить слово под курсором и найти далее", -- src\editor\menu_search.lua
["Select the word under cursor and find its previous occurrence"] = "Выделить слово под курсором и найти ранее", -- src\editor\menu_search.lua
["Set As Start File"] = "Установить как файл запуска", -- src\editor\filetree.lua
["Set From Current File"] = "Установить по текущему файлу", -- src\editor\menu_project.lua
["Set project directory from current file"] = "Установить папку проекта по текущему файлу", -- src\editor\menu_project.lua
["Set the interpreter to be used"] = "Установить используемый интерпретатор", -- src\editor\menu_project.lua
@@ -242,7 +253,11 @@ return {
["Settings: System"] = "Установки: Системы", -- src\editor\menu_edit.lua
["Settings: User"] = "Установки: Пользователя", -- src\editor\menu_edit.lua
["Show &Tooltip"] = "Показать &подсказку", -- src\editor\menu_edit.lua
["Show All Files"] = "Показать все файлы", -- src\editor\filetree.lua
["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 files previously hidden"] = "Показать ранее спрятанные файлы", -- src\editor\filetree.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
@@ -270,17 +285,19 @@ return {
["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"] = nil, -- src\editor\filetree.lua
["Unable to delete directory '%s': %s"] = "Ошибка удаления директории '%s': %s", -- src\editor\filetree.lua
["Unable to load file '%s'."] = "Ошибка загрузки файла '%s'.", -- src\editor\commands.lua
["Unable to rename file '%s'."] = "Ошибка переименования файла '%s'.", -- src\editor\filetree.lua
["Unable to save file '%s': %s"] = "Ошибка сохранения файла '%s': %s", -- src\editor\commands.lua
["Unable to stop program (pid: %d), code %d."] = "Невозможно завершить программу (pid: %d), код %d.", -- src\editor\debugger.lua
["Undo last edit"] = "Отменить последнее действие", -- src\editor\menu_edit.lua
["Unmap Directory"] = "Убрать папку из списка", -- src\editor\filetree.lua
["Unset '%s' As Start File"] = "Отменить '%s' как файл запуска", -- src\editor\filetree.lua
["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
["Use Shift-Enter for multiline code."] = "Используйте Shift-Enter для многострочного кода.", -- src\editor\shellbox.lua
["View the outline window"] = nil, -- src\editor\menu_view.lua
["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 File

@@ -112,8 +112,8 @@ styles.indicator.fncall.st = wxstc.wxSTC_INDIC_PLAIN
wxSTC_INDIC_HIDDEN No visual effect;
--]]
-- to enable additional spec files (like spec/cpp.lua)
load.specs(function(file) return file:find('spec[/\\]cpp%.lua$') end)
-- to enable additional spec files (like spec/glsl.lua)
load.specs(function(file) return file:find('spec[/\\]glsl%.lua$') end)
-- to specify a default EOL encoding to be used for new files:
-- `wxstc.wxSTC_EOL_CRLF` or `wxstc.wxSTC_EOL_LF`;
@@ -157,3 +157,8 @@ styles["keywords"..num] = {fg = {240, 0, 0}, b = true}
-- enable `Opt+Shift+Left/Right` shortcut on OSX
editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_LEFT, wxstc.wxSTC_SCMOD_ALT+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_WORDLEFTEXTEND, "Macintosh"}
editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_RIGHT, wxstc.wxSTC_SCMOD_ALT+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_WORDRIGHTENDEXTEND, "Macintosh"}
-- enable Emacs bindings to use `Ctrl-A` and `Ctrl-E` to go to the line start/end
editor.keymap[#editor.keymap+1] = {('A'):byte(), wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_HOME}
editor.keymap[#editor.keymap+1] = {('E'):byte(), wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_LINEEND}
keymap[ID.SELECTALL] = nil -- remove `Ctrl-A` shortcut from `SelectAll`

View File

@@ -19,8 +19,8 @@ return {
table.insert(paths, p)
end
if not busted then
DisplayOutput("Can't find busted executable in any of the folders in PATH: "
..table.concat(paths, ", ").."\n")
DisplayOutputLn("Can't find busted executable in any of the folders in PATH: "
..table.concat(paths, ", "))
return
end
end
@@ -39,7 +39,7 @@ return {
file = tmpfile:GetFullPath()
local f = io.open(file, "w")
if not f then
DisplayOutput("Can't open temporary file '"..file.."' for writing\n")
DisplayOutputLn("Can't open temporary file '"..file.."' for writing.")
return
end
f:write(code)

View File

@@ -26,15 +26,16 @@ return {
table.insert(paths, p)
end
if not corona then
DisplayOutput("Can't find corona executable in any of the folders in PATH: "
..table.concat(paths, ", ").."\n")
DisplayOutputLn("Can't find corona executable in any of the folders in PATH: "
..table.concat(paths, ", "))
return
end
end
local file = GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua')
if not file then
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
DisplayOutputLn(("Can't find 'main.lua' file in the current project folder: '%s'.")
:format(self:fworkdir(wfilename)))
return
end
@@ -82,7 +83,8 @@ return {
local cfg = ide.config.corona or {}
local debugopt = mac and "-debug 1 -project " or "-debug "
local skin = cfg.skin and (" -skin "..ide.config.corona.skin) or ""
local noconsole = win and not cfg.showconsole and "-no-console " or ""
local noconsole = (cfg.showconsole and ""
or (win and "-no-console " or "-no-console YES "))
local cmd = ('"%s" %s%s"%s"%s')
:format(corona, noconsole, rundebug and debugopt or "", file, skin)

View File

@@ -22,8 +22,8 @@ return {
table.insert(paths, p)
end
if not gslshell then
DisplayOutput("Can't find gsl-shell executable in any of the following folders: "
..table.concat(paths, ", ").."\n")
DisplayOutputLn("Can't find gsl-shell executable in any of the following folders: "
..table.concat(paths, ", "))
return
end
end
@@ -57,7 +57,7 @@ return {
filepath = tmpfile:GetFullPath()
local f = io.open(filepath, "w")
if not f then
DisplayOutput("Can't open temporary file '"..filepath.."' for writing\n")
DisplayOutputLn("Can't open temporary file '"..filepath.."' for writing.")
return
end
f:write(rundebug)

View File

@@ -26,14 +26,15 @@ return {
table.insert(paths, p)
end
if not love2d then
DisplayOutput("Can't find love2d executable in any of the following folders: "
..table.concat(paths, ", ").."\n")
DisplayOutputLn("Can't find love2d executable in any of the following folders: "
..table.concat(paths, ", "))
return
end
end
if not GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua') then
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
DisplayOutputLn(("Can't find 'main.lua' file in the current project folder: '%s'.")
:format(self:fworkdir(wfilename)))
return
end
@@ -41,11 +42,17 @@ return {
DebuggerAttachDefault({runstart = ide.config.debugger.runonstart == true})
end
-- suppress hiding ConsoleWindowClass as this is used by Love console
local uhw = ide.config.unhidewindow
local cwc = uhw and uhw.ConsoleWindowClass
if uhw then uhw.ConsoleWindowClass = 0 end
local params = ide.config.arg.any or ide.config.arg.love2d
local cmd = ('"%s" "%s"%s%s'):format(love2d, self:fworkdir(wfilename),
params and " "..params or "", rundebug and ' -debug' or '')
-- CommandLineRun(cmd,wdir,tooutput,nohide,stringcallback,uid,endcallback)
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true)
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true,nil,nil,
function() if uhw then uhw.ConsoleWindowClass = cwc end end)
end,
hasdebugger = true,
fattachdebug = function(self) DebuggerAttachDefault() end,

View File

@@ -13,7 +13,7 @@ end
return {
name = ("Lua%s"):format(name or version or ""),
description = ("Lua%s interpreter with debugger"):format(name or version or ""),
api = {"wxwidgets","baselib"},
api = {"baselib"},
luaversion = version or '5.1',
fexepath = exePath,
frun = function(self,wfilename,rundebug)
@@ -30,7 +30,7 @@ return {
filepath = tmpfile:GetFullPath()
local f = io.open(filepath, "w")
if not f then
DisplayOutput("Can't open temporary file '"..filepath.."' for writing\n")
DisplayOutputLn("Can't open temporary file '"..filepath.."' for writing.")
return
end
f:write(rundebug)

View File

@@ -22,8 +22,8 @@ return {
table.insert(paths, p)
end
if not moai then
DisplayOutput("Can't find moai executable in any of the folders in PATH or MOAI_BIN: "
..table.concat(paths, ", ").."\n")
DisplayOutputLn("Can't find moai executable in any of the folders in PATH or MOAI_BIN: "
..table.concat(paths, ", "))
return
end
end
@@ -37,9 +37,9 @@ return {
if file then break end
end
if not file then
DisplayOutput("Can't find any of the specified entry points ("
DisplayOutputLn("Can't find any of the specified entry points ("
..table.concat(epoints, ", ")
..") in the current project; continuing with the current file...\n")
..") in the current project; continuing with the current file...")
end
end
@@ -58,7 +58,7 @@ return {
file = tmpfile:GetFullPath()
local f = io.open(file, "w")
if not f then
DisplayOutput("Can't open temporary file '"..file.."' for writing\n")
DisplayOutputLn("Can't open temporary file '"..file.."' for writing.")
return
end
f:write(code)

View File

@@ -83,6 +83,7 @@ end
local sym = newset("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_")
local dig = newset('0123456789')
local name = "([_A-Za-z][_A-Za-z0-9]*)"
local op = newset('=~<>.+-*/%^#=<>;:,.{}[]()')
op['=='] = true
@@ -90,11 +91,14 @@ op['<='] = true
op['>='] = true
op['~='] = true
op['..'] = true
op['<<'] = true
op['>>'] = true
op['//'] = true
local is_keyword = qws[[
and break do else elseif end false for function if
in local nil not or repeat return
then true until while]]
then true until while goto]]
function M.lex(code, f, pos)
local pos = pos or 1
@@ -106,7 +110,7 @@ function M.lex(code, f, pos)
pos = p2
if sym[n1] then
local tok = code:match('^([_A-Za-z][_A-Za-z0-9]*)', pos)
local tok = code:match('^'..name, pos)
assert(tok)
if is_keyword[tok] then
f('Keyword', tok, pos)
@@ -119,6 +123,15 @@ function M.lex(code, f, pos)
assert(tok)
f('Comment', tok, pos)
pos = pos2
elseif n2 == '::' then
local tok = code:match('^(::%s*'..name..'%s*::)', pos)
if tok then
f('Label', tok, pos)
pos = pos + #tok
else
f('Unknown', code:sub(pos, pos+1), pos) -- unterminated label
pos = pos + 2
end
elseif n1 == '\'' or n1 == '\"' or n2 == '[[' or n2 == '[=' then
local tok = match_string(code, pos)
if tok then

View File

@@ -152,13 +152,15 @@ function PARSE.parse_scope(lx, f, level)
f('VarNext', c[1], c.lineinfo, true)
end
elseif c[1] == 'for' and lx:peek().tag == 'Id' then
c = lx:next()
f('VarInside', c[1], c.lineinfo, true)
while lx:peek().tag == 'Keyword' and lx:peek()[1] == ',' do
c = lx:next()
f('VarInside', c[1], c.lineinfo, true)
while lx:peek().tag == 'Keyword' and lx:peek()[1] == ',' do
c = lx:next(); if lx:peek().tag ~= 'Id' then break end
c = lx:next()
f('VarInside', c[1], c.lineinfo, true)
end
elseif c[1] == 'goto' and lx:peek().tag == 'Id' then
lx:next()
elseif c[1] == 'do' then
scope_begin('do', c.lineinfo)
-- note: do/while/for statement scopes all begin at 'do'.
@@ -191,7 +193,7 @@ function PARSE.parse_scope(lx, f, level)
-- table field
f('String', c[1], c.lineinfo, inside_local)
elseif cprev.tag == 'Keyword' and (cprev[1] == ':' or cprev[1] == '.') then
f('String', c[1], c.lineinfo, inside_local)
f('String', c[1], c.lineinfo, true)
else
f('Id', c[1], c.lineinfo, inside_local)
end

View File

@@ -703,12 +703,31 @@ function M.infer_values(top_ast, tokenlist, src, report)
if #iter_ast == 1 and iter_ast[1].tag == 'Call' and iter_ast[1][1].value == ipairs then
for i, var_ast in ipairs(varlist_ast) do
if i == 1 then set_value(var_ast, T.number)
elseif i == 2 then set_value(var_ast, T.universal)
-- handle the type of the value as the type of the first element
-- in the table that is a parameter for ipairs
elseif i == 2 then
local t_ast = iter_ast[1][2]
local value = T.universal
if (known(t_ast.value) or T.istabletype[t_ast.value]) then
local ok; ok, value = pzcall(tindex, {t_ast, {tag='Number', 1}}, t_ast.value, 1)
if not ok then value = T.error(t_ast.value) end
end
set_value(var_ast, value)
else set_value(var_ast, nil) end
end
elseif #iter_ast == 1 and iter_ast[1].tag == 'Call' and iter_ast[1][1].value == pairs then
local t_ast = iter_ast[1][2]
local value = T.universal
local key
if t_ast.value and (known(t_ast.value) or T.istabletype[t_ast.value]) then
key = next(t_ast.value)
local ok; ok, value = pzcall(tindex, {t_ast, {tag='String', key}}, t_ast.value, key)
if not ok then value = T.error(t_ast.value) end
end
for i, var_ast in ipairs(varlist_ast) do
if i <= 2 then set_value(var_ast, T.number)
if i == 1 then set_value(var_ast, type(key))
elseif i == 2 then set_value(var_ast, value)
else set_value(var_ast, nil) end
end
else -- general case, unknown iterator
@@ -820,8 +839,7 @@ function M.infer_values(top_ast, tokenlist, src, report)
local x
local val = function() x=nil end
local fpos = LA.ast_pos_range(ast, tokenlist)
local source = tostring(ast.lineinfo.first):gsub('<C|','<'):match('<([^|]+)') -- a HACK? relies on AST lineinfo
local linenum = LA.pos_to_linecol(fpos, src)
local source, linenum = tostring(ast.lineinfo.first):gsub('<C|','<'):match('<([^|]+)|L(%d+)') -- a HACK? relies on AST lineinfo
local retvals
if ENABLE_RETURN_ANALYSIS then
retvals = get_func_return_values(ast) --Q:move outside of containing conditional?

View File

@@ -169,6 +169,12 @@ return function(M)
{ "/", prec = 70, builder = opf2 "div" },
{ "%", prec = 70, builder = opf2 "mod" },
{ "^", prec = 90, builder = opf2 "pow", assoc = "right" },
{ "//", prec = 70, builder = opf2 "idiv" },
{ "&", prec = 36, builder = opf2 "band" },
{ "|", prec = 32, builder = opf2 "bor" },
{ "~", prec = 34, builder = opf2 "bxor" },
{ "<<", prec = 38, builder = opf2 "shl" },
{ ">>", prec = 38, builder = opf2 "shr" },
{ "..", prec = 40, builder = opf2 "concat", assoc = "right" },
{ "==", prec = 30, builder = opf2 "eq" },
{ "~=", prec = 30, builder = op_ne },
@@ -183,6 +189,7 @@ return function(M)
name = "expr prefix op",
{ "not", prec = 80, builder = opf1 "not" },
{ "#", prec = 80, builder = opf1 "len" },
{ "~", prec = 80, builder = opf2 "bnot" },
{ "-", prec = 80, builder = opf1 "unm" } },
suffix = {

View File

@@ -34,7 +34,8 @@ return function()
"in", "local", "nil", "not", "or", "repeat",
"return", "then", "true", "until", "while",
"...", "..", "==", ">=", "<=", "~=",
"::", -- Lua5,2
"<<", ">>", "//", -- Lua5.3
"::", -- Lua5.2
"+{", "-{" } -- Metalua
for _, w in ipairs(keywords) do lexer :add (w) end

View File

@@ -263,6 +263,10 @@ return function(M)
{ "local", _M.local_stat_parser, builder = unpack },
{ "return", return_expr_list_parser, builder =
function(x) x[1].tag='Return'; return x[1] end },
{ "goto", _M.id, builder =
function(x) x[1].tag='Goto'; return x[1] end },
{ "::", _M.id, "::", builder =
function(x) x[1].tag='Label'; return x[1] end },
{ "break", builder = function() return { tag="Break" } end },
{ "-{", gg.future(M, 'meta').splice_content, "}", builder = unpack },
{ "if", gg.nonempty(elseifs_parser), gg.onkeyword{ "else", M.block }, "end",

View File

@@ -1,6 +1,6 @@
--
-- MobDebug -- Lua remote debugger
-- Copyright 2011-14 Paul Kulchenko
-- Copyright 2011-15 Paul Kulchenko
-- Based on RemDebug 1.0 Copyright Kepler Project 2005
--
@@ -19,7 +19,7 @@ end)("os")
local mobdebug = {
_NAME = "mobdebug",
_VERSION = 0.607,
_VERSION = 0.613,
_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,
@@ -62,7 +62,7 @@ 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
if not setfenv then -- Lua 5.2
if not setfenv then -- Lua 5.2+
-- based on http://lua-users.org/lists/lua-l/2010-06/msg00314.html
-- this assumes f is a function
local function findenv(f)
@@ -127,7 +127,7 @@ end
local function q(s) return s:gsub('([%(%)%.%%%+%-%*%?%[%^%$%]])','%%%1') end
local serpent = (function() ---- include Serpent module for serialization
local n, v = "serpent", 0.272 -- (C) 2012-13 Paul Kulchenko; MIT License
local n, v = "serpent", 0.28 -- (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}
@@ -147,8 +147,8 @@ local function s(t, opts)
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 syms[s] end)) end
local function safestr(s) return type(s) == "number" and (huge and snum[tostring(s)] or s)
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)
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
@@ -161,7 +161,7 @@ local function s(t, opts)
return (path or '')..(plain and path and '.' or '')..safe, safe end
local alphanumsort = type(opts.sortkeys) == 'function' and opts.sortkeys or function(k, o, n) -- k=keys, o=originaltable, n=padding
local maxn, to = tonumber(n) or 12, {number = 'a', string = 'b'}
local function padnum(d) return ("%0"..maxn.."d"):format(d) end
local function padnum(d) return ("%0"..tostring(maxn).."d"):format(tonumber(d)) end
table.sort(k, function(a,b)
-- sort numeric keys first: k[key] is not nil for numerical keys
return (k[a] ~= nil and 0 or to[type(a)] or 'z')..(tostring(a):gsub("%d+",padnum))
@@ -203,8 +203,8 @@ local function s(t, opts)
local sname = safename(iname, gensym(key)) -- iname is table for local variables
sref[#sref] = val2str(key,sname,indent,sname,iname,true) end
sref[#sref+1] = 'placeholder'
local path = seen[t]..'['..(seen[key] or globals[key] or gensym(key))..']'
sref[#sref] = path..space..'='..space..(seen[value] or val2str(value,nil,indent,path))
local path = seen[t]..'['..tostring(seen[key] or globals[key] or gensym(key))..']'
sref[#sref] = path..space..'='..space..tostring(seen[value] or val2str(value,nil,indent,path))
else
out[#out+1] = val2str(value,key,indent,insref,seen[t],plainindex,level+1)
end
@@ -233,20 +233,16 @@ local function s(t, opts)
end
local function deserialize(data, opts)
local f, res = (loadstring or load)('return '..data)
if not f then f, res = (loadstring or load)(data) end
local env = (opts and opts.safe == false) and G
or setmetatable({}, {
__index = function(t,k) return t end,
__call = function(t,...) error("cannot call functions") end
})
local f, res = (loadstring or load)('return '..data, nil, nil, env)
if not f then f, res = (loadstring or load)(data, nil, nil, env) end
if not f then return f, res end
if opts and opts.safe == false then return pcall(f) end
local count, thread = 0, coroutine.running()
local h, m, c = debug.gethook(thread)
debug.sethook(function (e, l) count = count + 1
if count >= 3 then error("cannot call functions") end
end, "c")
local res = {pcall(f)}
count = 0 -- set again, otherwise it's tripped on the next sethook
debug.sethook(thread, h, m, c)
return (table.unpack or unpack)(res)
if setfenv then setfenv(f, env) end
return pcall(f)
end
local function merge(a, b) if b then for k,v in pairs(b) do a[k] = v end end; return a; end
@@ -327,6 +323,7 @@ end
local function remove_breakpoint(file, line)
if file == '-' and lastfile then file = lastfile
elseif file == '*' and line == 0 then breakpoints = {}
elseif iscasepreserving then file = string.lower(file) end
if breakpoints[line] then breakpoints[line][file] = nil end
end
@@ -768,10 +765,12 @@ local function debugger_loop(sev, svars, sfile, sline)
status, res = stringify_results(pcall(func))
end
if status then
server:send("200 OK " .. #res .. "\n")
server:send("200 OK " .. tostring(#res) .. "\n")
server:send(res)
else
server:send("401 Error in Expression " .. #res .. "\n")
-- fix error if not set (for example, when loadstring is not present)
if not res then res = "Unknown error" end
server:send("401 Error in Expression " .. tostring(#res) .. "\n")
server:send(res)
end
else
@@ -784,7 +783,7 @@ local function debugger_loop(sev, svars, sfile, sline)
if abort == nil then -- no LOAD/RELOAD allowed inside start()
if size > 0 then server:receive(size) end
if sfile and sline then
server:send("201 Started " .. sfile .. " " .. sline .. "\n")
server:send("201 Started " .. sfile .. " " .. tostring(sline) .. "\n")
else
server:send("200 OK 0\n")
end
@@ -808,7 +807,7 @@ local function debugger_loop(sev, svars, sfile, sline)
debugee = func
coroyield("load")
else
server:send("401 Error in Expression " .. #res .. "\n")
server:send("401 Error in Expression " .. tostring(#res) .. "\n")
server:send(res)
end
else
@@ -824,9 +823,9 @@ local function debugger_loop(sev, svars, sfile, sline)
watchescnt = watchescnt + 1
local newidx = #watches + 1
watches[newidx] = func
server:send("200 OK " .. newidx .. "\n")
server:send("200 OK " .. tostring(newidx) .. "\n")
else
server:send("401 Error in Expression " .. #res .. "\n")
server:send("401 Error in Expression " .. tostring(#res) .. "\n")
server:send(res)
end
else
@@ -848,13 +847,13 @@ local function debugger_loop(sev, svars, sfile, sline)
local ev, vars, file, line, idx_watch = coroyield()
eval_env = vars
if ev == events.BREAK then
server:send("202 Paused " .. file .. " " .. line .. "\n")
server:send("202 Paused " .. file .. " " .. tostring(line) .. "\n")
elseif ev == events.WATCH then
server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n")
server:send("203 Paused " .. file .. " " .. tostring(line) .. " " .. tostring(idx_watch) .. "\n")
elseif ev == events.RESTART then
-- nothing to do
else
server:send("401 Error in Execution " .. #file .. "\n")
server:send("401 Error in Execution " .. tostring(#file) .. "\n")
server:send(file)
end
elseif command == "STEP" then
@@ -864,13 +863,13 @@ local function debugger_loop(sev, svars, sfile, sline)
local ev, vars, file, line, idx_watch = coroyield()
eval_env = vars
if ev == events.BREAK then
server:send("202 Paused " .. file .. " " .. line .. "\n")
server:send("202 Paused " .. file .. " " .. tostring(line) .. "\n")
elseif ev == events.WATCH then
server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n")
server:send("203 Paused " .. file .. " " .. tostring(line) .. " " .. tostring(idx_watch) .. "\n")
elseif ev == events.RESTART then
-- nothing to do
else
server:send("401 Error in Execution " .. #file .. "\n")
server:send("401 Error in Execution " .. tostring(#file) .. "\n")
server:send(file)
end
elseif command == "OVER" or command == "OUT" then
@@ -885,13 +884,13 @@ local function debugger_loop(sev, svars, sfile, sline)
local ev, vars, file, line, idx_watch = coroyield()
eval_env = vars
if ev == events.BREAK then
server:send("202 Paused " .. file .. " " .. line .. "\n")
server:send("202 Paused " .. file .. " " .. tostring(line) .. "\n")
elseif ev == events.WATCH then
server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n")
server:send("203 Paused " .. file .. " " .. tostring(line) .. " " .. tostring(idx_watch) .. "\n")
elseif ev == events.RESTART then
-- nothing to do
else
server:send("401 Error in Execution " .. #file .. "\n")
server:send("401 Error in Execution " .. tostring(#file) .. "\n")
server:send(file)
end
elseif command == "BASEDIR" then
@@ -920,14 +919,14 @@ local function debugger_loop(sev, svars, sfile, sline)
ev, vars = coroyield("stack")
end
if ev and ev ~= events.STACK then
server:send("401 Error in Execution " .. #vars .. "\n")
server:send("401 Error in Execution " .. tostring(#vars) .. "\n")
server:send(vars)
else
local ok, res = pcall(mobdebug.dump, vars, {nocode = true, sparse = false})
if ok then
server:send("200 OK " .. res .. "\n")
server:send("200 OK " .. tostring(res) .. "\n")
else
server:send("401 Error in Execution " .. #res .. "\n")
server:send("401 Error in Execution " .. tostring(#res) .. "\n")
server:send(res)
end
end
@@ -947,7 +946,7 @@ local function debugger_loop(sev, svars, sfile, sline)
for n = 1, #tbl do
tbl[n] = select(2, pcall(mobdebug.line, tbl[n], {nocode = true, comment = false})) end
local file = table.concat(tbl, "\t").."\n"
server:send("204 Output " .. stream .. " " .. #file .. "\n" .. file)
server:send("204 Output " .. stream .. " " .. tostring(#file) .. "\n" .. file)
end
end)
if not default then genv.print() end -- "fake" print to start printing loop
@@ -969,7 +968,7 @@ local function connect(controller_host, controller_port)
if not sock then return nil, err end
if sock.settimeout then sock:settimeout(mobdebug.connecttimeout) end
local res, err = sock:connect(controller_host, controller_port)
local res, err = sock:connect(controller_host, tostring(controller_port))
if sock.settimeout then sock:settimeout() end
if not res then return nil, err end
@@ -1048,7 +1047,7 @@ local function controller(controller_host, controller_port, scratchpad)
if server then
local function report(trace, err)
local msg = err .. "\n" .. trace
server:send("401 Error in Execution " .. #msg .. "\n")
server:send("401 Error in Execution " .. tostring(#msg) .. "\n")
server:send(msg)
return err
end
@@ -1269,15 +1268,12 @@ local function handle(params, client, options)
print("Invalid command")
end
elseif command == "delallb" then
for line, breaks in pairs(breakpoints) do
for file, _ in pairs(breaks) do
client:send("DELB " .. file .. " " .. line .. "\n")
if client:receive() == "200 OK" then
remove_breakpoint(file, line)
else
print("Error: breakpoint at file " .. file .. " line " .. line .. " not removed")
end
end
local file, line = "*", 0
client:send("DELB " .. file .. " " .. tostring(line) .. "\n")
if client:receive() == "200 OK" then
remove_breakpoint(file, line)
else
print("Error: all breakpoints not removed")
end
elseif command == "delw" then
local _, _, index = string.find(params, "^[a-z]+%s+(%d+)%s*$")
@@ -1318,7 +1314,7 @@ local function handle(params, client, options)
if not file then
_, _, file, lines = string.find(exp, "^(%S+)%s+(.+)")
end
client:send("LOAD " .. #lines .. " " .. file .. "\n")
client:send("LOAD " .. tostring(#lines) .. " " .. file .. "\n")
client:send(lines)
else
local file = io.open(exp, "r")
@@ -1336,7 +1332,7 @@ local function handle(params, client, options)
local file = string.gsub(exp, "\\", "/") -- convert slash
file = removebasedir(file, basedir)
client:send("LOAD " .. #lines .. " " .. file .. "\n")
client:send("LOAD " .. tostring(#lines) .. " " .. file .. "\n")
if #lines > 0 then client:send(lines) end
end
while true do
@@ -1595,6 +1591,7 @@ mobdebug.coro = coro
mobdebug.done = done
mobdebug.pause = function() step_into = true end
mobdebug.yield = nil -- callback
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

View File

@@ -26,6 +26,24 @@ local function isfndef(str)
end
local q = EscapeMagic
local function ldoc(tx, typepatt)
local varname = "([%w_]+)"
-- <type> == ?string, ?|T1|T2
-- anything that follows optional "|..." is ignored
local typename = "%??"..typepatt
-- @tparam[...] <type> <paramname>
-- @param[type=<type>] <paramname>
-- @string[...] <paramname>; not handled
local t, v = tx:match("--%s*@tparam%b[]%s+"..typename.."%s+"..varname)
if not t then -- try without optional [...] part
t, v = tx:match("--%s*@tparam%s+"..typename.."%s+"..varname)
end
if not t then
t, v = tx:match("--%s*@param%s*%[type="..typename.."%]%s+"..varname)
end
return t, v
end
return {
exts = {"lua", "rockspec", "wlua"},
lexer = wxstc.wxSTC_LEX_LUA,
@@ -52,12 +70,17 @@ return {
return match and 1 or 0, match and term and 1 or 0
end,
isincindent = function(str)
str = (str:gsub('%-%-%[=*%[.*%]=*%]','')
:gsub("'.-\\'","'"):gsub("'.-'","")
:gsub('".-\\"','"'):gsub('".-"','')
:gsub('%-%-.*','') -- strip comments after strings are processed
:gsub("%b()","()") -- remove all function calls
)
-- remove "long" comments and escaped slashes (to process \' and \" below)
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()","()")
local term = str:match("^%s*(%w+)%W*")
local terminc = term and incindent[term] and 1 or 0
-- fix 'if' not terminated with 'then'
@@ -109,108 +132,81 @@ return {
end,
typeassigns = function(editor)
local line = editor:GetCurrentLine()-1
local maxlines = 48 -- scan up to this many lines back
local scopestart = {"if", "do", "while", "function", "local%s+function", "for", "else", "elseif"}
local scopeend = {"end"}
local iscomment = editor.spec.iscomment
local assigns = {}
-- iterate up until a line starts with scopestart
-- always ignore lines whose first symbol is styled as comment
local endline = line
while (line > math.max(endline-maxlines, 0)) do
local ls = editor:PositionFromLine(line)
local s = bit.band(editor:GetStyleAt(ls),31)
if (not iscomment[s]) then
local tx = editor:GetLine(line)
local sstart, send
for _, v in ipairs(scopestart) do
if (tx:match("^%s*"..v.."%f[^%w]")) then sstart = true end
end
for _, v in ipairs(scopeend) do
if (tx:match("%f[%w]"..v.."%s*$")) then send = true end
end
-- if the scope starts, but doesn't end on one line, stop searching
if sstart and not send then break end
end
line = line -1
end
local endline = editor:GetCurrentLine()-1
local line = math.max(endline-maxlines, 0)
while (line <= endline) do
local ls = editor:PositionFromLine(line)
local s = bit.band(editor:GetStyleAt(ls),31)
local tx = editor:GetLine(line) --= string
if (not iscomment[s]) then
local tx = editor:GetLine(line) --= string
-- check for assignments
local sep = editor.spec.sep
local varname = "([%w_][%w_"..q(sep:sub(1,1)).."]*)"
local identifier = "([%w_][%w_"..q(sep).."%s]*)"
-- check for assignments
local sep = editor.spec.sep
local varname = "([%w_][%w_"..q(sep:sub(1,1)).."]*)"
local identifier = "([%w_][%w_"..q(sep).."%s]*)"
-- special hint
local typ, var = tx:match("%s*%-%-=%s*"..varname.."%s+"..identifier)
local ldoctype, ldocvar = ldoc(tx, varname)
if var and typ then
assigns[var] = typ:gsub("%s","")
elseif ldoctype and ldocvar then
assigns[ldocvar] = ldoctype
elseif not iscomment[s] then
-- real assignments
local var,typ = tx:match("%s*"..identifier.."%s*=%s*([^;]+)")
-- special hint
local typ,var = tx:match("%s*%-%-=%s*"..varname.."%s+"..identifier)
if (var and typ) then
typ = typ:gsub("%s","")
assigns[var] = typ
else
-- real assignments
local var,typ = tx:match("%s*"..identifier.."%s*=%s*([^;]+)")
var = var and var:gsub("local","")
var = var and var:gsub("%s","")
typ = typ and typ
:gsub("%b()","")
:gsub("%b{}","")
:gsub("%b[]",".0")
-- remove comments; they may be in strings, but that's okay here
:gsub("%-%-.*","")
if (typ and (typ:match(",") or typ:match("%sor%s") or typ:match("%sand%s"))) then
typ = nil
end
typ = typ and typ:gsub("%s","")
typ = typ and typ:gsub(".+", function(s)
var = var and var:gsub("local",""):gsub("%s","")
typ = (typ and typ
:gsub("%b()","")
:gsub("%b{}","")
:gsub("%b[]",".0")
-- replace concatenation with addition to avoid misidentifying types
:gsub("%.%.+","+")
-- remove comments; they may be in strings, but that's okay here
:gsub("%-%-.*",""))
if (typ and (typ:match(",") or typ:match("%sor%s") or typ:match("%sand%s"))) then
typ = nil
end
typ = typ and typ:gsub("%s","")
typ = typ and typ:gsub(".+", function(s)
return (s:find("^'[^']*'$")
or s:find('^"[^"]*"$')
or s:find('^%[=*%[.*%]=*%]$')) and 'string' or s
or s:find('^"[^"]*"$')
or s:find('^%[=*%[.*%]=*%]$')) and 'string' or s
end)
-- filter out everything that is not needed
if typ and typ ~= 'string' -- special value for all strings
and (not typ:match('^'..identifier..'$') -- not an identifier
or typ:match('^%d') -- or a number
or editor.api.tip.keys[typ] -- or a keyword
) then
typ = nil
end
-- filter out everything that is not needed
if typ and typ ~= 'string' -- special value for all strings
and (not typ:match('^'..identifier..'$') -- not an identifier
or typ:match('^%d') -- or a number
or editor.api.tip.keys[typ] -- or a keyword
) then
typ = nil
end
if (var and typ) then
class,func = typ:match(varname.."["..q(sep).."]"..varname)
if (assigns[typ]) then
assigns[var] = assigns[typ]
elseif (func) then
-- FIXME remove this, in favor of proper api definitions
local added
local funcnames = {"new","load","create"}
for i,v in ipairs(funcnames) do
if (func == v) then
assigns[var] = class
added = true
break
end
if (var and typ) then
local class,func = typ:match(varname.."["..q(sep).."]"..varname)
if (assigns[typ]) then
assigns[var] = assigns[typ]
elseif (func) then
local added
local funcnames = {"new","load","create"}
for _,v in ipairs(funcnames) do
if (func == v) then
assigns[var] = class
added = true
break
end
if (not added) then
-- let's hope autocomplete info can resolve this
assigns[var] = typ
end
else
end
if (not added) then
-- let's hope autocomplete info can resolve this
assigns[var] = typ
end
else
assigns[var] = typ
end
end
end
@@ -272,6 +268,7 @@ return {
string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len
string.lower string.match string.rep string.reverse string.sub string.upper
byte find format gmatch gsub len lower match rep reverse sub upper
table.move, string.pack, string.unpack, string.packsize
table.concat table.insert table.maxn table.pack table.remove table.sort table.unpack]]
},
}

View File

@@ -129,11 +129,12 @@ local function fillTips(api,apibasename)
local shortfinfo = tclass.shortfinfo
local shortfinfoclass = tclass.shortfinfoclass
local function traverse (tab,libname)
local function traverse (tab, libname, format)
if not tab.childs then return end
format = tab.format or format
for key,info in pairs(tab.childs) do
local fullkey = (libname ~= "" and libname.."." or "")..key
traverse(info, fullkey)
traverse(info, fullkey, format)
if info.type == "function" or info.type == "method" or info.type == "value" then
local frontname = (info.returns or "(?)").." "..fullkey.." "..(info.args or "(?)")
@@ -146,6 +147,10 @@ local function fillTips(api,apibasename)
local sentence = description:match("^(.-)%. ?\n")
local infshort = ((info.type == "value" and "" or frontname.."\n")
..(sentence and sentence.."..." or description))
if type(format) == 'function' then -- apply custom formatting if requested
inf = format(fullkey, info, inf)
infshort = format(fullkey, info, infshort)
end
local infshortbatch = (info.returns and info.args) and frontname or infshort
-- add to infoclass
@@ -184,12 +189,12 @@ end
local function generateAPIInfo(only)
for i,api in pairs(apis) do
if ((not only) or i == only) then
fillTips(api,"",i)
fillTips(api,"")
end
end
end
function UpdateAssignCache(editor)
local function updateAssignCache(editor)
if (editor.spec.typeassigns and not editor.assignscache) then
local assigns = editor.spec.typeassigns(editor)
editor.assignscache = {
@@ -221,8 +226,19 @@ local function resolveAssign(editor,tx)
local c
if (assigns) then
-- find assign
local change = true
local change, n, stopat = true, 0, os.clock() + 0.2
while (change) do
-- abort the check if the auto-complete is taking too long
if n > 50 and os.clock() > stopat then
if ide.config.acandtip.warning then
DisplayOutputLn("Warning: Auto-complete was aborted after taking too long to complete."
.. " Please report this warning along with the text you were typing to support@zerobrane.com.")
end
break
else
n = n + 1
end
local classname = nil
c = ""
change = false
@@ -252,7 +268,7 @@ end
function GetTipInfo(editor, content, short, fullmatch)
if not content then return end
UpdateAssignCache(editor)
updateAssignCache(editor)
-- try to resolve the class
content = content:gsub("%b[]",".0")
@@ -287,16 +303,18 @@ local function reloadAPI(only,subapis)
end
function ReloadLuaAPI()
local interpreterapi = ide.interpreter
interpreterapi = interpreterapi and interpreterapi.api
if (interpreterapi) then
local apinames = {}
for _, v in ipairs(interpreterapi) do
apinames[v] = true
end
interpreterapi = apinames
end
reloadAPI("lua",interpreterapi)
local interp = ide.interpreter
local cfgapi = ide.config.api
local fname = interp and interp.fname
local intapi = cfgapi and fname and cfgapi[fname]
local apinames = {}
-- general APIs as configured
for _, v in ipairs(type(cfgapi) == 'table' and cfgapi or {}) do apinames[v] = true end
-- interpreter-specific APIs as configured
for _, v in ipairs(type(intapi) == 'table' and intapi or {}) do apinames[v] = true end
-- interpreter APIs
for _, v in ipairs(interp and interp.api or {}) do apinames[v] = true end
reloadAPI("lua",apinames)
end
do
@@ -446,7 +464,7 @@ local function getAutoCompApiList(childs,fragment,method)
return ret
end
if cache[childs] then
if cache[childs] and cache[childs][fragment] then
return cache[childs][fragment]
end
@@ -462,7 +480,6 @@ local function getAutoCompApiList(childs,fragment,method)
((method and v.type ~= "value")
or (not method and v.type ~= "method"))) then
local used = {}
--
local kl = key:lower()
for i=0,#key do
local k = kl:sub(1,i)
@@ -492,7 +509,6 @@ local function getAutoCompApiList(childs,fragment,method)
return t
end
-- make syntype dependent
function CreateAutoCompList(editor,key,pos)
local api = editor.api
local tip = api.tip
@@ -504,7 +520,7 @@ function CreateAutoCompList(editor,key,pos)
-- ignore keywords
if tip.keys[key] then return end
UpdateAssignCache(editor)
updateAssignCache(editor)
local tab,rest = resolveAssign(editor,key)
local progress = tab and tab.childs
@@ -578,7 +594,7 @@ function CreateAutoCompList(editor,key,pos)
local vars, context = {}
local tokens = editor:GetTokenList()
for _, token in ipairs(tokens) do
if token.fpos > pos then break end
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

333
src/editor/commandbar.lua Normal file
View File

@@ -0,0 +1,333 @@
-- Copyright 2011-14 Paul Kulchenko, ZeroBrane LLC
---------------------------------------------------------
local maxlines = 8
local row_height = 46
local row_width = 450
local win = ide.osname == 'Windows'
function CommandBarShow(params)
local onDone, onUpdate, onItem, onSelection, defaultText, selectedText =
params.onDone, params.onUpdate, params.onItem, params.onSelection,
params.defaultText, params.selectedText
local lines = {}
local linesnow = #lines
local linenow = 0
local ed = ide:GetEditor()
local pos = ed and ed:GetScreenPosition() or ide:GetEditorNotebook():GetScreenPosition()
if pos then
pos:SetX(pos:GetX()+ide:GetEditorNotebook():GetClientSize():GetWidth()-row_width-16)
pos:SetY(pos:GetY()+2)
if not win then pos = ide:GetMainFrame():ScreenToClient(pos) end
else
pos = wx.wxDefaultPosition
end
local frame = win and wx.wxFrame(ide:GetMainFrame(), wx.wxID_ANY, "Command Bar",
pos, wx.wxDefaultSize,
wx.wxFRAME_TOOL_WINDOW + wx.wxFRAME_FLOAT_ON_PARENT + wx.wxNO_BORDER)
local panel = wx.wxPanel(frame or ide:GetMainFrame(), wx.wxID_ANY,
win and wx.wxDefaultPosition or pos, wx.wxDefaultSize, wx.wxFULL_REPAINT_ON_RESIZE)
local search = wx.wxTextCtrl(panel, wx.wxID_ANY, "\1",
wx.wxDefaultPosition,
-- make the text control a bit smaller on OSX
wx.wxSize(row_width, ide.osname == 'Macintosh' and 20 or 24),
wx.wxTE_PROCESS_ENTER + wx.wxTE_PROCESS_TAB + wx.wxNO_BORDER)
local results = wx.wxScrolledWindow(panel, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxSize(0, 0))
if not frame then frame = panel end
local style, styledef = ide.config.styles, StylesGetDefault()
local textcolor = wx.wxColour(unpack(style.text.fg or styledef.text.fg))
local backcolor = wx.wxColour(unpack(style.text.bg or styledef.text.bg))
local selcolor = wx.wxColour(unpack(style.caretlinebg.bg or styledef.caretlinebg.bg))
local pancolor = ide:GetUIManager():GetArtProvider():GetColor(wxaui.wxAUI_DOCKART_SASH_COLOUR)
local borcolor = ide:GetUIManager():GetArtProvider():GetColor(wxaui.wxAUI_DOCKART_BORDER_COLOUR)
search:SetBackgroundColour(backcolor)
search:SetForegroundColour(textcolor)
local nbrush = wx.wxBrush(backcolor, wx.wxSOLID)
local sbrush = wx.wxBrush(selcolor, wx.wxSOLID)
local bbrush = wx.wxBrush(pancolor, wx.wxSOLID)
local lpen = wx.wxPen(borcolor, 1, wx.wxDOT)
local bpen = wx.wxPen(borcolor, 1, wx.wxSOLID)
local sash = ide:GetUIManager():GetArtProvider():GetMetric(wxaui.wxAUI_DOCKART_SASH_SIZE)
local border = sash + 2
local hoffset = 4
local voffset = 4
local topSizer = wx.wxFlexGridSizer(2, 1, -border*2, 0)
topSizer:SetFlexibleDirection(wx.wxVERTICAL)
topSizer:AddGrowableRow(1, 1)
topSizer:Add(search, wx.wxSizerFlags(0):Expand():Border(wx.wxALL, border))
topSizer:Add(results, wx.wxSizerFlags(1):Expand():Border(wx.wxALL, border))
panel:SetSizer(topSizer)
topSizer:Fit(frame) -- fit the frame/panel around the controls
local minheight = frame:GetClientSize():GetHeight()
local tfont = ide:GetProjectTree():GetFont()
local ffont = (ide:GetEditor() or ide:CreateBareEditor()):GetFont()
ffont:SetPointSize(ffont:GetPointSize()+2)
local sfont = wx.wxFont(tfont)
tfont:SetPointSize(tfont:GetPointSize()+2)
search:SetFont(tfont)
-- make a one-time callback;
-- needed because KILL_FOCUS handler can be called after closing window
local function onExit(index)
onExit = function() end
onDone(index and lines[index], index ~= nil, search:GetValue())
frame:Close()
end
local function onPaint(event)
-- adjust the scrollbar before working with the canvas
local _, starty = results:GetViewStart()
if #lines ~= linesnow then
-- adjust the starting line when the current line is the last one
if linenow > starty+maxlines then starty = starty + 1 end
results:SetScrollbars(1, row_height, 1, #lines, 0, starty*row_height, false)
linesnow = #lines
end
local dc = wx.wxMemoryDC(results)
results:PrepareDC(dc)
local size = results:GetVirtualSize()
local w,h = size:GetWidth(),size:GetHeight()
local bitmap = wx.wxBitmap(w,h)
dc:SelectObject(bitmap)
-- clear the background
dc:SetBackground(nbrush)
dc:Clear()
dc:SetTextForeground(textcolor)
dc:SetBrush(sbrush)
for r = 1, #lines do
if r == linenow then
dc:SetPen(wx.wxTRANSPARENT_PEN)
dc:DrawRectangle(0, row_height*(r-1), row_width, row_height+1)
end
dc:SetPen(lpen)
dc:DrawLine(hoffset, row_height*(r-1), row_width-hoffset*2, row_height*(r-1))
local fline, sline = onItem(lines[r])
if fline then
dc:SetFont(ffont)
dc:DrawText(fline, hoffset, row_height*(r-1)+voffset)
end
if sline then
dc:SetFont(sfont)
dc:DrawText(sline, hoffset, row_height*(r-1)+row_height/2+voffset)
end
end
dc:SetPen(wx.wxNullPen)
dc:SetBrush(wx.wxNullBrush)
dc:SelectObject(wx.wxNullBitmap)
dc:delete()
dc = wx.wxPaintDC(results)
dc:DrawBitmap(bitmap, 0, 0, true)
dc:delete()
end
local function onPanelPaint(event)
local dc = wx.wxBufferedPaintDC(panel)
dc:SetBrush(bbrush)
dc:SetPen(bpen)
local psize = panel:GetClientSize()
dc:DrawRectangle(0, 0, psize:GetWidth(), psize:GetHeight())
dc:DrawRectangle(sash+1, sash+1, psize:GetWidth()-2*(sash+1), psize:GetHeight()-2*(sash+1))
dc:SetPen(wx.wxNullPen)
dc:SetBrush(wx.wxNullBrush)
dc:delete()
end
local linewas -- line that was reported when updated
local function onTextUpdated(event)
local text = search:GetValue()
lines = onUpdate(text)
linenow = #text > 0 and #lines > 0 and 1 or 0
linewas = nil
local size = frame:GetClientSize()
local height = minheight + row_height*math.min(maxlines,#lines)
if height ~= size:GetHeight() then
results:SetScrollbars(1, 1, 1, 1, 0, 0, false)
size:SetHeight(height)
frame:SetClientSize(size)
end
results:Refresh()
end
local function onKeyDown(event)
local keycode = event:GetKeyCode()
if keycode == wx.WXK_RETURN then
onExit(linenow)
return
elseif event:GetModifiers() ~= wx.wxMOD_NONE then
event:Skip()
return
elseif keycode == wx.WXK_UP then
if linesnow > 0 then
linenow = linenow - 1
if linenow <= 0 then linenow = linesnow end
end
elseif keycode == wx.WXK_DOWN then
if linesnow > 0 then
linenow = linenow % linesnow + 1
end
elseif keycode == wx.WXK_PAGEDOWN then
if linesnow > 0 then
linenow = linenow + maxlines
if linenow > linesnow then linenow = linesnow end
end
elseif keycode == wx.WXK_PAGEUP then
if linesnow > 0 then
linenow = linenow - maxlines
if linenow <= 0 then linenow = 1 end
end
elseif keycode == wx.WXK_ESCAPE then
onExit()
return
else
event:Skip()
return
end
local _, starty = results:GetViewStart()
if linenow < starty+1 then results:Scroll(-1, linenow-1)
elseif linenow > starty+maxlines then results:Scroll(-1, linenow-maxlines) end
results:Refresh()
end
local function onMouseLeftDown(event)
local pos = event:GetPosition()
local _, y = results:CalcUnscrolledPosition(pos.x, pos.y)
onExit(math.floor(y / row_height)+1)
end
local function onIdle(event)
if linewas == linenow then return end
linewas = linenow
if linenow == 0 then return end
-- save the selection/insertion point as it's reset on Linux (wxwidgets 2.9.5)
local ip = search:GetInsertionPoint()
local f, t = search:GetSelection()
-- this may set focus to a different object/tab,
-- so disable the focus event and then set the focus back
search:SetEvtHandlerEnabled(false)
onSelection(lines[linenow], search:GetValue())
search:SetFocus()
search:SetEvtHandlerEnabled(true)
if ide.osname == 'Unix' then
search:SetInsertionPoint(ip)
search:SetSelection(f, t)
end
end
frame:Connect(wx.wxEVT_CLOSE_WINDOW, function() frame:Destroy() end)
panel:Connect(wx.wxEVT_PAINT, onPanelPaint)
panel:Connect(wx.wxEVT_ERASE_BACKGROUND, function() end)
panel:Connect(wx.wxEVT_IDLE, onIdle)
results:Connect(wx.wxEVT_PAINT, onPaint)
results:Connect(wx.wxEVT_LEFT_DOWN, onMouseLeftDown)
results:Connect(wx.wxEVT_ERASE_BACKGROUND, function() end)
search:SetFocus()
search:Connect(wx.wxEVT_KEY_DOWN, onKeyDown)
search:Connect(wx.wxEVT_COMMAND_TEXT_UPDATED, onTextUpdated)
search:Connect(wx.wxEVT_COMMAND_TEXT_ENTER, function() onExit(linenow) end)
search:Connect(wx.wxEVT_KILL_FOCUS, function() onExit() end)
frame:Show(true)
search:SetValue((defaultText or "")..(selectedText or ""))
search:SetSelection(#(defaultText or ""), -1)
end
local sep = "[/\\%-_ ]+"
local weights = {onegram = 0.1, digram = 0.4, trigram = 0.5}
local cache = {}
local missing = 3 -- penalty for missing symbols (1 missing == N matching)
local casemismatch = 0.9 -- score for case mismatch (%% of full match)
local function score(p, v)
local function ngrams(str, num, low, needcache)
local key = str..'\1'..num
if cache[key] then return unpack(cache[key]) end
local t, l, p = {}, {}, 0
for i = 1, #str-num+1 do
local pair = str:sub(i, i+num-1)
p = p + (t[pair] and 0 or 1)
if low and pair:find('%u') then l[pair:lower()] = casemismatch end
t[pair] = 1
end
if needcache then cache[key] = {t, p, l} end
return t, p, l
end
local function overlap(pattern, value, num)
local ph, ps = ngrams(pattern, num, false, true)
local vh, vs, vl = ngrams(value, num, true)
if ps + vs == 0 then return 0 end
local is = 0 -- intersection of two sets of ngrams
for k in pairs(ph) do is = is + (vh[k] or vl[k:lower()] or 0) end
return is / (ps + vs) - (num == 1 and missing * (ps - is) / (ps + vs) or 0)
end
local key = p..'\2'..v
if not cache[key] then
local score = weights.onegram * overlap(p, v, 1)
if score > 0 then -- don't bother with those that can't even score 1grams
p = ' '..(p:gsub(sep, ' '))
v = ' '..(v:gsub(sep, ' '))
score = score + weights.digram * overlap(p, v, 2)
score = score + weights.trigram * overlap(' '..p, ' '..v, 3)
end
cache[key] = 2 * 100 * score
end
return cache[key]
end
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("%.%*$","")
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}
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
return r
end
ide:AddPackage('core.commandbar', {
-- reset ngram cache when switching projects to conserve memory
onProjectLoad = function() cache = {} end
})

View File

@@ -40,10 +40,14 @@ local function findUnusedEditor()
end
function LoadFile(filePath, editor, file_must_exist, skipselection)
local filePath = wx.wxFileName(filePath)
filePath = filePath:gsub("%s+$","")
filePath = wx.wxFileName(filePath)
filePath:Normalize() -- make it absolute and remove all .. and . if possible
filePath = filePath:GetFullPath()
-- if the file name is empty or is a directory, don't do anything
if filePath == '' or wx.wxDirExists(filePath) then return nil end
-- prevent files from being reopened again
if (not editor) then
local doc = ide:FindDocument(filePath)
@@ -107,6 +111,7 @@ function LoadFile(filePath, editor, file_must_exist, skipselection)
end
editor:Colourise(0, -1)
editor:ResetTokenList() -- reset list of tokens if this is a reused editor
editor:Thaw()
local edcfg = ide.config.editor
@@ -137,18 +142,19 @@ function LoadFile(filePath, editor, file_must_exist, skipselection)
end
editor:EmptyUndoBuffer()
local id = editor:GetId()
if openDocuments[id] then -- existing editor; switch to the tab
notebook:SetSelection(openDocuments[id].index)
local doc = ide:GetDocument(editor)
if doc then -- existing editor; switch to the tab
notebook:SetSelection(doc:GetTabIndex())
else -- the editor has not been added to notebook
AddEditor(editor, wx.wxFileName(filePath):GetFullName()
doc = AddEditor(editor, wx.wxFileName(filePath):GetFullName()
or ide.config.default.fullname)
end
openDocuments[id].filePath = filePath
openDocuments[id].fileName = wx.wxFileName(filePath):GetFullName()
openDocuments[id].modTime = GetFileModTime(filePath)
doc.filePath = filePath
doc.fileName = wx.wxFileName(filePath):GetFullName()
doc.modTime = GetFileModTime(filePath)
SetDocumentModified(id, false, openDocuments[id].fileName)
doc:SetModified(false)
doc:SetTabText(doc:GetFileName())
-- activate the editor; this is needed for those cases when the editor is
-- created from some other element, for example, from a project tree.
@@ -200,8 +206,12 @@ end
function ActivateFile(filename)
local name, suffix, value = filename:match('(.+):([lLpP]?)(%d+)$')
if name and not wx.wxFileExists(filename) and wx.wxFileExists(name) then
filename = name
if name and not wx.wxFileExists(filename) then filename = name end
-- check if non-existing file can be loaded from the project folder;
-- this is to handle: "project file" used on the command line
if not wx.wxFileExists(filename) and not wx.wxIsAbsolutePath(filename) then
filename = GetFullPathIfExists(ide:GetProject(), filename) or filename
end
local opened = LoadFile(filename, nil, true)
@@ -269,12 +279,14 @@ function SaveFile(editor, filePath)
local ok, err = FileWrite(filePath, st)
if ok then
editor:SetSavePoint()
local id = editor:GetId()
openDocuments[id].filePath = filePath
openDocuments[id].fileName = wx.wxFileName(filePath):GetFullName()
openDocuments[id].modTime = GetFileModTime(filePath)
SetDocumentModified(id, false, openDocuments[id].fileName)
local doc = ide:GetDocument(editor)
doc.filePath = filePath
doc.fileName = wx.wxFileName(filePath):GetFullName()
doc.modTime = GetFileModTime(filePath)
doc:SetModified(false)
doc:SetTabText(doc:GetFileName())
SetAutoRecoveryMark()
FileTreeMarkSelected(filePath)
PackageEventHandle("onEditorSave", editor)
@@ -329,7 +341,6 @@ function SaveFileAs(editor)
if cansave and SaveFile(editor, filePath) then
SetEditorSelection() -- update title of the editor
FileTreeMarkSelected(filePath)
if ext ~= GetFileExt(filePath) then
-- new extension, so setup new keywords and re-apply indicators
editor:ClearDocumentStyle() -- remove styles from the document
@@ -495,7 +506,7 @@ function SaveOnExit(allow_cancel)
-- are still modified as not modified (they don't need to be saved)
-- to keep their tab names correct
for id, document in pairs(openDocuments) do
if document.isModified then SetDocumentModified(id, false) end
if document.isModified then document:SetModified(false) end
end
return true
@@ -583,9 +594,7 @@ function CompileProgram(editor, params)
local func, err = loadstring(StripShebang(editor:GetText()), '@'..filePath)
local line = not func and tonumber(err:match(":(%d+)%s*:")) or nil
if not params.keepoutput and ide.frame.menuBar:IsChecked(ID_CLEAROUTPUT) then
ClearOutput()
end
if not params.keepoutput then ClearOutput() end
compileTotal = compileTotal + 1
if func then
@@ -731,20 +740,21 @@ function SetOpenTabs(params)
DisplayOutputLn(TR("Found auto-recovery record and restored saved session."))
end
for _,doc in ipairs(nametab) do
-- check for missing file is no content is stored
-- check for missing file if no content is stored
if doc.filepath and not doc.content and not wx.wxFileExists(doc.filepath) then
DisplayOutputLn(TR("File '%s' is missing and can't be recovered.")
:format(doc.filepath))
else
local editor = doc.filepath and LoadFile(doc.filepath,nil,true,true) or NewFile(doc.filename)
local opendoc = openDocuments[editor:GetId()]
local editor = (doc.filepath and LoadFile(doc.filepath,nil,true,true)
or findUnusedEditor() or NewFile(doc.filename))
local opendoc = ide:GetDocument(editor)
if doc.content then
editor:SetText(doc.content)
if doc.filepath and opendoc.modTime and doc.modified < opendoc.modTime:GetTicks() then
DisplayOutputLn(TR("File '%s' has more recent timestamp than restored '%s'; please review before saving.")
:format(doc.filepath, doc.tabname))
:format(doc.filepath, opendoc:GetTabText()))
end
SetDocumentModified(editor:GetId(), true)
opendoc:SetModified(true)
end
editor:GotoPosDelayed(doc.cursorpos or 0)
end
@@ -756,21 +766,23 @@ end
local function getOpenTabs()
local opendocs = {}
for _, document in pairs(ide.openDocuments) do
local editor = document:GetEditor()
table.insert(opendocs, {
filename = document.fileName,
filepath = document.filePath,
tabname = notebook:GetPageText(document.index),
modified = document.modTime and document.modTime:GetTicks(), -- get number of seconds
content = document.isModified and document.editor:GetText() or nil,
id = document.index, cursorpos = document.editor:GetCurrentPos()})
filename = document:GetFileName(),
filepath = document:GetFilePath(),
tabname = document:GetTabText(),
modified = document:GetModTime() and document:GetModTime():GetTicks(), -- get number of seconds
content = document:IsModified() and editor:GetText() or nil,
id = document:GetTabIndex(),
cursorpos = editor:GetCurrentPos()})
end
-- to keep tab order
table.sort(opendocs, function(a,b) return (a.id < b.id) end)
local id = GetEditor()
id = id and id:GetId()
return opendocs, {index = (id and openDocuments[id].index or 0)}
local ed = GetEditor()
local doc = ed and ide:GetDocument(ed)
return opendocs, {index = (doc and doc:GetTabIndex() or 0)}
end
function SetAutoRecoveryMark()
@@ -1007,9 +1019,12 @@ ide.editorApp:Connect(wx.wxEVT_ACTIVATE_APP,
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
wx.wxUpdateUIEvent.SetUpdateInterval(active and updateInterval or -1)
-- disable UI refresh when app is inactive, but only when not running
wx.wxUpdateUIEvent.SetUpdateInterval(
(active or ide:GetLaunchedProcess()) and updateInterval or -1)
PackageEventHandle(active and "onAppFocusSet" or "onAppFocusLost", ide.editorApp)
end

View File

@@ -18,6 +18,7 @@ debugger.portnumber = ide.config.debugger.port or mobdebug.port -- the port # to
debugger.watchCtrl = nil -- the watch ctrl that shows watch information
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.hostname = ide.config.debugger.hostname or (function()
local hostname = socket.dns.gethostname()
@@ -37,9 +38,9 @@ local activate = {CHECKONLY = 1, NOREPORT = 2}
local function serialize(value, options) return mobdebug.line(value, options) end
local stackmaxlength = ide.config.debugger.stackmaxlength or 400
local stackmaxnum = ide.config.debugger.stackmaxnum or 400
local stackmaxlevel = ide.config.debugger.stackmaxlevel or 3
local stackmaxlength = ide.config.debugger.maxdatalength
local stackmaxnum = ide.config.debugger.maxdatanum
local stackmaxlevel = ide.config.debugger.maxdatalevel
local params = {comment = false, nocode = true, maxlevel = stackmaxlevel, maxnum = stackmaxnum}
local function fixUTF8(...)
@@ -200,7 +201,7 @@ end
local function updateStackAndWatches()
-- check if the debugger is running and may be waiting for a response.
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
-- allow that request to finish, otherwise this function does nothing.
if debugger.running then debugger.update() end
if debugger.server and not debugger.running then
copas.addthread(function() updateStackSync() updateWatchesSync() end)
@@ -209,7 +210,7 @@ end
local function updateWatches(item)
-- check if the debugger is running and may be waiting for a response.
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
-- allow that request to finish, otherwise this function does nothing.
if debugger.running then debugger.update() end
if debugger.server and not debugger.running then
copas.addthread(function() updateWatchesSync(item) end)
@@ -217,6 +218,12 @@ local function updateWatches(item)
end
local function debuggerToggleViews(show)
-- don't toggle if the current state is the same as the new one
local shown = debugger.toggleview.shown
if (show and shown) or (not show and not shown) then return end
debugger.toggleview.shown = nil
local mgr = ide.frame.uimgr
local refresh = false
for view, needed in pairs(debugger.toggleview) do
@@ -238,6 +245,7 @@ local function debuggerToggleViews(show)
end
end
if refresh then mgr:Update() end
if show then debugger.toggleview.shown = true end
end
local function killClient()
@@ -303,6 +311,13 @@ local function activateDocument(file, line, activatehow)
if line == math.huge then line = 1 end
end
local line = line - 1 -- editor line operations are zero-based
if debugger.runtocursor then
local ed, ln = unpack(debugger.runtocursor)
if ed:GetId() == editor:GetId() and ln == line then
DebuggerToggleBreakpoint(ed, ln)
debugger.runtocursor = nil
end
end
editor:MarkerAdd(line, CURRENT_LINE_MARKER)
editor:Refresh() -- needed for background markers that don't get refreshed (wx2.9.5)
@@ -392,7 +407,7 @@ end
debugger.shell = function(expression, isstatement)
-- check if the debugger is running and may be waiting for a response.
-- allow that request to finish, otherwise updateWatchesSync() does nothing.
-- allow that request to finish, otherwise this function does nothing.
if debugger.running then debugger.update() end
if debugger.server and not debugger.running
and (not debugger.scratchpad or debugger.scratchpad.paused) then
@@ -432,7 +447,7 @@ debugger.shell = function(expression, isstatement)
if #values == 0 and (forceexpression or not isstatement) then
values = {'nil'}
end
DisplayShell(fixUTF8(unpack(values)))
DisplayShell(unpack(values))
end
-- refresh Stack and Watch windows if executed a statement (and no err)
@@ -555,9 +570,10 @@ debugger.listen = function(start)
debugger.stats = {line = 0}
debugger.missing = {}
debugger.editormap = {}
debugger.runtocursor = nil
local wxfilepath = GetEditorFileAndCurInfo()
local startfile = options.startwith
local startfile = ide:GetProjectStartFile() or options.startwith
or (wxfilepath and wxfilepath:GetFullPath())
if not startfile then
@@ -621,10 +637,14 @@ debugger.listen = function(start)
.." "..TR("Compilation error")
..":\n"..err)
return debugger.terminate()
elseif options.runstart and not debugger.scratchpad
and stoppedAtBreakpoint(file, line) then
activateDocument(file, line)
options.runstart = false
elseif options.runstart and not debugger.scratchpad then
if stoppedAtBreakpoint(file, line) then
activateDocument(file, line)
options.runstart = false
end
elseif file and line then
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
:format(file, line))
end
elseif not (options.run or debugger.scratchpad) then
local file, line, err = debugger.loadfile(startfile)
@@ -633,7 +653,7 @@ debugger.listen = function(start)
-- with start() method, which can't load new files
-- if file and line are set, this indicates option #2
if err then
DisplayOutputLn(TR("Can't debug the script in the active editor window.")
DisplayOutputLn(TR("Can't start debugging for '%s'."):format(startfile)
.." "..TR("Compilation error")
..":\n"..err)
return debugger.terminate()
@@ -671,9 +691,8 @@ debugger.listen = function(start)
end
if not activated then
DisplayOutputLn(TR("Can't find file '%s' in the current project to activate for debugging. Update the project or open the file in the editor before debugging.")
:format(file))
return debugger.terminate()
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
:format(file, line))
end
-- debugger may still be available for scratchpad,
@@ -681,7 +700,11 @@ debugger.listen = function(start)
debugger.scratchable = ide.interpreter.scratchextloop ~= nil
else
debugger.scratchable = true
activateDocument(startfile, 0) -- find the appropriate line
local activated = activateDocument(startfile, 0) -- find the appropriate line
if not activated then
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
:format(startfile, '?'))
end
end
end
@@ -707,6 +730,11 @@ debugger.listen = function(start)
activateDocument(file, line)
end
end
-- refresh toolbar and menus in case the main app is not active
RequestAttention()
ide:GetMainFrame():UpdateWindowUI(wx.wxUPDATE_UI_FROMIDLE)
ide:GetToolBar():UpdateWindowUI(wx.wxUPDATE_UI_FROMIDLE)
end)
debugger.listening = server
end
@@ -739,9 +767,11 @@ debugger.handle = function(command, server, options)
return file, line, err
end
debugger.exec = function(command)
debugger.exec = function(command, func)
if debugger.server and not debugger.running then
copas.addthread(function ()
-- execute a custom function (if any) in the context of this thread
if type(func) == 'function' then func() end
local out
local attempts = 0
while true do
@@ -777,7 +807,7 @@ debugger.exec = function(command)
-- If this happens, stop and report allowing users to set
-- breakpoints and step through.
if debugger.breaking then
DisplayOutputLn(TR("Debugging suspended at %s:%s (couldn't activate the file).")
DisplayOutputLn(TR("Debugging suspended at '%s:%s' (couldn't activate the file).")
:format(file, line))
updateStackAndWatches()
return
@@ -869,6 +899,12 @@ do
end
end
local function isemptyline(editor, line)
local text = editor:GetLine(line-1)
return not text:find("%S")
or (text:find("^%s*%-%-") ~= nil and text:find("^%s*%-%-%[=*%[") == nil)
end
debugger.terminate = function()
if debugger.server then
if debugger.pid then -- if there is PID, try local kill
@@ -884,6 +920,42 @@ debugger.trace = function()
debugger.loop = true
debugger.exec("step")
end
debugger.runto = function(editor, line)
-- check if the location is valid for a breakpoint
if isemptyline(editor, line+1) then return end
local ed, ln = unpack(debugger.runtocursor or {})
local same = ed and ln and ed:GetId() == editor:GetId() and ln == line
-- check if there is already a breakpoint in the "run to" location;
-- if so, don't mark the location as "run to" as it will stop there anyway
if bit.band(editor:MarkerGet(line), BREAKPOINT_MARKER_VALUE) > 0
and not same then
debugger.runtocursor = nil
debugger.run()
return
end
-- save the location of the breakpoint
debugger.runtocursor = {editor, line}
-- set breakpoint and execute run
debugger.exec("run", function()
-- if run-to-cursor location is already set, then remove the breakpoint,
-- but only if this location is different
if ed and ln and not same then
DebuggerToggleBreakpoint(ed, ln)
debugger.wait()
end
if not same then
DebuggerToggleBreakpoint(editor, line)
debugger.wait()
end
end)
end
debugger.wait = function()
-- wait for all results to come back
while debugger.running do debugger.update() end
end
debugger.over = function() debugger.exec("over") end
debugger.out = function() debugger.exec("out") end
debugger.run = function() debugger.exec("run") end
@@ -951,7 +1023,8 @@ end
local function debuggerCreateStackWindow()
local stackCtrl = 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_HIDE_ROOT)
wx.wxTR_LINES_AT_ROOT + wx.wxTR_HAS_BUTTONS + wx.wxTR_SINGLE
+ wx.wxTR_HIDE_ROOT + wx.wxNO_BORDER)
debugger.stackCtrl = stackCtrl
@@ -1025,7 +1098,7 @@ local function debuggerCreateWatchWindow()
local watchCtrl = 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_HIDE_ROOT + wx.wxTR_EDIT_LABELS)
+ wx.wxTR_HIDE_ROOT + wx.wxTR_EDIT_LABELS + wx.wxNO_BORDER)
debugger.watchCtrl = watchCtrl
@@ -1251,6 +1324,10 @@ function DebuggerStop(resetpid)
local lines = TR("traced %d instruction", debugger.stats.line):format(debugger.stats.line)
DisplayOutputLn(TR("Debugging session completed (%s)."):format(lines))
nameOutputTab(debugger.pid and TR("Output (running)") or TR("Output"))
if debugger.runtocursor then
local ed, ln = unpack(debugger.runtocursor)
DebuggerToggleBreakpoint(ed, ln)
end
else
-- it's possible that the application couldn't start, or that the
-- debugger in the application didn't start, which means there is
@@ -1268,13 +1345,19 @@ local function debuggerMakeFileName(editor)
end
function DebuggerToggleBreakpoint(editor, line)
local markers = editor:MarkerGet(line)
local filePath = debugger.editormap and debugger.editormap[editor]
or debuggerMakeFileName(editor)
if bit.band(markers, BREAKPOINT_MARKER_VALUE) > 0 then
if bit.band(editor:MarkerGet(line), BREAKPOINT_MARKER_VALUE) > 0 then
-- if there is pending "run-to-cursor" call at this location, remove it
local ed, ln = unpack(debugger.runtocursor or {})
local same = ed and ln and ed:GetId() == editor:GetId() and ln == line
if same then debugger.runtocursor = nil end
editor:MarkerDelete(line, BREAKPOINT_MARKER)
if debugger.server then debugger.breakpoint(filePath, line+1, false) end
else
if isemptyline(editor, line+1) then return end
editor:MarkerAdd(line, BREAKPOINT_MARKER)
if debugger.server then debugger.breakpoint(filePath, line+1, true) end
end
@@ -1302,7 +1385,7 @@ function DebuggerRefreshScratchpad()
debugger.scratchpad.running = now
end
else
local clear = ide.frame.menuBar:IsChecked(ID_CLEAROUTPUT)
local clear = ide:GetMenuBar():IsChecked(ID_CLEAROUTPUT)
local filePath = debuggerMakeFileName(scratchpadEditor)
-- wrap into a function call to make "return" to work with scratchpad
@@ -1321,7 +1404,7 @@ function DebuggerRefreshScratchpad()
debugger.scratchpad.updated = false
debugger.scratchpad.runs = (debugger.scratchpad.runs or 0) + 1
if clear then ClearOutput() end
if clear then ClearOutput(true) end
-- the code can be running in two ways under scratchpad:
-- 1. controlled by the application, requires stopper (most apps)

View File

@@ -11,6 +11,7 @@ local notebook = ide.frame.notebook
local edcfg = ide.config.editor
local styles = ide.config.styles
local unpack = table.unpack or unpack
local q = EscapeMagic
local margin = { LINENUMBER = 0, MARKER = 1, FOLD = 2 }
local linenummask = "99999"
@@ -207,17 +208,6 @@ function GetEditorFileAndCurInfo(nochecksave)
return fn,info
end
-- Set if the document is modified and update the notebook page text
function SetDocumentModified(id, modified, text)
local modpref, doc = '* ', openDocuments[id]
if not doc then return end
local pageText = text or notebook:GetPageText(doc.index):gsub("^"..EscapeMagic(modpref), "")
if modified then pageText = modpref..pageText end
openDocuments[id].isModified = modified
notebook:SetPageText(doc.index, pageText)
end
function EditorAutoComplete(editor)
if not (editor and editor.spec) then return end
@@ -240,8 +230,8 @@ function EditorAutoComplete(editor)
lt = lt:gsub("%b()","")
lt = lt:gsub("%b{}","")
lt = lt:gsub("%b[]",".0")
-- match from starting brace
lt = lt:match("[^%[%(%{%s,]*$")
-- remove everything that can't be auto-completed
lt = lt:match("[%w_"..q(editor.spec.sep).."]*$")
-- know now which string is to be completed
local userList = CreateAutoCompList(editor, lt, pos)
@@ -376,7 +366,7 @@ function EditorCallTip(editor, pos, x, y)
-- don't activate if the window itself is not active (in the background)
if not ide.frame:IsActive() then return end
local var, funccall = getValAtPosition(editor, pos)
local var, funccall = editor:ValueFromPosition(pos)
-- if this is a value type rather than a function/method call, then use
-- full match to avoid calltip about coroutine.status for "status" vars
local tip = GetTipInfo(editor, funccall or var, false, not funccall)
@@ -659,9 +649,8 @@ end
-- ----------------------------------------------------------------------------
-- Create an editor
function CreateEditor(bare)
local editor = wxstc.wxStyledTextCtrl(notebook, editorID,
wx.wxDefaultPosition, wx.wxSize(0, 0),
wx.wxBORDER_NONE)
local editor = ide:CreateStyledTextCtrl(notebook, editorID,
wx.wxDefaultPosition, wx.wxSize(0, 0), wx.wxBORDER_NONE)
editorID = editorID + 1 -- increment so they're always unique
@@ -785,14 +774,12 @@ function CreateEditor(bare)
editor:AutoCompStops([[ \n\t=-+():.,;*/!"'$%&~'#°^@?´`<>][|}{]])
end
function editor:GotoPosEnforcePolicy(pos)
self:GotoPos(pos)
self:EnsureVisibleEnforcePolicy(self:LineFromPosition(pos))
end
function editor:GetTokenList() return self.tokenlist end
function editor:ResetTokenList() self.tokenlist = {}; return self.tokenlist end
function editor:SetupKeywords(...) return SetupKeywords(self, ...) end
function editor:ValueFromPosition(pos) return getValAtPosition(self, pos) end
-- GotoPos should work by itself, but it doesn't (wx 2.9.5).
-- This is likely because the editor window hasn't been refreshed yet,
-- so its LinesOnScreen method returns 0/-1, which skews the calculations.
@@ -821,8 +808,6 @@ function CreateEditor(bare)
end
end
function editor:SetupKeywords(...) return SetupKeywords(self, ...) end
if bare then return editor end -- bare editor doesn't have any event handlers
editor.ev = {}
@@ -869,6 +854,14 @@ function CreateEditor(bare)
local firstLine = editor:LineFromPosition(event:GetPosition())
if not editor:GetFoldExpanded(firstLine) then editor:ToggleFold(firstLine) end
end
-- hide calltip/auto-complete after undo/redo/delete
local undodelete = (wxstc.wxSTC_MOD_DELETETEXT
+ wxstc.wxSTC_PERFORMED_UNDO + wxstc.wxSTC_PERFORMED_REDO)
if bit.band(evtype, undodelete) ~= 0 then
if editor:CallTipActive() then editor:CallTipCancel() end
if editor:AutoCompActive() then editor:AutoCompCancel() end
end
if ide.config.acandtip.nodynwords then return end
-- only required to track changes
@@ -1041,12 +1034,14 @@ function CreateEditor(bare)
editor:Connect(wxstc.wxEVT_STC_SAVEPOINTREACHED,
function ()
SetDocumentModified(editor:GetId(), false)
local doc = ide:GetDocument(editor)
if doc then doc:SetModified(false) end
end)
editor:Connect(wxstc.wxEVT_STC_SAVEPOINTLEFT,
function ()
SetDocumentModified(editor:GetId(), true)
local doc = ide:GetDocument(editor)
if doc then doc:SetModified(true) end
end)
-- "updateStatusText" should be called in UPDATEUI event, but it creates
@@ -1060,7 +1055,11 @@ function CreateEditor(bare)
PackageEventHandle("onEditorPainted", editor, event)
if ide.osname == 'Windows' then
updateStatusText(editor)
-- STC_PAINTED is called on multiple editors when they point to
-- the same document; only update status for the active one
if notebook:GetSelection() == notebook:GetPageIndex(editor) then
updateStatusText(editor)
end
if edcfg.usewrap ~= true and editor:AutoCompActive() then
-- showing auto-complete list leaves artifacts on the screen,
@@ -1075,6 +1074,8 @@ function CreateEditor(bare)
local alreadyProcessed = 0
editor:Connect(wxstc.wxEVT_STC_UPDATEUI,
function (event)
PackageEventHandle("onEditorUpdateUI", editor, event)
-- some of UPDATEUI events are triggered by blinking cursor, and since
-- there are no changes, the rest of the processing can be skipped;
-- the reason for `alreadyProcessed` is that it is not possible
@@ -1090,8 +1091,6 @@ function CreateEditor(bare)
end
alreadyProcessed = alreadyProcessed + 1
PackageEventHandle("onEditorUpdateUI", editor, event)
if ide.osname ~= 'Windows' then updateStatusText(editor) end
editor:GotoPosDelayed()
@@ -1137,7 +1136,7 @@ function CreateEditor(bare)
and not event:ShiftDown() and not event:MetaDown() then
local point = event:GetPosition()
local pos = editor:PositionFromPointClose(point.x, point.y)
local value = pos ~= wxstc.wxSTC_INVALID_POSITION and getValAtPosition(editor, pos) or nil
local value = pos ~= wxstc.wxSTC_INVALID_POSITION and editor:ValueFromPosition(pos) or nil
local instances = value and indicateFindInstances(editor, value, pos+1)
if instances and instances[0] then
navigateToPosition(editor, pos, instances[0]-1, #value)
@@ -1292,7 +1291,7 @@ function CreateEditor(bare)
-- only activate selection of instances on Ctrl/Cmd-DoubleClick
if event:GetModifiers() == wx.wxMOD_CONTROL then
local pos = event:GetPosition()
local value = pos ~= wxstc.wxSTC_INVALID_POSITION and getValAtPosition(editor, pos) or nil
local value = pos ~= wxstc.wxSTC_INVALID_POSITION and editor:ValueFromPosition(pos) or nil
local instances = value and indicateFindInstances(editor, value, pos+1)
if instances and (instances[0] or #instances > 0) then
selectAllInstances(instances, value, pos)
@@ -1323,7 +1322,7 @@ function CreateEditor(bare)
function (event)
local point = editor:ScreenToClient(event:GetPosition())
pos = editor:PositionFromPointClose(point.x, point.y)
value = pos ~= wxstc.wxSTC_INVALID_POSITION and getValAtPosition(editor, pos) or nil
value = pos ~= wxstc.wxSTC_INVALID_POSITION and editor:ValueFromPosition(pos) or nil
instances = value and indicateFindInstances(editor, value, pos+1)
local occurrences = (not instances or #instances == 0) and ""

View File

@@ -11,15 +11,20 @@ ide.filetree = {
projdir = "",
projdirlist = {},
projdirpartmap = {},
projtree = nil,
imglist = ide:CreateImageList("PROJECT", "FOLDER", "FILE-KNOWN", "FILE-NORMAL"),
settings = {extensionignore = {}},
projtreeCtrl = nil,
imglist = ide:CreateImageList("PROJECT",
"FOLDER", "FILE-KNOWN", "FILE-NORMAL", "FILE-NORMAL-START",
"FOLDER-MAPPED"),
settings = {extensionignore = {}, startfile = {}, mapped = {}},
}
local filetree = ide.filetree
local iscaseinsensitive = wx.wxFileName("A"):SameAs(wx.wxFileName("a"))
local pathsep = GetPathSeparator()
local q = EscapeMagic
local image = { DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2 }
local image = {
DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2, FILEOTHERSTART = 3,
DIRECTORYMAPPED = 4,
}
do
local settings = ide:AddPackage('core.filetree', {}):GetSettings()
@@ -31,6 +36,15 @@ end
-- generic tree
-- ------------
local function getIcon(name, isdir)
local startfile = GetFullPathIfExists(FileTreeGetDir(),
filetree.settings.startfile[FileTreeGetDir()])
local known = GetSpec(GetFileExt(name))
local icon = isdir and image.DIRECTORY or known and image.FILEKNOWN or image.FILEOTHER
if startfile and startfile == name then icon = image.FILEOTHERSTART end
return icon
end
local function treeAddDir(tree,parent_id,rootdir)
local items = {}
local item, cookie = tree:GetFirstChild(parent_id)
@@ -41,14 +55,27 @@ local function treeAddDir(tree,parent_id,rootdir)
local cache = {}
local curr
local files = FileSysGetRecursive(rootdir)
local dirmapped = {}
if tree:IsRoot(parent_id) then
local mapped = filetree.settings.mapped[FileTreeGetDir()] or {}
table.sort(mapped)
-- insert into files at the sorted order
for i, v in ipairs(mapped) do
table.insert(files, i, v)
dirmapped[v] = true
end
end
for _, file in ipairs(FileSysGetRecursive(rootdir)) do
for _, file in ipairs(files) do
local name, dir = file:match("([^"..pathsep.."]+)("..pathsep.."?)$")
local isdir = #dir>0
local ext = GetFileExt(name)
if isdir or not filetree.settings.extensionignore[ext] then
local known = GetSpec(ext)
local icon = isdir and image.DIRECTORY or known and image.FILEKNOWN or image.FILEOTHER
if isdir or not filetree.settings.extensionignore[GetFileExt(name)] then
local icon = getIcon(file, isdir)
-- keep full name for the mapped directories
if dirmapped[file] then name, icon = file, image.DIRECTORYMAPPED end
local item = items[name .. icon]
if item then -- existing item
-- keep deleting items until we find item
@@ -145,8 +172,10 @@ local function treeSetConnectorsAndIcons(tree)
local function isIt(item, imgtype) return tree:GetItemImage(item) == imgtype end
function tree:IsDirectory(item_id) return isIt(item_id, image.DIRECTORY) end
function tree:IsDirMapped(item_id) return isIt(item_id, image.DIRECTORYMAPPED) end
function tree:IsFileKnown(item_id) return isIt(item_id, image.FILEKNOWN) end
function tree:IsFileOther(item_id) return isIt(item_id, image.FILEOTHER) end
function tree:IsFileStart(item_id) return isIt(item_id, image.FILEOTHERSTART) end
function tree:IsRoot(item_id) return not tree:GetItemParent(item_id):IsOk() end
function tree:FindItem(match)
@@ -204,7 +233,7 @@ local function treeSetConnectorsAndIcons(tree)
end
-- refresh the folder
if (tree:IsDirectory(item_id)) then
if (tree:IsDirectory(item_id) or tree:IsDirMapped(item_id)) then
if wx.wxDirExists(name) then treeAddDir(tree,item_id,name)
else refreshAncestors(tree:GetItemParent(item_id)) end -- stale content
else -- open file
@@ -213,14 +242,41 @@ local function treeSetConnectorsAndIcons(tree)
end
end
local function unMapDir(dir)
local project = FileTreeGetDir()
local mapped = filetree.settings.mapped[project] or {}
for k, m in ipairs(mapped) do
if m == dir then table.remove(mapped, k) end
end
filetree.settings.mapped[project] = mapped
refreshAncestors(tree:GetRootItem())
end
local function mapDir()
local project = FileTreeGetDir()
local dirPicker = wx.wxDirDialog(ide.frame, TR("Choose a directory to map"),
project ~= "" and project or wx.wxGetCwd(), wx.wxDIRP_DIR_MUST_EXIST)
if dirPicker:ShowModal(true) ~= wx.wxID_OK then return end
local dir = wx.wxFileName.DirName(FixDir(dirPicker:GetPath())):GetFullPath()
local mapped = filetree.settings.mapped[project] or {}
for _, m in ipairs(mapped) do
if m == dir then return end -- already on the list
end
table.insert(mapped, dir)
filetree.settings.mapped[project] = mapped
refreshAncestors(tree:GetRootItem())
end
local empty = ""
local function renameItem(itemsrc, target)
local isdir = tree:GetItemImage(itemsrc) == image.DIRECTORY
local isdir = tree:IsDirectory(itemsrc)
local isnew = tree:GetItemText(itemsrc) == empty
local source = tree:GetItemFullName(itemsrc)
local fn = wx.wxFileName(target)
if wx.wxFileName(source):SameAs(fn) then return false end
-- check if the target is the same as the source;
-- SameAs check is not used here as "Test" and "test" are the same
-- on case insensitive systems, but need to be allowed in renaming.
if source == target then return end
local docs = {}
if not isnew then -- find if source is already opened in the editor
@@ -237,6 +293,7 @@ local function treeSetConnectorsAndIcons(tree)
-- 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
if not fn:Mkdir(tonumber(755,8), wx.wxPATH_MKDIR_FULL) then
@@ -284,7 +341,13 @@ local function treeSetConnectorsAndIcons(tree)
return true
end
local function deleteItem(item_id)
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
-- if delete is for mapped directory, unmap it instead
if tree:IsDirMapped(item_id) then
unMapDir(tree:GetItemText(item_id))
return
end
local isdir = tree:IsDirectory(item_id)
local source = tree:GetItemFullName(item_id)
if isdir and FileDirHasContent(source..pathsep) then return false end
@@ -320,9 +383,12 @@ local function treeSetConnectorsAndIcons(tree)
tree:ActivateItem(event:GetItem())
end)
-- save configuration and refresh the tree
local function saveSettingsAndRefresh()
local function saveSettings()
ide:AddPackage('core.filetree', {}):SetSettings(filetree.settings)
end
-- refresh the tree
local function refreshChildren()
tree:RefreshChildren()
-- now mark the current file (if it was previously disabled)
local editor = ide:GetEditor()
@@ -331,7 +397,7 @@ local function treeSetConnectorsAndIcons(tree)
-- handle context menu
local function addItem(item_id, name, img)
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
local isdir = tree:IsDirectory(item_id)
local parent = isdir and item_id or tree:GetItemParent(item_id)
if isdir then tree:Expand(item_id) end -- expand to populate if needed
@@ -344,6 +410,25 @@ local function treeSetConnectorsAndIcons(tree)
return item
end
local function unsetStartFile()
local project = FileTreeGetDir()
local startfile = filetree.settings.startfile[project]
filetree.settings.startfile[project] = nil
if startfile then
local item_id = tree:FindItem(startfile)
if item_id and item_id:IsOk() then
tree:SetItemImage(item_id, getIcon(tree:GetItemFullName(item_id)))
end
end
end
local function setStartFile(item_id)
local project = FileTreeGetDir()
local startfile = tree:GetItemFullName(item_id):gsub(project, "")
filetree.settings.startfile[project] = startfile
tree:SetItemImage(item_id, getIcon(tree:GetItemFullName(item_id)))
end
tree:Connect(ID_NEWFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
tree:EditLabel(addItem(tree:GetSelection(), empty, image.FILEOTHER))
@@ -391,12 +476,35 @@ local function treeSetConnectorsAndIcons(tree)
function()
local ext = GetFileExt(tree:GetItemText(tree:GetSelection()))
filetree.settings.extensionignore[ext] = true
saveSettingsAndRefresh()
saveSettings()
refreshChildren()
end)
tree:Connect(ID_SHOWEXTENSIONALL, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
filetree.settings.extensionignore = {}
saveSettingsAndRefresh()
saveSettings()
refreshChildren()
end)
tree:Connect(ID_SETSTARTFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
unsetStartFile()
setStartFile(tree:GetSelection())
saveSettings()
end)
tree:Connect(ID_UNSETSTARTFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
unsetStartFile()
saveSettings()
end)
tree:Connect(ID_MAPDIRECTORY, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
mapDir()
saveSettings()
end)
tree:Connect(ID_UNMAPDIRECTORY, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
unMapDir(tree:GetItemText(tree:GetSelection()))
saveSettings()
end)
tree:Connect(wx.wxEVT_COMMAND_TREE_ITEM_MENU,
@@ -409,6 +517,7 @@ local function treeSetConnectorsAndIcons(tree)
or TR("&Rename"))
local fname = tree:GetItemText(item_id)
local ext = GetFileExt(fname)
local startfile = filetree.settings.startfile[FileTreeGetDir()]
local menu = wx.wxMenu {
{ ID_NEWFILE, TR("New &File") },
{ ID_NEWDIRECTORY, TR("&New Directory") },
@@ -418,6 +527,11 @@ local function treeSetConnectorsAndIcons(tree)
{ },
{ ID_HIDEEXTENSION, TR("Hide '.%s' Files"):format(ext) },
{ },
{ ID_SETSTARTFILE, TR("Set As Start File") },
{ ID_UNSETSTARTFILE, TR("Unset '%s' As Start File"):format(startfile or "<none>") },
{ },
{ ID_MAPDIRECTORY, TR("Map Directory...") },
{ ID_UNMAPDIRECTORY, TR("Unmap Directory") },
{ ID_OPENEXTENSION, TR("Open With Default Program") },
{ ID_COPYFULLPATH, TR("Copy Full Path") },
{ ID_SHOWLOCATION, TR("Show Location") },
@@ -445,11 +559,15 @@ local function treeSetConnectorsAndIcons(tree)
local projectdirectory = wx.wxMenuItem(menu, ID_PROJECTDIR,
TR("Project Directory"), TR("Set the project directory to be used"),
wx.wxITEM_NORMAL, projectdirectorymenu)
menu:Insert(9, projectdirectory)
menu:Insert(14, projectdirectory)
FileTreeProjectListUpdate(projectdirectorymenu, 0)
-- disable Delete on non-empty directories
local isdir = tree:GetItemImage(item_id) == image.DIRECTORY
local isdir = tree:IsDirectory(item_id)
local ismapped = tree:IsDirMapped(item_id)
menu:Destroy(ismapped and ID_MAPDIRECTORY or ID_UNMAPDIRECTORY)
if not startfile then menu:Destroy(ID_UNSETSTARTFILE) end
if ismapped then menu:Enable(ID_RENAMEFILE, false) end
if isdir then
local source = tree:GetItemFullName(item_id)
menu:Enable(ID_DELETEFILE, not FileDirHasContent(source..pathsep))
@@ -460,6 +578,7 @@ local function treeSetConnectorsAndIcons(tree)
menu:Enable(ID_OPENEXTENSION, ft and #ft:GetOpenCommand("") > 0)
menu:Enable(ID_HIDEEXTENSION, not filetree.settings.extensionignore[ext])
end
menu:Enable(ID_SETSTARTFILE, tree:IsFileOther(item_id) or tree:IsFileKnown(item_id))
menu:Enable(ID_SHOWEXTENSION, next(filetree.settings.extensionignore) ~= nil)
PackageEventHandle("onMenuFiletree", menu, tree, event)
@@ -490,7 +609,7 @@ local function treeSetConnectorsAndIcons(tree)
end
if item_id and bit.band(flags, mask) > 0 then
if tree:GetItemImage(item_id) == image.DIRECTORY then
if tree:IsDirectory(item_id) then
tree:Toggle(item_id)
tree:SelectItem(item_id)
else
@@ -507,7 +626,7 @@ local function treeSetConnectorsAndIcons(tree)
function (event)
local itemsrc = event:GetItem()
parent = tree:GetItemParent(itemsrc)
if not itemsrc:IsOk() then event:Veto() end
if not itemsrc:IsOk() or tree:IsDirMapped(itemsrc) then event:Veto() end
end)
tree:Connect(wx.wxEVT_COMMAND_TREE_END_LABEL_EDIT,
function (event)
@@ -564,12 +683,11 @@ end
local projtree = wx.wxTreeCtrl(ide.frame, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxDefaultSize,
wx.wxTR_HAS_BUTTONS + wx.wxTR_SINGLE + wx.wxTR_LINES_AT_ROOT
+ wx.wxTR_EDIT_LABELS)
+ wx.wxTR_EDIT_LABELS + wx.wxNO_BORDER)
projtree:SetFont(ide.font.fNormal)
filetree.projtree = projtree
filetree.projtreeCtrl = projtree
local projnotebook = ide.frame.projnotebook
projnotebook:AddPage(projtree, TR("Project"), true)
ide:GetProjectNotebook():AddPage(projtree, TR("Project"), true)
-- proj connectors
-- ---------------

View File

@@ -109,20 +109,24 @@ function findReplace:GetSelectedString()
end
local function shake(window, shakes, duration, vigour)
shakes = shakes or 4
duration = duration or 0.5
vigour = vigour or 0.05
if not window then return end
local delay = math.floor(duration/shakes/2)
shakes = shakes or 3
duration = duration or 0.2 -- in seconds
vigour = vigour or 0.03
local function oneshake(x, y, delay)
local s = os.clock()
window:Move(x, y)
window:Update() window:Refresh() -- force refresh
wx.wxMilliSleep(math.max(0, math.floor((delay-(os.clock()-s))*1000)))
end
local delay = duration/shakes/2
local position = window:GetPosition() -- get current position
local deltax = window:GetSize():GetWidth()*vigour
for _ = 1, shakes do
window:Move(position:GetX()-deltax, position:GetY())
wx.wxMilliSleep(delay)
window:Move(position:GetX()+deltax, position:GetY())
wx.wxMilliSleep(delay)
oneshake(position:GetX()-deltax, position:GetY(), delay)
oneshake(position:GetX()+deltax, position:GetY(), delay)
end
window:Move(position) -- restore position
end
@@ -147,7 +151,7 @@ function findReplace:FindString(reverse)
findReplace.foundString = true
local start = editor:GetTargetStart()
local finish = editor:GetTargetEnd()
editor:EnsureVisibleEnforcePolicy(editor:LineFromPosition(start))
editor:ShowPosEnforcePolicy(finish)
editor:SetSelection(start, finish)
ide.frame:SetStatusText("")
end
@@ -229,8 +233,7 @@ function findReplace:ReplaceString(fReplaceAll, inFileRegister)
editor:TargetFromSelection()
-- check if there is anything selected as well as the user can
-- move the cursor after successful search
if findReplace.foundString
and editor:GetSelectionStart() ~= editor:GetSelectionEnd()
if editor:GetSelectionStart() ~= editor:GetSelectionEnd()
-- check that the current selection matches what's being searched for
and editor:SearchInTarget(findReplace.findText) ~= NOTFOUND then
local start = editor:GetSelectionStart()
@@ -308,10 +311,11 @@ end
function findReplace:RunInFiles(replace)
if not findReplace:HasText() then return end
findReplace.oveditor = wxstc.wxStyledTextCtrl(findReplace.dialog, wx.wxID_ANY,
findReplace.oveditor = ide:CreateStyledTextCtrl(findReplace.dialog, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxSize(1,1), wx.wxBORDER_NONE)
findReplace.occurrences = 0
ClearOutput()
ActivateOutput()
local startdir = findReplace.filedirText
@@ -500,7 +504,7 @@ function findReplace:createDialog(replace,infiles)
mainSizer:SetSizeHints(findDialog)
findDialog:SetSizer(mainSizer)
local function TransferDataFromWindow()
local function transferDataFromWindow()
findReplace.fWholeWord = wholeWordCheckBox:GetValue()
findReplace.fMatchCase = matchCaseCheckBox:GetValue()
findReplace.fWrap = wrapAroundCheckBox:GetValue()
@@ -545,7 +549,7 @@ function findReplace:createDialog(replace,infiles)
findDialog:Connect(ID_FIND_NEXT, wx.wxEVT_COMMAND_BUTTON_CLICKED,
function()
TransferDataFromWindow()
transferDataFromWindow()
if (findReplace.infiles) then
for _, b in pairs(findReplace.buttons) do b:Disable() end
findReplace:RunInFiles()
@@ -558,7 +562,7 @@ function findReplace:createDialog(replace,infiles)
findDialog:Connect(ID_REPLACE, wx.wxEVT_COMMAND_BUTTON_CLICKED,
function(event)
TransferDataFromWindow()
transferDataFromWindow()
event:Skip()
if findReplace.replace then
if (findReplace.infiles) then
@@ -577,7 +581,7 @@ function findReplace:createDialog(replace,infiles)
if replaceAllButton then
findDialog:Connect(ID_REPLACE_ALL, wx.wxEVT_COMMAND_BUTTON_CLICKED,
function(event)
TransferDataFromWindow()
transferDataFromWindow()
event:Skip()
findReplace:ReplaceString(true)
end)

View File

@@ -394,7 +394,7 @@ local function createBottomNotebook(frame)
bottomnotebook:Connect(wxaui.wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE,
function (event) event:Veto() end)
local errorlog = wxstc.wxStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
local errorlog = ide:CreateStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxBORDER_NONE)
errorlog:Connect(wx.wxEVT_CONTEXT_MENU,
@@ -415,11 +415,9 @@ local function createBottomNotebook(frame)
end)
errorlog:Connect(ID_CLEAROUTPUT, wx.wxEVT_COMMAND_MENU_SELECTED,
function(event)
ClearOutput()
end)
function(event) ClearOutput(true) end)
local shellbox = wxstc.wxStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
local shellbox = ide:CreateStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxBORDER_NONE)
bottomnotebook:AddPage(errorlog, TR("Output"), true)
@@ -480,9 +478,12 @@ do
Bottom():Layer(1):Position(1):PaneBorder(false):
CloseButton(true):MaximizeButton(false):PinButton(true))
for _, uimgr in pairs {mgr, frame.notebook:GetAuiManager(),
frame.bottomnotebook:GetAuiManager(), frame.projnotebook:GetAuiManager()} do
uimgr:GetArtProvider():SetMetric(wxaui.wxAUI_DOCKART_SASH_SIZE, 2)
if type(ide.config.bordersize) == 'number' then
for _, uimgr in pairs {mgr, frame.notebook:GetAuiManager(),
frame.bottomnotebook:GetAuiManager(), frame.projnotebook:GetAuiManager()} do
uimgr:GetArtProvider():SetMetric(wxaui.wxAUI_DOCKART_SASH_SIZE,
ide.config.bordersize)
end
end
for _, nb in pairs {frame.bottomnotebook, frame.projnotebook} do

View File

@@ -26,8 +26,12 @@ 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()
@@ -61,6 +65,11 @@ ID_BOOKMARK = NewID()
ID_BOOKMARKTOGGLE = NewID()
ID_BOOKMARKNEXT = NewID()
ID_BOOKMARKPREV = NewID()
ID_NAVIGATE = NewID()
ID_NAVIGATETOFILE = NewID()
ID_NAVIGATETOLINE = NewID()
ID_NAVIGATETOSYMBOL = NewID()
ID_NAVIGATETOMETHOD = NewID()
-- don't use wx.wxID_PREFERENCES to avoid merging with OSX app menu, because
-- Apple guidelines describe Preferences as a "normal" item without submenus.
ID_PREFERENCES = NewID()
@@ -75,7 +84,6 @@ ID_FINDSELECTPREV = NewID()
ID_REPLACE = NewID()
ID_FINDINFILES = NewID()
ID_REPLACEINFILES = NewID()
ID_GOTOLINE = NewID()
ID_SORT = NewID()
-- View menu
ID_VIEWFILETREE = NewID()
@@ -105,6 +113,7 @@ ID_DETACHDEBUG = NewID()
ID_STEP = NewID()
ID_STEPOVER = NewID()
ID_STEPOUT = NewID()
ID_RUNTO = NewID()
ID_BREAK = NewID()
ID_TRACE = NewID()
ID_CLEAROUTPUT = NewID()
@@ -134,11 +143,10 @@ ID_QUICKEVAL = NewID()
ID_ADDTOSCRATCHPAD = NewID()
local ids = {}
function ID (name)
ids[name] = ids[name] or NewID()
return ids[name]
function IDgen (name)
ids[name] = ids[name] or NewID()
return ids[name]
end
function IDget (name) return ids[name] end
function IDget (name)
return ids[name]
end
ID = setmetatable({}, ide.proto.ID)

View File

@@ -3,7 +3,6 @@
---------------------------------------------------------
local M, LA, LI, T = {}
local FAST = true
local function init()
if LA then return end
@@ -16,11 +15,6 @@ local function init()
LA = require "luainspect.ast"
LI = require "luainspect.init"
T = require "luainspect.types"
if FAST then
LI.eval_comments = function () end
LI.infer_values = function () end
end
end
function M.pos2line(pos)
@@ -33,13 +27,20 @@ function M.warnings_from_string(src, file)
local ast, err, linenum, colnum = LA.ast_from_string(src, file)
if not ast and err then return nil, err, linenum, colnum end
if FAST then
LI.inspect(ast, nil, src)
LA.ensure_parents_marked(ast)
else
if ide.config.staticanalyzer.infervalue then
local tokenlist = LA.ast_to_tokenlist(ast, src)
LI.inspect(ast, tokenlist, src)
LI.mark_related_keywords(ast, tokenlist, src)
else
-- stub out LI functions that depend on tokenlist,
-- which is not built in the "fast" mode
local ec, iv = LI.eval_comments, LI.infer_values
LI.eval_comments, LI.infer_values = function() end, function() end
LI.inspect(ast, nil, src)
LA.ensure_parents_marked(ast)
LI.eval_comments, LI.infer_values = ec, iv
end
local globinit = {}
@@ -73,7 +74,10 @@ function M.show_warnings(top_ast, globinit)
end
local function known(o) return not T.istype[o] end
local function index(f) -- build abc.def.xyz name recursively
return (f[1].tag == 'Id' and f[1][1] or index(f[1])) .. '.' .. f[2][1] end
if not f or f.tag ~= 'Index' or not f[1] or not f[2] then return end
local main = f[1].tag == 'Id' and f[1][1] or index(f[1])
return main and type(f[2][1]) == "string" and (main .. '.' .. f[2][1]) or nil
end
local globseen, isseen, fieldseen = globinit or {}, {}, {}
LA.walk(top_ast, function(ast)
M.ast = ast
@@ -126,7 +130,7 @@ function M.show_warnings(top_ast, globinit)
line, path)
end
else
if parent.tag == 'Localrec' then -- local function foo...
if parent and parent.tag == 'Localrec' then -- local function foo...
warn("unused local function '" .. name .. "'", line, path)
else
warn("unused local variable '" .. name .. "'; "..
@@ -134,16 +138,24 @@ function M.show_warnings(top_ast, globinit)
end
end
end
-- added check for FAST as ast.seevalue relies on value evaluation,
-- added check for "fast" mode as ast.seevalue relies on value evaluation,
-- which is very slow even on simple and short scripts
if not FAST and ast.isfield and not(known(ast.seevalue.value) and ast.seevalue.value ~= nil) then
if ide.config.staticanalyzer.infervalue and ast.isfield
and not(known(ast.seevalue.value) and ast.seevalue.value ~= nil) then
if not fieldseen[name] then
fieldseen[name] = true
local parent = ast.parent
and (" in '"..index(ast.parent):gsub("%."..name.."$","").."'")
local var = index(ast.parent)
local parent = ast.parent and var
and (" in '"..var:gsub("%."..name.."$","").."'")
or ""
warn("first use of unknown field '" .. name .."'"..parent,
ast.lineinfo and tostring(ast.lineinfo.first):match('|L(%d+)'), path)
local tblref = ast.parent and ast.parent[1]
local localparam = (tblref and tblref.localdefinition
and tblref.localdefinition.isparam)
if not localparam then
warn("first use of unknown field '" .. name .."'"..parent,
ast.lineinfo and tostring(ast.lineinfo.first):match('|L(%d+)'), path)
end
end
elseif ast.tag == 'Id' and not ast.localdefinition and not ast.definedglobal then
if not globseen[name] then
@@ -194,7 +206,7 @@ end
local debugger = ide.debugger
local function analyzeProgram(editor)
if ide:GetMenuBar():IsChecked(ID_CLEAROUTPUT) then ClearOutput() end
ClearOutput()
DisplayOutput("Analyzing the source code")
frame:Update()
@@ -203,13 +215,13 @@ local function analyzeProgram(editor)
local filePath = doc:GetFilePath() or doc:GetFileName()
local warn, err = M.warnings_from_string(editorText, filePath)
if err then -- report compilation error
DisplayOutput((": not completed.\n%s\n"):format(cleanError(err)))
DisplayOutputLn((": not completed.\n%s"):format(cleanError(err)))
return false
end
DisplayOutput((": %s warning%s.\n")
DisplayOutputLn((": %s warning%s.")
:format(#warn > 0 and #warn or 'no', #warn == 1 and '' or 's'))
DisplayOutputNoMarker(table.concat(warn, "\n") .. "\n")
DisplayOutputNoMarker(table.concat(warn, "\n") .. (#warn > 0 and "\n" or ""))
return true -- analyzed ok
end

View File

@@ -53,6 +53,10 @@ ide.config.keymap = {
[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",
@@ -62,7 +66,6 @@ ide.config.keymap = {
[ID_REPLACE] = "Ctrl-R",
[ID_FINDINFILES] = "Ctrl-Shift-F",
[ID_REPLACEINFILES] = "Ctrl-Shift-R",
[ID_GOTOLINE] = "Ctrl-G",
[ID_SORT] = "",
-- View menu
[ID_VIEWFILETREE] = "Ctrl-Shift-P",
@@ -85,6 +88,7 @@ ide.config.keymap = {
[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",

View File

@@ -4,6 +4,7 @@
---------------------------------------------------------
local ide = ide
-- ---------------------------------------------------------------------------
-- Create the Edit menu and attach the callback functions

View File

@@ -16,7 +16,7 @@ local uimgr = frame.uimgr
local debugTab = {
{ ID_RUN, TR("&Run")..KSC(ID_RUN), TR("Execute the current project/file") },
{ ID_RUNNOW, TR("Run as Scratchpad")..KSC(ID_RUNNOW), TR("Execute the current project/file and keep updating the code to see immediate results"), wx.wxITEM_CHECK },
{ ID_RUNNOW, TR("Run As Scratchpad")..KSC(ID_RUNNOW), TR("Execute the current project/file and keep updating the code to see immediate results"), wx.wxITEM_CHECK },
{ ID_COMPILE, TR("&Compile")..KSC(ID_COMPILE), TR("Compile the current file") },
{ ID_STARTDEBUG, TR("Start &Debugging")..KSC(ID_STARTDEBUG), TR("Start or continue debugging") },
{ ID_ATTACHDEBUG, TR("&Start Debugger Server")..KSC(ID_ATTACHDEBUG), TR("Allow external process to start debugging"), wx.wxITEM_CHECK },
@@ -26,6 +26,7 @@ local debugTab = {
{ ID_STEP, TR("Step &Into")..KSC(ID_STEP), TR("Step into") },
{ ID_STEPOVER, TR("Step &Over")..KSC(ID_STEPOVER), TR("Step over") },
{ ID_STEPOUT, TR("Step O&ut")..KSC(ID_STEPOUT), TR("Step out of the current function") },
{ ID_RUNTO, TR("Run To Cursor")..KSC(ID_RUNTO), TR("Run to cursor") },
{ ID_TRACE, TR("Tr&ace")..KSC(ID_TRACE), TR("Trace execution showing each executed line") },
{ ID_BREAK, TR("&Break")..KSC(ID_BREAK), TR("Break execution at the next executed line of code") },
{ },
@@ -121,7 +122,10 @@ end
-- Project directory handling
function ProjectUpdateProjectDir(projdir,skiptree)
-- strip trailing spaces as this may create issues with "path/ " on Windows
projdir = projdir:gsub("%s+$","")
local dir = wx.wxFileName.DirName(FixDir(projdir))
dir:Normalize() -- turn into absolute path if needed
if not wx.wxDirExists(dir:GetFullPath()) then return end
projdir = dir:GetPath(wx.wxPATH_GET_VOLUME) -- no trailing slash
@@ -129,9 +133,8 @@ function ProjectUpdateProjectDir(projdir,skiptree)
ide.config.path.projectdir = projdir ~= "" and projdir or nil
frame:SetStatusText(projdir)
frame:SetTitle(ExpandPlaceholders(ide.config.format.apptitle))
if (not skiptree) then
ide.filetree:updateProjectDir(projdir)
end
if (not skiptree) then ide.filetree:updateProjectDir(projdir) end
return true
end
local function projChoose(event)
@@ -144,13 +147,12 @@ local function projChoose(event)
local filePicker = wx.wxDirDialog(frame, TR("Choose a project directory"),
projectdir ~= "" and projectdir or wx.wxGetCwd(), wx.wxDIRP_DIR_MUST_EXIST)
if filePicker:ShowModal(true) == wx.wxID_OK then
ProjectUpdateProjectDir(filePicker:GetPath())
return ProjectUpdateProjectDir(filePicker:GetPath())
end
return true
return false
end
frame:Connect(ID_PROJECTDIRCHOOSE, wx.wxEVT_COMMAND_MENU_SELECTED, projChoose)
frame:Connect(ID_PROJECTDIRCHOOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED, projChoose)
local function projFromFile(event)
local editor = GetEditor()
@@ -187,12 +189,12 @@ local function getNameToRun(skipcheck)
return
end
local id = editor:GetId()
if not openDocuments[id].filePath then SetDocumentModified(id, true) end
local doc = ide:GetDocument(editor)
if not doc:GetFilePath() then doc:SetModified(true) end
if not SaveIfModified(editor) then return end
if ide.config.editor.saveallonrun then SaveAll(true) end
return wx.wxFileName(openDocuments[id].filePath)
return wx.wxFileName(ide:GetProjectStartFile() or doc:GetFilePath())
end
function ActivateOutput()
@@ -210,7 +212,7 @@ function ActivateOutput()
end
local function runInterpreter(wfilename, withdebugger)
if ide.frame.menuBar:IsChecked(ID_CLEAROUTPUT) then ClearOutput() end
ClearOutput()
ActivateOutput()
ClearAllCurrentLineMarkers()
@@ -360,6 +362,18 @@ frame:Connect(ID_DETACHDEBUG, wx.wxEVT_UPDATE_UI,
and (not debugger.scratchpad))
end)
frame:Connect(ID_RUNTO, wx.wxEVT_COMMAND_MENU_SELECTED,
function ()
local editor = GetEditor()
debugger.runto(editor, editor:GetCurrentLine())
end)
frame:Connect(ID_RUNTO, wx.wxEVT_UPDATE_UI,
function (event)
local editor = GetEditor()
event:Enable((debugger.server ~= nil) and (not debugger.running)
and (editor ~= nil) and (not debugger.scratchpad))
end)
frame:Connect(ID_STEP, wx.wxEVT_COMMAND_MENU_SELECTED,
function () debugger.step() end)
frame:Connect(ID_STEP, wx.wxEVT_UPDATE_UI,

View File

@@ -4,26 +4,32 @@
---------------------------------------------------------
local ide = ide
-- Create the Search menu and attach the callback functions
local q = EscapeMagic
local unpack = table.unpack or unpack
local frame = ide.frame
local menuBar = frame.menuBar
local findReplace = ide.findReplace
local findMenu = wx.wxMenu{
{ ID_FIND, TR("&Find")..KSC(ID_FIND), TR("Find text") },
{ ID_FINDNEXT, TR("Find &Next")..KSC(ID_FINDNEXT), TR("Find the next text occurrence") },
{ ID_FINDPREV, TR("Find &Previous")..KSC(ID_FINDPREV), TR("Find the earlier text occurence") },
{ ID_FINDSELECTNEXT, TR("Select and Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
{ ID_FINDSELECTPREV, TR("Select and Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
{ ID_FINDSELECTNEXT, TR("Select And Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
{ ID_FINDSELECTPREV, TR("Select And Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
{ ID_REPLACE, TR("&Replace")..KSC(ID_REPLACE), TR("Find and replace text") },
{ },
{ ID_FINDINFILES, TR("Find &In Files")..KSC(ID_FINDINFILES), TR("Find text in files") },
{ ID_REPLACEINFILES, TR("Re&place In Files")..KSC(ID_REPLACEINFILES), TR("Find and replace text in files") },
{ },
{ ID_GOTOLINE, TR("&Go To Line...")..KSC(ID_GOTOLINE), TR("Go to a selected line") },
}
findMenu:Append(ID_NAVIGATE, TR("Navigate"), wx.wxMenu {
{ ID_NAVIGATETOFILE, TR("Go To File...")..KSC(ID_NAVIGATETOFILE), TR("Go to file") },
{ ID_NAVIGATETOLINE, TR("Go To Line...")..KSC(ID_NAVIGATETOLINE), TR("Go to line") },
{ ID_NAVIGATETOSYMBOL, TR("Go To Symbol...")..KSC(ID_NAVIGATETOSYMBOL), TR("Go to symbol") },
{ ID_NAVIGATETOMETHOD, TR("Insert Library Function...")..KSC(ID_NAVIGATETOMETHOD), TR("Find and insert library function") },
})
menuBar:Append(findMenu, TR("&Search"))
local function onUpdateUISearchMenu(event) event:Enable(GetEditor() ~= nil) end
@@ -56,7 +62,7 @@ frame:Connect(ID_FINDNEXT, wx.wxEVT_COMMAND_MENU_SELECTED,
local selection = editor:GetMainSelection() + 1
if selection >= editor:GetSelections() then selection = 0 end
editor:SetMainSelection(selection)
editor:EnsureCaretVisible()
editor:ShowPosEnforcePolicy(editor:GetCurrentPos())
else
if findReplace:GetSelectedString() or findReplace:HasText() then
findReplace:FindString()
@@ -74,7 +80,7 @@ frame:Connect(ID_FINDPREV, wx.wxEVT_COMMAND_MENU_SELECTED,
local selection = editor:GetMainSelection() - 1
if selection < 0 then selection = editor:GetSelections() - 1 end
editor:SetMainSelection(selection)
editor:EnsureCaretVisible()
editor:ShowPosEnforcePolicy(editor:GetCurrentPos())
else
if findReplace:GetSelectedString() or findReplace:HasText() then
findReplace:FindString(true) -- search up
@@ -129,20 +135,270 @@ frame:Connect(ID_FINDSELECTPREV, wx.wxEVT_COMMAND_MENU_SELECTED,
end)
frame:Connect(ID_FINDSELECTPREV, wx.wxEVT_UPDATE_UI, onUpdateUISearchMenu)
-------------------- Find replace end
local markername = "commandbar.background"
local mac = ide.osname == 'Macintosh'
local win = ide.osname == 'Windows'
local special = {SYMBOL = '@', LINE = ':', METHOD = ';'}
local function navigateTo(default, selected)
local styles = ide.config.styles
local marker = ide:AddMarker(markername,
wxstc.wxSTC_MARK_BACKGROUND, styles.text.fg, styles.caretlinebg.bg)
frame:Connect(ID_GOTOLINE, wx.wxEVT_COMMAND_MENU_SELECTED,
function (event)
local editor = GetEditor()
local linecur = editor:LineFromPosition(editor:GetCurrentPos())
local linemax = editor:LineFromPosition(editor:GetLength()) + 1
local linenum = wx.wxGetNumberFromUser(TR("Enter line number"),
"1 .. "..tostring(linemax),
TR("Go To Line"),
linecur, 1, linemax,
frame)
if linenum > 0 then
editor:GotoLine(linenum-1)
end
local nb = ide:GetEditorNotebook()
local selection = nb:GetSelection()
local files, preview, origline, functions, methods
local function markLine(ed, toline)
ed:MarkerDefine(ide:GetMarker(markername))
ed:MarkerDeleteAll(marker)
ed:MarkerAdd(toline-1, marker)
-- store the original line if not stored yet
origline = origline or (ed:GetCurrentLine()+1)
ed:EnsureVisibleEnforcePolicy(toline-1)
end
CommandBarShow({
defaultText = default or "",
selectedText = selected or "",
onDone = function(t, enter, text)
if not mac then nb:Freeze() end
-- delete all current line markers if any; restore line position
local ed = ide:GetEditor()
if ed and origline then
ed:MarkerDeleteAll(marker)
ed:EnsureVisibleEnforcePolicy(origline-1)
end
local pindex = preview and nb:GetPageIndex(preview)
if enter then
local fline, sline, tabindex = unpack(t or {})
local ed = ide:GetEditor()
-- jump to symbol; tabindex has the position of the symbol
if text and text:find(special.SYMBOL) and tabindex then
ed:GotoPos(tabindex-1)
ed:EnsureVisibleEnforcePolicy(ed:LineFromPosition(tabindex-1))
ed:SetFocus() -- in case the focus is on some other panel
-- insert selected method
elseif text and text:find('^%s*'..special.METHOD) then
if ed then -- clean up text and insert at the current location
local method = sline
local isfunc = methods.desc[method][1]:find(q(method).."%s*%(")
local text = method .. (isfunc and "()" or "")
local pos = ed:GetCurrentPos()
ed:InsertText(pos, text)
ed:EnsureVisibleEnforcePolicy(ed:LineFromPosition(pos))
ed:GotoPos(pos + #method + (isfunc and 1 or 0))
if isfunc then -- show the tooltip
ide.frame:AddPendingEvent(wx.wxCommandEvent(
wx.wxEVT_COMMAND_MENU_SELECTED, ID_SHOWTOOLTIP))
end
end
-- set line position in the (current) editor if requested
elseif text and text:find(special.LINE..'(%d+)%s*$') then
local toline = tonumber(text:match(special.LINE..'(%d+)'))
if toline and ed then
ed:GotoLine(toline-1)
ed:EnsureVisibleEnforcePolicy(toline-1)
ed:SetFocus() -- in case the focus is on some other panel
end
elseif tabindex then -- switch to existing tab
SetEditorSelection(tabindex)
if pindex and pindex ~= tabindex then ClosePage(pindex) end
-- load a new file (into preview if set)
elseif sline or text then
-- 1. use "text" if Ctrl/Cmd-Enter is used
-- 2. otherwise use currently selected file
-- 3. otherwise use "text"
local file = (wx.wxGetKeyState(wx.WXK_CONTROL) and text) or sline or text
local fullPath = MergeFullPath(ide:GetProject(), file)
if not LoadFile(fullPath, preview or nil)
and not ProjectUpdateProjectDir(fullPath) then
if pindex then ClosePage(pindex) end
end
end
else
-- close preview
if pindex then ClosePage(pindex) end
-- restore original selection if canceled
if nb:GetSelection() ~= selection then nb:SetSelection(selection) end
end
preview = nil
if not mac then nb:Thaw() end
end,
onUpdate = function(text)
local lines = {}
local projdir = ide:GetProject()
-- delete all current line markers if any
-- restore the original position if search text is updated
local ed = ide:GetEditor()
if ed and origline then ed:MarkerDeleteAll(marker) end
-- reset cached functions if no symbol search
if text and not text:find(special.SYMBOL) then
functions = nil
if ed and origline then ed:EnsureVisibleEnforcePolicy(origline-1) end
end
-- 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 not functions then
local funcs, nums = OutlineFunctions(ed), {}
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
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
local func, score = unpack(item)
topscore = topscore or score
nums[func] = (nums[func] or 0) + 1
local num = nums[func]
if score > topscore / 4 and score > 1 then
table.insert(lines, {("%2d %s"):format(score, func),
functions.src[func..num], functions.pos[func..num]})
end
end
else
for n, name in ipairs(functions) do
nums[name] = (nums[name] or 0) + 1
local num = nums[name]
lines[n] = {name, functions.src[name..num], functions.pos[name..num]}
end
end
elseif ed and text and text:find('^%s*'..special.METHOD) then
if not methods then
methods = {desc = {}}
local num = 1
if ed.api and ed.api.tip and ed.api.tip.shortfinfoclass then
for libname, lib in pairs(ed.api.tip.shortfinfoclass) do
for method, val in pairs(lib) do
local signature, desc = val:match('(.-)\n(.*)')
local m = libname..'.'..method
desc = desc and desc:gsub("\n", " ") or val
methods[num] = m
methods.desc[m] = {signature or (libname..'.'..method), desc}
num = num + 1
end
end
end
end
local method = text:match(special.METHOD..'(.*)')
if #method > 0 then
local topscore
for _, item in ipairs(CommandBarScoreItems(methods, method, 100)) do
local method, score = unpack(item)
topscore = topscore or score
if score > topscore / 4 and score > 1 then
table.insert(lines, { score, method })
end
end
end
elseif text and text:find(special.LINE..'(%d+)%s*$') then
local toline = tonumber(text:match(special.LINE..'(%d+)'))
if toline and ed then markLine(ed, toline) end
elseif text and #text > 0 and projdir and #projdir > 0 then
-- populate the list of files
if not files then
files = FileSysGetRecursive(projdir, true)
for k = #files, 1, -1 do
if IsDirectory(files[k]) then
table.remove(files, k)
else
files[k] = files[k]:gsub("^"..q(projdir), "")
end
end
end
local topscore
for _, item in ipairs(CommandBarScoreItems(files, text, 100)) do
local file, score = unpack(item)
topscore = topscore or score
if score > topscore / 4 and score > 1 then
table.insert(lines, {
("%2d %s"):format(score, wx.wxFileName(file):GetFullName()),
file,
})
end
end
else
for _, doc in pairs(ide:GetDocuments()) do
lines[doc:GetTabIndex()+1] = {doc:GetFileName(), doc:GetFilePath(), doc:GetTabIndex()}
end
end
return lines
end,
onItem = function(t)
if methods then
local score, method = unpack(t)
return ("%2d %s"):format(score, methods.desc[method][1]), methods.desc[method][2]
else
return unpack(t)
end
end,
onSelection = function(t, text)
local _, file, tabindex = unpack(t)
if text and text:find(special.SYMBOL) then
local ed = ide:GetEditor()
if ed then markLine(ed, ed:LineFromPosition(tabindex-1)+1) end
return
elseif text and text:find(special.METHOD) then
return
end
if file then file = MergeFullPath(ide:GetProject(), file) end
-- disabling event handlers for the notebook and the editor
-- to minimize changes in the UI when editors are switched
-- or files in the preview are updated.
nb:SetEvtHandlerEnabled(false)
local doc = file and ide:FindDocument(file)
if doc and not tabindex then tabindex = doc:GetTabIndex() end
if tabindex then
local ed = nb:GetPage(tabindex)
ed:SetEvtHandlerEnabled(false)
if nb:GetSelection() ~= tabindex then nb:SetSelection(tabindex) end
ed:SetEvtHandlerEnabled(true)
elseif file then
-- skip binary files with unknown extensions
if #ide:GetKnownExtensions(GetFileExt(file)) > 0
or not isBinary(FileRead(file, 2048)) then
preview = preview or NewFile()
preview:SetEvtHandlerEnabled(false)
LoadFile(file, preview, true, true)
preview:SetFocus()
-- force refresh since the panel covers the editor on OSX/Linux
-- this fixes the preview window not always redrawn on Linux
if not win then preview:Update() preview:Refresh() end
preview:SetEvtHandlerEnabled(true)
elseif preview then
ClosePage(nb:GetPageIndex(preview))
preview = nil
end
end
nb:SetEvtHandlerEnabled(true)
end,
})
end
frame:Connect(ID_NAVIGATETOFILE, wx.wxEVT_COMMAND_MENU_SELECTED,
function() navigateTo("") end)
frame:Connect(ID_NAVIGATETOLINE, wx.wxEVT_COMMAND_MENU_SELECTED,
function() navigateTo(special.LINE) end)
frame:Connect(ID_NAVIGATETOMETHOD, wx.wxEVT_COMMAND_MENU_SELECTED,
function() navigateTo(special.METHOD) end)
frame:Connect(ID_NAVIGATETOSYMBOL, wx.wxEVT_COMMAND_MENU_SELECTED,
function()
local ed = GetEditor()
navigateTo(special.SYMBOL, ed and ed:ValueFromPosition(ed:GetCurrentPos()))
end)
frame:Connect(ID_GOTOLINE, wx.wxEVT_UPDATE_UI, onUpdateUISearchMenu)

View File

@@ -75,7 +75,7 @@ local function outlineRefresh(editor, force)
caches[editor] = cache
-- add file
local filename = ide:GetDocument(editor):GetFileName()
local filename = ide:GetDocument(editor):GetTabText()
local fileitem = cache.fileitem
if not fileitem then
local root = ctrl:GetRootItem()
@@ -95,6 +95,7 @@ local function outlineRefresh(editor, force)
do -- check if any changes in the cached function list
local prevfuncs = cache.funcs or {}
local nochange = #funcs == #prevfuncs
local resort = {} -- items that need to be re-sorted
if nochange then
for n, func in ipairs(funcs) do
func.item = prevfuncs[n].item -- carry over cached items
@@ -103,6 +104,7 @@ local function outlineRefresh(editor, force)
elseif nochange 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
end
if func.image ~= prevfuncs[n].image then
ctrl:SetItemImage(prevfuncs[n].item, func.image)
@@ -111,7 +113,12 @@ local function outlineRefresh(editor, force)
end
end
cache.funcs = funcs -- set new cache as positions may change
if nochange and not force then return end -- return if no visible changes
if nochange and not force then -- return if no visible changes
if outcfg.sort then -- resort items for all parents that have been modified
for item in pairs(resort) do ctrl:SortChildren(item) end
end
return
end
end
-- refresh the tree
@@ -124,15 +131,20 @@ local function outlineRefresh(editor, force)
ctrl:Freeze()
ctrl:DeleteChildren(fileitem)
local stack = {fileitem}
local resort = {} -- items that need to be re-sorted
for n, func in ipairs(funcs) do
local depth = func.depth
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
end
if outcfg.sort then -- resort items for all parents that have been modified
for item in pairs(resort) do ctrl:SortChildren(item) end
end
ctrl:ExpandAllChildren(fileitem)
-- scroll to the fileitem, but only if it's not a root item (as it's hidden)
if fileitem:GetValue() ~= ctrl:GetRootItem():GetValue() then
@@ -151,7 +163,7 @@ local function outlineCreateOutlineWindow()
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_HIDE_ROOT)
+ wx.wxTR_HIDE_ROOT + wx.wxNO_BORDER)
ide.outline.outlineCtrl = ctrl
ide.timers.outline = wx.wxTimer(ctrl)
@@ -220,7 +232,7 @@ local function outlineCreateOutlineWindow()
local layout = ide:GetSetting("/view", "uimgrlayout")
if not layout or not layout:find("outlinepanel") then
ide:AddPanelDocked(ide.frame.projnotebook, ctrl, "outlinepanel", TR("Outline"), reconfigure, false)
ide:AddPanelDocked(ide:GetProjectNotebook(), ctrl, "outlinepanel", TR("Outline"), reconfigure, false)
else
ide:AddPanel(ctrl, "outlinepanel", TR("Outline"), reconfigure)
end
@@ -238,6 +250,16 @@ 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
end
ide:AddPackage('core.outline', {
-- remove the editor from the list
onEditorClose = function(self, editor)
@@ -255,8 +277,8 @@ ide:AddPackage('core.outline', {
local fileitem = cache and cache.fileitem
local doc = ide:GetDocument(editor)
local ctrl = ide.outline.outlineCtrl
if doc and fileitem and ctrl:GetItemText(fileitem) ~= doc:GetFileName() then
ctrl:SetItemText(fileitem, doc:GetFileName())
if doc and fileitem and ctrl:GetItemText(fileitem) ~= doc:GetTabText() then
ctrl:SetItemText(fileitem, doc:GetTabText())
end
end,
@@ -267,15 +289,23 @@ ide:AddPackage('core.outline', {
return
end
local cache = caches[editor]
local fileitem = cache and cache.fileitem
local ctrl = ide.outline.outlineCtrl
local itemname = ide:GetDocument(editor):GetTabText()
-- fix file name if it changed in the editor
if fileitem and ctrl:GetItemText(fileitem) ~= itemname then
ctrl:SetItemText(fileitem, itemname)
end
-- 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 caches[editor] then
if not cache and ide.config.outlineinactivity then
ide.timers.outline:Start(ide.config.outlineinactivity*1000, wx.wxTIMER_ONE_SHOT)
end
local cache = caches[editor]
local fileitem = cache and cache.fileitem
eachNode(function(ctrl, item)
local found = fileitem and item:GetValue() == fileitem:GetValue()
if not found and ctrl:IsBold(item) then
@@ -284,7 +314,6 @@ ide:AddPackage('core.outline', {
end
end)
local ctrl = ide.outline.outlineCtrl
if fileitem and not ctrl:IsBold(fileitem) then
ctrl:SetItemBold(fileitem, true)
ctrl:ExpandAllChildren(fileitem)

View File

@@ -33,7 +33,8 @@ end
StylesApplyToEditor(ide.config.stylesoutshell,errorlog,ide.font.oNormal,ide.font.oItalic)
function ClearOutput()
function ClearOutput(force)
if not (force or ide:GetMenuBar():IsChecked(ID_CLEAROUTPUT)) then return end
errorlog:SetReadOnly(false)
errorlog:ClearAll()
errorlog:SetReadOnly(true)

View File

@@ -92,10 +92,14 @@ function ide:GetMainFrame() return self.frame end
function ide:GetUIManager() return self.frame.uimgr end
function ide:GetDocument(ed) return self.openDocuments[ed:GetId()] end
function ide:GetDocuments() return self.openDocuments end
function ide:GetKnownExtensions()
local knownexts = {}
function ide:GetKnownExtensions(ext)
local knownexts, extmatch = {}, ext and ext:lower()
for _, spec in pairs(ide.specs) do
for _, ext in ipairs(spec.exts or {}) do table.insert(knownexts, ext) end
for _, ext in ipairs(spec.exts or {}) do
if not extmatch or extmatch == ext:lower() then
table.insert(knownexts, ext)
end
end
end
return knownexts
end
@@ -151,13 +155,47 @@ 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: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]
return MergeFullPath(projectdir, startfile), startfile
end
function ide:GetLaunchedProcess() return self.debugger and self.debugger.pid end
function ide:GetProjectTree() return ide.filetree.projtree end
function ide:GetProjectTree() return ide.filetree.projtreeCtrl end
function ide:GetOutlineTree() return ide.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
function ide:Yield() wx.wxYield() end
function ide:CreateBareEditor() return CreateEditor(true) end
function ide:CreateStyledTextCtrl(...)
local editor = wxstc.wxStyledTextCtrl(...)
function editor:GotoPosEnforcePolicy(pos)
self:GotoPos(pos)
self:EnsureVisibleEnforcePolicy(self:LineFromPosition(pos))
end
local function getMarginWidth(editor)
local width = 0
for m = 0, 7 do width = width + editor:GetMarginWidth(m) end
return width
end
function editor:ShowPosEnforcePolicy(pos)
local line = self:LineFromPosition(pos)
self:EnsureVisibleEnforcePolicy(line)
-- skip the rest if line wrapping is on
if editor:GetWrapMode() ~= wxstc.wxSTC_WRAP_NONE then return end
local xwidth = self:GetClientSize():GetWidth() - getMarginWidth(self)
local xoffset = self:GetTextExtent(self:GetLine(line):sub(1, pos-self:PositionFromLine(line)+1))
self:SetXOffset(xoffset > xwidth and xoffset-xwidth or 0)
end
return editor
end
function ide:LoadFile(...) return LoadFile(...) end
function ide:GetSetting(path, setting)
local settings = self.settings

View File

@@ -1,6 +1,9 @@
-- Copyright 2013-14 Paul Kulchenko, ZeroBrane LLC
---------------------------------------------------------
local q = EscapeMagic
local modpref = '* '
ide.proto.Document = {__index = {
GetFileName = function(self) return self.fileName end,
GetFilePath = function(self) return self.filePath end,
@@ -9,9 +12,20 @@ ide.proto.Document = {__index = {
GetEditor = function(self) return self.editor end,
GetTabIndex = function(self) return self.index end,
IsModified = function(self) return self.isModified end,
SetModified = function(self, modified) SetDocumentModified(self.editor:GetId(), modified) end,
SetTabText = function(self, text) SetDocumentModified(self.editor:GetId(), self.isModified, text) end,
SetModified = function(self, modified)
self.isModified = modified
self:SetTabText()
end,
SetTabText = function(self, text)
ide:GetEditorNotebook():SetPageText(self.index,
(self.isModified and modpref or '')..(text or self:GetTabText()))
end,
GetTabText = function(self)
if self.index == nil then return self.fileName end
return ide:GetEditorNotebook():GetPageText(self.index):gsub("^"..q(modpref), "")
end,
SetActive = function(self) SetEditorSelection(self.index) end,
Save = function(self) return SaveFile(self.editor, self.filePath) end
}}
ide.proto.Plugin = {__index = {
@@ -41,3 +55,8 @@ ide.proto.Debugger = {__index = {
GetHostName = function(self) return self.hostname end,
GetPortNumber = function(self) return self.portnumber end,
}}
ide.proto.ID = {
__index = function(t, id) return _G['ID_'..id] end,
__call = function(t, id) return IDgen(id) end,
}

View File

@@ -4,6 +4,16 @@
---------------------------------------------------------
local ide = ide
local layoutlabel = {
UIMANAGER = "uimgrlayout",
NOTEBOOK = "nblayout",
NOTEBOOKOUTPUT = "nbbtmlayout",
NOTEBOOKPROJECT = "nbprojlayout",
DOCKNOTEBOOK = "nbdocklayout",
DOCKNOTEBOOKOUTPUT = "nbbtmdocklayout",
DOCKNOTEBOOKPROJECT = "nbprojdocklayout",
STATUSBAR = "statusbar",
}
-- ----------------------------------------------------------------------------
-- Initialize the wxConfig for loading/saving the preferences
@@ -390,7 +400,7 @@ function SettingsRestoreView()
local uimgr = frame.uimgr
local layoutcur = uimgr:SavePerspective()
local layout = settingsReadSafe(settings,"uimgrlayout",layoutcur)
local layout = settingsReadSafe(settings,layoutlabel.UIMANAGER,layoutcur)
if (layout ~= layoutcur) then
-- save the current toolbar besth and re-apply after perspective is loaded
-- bestw and besth has two separate issues:
@@ -424,26 +434,32 @@ function SettingsRestoreView()
end
end
frame:GetStatusBar():Show(settingsReadSafe(settings,"statusbar",true))
frame:GetStatusBar():Show(settingsReadSafe(settings,layoutlabel.STATUSBAR,true))
uimgr:Update()
layoutcur = saveNotebook(frame.bottomnotebook)
layout = settingsReadSafe(settings,"nbbtmlayout",layoutcur)
layoutcur = saveNotebook(ide:GetOutputNotebook())
layout = settingsReadSafe(settings,layoutlabel.NOTEBOOKOUTPUT,layoutcur)
if (layout ~= layoutcur) then
loadNotebook(ide.frame.bottomnotebook,layout,
loadNotebook(ide:GetOutputNotebook(),layout,
-- treat "Output (running)" same as "Output"
function(name) return
name:match(TR("Output")) or name:match("Output") or name end)
end
layoutcur = saveNotebook(ide:GetProjectNotebook())
layout = settingsReadSafe(settings,layoutlabel.NOTEBOOKPROJECT,layoutcur)
if (layout ~= layoutcur) then
loadNotebook(ide:GetProjectNotebook(),layout)
end
-- always select Output tab
local bottomnotebook = frame.bottomnotebook
local bottomnotebook = ide:GetOutputNotebook()
local index = bottomnotebook:GetPageIndex(bottomnotebook.errorlog)
if index >= 0 then bottomnotebook:SetSelection(index) end
layoutcur = saveNotebook(frame.notebook)
layout = settingsReadSafe(settings,"nblayout",layoutcur)
layout = settingsReadSafe(settings,layoutlabel.NOTEBOOK,layoutcur)
if (layout ~= layoutcur) then
loadNotebook(ide.frame.notebook,layout)
local openDocuments = ide.openDocuments
@@ -458,8 +474,9 @@ function SettingsRestoreView()
-- load saved dock_size values and update current values with saved ones
-- where dock_size configuration matches
for l, m in pairs({
nbdocklayout = frame.notebook:GetAuiManager(),
nbbtmdocklayout = frame.bottomnotebook:GetAuiManager(),
[layoutlabel.DOCKNOTEBOOK] = ide:GetEditorNotebook():GetAuiManager(),
[layoutlabel.DOCKNOTEBOOKOUTPUT] = ide:GetOutputNotebook():GetAuiManager(),
[layoutlabel.DOCKNOTEBOOKPROJECT] = ide:GetProjectNotebook():GetAuiManager(),
}) do
-- ...|dock_size(5,0,0)=20|dock_size(2,1,0)=200|...
local prevlayout = settingsReadSafe(settings, l, "")
@@ -486,12 +503,14 @@ function SettingsSaveView()
local frame = ide.frame
local uimgr = frame.uimgr
settings:Write("uimgrlayout", uimgr:SavePerspective())
settings:Write("nblayout", saveNotebook(frame.notebook))
settings:Write("nbbtmlayout", saveNotebook(frame.bottomnotebook))
settings:Write("statusbar", frame:GetStatusBar():IsShown())
settings:Write("nbdocklayout", frame.notebook:GetAuiManager():SavePerspective())
settings:Write("nbbtmdocklayout", frame.bottomnotebook:GetAuiManager():SavePerspective())
settings:Write(layoutlabel.UIMANAGER, uimgr:SavePerspective())
settings:Write(layoutlabel.NOTEBOOK, saveNotebook(ide:GetEditorNotebook()))
settings:Write(layoutlabel.NOTEBOOKOUTPUT, saveNotebook(ide:GetOutputNotebook()))
settings:Write(layoutlabel.NOTEBOOKPROJECT, saveNotebook(ide:GetProjectNotebook()))
settings:Write(layoutlabel.DOCKNOTEBOOK, ide:GetEditorNotebook():GetAuiManager():SavePerspective())
settings:Write(layoutlabel.DOCKNOTEBOOKOUTPUT, ide:GetOutputNotebook():GetAuiManager():SavePerspective())
settings:Write(layoutlabel.DOCKNOTEBOOKPROJECT, ide:GetProjectNotebook():GetAuiManager():SavePerspective())
settings:Write(layoutlabel.STATUSBAR, frame:GetStatusBar():IsShown())
settings:SetPath(path)
end

View File

@@ -4,9 +4,6 @@
local ide = ide
local unpack = table.unpack or unpack
--
-- shellbox - a lua testbed environment within the IDE
--
local bottomnotebook = ide.frame.bottomnotebook
local out = bottomnotebook.shellbox
@@ -147,8 +144,23 @@ local function shellPrint(marker, ...)
local x = select(i,...)
text = text .. tostring(x)..(i < cnt and "\t" or "")
end
-- split the text into smaller chunks as one large line
-- is difficult to handle for the editor
local prev, maxlength = 0, ide.config.debugger.maxdatalength
if #text > maxlength and not text:find("\n.") then
text = text:gsub("()(%s+)", function(p, s)
if p-prev >= maxlength then
prev = p
return "\n"
else
return s
end
end)
end
-- add "\n" if it is missing
if text then text = text:gsub("\n+$", "") .. "\n" end
text = text:gsub("\n+$", "") .. "\n"
local lines = out:GetLineCount()
local promptLine = isPrompt and getPromptLine() or nil

View File

@@ -50,9 +50,7 @@ if success then -- ok, server was started, we are solo
if filename then
RequestAttention()
if wx.wxDirExists(filename) then
local dir = wx.wxFileName.DirName(filename)
dir:Normalize() -- turn into absolute path if needed
ProjectUpdateProjectDir(dir:GetFullPath())
ProjectUpdateProjectDir(filename)
elseif not ActivateFile(filename) then
DisplayOutputLn(TR("Can't open file '%s': %s"):format(filename, wx.wxSysErrorMsg()))
end

View File

@@ -5,7 +5,8 @@ ide.config.toolbar.icons = {
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_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,
@@ -22,11 +23,12 @@ ide.config.toolbar.iconmap = {
[ID_REPLACE] = {"FIND-AND-REPLACE", "Find and replace text"},
[ID_FINDINFILES] = {"FIND-IN-FILES", "Find in files"},
[ID_RUN] = {"RUN", "Execute the current project/file"},
[ID_RUNNOW] = {"RUN-NOW", "Run as Scratchpad"},
[ID_RUNNOW] = {"RUN-NOW", "Run as Scratchpad"}, -- TR("Run as Scratchpad")
[ID_STARTDEBUG] = {"DEBUG-START", "Start or continue debugging"},
[ID_STOPDEBUG] = {"DEBUG-STOP", "Stop the currently running process"},
[ID_DETACHDEBUG]= {"DEBUG-DETACH", "Stop debugging and continue running the process"},
[ID_BREAK] = {"DEBUG-BREAK", "Break execution at the next executed line of code"},
[ID_RUNTO] = {"DEBUG-RUN-TO", "Run to cursor"},
[ID_STEP] = {"DEBUG-STEP-INTO", "Step into"},
[ID_STEPOVER] = {"DEBUG-STEP-OVER", "Step over"},
[ID_STEPOUT] = {"DEBUG-STEP-OUT", "Step out of the current function"},

View File

@@ -4,15 +4,22 @@
-- put bin/ and lualibs/ first to avoid conflicts with included modules
-- that may have other versions present somewhere else in path/cpath.
local function isproc()
local file = io.open("/proc")
if file then file:close() end
return file ~= nil
end
local iswindows = os.getenv('WINDIR') or (os.getenv('OS') or ''):match('[Ww]indows')
local islinux = not iswindows and not os.getenv('DYLD_LIBRARY_PATH') and io.open("/proc")
local islinux = not iswindows and isproc()
local arch = "x86" -- use 32bit by default
local unpack = table.unpack or unpack
if islinux then
local file = io.popen("uname -m")
if file then
arch = file:read("*a"):find("x86_64") and "x64" or "x86"
local machine=file:read("*l")
local archtype= { x86_64="x64", armv7l="armhf" }
arch = archtype[machine] or "x86"
file:close()
end
end
@@ -62,6 +69,9 @@ ide = {
port = nil,
runonstart = nil,
redirect = nil,
maxdatalength = 400,
maxdatanum = 400,
maxdatalevel = 3,
},
default = {
name = 'untitled',
@@ -76,6 +86,16 @@ ide = {
},
outline = {
showanonymous = '~',
showflat = false,
showmethodindicator = false,
showonefile = false,
sort = false,
},
commandbar = {
prefilter = 250, -- number of records after which to apply filtering
},
staticanalyzer = {
infervalue = false, -- off by default as it's a slower mode
},
toolbar = {
@@ -103,8 +123,10 @@ ide = {
strategy = 2,
width = 60,
maxlength = 450,
warning = true,
},
arg = {}, -- command line arguments
api = {}, -- additional APIs to load
format = { -- various formatting strings
menurecentprojects = "%f | %i",
@@ -119,6 +141,7 @@ ide = {
outlineinactivity = 0.250, -- seconds
filehistorylength = 20,
projecthistorylength = 20,
bordersize = 2,
savebak = false,
singleinstance = false,
singleinstanceport = 0xe493,
@@ -216,7 +239,7 @@ end
dofile "src/version.lua"
for _, file in ipairs({"ids", "style", "keymap", "proto", "toolbar"}) do
for _, file in ipairs({"proto", "ids", "style", "keymap", "toolbar"}) do
dofile("src/editor/"..file..".lua")
end
@@ -253,7 +276,8 @@ local function setLuaPaths(mainpath, osname)
wx.wxSetEnv("LUA_PATH",
(os.getenv("LUA_PATH") or ';') .. ';'
.. "./?.lua;./?/init.lua;./lua/?.lua;./lua/?/init.lua" .. ';'
.. mainpath.."lualibs/?/?.lua;"..mainpath.."lualibs/?.lua"
.. mainpath.."lualibs/?/?.lua;"..mainpath.."lualibs/?.lua;"
.. mainpath.."lualibs/?/?/init.lua;"..mainpath.."lualibs/?/init.lua"
.. (luadev_path and (';' .. luadev_path) or ''))
ide.osclibs = -- keep the list to use for other Lua versions
@@ -428,7 +452,7 @@ end
-- process config
-- set ide.config environment
setmetatable(ide.config, {__index = {os = os, wxstc = wxstc, wx = wx}})
setmetatable(ide.config, {__index = {os = os, wxstc = wxstc, wx = wx, ID = ID}})
ide.config.load = { interpreters = loadInterpreters, specs = loadSpecs,
tools = loadTools }
do
@@ -481,8 +505,17 @@ do
-- process all other configs (if any)
for _, v in ipairs(configs) do LoadLuaConfig(v, true) end
configs = nil
-- check and apply default styles in case a user resets styles in the config
for _, styles in ipairs({"styles", "stylesoutshell"}) do
if not ide.config[styles] then
print(("Ignored incorrect value of '%s' setting in the configuration file")
:format(styles))
ide.config[styles] = StylesGetDefault()
end
end
local sep = GetPathSeparator()
if ide.config.language then
LoadLuaFileExt(ide.config.messages, "cfg"..sep.."i18n"..sep..ide.config.language..".lua")
@@ -495,8 +528,8 @@ loadPackages()
-- Load App
for _, file in ipairs({
"markup", "settings", "singleinstance", "iofilters",
"package", "gui", "filetree", "output", "debugger", "outline",
"markup", "settings", "singleinstance", "iofilters", "package",
"gui", "filetree", "output", "debugger", "outline", "commandbar",
"editor", "findreplace", "commands", "autocomplete", "shellbox",
"menu_file", "menu_edit", "menu_search",
"menu_view", "menu_project", "menu_tools", "menu_help",
@@ -529,9 +562,7 @@ do
for _, filename in ipairs(filenames) do
if filename ~= "--" then
if wx.wxDirExists(filename) then
local dir = wx.wxFileName.DirName(filename)
dir:Normalize() -- turn into absolute path if needed
ProjectUpdateProjectDir(dir:GetFullPath())
ProjectUpdateProjectDir(filename)
elseif not ActivateFile(filename) then
DisplayOutputLn(("Can't open file '%s': %s"):format(filename, wx.wxSysErrorMsg()))
end

View File

@@ -137,7 +137,7 @@ function GetFileModTime(filePath)
end
function GetFileExt(filePath)
local match = filePath and filePath:match("%.([^./\\]*)$")
local match = filePath and filePath:gsub("%s+$",""):match("%.([^./\\]*)$")
return match and match:lower() or ''
end
@@ -169,7 +169,7 @@ function FileSysGetRecursive(path, recursive, spec, skip)
local dir = wx.wxDir(path)
if not dir:IsOpened() then return end
local log = wx.wxLogNull() -- disable error reporting; will report as needed
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
local found, file = dir:GetFirst("*", wx.wxDIR_DIRS)
while found do
if not skip or not file:find(skip) then
@@ -179,11 +179,12 @@ function FileSysGetRecursive(path, recursive, spec, skip)
-- Skip the processing if it does as it could lead to infinite
-- recursion with circular references created by symlinks.
if recursive and select(2, fname:gsub(EscapeMagic(file..sep),'')) <= 2 then
getDir(fname, spec) end
getDir(fname, spec)
end
end
found, file = dir:GetNext()
end
local found, file = dir:GetFirst(spec, wx.wxDIR_FILES)
found, file = dir:GetFirst(spec, wx.wxDIR_FILES)
while found do
if not skip or not file:find(skip) then
local fname = wx.wxFileName(path, file):GetFullPath()
@@ -227,7 +228,7 @@ function MergeFullPath(p, f)
end
function FileWrite(file, content)
local log = wx.wxLogNull() -- disable error reporting; will report as needed
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
if not wx.wxFileExists(file)
and not wx.wxFileName(file):Mkdir(tonumber(755,8), wx.wxPATH_MKDIR_FULL) then
@@ -242,26 +243,26 @@ function FileWrite(file, content)
return true
end
function FileRead(file)
function FileRead(file, length)
-- on OSX "Open" dialog allows to open applications, which are folders
if wx.wxDirExists(file) then return nil, "Can't read directory as file." end
local log = wx.wxLogNull() -- disable error reporting; will report as needed
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
local file = wx.wxFile(file, wx.wxFile.read)
if not file:IsOpened() then return nil, wx.wxSysErrorMsg() end
local _, content = file:Read(file:Length())
local _, content = file:Read(length or file:Length())
file:Close()
return content, wx.wxSysErrorMsg()
end
function FileRename(file1, file2)
local log = wx.wxLogNull() -- disable error reporting; will report as needed
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
return wx.wxRenameFile(file1, file2), wx.wxSysErrorMsg()
end
function FileCopy(file1, file2)
local log = wx.wxLogNull() -- disable error reporting; will report as needed
local _ = wx.wxLogNull() -- disable error reporting; will report as needed
return wx.wxCopyFile(file1, file2), wx.wxSysErrorMsg()
end

View File

@@ -52,6 +52,15 @@ editor:AddText([[
ok(limit(10000, function() EditorAutoComplete(editor) end),
"Auto-complete doesn't loop for classes that reference '...'.")
editor:SetText('')
editor:AddText([[
buf = str
str = buf..str
buf = buf..]])
ok(limit(10000, function() EditorAutoComplete(editor) end),
"Auto-complete doesn't loop for string concatenations with self-reference.")
-- create a valuetype self-reference
-- this is to test "s = Scan(); s:" fragment
ide.apis.lua.baselib.io.valuetype = "io"
@@ -94,6 +103,39 @@ 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('-- @tparam string foo\n')
editor.assignscache = false
ok((CreateAutoCompList(editor, "foo.") or ""):match('byte'),
"Auto-complete offers methods for variable defined as '@tparam string'.")
editor:SetText('')
editor:AddText('-- @param[type=string] foo\n')
editor.assignscache = false
ok((CreateAutoCompList(editor, "foo:") or ""):match('byte'),
"Auto-complete offers methods for variable defined as '@param[type=string]'.")
local strategy = ide.config.acandtip.strategy
ide.config.acandtip.strategy = 1
editor:SetText('')
editor:AddText('local value\nprint(va')
IndicateAll(editor)
local status, res = pcall(CreateAutoCompList, editor, "va")
ok(status and (res or ""):match('value'),
"Auto-complete offers methods for strategy=1' (1/2).")
editor:SetText('')
editor:AddText('local value\nprint(va')
local status, res = pcall(CreateAutoCompList, editor, "va")
ok(status and (res or ""):match('value'),
"Auto-complete offers methods for strategy=1' (2/2).")
-- cleanup
ide.config.acandtip.strategy = strategy
ide:GetDocument(editor).isModified = false
ClosePage()

View File

@@ -1,5 +1,5 @@
local output = ide.frame.bottomnotebook.errorlog
local shell = ide.frame.bottomnotebook.shellbox
local output = ide:GetOutput()
local shell = ide:GetConsole()
local text = output:GetText()
output:SetReadOnly(false)

23
t/7-fuzzysearch.lua Normal file
View File

@@ -0,0 +1,23 @@
-- other tests for fuzzy searches
-- textmate: https://github.com/textmate/textmate/blob/master/Frameworks/text/tests/t_ranker.cc
-- brackets: https://github.com/adobe/brackets/blob/2c1616a6346dfee29a8321b5ecc9e0f636ec42d8/test/spec/StringMatch-test.js
local function check(s, p1, p2)
local r = CommandBarScoreItems({p1, p2}, s)
ok(r[1][1] == p1,
("'%s' is more similar to '%s' (%d) than to '%s' (%d).")
:format(s, p1, r[1][1] == p1 and r[1][2] or r[2][2],
p2, r[2][1] == p2 and r[2][2] or r[1][2]))
end
check("mtv", "MTVStatusBar.txt", "MyTextView.txt")
check("doc", "document.lua", "MyDocument.txt")
check("paste", "Paste Selection Online", "Encrypt With Password")
check("zerobrane", "zerobrane", "ZeroBraneStudio")
check("barfileopen", "BarFileOpen", "BarFinderLabelOpen")
check("readme", "readme", "README")
check("ReadMe", "READme", "readME")
check("f", "fun", "funclist.lua")
ok(1 == #CommandBarScoreItems({"funclist.lua", "f"}, "fun"),
"Patterns longer than strings don't match.")

10
t/8-file.lua Normal file
View File

@@ -0,0 +1,10 @@
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).")
local fullpath = MergeFullPath(wx.wxFileName.GetCwd(), 't/test.lua')
ok(ActivateFile('t/test.lua:10'), "Load file:line.")
ok(not ActivateFile('t/foo.bar:10'), "Doesn't load non-existent file:line.")
ok(ActivateFile(fullpath..':10'), "Load fullpath/file:line.")
ok(not ActivateFile(fullpath..'/foo.bar:10'), "Doesn't load non-existent fullpath/file:line.")

View File

@@ -1,2 +1 @@
@echo off
zbstudio -cfg t/test.lua
@zbstudio -cfg t/test.lua

View File

@@ -6,6 +6,10 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [[ $(uname) == 'Darwin' ]]; then
(cd "$DIR"; open zbstudio/ZeroBraneStudio.app --args "$@")
else
if [[ "$(uname -m)" == "x86_64" ]]; then ARCH="x64"; else ARCH="x86"; fi
case "$(uname -m)" in
x86_64) ARCH=x64;;
armv7l) ARCH=armhf;;
*) ARCH=x86;;
esac
(cd "$DIR"; bin/linux/$ARCH/lua src/main.lua zbstudio "$@") &
fi

View File

@@ -1,7 +1,11 @@
local skipspecs = {
cg = true, glsl = true, luxres = true, opencl = true, sql = true,
cbase = true, hlsl = true, oglgpuprog = true, ptx = true, text = true,
}
return {
loadfilters = {
tools = function(file) return false end,
specs = function(file) return file:find('spec[/\\]lua%.lua$') end,
specs = function(file) return not skipspecs[file:match('spec[/\\]([^/\\]+)%.lua$') or ''] end,
interpreters = function(file) return not file:find('estrela') end,
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

View File

@@ -7,7 +7,7 @@ Jean-Francois Goulet (granted on 2012/01/02).
LuaEdit
Copyright © 2004-2009 Jean-Francois Goulet
Copyright © 2004-2009 Jean-Francois Goulet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B