feat: add builtin types/functions to diagnostics and completions
Files Modified/Created: - src/builtin_instructions.lua - NEW: Contains all TIA Portal built-in types, FBs, and functions - src/diagnostics.lua - Added missing data types + builtin instruction checking - src/main.lua - Added completion support for built-in types/F Bs/functions - src/plc_json.lua - Added .db file parsing + BOM handling fixes - lua/scl/blink_cmp_source.lua - Extended completion with all built-in types/F Bs/functions - src/node-types.json - Added node types for parser - AGENTS.md - Updated documentation Features Added: 1. Diagnostics - No more false "Unknown data type" warnings for: - All elementary types (USINT, SINT, UINT, UDINT, LINT, ULINT, TOD, DTL, etc.) - Timer/counter types (IEC_TON, TOF, TP, CTU, CTD, CTUD) - TIA Portal built-in FBs and functions 2. Auto-completion - Shows in VAR section after :: - 28 elementary data types - 23 built-in function blocks (TON, TOF, TP, CTU, CTD, CTUD, R_TRIG, F_TRIG, etc.) - 80+ built-in functions (ADD, SUB, MUL, DIV, SIN, COS, SQRT, etc.)
This commit is contained in:
+9
-1
@@ -16,6 +16,7 @@ end
|
||||
package.path = package.path .. ";" .. script_path .. "/?.lua"
|
||||
|
||||
local parser = dofile(script_path .. "/parser.lua")
|
||||
local builtin = dofile(script_path .. "/builtin_instructions.lua")
|
||||
|
||||
local DiagnosticSeverity = {
|
||||
Error = 1,
|
||||
@@ -156,9 +157,16 @@ function M.validate_diagnostics(content, workspace_types, root_dir)
|
||||
upper_type ~= "WSTRING" and upper_type ~= "TIME" and upper_type ~= "DATE" and
|
||||
upper_type ~= "TIME_OF_DAY" and upper_type ~= "DATE_AND_TIME" and
|
||||
upper_type ~= "S5TIME" and upper_type ~= "LTIME" and
|
||||
upper_type ~= "USINT" and upper_type ~= "SINT" and upper_type ~= "UINT" and
|
||||
upper_type ~= "UDINT" and upper_type ~= "LINT" and upper_type ~= "ULINT" and
|
||||
upper_type ~= "TOD" and upper_type ~= "DTL" and
|
||||
upper_type ~= "IEC_TIMER" and upper_type ~= "TON_TIME" and
|
||||
upper_type ~= "TOF_TIME" and upper_type ~= "TONR_TIME" and
|
||||
upper_type ~= "TP_TIME" then
|
||||
upper_type ~= "TP_TIME" and upper_type ~= "IEC_TON" and
|
||||
upper_type ~= "IEC_TOF" and upper_type ~= "IEC_TP" and
|
||||
upper_type ~= "IEC_COUNTER" and upper_type ~= "CTU" and
|
||||
upper_type ~= "CTD" and upper_type ~= "CTUD" and
|
||||
not builtin.is_known_type_or_instruction(upper_type) then
|
||||
table.insert(diagnostics, {
|
||||
range = range_to_lsp(line_num, 0, line_num, #line),
|
||||
severity = DiagnosticSeverity.Warning,
|
||||
|
||||
Reference in New Issue
Block a user