Merge branch 'feat/db_workspace_scope_recognition' into develop
This commit is contained in:
@@ -45,7 +45,8 @@ A comprehensive Neovim/LazyVim plugin providing **Language Server Protocol (LSP)
|
|||||||
| **Auto-Prefix** | Automatically adds `#` prefix to local variables (like TIA Portal) |
|
| **Auto-Prefix** | Automatically adds `#` prefix to local variables (like TIA Portal) |
|
||||||
| **Multiline Parameters** | Fill FB/Function call parameters across multiple lines with `<Space>mp` or `:SCLMultilineParams` |
|
| **Multiline Parameters** | Fill FB/Function call parameters across multiple lines with `<Space>mp` or `:SCLMultilineParams` |
|
||||||
| **Tab Navigation** | Jump between parameters with `<Tab>` in insert mode |
|
| **Tab Navigation** | Jump between parameters with `<Tab>` in insert mode |
|
||||||
| **Workspace UDT Scanner** | Scans project for user-defined types |
|
| **Workspace UDT Scanner** | Scans project for user-defined types (.udt files) |
|
||||||
|
| **Workspace Global DB Scanner** | Scans project for global data blocks (.db files) |
|
||||||
| **blink.cmp Integration** | Smart completion source for blink.cmp |
|
| **blink.cmp Integration** | Smart completion source for blink.cmp |
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
@@ -109,8 +110,8 @@ require("scl_lsp").setup({
|
|||||||
| Command | Description |
|
| Command | Description |
|
||||||
|---------|-------------|
|
|---------|-------------|
|
||||||
| `:SCLShowVariables` | Show local variables in current file |
|
| `:SCLShowVariables` | Show local variables in current file |
|
||||||
| `:SCLShowWorkspaceTypes` | Show workspace UDTs and FB count |
|
| `:SCLShowWorkspaceTypes` | Show workspace UDTs, FBs, and Global DBs count |
|
||||||
| `:SCLRescanWorkspaceTypes` | Rescan workspace for types |
|
| `:SCLRescanWorkspaceTypes` | Rescan workspace for types and DBs |
|
||||||
| `:SCLPrefixWord` | Manually prefix current word with `#` |
|
| `:SCLPrefixWord` | Manually prefix current word with `#` |
|
||||||
| `:SCLMultilineParams` | Fill multiline parameters for FB/Function call |
|
| `:SCLMultilineParams` | Fill multiline parameters for FB/Function call |
|
||||||
| `:LspSCLFormat` | Format current SCL file |
|
| `:LspSCLFormat` | Format current SCL file |
|
||||||
@@ -155,7 +156,34 @@ The LSP automatically scans for SCL files in `data_types/` folder and extracts T
|
|||||||
lua /home/lazar/dev/scl_lsp/src/plc_json.lua --generate
|
lua /home/lazar/dev/scl_lsp/src/plc_json.lua --generate
|
||||||
```
|
```
|
||||||
|
|
||||||
## Project Structure
|
## Global Data Block Support
|
||||||
|
|
||||||
|
The plugin automatically scans for `.db` files in the workspace and provides auto-completion for global data blocks and their members.
|
||||||
|
|
||||||
|
### How it works
|
||||||
|
|
||||||
|
1. **Workspace Scanning**: When opening a `.scl` file, the plugin scans the project for `.db` files
|
||||||
|
2. **DB Parsing**: Parses `DATA_BLOCK` definitions and extracts members from `VAR` sections
|
||||||
|
3. **Auto-completion**: Provides smart completion for DB names and members
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
- Type a space or `#` to trigger completion - global DB names appear alongside local variables
|
||||||
|
- Type `"` followed by a DB name to get member completions
|
||||||
|
- Access nested members: `"MyDB".member.submember`
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```scl
|
||||||
|
// Access global DB members
|
||||||
|
"HmiData".units
|
||||||
|
"Parameter".machine.unit100.paramTimeStampApplied
|
||||||
|
|
||||||
|
// Inside FB call parameter
|
||||||
|
#instParameterManager(hmiInterface:="HmiData".units, ...)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
scl_lsp/
|
scl_lsp/
|
||||||
@@ -187,6 +215,7 @@ scl_lsp/
|
|||||||
├── init.lua
|
├── init.lua
|
||||||
├── auto_prefix.lua
|
├── auto_prefix.lua
|
||||||
├── blink_cmp_source.lua
|
├── blink_cmp_source.lua
|
||||||
|
├── db_parser.lua
|
||||||
├── fb_parser.lua
|
├── fb_parser.lua
|
||||||
├── udt_parser.lua
|
├── udt_parser.lua
|
||||||
├── variables.lua
|
├── variables.lua
|
||||||
|
|||||||
Reference in New Issue
Block a user