Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41041733c4 | ||
|
|
16257035ca | ||
|
|
4fde42e919 | ||
|
|
d08ac51fee | ||
|
|
1116365a43 | ||
|
|
9c05c8e31a | ||
|
|
3ce020c0e3 | ||
|
|
27ea52e5bd | ||
|
|
cc598490fa | ||
|
|
b361a0b6a5 | ||
|
|
2b4c5eafc8 | ||
|
|
e910f945b5 | ||
|
|
7a838227c7 | ||
|
|
d86582ebc6 | ||
|
|
d8d1fc6f67 | ||
|
|
0ee46ba55f | ||
|
|
e179a63b8c | ||
|
|
0018964637 | ||
|
|
7010d51bc7 | ||
|
|
7b09399ede | ||
|
|
a36e746d45 | ||
|
|
f7ec693b03 | ||
|
|
056dd6dedf | ||
|
|
1c8b0d1101 | ||
|
|
bc5d2eed97 | ||
|
|
35692e3f00 | ||
|
|
bb06087881 | ||
|
|
9442292c0f | ||
|
|
b1eba7ff3c | ||
|
|
d69a3724ac | ||
|
|
353fa0dff5 | ||
|
|
af241fffe7 | ||
|
|
227db9a10f | ||
|
|
2cf79f22a8 | ||
|
|
798a31a64f | ||
|
|
59a90c7030 | ||
|
|
ee1a4a5752 | ||
|
|
01ef664895 | ||
|
|
2f339302d1 | ||
|
|
aaf7723014 | ||
|
|
89751b430d | ||
|
|
b9de69d4e9 | ||
|
|
b4c7d6deaa | ||
|
|
71667d2912 | ||
|
|
fa704f5e2c | ||
|
|
967a7fb8ad | ||
|
|
3e7fb7f8b8 | ||
|
|
3e0abc6953 | ||
|
|
216a1e5350 | ||
|
|
ea3c98c65f | ||
|
|
fb1c754532 | ||
|
|
3585de0f21 | ||
|
|
3bd4fc0305 | ||
|
|
0e355074cd | ||
|
|
7e6249ef3f | ||
|
|
af2a000af1 | ||
|
|
1a9efa6e5b | ||
|
|
dd97978d56 |
9
.mailmap
9
.mailmap
@@ -1,9 +0,0 @@
|
||||
#
|
||||
# This list is used by git-shortlog to fix a few botched name translations
|
||||
# in the git archive, either because the author's full name was messed up
|
||||
# and/or not always written the same way, making contributions from the
|
||||
# same person appearing not to be so.
|
||||
#
|
||||
|
||||
Christoph Kubisch <pixeljetstream@luxinia.de> <crazybutcher@d4a214e2-3791-4833-b182-d171351aa34e>
|
||||
Eike Decker <zet23t@googlemail.com> <zet23t@d4a214e2-3791-4833-b182-d171351aa34e>
|
||||
63
CHANGELOG.md
63
CHANGELOG.md
@@ -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
|
||||
|
||||
1228
api/lua/corona.lua
1228
api/lua/corona.lua
File diff suppressed because it is too large
Load Diff
@@ -1082,6 +1082,8 @@ GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C,
|
||||
GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D,
|
||||
GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E,
|
||||
GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F,
|
||||
GL_COPY_READ_BUFFER_BINDING = 0x8F36,
|
||||
GL_COPY_WRITE_BUFFER_BINDING = 0x8F37,
|
||||
GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9,
|
||||
GL_VERTEX_ATTRIB_ARRAY_LONG = 0x874E,
|
||||
GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221,
|
||||
@@ -1811,7 +1813,7 @@ GL_ALREADY_SIGNALED = 0x911A,
|
||||
GL_TIMEOUT_EXPIRED = 0x911B,
|
||||
GL_CONDITION_SATISFIED = 0x911C,
|
||||
GL_WAIT_FAILED = 0x911D,
|
||||
GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
|
||||
//GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF,
|
||||
GL_PATCHES = 0xE,
|
||||
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0,
|
||||
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1,
|
||||
@@ -2119,6 +2121,8 @@ GL_HSL_HUE_KHR = 0x92AD,
|
||||
GL_HSL_SATURATION_KHR = 0x92AE,
|
||||
GL_HSL_COLOR_KHR = 0x92AF,
|
||||
GL_HSL_LUMINOSITY_KHR = 0x92B0,
|
||||
GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB,
|
||||
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC,
|
||||
GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002,
|
||||
//GL_STACK_OVERFLOW = 0x0503,
|
||||
//GL_STACK_UNDERFLOW = 0x0504,
|
||||
@@ -2276,6 +2280,10 @@ GL_MINUS_CLAMPED_NV = 0x92B3,
|
||||
GL_INVERT_OVG_NV = 0x92B4,
|
||||
GL_COMPUTE_PROGRAM_NV = 0x90FB,
|
||||
GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC,
|
||||
GL_CONSERVATIVE_RASTERIZATION_NV = 0x9346,
|
||||
GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347,
|
||||
GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348,
|
||||
GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349,
|
||||
GL_DEPTH_STENCIL_TO_RGBA_NV = 0x886E,
|
||||
GL_DEPTH_STENCIL_TO_BGRA_NV = 0x886F,
|
||||
GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0,
|
||||
@@ -2317,6 +2325,7 @@ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58,
|
||||
GL_ALL_COMPLETED_NV = 0x84F2,
|
||||
GL_FENCE_STATUS_NV = 0x84F3,
|
||||
GL_FENCE_CONDITION_NV = 0x84F4,
|
||||
GL_FILL_RECTANGLE_NV = 0x933C,
|
||||
GL_FLOAT_R_NV = 0x8880,
|
||||
GL_FLOAT_RG_NV = 0x8881,
|
||||
GL_FLOAT_RGB_NV = 0x8882,
|
||||
@@ -2335,6 +2344,8 @@ GL_FLOAT_RGBA_MODE_NV = 0x888E,
|
||||
GL_FOG_DISTANCE_MODE_NV = 0x855A,
|
||||
GL_EYE_RADIAL_NV = 0x855B,
|
||||
GL_EYE_PLANE_ABSOLUTE_NV = 0x855C,
|
||||
GL_FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD,
|
||||
GL_FRAGMENT_COVERAGE_COLOR_NV = 0x92DE,
|
||||
GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868,
|
||||
GL_FRAGMENT_PROGRAM_NV = 0x8870,
|
||||
GL_FRAGMENT_PROGRAM_BINDING_NV = 0x8873,
|
||||
@@ -2344,6 +2355,20 @@ GL_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5,
|
||||
GL_MAX_PROGRAM_IF_DEPTH_NV = 0x88F6,
|
||||
GL_MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7,
|
||||
GL_MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8,
|
||||
//GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
//GL_RASTER_MULTISAMPLE_EXT = 0x9327,
|
||||
//GL_RASTER_SAMPLES_EXT = 0x9328,
|
||||
//GL_MAX_RASTER_SAMPLES_EXT = 0x9329,
|
||||
//GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A,
|
||||
//GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B,
|
||||
//GL_EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C,
|
||||
//GL_DEPTH_SAMPLES_NV = 0x932D,
|
||||
//GL_STENCIL_SAMPLES_NV = 0x932E,
|
||||
//GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F,
|
||||
//GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330,
|
||||
//GL_COVERAGE_MODULATION_TABLE_NV = 0x9331,
|
||||
//GL_COVERAGE_MODULATION_NV = 0x9332,
|
||||
//GL_COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333,
|
||||
GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB,
|
||||
GL_RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10,
|
||||
GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11,
|
||||
@@ -2387,9 +2412,13 @@ GL_FLOAT16_NV = 0x8FF8,
|
||||
GL_FLOAT16_VEC2_NV = 0x8FF9,
|
||||
GL_FLOAT16_VEC3_NV = 0x8FFA,
|
||||
GL_FLOAT16_VEC4_NV = 0x8FFB,
|
||||
GL_MULTISAMPLES_NV = 0x9371,
|
||||
GL_SUPERSAMPLE_SCALE_X_NV = 0x9372,
|
||||
GL_SUPERSAMPLE_SCALE_Y_NV = 0x9373,
|
||||
GL_CONFORMANT_NV = 0x9374,
|
||||
GL_MAX_SHININESS_NV = 0x8504,
|
||||
GL_MAX_SPOT_EXPONENT_NV = 0x8505,
|
||||
GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
//GL_COLOR_SAMPLES_NV = 0x8E20,
|
||||
GL_MULTISAMPLE_FILTER_HINT_NV = 0x8534,
|
||||
GL_PIXEL_COUNTER_BITS_NV = 0x8864,
|
||||
GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865,
|
||||
@@ -2432,19 +2461,31 @@ GL_LARGE_CCW_ARC_TO_NV = 0x16,
|
||||
GL_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17,
|
||||
GL_LARGE_CW_ARC_TO_NV = 0x18,
|
||||
GL_RELATIVE_LARGE_CW_ARC_TO_NV = 0x19,
|
||||
GL_CONIC_CURVE_TO_NV = 0x1A,
|
||||
GL_RELATIVE_CONIC_CURVE_TO_NV = 0x1B,
|
||||
GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20,
|
||||
GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40,
|
||||
GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80,
|
||||
GL_ROUNDED_RECT_NV = 0xE8,
|
||||
GL_RELATIVE_ROUNDED_RECT_NV = 0xE9,
|
||||
GL_ROUNDED_RECT2_NV = 0xEA,
|
||||
GL_RELATIVE_ROUNDED_RECT2_NV = 0xEB,
|
||||
GL_ROUNDED_RECT4_NV = 0xEC,
|
||||
GL_RELATIVE_ROUNDED_RECT4_NV = 0xED,
|
||||
GL_ROUNDED_RECT8_NV = 0xEE,
|
||||
GL_RELATIVE_ROUNDED_RECT8_NV = 0xEF,
|
||||
GL_RESTART_PATH_NV = 0xF0,
|
||||
GL_DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2,
|
||||
GL_DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4,
|
||||
GL_RECT_NV = 0xF6,
|
||||
GL_RELATIVE_RECT_NV = 0xF7,
|
||||
GL_CIRCULAR_CCW_ARC_TO_NV = 0xF8,
|
||||
GL_CIRCULAR_CW_ARC_TO_NV = 0xFA,
|
||||
GL_CIRCULAR_TANGENT_ARC_TO_NV = 0xFC,
|
||||
GL_ARC_TO_NV = 0xFE,
|
||||
GL_RELATIVE_ARC_TO_NV = 0xFF,
|
||||
GL_GLYPH_HAS_KERNING_BIT_NV = 0x100,
|
||||
GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
//GL_PRIMARY_COLOR = 0x8577,
|
||||
GL_PATH_FORMAT_SVG_NV = 0x9070,
|
||||
GL_PATH_FORMAT_PS_NV = 0x9071,
|
||||
@@ -2467,6 +2508,7 @@ GL_PATH_FILL_MASK_NV = 0x9081,
|
||||
GL_PATH_FILL_COVER_MODE_NV = 0x9082,
|
||||
GL_PATH_STROKE_COVER_MODE_NV = 0x9083,
|
||||
GL_PATH_STROKE_MASK_NV = 0x9084,
|
||||
GL_PATH_STROKE_BOUND_NV = 0x9086,
|
||||
GL_COUNT_UP_NV = 0x9088,
|
||||
GL_COUNT_DOWN_NV = 0x9089,
|
||||
GL_PATH_OBJECT_BOUNDING_BOX_NV = 0x908A,
|
||||
@@ -2515,6 +2557,12 @@ GL_PATH_STENCIL_VALUE_MASK_NV = 0x90B9,
|
||||
GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD,
|
||||
GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE,
|
||||
GL_PATH_COVER_DEPTH_FUNC_NV = 0x90BF,
|
||||
GL_FONT_GLYPHS_AVAILABLE_NV = 0x9368,
|
||||
GL_FONT_TARGET_UNAVAILABLE_NV = 0x9369,
|
||||
GL_FONT_UNAVAILABLE_NV = 0x936A,
|
||||
GL_FONT_UNINTELLIGIBLE_NV = 0x936B,
|
||||
GL_STANDARD_FONT_FORMAT_NV = 0x936C,
|
||||
GL_FRAGMENT_INPUT_NV = 0x936D,
|
||||
GL_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000,
|
||||
GL_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000,
|
||||
GL_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000,
|
||||
@@ -2528,6 +2576,8 @@ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000,
|
||||
GL_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000,
|
||||
GL_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000,
|
||||
GL_FONT_HAS_KERNING_BIT_NV = 0x10000000,
|
||||
GL_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000,
|
||||
GL_SHARED_EDGE_NV = 0xC0,
|
||||
GL_WRITE_PIXEL_DATA_RANGE_NV = 0x8878,
|
||||
GL_READ_PIXEL_DATA_RANGE_NV = 0x8879,
|
||||
GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A,
|
||||
@@ -2551,7 +2601,7 @@ GL_VARIABLE_F_NV = 0x8528,
|
||||
GL_VARIABLE_G_NV = 0x8529,
|
||||
GL_CONSTANT_COLOR0_NV = 0x852A,
|
||||
GL_CONSTANT_COLOR1_NV = 0x852B,
|
||||
GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
//GL_SECONDARY_COLOR_NV = 0x852D,
|
||||
GL_SPARE0_NV = 0x852E,
|
||||
GL_SPARE1_NV = 0x852F,
|
||||
GL_DISCARD_NV = 0x8530,
|
||||
@@ -2592,6 +2642,14 @@ GL_COMBINER5_NV = 0x8555,
|
||||
GL_COMBINER6_NV = 0x8556,
|
||||
GL_COMBINER7_NV = 0x8557,
|
||||
GL_PER_STAGE_CONSTANTS_NV = 0x8535,
|
||||
GL_SAMPLE_LOCATION_NV = 0x8E50,
|
||||
GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D,
|
||||
GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E,
|
||||
GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F,
|
||||
GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340,
|
||||
GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341,
|
||||
GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342,
|
||||
GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343,
|
||||
GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D,
|
||||
GL_GPU_ADDRESS_NV = 0x8F34,
|
||||
GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35,
|
||||
@@ -3517,6 +3575,7 @@ extern void glBlendEquationi(GLuint buf, GLenum mode);
|
||||
extern void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
extern void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
|
||||
extern void glMinSampleShading(GLclampf value);
|
||||
extern GLenum glGetGraphicsResetStatus(void);
|
||||
extern void glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
|
||||
extern void glBlendEquationIndexedAMD(GLuint buf, GLenum mode);
|
||||
extern void glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
|
||||
@@ -3620,6 +3679,10 @@ extern void glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr s
|
||||
extern void glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
|
||||
extern void glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint* param);
|
||||
extern void glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params);
|
||||
extern void glGetQueryBufferObjecti64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectui64v(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetQueryBufferObjectuiv(GLuint id,GLuint buffer,GLenum pname,GLintptr offset);
|
||||
extern void glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
|
||||
extern void glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat* params);
|
||||
extern void glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint* params);
|
||||
@@ -3792,7 +3855,6 @@ extern GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInt
|
||||
extern void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
|
||||
extern void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
|
||||
extern void glProvokingVertex(GLenum mode);
|
||||
extern GLenum glGetGraphicsResetStatusARB(void);
|
||||
extern void glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table);
|
||||
extern void glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void* img);
|
||||
extern void glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image);
|
||||
@@ -4230,6 +4292,7 @@ extern void glUniformHandleui64NV(GLint location, GLuint64 value);
|
||||
extern void glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64* value);
|
||||
extern void glBlendBarrierNV(void);
|
||||
extern void glBlendParameteriNV(GLenum pname, GLint value);
|
||||
extern void glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits);
|
||||
extern void glClearDepthdNV(GLdouble depth);
|
||||
extern void glDepthBoundsdNV(GLdouble zmin, GLdouble zmax);
|
||||
extern void glDepthRangedNV(GLdouble zNear, GLdouble zFar);
|
||||
@@ -4252,6 +4315,7 @@ extern void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params);
|
||||
extern GLboolean glIsFenceNV(GLuint fence);
|
||||
extern void glSetFenceNV(GLuint fence, GLenum condition);
|
||||
extern GLboolean glTestFenceNV(GLuint fence);
|
||||
extern void glFragmentCoverageColorNV(GLuint color);
|
||||
extern void glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble *params);
|
||||
extern void glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte* name, GLfloat *params);
|
||||
extern void glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
|
||||
@@ -4352,6 +4416,7 @@ extern void glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalf* v);
|
||||
extern void glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalf* v);
|
||||
extern void glVertexWeighthNV(GLhalf weight);
|
||||
extern void glVertexWeighthvNV(const GLhalf* weight);
|
||||
extern void glGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params);
|
||||
extern void glBeginOcclusionQueryNV(GLuint id);
|
||||
extern void glDeleteOcclusionQueriesNV(GLsizei n, const GLuint* ids);
|
||||
extern void glEndOcclusionQueryNV(void);
|
||||
@@ -4363,52 +4428,67 @@ extern void glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint
|
||||
extern void glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
|
||||
extern void glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
|
||||
extern void glCopyPathNV(GLuint resultPath, GLuint srcPath);
|
||||
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverFillPathNV(GLuint path, GLenum coverMode);
|
||||
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverStrokePathNV(GLuint name, GLenum coverMode);
|
||||
extern void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glCoverStrokePathNV(GLuint path, GLenum coverMode);
|
||||
extern void glDeletePathsNV(GLuint path, GLsizei range);
|
||||
extern GLuint glGenPathsNV(GLsizei range);
|
||||
extern void glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathColorGenivNV(GLenum color, GLenum pname, GLint* value);
|
||||
extern void glGetPathCommandsNV(GLuint name, GLubyte* commands);
|
||||
extern void glGetPathCoordsNV(GLuint name, GLfloat* coords);
|
||||
extern void glGetPathDashArrayNV(GLuint name, GLfloat* dashArray);
|
||||
extern void glGetPathCommandsNV(GLuint path, GLubyte* commands);
|
||||
extern void glGetPathCoordsNV(GLuint path, GLfloat* coords);
|
||||
extern void glGetPathDashArrayNV(GLuint path, GLfloat* dashArray);
|
||||
extern GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments);
|
||||
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
|
||||
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
|
||||
extern void glGetPathParameterfvNV(GLuint name, GLenum param, GLfloat* value);
|
||||
extern void glGetPathParameterivNV(GLuint name, GLenum param, GLint* value);
|
||||
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
|
||||
extern void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
|
||||
extern void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
|
||||
extern void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value);
|
||||
extern void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
|
||||
extern void glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat* value);
|
||||
extern void glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint* value);
|
||||
extern void glGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params);
|
||||
extern void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
|
||||
extern GLboolean glIsPathNV(GLuint path);
|
||||
extern GLboolean glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y);
|
||||
extern GLboolean glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y);
|
||||
extern void glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m);
|
||||
extern void glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs);
|
||||
extern void glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
|
||||
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords);
|
||||
extern void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
|
||||
extern void glPathCoverDepthFuncNV(GLenum zfunc);
|
||||
extern void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray);
|
||||
extern void glPathFogGenNV(GLenum genMode);
|
||||
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]);
|
||||
extern void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern GLenum glPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
|
||||
extern void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value);
|
||||
extern void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value);
|
||||
extern void glPathParameteriNV(GLuint path, GLenum pname, GLint value);
|
||||
extern void glPathParameterivNV(GLuint path, GLenum pname, const GLint* value);
|
||||
extern void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units);
|
||||
extern void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask);
|
||||
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString);
|
||||
extern void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString);
|
||||
extern void glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
|
||||
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords);
|
||||
extern void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
|
||||
extern void glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs);
|
||||
extern GLboolean glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
|
||||
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs);
|
||||
extern void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask);
|
||||
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask);
|
||||
extern void glStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
|
||||
extern void glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
|
||||
extern void glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode);
|
||||
extern void glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues);
|
||||
extern void glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]);
|
||||
extern void glFlushPixelDataRangeNV(GLenum target);
|
||||
@@ -4435,6 +4515,8 @@ extern void glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname,
|
||||
extern void glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint* params);
|
||||
extern void glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat* params);
|
||||
extern void glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat* params);
|
||||
extern void glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat* v);
|
||||
extern void glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
|
||||
extern void glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT* params);
|
||||
extern void glGetIntegerui64vNV(GLenum value, GLuint64EXT* result);
|
||||
extern void glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT* params);
|
||||
@@ -4857,7 +4939,10 @@ extern GLboolean __GLEW_EXT_pixel_transform;
|
||||
extern GLboolean __GLEW_EXT_pixel_transform_color_table;
|
||||
extern GLboolean __GLEW_EXT_point_parameters;
|
||||
extern GLboolean __GLEW_EXT_polygon_offset;
|
||||
extern GLboolean __GLEW_EXT_polygon_offset_clamp;
|
||||
extern GLboolean __GLEW_EXT_post_depth_coverage;
|
||||
extern GLboolean __GLEW_EXT_provoking_vertex;
|
||||
extern GLboolean __GLEW_EXT_raster_multisample;
|
||||
extern GLboolean __GLEW_EXT_rescale_normal;
|
||||
extern GLboolean __GLEW_EXT_scene_marker;
|
||||
extern GLboolean __GLEW_EXT_secondary_color;
|
||||
@@ -4868,6 +4953,7 @@ extern GLboolean __GLEW_EXT_shader_image_load_store;
|
||||
extern GLboolean __GLEW_EXT_shader_integer_mix;
|
||||
extern GLboolean __GLEW_EXT_shadow_funcs;
|
||||
extern GLboolean __GLEW_EXT_shared_texture_palette;
|
||||
extern GLboolean __GLEW_EXT_sparse_texture2;
|
||||
extern GLboolean __GLEW_EXT_stencil_clear_tag;
|
||||
extern GLboolean __GLEW_EXT_stencil_two_side;
|
||||
extern GLboolean __GLEW_EXT_stencil_wrap;
|
||||
@@ -4887,6 +4973,7 @@ extern GLboolean __GLEW_EXT_texture_env_add;
|
||||
extern GLboolean __GLEW_EXT_texture_env_combine;
|
||||
extern GLboolean __GLEW_EXT_texture_env_dot3;
|
||||
extern GLboolean __GLEW_EXT_texture_filter_anisotropic;
|
||||
extern GLboolean __GLEW_EXT_texture_filter_minmax;
|
||||
extern GLboolean __GLEW_EXT_texture_integer;
|
||||
extern GLboolean __GLEW_EXT_texture_lod_bias;
|
||||
extern GLboolean __GLEW_EXT_texture_mirror_clamp;
|
||||
@@ -4949,6 +5036,7 @@ extern GLboolean __GLEW_NV_blend_equation_advanced_coherent;
|
||||
extern GLboolean __GLEW_NV_blend_square;
|
||||
extern GLboolean __GLEW_NV_compute_program5;
|
||||
extern GLboolean __GLEW_NV_conditional_render;
|
||||
extern GLboolean __GLEW_NV_conservative_raster;
|
||||
extern GLboolean __GLEW_NV_copy_depth_to_color;
|
||||
extern GLboolean __GLEW_NV_copy_image;
|
||||
extern GLboolean __GLEW_NV_deep_texture3D;
|
||||
@@ -4959,21 +5047,27 @@ extern GLboolean __GLEW_NV_draw_texture;
|
||||
extern GLboolean __GLEW_NV_evaluators;
|
||||
extern GLboolean __GLEW_NV_explicit_multisample;
|
||||
extern GLboolean __GLEW_NV_fence;
|
||||
extern GLboolean __GLEW_NV_fill_rectangle;
|
||||
extern GLboolean __GLEW_NV_float_buffer;
|
||||
extern GLboolean __GLEW_NV_fog_distance;
|
||||
extern GLboolean __GLEW_NV_fragment_coverage_to_color;
|
||||
extern GLboolean __GLEW_NV_fragment_program;
|
||||
extern GLboolean __GLEW_NV_fragment_program2;
|
||||
extern GLboolean __GLEW_NV_fragment_program4;
|
||||
extern GLboolean __GLEW_NV_fragment_program_option;
|
||||
extern GLboolean __GLEW_NV_fragment_shader_interlock;
|
||||
extern GLboolean __GLEW_NV_framebuffer_mixed_samples;
|
||||
extern GLboolean __GLEW_NV_framebuffer_multisample_coverage;
|
||||
extern GLboolean __GLEW_NV_geometry_program4;
|
||||
extern GLboolean __GLEW_NV_geometry_shader4;
|
||||
extern GLboolean __GLEW_NV_geometry_shader_passthrough;
|
||||
extern GLboolean __GLEW_NV_gpu_program4;
|
||||
extern GLboolean __GLEW_NV_gpu_program5;
|
||||
extern GLboolean __GLEW_NV_gpu_program5_mem_extended;
|
||||
extern GLboolean __GLEW_NV_gpu_program_fp64;
|
||||
extern GLboolean __GLEW_NV_gpu_shader5;
|
||||
extern GLboolean __GLEW_NV_half_float;
|
||||
extern GLboolean __GLEW_NV_internalformat_sample_query;
|
||||
extern GLboolean __GLEW_NV_light_max_exponent;
|
||||
extern GLboolean __GLEW_NV_multisample_coverage;
|
||||
extern GLboolean __GLEW_NV_multisample_filter_hint;
|
||||
@@ -4982,14 +5076,18 @@ extern GLboolean __GLEW_NV_packed_depth_stencil;
|
||||
extern GLboolean __GLEW_NV_parameter_buffer_object;
|
||||
extern GLboolean __GLEW_NV_parameter_buffer_object2;
|
||||
extern GLboolean __GLEW_NV_path_rendering;
|
||||
extern GLboolean __GLEW_NV_path_rendering_shared_edge;
|
||||
extern GLboolean __GLEW_NV_pixel_data_range;
|
||||
extern GLboolean __GLEW_NV_point_sprite;
|
||||
extern GLboolean __GLEW_NV_present_video;
|
||||
extern GLboolean __GLEW_NV_primitive_restart;
|
||||
extern GLboolean __GLEW_NV_register_combiners;
|
||||
extern GLboolean __GLEW_NV_register_combiners2;
|
||||
extern GLboolean __GLEW_NV_sample_locations;
|
||||
extern GLboolean __GLEW_NV_sample_mask_override_coverage;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_counters;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_float;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_fp16_vector;
|
||||
extern GLboolean __GLEW_NV_shader_atomic_int64;
|
||||
extern GLboolean __GLEW_NV_shader_buffer_load;
|
||||
extern GLboolean __GLEW_NV_shader_storage_buffer_object;
|
||||
@@ -5022,6 +5120,7 @@ extern GLboolean __GLEW_NV_vertex_program2_option;
|
||||
extern GLboolean __GLEW_NV_vertex_program3;
|
||||
extern GLboolean __GLEW_NV_vertex_program4;
|
||||
extern GLboolean __GLEW_NV_video_capture;
|
||||
extern GLboolean __GLEW_NV_viewport_array2;
|
||||
extern GLboolean __GLEW_OES_byte_coordinates;
|
||||
extern GLboolean __GLEW_OES_compressed_paletted_texture;
|
||||
extern GLboolean __GLEW_OES_read_format;
|
||||
@@ -5412,7 +5511,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_pixel_transform_color_table"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_point_parameters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_polygon_offset"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_polygon_offset_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_post_depth_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_provoking_vertex"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_raster_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_rescale_normal"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_scene_marker"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_secondary_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5423,6 +5525,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_shader_integer_mix"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_shadow_funcs"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_shared_texture_palette"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_sparse_texture2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_clear_tag"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_two_side"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_stencil_wrap"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5442,6 +5545,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_EXT_texture_env_combine"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_env_dot3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_filter_anisotropic"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_filter_minmax"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_integer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_lod_bias"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_EXT_texture_mirror_clamp"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5504,6 +5608,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_blend_square"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_compute_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_conditional_render"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_conservative_raster"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_copy_depth_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_copy_image"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_deep_texture3D"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5514,21 +5619,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_evaluators"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_explicit_multisample"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fence"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fill_rectangle"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_float_buffer"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fog_distance"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_coverage_to_color"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_program_option"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_fragment_shader_interlock"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_framebuffer_mixed_samples"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_framebuffer_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_shader4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_geometry_shader_passthrough"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program5_mem_extended"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_program_fp64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_gpu_shader5"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_half_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_internalformat_sample_query"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_light_max_exponent"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_multisample_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_multisample_filter_hint"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5537,14 +5648,18 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_parameter_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_parameter_buffer_object2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_path_rendering"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_path_rendering_shared_edge"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_pixel_data_range"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_point_sprite"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_present_video"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_primitive_restart"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_register_combiners"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_register_combiners2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_sample_locations"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_sample_mask_override_coverage"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_counters"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_float"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_fp16_vector"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_atomic_int64"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_buffer_load"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_shader_storage_buffer_object"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -5577,6 +5692,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["__GLEW_NV_vertex_program3"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_vertex_program4"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_video_capture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_NV_viewport_array2"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_byte_coordinates"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_compressed_paletted_texture"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
["__GLEW_OES_read_format"] = { type ='value', description = "extern GLboolean", valuetype = nil, },
|
||||
@@ -6700,6 +6816,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"] = { type ='value', },
|
||||
["GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"] = { type ='value', },
|
||||
["GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"] = { type ='value', },
|
||||
["GL_COPY_READ_BUFFER_BINDING"] = { type ='value', },
|
||||
["GL_COPY_WRITE_BUFFER_BINDING"] = { type ='value', },
|
||||
["GL_NUM_SHADING_LANGUAGE_VERSIONS"] = { type ='value', },
|
||||
["GL_VERTEX_ATTRIB_ARRAY_LONG"] = { type ='value', },
|
||||
["GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"] = { type ='value', },
|
||||
@@ -7416,7 +7534,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_TIMEOUT_EXPIRED"] = { type ='value', },
|
||||
["GL_CONDITION_SATISFIED"] = { type ='value', },
|
||||
["GL_WAIT_FAILED"] = { type ='value', },
|
||||
["GL_TIMEOUT_IGNORED"] = { type ='value', },
|
||||
["GL_PATCHES"] = { type ='value', },
|
||||
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"] = { type ='value', },
|
||||
["GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"] = { type ='value', },
|
||||
@@ -7708,6 +7825,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_HSL_SATURATION_KHR"] = { type ='value', },
|
||||
["GL_HSL_COLOR_KHR"] = { type ='value', },
|
||||
["GL_HSL_LUMINOSITY_KHR"] = { type ='value', },
|
||||
["GL_CONTEXT_RELEASE_BEHAVIOR"] = { type ='value', },
|
||||
["GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"] = { type ='value', },
|
||||
["GL_CONTEXT_FLAG_DEBUG_BIT"] = { type ='value', },
|
||||
["GL_DEBUG_OUTPUT_SYNCHRONOUS"] = { type ='value', },
|
||||
["GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"] = { type ='value', },
|
||||
@@ -7835,6 +7954,10 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_INVERT_OVG_NV"] = { type ='value', },
|
||||
["GL_COMPUTE_PROGRAM_NV"] = { type ='value', },
|
||||
["GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV"] = { type ='value', },
|
||||
["GL_CONSERVATIVE_RASTERIZATION_NV"] = { type ='value', },
|
||||
["GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV"] = { type ='value', },
|
||||
["GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV"] = { type ='value', },
|
||||
["GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV"] = { type ='value', },
|
||||
["GL_DEPTH_STENCIL_TO_RGBA_NV"] = { type ='value', },
|
||||
["GL_DEPTH_STENCIL_TO_BGRA_NV"] = { type ='value', },
|
||||
["GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV"] = { type ='value', },
|
||||
@@ -7876,6 +7999,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_ALL_COMPLETED_NV"] = { type ='value', },
|
||||
["GL_FENCE_STATUS_NV"] = { type ='value', },
|
||||
["GL_FENCE_CONDITION_NV"] = { type ='value', },
|
||||
["GL_FILL_RECTANGLE_NV"] = { type ='value', },
|
||||
["GL_FLOAT_R_NV"] = { type ='value', },
|
||||
["GL_FLOAT_RG_NV"] = { type ='value', },
|
||||
["GL_FLOAT_RGB_NV"] = { type ='value', },
|
||||
@@ -7894,6 +8018,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FOG_DISTANCE_MODE_NV"] = { type ='value', },
|
||||
["GL_EYE_RADIAL_NV"] = { type ='value', },
|
||||
["GL_EYE_PLANE_ABSOLUTE_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_COVERAGE_TO_COLOR_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_COVERAGE_COLOR_NV"] = { type ='value', },
|
||||
["GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_PROGRAM_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_PROGRAM_BINDING_NV"] = { type ='value', },
|
||||
@@ -7946,9 +8072,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FLOAT16_VEC2_NV"] = { type ='value', },
|
||||
["GL_FLOAT16_VEC3_NV"] = { type ='value', },
|
||||
["GL_FLOAT16_VEC4_NV"] = { type ='value', },
|
||||
["GL_MULTISAMPLES_NV"] = { type ='value', },
|
||||
["GL_SUPERSAMPLE_SCALE_X_NV"] = { type ='value', },
|
||||
["GL_SUPERSAMPLE_SCALE_Y_NV"] = { type ='value', },
|
||||
["GL_CONFORMANT_NV"] = { type ='value', },
|
||||
["GL_MAX_SHININESS_NV"] = { type ='value', },
|
||||
["GL_MAX_SPOT_EXPONENT_NV"] = { type ='value', },
|
||||
["GL_COLOR_SAMPLES_NV"] = { type ='value', },
|
||||
["GL_MULTISAMPLE_FILTER_HINT_NV"] = { type ='value', },
|
||||
["GL_PIXEL_COUNTER_BITS_NV"] = { type ='value', },
|
||||
["GL_CURRENT_OCCLUSION_QUERY_ID_NV"] = { type ='value', },
|
||||
@@ -7991,19 +8120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_RELATIVE_LARGE_CCW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_LARGE_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_LARGE_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CONIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_CONIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_X_BIT_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV"] = { type ='value', },
|
||||
["GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT2_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT2_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT4_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT4_NV"] = { type ='value', },
|
||||
["GL_ROUNDED_RECT8_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ROUNDED_RECT8_NV"] = { type ='value', },
|
||||
["GL_RESTART_PATH_NV"] = { type ='value', },
|
||||
["GL_DUP_FIRST_CUBIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_DUP_LAST_CUBIC_CURVE_TO_NV"] = { type ='value', },
|
||||
["GL_RECT_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_RECT_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_CCW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_CW_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_CIRCULAR_TANGENT_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_RELATIVE_ARC_TO_NV"] = { type ='value', },
|
||||
["GL_GLYPH_HAS_KERNING_BIT_NV"] = { type ='value', },
|
||||
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
|
||||
["GL_PATH_FORMAT_SVG_NV"] = { type ='value', },
|
||||
["GL_PATH_FORMAT_PS_NV"] = { type ='value', },
|
||||
["GL_STANDARD_FONT_NAME_NV"] = { type ='value', },
|
||||
@@ -8025,6 +8166,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_PATH_FILL_COVER_MODE_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_COVER_MODE_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_MASK_NV"] = { type ='value', },
|
||||
["GL_PATH_STROKE_BOUND_NV"] = { type ='value', },
|
||||
["GL_COUNT_UP_NV"] = { type ='value', },
|
||||
["GL_COUNT_DOWN_NV"] = { type ='value', },
|
||||
["GL_PATH_OBJECT_BOUNDING_BOX_NV"] = { type ='value', },
|
||||
@@ -8073,6 +8215,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV"] = { type ='value', },
|
||||
["GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV"] = { type ='value', },
|
||||
["GL_PATH_COVER_DEPTH_FUNC_NV"] = { type ='value', },
|
||||
["GL_FONT_GLYPHS_AVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_TARGET_UNAVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_UNAVAILABLE_NV"] = { type ='value', },
|
||||
["GL_FONT_UNINTELLIGIBLE_NV"] = { type ='value', },
|
||||
["GL_STANDARD_FONT_FORMAT_NV"] = { type ='value', },
|
||||
["GL_FRAGMENT_INPUT_NV"] = { type ='value', },
|
||||
["GL_FONT_X_MIN_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_Y_MIN_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_X_MAX_BOUNDS_BIT_NV"] = { type ='value', },
|
||||
@@ -8086,6 +8234,8 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_FONT_UNDERLINE_POSITION_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_UNDERLINE_THICKNESS_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_HAS_KERNING_BIT_NV"] = { type ='value', },
|
||||
["GL_FONT_NUM_GLYPH_INDICES_BIT_NV"] = { type ='value', },
|
||||
["GL_SHARED_EDGE_NV"] = { type ='value', },
|
||||
["GL_WRITE_PIXEL_DATA_RANGE_NV"] = { type ='value', },
|
||||
["GL_READ_PIXEL_DATA_RANGE_NV"] = { type ='value', },
|
||||
["GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV"] = { type ='value', },
|
||||
@@ -8109,7 +8259,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_VARIABLE_G_NV"] = { type ='value', },
|
||||
["GL_CONSTANT_COLOR0_NV"] = { type ='value', },
|
||||
["GL_CONSTANT_COLOR1_NV"] = { type ='value', },
|
||||
["GL_SECONDARY_COLOR_NV"] = { type ='value', },
|
||||
["GL_SPARE0_NV"] = { type ='value', },
|
||||
["GL_SPARE1_NV"] = { type ='value', },
|
||||
["GL_DISCARD_NV"] = { type ='value', },
|
||||
@@ -8150,6 +8299,14 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
["GL_COMBINER6_NV"] = { type ='value', },
|
||||
["GL_COMBINER7_NV"] = { type ='value', },
|
||||
["GL_PER_STAGE_CONSTANTS_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV"] = { type ='value', },
|
||||
["GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV"] = { type ='value', },
|
||||
["GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV"] = { type ='value', },
|
||||
["GL_PROGRAMMABLE_SAMPLE_LOCATION_NV"] = { type ='value', },
|
||||
["GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV"] = { type ='value', },
|
||||
["GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV"] = { type ='value', },
|
||||
["GL_BUFFER_GPU_ADDRESS_NV"] = { type ='value', },
|
||||
["GL_GPU_ADDRESS_NV"] = { type ='value', },
|
||||
["GL_MAX_SHADER_BUFFER_ADDRESS_NV"] = { type ='value', },
|
||||
@@ -11518,6 +11675,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLclampf value)", },
|
||||
["glGetGraphicsResetStatus"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(void)", },
|
||||
["glDebugMessageEnableAMD"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -12033,6 +12195,26 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint renderbuffer, GLenum pname, GLint* params)", },
|
||||
["glGetQueryBufferObjecti64v"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectiv"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectui64v"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetQueryBufferObjectuiv"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint id,GLuint buffer,GLenum pname,GLintptr offset)", },
|
||||
["glGetTextureImage"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -12893,11 +13075,6 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum mode)", },
|
||||
["glGetGraphicsResetStatusARB"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(void)", },
|
||||
["glGetnColorTableARB"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15083,6 +15260,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum pname, GLint value)", },
|
||||
["glSubpixelPrecisionBiasNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint xbits, GLuint ybits)", },
|
||||
["glClearDepthdNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15193,6 +15375,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint fence)", },
|
||||
["glFragmentCoverageColorNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint color)", },
|
||||
["glGetProgramNamedParameterdvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15693,6 +15880,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(const GLhalf* weight)", },
|
||||
["glGetInternalformatSampleivNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params)", },
|
||||
["glBeginOcclusionQueryNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15752,7 +15944,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glCoverFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15762,12 +15954,12 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glCoverStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum coverMode)", },
|
||||
args = "(GLuint path, GLenum coverMode)", },
|
||||
["glDeletePathsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15792,17 +15984,17 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLubyte* commands)", },
|
||||
args = "(GLuint path, GLubyte* commands)", },
|
||||
["glGetPathCoordsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLfloat* coords)", },
|
||||
args = "(GLuint path, GLfloat* coords)", },
|
||||
["glGetPathDashArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLfloat* dashArray)", },
|
||||
args = "(GLuint path, GLfloat* dashArray)", },
|
||||
["glGetPathLengthNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLfloat)",
|
||||
@@ -15812,27 +16004,27 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
|
||||
args = "(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)", },
|
||||
["glGetPathMetricsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
|
||||
args = "(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)", },
|
||||
["glGetPathParameterfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum param, GLfloat* value)", },
|
||||
args = "(GLuint path, GLenum pname, GLfloat* value)", },
|
||||
["glGetPathParameterivNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint name, GLenum param, GLint* value)", },
|
||||
args = "(GLuint path, GLenum pname, GLint* value)", },
|
||||
["glGetPathSpacingNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
|
||||
args = "(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)", },
|
||||
["glGetPathTexGenfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15843,6 +16035,11 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum texCoordSet, GLenum pname, GLint* value)", },
|
||||
["glGetProgramResourcefvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params)", },
|
||||
["glInterpolatePathsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15863,6 +16060,36 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLfloat x, GLfloat y)", },
|
||||
["glMatrixLoad3x2fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixLoad3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixLoadTranspose3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMult3x2fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMult3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glMatrixMultTranspose3x3fNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum matrixMode, const GLfloat* m)", },
|
||||
["glPathColorGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15877,7 +16104,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords)", },
|
||||
args = "(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)", },
|
||||
["glPathCoverDepthFuncNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15893,16 +16120,31 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum genMode)", },
|
||||
["glPathGlyphIndexArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathGlyphIndexRangeNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2])", },
|
||||
["glPathGlyphRangeNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathGlyphsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathMemoryGlyphIndexArrayNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "(GLenum)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)", },
|
||||
["glPathParameterfNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15937,7 +16179,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLenum format, GLsizei length, const void* pathString)", },
|
||||
args = "(GLuint path, GLenum format, GLsizei length, const void *pathString)", },
|
||||
["glPathSubCommandsNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15947,7 +16189,7 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords)", },
|
||||
args = "(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)", },
|
||||
["glPathTexGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15958,11 +16200,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "(GLboolean)",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)", },
|
||||
["glProgramPathFragmentInputGenNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs)", },
|
||||
["glStencilFillPathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -15972,12 +16219,32 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLint reference, GLuint mask)", },
|
||||
["glStencilThenCoverFillPathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilThenCoverFillPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)", },
|
||||
["glStencilThenCoverStrokePathInstancedNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)", },
|
||||
["glStencilThenCoverStrokePathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint path, GLint reference, GLuint mask, GLenum coverMode)", },
|
||||
["glTransformPathNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
@@ -16108,6 +16375,16 @@ extern GLboolean __GLEW_WIN_swap_hint;
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum stage, GLenum pname, GLfloat* params)", },
|
||||
["glFramebufferSampleLocationsfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLenum target, GLuint start, GLsizei count, const GLfloat* v)", },
|
||||
["glNamedFramebufferSampleLocationsfvNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
valuetype = nil,
|
||||
args = "(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)", },
|
||||
["glGetBufferParameterui64vNV"] = { type ='function',
|
||||
description = "",
|
||||
returns = "()",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -26,14 +26,15 @@ return {
|
||||
table.insert(paths, p)
|
||||
end
|
||||
if not love2d then
|
||||
DisplayOutput("Can't find love2d executable in any of the following folders: "
|
||||
..table.concat(paths, ", ").."\n")
|
||||
DisplayOutputLn("Can't find love2d executable in any of the following folders: "
|
||||
..table.concat(paths, ", "))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if not GetFullPathIfExists(self:fworkdir(wfilename), 'main.lua') then
|
||||
DisplayOutput("Can't find 'main.lua' file in the current project folder.\n")
|
||||
DisplayOutputLn(("Can't find 'main.lua' file in the current project folder: '%s'.")
|
||||
:format(self:fworkdir(wfilename)))
|
||||
return
|
||||
end
|
||||
|
||||
@@ -41,11 +42,17 @@ return {
|
||||
DebuggerAttachDefault({runstart = ide.config.debugger.runonstart == true})
|
||||
end
|
||||
|
||||
-- suppress hiding ConsoleWindowClass as this is used by Love console
|
||||
local uhw = ide.config.unhidewindow
|
||||
local cwc = uhw and uhw.ConsoleWindowClass
|
||||
if uhw then uhw.ConsoleWindowClass = 0 end
|
||||
|
||||
local params = ide.config.arg.any or ide.config.arg.love2d
|
||||
local cmd = ('"%s" "%s"%s%s'):format(love2d, self:fworkdir(wfilename),
|
||||
params and " "..params or "", rundebug and ' -debug' or '')
|
||||
-- CommandLineRun(cmd,wdir,tooutput,nohide,stringcallback,uid,endcallback)
|
||||
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true)
|
||||
return CommandLineRun(cmd,self:fworkdir(wfilename),true,true,nil,nil,
|
||||
function() if uhw then uhw.ConsoleWindowClass = cwc end end)
|
||||
end,
|
||||
hasdebugger = true,
|
||||
fattachdebug = function(self) DebuggerAttachDefault() end,
|
||||
|
||||
@@ -30,7 +30,7 @@ return {
|
||||
filepath = tmpfile:GetFullPath()
|
||||
local f = io.open(filepath, "w")
|
||||
if not f then
|
||||
DisplayOutput("Can't open temporary file '"..filepath.."' for writing\n")
|
||||
DisplayOutputLn("Can't open temporary file '"..filepath.."' for writing.")
|
||||
return
|
||||
end
|
||||
f:write(rundebug)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"},
|
||||
|
||||
15
src/main.lua
15
src/main.lua
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
10
t/8-file.lua
Normal 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.")
|
||||
@@ -1,2 +1 @@
|
||||
@echo off
|
||||
zbstudio -cfg t/test.lua
|
||||
@zbstudio -cfg t/test.lua
|
||||
|
||||
BIN
zbstudio/res/16/DEBUG-RUN-TO.png
Normal file
BIN
zbstudio/res/16/DEBUG-RUN-TO.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 321 B |
BIN
zbstudio/res/16/FILE-NORMAL-START.png
Normal file
BIN
zbstudio/res/16/FILE-NORMAL-START.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 743 B |
BIN
zbstudio/res/16/FOLDER-MAPPED.png
Normal file
BIN
zbstudio/res/16/FOLDER-MAPPED.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 656 B |
@@ -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
|
||||
|
||||
BIN
zbstudio/res/24/DEBUG-RUN-TO.png
Normal file
BIN
zbstudio/res/24/DEBUG-RUN-TO.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 376 B |
Reference in New Issue
Block a user