Compare commits

...

58 Commits
0.95 ... 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
50 changed files with 1551 additions and 936 deletions

View File

@@ -1,9 +0,0 @@
#
# This list is used by git-shortlog to fix a few botched name translations
# in the git archive, either because the author's full name was messed up
# and/or not always written the same way, making contributions from the
# same person appearing not to be so.
#
Christoph Kubisch <pixeljetstream@luxinia.de> <crazybutcher@d4a214e2-3791-4833-b182-d171351aa34e>
Eike Decker <zet23t@googlemail.com> <zet23t@d4a214e2-3791-4833-b182-d171351aa34e>

View File

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

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

@@ -106,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
@@ -218,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
@@ -236,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

View File

@@ -107,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
@@ -219,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
@@ -237,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

View File

@@ -108,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
@@ -220,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
@@ -238,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

View File

@@ -108,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
@@ -220,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
@@ -238,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

View File

@@ -107,7 +107,7 @@ return {
["Debugger server stopped at %s:%d."] = "Serveur de débogage stoppé à %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Session de débogage terminée (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Session de débogage démarrée dans '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Débogage interrompu à %s:%s (impossible d'activer le fichier).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Débogage interrompu à '%s:%s' (impossible d'activer le fichier).", -- src\editor\debugger.lua
["Detach &Process"] = "Détacher le p&rocessus", -- src\editor\menu_project.lua
["Directory"] = "Répertoire ", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Voulez-vous effacer '%s' ?", -- src\editor\filetree.lua
@@ -219,6 +219,7 @@ return {
["Replaced"] = "Occurrences remplacées :", -- src\editor\findreplace.lua
["Replacing"] = "Remplacement de", -- src\editor\findreplace.lua
["Reset to default layout"] = "Restaure l'affichage par défaut", -- src\editor\menu_view.lua
["Run As Scratchpad"] = "Exécuter comme brouillon", -- src\editor\menu_project.lua
["Run as Scratchpad"] = "Exécuter comme brouillon", -- src\editor\menu_project.lua
["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
@@ -237,8 +238,8 @@ return {
["Sel: %d/%d"] = "Sel: %d/%d", -- src\editor\editor.lua
["Select &All"] = "Sélectionner &tout", -- src\editor\gui.lua, src\editor\editor.lua, src\editor\menu_edit.lua
["Select all text in the editor"] = "Sélectionne tout le texte dans l'éditeur", -- src\editor\menu_edit.lua
["Select and Find Next"] = "Sélectionner et rechercher le suivant", -- src\editor\menu_search.lua
["Select and Find Previous"] = "Sélectionner et rerchercher le précédent", -- src\editor\menu_search.lua
["Select 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

View File

@@ -107,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
@@ -219,6 +219,7 @@ return {
["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
@@ -237,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

View File

@@ -110,7 +110,7 @@ return {
["Debugger server stopped at %s:%d."] = "Servidor de depuração interrompido em %s:%d.", -- src\editor\debugger.lua
["Debugging session completed (%s)."] = "Sessão de depuração completada (%s).", -- src\editor\debugger.lua
["Debugging session started in '%s'."] = "Sessão de depuração iniciada em '%s'.", -- src\editor\debugger.lua
["Debugging suspended at %s:%s (couldn't activate the file)."] = "Depuração suspendida em %s:%s (impossível ativar o arquivo).", -- src\editor\debugger.lua
["Debugging suspended at '%s:%s' (couldn't activate the file)."] = "Depuração suspendida em '%s:%s' (impossível ativar o arquivo).", -- src\editor\debugger.lua
["Detach &Process"] = "Separar &processo", -- src\editor\menu_project.lua
["Directory"] = "Pasta", -- src\editor\findreplace.lua
["Do you want to delete '%s'?"] = "Deseja mesmo apagar '%s'?", -- src\editor\filetree.lua
@@ -222,6 +222,7 @@ return {
["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
@@ -240,8 +241,8 @@ return {
["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 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

View File

@@ -65,18 +65,18 @@ return {
["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
@@ -107,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
@@ -169,6 +169,7 @@ return {
["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
@@ -219,7 +220,10 @@ return {
["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
@@ -236,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
@@ -286,6 +291,8 @@ return {
["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

View File

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

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

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

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

@@ -164,6 +164,8 @@ return {
: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

View File

@@ -189,7 +189,7 @@ end
local function generateAPIInfo(only)
for i,api in pairs(apis) do
if ((not only) or i == only) then
fillTips(api,"",i)
fillTips(api,"")
end
end
end
@@ -226,8 +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
@@ -453,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

View File

@@ -172,7 +172,10 @@ function CommandBarShow(params)
local function onKeyDown(event)
local keycode = event:GetKeyCode()
if event:GetModifiers() ~= wx.wxMOD_NONE then
if keycode == wx.WXK_RETURN then
onExit(linenow)
return
elseif event:GetModifiers() ~= wx.wxMOD_NONE then
event:Skip()
return
elseif keycode == wx.WXK_UP then

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)
@@ -138,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.
@@ -201,9 +206,7 @@ end
function ActivateFile(filename)
local name, suffix, value = filename:match('(.+):([lLpP]?)(%d+)$')
if name and not wx.wxFileExists(filename) and not wx.wxIsAbsolutePath(filename) then
filename = name
end
if name and not wx.wxFileExists(filename) then filename = name end
-- check if non-existing file can be loaded from the project folder;
-- this is to handle: "project file" used on the command line
@@ -276,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)
@@ -336,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
@@ -502,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
@@ -736,21 +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 findUnusedEditor() or NewFile(doc.filename))
local opendoc = openDocuments[editor:GetId()]
local opendoc = ide:GetDocument(editor)
if doc.content then
editor:SetText(doc.content)
if doc.filepath and opendoc.modTime and doc.modified < opendoc.modTime:GetTicks() then
DisplayOutputLn(TR("File '%s' has more recent timestamp than restored '%s'; please review before saving.")
:format(doc.filepath, doc.tabname))
:format(doc.filepath, opendoc:GetTabText()))
end
SetDocumentModified(editor:GetId(), true)
opendoc:SetModified(true)
end
editor:GotoPosDelayed(doc.cursorpos or 0)
end
@@ -762,21 +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()

View File

@@ -201,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)
@@ -210,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)
@@ -218,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
@@ -239,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()
@@ -304,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)
@@ -393,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
@@ -556,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
@@ -622,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)
@@ -634,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()
@@ -672,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,
@@ -682,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
@@ -708,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
@@ -740,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
@@ -778,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
@@ -870,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
@@ -885,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
@@ -1253,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
@@ -1270,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

View File

@@ -208,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
@@ -660,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
@@ -786,26 +774,6 @@ function CreateEditor(bare)
editor:AutoCompStops([[ \n\t=-+():.,;*/!"'$%&~'#°^@?´`<>][|}{]])
end
function editor:GotoPosEnforcePolicy(pos)
self:GotoPos(pos)
self:EnsureVisibleEnforcePolicy(self:LineFromPosition(pos))
end
local function getMarginWidth(editor)
local width = 0
for m = 0, 7 do width = width + editor:GetMarginWidth(m) end
return width
end
function editor:ShowPosEnforcePolicy(pos)
local line = self:LineFromPosition(pos)
self:EnsureVisibleEnforcePolicy(line)
if edcfg.usewrap then return end -- skip the rest if line wrapping is on
local xwidth = self:GetClientSize():GetWidth() - getMarginWidth(editor)
local xoffset = self:GetTextExtent(self:GetLine(line):sub(1, pos-self:PositionFromLine(line)+1))
self:SetXOffset(xoffset > xwidth and xoffset-xwidth or 0)
end
function editor:GetTokenList() return self.tokenlist end
function editor:ResetTokenList() self.tokenlist = {}; return self.tokenlist end
@@ -1066,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
@@ -1104,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
@@ -1119,8 +1091,6 @@ function CreateEditor(bare)
end
alreadyProcessed = alreadyProcessed + 1
PackageEventHandle("onEditorUpdateUI", editor, event)
if ide.osname ~= 'Windows' then updateStatusText(editor) end
editor:GotoPosDelayed()

View File

@@ -12,14 +12,19 @@ ide.filetree = {
projdirlist = {},
projdirpartmap = {},
projtreeCtrl = nil,
imglist = ide:CreateImageList("PROJECT", "FOLDER", "FILE-KNOWN", "FILE-NORMAL"),
settings = {extensionignore = {}},
imglist = ide:CreateImageList("PROJECT",
"FOLDER", "FILE-KNOWN", "FILE-NORMAL", "FILE-NORMAL-START",
"FOLDER-MAPPED"),
settings = {extensionignore = {}, startfile = {}, mapped = {}},
}
local filetree = ide.filetree
local iscaseinsensitive = wx.wxFileName("A"):SameAs(wx.wxFileName("a"))
local pathsep = GetPathSeparator()
local q = EscapeMagic
local image = { DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2 }
local image = {
DIRECTORY = 0, FILEKNOWN = 1, FILEOTHER = 2, FILEOTHERSTART = 3,
DIRECTORYMAPPED = 4,
}
do
local settings = ide:AddPackage('core.filetree', {}):GetSettings()
@@ -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,9 +242,33 @@ 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)
@@ -288,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
@@ -324,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()
@@ -335,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
@@ -348,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))
@@ -395,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,
@@ -413,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") },
@@ -422,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") },
@@ -449,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))
@@ -464,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)
@@ -494,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
@@ -511,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)

View File

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

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,
@@ -417,7 +417,7 @@ local function createBottomNotebook(frame)
errorlog:Connect(ID_CLEAROUTPUT, wx.wxEVT_COMMAND_MENU_SELECTED,
function(event) ClearOutput(true) end)
local shellbox = wxstc.wxStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
local shellbox = ide:CreateStyledTextCtrl(bottomnotebook, wx.wxID_ANY,
wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxBORDER_NONE)
bottomnotebook:AddPage(errorlog, TR("Output"), true)

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

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

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

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

@@ -15,8 +15,8 @@ local findMenu = wx.wxMenu{
{ ID_FIND, TR("&Find")..KSC(ID_FIND), TR("Find text") },
{ ID_FINDNEXT, TR("Find &Next")..KSC(ID_FINDNEXT), TR("Find the next text occurrence") },
{ ID_FINDPREV, TR("Find &Previous")..KSC(ID_FINDPREV), TR("Find the earlier text occurence") },
{ ID_FINDSELECTNEXT, TR("Select and Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
{ ID_FINDSELECTPREV, TR("Select and Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
{ ID_FINDSELECTNEXT, TR("Select And Find Next")..KSC(ID_FINDSELECTNEXT), TR("Select the word under cursor and find its next occurrence") },
{ ID_FINDSELECTPREV, TR("Select And Find Previous")..KSC(ID_FINDSELECTPREV), TR("Select the word under cursor and find its previous occurrence") },
{ ID_REPLACE, TR("&Replace")..KSC(ID_REPLACE), TR("Find and replace text") },
{ },
{ ID_FINDINFILES, TR("Find &In Files")..KSC(ID_FINDINFILES), TR("Find text in files") },
@@ -170,6 +170,7 @@ local function navigateTo(default, selected)
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()
@@ -195,7 +196,7 @@ local function navigateTo(default, selected)
end
end
-- set line position in the (current) editor if requested
elseif text and text:find(special.LINE) then
elseif text and text:find(special.LINE..'(%d+)%s*$') then
local toline = tonumber(text:match(special.LINE..'(%d+)'))
if toline and ed then
ed:GotoLine(toline-1)
@@ -204,16 +205,22 @@ local function navigateTo(default, selected)
end
elseif tabindex then -- switch to existing tab
SetEditorSelection(tabindex)
if preview then -- close preview if not selected
local pindex = nb:GetPageIndex(preview)
if pindex ~= tabindex then ClosePage(pindex) end
if pindex and pindex ~= tabindex then ClosePage(pindex) end
-- load a new file (into preview if set)
elseif sline or text then
-- 1. use "text" if Ctrl/Cmd-Enter is used
-- 2. otherwise use currently selected file
-- 3. otherwise use "text"
local file = (wx.wxGetKeyState(wx.WXK_CONTROL) and text) or sline or text
local fullPath = MergeFullPath(ide:GetProject(), file)
if not LoadFile(fullPath, preview or nil)
and not ProjectUpdateProjectDir(fullPath) then
if pindex then ClosePage(pindex) end
end
elseif sline then -- load a new file (into preview if set)
LoadFile(MergeFullPath(ide:GetProject(), sline), preview or nil, true)
end
else
-- close preview
if preview then ClosePage(nb:GetPageIndex(preview)) end
if pindex then ClosePage(pindex) end
-- restore original selection if canceled
if nb:GetSelection() ~= selection then nb:SetSelection(selection) end
end
@@ -299,7 +306,7 @@ local function navigateTo(default, selected)
end
end
end
elseif text and text:find(special.LINE) then
elseif text and text:find(special.LINE..'(%d+)%s*$') then
local toline = tonumber(text:match(special.LINE..'(%d+)'))
if toline and ed then markLine(ed, toline) end
elseif text and #text > 0 and projdir and #projdir > 0 then

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()
@@ -277,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,
@@ -292,7 +292,7 @@ ide:AddPackage('core.outline', {
local cache = caches[editor]
local fileitem = cache and cache.fileitem
local ctrl = ide.outline.outlineCtrl
local itemname = ide:GetDocument(editor):GetFileName()
local itemname = ide:GetDocument(editor):GetTabText()
-- fix file name if it changed in the editor
if fileitem and ctrl:GetItemText(fileitem) ~= itemname then

View File

@@ -157,6 +157,11 @@ 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.projtreeCtrl end
function ide:GetOutlineTree() return ide.outline.outlineCtrl end
@@ -164,6 +169,32 @@ 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)

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,8 +12,18 @@ 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
}}

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,8 +4,13 @@
-- 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
@@ -89,6 +94,9 @@ ide = {
commandbar = {
prefilter = 250, -- number of records after which to apply filtering
},
staticanalyzer = {
infervalue = false, -- off by default as it's a slower mode
},
toolbar = {
icons = {},
@@ -115,6 +123,7 @@ ide = {
strategy = 2,
width = 60,
maxlength = 450,
warning = true,
},
arg = {}, -- command line arguments
api = {}, -- additional APIs to load
@@ -553,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

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"
@@ -108,6 +117,25 @@ editor.assignscache = false
ok((CreateAutoCompList(editor, "foo:") or ""):match('byte'),
"Auto-complete offers methods for variable defined as '@param[type=string]'.")
local strategy = ide.config.acandtip.strategy
ide.config.acandtip.strategy = 1
editor:SetText('')
editor:AddText('local value\nprint(va')
IndicateAll(editor)
local status, res = pcall(CreateAutoCompList, editor, "va")
ok(status and (res or ""):match('value'),
"Auto-complete offers methods for strategy=1' (1/2).")
editor:SetText('')
editor:AddText('local value\nprint(va')
local status, res = pcall(CreateAutoCompList, editor, "va")
ok(status and (res or ""):match('value'),
"Auto-complete offers methods for strategy=1' (2/2).")
-- cleanup
ide.config.acandtip.strategy = strategy
ide:GetDocument(editor).isModified = false
ClosePage()

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)

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

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