├── .github ├── CODEOWNERS └── workflows │ └── mkdocs-deploy.yml ├── .gitignore ├── .gitpod.yml ├── README.md ├── docs ├── img │ ├── add_workspace.png │ ├── catalog.png │ ├── catalog_compile.png │ ├── codelens.png │ ├── compile_basic_in_unidata_with_different_flavors.png │ ├── compile_from_context.png │ ├── compile_from_context_multiple_selection.png │ ├── compile_from_explorer.png │ ├── compile_from_menu_1.png │ ├── compile_from_menu_2.png │ ├── compile_from_menu_3.png │ ├── config_files.png │ ├── configuration_files.png │ ├── connection_status.png │ ├── debug_add_watch.png │ ├── debug_breakpoints_view.png │ ├── debug_continue.png │ ├── debug_input.png │ ├── debug_launch_file.png │ ├── debug_launch_program.png │ ├── debug_select_file.png │ ├── debug_set_breakpoint.png │ ├── debug_step_over.png │ ├── debug_stop.png │ ├── debug_type.png │ ├── debug_variables.png │ ├── debugg_start.png │ ├── diagnostic.png │ ├── diagnostic_reference.png │ ├── disable_auto_detect.png │ ├── document_symbol_command.png │ ├── document_symbol_outline.png │ ├── documentation_custom.png │ ├── documentation_markdown.png │ ├── faq_auto_detect.png │ ├── faq_exclude.png │ ├── folding_after.png │ ├── folding_before.png │ ├── formatting_ontype.png │ ├── icon-extensions-20x20.png │ ├── icon-manage-20x20.png │ ├── lang_mode.png │ ├── log_console.png │ ├── multiple_accounts.png │ ├── online_debug_multiple_breakpoints.png │ ├── online_editing_compile_1.png │ ├── online_editing_compile_2.png │ ├── online_editing_compile_3.png │ ├── online_editing_compile_4.png │ ├── online_editing_configure_file.png │ ├── online_editing_configure_pattern_option.png │ ├── online_editing_connect.png │ ├── online_editing_connection_icon.png │ ├── online_editing_disconnect.png │ ├── online_editing_edit_files.png │ ├── online_editing_edit_open.png │ ├── online_editing_empty_folder.png │ ├── online_editing_icon.png │ ├── online_editing_search_criteria.png │ ├── online_editing_search_option.png │ ├── online_editing_search_results_view.png │ ├── online_editing_server_1.png │ ├── online_editing_server_2.png │ ├── online_editing_server_3.png │ ├── online_editing_server_refresh.png │ ├── readme_config.png │ ├── references_all.png │ ├── references_all_result.png │ ├── references_pallette.png │ ├── references_pallette_result.png │ ├── rename_pallette.png │ ├── run_and_debug.png │ ├── select_folder.png │ ├── semantic_config.png │ ├── semantic_false.png │ ├── semantic_theme.png │ ├── semantic_true.png │ ├── sigature_user_define.png │ ├── signature_help.png │ └── start_association.png ├── index.md └── usage │ ├── Accounts.md │ ├── CHANGELOG.md │ ├── Catalog.md │ ├── CodeLens.md │ ├── Compatibility.md │ ├── Compile.md │ ├── Completion.md │ ├── ConfigDap.md │ ├── Configuration.md │ ├── Connection.md │ ├── CustomizeDoc.md │ ├── DAPRelease.md │ ├── Debugging.md │ ├── Definition.md │ ├── Diagnostics.md │ ├── DocumentSymbol.md │ ├── FAQ.md │ ├── Folding.md │ ├── Formatting.md │ ├── GaraSign.md │ ├── GroupView.md │ ├── Hover.md │ ├── Include.md │ ├── KnownIssues.md │ ├── Logging.md │ ├── MultipleWorkspaceFolders.md │ ├── OnlineEditing.md │ ├── References.md │ ├── Rename.md │ ├── SemanticHighlighting.md │ ├── SignatureHelp.md │ └── onlineEditing.docx ├── mkdocs.yml └── requirements-dev.txt /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | docs/* @sgaikwad-rocket 2 | .github/* @shenxianpeng 3 | -------------------------------------------------------------------------------- /.github/workflows/mkdocs-deploy.yml: -------------------------------------------------------------------------------- 1 | name: MkDocs Deploy 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | paths: 7 | - 'docs/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: actions/setup-python@v2 16 | with: 17 | python-version: 3.x 18 | - run: pip install -r requirements-dev.txt 19 | - name: Deploy documentation to GitHub Pages 20 | run: | 21 | git config user.name 'github-actions' 22 | git config user.email '41898282+github-actions[bot]@users.noreply.github.com' 23 | mkdocs gh-deploy --force 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | site -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | tasks: 2 | - name: Install & Build 3 | - before: pip install -r requirements-dev.txt 4 | command: mkdocs serve 5 | 6 | ports: 7 | - name: Website 8 | description: Website Preview 9 | port: 8000 10 | onOpen: open-preview 11 | 12 | vscode: 13 | extensions: 14 | - streetsidesoftware.code-spell-checker -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rocket MV BASIC for Visual Studio Code 2 | 3 | [![Rocket MV BASIC Docs](https://img.shields.io/badge/Rocket%20MV%20BASIC-Marketplace-brightgreen?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=RocketSoftware.rocket-mvbasic) 4 | [![Rocket MV BASIC Docs](https://img.shields.io/badge/Rocket%20MV%20BASIC-Docs-brightgreen?style=flat-square)](https://rocketsoftware.github.io/rocket-mvbasic/) 5 | [![Rocket MV BASIC Docs](https://img.shields.io/badge/Rocket%20MV%20BASIC-Forum-brightgreen?style=flat-square)](https://community.rocketsoftware.com/forums/multivalue?CommunityKey=521bce2e-71d5-4d32-b560-dfa95e950eb5) 6 | ![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/rocketsoftware.rocket-mvbasic?style=flat-square) 7 | 8 | 9 | [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/new/#https://github.com/RocketSoftware/rocket-mvbasic) 10 | -------------------------------------------------------------------------------- /docs/img/add_workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/add_workspace.png -------------------------------------------------------------------------------- /docs/img/catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/catalog.png -------------------------------------------------------------------------------- /docs/img/catalog_compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/catalog_compile.png -------------------------------------------------------------------------------- /docs/img/codelens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/codelens.png -------------------------------------------------------------------------------- /docs/img/compile_basic_in_unidata_with_different_flavors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_basic_in_unidata_with_different_flavors.png -------------------------------------------------------------------------------- /docs/img/compile_from_context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_context.png -------------------------------------------------------------------------------- /docs/img/compile_from_context_multiple_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_context_multiple_selection.png -------------------------------------------------------------------------------- /docs/img/compile_from_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_explorer.png -------------------------------------------------------------------------------- /docs/img/compile_from_menu_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_menu_1.png -------------------------------------------------------------------------------- /docs/img/compile_from_menu_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_menu_2.png -------------------------------------------------------------------------------- /docs/img/compile_from_menu_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/compile_from_menu_3.png -------------------------------------------------------------------------------- /docs/img/config_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/config_files.png -------------------------------------------------------------------------------- /docs/img/configuration_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/configuration_files.png -------------------------------------------------------------------------------- /docs/img/connection_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/connection_status.png -------------------------------------------------------------------------------- /docs/img/debug_add_watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_add_watch.png -------------------------------------------------------------------------------- /docs/img/debug_breakpoints_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_breakpoints_view.png -------------------------------------------------------------------------------- /docs/img/debug_continue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_continue.png -------------------------------------------------------------------------------- /docs/img/debug_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_input.png -------------------------------------------------------------------------------- /docs/img/debug_launch_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_launch_file.png -------------------------------------------------------------------------------- /docs/img/debug_launch_program.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_launch_program.png -------------------------------------------------------------------------------- /docs/img/debug_select_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_select_file.png -------------------------------------------------------------------------------- /docs/img/debug_set_breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_set_breakpoint.png -------------------------------------------------------------------------------- /docs/img/debug_step_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_step_over.png -------------------------------------------------------------------------------- /docs/img/debug_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_stop.png -------------------------------------------------------------------------------- /docs/img/debug_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_type.png -------------------------------------------------------------------------------- /docs/img/debug_variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debug_variables.png -------------------------------------------------------------------------------- /docs/img/debugg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/debugg_start.png -------------------------------------------------------------------------------- /docs/img/diagnostic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/diagnostic.png -------------------------------------------------------------------------------- /docs/img/diagnostic_reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/diagnostic_reference.png -------------------------------------------------------------------------------- /docs/img/disable_auto_detect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/disable_auto_detect.png -------------------------------------------------------------------------------- /docs/img/document_symbol_command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/document_symbol_command.png -------------------------------------------------------------------------------- /docs/img/document_symbol_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/document_symbol_outline.png -------------------------------------------------------------------------------- /docs/img/documentation_custom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/documentation_custom.png -------------------------------------------------------------------------------- /docs/img/documentation_markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/documentation_markdown.png -------------------------------------------------------------------------------- /docs/img/faq_auto_detect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/faq_auto_detect.png -------------------------------------------------------------------------------- /docs/img/faq_exclude.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/faq_exclude.png -------------------------------------------------------------------------------- /docs/img/folding_after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/folding_after.png -------------------------------------------------------------------------------- /docs/img/folding_before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/folding_before.png -------------------------------------------------------------------------------- /docs/img/formatting_ontype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/formatting_ontype.png -------------------------------------------------------------------------------- /docs/img/icon-extensions-20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/icon-extensions-20x20.png -------------------------------------------------------------------------------- /docs/img/icon-manage-20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/icon-manage-20x20.png -------------------------------------------------------------------------------- /docs/img/lang_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/lang_mode.png -------------------------------------------------------------------------------- /docs/img/log_console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/log_console.png -------------------------------------------------------------------------------- /docs/img/multiple_accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/multiple_accounts.png -------------------------------------------------------------------------------- /docs/img/online_debug_multiple_breakpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_debug_multiple_breakpoints.png -------------------------------------------------------------------------------- /docs/img/online_editing_compile_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_compile_1.png -------------------------------------------------------------------------------- /docs/img/online_editing_compile_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_compile_2.png -------------------------------------------------------------------------------- /docs/img/online_editing_compile_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_compile_3.png -------------------------------------------------------------------------------- /docs/img/online_editing_compile_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_compile_4.png -------------------------------------------------------------------------------- /docs/img/online_editing_configure_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_configure_file.png -------------------------------------------------------------------------------- /docs/img/online_editing_configure_pattern_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_configure_pattern_option.png -------------------------------------------------------------------------------- /docs/img/online_editing_connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_connect.png -------------------------------------------------------------------------------- /docs/img/online_editing_connection_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_connection_icon.png -------------------------------------------------------------------------------- /docs/img/online_editing_disconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_disconnect.png -------------------------------------------------------------------------------- /docs/img/online_editing_edit_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_edit_files.png -------------------------------------------------------------------------------- /docs/img/online_editing_edit_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_edit_open.png -------------------------------------------------------------------------------- /docs/img/online_editing_empty_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_empty_folder.png -------------------------------------------------------------------------------- /docs/img/online_editing_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_icon.png -------------------------------------------------------------------------------- /docs/img/online_editing_search_criteria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_search_criteria.png -------------------------------------------------------------------------------- /docs/img/online_editing_search_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_search_option.png -------------------------------------------------------------------------------- /docs/img/online_editing_search_results_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_search_results_view.png -------------------------------------------------------------------------------- /docs/img/online_editing_server_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_server_1.png -------------------------------------------------------------------------------- /docs/img/online_editing_server_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_server_2.png -------------------------------------------------------------------------------- /docs/img/online_editing_server_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_server_3.png -------------------------------------------------------------------------------- /docs/img/online_editing_server_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/online_editing_server_refresh.png -------------------------------------------------------------------------------- /docs/img/readme_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/readme_config.png -------------------------------------------------------------------------------- /docs/img/references_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/references_all.png -------------------------------------------------------------------------------- /docs/img/references_all_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/references_all_result.png -------------------------------------------------------------------------------- /docs/img/references_pallette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/references_pallette.png -------------------------------------------------------------------------------- /docs/img/references_pallette_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/references_pallette_result.png -------------------------------------------------------------------------------- /docs/img/rename_pallette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/rename_pallette.png -------------------------------------------------------------------------------- /docs/img/run_and_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/run_and_debug.png -------------------------------------------------------------------------------- /docs/img/select_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/select_folder.png -------------------------------------------------------------------------------- /docs/img/semantic_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/semantic_config.png -------------------------------------------------------------------------------- /docs/img/semantic_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/semantic_false.png -------------------------------------------------------------------------------- /docs/img/semantic_theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/semantic_theme.png -------------------------------------------------------------------------------- /docs/img/semantic_true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/semantic_true.png -------------------------------------------------------------------------------- /docs/img/sigature_user_define.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/sigature_user_define.png -------------------------------------------------------------------------------- /docs/img/signature_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/signature_help.png -------------------------------------------------------------------------------- /docs/img/start_association.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/img/start_association.png -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Rocket MV Basic for VS Code 2 | 3 | Rocket MV BASIC for VS Code is a free Visual Studio Code extension created by Rocket Software. This extension enables BASIC developers to modernize their MultiValue applications in one of the most popular development platforms with an exceptional editing experience. 4 | 5 | ## Features 6 | 7 | This extension allows: 8 | 9 | - BASIC statements / keywords highlighting 10 | - Semantic highlighting 11 | - Symbols collection / outline on the current document 12 | - Code folding 13 | - Go to / Peek definition on the current document or crossing different files 14 | - Rename symbols for the same type 15 | - Find symbol references in current document and crossing different files 16 | - Hover over a statement to display its documentation 17 | - Document formatting, range formatting and on typing formatting 18 | - Detail settings for formatting 19 | - Auto-Completion for BASIC statements, keywords, and symbols 20 | - Connect to U2 MultiValue server and cache cataloged programs to local machine when necessary 21 | - Auto-Group files and customize the group rules 22 | - Add customized documentation for functions, subroutines, or labels 23 | - Show syntax and grammar errors 24 | - Prompt parameters of BASIC internal functions 25 | - Compile / Catalog BASIC programs on the U2 server 26 | - Debug BASIC program files 27 | - Remote editing of BASIC program files on a U2 server (preview) 28 | 29 | ## Getting started 30 | 31 | Requirements: 32 | 33 | 1. [VS Code](https://code.visualstudio.com/) version 1.75 or higher. 34 | 2. [JDK](https://www.oracle.com/java/technologies/downloads/) or [OpenJDK](https://openjdk.org/projects/jdk/20/) version 11 or higher. 35 | 36 | ### Install & configure the extension 37 | 38 | 1. Install this extension from the VS Code Marketplace. 39 | 40 | *Step 1*: Open **Visual Studio Code**. 41 | 42 | *Step 2*: Click the **Extensions** icon ![EXTENSIONS](./img/icon-extensions-20x20.png) (CTRL + SHIFT + X). This opens the **EXTENSIONS** panel. 43 | 44 | *Step 3*: Search for **Rocket MV Basic**. 45 | 46 | *Step 4*: Click **Install** and wait for the installation to complete. 47 | 48 | 2. Download, install and setup the Java environment. Note that you can skip Step 1 and Step 2 if you already have Java 11+ (OpenJDK or Oracle JDK) installed. 49 | 50 | *Step 1*: Click **Manage** ![Manage](./img/icon-manage-20x20.png) **>** **Extension settings**. This opens the **Extension Settings** window. 51 | 52 | *Step 2*: In the **JDK Environment** section enter the full path to the JDK **bin** folder. For example., *C:\jdk-20\bin*. 53 | 54 | *Step 3*. Open User Settings (use the appropriate option listed below): 55 | 56 | **On Windows/Linux** 57 | 58 | - File > Preferences > Settings 59 | 60 | - Use the keyboard shortcut Ctrl + , to open the setting editor 61 | 62 | - Press F1 or Ctrl + Shift + P to open the Command Palette, and then select `Preferences: Open Settings (UI)` 63 | 64 | **On macOS** 65 | 66 | - Code > Preferences > Settings 67 | 68 | - Press F1 or Ctrl + Shift + P on Mac to open Command Palette, and then select `Preferences: Open Settings (UI)` 69 | 70 | *Step 4*. Search “Rocket” to locate the Rocket MV BASIC extension and enter the Java bin path as illustrated in the example below. 71 | 72 | ![](./img/readme_config.png) 73 | 74 | **Note**: Using this method, an existing working environment that requires a different version of Java would not be impacted and the extension will work properly in the Java 11 (or above) environment. 75 | 76 | ### Open an account folder as a workspace 77 | 78 | 1. Select "File" > "Open Folder" to open a folder that contains the BASIC program files you want to view or edit. You can also add multiple folders to the workspace using "File" > "Add Folder to Workspace". We recommend that you open the U2 account level folders to avoid encountering exceptions. 79 | 80 | **Note**: This extension is designed to work with folders/directories rather than individual program files. If you open a single file, some functions may be limited. 81 | 82 | 2. Activate the extension. 83 | 84 | - By default, the extension is automatically activated when opening a file with the suffix ".B". If your BASIC program files don’t end with a ".B" suffix, please refer to the FAQ to see how to customize the rules for activating the extension automatically. 85 | - If the extension is not activated automatically, please open the *Command Palette* in VS code(use any option listed below), and enter the "Activate Rocket MV BASIC" command to activate it manually. 86 | 87 | **On Windows/Linux** 88 | 89 | - View > Command Palette 90 | 91 | - Press F1 or Ctrl + Shift + P 92 | 93 | **On macOS** 94 | 95 | - View > Command Palette 96 | 97 | - Press F1 or Ctrl + Shift + P 98 | 99 | **Note**: Currently, the extension does not provide version control capabilities. Users should manage source code versions independent of this extension. 100 | 101 | ## Usage 102 | 103 | Click the links below to learn more about using each feature. You can also refer to the user manual [documentation online](https://rocketsoftware.github.io/rocket-mvbasic/). 104 | 105 | **Editing Features** 106 | 107 | - [Auto completion](./usage/Completion.md) 108 | - [Code folding](./usage/Folding.md) 109 | - [Code lens](./usage/CodeLens.md) 110 | - [Document symbols](./usage/DocumentSymbol.md) 111 | - [Diagnostics](./usage/Diagnostics.md) 112 | - [Find references](./usage/References.md) 113 | - [Formatting](./usage/Formatting.md) 114 | - [Go to definition](./usage/Definition.md) 115 | - [Hover](./usage/Hover.md) 116 | - [Rename](./usage/Rename.md) 117 | - [Semantic highlighting](./usage/SemanticHighlighting.md) 118 | - [Signature help](./usage/SignatureHelp.md) 119 | - [Online Editing](./usage/OnlineEditing.md) 120 | 121 | **Development Environment** 122 | 123 | - [Auto group view](./usage/GroupView.md) 124 | - [Compile BASIC programs](./usage/Compile.md) 125 | - [Configurations](./usage/Configuration.md) 126 | - [Connect to U2 server](./usage/Connection.md) 127 | - [Customized documentation](./usage/CustomizeDoc.md) 128 | 129 | **Others** 130 | 131 | - [Compile BASIC programs](./usage/Compile.md) 132 | - [Multiple Workspace Folders](./usage/MultipleWorkspaceFolders.md) 133 | - [Debugging](./usage/Debugging.md) 134 | 135 | ## Contact Us 136 | 137 | Please visit our [forum](https://community.rocketsoftware.com/forums/multivalue?CommunityKey=521bce2e-71d5-4d32-b560-dfa95e950eb5) for more information. -------------------------------------------------------------------------------- /docs/usage/Accounts.md: -------------------------------------------------------------------------------- 1 | ## Accounts Settings 2 | 3 | You can add additional account folders in the configuration file. Doing this allows other features to reference the source code in these account folders. 4 | 5 | **Note**: the account folders must be on your local machine. 6 | 7 | Please refer to [Configuration](Configuration.md) to open the database related configuration file. 8 | 9 | ``` 10 | "accounts": [ 11 | { 12 | "name": "accountName", 13 | "path": "accountFullPath" 14 | } 15 | ] 16 | ``` 17 | 18 | Find the "accounts" section and then add your additional accounts. 19 | 20 | - `name`: the account name. 21 | 22 | - `path`: the account folders full path. 23 | 24 | You can also add multiple accounts settings. 25 | 26 | ``` 27 | "accounts": [ 28 | { 29 | "name": "accountName_1", 30 | "path": "accountFullPath_1" 31 | }, 32 | { 33 | "name": "accountName_2", 34 | "path": "accountFullPath_2" 35 | } 36 | ] 37 | ``` 38 | 39 | -------------------------------------------------------------------------------- /docs/usage/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## Version 2.7.1: June 04, 2025 4 | - Added VS Code language auto-detection (online mode) 5 | - Auto-close files on server disconnect in online mode 6 | - Customer bug fixes 7 | 8 | ## Version 2.7.0: April 22, 2025 9 | - Separate compile and catalog option 10 | - Support for debugging BASIC program files in online editing mode. (support with UV 11.4.1 and upcoming 14.2.1) 11 | - Support for keyword search within U2 accounts via right-click context menu. 12 | - Customer bug fixes 13 | 14 | ## Version 2.6.0: November 21, 2024 15 | - Enhancement: UD compilation will read parameters from basic.mvbasic.json file. 16 | - Support pattern configuration for account, folder and file filtering (only in online mode). 17 | - Customer bug fixes 18 | 19 | ## Version 2.5.1: August 23, 2024 20 | 21 | - Support for cataloging BASIC program files via right-click component in both online and offline modes. 22 | 23 | ## Version 2.5.0: June 26, 2024 24 | 25 | - Support compile / catalog BASIC program files in online editing mode. 26 | - Support the rpc service name can be customized (only in offline mode) 27 | - Customer bug fixes - some incorrect behaviors on Linux 28 | 29 | ## Version 2.4.0: February 26, 2024 30 | 31 | - Support high performance debugging on UniData 8.3.1 (Windows / Linux). 32 | - Support new compilation flavor 'r' and 'm' for UniData. 33 | - Resolve the issue that extension could not be started when _JAVA_OPTIONS_ is configured. 34 | 35 | ## Version 2.3.0: October 31, 2023 36 | 37 | - Implement the ability to sort BASIC program files while in online editing mode. 38 | - Provide support for configuring unique server names for online editing servers. 39 | - Enhance warning messages for specific operations. 40 | - Implement various optimizations for the online editing mode. 41 | 42 | ## Version 2.2.0: August 17, 2023 43 | 44 | - Support high performance debugging on UniVerse 11.4.1 (Windows / Linux) 45 | 46 | ## Version 2.1.0: May 31, 2023 47 | 48 | - Support online editing (preview) which can help user to edit BASIC program files on remote U2 servers. 49 | 50 | ## Version 1.10.1: March 30, 2023 51 | 52 | - Update extension's logo. 53 | 54 | ## Version 1.10.0: March 30, 2023 55 | 56 | - Enhancement: full path support in UniData $INCLUDE statement 57 | - Enhancement: disconnect debug session when U2 server is disconnected. 58 | - Enhancement: add functions / labels / subroutines to breadcrumbs. 59 | - Bugs fix: 6 bugs fixed. 60 | 61 | ## Version 1.9.0: January 5, 2023 62 | 63 | - Enhancement: support additional parameters for compilation 64 | - Enhancement: support additional parameters for debugging 65 | 66 | ## Version 1.8.0: October 27, 2022 67 | 68 | - Feature: support logging system. Please refer online documentation for details. 69 | - Feature: monitor U2 server connection status. 70 | - Enhancement: when compiling a BASIC program, the account folder name must be the same as the connected account name. 71 | - Bug fix: 38 bugs fixed. 72 | 73 | ## Version 1.7.0: August 17, 2022 74 | 75 | - Feature: (Preview) support debugging functionalities on UniData 8.2.4. 76 | - Bug fix: improve the stability of debugging. 77 | - Bug fix: improve file parsing performance. 78 | 79 | ## Version 1.6.0: April 29, 2022 80 | 81 | - Feature: (Preview) support debug BASIC program files on UniVerse. Please refer online documentation to see known issues. 82 | - Bug fix: show connection icon only when extension activated. 83 | 84 | ## Version 1.5.0: March 31, 2022 85 | 86 | - Feature: support multiple workspace folders. 87 | - Enhancement: change some functions to support multiple workspace folders, for example, auto group view, connection to U2 server, etc. 88 | - Bug fix: resolve incorrect syntax checking, for example, label name, REM function, etc. 89 | - Bug fix: resolve a compilation failed issue if VS Code upgraded to latest version. 90 | - Bug fix: make some messages more readable. 91 | - Bug fix: support more UV and UD keywords. 92 | - Bug fix: fix the issue formatting sometimes could not work. 93 | 94 | ## Version 1.4.0: January 28, 2022 95 | 96 | - Enhancement: show U2 server account name when connection established. 97 | - Bug fix: resolve some incorrect grammar / syntax related bugs. 98 | - Bug fix: resolve some incorrect / misspelling messages. 99 | 100 | ## Version 1.3.3: December 21, 2021 101 | 102 | - Upgrade log4j to 2.17.0 to avoid security issue. 103 | 104 | ## Version 1.3.2: December 17, 2021 105 | 106 | - Upgrade log4j to 2.16.0 to avoid security issue. 107 | 108 | ## Version 1.3.1: December 11, 2021 109 | 110 | - Upgrade log4j to latest version to prevent remote injection attack. 111 | 112 | ## Version 1.3.0: December 10, 2021 113 | 114 | - Show U2 server connection status icon in status bar. 115 | - Enhancement: more readable connection and compilation feedback messages. 116 | - Bug fix: code folding error in loop statement. 117 | - Bug fix: add missed functions and statements, for example: COM, TTYSET, XDOMGetElementById, etc. 118 | - Bug fix: CALL @VARIABLE shows undefined function error. 119 | - Bug fix: exclude objective code from compilation tasks in UniData; 120 | - Bug fix: show overwriting message when modifying configuration files. 121 | - Bug fix: update incorrect comments in configuration files. 122 | - Bug fix: BASIC parser crashes when meets double special characters at head of a line. 123 | 124 | ## Version 1.2.0: September 30, 2021 125 | 126 | - Support compile and catalog BASIC program files on U2 server; 127 | - Add comments in configuration files for new created project; 128 | - Select "UniVerse" or "UniData" when open the project first time, rather than set "UniVerse" as default; 129 | - Optimize activation process: the extension now could be activated automatically when ".rmv" folder exists; 130 | - Add commands to enable / disable code lens in current project, by default code lens is disabled; 131 | - Bug fix: highlight U2 internal @ variables and don't show error for them; 132 | - Bug fix: display one file multiple times in group view; 133 | - Bug fix: improve performance when project is too big; 134 | - Bug fix: unrecognized grammar for "LOOP WHILE READNEXT"; 135 | - Bug fix: provide hover documents for MQ related functions; 136 | - Bug fix: support function HMAC. 137 | 138 | ## Version 1.1.2: July 31, 2021 139 | 140 | - Add new feature: Code Lens 141 | - Bug fix: @ variables are recognized as undefined symbol 142 | - Bug fix: catalog checking causes high CPU usage 143 | - Bug fix: go to definition doesn't work correctly when cursor at the beginning of a symbol 144 | - Bug fix: open single file in VS Code causes crash 145 | 146 | ## Version 1.1.1: May 27, 2021 147 | 148 | - Add new feature: Signature Help 149 | - Add new feature: Diagnostic 150 | 151 | ## Version 1.1.0: March 31, 2021 152 | 153 | - Initial release 154 | -------------------------------------------------------------------------------- /docs/usage/Catalog.md: -------------------------------------------------------------------------------- 1 | ## Catalog Settings in "db.mvbasic.json" file 2 | 3 | Please refer to [Configuration](Configuration.md) to open the database related configuration file and then find the "catalog" section. 4 | 5 | ``` 6 | "catalog": { 7 | "readServerInternal": 5, 8 | "isSearchAllDirs": false, 9 | "programDirs": [ 10 | { 11 | "fileName": "" 12 | }, 13 | { 14 | "account": "", 15 | "fileName": "" 16 | } 17 | ], 18 | "programMapping": [ 19 | { 20 | "catalogName": "", 21 | "program": "" 22 | }, 23 | { 24 | "catalogName": "", 25 | "fileName": "", 26 | "program": "" 27 | }, 28 | { 29 | "catalogName": "", 30 | "account": "", 31 | "fileName": "", 32 | "program": "" 33 | } 34 | ] 35 | } 36 | ``` 37 | 38 | - `readServerInternal`: the extension requests catalog related information from server per *X* seconds when connected to a U2 server. *X* is the value you set to this setting. By default *X* is 5 seconds. 39 | - `isSearchAllDirs`: specifies whether to search all sub-folders to find catalog programs in the current account folder. By default, the value is false, and only the folder containing the file current being edited is searched. If set to true, all sub-folders will be searched. 40 | - `programDirs`: sets the account and folder in which to search for catalog files. You can add multiple items in this setting. 41 | - `fileName`: file folder name. 42 | - `account`: account folder name. 43 | - `programMapping`: 44 | - `catalogName`: catalog program name; sometimes this is different from the source code file name. 45 | - `program`: catalog program file name, which is the source code file name. 46 | - `account`: specifies the account that contains the catalog program file. You can configure multiple account folders in the configuration file. Please refer to [Accounts Settings](Accounts.md) for more details. 47 | - `fileName`: file folder name. 48 | 49 | ### Examples 50 | 51 | **Example 1**. Search for catalog programs in another source code folder in the current account folder. For example, add a folder named "OtherFolder" to search for catalog programs in current account folder: 52 | 53 | "programDirs": [ 54 | { 55 | "fileName": "OtherFolder" 56 | } 57 | ] 58 | 59 | **Example 2**. Search for catalog programs in another account’s folders. For example, add the folder "OtherFolder" (from the “DEMO” account) to search for catalog program files: 60 | 61 | "programDirs": [ 62 | { 63 | "account": "DEMO", 64 | "fileName": "OtherFolder" 65 | } 66 | ] 67 | 68 | **Example 3**. Create a mapping relationship between the names of catalog programs and their source files. For example, to map the catalog program named "CtlgProgram" to the source code file named "SourceCode", the settings should be: 69 | 70 | "programMapping": [ 71 | { 72 | "catalogName": "CtlgProgram", 73 | "program": "SourceCode" 74 | } 75 | ] 76 | 77 | **Example 4**. Create a mapping relationship between the names of catalog programs and their source files, where the source code is in another account folder. For example, to map the catalog program named "CtlgProgram" to the source code file named "SourceCode" (which exists in the “BP” file folder of the "DEMO" account ), the settings should be: 78 | 79 | ``` 80 | "programMapping": [ 81 | { 82 | "catalogName": "CtlgProgram", 83 | "file": "BP", 84 | "program": "SourceCode" 85 | } 86 | ] 87 | ``` 88 | 89 | **Example 5**. Create a mapping relationship between the names of catalog programs and their source files, where the source code file is in another file folder of the current account. For example, to map the catalog program named "CtlgProgram" to the source code file named "SourceCode" (which exists in the “BP”folder), the settings should be: 90 | 91 | ``` 92 | "programMapping": [ 93 | { 94 | "catalogName": "CtlgProgram", 95 | "account": "DEMO" 96 | "file": "BP", 97 | "program": "SourceCode" 98 | } 99 | ] 100 | ``` 101 | 102 | ## Quick Catalog 103 | 104 | Users can right-click a BASIC program file and select "Catalog" to catalog a single file for both Universe and Unidata databases 105 | 106 | ![](../img/catalog.png) 107 | 108 | ## Catalog Settings in "basic.mvbasic.json" file 109 | 110 | Cataloging a program makes it available to all users or to users of one account. You must catalog a program before another BASIC program can call it as an external subroutine. 111 | 112 | ``` 113 | { 114 | "catalog": "", 115 | "arguments": "", 116 | "initialCharacter": "", 117 | "ud_compile_flavor": "" 118 | } 119 | ``` 120 | 121 | ### Cataloging in Universe 122 | 123 | **Local Catalog**: Local cataloging creates a VOC entry for the program. This entry is a verb that points to the file and 124 | record containing the object code for the cataloged program. You can access a locally cataloged 125 | program only from the account in which it was cataloged, unless you copy the VOC entry for the 126 | catalog name to another account. Because cataloging a program locally only creates a VOC entry 127 | pointing to the object file, you need not recatalog the program every time you recompile it 128 | 129 | { 130 | "catalog": "local", 131 | "arguments": "", 132 | "initialCharacter": "", 133 | "ud_compile_flavor": "" 134 | } 135 | 136 | **Normal Catalog**: Normal cataloging copies the specified object record to the system catalog space, making it available 137 | to all users. The name of the program in the catalog is in the following format: 138 | *account*catalog.name 139 | account is the name of the current account directory. 140 | Normal cataloging also creates a VOC entry for the catalog name. This entry is a verb that contains the 141 | name *account*catalog.name in field 2. 142 | Because normal cataloging copies the object code to the system catalog space, you must recatalog 143 | the program every time you recompile it. 144 | To catalog a program normally, specify a catalog.name that does not begin with the characters *, -, $, 145 | or !, and do not specify the keyword LOCAL. 146 | 147 | { 148 | "catalog": "normal", 149 | "arguments": "", 150 | "initialCharacter": "", 151 | "ud_compile_flavor": "" 152 | } 153 | 154 | **Global Catalog**: Like normal cataloging, global cataloging copies the specified object record to the system catalog 155 | space, making it available to all users. The name of the program in the catalog is in the following 156 | format: 157 | *catalog.name 158 | -catalog.name 159 | $catalog.name 160 | !catalog.name 161 | Global cataloging does not create a VOC entry for the catalog name. The UniVerse command processor 162 | and the run machine look in the system catalog space for verbs or external subroutines with names 163 | that have an initial *, - , $, or ! character. Because globally cataloged subroutines are accessed without 164 | a VOC entry, they are available to all accounts on the system as soon as they are cataloged. 165 | Because global cataloging copies the object code to the system catalog space, you must recatalog the 166 | program every time you recompile it. 167 | To catalog a program globally, specify a catalog.name beginning with *, -, $, or !, and do not specify 168 | the keyword LOCAL. 169 | 170 | { 171 | "catalog": "global", 172 | "arguments": "", 173 | "initialCharacter": "*", 174 | "ud_compile_flavor": "" 175 | } 176 | 177 | ### Cataloging in Unidata 178 | 179 | **Direct Catalog**: Catalogs the program locally without copying it to the local or system CTLG directory. Instead, UniData creates an entry in the VOC file that is a pointer to the directory where the program resides. 180 | 181 | { 182 | "catalog": "direct", 183 | "arguments": "", 184 | "initialCharacter": "", 185 | "ud_compile_flavor": "" 186 | } 187 | 188 | **Local Catalog**: Catalogs the program locally and places a copy of it in a subdirectory of the local CTLG catalog (in the account where the user is running the program). UniData creates a VOC pointer to the subdirectory.UniData creates the CTLG and the subdirectory, if they do not 189 | already exist. 190 | 191 | { 192 | "catalog": "local", 193 | "arguments": "", 194 | "initialCharacter": "", 195 | "ud_compile_flavor": "" 196 | } 197 | 198 | 199 | **Note 1 :** The parameter "arguments" in the basic.mvbasic.json file is currently not supported by the catalog feature. By default, the argument is set to FORCE for both the UV and UD databases. 200 | 201 | **Note 2 :** If the `./rmv` configuration exists, the `basic.mvbasic.json` file will be created during the first catalog attempt. If the `./rmv` configuration does not exist, the `config/basic.mvbasic.json` file will be created when the extension is activated. -------------------------------------------------------------------------------- /docs/usage/CodeLens.md: -------------------------------------------------------------------------------- 1 | ## Code Lens 2 | 3 | Code lens allows you to review your code and find references to variables, functions or subroutines without leaving the editor. To list these references, click the hyperlink as illustrated below. The hyperlink is highlighted when you hover your cursor over the text. 4 | 5 | ![](../img/codelens.png) 6 | 7 | Since 1.2.0 release, this feature is disabled by default. You can enable / disable it through commands: 8 | 9 | - *Enable code lens* 10 | - *Disable code lens* 11 | 12 | -------------------------------------------------------------------------------- /docs/usage/Compatibility.md: -------------------------------------------------------------------------------- 1 | # U2 Product Compatibility 2 | 3 | For the Rocket MV BASIC Extension product, not all features are currently supported on all U2 products & platforms. Users need to pay attention to the U2 product version and platform information first, as some feature may not working properly. 4 | 5 | For more details, please refer [Rocket-MV-BASIC-Extension-features-support-matrix](https://my.rocketsoftware.com/RocketCommunity/s/article/Rocket-MV-BASIC-Extension-features-support-matrix). 6 | 7 | # VS Code Compatibility 8 | 9 | Upgrading VS Code may potentially introduce some issues that could result in anomalies with the compilation or debugging functions of our extension. In such cases, you can consider downgrading VS Code as a workaround. We have summarized a list of recent stable versions of VS Code for your reference. 10 | 11 | | VS Code | GRPC Debug | CLI Debug | Compilation | Online Editing | 12 | | --------- | ------------- | ----------- | ----------- | -------------- | 13 | | 1.83.1 | x | x | √ | √ | 14 | | 1.82.3 | x | x | √ | √ | 15 | | 1.82.2 | √ | √ | √ | √ | 16 | | 1.82.1 | √ | √ | √ | √ | 17 | | 1.81.0 | √ | √ | √ | √ | 18 | | 1.80.2 | √ | × | √ | √ | 19 | | 1.79.2 | √ | × | √ | √ | 20 | | 1.78.2 | √ | √ | √ | √ | 21 | | 1.77.3 | √ | √ | √ | √ | 22 | | 1.76.2 | √ | √ | √ | √ | 23 | | 1.75.1 | √ | √ | √ | √ | 24 | 25 | - Due to the upgrades to VS Code versions 1.82.3 and 1.83.1, the restart functionality in the debugging feature cannot be used properly, but other debugging functions work without issues. 26 | 27 | **Note**: Please refer [Debugging](./Debugging.md) to find out suitable UniVerse / UniData for debugging features. -------------------------------------------------------------------------------- /docs/usage/Compile.md: -------------------------------------------------------------------------------- 1 | # Compiling BASIC Program Files 2 | 3 | Users can compile and catalog BASIC programs using this extension. 4 | 5 | **Note**: 6 | 7 | - Before compiling BASIC programs, a U2 server must be connected. For information on connecting to a U2 server, please see [this section](./Connection.md). 8 | - After compiling, regardless of whether the compile succeeds or fails, the BASIC files will be synchronized to the U2 server, overwriting the existing ones and new files will also be created. 9 | - Generated objective files will not be synchronized from the server to the local machine. 10 | - Compilation does not work properly when VS Code and the extension installed on Linux platform. 11 | 12 | ## Compile and catalog 13 | 14 | There are 3 methods for compiling BASIC program files: 15 | 16 | ### From editor context 17 | 18 | Right-click in the file you want to compile then select "Compile BASIC programs". 19 | 20 | ![](../img/compile_from_context.png) 21 | 22 | If there are no other modified files in your project, the compile process will be started immediately. 23 | 24 | If other modified files exist, a list of modified files will display. Select files you want to compile, and then click "OK". 25 | 26 | ![](../img/compile_from_context_multiple_selection.png) 27 | 28 | The compilation result will display in the VS Code terminal. 29 | 30 | **Note**: Using this method, compiled programs will not be cataloged. 31 | 32 | For UniData, different flavors are supported. Right-click in the file you want to compile then select "Compile BASIC programs". It will read the language value from the basic.mvbasic.json file, with the value set to: "ud_compile_flavor". [Please see this section to set ud_compile_flavor value.](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 33 | 34 | ![](../img/compile_from_context.png) 35 | 36 | ### From a file explorer 37 | 38 | Select one or more files, then right click the file(s) and select "Compile selected BASIC programs". 39 | 40 | ![](../img/compile_from_explorer.png) 41 | 42 | The compilation result will display in the VS Code terminal. 43 | 44 | **Note**: Using this method, compiled programs will not be cataloged. 45 | 46 | ### Through VS Code task 47 | 48 | By using VS Code task, users can compile or catalog multiple BASIC programs at the same time. 49 | 50 | #### Create a BASIC build task 51 | 52 | Select "Configure Default Build Task ..." or "Configure Tasks ..." from the "Terminal" menu to open the Command Palette. 53 | 54 | ![](../img/compile_from_menu_1.png) 55 | 56 | Select "BASIC: build" to create a BASIC build task. 57 | 58 | ![](../img/compile_from_menu_2.png) 59 | 60 | A default build task configuration will be created and displayed in the editor. 61 | 62 | ```json 63 | { 64 | "version": "2.0.0", 65 | "tasks": [ 66 | { 67 | "type": "BASIC", 68 | "targets": [], 69 | "compile": { 70 | "dataSource": "UNIVERSE", 71 | "arguments": "" 72 | }, 73 | "problemMatcher": [], 74 | "label": "BASIC: Build", 75 | "group": { 76 | "kind": "build", 77 | "isDefault": true 78 | } 79 | } 80 | ] 81 | } 82 | ``` 83 | 84 | If the project already has a build task, please see **Example 4** (UniVerse) or **Example 3** (UniData) for instructions on how to add a new build task. 85 | 86 | #### Task properties 87 | 88 | You can find task properties in the [VS Code official documents](https://code.visualstudio.com/docs/editor/tasks#_custom-tasks). There are also some BASIC compilation specified properties: 89 | 90 | - **type**: must be set to "BASIC". This is used to identify that the current task is a BASIC build task. 91 | - **targets**: a list that contains the files you want to compile. The value should be the file's relative path. Please see the examples section for more details. 92 | - **compile**: compilation related settings. It contains following configurable items. 93 | - **dataSource**: Must be "UNIVERSE" or "UNIDATA", depending on the connected U2 server. 94 | - **language**: (For UniData only) The programming language flavor. Must be "UniBasic" or "Pick". If not set, "UniBasic" is the default, **but It will read the language value from the basic.mvbasic.json file, with the value set to: "ud_compile_flavor".** [Please see this section to set ud_compile_flavor value.](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 95 | - **catalog**: For UniVerse, you can select "global", "local" or "normal". For UniData, you can select "global", "local" or "direct". If not set, files will not be cataloged. 96 | - **initialCharacter**: (For UniVerse only) The initial character of the cataloged program can only be set when the **catalog** parameter is set to “global”. 97 | - **arguments**: Put additional compilation arguments here. For more details, please refer UniVerse / UniData user manual for more details. By default, this setting doesn’t appear in the configuration file. Please add it manually if needed. 98 | #### Run build task 99 | 100 | Select "Run build task" from the "Terminal" menu to start the build task. 101 | 102 | **Note 1**: Ensure that a U2 server has been connected. Otherwise, an error will occur. 103 | 104 | ![](../img/compile_from_menu_3.png) 105 | 106 | **Note 2**: Once you click on "Run build task," it will compile BASIC using the compile flavor value set to ud_compile_flavor in the basic.mvbasic.json file, instead of compiling with the "language" value specified in the task (for Unidata). 107 | 108 | ## UniVerse Compile Task Examples 109 | 110 | **Example 1**. Compile a single BASIC program without cataloging. 111 | 112 | ```json 113 | { 114 | "version": "2.0.0", 115 | "tasks": [ 116 | { 117 | "type": "BASIC", 118 | "targets": [ 119 | "BP/SAMPLE_FILE" 120 | ], 121 | "compile": { 122 | "dataSource":"UNIVERSE" 123 | }, 124 | "problemMatcher": [], 125 | "label": "BASIC: Build", 126 | "group": { 127 | "kind": "build", 128 | "isDefault": true 129 | } 130 | } 131 | ] 132 | } 133 | ``` 134 | 135 | - Add the source code relative path to "targets". In this example, SAMPLE_FILE is in the BP folder. 136 | - "dataSource" must be "UNIVERSE" for UniVerse. 137 | - Don't set "catalog" and "initialCharacter" if you don't catalog programs. 138 | 139 | 140 | 141 | **Example 2**. Compile multiple BASIC program files and perform global cataloging. 142 | 143 | ```json 144 | { 145 | "version": "2.0.0", 146 | "tasks": [ 147 | { 148 | "type": "BASIC", 149 | "targets": [ 150 | "BP/SAMPLE_FILE1", 151 | "BP/SAMPLE_FILE2", 152 | "BP/SAMOLE_FILE3" 153 | ], 154 | "compile": { 155 | "dataSource":"UNIVERSE", 156 | "catalog": "global", 157 | "initialCharacter": "Asterisk mark (*)" 158 | }, 159 | "problemMatcher": [], 160 | "label": "BASIC: Build", 161 | "group": { 162 | "kind": "build", 163 | "isDefault": true 164 | } 165 | } 166 | ] 167 | } 168 | ``` 169 | 170 | - You can add multiple source code relative paths to "targets" 171 | - Set "catalog" to "global" if you want to perform global cataloging 172 | - If the "catalog" type is global, you need set "initialCharacter", or the default value "Asterisk mark (*)" will be used 173 | 174 | 175 | 176 | **Example 3**. Compile multiple BASIC program files and perform local cataloging. 177 | 178 | ```json 179 | { 180 | "version": "2.0.0", 181 | "tasks": [ 182 | { 183 | "type": "BASIC", 184 | "targets": [ 185 | "BP/SAMPLE_FILE1", 186 | "BP/SAMPLE_FILE2", 187 | "BP/SAMOLE_FILE3" 188 | ], 189 | "compile": { 190 | "dataSource":"UNIVERSE", 191 | "catalog": "local" 192 | }, 193 | "problemMatcher": [], 194 | "label": "BASIC: Build", 195 | "group": { 196 | "kind": "build", 197 | "isDefault": true 198 | } 199 | } 200 | ] 201 | } 202 | ``` 203 | 204 | - Set "catalog" to "local"(no need to set "initialCharacter") 205 | 206 | 207 | 208 | **Example 4**. Multiple build tasks. 209 | 210 | ```json 211 | { 212 | "version": "2.0.0", 213 | "tasks": [ 214 | { 215 | "type": "BASIC", 216 | "targets": [ 217 | "BP/SAMPLE_FILE1" 218 | ], 219 | "compile": { 220 | "dataSource":"UNIVERSE" 221 | }, 222 | "problemMatcher": [], 223 | "label": "BASIC Build Task 1", 224 | "group": { 225 | "kind": "build", 226 | "isDefault": true 227 | } 228 | }, 229 | { 230 | "type": "BASIC", 231 | "targets": [ 232 | "BP/SAMPLE_FILE2", 233 | "BP/SAMOLE_FILE3" 234 | ], 235 | "compile": { 236 | "dataSource":"UNIVERSE", 237 | "catalog": "global", 238 | "initialCharacter": "Asterisk mark (*)" 239 | }, 240 | "problemMatcher": [], 241 | "label": "BASIC Build Task 2", 242 | "group": { 243 | "kind": "build", 244 | "isDefault": true 245 | } 246 | } 247 | ] 248 | } 249 | ``` 250 | 251 | - Add another task object in "tasks" 252 | - Change the "label" in the tasks. When you run build tasks, you can select one of these tasks 253 | 254 | ## UniData Compile Task Examples 255 | 256 | **Example 1**. Compile a single BASIC program without cataloging, language flavor is UniBasic. 257 | 258 | ```json 259 | { 260 | "version": "2.0.0", 261 | "tasks": [ 262 | { 263 | "type": "BASIC", 264 | "targets": [ 265 | "BP/SAMPLE_FILE" 266 | ], 267 | "compile": { 268 | "dataSource":"UNIDATA", 269 | "language": "UniBasic" 270 | }, 271 | "problemMatcher": [], 272 | "label": "BASIC: Build", 273 | "group": { 274 | "kind": "build", 275 | "isDefault": true 276 | } 277 | } 278 | ] 279 | } 280 | ``` 281 | 282 | - Add source code relative path to "targets". In this example, SAMPLE_FILE is in the BP folder 283 | - "dataSource" must be "UNIDATA" for UniData 284 | - No need to set "catalog" if you don't want to catalog programs 285 | - You can select the language flavor in "language". In this example, the language flavor is "UniBasic", **but It will read the language value from the basic.mvbasic.json file, with the value set to: "ud_compile_flavor".** [Please see this section to set ud_compile_flavor value.](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 286 | 287 | 288 | 289 | **Example 2**. Compile multiple BASIC program files and perform global cataloging, language flavor is Pick. 290 | 291 | ```json 292 | { 293 | "version": "2.0.0", 294 | "tasks": [ 295 | { 296 | "type": "BASIC", 297 | "targets": [ 298 | "BP/SAMPLE_FILE1", 299 | "BP/SAMPLE_FILE2", 300 | "BP/SAMOLE_FILE3" 301 | ], 302 | "compile": { 303 | "dataSource":"UNIDATA", 304 | "language": "Pick", 305 | "catalog": "global" 306 | }, 307 | "problemMatcher": [], 308 | "label": "BASIC: Build", 309 | "group": { 310 | "kind": "build", 311 | "isDefault": true 312 | } 313 | } 314 | ] 315 | } 316 | ``` 317 | 318 | - You can add multiple source code relative paths to "targets" 319 | - Set "language" to "Pick" flavor, **but It will read the language value from the basic.mvbasic.json file, with the value set to: "ud_compile_flavor".** [Please see this section to set ud_compile_flavor value.](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 320 | - Set "catalog" to "global" if you want to perform global cataloging 321 | 322 | 323 | 324 | **Example 3**. Multiple tasks 325 | 326 | ```json 327 | { 328 | "version": "2.0.0", 329 | "tasks": [ 330 | { 331 | "type": "BASIC", 332 | "targets": [ 333 | "BP/SAMPLE_FILE1" 334 | ], 335 | "compile": { 336 | "dataSource":"UNIDATA" 337 | }, 338 | "problemMatcher": [], 339 | "label": "BASIC Build Task 1", 340 | "group": { 341 | "kind": "build", 342 | "isDefault": true 343 | } 344 | }, 345 | { 346 | "type": "BASIC", 347 | "targets": [ 348 | "BP/SAMPLE_FILE2", 349 | "BP/SAMOLE_FILE3" 350 | ], 351 | "compile": { 352 | "dataSource":"UNIDATA", 353 | "language": "UniBasic" 354 | "catalog": "global" 355 | }, 356 | "problemMatcher": [], 357 | "label": "BASIC Build Task 2", 358 | "group": { 359 | "kind": "build", 360 | "isDefault": true 361 | } 362 | } 363 | ] 364 | } 365 | ``` 366 | 367 | - Add another task object in "tasks" 368 | - Change "label" in the tasks, When run build tasks, you can select one of these tasks 369 | 370 | **Example 4**. Additional compilation arguments 371 | 372 | ```json 373 | { 374 | "version": "2.0.0", 375 | "tasks": [ 376 | { 377 | "type": "BASIC", 378 | "targets": [ 379 | "BP/SAMPLE_FILE" 380 | ], 381 | "compile": { 382 | "dataSource":"UNIVERSE", 383 | "arguments": "-L -X" 384 | }, 385 | "problemMatcher": [], 386 | "label": "BASIC: Build", 387 | "group": { 388 | "kind": "build", 389 | "isDefault": true 390 | } 391 | } 392 | ] 393 | } 394 | ``` 395 | 396 | - Compile the BASIC program with arguments "-L" and "-X". 397 | 398 | ## Unidata Compile Flavor in basic.mvbasic.json File 399 | 400 | By Uusing the VS Code task, users can compile or catalog multiple BASIC programs at the same time. BASIC compilation will use the specified Task propetiesproperties (except the "language" property). 401 | 402 | 403 | ```json 404 | { 405 | "version": "2.0.0", 406 | "tasks": [ 407 | { 408 | "type": "BASIC", 409 | "targets": [ 410 | "BP/SAMPLE_FILE" 411 | ], 412 | "compile": { 413 | "dataSource":"UNIDATA", 414 | "language": "UniBasic" 415 | }, 416 | "problemMatcher": [], 417 | "label": "BASIC: Build", 418 | "group": { 419 | "kind": "build", 420 | "isDefault": true 421 | } 422 | } 423 | ] 424 | } 425 | ``` 426 | 427 | It will read the language value from the basic.mvbasic.json file, with the value set to: "ud_compile_flavor" 428 | 429 | { 430 | "catalog": "direct", 431 | "arguments": "", 432 | "initialCharacter": "", 433 | "ud_compile_flavor": "Pick" 434 | } 435 | 436 | **Example 1**. Compile a single BASIC program with flavor UniBasic. 437 | 438 | { 439 | "catalog": "local", 440 | "arguments": "", 441 | "initialCharacter": "", 442 | "ud_compile_flavor": "UniBasic" 443 | } 444 | 445 | **Example 2**. Compile a single BASIC program with flavor revelation. 446 | 447 | { 448 | "catalog": "local", 449 | "arguments": "", 450 | "initialCharacter": "", 451 | "ud_compile_flavor": "revelation" 452 | } -------------------------------------------------------------------------------- /docs/usage/Completion.md: -------------------------------------------------------------------------------- 1 | ## Using Auto-Completion 2 | 3 | When editing a BASIC program, the auto-completion function can prompt and complete what is currently being edited according to the contextual environment. The completion includes: 4 | 5 | - Statements and keywords 6 | - Symbols, functions, subroutines, labels, etc; 7 | - File names and program names 8 | 9 | For some special BASIC statements, auto-completion also has some advanced functionality: 10 | 11 | - `CALL statement` 12 | 13 | If you do not connect to a MultiValue server, catalog names in CALL statements can be completed based on the currently opened account folder. Please refer to [Catalog settings](Catalog.md). 14 | 15 | If you connect to a MultiValue server, the extension can get all catalog program names from the server and list them. To connect to a MultiValue server, please refer to [Connection settings](Connection.md). 16 | 17 | - `INCLUDE statement` 18 | 19 | In the INLCUDE statement, the auto-completion function can complete the file name and program name in the statement. 20 | 21 | By default, only the file names and program names in the current account folder can be auto completed, but you can add additional account folders by modifying the configuration file, so that when you are typing INCLUDE statements, the file names and program names from the additional accounts will also be prompted. 22 | 23 | Please refer to [Accounts settings](Accounts.md) and Include section for more details. (note … no link present for Include section) 24 | 25 | -------------------------------------------------------------------------------- /docs/usage/ConfigDap.md: -------------------------------------------------------------------------------- 1 | 2 | ## Configure Debugging Binaries 3 | 4 | Please check whether this feature is supported for your U2 server and platform according [this page](./DAPRelease.md). 5 | 6 | - If yes, you need download and configure related binaries. 7 | 8 | - If not, do not change your environment. 9 | 10 | To configure the debugging related binaries, please follow below steps. 11 | 12 | ## UniVerse 13 | 14 | #### Windows 15 | 16 | 1. Copy **uddap_server** and **uddap_slave** from the package to your UniVerse **bin** folder. E.g., *C:\U2\UV\bin* 17 | 18 | 2. Verify whether the unirpcservices file contains **grpcs** service. If **grpcs** service doesn't exist, you must add it manually. Add the new service as shown below to the **unirpcservices** file: 19 | 20 | ``` 21 | grpcs * TCP/IP 0 3600 22 | ``` 23 | 24 | The 'unirpcservices' file can be found in your U2 server installation folder: for example, **C:\U2\unishared\unirpc\unirpcservices**. 25 | 26 | #### Linux 27 | 28 | 1. Copy **uddap_server** and **uddap_slave** from the package to your UniVerse **bin** folder. For example, */usr/u2/uv/bin/* 29 | 30 | 2. Verify whether the **unirpcservices** file contains the **grpcs** service. If the **grpcs** service doesn't exist, you must add it manually. Add the new service as shown below to the **unirpcservices** file: 31 | 32 | ``` 33 | grpcs * TCP/IP 0 3600 34 | ``` 35 | 36 | The **unirpcservices** file can be found in your U2 server installation folder. For example, **/usr/u2/unishared/unirpc/unirpcservices**. 37 | 38 | ## UniData 39 | 40 | #### Windows 41 | 42 | 1. Copy **uddap_server.exe** and **uddap_slave.exe** from the package to your UniData **bin** folder. E.g., *C:\U2\ud83\bin* 43 | 44 | 2. Verify whether the unirpcservices file contains **uddap_server** service. If **uddap_server** service doesn't exist, you must add it manually. Add the new service as shown below to the **unirpcservices** file: 45 | 46 | ``` 47 | uddap_server * TCP/IP 0 3600 48 | ``` 49 | 50 | The 'unirpcservices' file can be found in your U2 server installation folder: for example, **C:\U2\unishared\unirpc\unirpcservices**. 51 | 52 | #### Linux 53 | 54 | 1. Copy **uddap_server** and **uddap_slave** from the package to your UniData **bin** folder. For example, */usr/u2/ud83/bin/* 55 | 56 | 2. Verify whether the **unirpcservices** file contains the **uddap_server** service. If the **uddap_server** service doesn't exist, you must add it manually. Add the new service as shown below to the **unirpcservices** file: 57 | 58 | ``` 59 | uddap_server * TCP/IP 0 3600 60 | ``` 61 | 62 | The **unirpcservices** file can be found in your U2 server installation folder. For example, **/usr/u2/unishared/unirpc/unirpcservices**. -------------------------------------------------------------------------------- /docs/usage/Configuration.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | There are many configuration settings for the Rocket MV BASIC extension. These settings are organized into different configuration files. 4 | 5 | Press F1 to open the command window and then enter the "*Edit Configuration of Rocket MV BASIC*" command. 6 | 7 | There are three configuration files: "Database and BASIC Related Configuration", "Formatting Configuration" and "Group View Configuration". 8 | 9 | ![](../img/config_files.png) 10 | 11 | If there are multiple workspace folders, you can select the folder to edit. Configuration files in different workspace folders have no relationship or dependency. 12 | 13 | ![](../img/select_folder.png) 14 | 15 | ## Database and BASIC Related Configuration 16 | 17 | The configuration file name is "db.mvbasic.json". 18 | 19 | Following relevant configurations are included: 20 | 21 | - U2 server connection. See [U2 connection](./Connection.md) for more information. 22 | 23 | - Additional accounts. See [accounts settings](./Accounts.md) for more information. 24 | 25 | - Catalog programs configuration. See [Catalog Settings in "db.mvbasic.json" file](./Catalog.md) for more information. 26 | 27 | - Include files configuration. See [include settings](./Include.md) for more information. 28 | 29 | ## Formatting Configuration 30 | 31 | The configuration file name is "format.mvbasic.json". 32 | 33 | This configuration file contains the settings for feature Document Formatting. If you need change the formatting settings, please update the settings in this file. See [formatting settings](./Formatting.md) for more information. 34 | 35 | ## Group View Configuration 36 | 37 | The configuration file name is "groupView.mvbasic.json". 38 | 39 | This configuration file contains the settings for feature Group View. If you need change the group view behaviors, please update the settings in this file. See [group view settings](./GroupView.md) for more information. 40 | 41 | ## Catalog Configuration 42 | 43 | The configuration file name is "basic.mvbasic.json". 44 | 45 | This configuration file contains the parameters for the Catalog feature. If you need to change the catalog type, arguments, or initial character, please update the settings in this file. See [Catalog Settings in "basic.mvbasic.json" file](./Catalog.md#quick-catalog) for more information. 46 | 47 | **Note:** If either `./rmv` or `./rmvonline` configuration exists, the `basic.mvbasic.json` file will be created during the first catalog attempt. If the `./rmv` configuration does not exist, the `config/basic.mvbasic.json` file will be created when the extension is activated. 48 | 49 | ## Configuration Files 50 | 51 | There are also user level configuration files in the user profile. When you want to apply some settings to all projects of the current user, you can modify the user-level configuration files. 52 | 53 | The user level configuration files are in the the user profile folder. 54 | 55 | For Windows platforms, you can find configuration files in "C:\Users\\*yourusername*\\.rmv\config\". 56 | 57 | For Linux platforms, you can find configuration files in "/home/*yourusername*/.rmv/config/". 58 | -------------------------------------------------------------------------------- /docs/usage/Connection.md: -------------------------------------------------------------------------------- 1 | ## U2 Connection Settings 2 | 3 | The Rocket MV BASIC extension can also connect to a U2 server. Regardless of whether you are connected to a server or not, all editor functions will work as expected. But when connected to a U2 server, some new features will be enabled, and some features will be enhanced: 4 | 5 | - [Goto definition](./Definition.md) 6 | - [Auto-completion](./Completion.md) 7 | - [Catalog](./Catalog.md) 8 | - [Compile BASIC program](./Compile.md) 9 | - [Debugging BASIC program](./Debugging.md) 10 | 11 | ### Settings 12 | 13 | Please refer to [Configuration](Configuration.md) to open the configuration file. 14 | 15 | Following settings are used for U2 connection. 16 | 17 | ``` 18 | "db": { 19 | "host": "", 20 | "userName": "", 21 | "password": "", 22 | "account": "", 23 | "dataSource": "UNIVERSE", 24 | "port": 31438, 25 | "rpcName": "" 26 | }, 27 | ``` 28 | 29 | - `host`: host name or address of a U2 server. 30 | - `userName`: user name to login to the U2 server. 31 | - `password`: password to login to the U2 server. 32 | - `account`: account name of a U2 server. 33 | - `dataSource`: `UNIVERSE` or `UNIDATA`, by default is `UNIVERSE`. If open multiple workspace folders and set differnet data source in these folders' configuration files, VS Code will choose the root folder's data source as default. 34 | - `port`: port number of U2 server. For UniVerse and UniData, the port number is `31438` by default. 35 | - `rpcName`: optional. Specifies the name of the remote procedure call (RPC) to be used. Common RPC names for `UNIDATA` and `UNIVERSE` are `udcs` and `uvcs`, respectively, but custom RPC names can be configured as needed. 36 | 37 | **Note**: Please enter these settings before connecting to the server. 38 | 39 | ### Connect to Server 40 | 41 | Press F1 to open the command window and then enter the command "Connect/Disconnect U2 Server" to connect to the server. 42 | 43 | If some settings are not set in the configuration file, you will need provide these values when prompted in the command window. 44 | 45 | If you have multiple workspace folders and have configured multiple U2 accounts, you can select one account from the accounts list or input the account information manually. 46 | 47 | ![](../img/multiple_accounts.png) 48 | 49 | Same account level folder could be opened by different workspaces and connected to the U2 server separately. 50 | 51 | ### Disconnect from Server 52 | 53 | Press F1 to open the command window and then enter the Disconnect from MV Server command to disconnect to the server. 54 | 55 | ### Connection status 56 | 57 | The connection status icon is displayed in the bottom-left corner. 58 | 59 | Click the icon to connect to or disconnect from the U2 server. 60 | 61 | ![connection_status](../img/connection_status.png) -------------------------------------------------------------------------------- /docs/usage/CustomizeDoc.md: -------------------------------------------------------------------------------- 1 | ## Customize Documentation Usage 2 | 3 | You can provide your own documentation for user-defined functions / subroutines. Complete the steps below to provide your own documentation: 4 | (These instructions assume you have a user-defined function named *USERFUNC*) 5 | 6 | *Step 1*. Activate Rocket MV BASIC extension. 7 | 8 | *Step 2*. Open the documentation configuration file (".rmv/documentation/universe/custom.json" for UniVerse, or ".mvx-ide/documentation/unidata/custom.json" for UniData). 9 | 10 | *Step 3*. Add the customized function's content as illustrated below for function USERFUNC. 11 | 12 | ![](../img/documentation_custom.png) 13 | 14 | Add the function / subroutine names in the configuration file and then add its detailed documentation. 15 | 16 | - `brief`: Optional. You can add a brief description of customized function in this setting. If the detail setting is not set, this brief description will be displayed when you hover over the customized function / subroutine. 17 | 18 | 19 | - `detail`: Optional. You can add a relative path that points to a markdown file here. When you hover over the customized function / subroutine, the content in the markdown file will be displayed. 20 | 21 | ![](../img/documentation_markdown.png) 22 | 23 | **Note**: The `brief` item provides a brief description of USERFUNC if the detail setting doesn't exist. If the detail setting exists, the markdown file pointed to by this setting will be used. -------------------------------------------------------------------------------- /docs/usage/DAPRelease.md: -------------------------------------------------------------------------------- 1 | ## Debugging Binaries Release 2 | 3 | A high-performance debugging feature has been introduced in Rocket MV BASIC. 4 | 5 | **To use this feature, you need to upgrade UniVerse to version 11.4.1 or later, or upgrade UniData to version 8.3.1 or later**. If you decide not to upgrade, you can continue using the original debugging feature available on previous versions of the U2 server. 6 | 7 | Below is a detailed breakdown of the information for each release. 8 | 9 | - This high-performance debugging feature is only supported on UniVerse version 11.4.1 / UniData 8.3.1 for Windows and Linux platforms. 10 | - If you are using UniVerse 11.4.1 / UniData 8.3.1 there is no need to manually download and configure these binaries, they are already included in this release. 11 | 12 | | UniVerse Version | Windows | Linux | AIX | 13 | | ------------------ | --------- | ---------- | -------- | 14 | | 14.1.1 | ✔️ | ✔️ | ❌ | 15 | | 11.4.1 | ✔️ | ✔️ | ❌ | 16 | | < 11.4.1 | ❌ | ❌ | ❌ | 17 | 18 | | UniData Version | Windows | Linux | AIX | 19 | | ------------------ | --------- | ---------- | -------- | 20 | | 8.3.1 | ✔️ | ✔️ | ❌ | 21 | | < 8.3.1 | ❌ | ❌ | ❌ | 22 | 23 | **Please note that versions of UniVerse prior to 11.4.1 and versions of UniData prior to 8.3.1 do not support this feature and associated binaries.** 24 | 25 | ### Assets 26 | 27 | Please download dap_agent binaries from [GitHub release](https://github.com/RocketSoftware/rocket-mvbasic/releases). 28 | -------------------------------------------------------------------------------- /docs/usage/Debugging.md: -------------------------------------------------------------------------------- 1 | ## Debugging 2 | 3 | With the debugging function, users can easily debug BASIC programs, as well as observe and track the results and changes to variables for each step when running a BASIC program. 4 | 5 | The following U2 server versions and platforms are supported: 6 | 7 | ### UniVerse 8 | 9 | Versions: For offline mode debugging 11.3.2 or higher and for online mode debugging 11.4.1 and higher 10 | 11 | Platforms: Windows, Linux, AIX 12 | 13 | ### UniData 14 | 15 | Versions: For offline mode debugging 8.2.4 or higher and for online mode debugging 8.3.1 and higher 16 | 17 | Platforms: Windows, Linux, AIX 18 | 19 | **Note:** For more details, please refer [Rocket-MV-BASIC-Extension-features-support-matrix](https://my.rocketsoftware.com/RocketCommunity/s/article/Rocket-MV-BASIC-Extension-features-support-matrix). 20 | 21 | ### A high performance debugging feature 22 | 23 | A high-performance debugging feature is supported on UniVerse 11.4.1 and UniData 8.3.1. To use this feature, you must upgrade to UniVerse 11.4.1 / UniData 8.3.1 or higher version. Please see [Debugging Binaries Releases](./DAPRelease.md) for more details. 24 | 25 | ## Start Debugging 26 | 27 | **Note**: You should not debug BASIC subroutines directly, because this not allowed in UniVerse and UniData. 28 | 29 | ### Connecting to a U2 server account folder 30 | 31 | Before using the debugging feature, you must connect to a U2 server account folder firstly. Please see the [Connection section](./Connection.md) for offline mode and [Online Editing](./OnlineEditing.md) for online mode to learn how to connect to a U2 server account. 32 | 33 | **Note**: The debugging feature will not work if you only open a single BASIC program file in VS Code. You must open an account folder. 34 | 35 | ### Debugging BASIC files 36 | 37 | There are 2 methods to debug a BASIC program file: debugging without a launch file and debugging with a launch file. 38 | 39 | Before debugging, open the BASIC program first. 40 | 41 | **Note**: debugging a BASIC subroutine directly is not allowed. 42 | 43 | ### Debugging without a launch file 44 | > **Note** : 45 | > Debugging without a launch file works properly in offline mode only; in online mode, please create launch file. 46 | 47 | - Click the **Run and Debug** icon on from the left menu bar. The **Run and Debug** view will display if you have no `launch.json` file in your project. 48 | 49 | - Click the **Run and Debug** button to start debugging the currently focused BASIC program file. 50 | 51 | ![](../img/run_and_debug.png) 52 | 53 | The BASIC program file will be compiled first. 54 | For UniData, there are different compilation flavors and it will read the compile flavor from basic.mvbasic.json, with the value set to: "ud_compile_flavor". [Please see this section to set ud_compile_flavor value.](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 55 | 56 | On successful compilation, the debugging process will stop at the first runnable line of code in the program file. 57 | 58 | ### Debug with launch file 59 | 60 | You have the option to configure the type and task parameters in the launch.json file which helps VS Code know how to run and debug your code. 61 | 62 | `launch.json` file helps VSCode know how to run and debug your code. 63 | 64 | `launch.json` in MVVS has the type and task parameters, it means that VSCode is first running a task before starting the debugging process. 65 | 66 | type: The type parameter tells VS Code what type of code you're working with. Valid values are: MVBasic, Python. 67 | 68 | task: The task parameter is a step that needs to happen before debugging starts, like preparing your code. 69 | 70 | You have the option to tell VS Code which debugging settings to use in the launch.json file. 71 | 72 | In the **Run and Debug** view, click the create a `launch.json` file link. 73 | 74 | ![](../img/debug_launch_file.png) 75 | 76 | Select the **MVBasic Debug** from the Select environment dialog box. 77 | 78 | ![](../img/debug_type.png) 79 | 80 | A default debugging configuration file named launch.json is generated in directory .vscode and contains the following. 81 | 82 | ``` 83 | { 84 | "version": "0.2.0", 85 | "configurations": [ 86 | { 87 | "type": "mvbasic", 88 | "request": "launch", 89 | "name": "Launch Program", 90 | "program": "", 91 | "stopOnEntry": true, 92 | "preLaunchTask": "BASIC: Build", 93 | "dependencies": [], 94 | "arguments": "" 95 | } 96 | ] 97 | } 98 | ``` 99 | 100 | - "type": "mvbasic" is required to build BASIC program files. 101 | - "request": keep this value "launch" to launch a program. 102 | - "name": this is the name of the launch task. You can change the name to other values. 103 | - "program": if this value is empty, current focused file will be debugged. You can also set this value to another BASIC program file's absolute path. This file will be compiled before debugging. 104 | - "stopOnEntry": used to control whether the program will be stopped at the first runnable line when start debugging. Currently only true is supported. 105 | - "preLaunchTask": this is used to run pre-required task before debugging. In our extension, we use this setting to compile the BASIC program in setting "program" first. 106 | - "dependencies": put other BASIC program files' absolute paths here if they need to be compiled before debugging. For example, "C:\U2\UV\XDEMO\TEST". 107 | - "arguments": put additional debugging online· here. Please refer to your UniVerse / UniData user documentation for more details. By default, this setting doesn’t appear in the configuration file, but can be added manually if needed. 108 | 109 | >#### To enable debugging in online mode, the `tasks.json` file is required. 110 | >For online mode, create a build task as shown in [Online Editing](./OnlineEditing.md). 111 | > 112 | >For more details on task refer [Compile](./Compile.md). 113 | 114 | From the **Run and Debug** view, set the launch option to **Launch Program**. Then press the F5 button to start debugging. 115 | 116 | ![](../img/debug_launch_program.png) 117 | 118 | ## Support Operations 119 | 120 | The following debug operations are supported. 121 | 122 | >**Note** 123 | > 124 | >In online mode, the source code is accessed virtually. When debugging starts, the source code always comes from the U2 debugger service, (which is why a different file is launched for debugging). 125 | 126 | ### Setting break point 127 | 128 | When debugging starts, you can set a break point by: 129 | 130 | - Clicking the head of a line 131 | 132 | - Pressing the F9 key for an in-focus line. 133 | 134 | ![](../img/debug_set_breakpoint.png) 135 | 136 | You can find all break points in **BREAKPOINTS** panel of the **Run and Debug** view. 137 | 138 | ![](../img/debug_breakpoints_view.png) 139 | 140 | >**Note** 141 | > 142 | >In online mode, a different file is launched for debugging, so and breakpoints are applied to that file as well. As a result, the user will see the same breakpoints in the "BREAKPOINTS" view, but in two different files. 143 | > 144 | > ![](../img/online_debug_multiple_breakpoints.png) 145 | 146 | The program will stop when the process encounters a break point. 147 | 148 | **Note**: Condition breakpoints are not supported. 149 | 150 | ### Continue 151 | 152 | When the process encounters a break point, the program will stop running. You can press the F5 key or click the Continue button from the debug panel to continue running the program. 153 | 154 | **Note**: Program cannot jump out of a subroutine through this operation in UniVerse. 155 | 156 | ![](../img/debug_continue.png) 157 | 158 | ### Step over 159 | 160 | The step over function allows you to run the program line-by-line. Press the F10 button or click the Step Over button from the debug panel to run one line of the program. 161 | 162 | **Note**: Program cannot jump out of a subroutine through this operation in UniVerse. 163 | 164 | ![](../img/debug_step_over.png) 165 | 166 | ### Step into and step out 167 | 168 | These two operations are still not stable. They partially work if breakpoints are set at CALL line. Please refer [Known Issues](./KnownIssues.md). 169 | 170 | **Note**: Program cannot jump out of a subroutine through **Step Out** operation in UniVerse. 171 | 172 | ## Restart debug 173 | 174 | Click **restart** button to restart debugging process. 175 | 176 | ### Stop debugging 177 | 178 | Click the **Stop** button to stop the debugging process. 179 | 180 | ![](../img/debug_stop.png) 181 | 182 | ### View variables 183 | 184 | When debugging starts, you can view all variables in the **Run and Debug** view. 185 | 186 | You can also change a variable's value by double-clicking it in the **Run and Debug** view (this only works on UniVerse 11.4.1 / UniData 8.3.1). 187 | 188 | ![](../img/debug_variables.png) 189 | 190 | If variables have no value or have not been initialized, the variable’s value is undefined. 191 | 192 | ### Watch variables 193 | 194 | You can also add variables to the **WATCH** panel. 195 | 196 | Click the plus (+) button from the **WATCH** panel and enter the variable name to display the variable’s value. 197 | 198 | ![](../img/debug_add_watch.png) 199 | 200 | **Note**: Only variables are supported. Expressions are not supported. 201 | 202 | ### Handle input operation 203 | 204 | You can switch to the VS Code terminal to handle an INPUT statement during BASIC program running. 205 | 206 | ![](../img/debug_input.png) 207 | -------------------------------------------------------------------------------- /docs/usage/Definition.md: -------------------------------------------------------------------------------- 1 | ## Using Definition 2 | 3 | Use following methods to find a symbol's definition: 4 | 5 | - Right click a symbol then select `Goto Definition`; 6 | - Move cursor to a symbol then press F12; 7 | - Press and hold Ctrl button and click a symbol. 8 | 9 | For some special symbols, you need do some configuration before using this functionality. 10 | 11 | ### CALL Statement 12 | 13 | There are several different cases when you use `Goto Definition` on `CALL` statement / catalog programs to find its source code. 14 | 15 | #### Not Connected to U2 Server 16 | 17 | If the cataloged program is in the same folder as the currently opened file, the target file can be opened directly. 18 | 19 | If the cataloged program is in another sub-folder of the current account folder, you can do one of the following: 20 | 21 | - Set `isSearchAllDirs` to `true` in the configuration file. 22 | - Add the sub-folder name to the `programDirs` element in the configuration file. 23 | 24 | Please refer to [Catalog settings](Catalog.md) for instructions on how to setup this configuration. 25 | 26 | If the cataloged program source code is in another account folder, you can: 27 | 28 | - add the account folder to the configuration file. Please refer [Accounts settings](Accounts.md). 29 | - add catalog program mapping settings to the `programMapping` element in the configuration file. Please refer to [Catalog settings](Catalog.md) for instructions on how to setup this configuration. 30 | 31 | #### Connected to U2 Server 32 | 33 | When connected to a MultiValue server, `Goto Definition` can fetch catalog programs from the server to the local machine. Please refer to [Connection settings](Connection.md) for instructions on how to connect to a U2 server. 34 | 35 | For *local cataloged programs*, if the cataloged program name is the same as its source code file name, use Goto Definition directly. If the cataloged program name is different from its source code file name, you will need set the mapping relationship between cataloged program name and its source code name. Please refer to [Catalog settings](Catalog.md) to configure the mapping relationship. 36 | 37 | For *global cataloged programs*, you need configure the global catalog program information which includes the account name and names mapping. Please refer to [Catalog settings](Catalog.md) and [Account settings](Accounts.md) for more details. 38 | 39 | ### INCLUDE Statement 40 | 41 | If the current opened file includes some other files through the INCLUDE statement, you can use `Goto Definition` to jump to a symbol's definition in the included file. Please refer to [Include settings](Include.md) to setup the related configuration. 42 | 43 | -------------------------------------------------------------------------------- /docs/usage/Diagnostics.md: -------------------------------------------------------------------------------- 1 | # Diagnostics 2 | 3 | Diagnostics can help users find syntax and grammar errors while in the process of writing BASIC programs. A BASIC statement that contains an error is indicated with a red underscore. 4 | 5 | ![](../img/diagnostic.png) 6 | 7 | Diagnostics will also point out any variables that have been referenced before they have been defined. 8 | 9 | ![](../img/diagnostic_reference.png) 10 | -------------------------------------------------------------------------------- /docs/usage/DocumentSymbol.md: -------------------------------------------------------------------------------- 1 | ## Using Document Symbols 2 | 3 | Open a BASIC program file to view all the symbols in the current document in VS Code outline window. 4 | 5 | ![Document Symbol Outline](../img/document_symbol_outline.png) 6 | 7 | If you click a symbol in the outline window, the cursor will indicate its location. 8 | 9 | You can also use a command to find a symbol. Press Ctrl + P to open the search window and then enter @ to list all symbols in current document. 10 | 11 | ![Document Symbol Command](../img/document_symbol_command.png) 12 | 13 | Type the first few characters of a symbol in the command window to filter the results, and then click the corresponding symbol to jump to its definition location. -------------------------------------------------------------------------------- /docs/usage/FAQ.md: -------------------------------------------------------------------------------- 1 | # FAQ 2 | 3 | **Q: How do I activate the extension automatically?** 4 | 5 | **A:** By default, when open a file ends with a ".B" suffix, the extension could be activated automatically. If your files don't have such suffix, you can setup file associations to activate the extension. 6 | 7 | Press F1 to open a command line in VS Code, then enter "*Open Settings (UI)*" to open the settings page. 8 | 9 | ![](../img/start_association.png) 10 | 11 | Search "*associations*" in the Settings page and find the setting "*Files: Associations*". Add an item in this setting (the item content accepts a [glob pattern](https://en.wikipedia.org/wiki/Glob_(programming))). 12 | 13 | The item in the example image above specifies that the Rocket MV BASIC extension will be activated when any file in the BP folder is opened. 14 | 15 | 16 | **Q: I have set the files association, but when I open a BASIC program file, the language changed.** 17 | 18 | **A:** This is a new feature named "Auto Detect Language" of VS Code (since the 1.60 release). It auto detects and sets the language of your files even when you have already set files associations. You can disable this feature following the steps below: 19 | 20 | 1. Open VS Code Settings: press F1, input "setting", then select "Open Settings (UI)" 21 | 2. Search for "auto detect", and then find and disable the "Language Detection" setting. 22 | 23 | ![](../img/faq_auto_detect.png) 24 | 25 | **Q: How can I exclude specific files from a folder? For example, files start with "_".** 26 | 27 | **A:** VS Code provides a function to exclude useless files. Follow the steps below to exclude files: 28 | 29 | 1. Open VS Code Settings: press F1, input "setting", then select "Open Settings (UI)" 30 | 31 | 2. Search for "exclude", and then find the setting "Files: Exclude" 32 | 33 | ![](../img/faq_exclude.png) 34 | 35 | 3. Click "Add Pattern", and then enter a pattern that exists in the file names you want to exclude. 36 | 37 | **Q: Why sometimes the extension failed to upgrade on Windows platform?** 38 | 39 | **A:** This is because some files of the extension still being used. To resolve this issue, please follow below steps: 40 | 41 | 1. Uninstall MV BASIC extension first. 42 | 43 | 2. Close all VS Code and java processes through task manager. 44 | 45 | 3. Manually remove the MV BASIC extension directory under user profile. For example, you may find MV BASIC extension version 1.6.0 in "C:\Users\user_name\.vscode\extensions\rocketsoftware.rocket-mvbasic-1.6.0". 46 | 47 | 4. Restart VS Code and install the latest extension. 48 | 49 | **Q: Why isn’t the debugging functionality working? It was working well before.** 50 | 51 | **A:** This may be a result of the VS Code upgrade. In VS Code 1.79.x, the debugging functionality has some updates which impact our extension. If you encounter debugging issues, please try to downgrade VS Code to [version 1.78.2](https://code.visualstudio.com/updates/v1_78) (on which the debugging functionality should work well). Please refer [VS Code Compatibility](./Compatibility.md) for more details. 52 | 53 | **Q: How can I exclude specific files from the explorer view?** 54 | **A:** You can update the vscode settings file “.vscode/settings.json” to exclude files. For more details, please refer VS Code official online documentation. 55 | 56 | -------------------------------------------------------------------------------- /docs/usage/Folding.md: -------------------------------------------------------------------------------- 1 | ## Code Folding 2 | 3 | The code folding feature can be used to improve code readability for statements containing large blocks of code. 4 | 5 | The following code snippet contains code blocks for the IF statement and the ON statement. 6 | 7 | ![](../img/folding_before.png) 8 | 9 | By clicking on the code folding icon, large code blocks are folded according to the syntax of the current statement. 10 | 11 | ![](../img/folding_after.png) -------------------------------------------------------------------------------- /docs/usage/Formatting.md: -------------------------------------------------------------------------------- 1 | ## Formatting Usage 2 | 3 | There are three ways to format a document: 4 | 5 | - Document formatting: press F1 to open a command window and then enter "Format Document" to format the entire document. 6 | - Range formatting: select a part of the code and then right-click the box and select "Format Selection" to format your selection. 7 | - On typing formatting: open the VS Code settings page and search for "format on type". Select the `Editor: Format On Type` option. When this option is selected, the line of code you just finished editing will be formatted automatically after pressing Enter. 8 | 9 | ![](../img/formatting_ontype.png) 10 | 11 | The formatting related configuration file contains many formatting settings. The information below describes these settings: 12 | 13 | ### trimNewlines 14 | 15 | Trim the original multiple newlines to keep one blank line. 16 | 17 | **Note:** Not applicable for *On Type Formatting.* 18 | 19 | #### Type and Values 20 | 21 | - boolean 22 | 23 | #### Example 24 | 25 | Before: 26 | 27 | ``` 28 | CRT “HELLO” 29 | CRT “WORLD” 30 | 31 | 32 | 33 | CRT “HI” 34 | ``` 35 | 36 | After: 37 | 38 | ``` 39 | CRT “HELLO” 40 | CRT “WORLD” 41 | 42 | CRT “HI” 43 | ``` 44 | 45 | 46 | 47 | ### trimFinalNewlines 48 | 49 | Trim the final newlines down to one newline. 50 | 51 | **Note:** This option is dependent upon Visual Studio Code and will be subject to the Visual Studio Code’s setting in future releases. 52 | 53 | **Note:** Not applicable for *On Type Formatting.* 54 | 55 | #### Type and Values 56 | 57 | - boolean 58 | 59 | #### Example 60 | 61 | Before: 62 | 63 | ``` 64 | CRT “HELLO” 65 | END 66 | 67 | 68 | 69 | 70 | ``` 71 | 72 | After: 73 | 74 | ``` 75 | CRT “HELLO” 76 | END 77 | 78 | 79 | ``` 80 | 81 | 82 | 83 | ### trimTrailingWhitespace 84 | 85 | Trim the trailing white spaces of a line. 86 | 87 | #### Type and Values 88 | 89 | - boolean 90 | 91 | #### Example 92 | 93 | Before: 94 | 95 | ``` 96 | CRT “HELLO” 97 | ``` 98 | 99 | After: 100 | 101 | ``` 102 | CRT “HELLO” 103 | ``` 104 | 105 | 106 | 107 | ### insertFinalNewline 108 | 109 | Insert a newline at the end of the file if one does not exist. 110 | 111 | **Note:** Not applicable for *On Type Formatting.* 112 | 113 | #### Type and Values 114 | 115 | - boolean 116 | 117 | #### Example 118 | 119 | Before: 120 | 121 | ``` 122 | CRT “HELLO” 123 | ``` 124 | 125 | After: 126 | 127 | ``` 128 | CRT “HELLO” 129 | 130 | ``` 131 | 132 | 133 | 134 | ### multiStatementsOneLine 135 | 136 | Specify whether to allow multiple statements on the same line. 137 | 138 | **Note:** this option will not take effect for line clauses when *clause.useBlock* is *false*. To split statements in a line clause, set *clause.useBlock* to *true*. 139 | 140 | **Note:** Not applicable for *On Type Formatting.* 141 | 142 | #### Type and Values 143 | 144 | - boolean 145 | 146 | #### Example 1 147 | 148 | When *clause.useBlock* is set to *false*, and *multiStatementsOneLine* set to *false*. 149 | 150 | Before: 151 | 152 | ``` 153 | CRT “HELLO”; CRT “WORLD” 154 | IF CLAUSE.USEBLOCK = FALSE THEN CRT “HI”; CRT “WORLD” 155 | ``` 156 | 157 | After: 158 | 159 | ``` 160 | CRT “HELLO” 161 | CRT “WORLD” 162 | IF CLAUSE.USEBLOCK = FALSE THEN CRT “HI”; CRT “WORLD” 163 | ``` 164 | 165 | #### Example 2 166 | 167 | When *clause.useBlock* is set to *true*, and *multiStatementsOneLine* set to *false*. 168 | 169 | Before: 170 | 171 | ``` 172 | CRT “HELLO”; CRT “WORLD” 173 | IF CLAUSE.USEBLOCK = TRUE THEN CRT “HI”; CRT “WORLD” 174 | ``` 175 | 176 | After: 177 | 178 | ``` 179 | CRT “HELLO” 180 | CRT “WORLD” 181 | IF CLAUSE.USEBLOCK = TRUE THEN 182 | CRT “HI” 183 | CRT “WORLD” 184 | END 185 | ``` 186 | 187 | 188 | 189 | ### alignInlineComments 190 | 191 | Specify the column to which the inline comments are aligned when possible. 192 | 193 | #### Type and Values 194 | 195 | - integer 196 | 197 | #### Example 198 | 199 | If it is set to *30*, 200 | 201 | Before: 202 | 203 | ``` 204 | CRT “HELLO” ;* HELLO 205 | CRT “WORLD” ;* WORLD 206 | CRT “!!” ;* !! 207 | ``` 208 | 209 | After: 210 | 211 | ``` 212 | CRT “HELLO” ;* HELLO 213 | CRT “WORLD” ;* WORLD 214 | CRT “!!” ;* !! 215 | ``` 216 | 217 | 218 | 219 | ### spacing.operator 220 | 221 | Specify the number of whitespaces around binary operators such as “+”, ”-“, ”:”, etc. 222 | 223 | #### Type and Values 224 | 225 | - integer 226 | 227 | #### Example 228 | 229 | If it is set to *1*, 230 | 231 | Before: 232 | 233 | ``` 234 | A = B+C 235 | A = B-C 236 | A = B:C 237 | ``` 238 | 239 | After: 240 | 241 | ``` 242 | A = B + C 243 | A = B – C 244 | A = B : C 245 | ``` 246 | 247 | 248 | 249 | ### spacing.semicolon 250 | 251 | Specify the number of whitespaces after a semicolon delimiter between statements on the same line. 252 | 253 | #### Type and Values 254 | 255 | - integer 256 | 257 | #### Example 258 | 259 | If it is set to *1*, 260 | 261 | Before: 262 | 263 | ``` 264 | CRT “HELLO”;CRT “WORLD” 265 | ``` 266 | 267 | After: 268 | 269 | ``` 270 | CRT “HELLO”; CRT “WORLD” 271 | ``` 272 | 273 | 274 | 275 | ### spacing.comma 276 | 277 | Specify the number of whitespaces after a comma delimiter in a parameter list. 278 | 279 | #### Type and Values 280 | 281 | - integer 282 | 283 | #### Example 284 | 285 | If it is set to *1*, 286 | 287 | Before: 288 | 289 | ``` 290 | CALL SAY(HELLO,WORLD) 291 | ``` 292 | 293 | After: 294 | 295 | ``` 296 | CALL SAY(HELLO, WORLD) 297 | ``` 298 | 299 | 300 | 301 | ### spacing.assignment 302 | 303 | Specify the number of whitespaces around assignment symbols such as “=”, “+=”, “:=”, etc 304 | 305 | #### Type and Values 306 | 307 | - integer 308 | 309 | #### Example 310 | 311 | If it is set to *1*, 312 | 313 | Before: 314 | 315 | ``` 316 | A=B 317 | A+=B 318 | A:=B 319 | ``` 320 | 321 | After: 322 | 323 | ``` 324 | A = B 325 | A += B 326 | A := B 327 | ``` 328 | 329 | 330 | 331 | ### spacing.parentheses 332 | 333 | Specify the number of whitespaces after the open parentheses and before the close parentheses for a parameter list or matrix reference. 334 | 335 | #### Type and Values 336 | 337 | - integer 338 | 339 | #### Example 340 | 341 | If it is set to *1*, 342 | 343 | Before: 344 | 345 | ``` 346 | CALL SAY(HELLO, WORLD) 347 | ``` 348 | 349 | After: 350 | 351 | ``` 352 | CALL SAY( HELLO, WORLD ) 353 | ``` 354 | 355 | 356 | 357 | ### spacing.squareBrackets 358 | 359 | Specify the number of whitespaces after the open square bracket and before the close square bracket for a parameter list or matrix reference. 360 | 361 | #### Type and Values 362 | 363 | - integer 364 | 365 | #### Example 366 | 367 | If it is set to *1*, 368 | 369 | Before: 370 | 371 | ``` 372 | PRINT A["#", 4, 1] 373 | ``` 374 | 375 | After: 376 | 377 | ``` 378 | PRINT A[ "#", 4, 1 ] 379 | ``` 380 | 381 | 382 | 383 | ### spacing.curlyBrackets 384 | 385 | Specify the number of whitespaces after the open curly bracket and before the close curly bracket for a parameter list or matrix reference. 386 | 387 | #### Type and Values 388 | 389 | - integer 390 | 391 | #### Example 392 | 393 | If it is set to *1*, 394 | 395 | Before: 396 | 397 | ``` 398 | CALL SAY{HELLO, WORLD} 399 | ``` 400 | 401 | After: 402 | 403 | ``` 404 | CALL SAY{ HELLO, WORLD } 405 | ``` 406 | 407 | 408 | 409 | ### spacing.angleBrackets 410 | 411 | Specify the number of whitespaces after the open angle bracket and before the close angle bracket for dynamic arrays. 412 | 413 | #### Type and Values 414 | 415 | - integer 416 | 417 | #### Example 418 | 419 | If it is set to *1*, 420 | 421 | Before: 422 | 423 | ``` 424 | VALUE = DYNARRAY<1, 2> 425 | ``` 426 | 427 | After: 428 | 429 | ``` 430 | VALUE = DYNARRAY< 1, 2 > 431 | ``` 432 | 433 | 434 | 435 | ### style.operator 436 | 437 | Specify whether to use a symbol or keyword for operators such as *GT*, *LE*. 438 | 439 | #### Type and Values 440 | 441 | - string 442 | 443 | - “*Symbol*”: use symbols such as >, <, # 444 | - “*keyword*”: use keywords such as *LT*, *GT*, *NE* 445 | - “*keep*”: keep the original form. 446 | 447 | #### Example 448 | 449 | If it is set to “*keyword*”, 450 | 451 | Before: 452 | 453 | ``` 454 | IF A > B THEN CRT “HELLO WORLD” 455 | ``` 456 | 457 | After: 458 | 459 | ``` 460 | IF A GT B THEN CRT “HELLO WORLD” 461 | ``` 462 | 463 | 464 | 465 | ### style.keyword 466 | 467 | Specify whether to use the full name or abbreviated name for keywords that support abbreviation. 468 | 469 | #### Type and Values 470 | 471 | - string 472 | - “*full*”: use full name such as *EQUATE*. 473 | - “*abbr*”: use keyword such as *EQU*. 474 | - “*keep*”: keep the original form. 475 | 476 | 477 | #### Example 478 | 479 | If it is set to “*abbr*”, 480 | 481 | Before: 482 | 483 | ``` 484 | EQUATE HELLO LITERALLY “HI” 485 | ``` 486 | 487 | After: 488 | 489 | ``` 490 | EQU HELLO LIT “HI” 491 | ``` 492 | 493 | 494 | 495 | ### style.commentMark 496 | 497 | Specify the style of comment mark. 498 | 499 | #### Type and Values 500 | 501 | - string 502 | 503 | - “*rem*”: use *rem* for as comment mark. 504 | 505 | - “*”: use * as comment mark. 506 | 507 | - “!”: use ! as comment mark. 508 | 509 | - “$*”: use $* as comment mark. 510 | 511 | 512 | #### Example 513 | 514 | If it is set to “*rem*”, 515 | 516 | Before: 517 | 518 | ``` 519 | * comment line 520 | A = B ;* inline comment 521 | ``` 522 | 523 | After: 524 | 525 | ``` 526 | REM comment line 527 | A = B ;REM inline comment 528 | ``` 529 | 530 | 531 | 532 | ### style.keywordCase 533 | 534 | Specify the case for the keywords. 535 | 536 | #### Type and Values 537 | 538 | - string 539 | 540 | - “*uppercase*”: Use upper case for keywords like *IF* 541 | 542 | - “*lowercase*”: use lower case for keywords such as *if*. 543 | 544 | - “*titlecase*”: use title case for keywords such as *If*. 545 | 546 | - “*keep*”: keep the original form. 547 | 548 | 549 | #### Example 550 | 551 | If it is set to *lowercase*, 552 | 553 | Before: 554 | 555 | ``` 556 | IF A = B THEN 557 | CRT “Hello World” 558 | END 559 | ``` 560 | 561 | After: 562 | 563 | ``` 564 | if A = B then 565 | crt “Hello World” 566 | end 567 | ``` 568 | 569 | 570 | 571 | ### indent.base 572 | 573 | Specify the number of TAB’s to use as the base indentation for all statements except: 574 | 575 | - Labels 576 | 577 | - Directives (see *indent.directive*) 578 | 579 | - *PROGRAM*, *SUBROUTINE*, *FUNCTION* Statements 580 | 581 | - *END* statements (not for block end) 582 | 583 | - Comment (see *indent.commentLine*) 584 | 585 | 586 | #### Type and Values 587 | 588 | - integer 589 | 590 | 591 | #### Example 592 | 593 | With *indent.base* set to 1 and in Visual Studio Code, *tabSize* is set to 4, 594 | 595 | Before: 596 | 597 | ``` 598 | SUBROUTINE GREETING(HI, NAME) 599 | CRT HI 600 | CRT NAME 601 | WELCOME: 602 | CRT “WELCOME” 603 | END 604 | ``` 605 | 606 | After: 607 | 608 | ``` 609 | SUBROUTINE GREETING(HI, NAME) 610 | CRT HI 611 | CRT NAME 612 | WELCOME: 613 | CRT “WELCOME” 614 | END 615 | ``` 616 | 617 | 618 | 619 | ### indent.block 620 | 621 | Specify whether to indent statements in block clauses. The spaces for each level of indentation is configured by the *tabSize* in the Visual Studio Code. 622 | 623 | #### Types and Values 624 | 625 | - boolean 626 | 627 | 628 | #### Example 629 | 630 | If it is set to *true*, 631 | 632 | Before: 633 | 634 | ``` 635 | IF A = B THEN 636 | CRT “HELLO” 637 | CRT “WORLD” 638 | END 639 | ``` 640 | 641 | After: 642 | 643 | ``` 644 | IF A = B THEN 645 | CRT “HELLO” 646 | CRT “WORLD” 647 | END 648 | ``` 649 | 650 | 651 | 652 | ### indent.commentLine 653 | 654 | Whether to indent comment lines as statements. If set to *true*, the comment line will be indented the same as the statement following the comment. 655 | 656 | #### Type and Values 657 | 658 | - boolean 659 | 660 | 661 | #### Example 662 | 663 | If it is set to *true*, 664 | 665 | Before: 666 | ``` 667 | * COMMENT LINE 1 668 | IF A THEN 669 | * COMMENT LINE 2 670 | CRT “HI WORLD” 671 | END 672 | ``` 673 | 674 | After: 675 | ``` 676 | * COMMENT LINE 1 677 | IF A THEN 678 | * COMMENT LINE 2 679 | CRT “HI WORLD” 680 | END 681 | ``` 682 | 683 | 684 | 685 | ### indent.directive 686 | 687 | Specify whether to indent the directives as statements. 688 | 689 | #### Type and Values 690 | 691 | - boolean 692 | 693 | 694 | #### Example 695 | 696 | If it is set to *true*, 697 | 698 | Before: 699 | 700 | ``` 701 | $INCLUDE INC GREETING.H 702 | CRT ‘HELLO’ 703 | ``` 704 | 705 | After: 706 | 707 | ``` 708 | $INCLUDE INC GREETING.H 709 | CRT ‘HELLO’ 710 | ``` 711 | 712 | 713 | 714 | ### indent.clause 715 | 716 | If a clause is starting at a new line, then this option controls whether to indent whole clause (including the clause keyword). 717 | 718 | #### Type and Values 719 | 720 | - boolean 721 | 722 | 723 | #### Example 724 | 725 | If it is set to *true*, 726 | 727 | Before: 728 | 729 | ``` 730 | OPEN FILENAME TO FILEVAR 731 | ON ERROR 732 | CRT “ERROR” 733 | END 734 | THEN 735 | CRT “GOOD” 736 | END 737 | ELSE 738 | CRT “BAD” 739 | END 740 | ``` 741 | 742 | After: 743 | 744 | ``` 745 | OPEN FILENAME TO FILEVAR 746 | ON ERROR 747 | CRT “ERROR” 748 | END 749 | THEN 750 | CRT “GOOD” 751 | END 752 | ELSE 753 | CRT “BAD” 754 | END 755 | ``` 756 | 757 | 758 | 759 | ### clause.useBlock 760 | 761 | Specify to always use a block for clauses, 762 | 763 | **Note:** Not applicable for *On Type Formatting.* 764 | 765 | #### Type and Values 766 | 767 | - boolean 768 | 769 | 770 | #### Example 771 | 772 | If it is set to *true*, 773 | 774 | Before: 775 | 776 | ``` 777 | IF A = B THEN CRT “HI”; CRT “ WORLD”; 778 | ``` 779 | 780 | After: 781 | 782 | ``` 783 | IF A = B THEN 784 | CRT “HI”; CRT “ WORLD” 785 | END 786 | ``` 787 | 788 | 789 | 790 | ### clause.addBlankLines 791 | 792 | For block clauses, always add a blank line before and after the block. 793 | 794 | **Note:** Not applicable for *On Type Formatting* 795 | 796 | #### Type and Values 797 | 798 | - boolean 799 | 800 | 801 | #### Example 802 | 803 | If it is set to *true*, 804 | 805 | Before: 806 | 807 | ``` 808 | IF A = B THEN 809 | CRT “HI” 810 | CRT “ WORLD” 811 | END 812 | ``` 813 | 814 | After: 815 | 816 | ``` 817 | IF A = B THEN 818 | 819 | CRT “HI” 820 | CRT “ WORLD” 821 | 822 | END 823 | ``` 824 | 825 | 826 | 827 | ### clause.atNewline 828 | 829 | Specify to always ensure that clause keywords (*THEN/ELSE/LOCKED/ON ERROR*) start at a new line. 830 | 831 | **Note:** Not applicable for *On Type Formatting.* 832 | 833 | #### Type and Values 834 | 835 | - boolean 836 | 837 | 838 | #### Example 839 | 840 | If it is set to *true*, 841 | 842 | Before: 843 | 844 | ``` 845 | IF A = B THEN 846 | CRT “HI” 847 | CRT “WORLD” 848 | END 849 | ``` 850 | 851 | After: 852 | 853 | ``` 854 | IF A = B 855 | THEN 856 | CRT “HI” 857 | CRT “WORLD” 858 | END 859 | ``` 860 | 861 | 862 | 863 | ### routine.labelPattern 864 | 865 | Specify a pattern for labels. A Statement’s indentation under these labels is the same as subroutines. For other statements, the indentation is the same as the main routine. 866 | 867 | **Note**: If this value is left empty, all statements under the labels use the same indentation as subroutines except for the first label. 868 | 869 | #### Type and Values 870 | 871 | - string 872 | 873 | 874 | The pattern follows GLOB rule. 875 | 876 | #### Example 877 | 878 | If set to *LABEL**, 879 | 880 | Before: 881 | 882 | ``` 883 | MAIN: 884 | NULL 885 | RETURN 886 | 887 | LABEL1: 888 | NULL 889 | RETURN 890 | 891 | LABEL2: 892 | NULL 893 | RETURN 894 | 895 | FINAL: 896 | NULL 897 | RETURN 898 | ``` 899 | 900 | After: 901 | 902 | ``` 903 | MAIN: 904 | NULL 905 | RETURN 906 | 907 | LABEL1: 908 | NULL 909 | RETURN 910 | 911 | LABEL2: 912 | NULL 913 | RETURN 914 | 915 | FINAL: 916 | NULL 917 | RETURN 918 | ``` 919 | 920 | -------------------------------------------------------------------------------- /docs/usage/GaraSign.md: -------------------------------------------------------------------------------- 1 | # GaraSign - Code Signing 2 | 3 | GaraSign is Rocket's new tool for code signing and verifying the detached signatures. Please follow the steps below: 4 | 5 | ## Verify Command 6 | 7 | ```bash 8 | openssl dgst -verify -signature 9 | ``` 10 | 11 | ### Below is detailed information on how to execute the verify command: 12 | 13 | 1. Extract the **signature file** and **public key** files from the **'rocket-mvbasic-2.5.1_sign.zip'** zip file. 14 | 15 | 2. Unzip the **'rocket-mvbasic-2.5.1_sign.zip'** zip file and execute the commands below for verification: 16 | 17 | ```bash 18 | openssl dgst -verify rocket_mv.pem.pub.key -signature rocket-mvbasic-2.5.1.vsix.sig rocket-mvbasic-2.5.1.vsix 19 | 20 | Verified OK 21 | ``` 22 | 23 | ```bash 24 | openssl dgst -verify rocket_mv.pem.pub.key -signature uvdap-uv1421-linux.tar.gz.sig uvdap-uv1421-linux.tar.gz 25 | 26 | Verified OK 27 | ``` 28 | 29 | ```bash 30 | openssl dgst -verify rocket_mv.pem.pub.key -signature uvdap-uv1421-windows.zip.sig uvdap-uv1421-windows.zip 31 | 32 | Verified OK 33 | ``` 34 | 35 | 3. Failed use cases: 36 | 37 | ```bash 38 | openssl dgst -verify rocket_mv.pem.pub.key -signature rocket-mvbasic-2.5.1.vsix.sig rocket-mvbasic-2.5.1.vsix 39 | 40 | Verification Failure 41 | ``` -------------------------------------------------------------------------------- /docs/usage/GroupView.md: -------------------------------------------------------------------------------- 1 | ## Using Auto Group View 2 | 3 | ### Introduction 4 | 5 | The auto-group view function is used to combine files that have similar names into groups. This allows you to organize file lists with more concise groupings. You can also customize group content and hide unnecessary files. 6 | 7 | ### Configuration 8 | 9 | In each workspace folder, you can specify source code directories and add customized groups by modifying the configuration file *groupView.mvbasic.json*. 10 | 11 | If no customized groups are added, a default rule will be used instead. Note that this default rule can also be changed. 12 | 13 | If a source code directory is not specified, the current opened folder will be used as the source code directory. Folders will not be displayed in the group view unless they are specified as source directories. 14 | 15 | Group view related settings are set from the "groupView" section of the configuration file. 16 | 17 | If you make changes to the configuration file, refresh the group view to make the change take effect. 18 | 19 | ### Ignore files list 20 | 21 | You can specify which files to ignore (not be displayed in the group view) from the "ignore" section in "groupView". 22 | 23 | Here is a sample configuration: 24 | 25 | ``` 26 | "ignore": [ 27 | "VOC", 28 | "D_*", 29 | "BP/SAMPLE" 30 | ] 31 | ``` 32 | 33 | The following file specification methods can be used in the "ignore" section: 34 | 35 | - File names: for example, "VOC", "D_VOC". 36 | - Using the wildcard character: for example, "D**" specifies that all files that start with "D*" in the current directory will be ignored. 37 | - Using a relative path: for example, if the current opened folder is "C:\U2\UV\XDEMO", then "BP/SAMPLE" specifies that "C:\U2\UV\XDEMO\BP\SAMPLE" will not be displayed in the group view. Note that in this example, "BP" should be configured as the source code folder. 38 | 39 | ### Default auto-group rule 40 | 41 | If you do not add customized groups in the configuration file, the auto-group view function will use a default rule to organize the files and create groups in current opened folder. 42 | 43 | Here is the `default` configuration: 44 | 45 | ``` 46 | "default": { 47 | "delimiter": ".", 48 | "level": 2 49 | } 50 | ``` 51 | 52 | `delimiter` specifies the character(s) to use to separate the file names. For example, if specifying the "." delimiter, the file "SAMPLE.BASIC.PROGRAM" is separated to 3 parts: "SAMPLE", "BASIC" and "PROGRAM". 53 | 54 | Both single character and multiple character delimiters are supported in "delimiter", but for readability, we recommend using only single character. 55 | 56 | `level` specifies how to combine group names based on the separated parts of the file names. 57 | 58 | For example, there are three files: "SAMPLE.BASIC.FILE", "SAMPLE.BASIC.CODE" and "SAMPLE.BASIC.PROGRAM". These three files all have a uniform file name format in the first two parts of the files: "SAMPLE.BASIC". 59 | 60 | These can be placed into one group. 61 | 62 | If "level" is set to 2, then these will be placed into the group "SAMPLE.BASIC". If "level" is set to 1, then these will be placed into the group "SAMPLE". 63 | 64 | As you can see, "level" specifies that the default group name contains the number of the same parts in file names. If "level" is set to an invalid number (for example, -1), then default value of 2 is used instead. 65 | 66 | Files that do not have similar name formats will not be placed into any groups. 67 | 68 | ### Source directories and customized groups 69 | 70 | In the `groups` section, you can add source code directories and customize groups. 71 | 72 | Here is a sample configuration: 73 | 74 | ``` 75 | "groups": [ 76 | { 77 | "sourceDir": "PARENT/BP" 78 | } 79 | ] 80 | ``` 81 | 82 | You can add a source code folder by adding an element in `groups`. Use `sourceDir` to specify the source code folder name or a relative path. Multiple source code folders can be specified. 83 | 84 | If no source code folder is specified, or if there is only one source code folder configured, the source code folder name will be omitted. 85 | 86 | If there are no customized groups in the source code folder, the default rule will be applied. 87 | 88 | Here is a sample configuration for adding customized groups: 89 | 90 | ``` 91 | "groups": [ 92 | { 93 | "sourceDir": "PARENT/BP", 94 | "groupName": "SAMPLE", 95 | "include": [ 96 | "SAMPLE.*" 97 | ], 98 | "exclude": [ 99 | "SAMPLE.BASIC.CODE" 100 | ] 101 | } 102 | ] 103 | ``` 104 | 105 | - `groupName` specifies the customized group name. 106 | - `include` specifies which files will be included in this group. 107 | - `exclude` specifies which files should be excluded from this group. Note that when files are excluded from a group, they can alternatively be placed into other groups. 108 | 109 | If you need to add multiple groups into one source code folder, add multiple element items in `groups`. For example: 110 | 111 | ``` 112 | "groups": [ 113 | { 114 | "sourceDir": "PARENT/BP", 115 | "groupName": "SAMPLE", 116 | "include": [ 117 | "SAMPLE.*" 118 | ], 119 | "exclude": [ 120 | "SAMPLE.BASIC.CODE" 121 | ] 122 | }, 123 | { 124 | "sourceDir": "PARENT/BP", 125 | "groupName": "SAMPLE2", 126 | "include": [ 127 | "TEST.*" 128 | ] 129 | } 130 | ] 131 | ``` 132 | 133 | In this example, two customized groups (SAMPLE, SAMPLE2) are added to the source code folder "PARENT/BP". 134 | 135 | **Note**: one file can only be placed into one group. This means that if you were to specify that a file be included in multiple different groups, it would only be added to the first specified group. 136 | 137 | ### Multiple workspace folders support 138 | 139 | If there are multiple workspace folders, workspace folder names will be displayed in the group view, and group view configuration files for each workspace folders are separated. Please refer to **Exmaple 4** for more details. 140 | 141 | ### Examples 142 | 143 | The samples below illustrate how to configure the auto-group view function. 144 | 145 | #### Example 1 146 | 147 | In this example, the default rule’s delimiter is changed from "." to "_". 148 | 149 | The directory structure of the opened folder is: 150 | 151 | ``` 152 | DEMO/ 153 | |- SAMPLE_BASIC_FILE_1 154 | |- SAMPLE_BASIC_FILE_2 155 | |- SAMPLE_BASIC_FILE_3 156 | |- SAMPLE_MENU_FILE_1 157 | |- SAMPLE_MENU_FILE_2 158 | |- SAMPLE_FILE 159 | |- SAMPLE.CODE 160 | ``` 161 | 162 | The configuration for group view is: 163 | 164 | ``` 165 | "groupView": { 166 | "default": { 167 | "delimiter": "_", 168 | "level": 2 169 | } 170 | } 171 | ``` 172 | 173 | In the auto-group result, files with names that contain "_" will be grouped automatically. The result is shown below: 174 | 175 | ``` 176 | SAMPLE_BASIC 177 | |- SAMPLE_BASIC_FILE_1 178 | |- SAMPLE_BASIC_FILE_2 179 | |- SAMPLE_BASIC_FILE_3 180 | | 181 | SAMPLE_MENU 182 | |- SAMPLE_MENU_FILE_1 183 | |- SAMPLE_MENU_FILE_2 184 | | 185 | SAMPLE.CODE 186 | SAMPLE_FILE 187 | ``` 188 | 189 | 190 | 191 | #### Example 2 192 | 193 | In this example, a source code directory and a customized group are specified in the settings. 194 | 195 | The directory structure of the opened folder is: 196 | 197 | ``` 198 | DEMO/ 199 | |- BP1/ 200 | | |- SAMPLE.BASIC.FILE_1 201 | | |- SAMPLE.BASIC.FILE_2 202 | | |- SAMPLE.CODE.FILE_1 203 | | |- SAMPLE.CODE.FILE_2 204 | | 205 | |- BP2/ 206 | | |- SAMPLE.BASIC.FILE 207 | | 208 | |- SAMPLE.FILE 209 | ``` 210 | 211 | Below is the configuration file content: 212 | 213 | ``` 214 | "groupView": { 215 | "default": { 216 | "delimiter": ".", 217 | "level": 2 218 | }, 219 | "groups": [ 220 | { 221 | "sourceDir": "BP1", 222 | "groupName": "SAMPLE", 223 | "include": [ 224 | "SAMPLE.BASIC.*" 225 | ] 226 | } 227 | ] 228 | } 229 | ``` 230 | 231 | In the auto-group result below, groups will be displayed, but the source code folder "BP1" will not. "SAMPLE" group is a customized group, and "SAMPLE.CODE" is generated based on the default auto-group rule. 232 | 233 | ``` 234 | SAMPLE 235 | |- SAMPLE.BASIC.FILE_1 236 | |- SAMPLE.BASIC.FILE_2 237 | | 238 | SAMPLE.CODE 239 | |- SAMPLE.CODE.FILE_1 240 | |- SAMPLE.CODE.FILE_2 241 | ``` 242 | 243 | 244 | 245 | #### Example 3 246 | 247 | In this example, there are multiple source code directories and customized groups. 248 | 249 | The directory structure of opened folder is: 250 | 251 | ``` 252 | DEMO/ 253 | |- BP1/ 254 | | |- SAMPLE.BASIC.FILE_1 255 | | |- SAMPLE.BASIC.FILE_2 256 | | |- SAMPLE.CODE.FILE_1 257 | | |- SAMPLE.CODE.FILE_2 258 | | 259 | |- BP2/ 260 | | |- SAMPLE.CODE.FILE_3 261 | | |- SAMPLE.CODE.FILE_4 262 | | 263 | |- SAMPLE.FILE 264 | ``` 265 | 266 | The configuration for group view is: 267 | 268 | ``` 269 | "groupView": { 270 | "ignore": [ 271 | ], 272 | "default": { 273 | "delimiter": ".", 274 | "level": 2 275 | }, 276 | "groups": [ 277 | { 278 | "sourceDir": "BP1", 279 | "groupName": "BASIC", 280 | "include": [ 281 | "SAMPLE.BASIC.*" 282 | ] 283 | }, 284 | { 285 | "sourceDir": "BP1", 286 | "groupName": "CODE", 287 | "include": [ 288 | "SAMPLE.CODE.*" 289 | ] 290 | }, 291 | { 292 | "sourceDir": "BP2" 293 | } 294 | ] 295 | } 296 | ``` 297 | 298 | In the configuration file, there are different groups which are filled with different elements of the "groups" section. The auto-group result is shown below: 299 | 300 | ``` 301 | BP1 302 | |- BASIC 303 | | |- SAMPLE.BASIC.FILE_1 304 | | |- SAMPLE.BASIC.FILE_2 305 | | 306 | |- CODE 307 | |- SAMPLE.CODE.FILE_1 308 | |- SAMPLE.CODE.FILE_2 309 | BP2 310 | |- SAMPLE.CODE 311 | |- SAMPLE.CODE.FILE_3 312 | |- SAMPLE.CODE.FILE_4 313 | ``` 314 | 315 | 316 | #### Example 4 317 | 318 | In this example, there are three workspace folders, and each workspace folder has different group view settings. 319 | 320 | The directory structure of the opened folder is: 321 | 322 | ``` 323 | DEMO1/ 324 | |- BP/ 325 | | |- SAMPLE.BASIC.FILE_1 326 | | |- SAMPLE.BASIC.FILE_2 327 | | |- SAMPLE.CODE.FILE_1 328 | | |- SAMPLE.CODE.FILE_2 329 | DEMO2/ 330 | |- BP/ 331 | | |- SAMPLE.BASIC.FILE_1 332 | | |- SAMPLE.BASIC.FILE_2 333 | | |- SAMPLE.CODE.FILE_1 334 | | |- SAMPLE.CODE.FILE_2 335 | DEMO3/ 336 | |- BP/ 337 | | |- SAMPLE.BASIC.FILE_1 338 | | |- SAMPLE.BASIC.FILE_2 339 | | |- SAMPLE.CODE.FILE_1 340 | | |- SAMPLE.CODE.FILE_2 341 | ``` 342 | 343 | The group view configuration in the workspace folder DEMO1 is illustrated below: 344 | 345 | ``` 346 | "groupView": { 347 | "ignore": [ 348 | ".rmv" 349 | ], 350 | "default": { 351 | "delimiter": ".", 352 | "level": "2" 353 | }, 354 | 355 | "groups": [ 356 | { 357 | "sourceDir": "BP" 358 | } 359 | ] 360 | } 361 | ``` 362 | 363 | The group view configuration in the workspace folder DEMO2 is illustrated below: 364 | 365 | ``` 366 | "groupView": { 367 | "ignore": [ 368 | ".rmv" 369 | ], 370 | "default": { 371 | "delimiter": ".", 372 | "level": "2" 373 | }, 374 | 375 | "groups": [ 376 | { 377 | "groupName": "ALL", 378 | "sourceDir": "BP", 379 | "include": [ 380 | "*.*" 381 | ] 382 | } 383 | ] 384 | } 385 | ``` 386 | 387 | The group view configuration in the workspace folder DEMO3 is illustrated below: 388 | 389 | ``` 390 | "groupView": { 391 | "ignore": [ 392 | ".rmv" 393 | ], 394 | "default": { 395 | "delimiter": ".", 396 | "level": "2" 397 | }, 398 | 399 | "groups": [ 400 | { 401 | "groupName": "BASIC", 402 | "sourceDir": "BP", 403 | "include": [ 404 | "SAMPLE.BASIC.*" 405 | ] 406 | } 407 | ] 408 | } 409 | ``` 410 | 411 | The group view would be: 412 | 413 | ``` 414 | DEMO1/ 415 | |- SAMPLE.BASIC/ 416 | | |- SAMPLE.BASIC.FILE_1 417 | | |- SAMPLE.BASIC.FILE_2 418 | |- SAMPLE.CODE/ 419 | | |- SAMPLE.CODE.FILE_1 420 | | |- SAMPLE.CODE.FILE_2 421 | DEMO2/ 422 | |- ALL/ 423 | | |- SAMPLE.BASIC.FILE_1 424 | | |- SAMPLE.BASIC.FILE_2 425 | | |- SAMPLE.CODE.FILE_1 426 | | |- SAMPLE.CODE.FILE_2 427 | DEMO3/ 428 | |- BASIC/ 429 | | |- SAMPLE.BASIC.FILE_1 430 | | |- SAMPLE.BASIC.FILE_2 431 | |- SAMPLE.CODE/ 432 | | |- SAMPLE.CODE.FILE_1 433 | | |- SAMPLE.CODE.FILE_2 434 | ``` -------------------------------------------------------------------------------- /docs/usage/Hover.md: -------------------------------------------------------------------------------- 1 | ## Hover Usage 2 | 3 | Hover your mouse pointer over a BASIC statement or a keyword to see its brief description. 4 | 5 | You can add customized descriptions to user defined functions, subroutines, or labels. Please refer to [Customized Documentation](CustomizeDoc.md) for more details. -------------------------------------------------------------------------------- /docs/usage/Include.md: -------------------------------------------------------------------------------- 1 | ## Include Settings 2 | 3 | When a BASIC program includes some other files by using the `INCLUDE` statement, you can update the "includeMapping" setting in the configuration file so that the included file is referenced correctly. 4 | 5 | Please refer to [Configuration](Configuration.md) for information on opening database related configuration files. 6 | 7 | ```json 8 | "includeMapping": [ 9 | { 10 | "includeFile": "", 11 | "account": "", 12 | "fileName": "" 13 | } 14 | ] 15 | ``` 16 | 17 | - `includeFile`: the file name in the `INCLUDE` statement. 18 | - `account`: account folder name. Please refer to [Accounts settings](Accounts.md) to add account folders. 19 | - `fileName`: file folder name. The file folder should contain BASIC programs. 20 | 21 | ### Examples 22 | 23 | Here are some examples to configure "includeMapping". 24 | 25 | **Example 1** 26 | 27 | Map folder "BP" in current account folder as "MAP_INC". BASIC statement may like: 28 | 29 | ``` 30 | $INCLUDE MAP_INC HEADER_NAME 31 | ``` 32 | 33 | The configuration is: 34 | 35 | ```json 36 | "includeMapping": [ 37 | { 38 | "includeFile": "MAP_INC", 39 | "fileName": "BP" 40 | } 41 | ] 42 | ``` 43 | 44 | **Example 2** 45 | 46 | If BASIC program includes file from another folder, for example, map "BP" in account "DEMO" as "MAP_INC", then the configuration is: 47 | 48 | ```json 49 | "includeMapping": [ 50 | { 51 | "includeFile": "MAP_INC", 52 | "account": "DEMO", 53 | "fileName": "BP" 54 | } 55 | ] 56 | ``` 57 | 58 | **Example 3** 59 | 60 | Add multiple items in "includeMapping". 61 | 62 | ```json 63 | "includeMapping": [ 64 | { 65 | "includeFile": "MAP_INC", 66 | "fileName": "BP" 67 | }, 68 | { 69 | "includeFile": "MAP_ANOTHER_INC", 70 | "account": "DEMO", 71 | "fileName": "BP" 72 | } 73 | ] 74 | ``` 75 | 76 | -------------------------------------------------------------------------------- /docs/usage/KnownIssues.md: -------------------------------------------------------------------------------- 1 | # Known Issues 2 | 3 | ## For 2.7.0 release 4 | [MVVS Tech Note for Release 2.7.0](https://my.rocketsoftware.com/RocketCommunity/s/article/Notices-for-MVVS-Release-2-7-0) 5 | 6 | 7 | ## For 2.6.0 release 8 | [MVVS Tech Note for Release 2.6.0](https://my.rocketsoftware.com/RocketCommunity/s/article/Notices-for-MVVS-Release-2-6-0) -------------------------------------------------------------------------------- /docs/usage/Logging.md: -------------------------------------------------------------------------------- 1 | ## Log 2 | 3 | ### Log location 4 | 5 | - Console: From the Console, select "View" > "Output" and then from the OUTPUT panel, select "Rocket MV BASIC Language Server" from the Tasks drop-down. 6 | 7 | ![](../img/log_console.png) 8 | 9 | **Note**: If there is no warning or above level logs generated, then there is no Console output. 10 | 11 | - Log file: .rmv\logs\rocket_mv_basic_language_server.log 12 | 13 | ### Log config 14 | 15 | - Config file location: .rmv\config\log4j2.properties 16 | 17 | - The Extension uses the **log4j2** component. If you already know log4j2, it will be easy to configure the log. You can find related settings in log4j2 official online documentation here: https://logging.apache.org/log4j/2.x/manual/configuration.html . The following are brief description of commonly used options for your reference. 18 | 19 | #### property 20 | 21 | In most cases, you will only need to change these properties: 22 | 23 | - property.ROOT_LEVEL: Used to configure the "rootLogger.level". Logger levels include Trace,Debug, Info, Warn, Error, and Fatal. Only logs with levels higher than or equal to the configured level will be available. Root logger level is the first filter. Console or file level is the second filter, only logs that meet both conditions will be printed. Recommended value is "Info". 24 | 25 | - property.CONSOLE_LEVEL: Used to configure the "appender.console.filter.threshold.level". Limits the log level of output to the console. Recommended value is "Warn". 26 | 27 | - property.FILE_LEVEL: Used to configure the "appender.all.filter.threshold.level". Limits the log level of output to the file. Recommended value is "trace". 28 | 29 | - property.SERVER_NAME: Used to configure the log output file name. We recommend that this value not be changed. Recommended value is "rocket_mv_basic_language_server". 30 | 31 | - property.LOG_HOME: Used to configure the log output file home path. Recommended value is ".rmv/logs". 32 | 33 | #### global configuration 34 | 35 | - status: The level of internal Log4j events that should be logged to the console. We recommend that this value not be changed. Recommended value is "error". 36 | 37 | - monitorInterval: The minimum amount of time, in seconds, before the file configuration is checked for changes. Recommended value is "5" seconds. 38 | 39 | #### rootLogger 40 | 41 | Set the rootLogger level and where to place the log file. In addition, you can create appender refs for the logger . 42 | 43 | - rootLogger.level: logger level. Recommended value is "Info" 44 | 45 | - rootLogger.appenderRef.console.ref: This value is identical to the value of appender.console.name. We recommend that this value not be changed. Recommended value is "ConsoleAll". 46 | 47 | - rootLogger.appenderRef.all.ref: This value is identical to the value of appender.file.name. We recommend that this value not be changed. Recommended value is "RollingFileAll". 48 | 49 | #### appender.console 50 | 51 | Appender used to define output to the console: 52 | 53 | - appender.console.type: Suggest not to change. Recommended value is "Console". 54 | 55 | - appender.console.name: Suggest not to change. Recommended value is "ConsoleAll". 56 | 57 | - appender.console.target: SYSTEM_OUT or SYSTEM_ERR, please only use SYSTEM_ERR here. Because SYSTEM_OUT may cause unexpected error. 58 | 59 | - appender.console.layout.type: Includes "JSONLayout", "HTMLLayout", "YMLLayout" and so on. Recommended value is PatternLayout. Recommended value is "PatternLayout". 60 | 61 | - appender.console.layout.pattern: output format. Recommended value is "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" 62 | 63 | - appender.console.filter.threshold.level: Refer to "property.CONSOLE_LEVEL". Suggest not to change, "${CONSOLE_LEVEL}". 64 | 65 | - appender.console.filter.threshold.type: Includes "StringMatchFilter", "LevelRangFilter","RegexFilter" and so on. Recommended value is "ThresholdFilter", output log information when log level >= CONSOLE_LEVEL 66 | 67 | #### appender.file 68 | 69 | Appender used to define output to the file 70 | 71 | - appender.file.type: Suggest not to change. Recommended value is "RollingFile". 72 | 73 | - appender.file.name: Suggest not to change. Recommended value is "RollingFileAll". 74 | 75 | - appender.file.filter.threshold.level: Refer to "property.FILE_LEVEL". Fixed value, "${FILE_LEVEL}". 76 | 77 | - appender.file.filter.threshold.type: Refer to "appender.console.filter.threshold.type". 78 | 79 | - appender.file.fileName: Log file absolute path. Recommended value is "${LOG_HOME}/${SERVER_NAME}.log" 80 | 81 | - appender.file.filePattern: file name format. Don't delete "%i" because it is related to "DefaultRolloverStrategy" (unless modify "DefaultRolloverStrategy" to another strategy). Recommended value is "${LOG_HOME}/backup/${SERVER_NAME}.%d{yyyy-MM-dd}-%i.log". 82 | 83 | - appender.file.layout.type: Refer to "appender.console.layout.type". 84 | 85 | - appender.file.layout.pattern: output format. Recommended value is "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n". 86 | 87 | - appender.file.policies.type: Specifies a strategy for scrolling logs. Fixed value, "Policies". 88 | 89 | - appender.file.policies.time.type: Child of Policies with value fixed to "TimeBasedTriggeringPolicy". Time-based rolling strategy. 90 | 91 | - appender.file.policies.time.interval: Recommended value is "1". 92 | 93 | - appender.file.policies.time.modulate: Indicates whether to adjust the time interval so that the next rollover occurs at the interval boundary. Recommended value is "true". 94 | 95 | - appender.file.policies.size.type: Child of Policies with a fixed value of "SizeBasedTriggeringPolicy". The scroll policy based on file size. 96 | 97 | - appender.file.policies.size.size: Policies define the size of each log file. The size can be specified in bytes, suffixed with KB, MB, or GB. Recommended value is "10M". 98 | 99 | - appender.file.strategy.type: Suggest not to change, "DefaultRolloverStrategy". Used to specify the maximum number of log files that can exist in the same folder before the oldest log files are deleted allowing new log files to be created (via the max attribute). The default is to keep a maximum of seven files in backup file path. 100 | 101 | ### Examples 102 | 103 | **Example 1** 104 | 105 | To set the log file level output to info level or higher., you only need to change log file level to info: 106 | 107 | - property.ROOT_LEVEL=Info 108 | 109 | - property.CONSOLE_LEVEL=Info 110 | 111 | - property.FILE_LEVEL=Info 112 | 113 | **Example 2** 114 | 115 | Set the console output information to debug level or higher and set the log file output information to info level or higher: 116 | 117 | - property.ROOT_LEVEL=Debug 118 | 119 | - property.CONSOLE_LEVEL=Debug 120 | 121 | - property.FILE_LEVEL=Info 122 | 123 | **Example 3** 124 | 125 | Change the log file size to 20M 126 | 127 | - appender.file.policies.size.size=20M 128 | -------------------------------------------------------------------------------- /docs/usage/MultipleWorkspaceFolders.md: -------------------------------------------------------------------------------- 1 | # Multiple Workspace Folders Support 2 | 3 | If your source code is located in different account level folders, you can add the folders to the VS Code to view them in one place. Use "File" > "Add Folder to Workspace" to add a workspace folder. 4 | 5 | ![](../img/add_workspace.png) 6 | 7 | When multiple workspace folders are opened, some functions may operate differently. See the links below for more detail: 8 | 9 | - [Configuration Files](./Configuration.md) 10 | 11 | - [Group View](./GroupView.md) 12 | 13 | - [Connect to U2 Server](./Connection.md) 14 | 15 | - [Compile BASIC Programs](./Compile.md) 16 | -------------------------------------------------------------------------------- /docs/usage/OnlineEditing.md: -------------------------------------------------------------------------------- 1 | ## Online Editing 2 | 3 | Online Editing is an additional method for modifying BASIC program files on the U2 server. With this feature, users can remotely edit BASIC program files on the U2 server instead of having to retrieve or upload files from a repository. However, it is important to note that users cannot simultaneously utilize this mode alongside the traditional editing mode. 4 | 5 | **Note:** VS Code version 1.75 or higher is required to use this feature. Only Windows is supported in this preview version. 6 | 7 | ### Start Using 8 | 9 | Before utilizing this feature, it is necessary for the user to create a new empty folder. This folder will be used to hold the project-related files, including cache files and configuration files, that will be created by this extension. Alternatively, users may opt to open an existing folder dedicated to online editing projects. 10 | 11 | **Note:** The presence of both the ".rmv" folder and the ".rmvonline" folder in the same directory should be avoided, as it may result in unexpected issues. 12 | 13 | Once the folder is set up, users can initiate the Online Editing functionality by clicking on the Rocket icon located in the left sidebar. 14 | 15 | ![](../img/online_editing_icon.png) 16 | 17 | There are three scenarios when you click on that icon: 18 | 19 | - If you have already opened a folder that contains a ".rmv" folder, it indicates that it is an offline project folder. In this case, you will need to open a different folder instead. 20 | 21 | - If you have already opened a folder that contains a ".rmvonline" folder, it signifies that it is an online editing project folder. You can use this folder for online editing. 22 | 23 | - If you open an empty folder, you can use it for online editing, but you will need to initialize it first. 24 | 25 | ![](../img/online_editing_empty_folder.png) 26 | 27 | ### Configure 28 | 29 | If you open an online editing project folder or have initialized an empty folder, you will be able to view a tree structure in the extension. 30 | 31 | ![](../img/online_editing_configure_file.png) 32 | 33 | Using this feature, multiple U2 servers are supported. However, it is important to note that you can only connect to one server at a time. 34 | 35 | ### Configure Server 36 | 37 | There are two methods to access the configuration file: 38 | 39 | - Click the "Open Config" button. 40 | 41 | - Right-click on a tree node and select "Edit Server." 42 | 43 | ![](../img/online_editing_server_1.png) 44 | 45 | By accessing the configuration file, you can perform actions such as adding, editing, or deleting U2 server configurations. 46 | 47 | ![](../img/online_editing_server_3.png) 48 | 49 | - **"datasource"**: Must be either UNIVERSE or UNIDATA. In the online editing feature, you can only choose one data source. If you change the data source, the extension must be restarted for the change to take affect. 50 | 51 | - **"address"**: Specify the address of the U2 server. 52 | 53 | - **"name"**: Displays a readable name in the tree view. If left empty, the address will be used as the display name. Duplicate names are not supported. 54 | 55 | - **"username"**: The username used for logging into the U2 server. If left empty, you will need to provide it in an input box when connecting to the U2 server. 56 | 57 | - **"password"**: The password used for logging into the U2 server. If left empty, you will need to provide it in an input box when connecting to the U2 server. 58 | 59 | - **"port"**: By default, the port is set to 31438, but you can change this according to your U2 server configuration. 60 | 61 | - **"filterPatterns"**_(Optional)_: Used to specify filter patterns for Accounts, Folders and Files. 62 | 63 | There are additional methods available to edit the configuration file: 64 | 65 | - Right-click on a tree view node and select "Add New Server" to add a new U2 server configuration. 66 | 67 | - Click on the "Add New Server" icon to add a new U2 server configuration. 68 | 69 | - Right-click on a tree view node and select "Delete Server" to remove the configuration of the server from the list. 70 | 71 | After making changes to the configuration file, it is necessary to refresh the tree view for the modifications to take effect. 72 | 73 | ![](../img/online_editing_server_refresh.png) 74 | 75 | ### Connection 76 | 77 | To establish a connection, you can right-click on a U2 server node in the tree view and select "Connect". This will initiate the connection to the selected server. 78 | 79 | ![](../img/online_editing_connect.png) 80 | 81 | **Note:** When connecting to a U2 server, the extension uses the XDEMO account as default account for UniVerse, and the demo account for UniData. 82 | 83 | If you wish to disconnect from a U2 server, right-click the corresponding server node in the tree view and select "Disconnect". This will terminate the connection to the server. 84 | 85 | ![](../img/online_editing_disconnect.png) 86 | 87 | **Note:** In the online editing feature, the connection icon in the status bar cannot be clicked. This contrasts with the offline mode, where clicking the connection icon allows you to establish or terminate a connection to a server. 88 | 89 | ![](../img/online_editing_connection_icon.png) 90 | 91 | ### Filtering 92 | 93 | Users can establish filters to filter out information which that they user do not want the MVVS to display. Users can configure MVVS to filter out certain file names. This is done to minimize the amount number of unnecessary files listed. 94 | 95 | In the Configure Patterns option, enter the account/folder/file name patterns you want to match. Separate each pattern with a comma. Pattern matching characters are: 96 | * \* = any string 97 | * ? = any character 98 | 99 | #### **Steps to Configure Filter Pattern** 100 | **Access Configuration**: 101 | * Right-click the server name, account, or folder. 102 | * Select the "Configure Pattern" option. 103 | 104 | ![](../img/online_editing_configure_pattern_option.png) 105 | 106 | **Enter Filter Pattern**: 107 | * Add your desired filter pattern to the servers.mvbasic.json file. 108 | * Save the changes. 109 | 110 | **Refresh Connection**: 111 | * If you are already connected to the server, manually refresh it to apply the changes. 112 | 113 | **View Filtered Results**: 114 | * Expand the specific server or folder to see only the filtered accounts, folders, and files. 115 | 116 | ### Search BASIC programs 117 | 118 | Users can search for BASIC programs within a folder. Users can specify a search pattern or text to find specific files. This feature is designed for quick access to files, eliminating the need to scroll through the VS Code file view. 119 | 120 | In the Search option, enter the file name pattern you want to match. Pattern matching characters are: 121 | * \* = any string 122 | * ? = any character 123 | 124 | #### **Steps to Search BASIC programs** 125 | **Access Configuration**: 126 | * Right-click the folder inside Account. 127 | * Select the "Search" option. 128 | 129 | ![](../img/online_editing_search_option.png) 130 | 131 | **Enter Search Pattern**: 132 | * Enter the file name or search criteria and click Enter. 133 | 134 | ![](../img/online_editing_search_criteria.png) 135 | 136 | **View Search Results**: 137 | * Users can view search result in "SEARCH RESULTS" view and open files directly from that view. 138 | ![](../img/online_editing_search_results_view.png) 139 | 140 | 141 | ### Editing BASIC programs 142 | 143 | Once connected to a U2 server, you can expand the server node to access and view the BASIC program files stored on that server. 144 | 145 | When you open a program file for editing, the MVVS extension automatically detects the language based on the file extension: 146 | 147 | - Files with a `.py` extension are recognized as **Python**. 148 | - Files with a `.json` extension are recognized as **JSON**. 149 | - **BASIC files**, however, are **not auto-detected** and you must manually set the language mode to **Rocket MV BASIC**. 150 | 151 | There are **three ways** to set the language mode for BASIC files: 152 | 153 | #### 1. Configure language association in `settings.json` 154 | 155 | You can configure VS Code to recognize BASIC files by associating filepaths or names with the Rocket MV BASIC language. 156 | 157 | - **To apply the language mode to all files under the `BP` folder**: 158 | ```json 159 | "files.associations": { 160 | "**/BP/**": "rocket-mvbasic" 161 | } 162 | - **To apply it to a specific file, such as TESTSUM**: 163 | ```json 164 | "files.associations": { 165 | "TESTSUM": "rocket-mvbasic" 166 | } 167 | - **Full example configuration:**: 168 | ```json 169 | { 170 | "[rocket-mvbasic]": { 171 | "editor.codeLens": false 172 | }, 173 | "files.associations": { 174 | "**/BP/**": "rocket-mvbasic", 175 | "**/.rmv/config/*.json": "jsonc" 176 | }, 177 | "files.exclude": { 178 | "**/.git": true, 179 | "**/.svn": true, 180 | "**/.hg": true, 181 | "**/CVS": true, 182 | "**/.DS_Store": true, 183 | "**/Thumbs.db": true, 184 | "**/.rmv/catalog/**": true, 185 | "*/_*": false 186 | } 187 | } 188 | #### 2. Use the Command Palette 189 | You can manually change the language mode using the VS Code Command Palette: 190 | 191 | 1. Press Ctrl+Shift+P to open the Command Palette. 192 | 2. Type and select “Change Language Mode”. 193 | 3. Choose “Rocket MV BASIC” from the list of languages. 194 | 195 | #### 3. Use the status bar language selector 196 | You can also change the language mode via the status bar. 197 | At the bottom-right of VS Code, you'll see the current language mode, for example, Plain Text, JSON. 198 | 199 | 1. Click on the current language mode. A language selection menu displays. 200 | 2. Select Rocket MV BASIC from the list. 201 | 202 | ![](../img/lang_mode.png) 203 | 204 | You can also Add or Delete BASIC files: 205 | 206 | ![](../img/online_editing_edit_files.png) 207 | 208 | **Note:** Please note that due to access permissions, certain files may not be displayed in the tree view. Additionally, it's important to be aware that not all folders displayed in the tree view will necessarily contain BASIC program files. This is not configurable. 209 | 210 | ### Synchronization 211 | 212 | Here is the synchronization process when editing a BASIC program file: 213 | 214 | 1. When opening a BASIC program in the extension online editing mode, the extension will apply a READU lock on the corresponding file on the server side. If the file is already locked on the server side, this request will fail, and an error message will be displayed. 215 | 216 | 2. Once the file is opened in VS Code, the lock will be released, and a copy will be saved on the VS Code side. 217 | 218 | 3. When a user saves changes in the extension online editing mode, the extension will attempt to apply a WRITE lock to the file on the server side. If the application of this lock fails, a warning message will be displayed. 219 | 220 | 4. After successfully applying the WRITE lock to the BASIC file on the server side, the extension will overwrite the corresponding file with the local copy of the BASIC program. All changes made on the server side will be overwritten without warning. 221 | 222 | ### Compile and catalog 223 | Before using the compilation or catalog functions, a U2 database account must already connected. 224 | 225 | #### Quick compile 226 | Users can right-click a BASIC program file and select “” to compile a single file. 227 | 228 | ![](../img/catalog_compile.png) 229 | 230 | For UniData, there are multiple compilation commands for different flavors. Please refer [UD Compilation here](./Compile.md#unidata-compile-flavor-in-basicmvbasicjson-file) 231 | 232 | #### Quick catalog 233 | Users can right-click a BASIC program file and select "Catalog" to catalog a single file for both Universe and Unidata databases 234 | 235 | ![](../img/catalog.png) 236 | 237 | Clicking on 'Catalog' will use the parameters from the basic.mvbasic.json file to catalog the file. If you need to change the catalog type, arguments, or initial character, please update the settings in this file. See [Catalog Settings in "basic.mvbasic.json" file](./Catalog.md#quick-catalog) for more information. 238 | 239 | #### Compile / Catalog with configuration file 240 | The configuration file can help a user to compile and catalog multiple files. 241 | Select “Configure Default Build Task…” from the Terminal menu, and then select “BASIC: Build” to create a build task. 242 | 243 | ![](../img/online_editing_compile_2.png) 244 | 245 | ![](../img/online_editing_compile_3.png) 246 | 247 | A default task file will be generated. For more information on this file, see the “Compile” documentation. 248 | 249 | ![](../img/online_editing_compile_4.png) 250 | 251 | ### Debugging in online mode 252 | Refer [Debugging](./Debugging.md) for debugging steps. 253 | 254 | ### Limitation: 255 | Most of the LSP (Language Server Protocol) features are supported, but there are some limitations. 256 | 257 | - Features like Go to Definition, Rename, and Find References may not be able to locate references or definitions in other files. 258 | 259 | - Debugging related functions are currently not supported. 260 | 261 | - Custom documentation features are also not supported now. 262 | 263 | - Please note that only one instance of VS Code can be run at a time. 264 | 265 | - Do not click on another account's folder before completing the cataloging of the current BASIC program. Doing so may result in cataloging the wrong BASIC program on the U2 server side. 266 | 267 | - The parameter "arguments" in the basic.mvbasic.json file is currently not supported by the catalog feature. By default, the argument is set to FORCE for both the UV and UD databases. -------------------------------------------------------------------------------- /docs/usage/References.md: -------------------------------------------------------------------------------- 1 | ## Using References 2 | 3 | Open a BASIC program file, right-click a symbol and then select `Go to References` or `Find All References`. 4 | 5 | If you select `Go to References` and there are multiple references of the symbol, an embedded window opens in current document. 6 | 7 | If only one reference exists, the cursor will jump to its location. 8 | 9 | ![](../img/references_pallette_result.png) 10 | 11 | If select `Find All References`, the results will be listed in a side window. 12 | 13 | ![](../img/references_all_result.png) -------------------------------------------------------------------------------- /docs/usage/Rename.md: -------------------------------------------------------------------------------- 1 | ## Rename Usage 2 | 3 | Open a BASIC program file, and then right-click a symbol and select the `Rename Symbol` menu option to rename all occurrences of the symbol. 4 | 5 | Or move the cursor to a symbol then press F2. 6 | 7 | ![Rename](../img/rename_pallette.png) 8 | 9 | **Note**: only symbols in the currently opened file are impacted. Files referenced in the INCLUDE statement are not impacted. 10 | 11 | -------------------------------------------------------------------------------- /docs/usage/SemanticHighlighting.md: -------------------------------------------------------------------------------- 1 | ## Semantic Highlighting 2 | 3 | When semantic highlighting is enabled, all symbols are highlighted with different colors based on the syntax. 4 | 5 | You can enable / disable semantic highlighting in the VS Code settings. Press F1 to open the command window, and then enter "*Open Settings (UI)*". Search "*semantic*" to find the `Editor>Semantic Highlighting item`. Set the value to `true` to enable semantic highlighting; otherwise set it to `false`. 6 | 7 | ![](../img/semantic_config.png) 8 | 9 | Without semantic highlighting: 10 | 11 | ![](../img/semantic_false.png) 12 | 13 | With semantic highlighting: 14 | 15 | ![](../img/semantic_true.png) 16 | 17 | **Note**: It is suggested that you use **Dark+** color theme of the VS Code. Otherwise, the semantic highlighting colors may be stand out visually. 18 | 19 | Use the following menu items to select VS Code color themes. (This is VS Code’s functionality) 20 | 21 | ![](../img/semantic_theme.png) -------------------------------------------------------------------------------- /docs/usage/SignatureHelp.md: -------------------------------------------------------------------------------- 1 | # Signature Help 2 | 3 | When users call Basic internal or customized functions, the Signature Help feature automatically prompts for the parameters of the function. 4 | 5 | ![](../img/signature_help.png) 6 | 7 | Users can add the parameter list of the customized function in the corresponding configuration file. 8 | 9 | Open the customized functions configuration file from the appropriate directory: 10 | 11 | - **For UniVerse**: `.rmv/documentation/universe/custom.json` 12 | 13 | - **For UniData**: `.rmv/documentation/unidata/custom.json` 14 | 15 | then add a new function and parameters list. 16 | 17 | ![](../img/sigature_user_define.png) 18 | 19 | - `brief`: A brief description of this function. See the Customize Documentation for more detail. 20 | - `signature`: Parameters list. All parameter names should be listed in one string. 21 | 22 | When this customized function is called in a BASIC program, the parameters will be prompted automatically. 23 | 24 | -------------------------------------------------------------------------------- /docs/usage/onlineEditing.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RocketSoftware/rocket-mvbasic/58e792adae61f668b712f7805965d326a616af42/docs/usage/onlineEditing.docx -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Rocket MV BASIC 2 | nav: 3 | - Home: 'index.md' 4 | - Usage: 5 | - 'Accounts Settings': 'usage/Accounts.md' 6 | - 'Catalog Settings': 'usage/Catalog.md' 7 | - 'Compile': 'usage/Compile.md' 8 | - 'Configuration': 'usage/Configuration.md' 9 | - 'Code Lens': 'usage/CodeLens.md' 10 | - 'Compatibility': 'usage/Compatibility.md' 11 | - 'Customized Documentation': 'usage/CustomizeDoc.md' 12 | - 'DAP Binaries': 'usage/DAPRelease.md' 13 | - 'Debugging': 'usage/Debugging.md' 14 | - 'Document Symbol': 'usage/DocumentSymbol.md' 15 | - 'Diagnostics': usage/Diagnostics.md 16 | - 'Folding': 'usage/Folding.md' 17 | - 'Formatting': 'usage/Formatting.md' 18 | - 'GaraSign': 'usage/GaraSign.md' 19 | - 'Group View': 'usage/GroupView.md' 20 | - 'Hover': 'usage/Hover.md' 21 | - 'INCLUDE settings': 'usage/Include.md' 22 | - 'Logging': 'usage/Logging.md' 23 | - 'Multiple Workspace Folders': 'usage/MultipleWorkspaceFolders.md' 24 | - 'Online Editing': 'usage/OnlineEditing.md' 25 | - 'References': 'usage/References.md' 26 | - 'Semantic Highlighting': 'usage/SemanticHighlighting.md' 27 | - 'Signature Help': 'usage/SignatureHelp.md' 28 | - 'Using Auto Completion': 'usage/Completion.md' 29 | - 'Using Definition': 'usage/Definition.md' 30 | - 'Using Rename': 'usage/Rename.md' 31 | - 'U2 Connection Settings': 'usage/Connection.md' 32 | - FAQ: 'usage/FAQ.md' 33 | - Change Log: 34 | - 'Change Log': 'usage/CHANGELOG.md' 35 | - 'Known Issues': 'usage/KnownIssues.md' 36 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | mkdocs-material 2 | --------------------------------------------------------------------------------