The swig-language-server extension provides a language server for SWIG interface files, offering essential tools to enhance your development experience. It includes a linter, syntax highlighting, code completion, and other features for .i or .swig files.
This extension provides the following features for SWIG interface files:
- Code Completion: Provides autocompletion for SWIG directives like %module,%include,%typemap, and more.
- Hover Information: Displays documentation for SWIG directives (e.g., %module,%include) when hovering over them.
- Document Symbols: Displays an outline of the SWIG file, including modules, includes, and typedefs.
- Folding Ranges: Supports folding for %{ ... %}blocks and multi-line comments.
- Diagnostics: Highlights potential issues in your SWIG interface files, such as:
- Unmatched %{and%}blocks.
- Missing semicolons for non-block directives.
- Unsupported data types like long double.
- Incorrect usage of SWIG directives like %renameor%apply.
 
- Unmatched 
- Real-Time Validation: Automatically validates SWIG files when they are opened or edited.
- SWIG-Specific Constructs: Highlights SWIG directives like %module,%include,%typemap, and more.
- Tokenization: Tokenizes SWIG files and provides semantic tokens for better syntax understanding.
- Custom Scopes: Highlights SWIG-specific constructs differently from standard C/C++ code.
- Indentation Rules: Automatically adjusts indentation for blocks and directives.
- Bracket Matching: Supports auto-closing and matching for {},[],(), and%{ %}.
- Lint SWIG File: Manually run the linter on the current SWIG file using the swig-language-server.swigValidatecommand.
- Tokenize SWIG File: Tokenize the current SWIG file and display the tokens in an output channel using the swig-language-server.tokenizecommand.
- Hover Documentation: Provides detailed descriptions for SWIG directives.
- Output Channel: Displays tokenized output for debugging purposes.
This extension requires the following:
- A working knowledge of SWIG interface files.
- Works without any configured swig executable.
This extension contributes the following settings:
- swigLanguageServer.enable: Enable/disable the SWIG Language Server.
- swigLanguageServer.lintOnSave: Enable/disable linting on file save.
- Some advanced SWIG features may not be fully supported.
- The linter might produce false positives in complex scenarios.
- Syntax highlighting for inline C/C++/Perl/Python code may not be fully accurate.
- Initial release of swig-language-server.
- Added basic linter, syntax highlighting, and code completion for SWIG interface files.
- Added hover documentation for SWIG constructs like %apply,%rename, etc.
- Added auto-closing of brackets and %{ %}blocks.
- Added diagnostics for unsupported data types like long double.
Enjoy coding with SWIG!