Open pidgeon777 opened 3 years ago
An update: when specifying the full source file path in the hdl-prj.json
file, going from this:
....
"files": [
{ "file": "ENTITY_TOP.vhd", "language": "vhdl" }
]
....
to this:
....
"files": [
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", "language": "vhdl" }
]
....
then GHDL-LS doesn't crash anymore when opening that file, but it reports as warning:
entity "entity_top" was also defined in file "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd"
In conclusion, in my opinion, there are some serious bugs in the way file paths are managed by GHDL-LS on Windows.
For example, when opening the source file with the entity definition of ENTITY_TOP
, even if this file is also added to hdl-prj.json
, it gets analysed but it is reported as if that very same file is not considered as belonging to the project.
So, we have to investigate the way file paths are handled by GHDL-LS on Windows, and this should be a good start to fix the issue.
@pidgeon777, how are you installing GHDL, ghdl-ls and the Neovim client on WIndows?
For installing ghdl-ls, I followed those advices:
https://github.com/ghdl/ghdl-language-server/issues/73#issuecomment-770788982
Neovim (nightly win64) was downloaded from here:
https://github.com/neovim/neovim/releases
Neovim version:
NVIM v0.5.0-dev+1384-gf2906a466
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compilation: C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe /DWIN32 /D_WINDOWS /W3 /MD /Zi /O2 /Ob1 /DNDEBUG /W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -DWIN32 -D_WIN32_WINNT=0x0600 -DINCLUDE_GENERATED_DECLARATIONS -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -ID:/a/neovim/neovim/build/config -ID:/a/neovim/neovim/src -ID:/a/neovim/neovim/nvim-deps/usr/include -ID:/a/neovim/neovim/build/src/nvim/auto -ID:/a/neovim/neovim/build/include
Compilato da runneradmin@fv-az152-886
Features: -acl +iconv +tui
See ":help feature-compile"
file vimrc di sistema: "$VIM\sysinit.vim"
$VIM di riserva: "C:/Program Files/nvim/share/nvim"
Run :checkhealth for more info
ghdl-ls --disp-config
run in Neovim:
command line prefix (--PREFIX): (not set)
environment prefix (GHDL_PREFIX): (not set)
exec prefix (from program name): C:\msys64\mingw64
library prefix: C:\msys64\mingw64\lib/ghdl
library directory: C:\msys64\mingw64\lib/ghdl
ghdl-ls.exe
location : C:\msys64\mingw64\bin\ghdl-ls.exe
I barely use windows, so I have to create a setup to reproduce the issue.
I'm willing to help with the testing.
Ok. The first thing to do is to reproduce the bug with logs enabled in ghdl-lsp. You need to run ghdl-lsp with two '-v'.
The log file would contain more details.
vhdl-ls.log:
2021-06-28 12:25:39,724 [INFO] Args: ['C:\\msys64\\mingw64\\bin\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']
2021-06-28 12:25:39,724 [INFO] Current directory is C:\Work\MEGA\Portable
2021-06-28 12:25:39,765 [DEBUG] Headers: {'Content-Length': '2742'}
2021-06-28 12:25:39,766 [DEBUG] Read msg: {'method': 'initialize', 'jsonrpc': '2.0', 'id': 1, 'params': {'initializationOptions': {}, 'rootUri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'workspaceFolders': [{'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'name': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test'}], 'rootPath': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test', 'clientInfo': {'version': '0.5.0', 'name': 'Neovim'}, 'processId': 19368, 'trace': 'off', 'capabilities': {'workspace': {'workspaceFolders': True, 'configuration': True, 'workspaceEdit': {'resourceOperations': ['rename', 'create', 'delete']}, 'symbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalWorkspaceSymbolSupport': True}, 'applyEdit': True}, 'window': {'showDocument': {'support': False}, 'showMessage': {'messageActionItem': {'additionalPropertiesSupport': False}}, 'workDoneProgress': True}, 'callHierarchy': {'dynamicRegistration': False}, 'textDocument': {'declaration': {'linkSupport': True}, 'documentSymbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalDocumentSymbolSupport': True}, 'references': {'dynamicRegistration': False}, 'documentHighlight': {'dynamicRegistration': False}, 'completion': {'completionItem': {'snippetSupport': False, 'commitCharactersSupport': False, 'preselectSupport': False, 'deprecatedSupport': False, 'documentationFormat': ['markdown', 'plaintext']}, 'contextSupport': False, 'dynamicRegistration': False, 'completionItemKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}}, 'definition': {'linkSupport': True}, 'synchronization': {'dynamicRegistration': False, 'willSaveWaitUntil': False, 'willSave': False, 'didSave': True}, 'codeAction': {'codeActionLiteralSupport': {'codeActionKind': {'valueSet': ['', 'Empty', 'QuickFix', 'Refactor', 'RefactorExtract', 'RefactorInline', 'RefactorRewrite', 'Source', 'SourceOrganizeImports', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports']}}, 'dynamicRegistration': False}, 'rename': {'prepareSupport': True, 'dynamicRegistration': False}, 'signatureHelp': {'signatureInformation': {'documentationFormat': ['markdown', 'plaintext']}, 'dynamicRegistration': False}, 'hover': {'dynamicRegistration': False, 'contentFormat': ['markdown', 'plaintext']}, 'publishDiagnostics': {'relatedInformation': True, 'tagSupport': {'valueSet': [1, 2]}}, 'implementation': {'linkSupport': True}, 'typeDefinition': {'linkSupport': True}}}}}
2021-06-28 12:25:39,769 [DEBUG] Language server initialized with 19368 file:///C:/Work/MEGA/Portable/GHDL/bin/src_test C:\Work\MEGA\Portable\GHDL\bin\src_test {}
2021-06-28 12:25:39,771 [INFO] reading project file C:\Work\MEGA\Portable\GHDL\bin\src_test\hdl-prj.json
2021-06-28 12:25:39,771 [INFO] Using options: ['--workdir=work', '--ieee=synopsys', '-fexplicit', '--warn-library', '--warn-default-binding', '--warn-binding', '--warn-reserved', '--warn-nested-comment', '--warn-parenthesis', '--warn-vital-generic', '--warn-delayed-checks', '--warn-body', '--warn-specs', '--warn-runtime-error', '--warn-shared', '--warn-hide', '--warn-unused', '--warn-others', '--warn-pure', '--warn-static']
2021-06-28 12:25:39,774 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd
2021-06-28 12:25:39,776 [DEBUG] add_to_library(824) -> 954
2021-06-28 12:25:39,776 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP_2.vhd
2021-06-28 12:25:39,777 [DEBUG] add_to_library(956) -> 1058
2021-06-28 12:25:39,778 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/TEST.vhd
2021-06-28 12:25:39,792 [DEBUG] add_to_library(1060) -> 15622
2021-06-28 12:25:39,792 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_1.vhd
2021-06-28 12:25:39,793 [DEBUG] add_to_library(15624) -> 15748
2021-06-28 12:25:39,793 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_2.vhd
2021-06-28 12:25:39,794 [DEBUG] add_to_library(15750) -> 15872
2021-06-28 12:25:39,794 [DEBUG] Response: {'capabilities': {'textDocumentSync': {'openClose': True, 'change': 2, 'save': {'includeText': True}}, 'hoverProvider': False, 'definitionProvider': True, 'referencesProvider': False, 'documentHighlightProvider': False, 'documentSymbolProvider': True, 'codeActionProvider': False, 'documentFormattingProvider': False, 'documentRangeFormattingProvider': True, 'renameProvider': False}}
2021-06-28 12:25:39,795 [DEBUG] Headers: {'Content-Length': '57'}
2021-06-28 12:25:39,795 [DEBUG] Read msg: {'method': 'initialized', 'jsonrpc': '2.0', 'params': {}}
2021-06-28 12:25:39,795 [DEBUG] Headers: {'Content-Length': '2037'}
2021-06-28 12:25:39,796 [DEBUG] Read msg: {'method': 'textDocument/didOpen', 'jsonrpc': '2.0', 'params': {'textDocument': {'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd', 'version': 0, 'languageId': 'vhdl', 'text': "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n"}}}
2021-06-28 12:25:39,796 [DEBUG] parse doc 9 file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd
2021-06-28 12:25:39,796 [DEBUG] add_to_library(15874) -> 16004
2021-06-28 12:25:42,137 [DEBUG] Headers: {'Content-Length': '49'}
2021-06-28 12:25:42,137 [DEBUG] Read msg: {'method': 'shutdown', 'jsonrpc': '2.0', 'id': 2}
2021-06-28 12:25:42,137 [DEBUG] Response: None
But in the last log, there is no crash.
More in detail, these are all of the tests I did. In each of those, opening ENTITY_TOP.vhd
file was the only thing done, and nothing else.
Setup A
hdl-prj.json:
{
"options": {
"ghdl_analysis": [
"--workdir=work",
"--ieee=synopsys",
"-fexplicit",
"--warn-library",
"--warn-default-binding",
"--warn-binding",
"--warn-reserved",
"--warn-nested-comment",
"--warn-parenthesis",
"--warn-vital-generic",
"--warn-delayed-checks",
"--warn-body",
"--warn-specs",
"--warn-runtime-error",
"--warn-shared",
"--warn-hide",
"--warn-unused",
"--warn-others",
"--warn-pure",
"--warn-static"
]
},
"files": [
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", "language": "vhdl" },
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP_2.vhd", "language": "vhdl" },
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/TEST.vhd", "language": "vhdl" },
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_1.vhd", "language": "vhdl" },
{ "file": "C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_2.vhd", "language": "vhdl" }
]
}
LSP command:
cmd = {"ghdl-ls", "--verbose", "--verbose", "--log-file", "vhdl-ls.log", "--trace-file", "vhdl-ls.trace"},
Results:
vhdl-ls.log:
2021-06-30 09:18:37,977 [INFO] Args: ['C:\\msys64\\mingw64\\bin\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']
2021-06-30 09:18:37,977 [INFO] Current directory is C:\Work\MEGA\Portable
lsp.log:
[ START ] 2021-06-30T09:23:00+0200 ] LSP logging initiated
[ INFO ] 2021-06-30T09:23:05+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:311 ] "Starting RPC client" { args = { "--verbose", "--verbose", "--log-file", "vhdl-ls.log", "--trace-file", "vhdl-ls.trace" }, cmd = "ghdl-ls", extra = {}}
[ DEBUG ] 2021-06-30T09:23:05+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:826 ] "LSP[ghdl_ls]" "initialize_params" { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 24680, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } }}
[ DEBUG ] 2021-06-30T09:23:05+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { id = 1, jsonrpc = "2.0", method = "initialize", params = { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 24680, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } } }}
[ ERROR ] 2021-06-30T09:23:05+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "Args: ['C:\\\\msys64\\\\mingw64\\\\bin\\\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']\r\nCurrent directory: C:\\Work\\MEGA\\Portable\r\n"
[ ERROR ] 2021-06-30T09:23:05+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "Traceback (most recent call last):\r\n File \"C:\\msys64\\mingw64\\bin\\ghdl-ls-script.py\", line 33, in <module>\r\n sys.exit(load_entry_point('pyGHDL==2.0.0.dev0', 'console_scripts', 'ghdl-ls')())\r\n File \"C:\\msys64\\mingw64\\lib\\python3.8\\site-packages\\pyGHDL\\cli\\lsp.py\", line 143, in main\r\n __rotate_log_files(trace_file + \".in\", 5)\r\n File \"C:\\msys64\\mingw64\\lib\\python3.8\\site-packages\\pyGHDL\\cli\\lsp.py\", line 58, in __rotate_log_files\r\n os.rename(oldfile, \"{}.{}\".format(basename, i))\r\nFileExistsError: [WinError 183] Impossibile creare un file, se il file esiste gi?'vhdl-ls.trace.in.4' -> 'vhdl-ls.trace.in.5'\r\n"
[ INFO ] 2021-06-30T09:23:08+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:1213 ] "exit_handler" {}
GHDL-LS
crashed because the vhdl-ls.trace.in.5
and vhdl-ls.trace.out.5
files already existed, according to the log above.
This should be classified as a bug I think (it can append 1 to 5 to the trace file names, but not beyond, resulting in a crash).
Anyway, after having deleted those files and restarted the test, we obtain:
vhdl-ls.log:
2021-06-30 09:30:16,013 [INFO] Args: ['C:\\msys64\\mingw64\\bin\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']
2021-06-30 09:30:16,013 [INFO] Current directory is C:\Work\MEGA\Portable
2021-06-30 09:30:16,018 [DEBUG] Headers: {'Content-Length': '2742'}
2021-06-30 09:30:16,018 [DEBUG] Read msg: {'id': 1, 'jsonrpc': '2.0', 'method': 'initialize', 'params': {'initializationOptions': {}, 'rootUri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'workspaceFolders': [{'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'name': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test'}], 'rootPath': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test', 'clientInfo': {'version': '0.5.0', 'name': 'Neovim'}, 'processId': 33968, 'trace': 'off', 'capabilities': {'workspace': {'workspaceFolders': True, 'configuration': True, 'workspaceEdit': {'resourceOperations': ['rename', 'create', 'delete']}, 'symbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalWorkspaceSymbolSupport': True}, 'applyEdit': True}, 'window': {'showDocument': {'support': False}, 'showMessage': {'messageActionItem': {'additionalPropertiesSupport': False}}, 'workDoneProgress': True}, 'callHierarchy': {'dynamicRegistration': False}, 'textDocument': {'publishDiagnostics': {'relatedInformation': True, 'tagSupport': {'valueSet': [1, 2]}}, 'documentSymbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalDocumentSymbolSupport': True}, 'references': {'dynamicRegistration': False}, 'documentHighlight': {'dynamicRegistration': False}, 'rename': {'prepareSupport': True, 'dynamicRegistration': False}, 'synchronization': {'didSave': True, 'willSaveWaitUntil': False, 'willSave': False, 'dynamicRegistration': False}, 'completion': {'completionItem': {'snippetSupport': False, 'commitCharactersSupport': False, 'preselectSupport': False, 'deprecatedSupport': False, 'documentationFormat': ['markdown', 'plaintext']}, 'contextSupport': False, 'dynamicRegistration': False, 'completionItemKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}}, 'codeAction': {'codeActionLiteralSupport': {'codeActionKind': {'valueSet': ['', 'Empty', 'QuickFix', 'Refactor', 'RefactorExtract', 'RefactorInline', 'RefactorRewrite', 'Source', 'SourceOrganizeImports', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports']}}, 'dynamicRegistration': False}, 'signatureHelp': {'signatureInformation': {'documentationFormat': ['markdown', 'plaintext']}, 'dynamicRegistration': False}, 'typeDefinition': {'linkSupport': True}, 'hover': {'dynamicRegistration': False, 'contentFormat': ['markdown', 'plaintext']}, 'declaration': {'linkSupport': True}, 'implementation': {'linkSupport': True}, 'definition': {'linkSupport': True}}}}}
2021-06-30 09:30:16,018 [DEBUG] Language server initialized with 33968 file:///C:/Work/MEGA/Portable/GHDL/bin/src_test C:\Work\MEGA\Portable\GHDL\bin\src_test {}
2021-06-30 09:30:16,020 [INFO] reading project file C:\Work\MEGA\Portable\GHDL\bin\src_test\hdl-prj.json
2021-06-30 09:30:16,020 [INFO] Using options: ['--workdir=work', '--ieee=synopsys', '-fexplicit', '--warn-library', '--warn-default-binding', '--warn-binding', '--warn-reserved', '--warn-nested-comment', '--warn-parenthesis', '--warn-vital-generic', '--warn-delayed-checks', '--warn-body', '--warn-specs', '--warn-runtime-error', '--warn-shared', '--warn-hide', '--warn-unused', '--warn-others', '--warn-pure', '--warn-static']
2021-06-30 09:30:16,022 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd
2021-06-30 09:30:16,023 [DEBUG] add_to_library(824) -> 954
2021-06-30 09:30:16,023 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP_2.vhd
2021-06-30 09:30:16,024 [DEBUG] add_to_library(956) -> 1058
2021-06-30 09:30:16,024 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/TEST.vhd
2021-06-30 09:30:16,033 [DEBUG] add_to_library(1060) -> 15622
2021-06-30 09:30:16,033 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_1.vhd
2021-06-30 09:30:16,034 [DEBUG] add_to_library(15624) -> 15748
2021-06-30 09:30:16,034 [INFO] loading C:/Work/MEGA/Portable/GHDL/bin/src_test/Sub/ENTITY_2.vhd
2021-06-30 09:30:16,035 [DEBUG] add_to_library(15750) -> 15872
2021-06-30 09:30:16,035 [DEBUG] Response: {'capabilities': {'textDocumentSync': {'openClose': True, 'change': 2, 'save': {'includeText': True}}, 'hoverProvider': False, 'definitionProvider': True, 'referencesProvider': False, 'documentHighlightProvider': False, 'documentSymbolProvider': True, 'codeActionProvider': False, 'documentFormattingProvider': False, 'documentRangeFormattingProvider': True, 'renameProvider': False}}
2021-06-30 09:30:16,037 [DEBUG] Headers: {'Content-Length': '57'}
2021-06-30 09:30:16,037 [DEBUG] Read msg: {'method': 'initialized', 'jsonrpc': '2.0', 'params': {}}
2021-06-30 09:30:16,037 [DEBUG] Headers: {'Content-Length': '2037'}
2021-06-30 09:30:16,037 [DEBUG] Read msg: {'method': 'textDocument/didOpen', 'jsonrpc': '2.0', 'params': {'textDocument': {'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd', 'version': 0, 'languageId': 'vhdl', 'text': "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n"}}}
2021-06-30 09:30:16,037 [DEBUG] parse doc 9 file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd
2021-06-30 09:30:16,038 [DEBUG] add_to_library(15874) -> 16004
2021-06-30 09:30:17,995 [DEBUG] Headers: {'Content-Length': '49'}
2021-06-30 09:30:17,996 [DEBUG] Read msg: {'id': 2, 'jsonrpc': '2.0', 'method': 'shutdown'}
2021-06-30 09:30:17,996 [DEBUG] Response: None
vhdl-ls.trace.in:
Content-Length: 2742
{"id": 1, "jsonrpc": "2.0", "method": "initialize", "params": {"initializationOptions": {}, "rootUri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", "workspaceFolders": [{"uri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", "name": "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test"}], "rootPath": "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", "clientInfo": {"version": "0.5.0", "name": "Neovim"}, "processId": 33968, "trace": "off", "capabilities": {"workspace": {"workspaceFolders": true, "configuration": true, "workspaceEdit": {"resourceOperations": ["rename", "create", "delete"]}, "symbol": {"symbolKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, "dynamicRegistration": false, "hierarchicalWorkspaceSymbolSupport": true}, "applyEdit": true}, "window": {"showDocument": {"support": false}, "showMessage": {"messageActionItem": {"additionalPropertiesSupport": false}}, "workDoneProgress": true}, "callHierarchy": {"dynamicRegistration": false}, "textDocument": {"publishDiagnostics": {"relatedInformation": true, "tagSupport": {"valueSet": [1, 2]}}, "documentSymbol": {"symbolKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, "dynamicRegistration": false, "hierarchicalDocumentSymbolSupport": true}, "references": {"dynamicRegistration": false}, "documentHighlight": {"dynamicRegistration": false}, "rename": {"prepareSupport": true, "dynamicRegistration": false}, "synchronization": {"didSave": true, "willSaveWaitUntil": false, "willSave": false, "dynamicRegistration": false}, "completion": {"completionItem": {"snippetSupport": false, "commitCharactersSupport": false, "preselectSupport": false, "deprecatedSupport": false, "documentationFormat": ["markdown", "plaintext"]}, "contextSupport": false, "dynamicRegistration": false, "completionItemKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}}, "codeAction": {"codeActionLiteralSupport": {"codeActionKind": {"valueSet": ["", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports"]}}, "dynamicRegistration": false}, "signatureHelp": {"signatureInformation": {"documentationFormat": ["markdown", "plaintext"]}, "dynamicRegistration": false}, "typeDefinition": {"linkSupport": true}, "hover": {"dynamicRegistration": false, "contentFormat": ["markdown", "plaintext"]}, "declaration": {"linkSupport": true}, "implementation": {"linkSupport": true}, "definition": {"linkSupport": true}}}}}Content-Length: 57
{"method": "initialized", "jsonrpc": "2.0", "params": {}}Content-Length: 2037
{"method": "textDocument/didOpen", "jsonrpc": "2.0", "params": {"textDocument": {"uri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", "version": 0, "languageId": "vhdl", "text": "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n"}}}Content-Length: 49
{"id": 2, "jsonrpc": "2.0", "method": "shutdown"}
vhdl-ls.trace.out:
Content-Length: 392
{"jsonrpc":"2.0","id":1,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{"includeText":true}},"hoverProvider":false,"definitionProvider":true,"referencesProvider":false,"documentHighlightProvider":false,"documentSymbolProvider":true,"codeActionProvider":false,"documentFormattingProvider":false,"documentRangeFormattingProvider":true,"renameProvider":false}}}Content-Length: 556
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd","diagnostics":[{"source":"ghdl","range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"message":"entity \"entity_top\" was also defined in file \"C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd\"","severity":2},{"source":"ghdl","range":{"start":{"line":84,"character":2},"end":{"line":84,"character":2}},"message":"infinite loop for this process without a wait statement","severity":2}]}}Content-Length: 38
{"jsonrpc":"2.0","id":2,"result":null}
lsp.log:
[ START ] 2021-06-30T09:29:52+0200 ] LSP logging initiated
[ INFO ] 2021-06-30T09:30:15+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:311 ] "Starting RPC client" { args = { "--verbose", "--verbose", "--log-file", "vhdl-ls.log", "--trace-file", "vhdl-ls.trace" }, cmd = "ghdl-ls", extra = {}}
[ DEBUG ] 2021-06-30T09:30:15+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:826 ] "LSP[ghdl_ls]" "initialize_params" { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 33968, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } }}
[ DEBUG ] 2021-06-30T09:30:15+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { id = 1, jsonrpc = "2.0", method = "initialize", params = { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 33968, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } } }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:491 ] "decoded" { id = 1, jsonrpc = "2.0", result = { capabilities = { codeActionProvider = false, definitionProvider = true, documentFormattingProvider = false, documentHighlightProvider = false, documentRangeFormattingProvider = true, documentSymbolProvider = true, hoverProvider = false, referencesProvider = false, renameProvider = false, textDocumentSync = { change = 2, openClose = true, save = { includeText = true } } } }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { jsonrpc = "2.0", method = "initialized", params = { [true] = 6 }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:853 ] "LSP[ghdl_ls]" "server_capabilities" { codeActionProvider = false, definitionProvider = true, documentFormattingProvider = false, documentHighlightProvider = false, documentRangeFormattingProvider = true, documentSymbolProvider = true, hoverProvider = false, referencesProvider = false, renameProvider = false, textDocumentSync = { change = 2, openClose = true, save = { includeText = true } }}
[ INFO ] 2021-06-30T09:30:16+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:854 ] "LSP[ghdl_ls]" "initialized" { resolved_capabilities = { call_hierarchy = false, code_action = false, code_lens = false, code_lens_resolve = false, completion = false, declaration = false, document_formatting = false, document_highlight = false, document_range_formatting = true, document_symbol = true, execute_command = false, find_references = false, goto_definition = true, hover = false, implementation = false, rename = false, signature_help = false, signature_help_trigger_characters = {}, text_document_did_change = 2, text_document_open_close = true, text_document_save = { includeText = true }, text_document_save_include_text = true, text_document_will_save = false, text_document_will_save_wait_until = false, type_definition = false, workspace_folder_properties = { changeNotifications = false, supported = false }, workspace_symbol = false }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { jsonrpc = "2.0", method = "textDocument/didOpen", params = { textDocument = { languageId = "vhdl", text = "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", version = 0 } }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:491 ] "decoded" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { message = 'entity "entity_top" was also defined in file "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd"', range = { end = { character = 0, line = 0 }, start = { character = 0, line = 0 } }, severity = 2, source = "ghdl" }, { message = "infinite loop for this process without a wait statement", range = { end = { character = 2, line = 84 }, start = { character = 2, line = 84 } }, severity = 2, source = "ghdl" } }, uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd" }}
[ DEBUG ] 2021-06-30T09:30:16+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:679 ] "notification" "textDocument/publishDiagnostics" { diagnostics = { { message = 'entity "entity_top" was also defined in file "C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd"', range = { end = { character = 0, line = 0 }, start = { character = 0, line = 0 } }, severity = 2, source = "ghdl" }, { message = "infinite loop for this process without a wait statement", range = { end = { character = 2, line = 84 }, start = { character = 2, line = 84 } }, severity = 2, source = "ghdl" } }, uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd"}
[ WARN ] 2021-06-30T09:30:16+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:86 ] "method textDocument/codeAction is not supported by any of the servers registered for the current buffer"
[ INFO ] 2021-06-30T09:30:17+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:1213 ] "exit_handler" { { _on_attach = <function 1>, cancel_request = <function 2>, config = { _on_attach = <function 3>, capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 4> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, cmd = { "ghdl-ls", "--verbose", "--verbose", "--log-file", "vhdl-ls.log", "--trace-file", "vhdl-ls.trace" }, filetypes = { "vhdl" }, flags = {}, get_language_id = <function 5>, handlers = <2>{}, init_options = vim.empty_dict(), log_level = 2, message_level = 2, name = "ghdl_ls", on_attach = <function 6>, on_exit = <function 7>, on_init = <function 8>, root_dir = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", settings = vim.empty_dict(), <metatable> = <table 1> }, handlers = <table 2>, id = 1, initialized = true, is_stopped = <function 9>, messages = { messages = {}, name = "ghdl_ls", progress = {}, status = {} }, name = "ghdl_ls", notify = <function 10>, offset_encoding = "utf-16", request = <function 11>, request_sync = <function 12>, resolved_capabilities = { call_hierarchy = false, code_action = false, code_lens = false, code_lens_resolve = false, completion = false, declaration = false, document_formatting = false, document_highlight = false, document_range_formatting = true, document_symbol = false, execute_command = false, find_references = false, goto_definition = true, hover = false, implementation = false, rename = false, signature_help = false, signature_help_trigger_characters = {}, text_document_did_change = 2, text_document_open_close = true, text_document_save = <3>{ includeText = true }, text_document_save_include_text = true, text_document_will_save = false, text_document_will_save_wait_until = false, type_definition = false, workspace_folder_properties = { changeNotifications = false, supported = false }, workspace_symbol = false }, rpc = { handle = <userdata 1>, notify = <function 13>, pid = 16036, request = <function 14> }, server_capabilities = { codeActionProvider = false, definitionProvider = true, documentFormattingProvider = false, documentHighlightProvider = false, documentRangeFormattingProvider = true, documentSymbolProvider = true, hoverProvider = false, referencesProvider = false, renameProvider = false, textDocumentSync = { change = 2, openClose = true, save = <table 3> } }, stop = <function 15>, supports_method = <function 16>, workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } }, workspace_did_change_configuration = <function 17> } }
[ DEBUG ] 2021-06-30T09:30:17+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { id = 2, jsonrpc = "2.0", method = "shutdown"}
[ DEBUG ] 2021-06-30T09:30:17+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:491 ] "decoded" { id = 2, jsonrpc = "2.0", result = vim.NIL}
[ DEBUG ] 2021-06-30T09:30:17+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { jsonrpc = "2.0", method = "exit"}
[ ERROR ] 2021-06-30T09:30:17+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "Args: ['C:\\\\msys64\\\\mingw64\\\\bin\\\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']\r\nCurrent directory: C:\\Work\\MEGA\\Portable\r\n"
The third row of vhdl-ls.trace.out
is:
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd","diagnostics":[{"source":"ghdl","range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"message":"entity \"entity_top\" was also defined in file \"C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd\"","severity":2},{"source":"ghdl","range":{"start":{"line":84,"character":2},"end":{"line":84,"character":2}},"message":"infinite loop for this process without a wait statement","severity":2}]}}Content-Length: 38
This is a bug because the full path of ENTITY_TOP.vhd
is defined in hdl-prj.json
file, but when opening it, it is detected by GHDL-LS
as not belonging to the project files, instead.
What I mean is that, if a file listed in hdl-prj.json
is opened, GHDL-LS should not detect and report it as if didn't belong to the project.
In my opinion, this is due to the way GHDL-LS
handles Windows paths, but I'm not sure about this.
Setup B
Here I only changed the paths of the source files, going from absolute to relative (to the location of hdl-prj.json
file).
hdl-prj.json:
{
"options": {
"ghdl_analysis": [
"--workdir=work",
"--ieee=synopsys",
"-fexplicit",
"--warn-library",
"--warn-default-binding",
"--warn-binding",
"--warn-reserved",
"--warn-nested-comment",
"--warn-parenthesis",
"--warn-vital-generic",
"--warn-delayed-checks",
"--warn-body",
"--warn-specs",
"--warn-runtime-error",
"--warn-shared",
"--warn-hide",
"--warn-unused",
"--warn-others",
"--warn-pure",
"--warn-static"
]
},
"files": [
{ "file": "ENTITY_TOP.vhd", "language": "vhdl" },
{ "file": "ENTITY_TOP_2.vhd", "language": "vhdl" },
{ "file": "TEST.vhd", "language": "vhdl" },
{ "file": "Sub/ENTITY_1.vhd", "language": "vhdl" },
{ "file": "Sub/ENTITY_2.vhd", "language": "vhdl" }
]
}
Results:
vhdl-ls.log:
2021-06-30 09:43:53,710 [INFO] Args: ['C:\\msys64\\mingw64\\bin\\ghdl-ls', '--verbose', '--verbose', '--log-file', 'vhdl-ls.log', '--trace-file', 'vhdl-ls.trace']
2021-06-30 09:43:53,711 [INFO] Current directory is C:\Work\MEGA\Portable
2021-06-30 09:43:53,713 [DEBUG] Headers: {'Content-Length': '2741'}
2021-06-30 09:43:53,714 [DEBUG] Read msg: {'id': 1, 'jsonrpc': '2.0', 'method': 'initialize', 'params': {'rootUri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'initializationOptions': {}, 'workspaceFolders': [{'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test', 'name': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test'}], 'rootPath': 'C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test', 'clientInfo': {'version': '0.5.0', 'name': 'Neovim'}, 'processId': 6124, 'trace': 'off', 'capabilities': {'callHierarchy': {'dynamicRegistration': False}, 'window': {'showDocument': {'support': False}, 'showMessage': {'messageActionItem': {'additionalPropertiesSupport': False}}, 'workDoneProgress': True}, 'workspace': {'workspaceFolders': True, 'workspaceEdit': {'resourceOperations': ['rename', 'create', 'delete']}, 'applyEdit': True, 'symbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalWorkspaceSymbolSupport': True}, 'configuration': True}, 'textDocument': {'publishDiagnostics': {'relatedInformation': True, 'tagSupport': {'valueSet': [1, 2]}}, 'documentSymbol': {'symbolKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, 'dynamicRegistration': False, 'hierarchicalDocumentSymbolSupport': True}, 'references': {'dynamicRegistration': False}, 'documentHighlight': {'dynamicRegistration': False}, 'rename': {'prepareSupport': True, 'dynamicRegistration': False}, 'synchronization': {'dynamicRegistration': False, 'willSaveWaitUntil': False, 'willSave': False, 'didSave': True}, 'completion': {'completionItem': {'preselectSupport': False, 'commitCharactersSupport': False, 'snippetSupport': False, 'deprecatedSupport': False, 'documentationFormat': ['markdown', 'plaintext']}, 'contextSupport': False, 'dynamicRegistration': False, 'completionItemKind': {'valueSet': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}}, 'codeAction': {'codeActionLiteralSupport': {'codeActionKind': {'valueSet': ['', 'Empty', 'QuickFix', 'Refactor', 'RefactorExtract', 'RefactorInline', 'RefactorRewrite', 'Source', 'SourceOrganizeImports', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports']}}, 'dynamicRegistration': False}, 'signatureHelp': {'dynamicRegistration': False, 'signatureInformation': {'documentationFormat': ['markdown', 'plaintext']}}, 'typeDefinition': {'linkSupport': True}, 'hover': {'dynamicRegistration': False, 'contentFormat': ['markdown', 'plaintext']}, 'declaration': {'linkSupport': True}, 'implementation': {'linkSupport': True}, 'definition': {'linkSupport': True}}}}}
2021-06-30 09:43:53,714 [DEBUG] Language server initialized with 6124 file:///C:/Work/MEGA/Portable/GHDL/bin/src_test C:\Work\MEGA\Portable\GHDL\bin\src_test {}
2021-06-30 09:43:53,716 [INFO] reading project file C:\Work\MEGA\Portable\GHDL\bin\src_test\hdl-prj.json
2021-06-30 09:43:53,716 [INFO] Using options: ['--workdir=work', '--ieee=synopsys', '-fexplicit', '--warn-library', '--warn-default-binding', '--warn-binding', '--warn-reserved', '--warn-nested-comment', '--warn-parenthesis', '--warn-vital-generic', '--warn-delayed-checks', '--warn-body', '--warn-specs', '--warn-runtime-error', '--warn-shared', '--warn-hide', '--warn-unused', '--warn-others', '--warn-pure', '--warn-static']
2021-06-30 09:43:53,718 [INFO] loading ENTITY_TOP.vhd
2021-06-30 09:43:53,719 [DEBUG] add_to_library(824) -> 954
2021-06-30 09:43:53,719 [INFO] loading ENTITY_TOP_2.vhd
2021-06-30 09:43:53,720 [DEBUG] add_to_library(956) -> 1058
2021-06-30 09:43:53,720 [INFO] loading TEST.vhd
2021-06-30 09:43:53,730 [DEBUG] add_to_library(1060) -> 15622
2021-06-30 09:43:53,730 [INFO] loading Sub/ENTITY_1.vhd
2021-06-30 09:43:53,731 [DEBUG] add_to_library(15624) -> 15748
2021-06-30 09:43:53,732 [INFO] loading Sub/ENTITY_2.vhd
2021-06-30 09:43:53,732 [DEBUG] add_to_library(15750) -> 15872
2021-06-30 09:43:53,732 [DEBUG] Response: {'capabilities': {'textDocumentSync': {'openClose': True, 'change': 2, 'save': {'includeText': True}}, 'hoverProvider': False, 'definitionProvider': True, 'referencesProvider': False, 'documentHighlightProvider': False, 'documentSymbolProvider': True, 'codeActionProvider': False, 'documentFormattingProvider': False, 'documentRangeFormattingProvider': True, 'renameProvider': False}}
2021-06-30 09:43:53,733 [DEBUG] Headers: {'Content-Length': '57'}
2021-06-30 09:43:53,733 [DEBUG] Read msg: {'method': 'initialized', 'jsonrpc': '2.0', 'params': {}}
2021-06-30 09:43:53,733 [DEBUG] Headers: {'Content-Length': '2037'}
2021-06-30 09:43:53,733 [DEBUG] Read msg: {'method': 'textDocument/didOpen', 'jsonrpc': '2.0', 'params': {'textDocument': {'uri': 'file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd', 'version': 0, 'languageId': 'vhdl', 'text': "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n"}}}
vhdl-ls.trace.in:
Content-Length: 2741
{"id": 1, "jsonrpc": "2.0", "method": "initialize", "params": {"rootUri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", "initializationOptions": {}, "workspaceFolders": [{"uri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", "name": "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test"}], "rootPath": "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", "clientInfo": {"version": "0.5.0", "name": "Neovim"}, "processId": 6124, "trace": "off", "capabilities": {"callHierarchy": {"dynamicRegistration": false}, "window": {"showDocument": {"support": false}, "showMessage": {"messageActionItem": {"additionalPropertiesSupport": false}}, "workDoneProgress": true}, "workspace": {"workspaceFolders": true, "workspaceEdit": {"resourceOperations": ["rename", "create", "delete"]}, "applyEdit": true, "symbol": {"symbolKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, "dynamicRegistration": false, "hierarchicalWorkspaceSymbolSupport": true}, "configuration": true}, "textDocument": {"publishDiagnostics": {"relatedInformation": true, "tagSupport": {"valueSet": [1, 2]}}, "documentSymbol": {"symbolKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}, "dynamicRegistration": false, "hierarchicalDocumentSymbolSupport": true}, "references": {"dynamicRegistration": false}, "documentHighlight": {"dynamicRegistration": false}, "rename": {"prepareSupport": true, "dynamicRegistration": false}, "synchronization": {"dynamicRegistration": false, "willSaveWaitUntil": false, "willSave": false, "didSave": true}, "completion": {"completionItem": {"preselectSupport": false, "commitCharactersSupport": false, "snippetSupport": false, "deprecatedSupport": false, "documentationFormat": ["markdown", "plaintext"]}, "contextSupport": false, "dynamicRegistration": false, "completionItemKind": {"valueSet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}}, "codeAction": {"codeActionLiteralSupport": {"codeActionKind": {"valueSet": ["", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports"]}}, "dynamicRegistration": false}, "signatureHelp": {"dynamicRegistration": false, "signatureInformation": {"documentationFormat": ["markdown", "plaintext"]}}, "typeDefinition": {"linkSupport": true}, "hover": {"dynamicRegistration": false, "contentFormat": ["markdown", "plaintext"]}, "declaration": {"linkSupport": true}, "implementation": {"linkSupport": true}, "definition": {"linkSupport": true}}}}}Content-Length: 57
{"method": "initialized", "jsonrpc": "2.0", "params": {}}Content-Length: 2037
{"method": "textDocument/didOpen", "jsonrpc": "2.0", "params": {"textDocument": {"uri": "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", "version": 0, "languageId": "vhdl", "text": "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n"}}}
vhdl-ls.trace.out:
Content-Length: 392
{"jsonrpc":"2.0","id":1,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{"includeText":true}},"hoverProvider":false,"definitionProvider":true,"referencesProvider":false,"documentHighlightProvider":false,"documentSymbolProvider":true,"codeActionProvider":false,"documentFormattingProvider":false,"documentRangeFormattingProvider":true,"renameProvider":false}}}
lsp.log:
[ START ] 2021-06-30T09:43:47+0200 ] LSP logging initiated
[ INFO ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:311 ] "Starting RPC client" { args = { "--verbose", "--verbose", "--log-file", "vhdl-ls.log", "--trace-file", "vhdl-ls.trace" }, cmd = "ghdl-ls", extra = {}}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:826 ] "LSP[ghdl_ls]" "initialize_params" { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 6124, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } }}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { id = 1, jsonrpc = "2.0", method = "initialize", params = { capabilities = { callHierarchy = { dynamicRegistration = false, <metatable> = <1>{ __tostring = <function 1> } }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }, <metatable> = <table 1> }, <metatable> = <table 1> }, dynamicRegistration = false, <metatable> = <table 1> }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false, <metatable> = <table 1> }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, <metatable> = <table 1> }, contextSupport = false, dynamicRegistration = false, <metatable> = <table 1> }, declaration = { linkSupport = true, <metatable> = <table 1> }, definition = { linkSupport = true, <metatable> = <table 1> }, documentHighlight = { dynamicRegistration = false, <metatable> = <table 1> }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false, <metatable> = <table 1> }, implementation = { linkSupport = true, <metatable> = <table 1> }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 }, <metatable> = <table 1> }, <metatable> = <table 1> }, references = { dynamicRegistration = false, <metatable> = <table 1> }, rename = { dynamicRegistration = false, prepareSupport = true, <metatable> = <table 1> }, signatureHelp = { dynamicRegistration = false, signatureInformation = { documentationFormat = { "markdown", "plaintext" }, <metatable> = <table 1> }, <metatable> = <table 1> }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false, <metatable> = <table 1> }, typeDefinition = { linkSupport = true, <metatable> = <table 1> }, <metatable> = <table 1> }, window = { showDocument = { support = false, <metatable> = <table 1> }, showMessage = { messageActionItem = { additionalPropertiesSupport = false, <metatable> = <table 1> }, <metatable> = <table 1> }, workDoneProgress = true, <metatable> = <table 1> }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }, <metatable> = <table 1> }, <metatable> = <table 1> }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" }, <metatable> = <table 1> }, workspaceFolders = true, <metatable> = <table 1> } }, clientInfo = { name = "Neovim", version = "0.5.0" }, initializationOptions = vim.empty_dict(), processId = 6124, rootPath = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", rootUri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test", trace = "off", workspaceFolders = { { name = "C:\\Work\\MEGA\\Portable\\GHDL\\bin\\src_test", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test" } } }}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:491 ] "decoded" { id = 1, jsonrpc = "2.0", result = { capabilities = { codeActionProvider = false, definitionProvider = true, documentFormattingProvider = false, documentHighlightProvider = false, documentRangeFormattingProvider = true, documentSymbolProvider = true, hoverProvider = false, referencesProvider = false, renameProvider = false, textDocumentSync = { change = 2, openClose = true, save = { includeText = true } } } }}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { jsonrpc = "2.0", method = "initialized", params = { [true] = 6 }}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:853 ] "LSP[ghdl_ls]" "server_capabilities" { codeActionProvider = false, definitionProvider = true, documentFormattingProvider = false, documentHighlightProvider = false, documentRangeFormattingProvider = true, documentSymbolProvider = true, hoverProvider = false, referencesProvider = false, renameProvider = false, textDocumentSync = { change = 2, openClose = true, save = { includeText = true } }}
[ INFO ] 2021-06-30T09:43:53+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:854 ] "LSP[ghdl_ls]" "initialized" { resolved_capabilities = { call_hierarchy = false, code_action = false, code_lens = false, code_lens_resolve = false, completion = false, declaration = false, document_formatting = false, document_highlight = false, document_range_formatting = true, document_symbol = true, execute_command = false, find_references = false, goto_definition = true, hover = false, implementation = false, rename = false, signature_help = false, signature_help_trigger_characters = {}, text_document_did_change = 2, text_document_open_close = true, text_document_save = { includeText = true }, text_document_save_include_text = true, text_document_will_save = false, text_document_will_save_wait_until = false, type_definition = false, workspace_folder_properties = { changeNotifications = false, supported = false }, workspace_symbol = false }}
[ DEBUG ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:390 ] "rpc.send.payload" { jsonrpc = "2.0", method = "textDocument/didOpen", params = { textDocument = { languageId = "vhdl", text = "library ieee;\nuse ieee.std_logic_1164.all;\n\nentity ENTITY_TOP is\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\nend entity;\n\narchitecture arch of ENTITY_TOP is\n signal sig : std_logic := '0';\n \n component ENTITY_1\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \n component ENTITY_2\n generic (\n GEN : integer := 0\n );\n port (\n INP : in std_logic\n );\n end component;\n \nbegin\n\n ENTITY_1_1 : entity work.ENTITY_1(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_1_2 : entity work.ENTITY_1(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_1 : entity work.ENTITY_2(arch1)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n ENTITY_2_2 : entity work.ENTITY_2(arch2)\n generic map(\n GEN => GEN\n )\n port map(\n INP => INP\n );\n \n PROC_p: process(INP)\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\n \n process\n -----------------------------\n variable var_v : integer := 0;\n -----------------------------\n begin\n -----------------------------\n var_v := 0;\n -----------------------------\n if (INP = '1') then\n sig <= '1';\n else\n sig <= '0';\n end if;\n -----------------------------\n end process;\n -----------------------------\nend architecture;\n", uri = "file:///C:/Work/MEGA/Portable/GHDL/bin/src_test/ENTITY_TOP.vhd", version = 0 } }}
[ ERROR ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "\nraised S"
[ ERROR ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "YSTEM.ASSERTIONS.ASSERT_FAILURE : files_map.adb:608\n"
[ INFO ] 2021-06-30T09:43:57+0200 ] ...\MEGA\Portable\Neovim\share\nvim\runtime\lua\vim\lsp.lua:1213 ] "exit_handler" {}
In the log file above, this line is reported:
[ ERROR ] 2021-06-30T09:43:53+0200 ] ...A\Portable\Neovim\share\nvim\runtime\lua\vim\lsp\rpc.lua:457 ] "rpc" "ghdl-ls" "stderr" "YSTEM.ASSERTIONS.ASSERT_FAILURE : files_map.adb:608\n"
This time GHDL-LS
crashed, maybe path management could be involved in this.
Summary:
When opening ENTITY_TOP.vhd
, this happens:
GHDL-LS
crash, but files are not currently identified as belonging to the project.GHDL-LS
crashes.Also, in Setup B, if a file not listed in hdl-prj.json
file is opened, GHDL-LS correctly reports it as not belonging to the project files, but if a file listed in hdl-prj.json
is opened instead, then it crashes as described.
Finally, there seems to be a bug about vhdl-ls.trace.in.XXX
and vhdl-ls.trace.out.XXX
file generation (output file writer set XXX to 5
as a maximum, then GHDL-LS
crashes).
I have tried to install neovim on my windows VM. Big failure: I cannot install nvim-lspconfig plugin. I think vim-plug is installed, but it simply doesn't work. As far as I understand, it is supposed to use git, but I am not sure how git is invoked (and not even sure how git should be installed)...
I am making some progresses.
I would suggest making use of this config:
https://github.com/ChristianChiarulli/LunarVim
It already provides many useful plugins, and also it simplifies the process of enabling GHDL-LS in Neovim.
I can provide support if needed.
I also add that Neovim 0.5 stable has just been released after 3 years of development, 0.4.4 is now its previous version.
I was not able to reproduce the issue, but I am using the python from mingw. From the log, I would assume you are using a full windows python. Is that correct ?
@tgingold with latest change how pyGHDL sets the DLL search path for Python 3.8/3.9, you should be able to run also ghdl-ls from Windows CPython. You can call the libghdl...dll
within MinGW64 by using GHDL_PREFIX
.
Depends how it was built!
For installing GHDL-LS
, I followed those advices:
https://github.com/ghdl/ghdl-language-server/issues/73#issuecomment-770788982
I was not able to reproduce the issue, but I am using the python from mingw. From the log, I would assume you are using a full windows python. Is that correct ?
I can confirm that this is the command used to launch GHDL-LS in Neovim:
C:\msys64\mingw64\bin\ghdl-ls.exe --verbose --verbose --log-file vhdl-ls.log --trace-file vhdl-ls.trace
This command, in turn, launches:
C:\msys64\mingw64\bin\python.exe "C:\msys64\mingw64\bin\ghdl-ls-script.py" "--verbose" "--verbose" "--log-file" "vhdl-ls.log" "--trace-file" "vhdl-ls.trace"
Ok, I can reproduce a crash.
There is a consistency issue with the colon in uri like 'file:///C:/xxx' It can be encoded as '%3A'
On my setup, my last commit fixes the issue. Now, does it work on your setup ?
I have two questions, these are the commands I executed for installing GHDL-LS into Windows.
In MSYS2 shell:
$ pacman -Syu
$ pacman -S mingw-w64-x86_64-ghdl-llvm
$ pacman -S mingw-w64-x86_64-python-pip
$ pacman -S git
In MinGW64 shell:
pip install git+https://github.com/ghdl/ghdl.git
I would like to ask:
Thank you
file:///C:/
is not a valid URL for (local) resources.
The format is <protocol>://<host/<path>
. For Windows, a C:
drive translates to /c/
, because <host>
is usually not used, hence the 3 forward slashes in a URL for paths compare to 2 slashes in e.g. https://
.
@umarcor should know how to get the latest binaries (and if this is possible).
You can also simply do a new pip install on the git repo. The binaries haven't changed.
For my setup, I always have a cloned repo and I build locally.
Well, I am not sure about this. LSP clients use this schema for local resources, and it looks to comply with https://datatracker.ietf.org/doc/html/rfc8089
When I use GHDL-LS with Neovim, if I open a source file not defined in the list of project files, GHDL-LS keep running, but as soon as I open a source file belonging to the list specified in the
hdl-prj.json
file, it crashes.OS: Windows 10 x64 Pro ghdl-ls: ghdl-ls 2.0.0-dev
hdl-prj.json:
ENTITY_TOP.vhd:
vhdl-ls.log
vhdl-ls.trace.in
vhdl-ls.trace.out
Neovim LSP log:
particularly:
Something seems to have caused an exception related to the
files_map.adb
GHDL-LS file, line 608.