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) |
|
||||
| **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 |
|
||||
| **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 |
|
||||
|
||||
## Installation
|
||||
@@ -109,8 +110,8 @@ require("scl_lsp").setup({
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `:SCLShowVariables` | Show local variables in current file |
|
||||
| `:SCLShowWorkspaceTypes` | Show workspace UDTs and FB count |
|
||||
| `:SCLRescanWorkspaceTypes` | Rescan workspace for types |
|
||||
| `:SCLShowWorkspaceTypes` | Show workspace UDTs, FBs, and Global DBs count |
|
||||
| `:SCLRescanWorkspaceTypes` | Rescan workspace for types and DBs |
|
||||
| `:SCLPrefixWord` | Manually prefix current word with `#` |
|
||||
| `:SCLMultilineParams` | Fill multiline parameters for FB/Function call |
|
||||
| `: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
|
||||
```
|
||||
|
||||
## 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/
|
||||
@@ -187,6 +215,7 @@ scl_lsp/
|
||||
├── init.lua
|
||||
├── auto_prefix.lua
|
||||
├── blink_cmp_source.lua
|
||||
├── db_parser.lua
|
||||
├── fb_parser.lua
|
||||
├── udt_parser.lua
|
||||
├── variables.lua
|
||||
|
||||
Reference in New Issue
Block a user