├── .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 | [](https://marketplace.visualstudio.com/items?itemName=RocketSoftware.rocket-mvbasic)
4 | [](https://rocketsoftware.github.io/rocket-mvbasic/)
5 | [](https://community.rocketsoftware.com/forums/multivalue?CommunityKey=521bce2e-71d5-4d32-b560-dfa95e950eb5)
6 | 
7 |
8 |
9 | [](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  (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**  **>** **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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
55 |
56 | Select "BASIC: build" to create a BASIC build task.
57 |
58 | 
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 | 
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 | 
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 | 
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 | 
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 | 
--------------------------------------------------------------------------------
/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 | 
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 | 
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 | 
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 | 
75 |
76 | Select the **MVBasic Debug** from the Select environment dialog box.
77 |
78 | 
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 | 
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 | 
135 |
136 | You can find all break points in **BREAKPOINTS** panel of the **Run and Debug** view.
137 |
138 | 
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 | > 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
6 |
7 | Diagnostics will also point out any variables that have been referenced before they have been defined.
8 |
9 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
8 |
9 | By clicking on the code folding icon, large code blocks are folded according to the syntax of the current statement.
10 |
11 | 
--------------------------------------------------------------------------------
/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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
44 |
45 | By accessing the configuration file, you can perform actions such as adding, editing, or deleting U2 server configurations.
46 |
47 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
130 |
131 | **Enter Search Pattern**:
132 | * Enter the file name or search criteria and click Enter.
133 |
134 | 
135 |
136 | **View Search Results**:
137 | * Users can view search result in "SEARCH RESULTS" view and open files directly from that view.
138 | 
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 | 
203 |
204 | You can also Add or Delete BASIC files:
205 |
206 | 
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 | 
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 | 
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 | 
244 |
245 | 
246 |
247 | A default task file will be generated. For more information on this file, see the “Compile” documentation.
248 |
249 | 
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 | 
10 |
11 | If select `Find All References`, the results will be listed in a side window.
12 |
13 | 
--------------------------------------------------------------------------------
/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 | 
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 | 
8 |
9 | Without semantic highlighting:
10 |
11 | 
12 |
13 | With semantic highlighting:
14 |
15 | 
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 | 
--------------------------------------------------------------------------------
/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 | 
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 | 
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 |
--------------------------------------------------------------------------------