Skip to content

Commit 6245869

Browse files
committed
CHANGELOG for 1.0.6, plus README improvements
1 parent 0f6d457 commit 6245869

File tree

2 files changed

+112
-59
lines changed

2 files changed

+112
-59
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Change Log
22

3+
## [1.0.6] 13-Nov-2020
4+
- Target current class when opening documentation from Server Actions quickpick, launched by click on ObjectScript panel in status bar (#490)
5+
- Improve code snippets (#493)
6+
- Update README to state need for manual download and install of beta VSIX in order to use proposed APIs (#478)
7+
- Make server-side search of isfs folder (proposed API) work even when folder isn't first root in workspace (#495)
8+
- Fix status bar panel issues that affected Docker targets (#498)
9+
- Resolve failure to prompt for password (1.0.5 regression) (#503)
10+
- Exclude Studio project documents (.prj) from isfs tree (#501)
11+
- Fix variable tree cascade that occurred when value was edited during debugging (#505)
12+
- Show clickable url launching graphical editor for BPL and DTL documents opened from isfs folder (#508)
13+
- To show .bpl and .dtl files, add `filter=*` to isfs folder's `uri` property in your `XXX.code-workspace` file.
14+
- Alternatively, use `View Other` from context menu of the corresponding class.
15+
- Display supported image files correctly when opened from isfs web application folder (#394)
16+
- Prevent import from overwriting class that is in [deployed mode](https://docs.intersystems.com/iris20181/csp/docbook/Doc.View.cls?KEY=GOBJ_classes#GOBJ_deploy_classes) (#382)
17+
- Respect `pathPrefix` property of an `intersystems.servers` connection definition in more places:
18+
- debugger connections
19+
- urls on Server Actions menu
20+
321
## [1.0.5] 5-Nov-2020
422
- Defer to Language Server 1.0.5+ for folding range information (#473)
523
- Add `objectscript.overwriteServerChanges` setting to permit unconditional import from local file (#464)

README.md

Lines changed: 94 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
[InterSystems®](http://www.intersystems.com) ObjectScript language support for Visual Studio Code, from the [InterSystems Developer Community](https://community.intersystems.com/).
1212

13-
Documentation on [GitHub Pages](https://intersystems-community.github.io/vscode-objectscript/).
13+
- Documentation on [GitHub Pages](https://intersystems-community.github.io/vscode-objectscript/).
14+
15+
- Guidance on [reporting issues](https://community.intersystems.com/post/using-intersystems-objectscript-vs-code-how-report-issues).
1416

1517
## Features
1618

@@ -19,19 +21,25 @@ Documentation on [GitHub Pages](https://intersystems-community.github.io/vscode-
1921
![example](https://raw.githubusercontent.com/intersystems-community/vscode-objectscript/master/images/screenshot.png)
2022
- Debugging ObjectScript code.
2123
- Intellisense support for commands, system functions, and class members.
22-
- Export existing server sources to the working directory: open Command Palette (<kbd>F1</kbd> or <kbd>Cmd</kbd>/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>), start typing 'ObjectScript', choose `ObjectScript: Export Sources`, press <kbd>Enter</kbd>.
23-
- Save and compile a class: press <kbd>Ctrl</kbd>+<kbd>F7</kbd> (<kbd>⌘</kbd>+<kbd>F7</kbd>) or select `ObjectScript: Import and Compile Current File` from Command Palette.
24-
- Direct access to edit or view server code in VS Code Explorer via `isfs` and `isfs-readonly` FileSystemProviders (e.g. using a [multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces)).
25-
- Server Explorer view (ObjectScript: Explorer) with ability to export items to working directory.
24+
- Export of existing server sources into a working folder:
25+
- open Command Palette (<kbd>F1</kbd> or <kbd>⌘</kbd>/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>)
26+
- start typing 'ObjectScript'
27+
- choose `ObjectScript: Export Sources`
28+
- press <kbd>Enter</kbd>
29+
- Save and compile a class:
30+
- press <kbd>⌘</kbd>/<kbd>Ctrl</kbd>+<kbd>F7</kbd>
31+
- or, select `ObjectScript: Import and Compile Current File` from Command Palette
32+
- Direct access to edit or view server code in the VS Code Explorer via `isfs` and `isfs-readonly` FileSystemProviders (e.g. using a [multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces)). Server-side source control is respected.
33+
- Server Explorer view (ObjectScript: Explorer) with ability to export items to your working folder.
2634

2735
![ServerExplorer](https://raw.githubusercontent.com/intersystems-community/vscode-objectscript/master/images/explorer.png)
2836

2937
## Installation
3038

3139
Install [Visual Studio Code](https://code.visualstudio.com/) first.
3240

33-
Open VS Code. Go to Extensions view (<kbd>Cmd</kbd>/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd>) and search for "vscode-objectscript" and install it.
34-
Or install from the ObjectScript extension page on [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=intersystems-community.vscode-objectscript)
41+
Open VS Code. Go to Extensions view (<kbd></kbd>/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd>), search for "vscode-objectscript" and install it.
42+
Or install direct from the ObjectScript extension page on [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=intersystems-community.vscode-objectscript).
3543

3644
![installation](https://raw.githubusercontent.com/intersystems-community/vscode-objectscript/master/images/installation.gif)
3745

@@ -40,35 +48,77 @@ Or install from the ObjectScript extension page on [Visual Studio Marketplace](h
4048
This extension is able to to take advantage of some VS Code APIs that have not yet been finalized.
4149

4250
The additional features (and the APIs used) are:
43-
- Server-side [searching across files](https://code.visualstudio.com/docs/editor/codebasics#_search-across-files) being accessed using isfs (TextSearchProvider)
44-
- [Quick Open](https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_quick-open) of isfs files (FileSearchProvider).
45-
- Improved labels (tabs, file lists, tooltips) for server-side files (ResourceLabelFormatter)
51+
- Server-side [searching across files](https://code.visualstudio.com/docs/editor/codebasics#_search-across-files) being accessed using isfs (_TextSearchProvider_)
52+
- [Quick Open](https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_quick-open) of isfs files (_FileSearchProvider_).
53+
- Improved labels (tabs, file lists, tooltips) for server-side files (_ResourceLabelFormatter_)
4654

47-
To unlock these features:
55+
To unlock these features (optional):
4856

49-
1. Marketplace does not allow publication of extensions that use proposed APIs. Download and install a beta version from GitHub.
57+
1. Download and install a beta version from GitHub. This is necessary because Marketplace does not allow publication of extensions that use proposed APIs.
5058
- Go to https://github.com/intersystems-community/vscode-objectscript/releases
51-
- Locate the beta immediately above the release you installed from Marketplace. For instance, if you installed `1.0.5`, look for `1.0.6-beta.1`. This will be functionally identical to the Marketplace version apart from being able to use proposed APIs.
52-
- Download the VSIX file (for example `vscode-objectscript-1.0.6-beta.1.vsix`) and install it. One way to install a VSIX is to drag it from your download folder and drop it onto the list of extensions in the Extensions view of VS Code.
59+
- Locate the beta immediately above the release you installed from Marketplace. For instance, if you installed `1.0.6`, look for `1.0.7-beta.1`. This will be functionally identical to the Marketplace version apart from being able to use proposed APIs.
60+
- Download the VSIX file (for example `vscode-objectscript-1.0.7-beta.1.vsix`) and install it. One way to install a VSIX is to drag it from your download folder and drop it onto the list of extensions in the Extensions view of VS Code.
5361

5462
2. From [Command Palette](https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_command-palette) choose `Preferences: Configure Runtime Arguments`.
5563
3. In the argv.json file that opens, add this line:
5664
```json
5765
"enable-proposed-api": ["intersystems-community.vscode-objectscript"]
5866
```
59-
4. Close and relaunch VS Code.
67+
4. Exit VS Code and relaunch it.
6068
5. Verify that the ObjectScript channel of the Output panel reports this:
6169
```
6270
intersystems-community.vscode-objectscript version X.Y.Z-beta.1 activating with proposed APIs available.
6371
```
6472

65-
After a subsequent update of the extension from Marketplace you will need to download and install the new `-beta.1` VSIX. None of the other steps above will need to be repeated.
73+
After a subsequent update of the extension from Marketplace you will only have to download and install the new `vscode-objectscript-X.Y.Z-beta.1` VSIX. None of the other steps above are needed again.
6674

67-
## Configure Connection
75+
## Configure a Connection
6876

6977
To be able to use many features you first need to configure the connection to your IRIS/Caché/Ensemble server(s) in your [VS Code settings](https://code.visualstudio.com/docs/getstarted/settings). If you are unfamiliar with how settings work and how they are edited, use that link.
7078

71-
We recommend you define server connections in the `intersystems.servers` object whose structure is defined by the [InterSystems Server Manager](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) helper extension. Install this extension and consult its README about commands for easy setup of connections, plus assistance when editing the JSON definition. For example:
79+
We recommend you define server connections in the `intersystems.servers` object whose structure is defined by the [InterSystems Server Manager](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) helper extension.
80+
81+
Install that extension and consult its documentation about commands for easy setup of connections, plus assistance when editing the JSON definition directly.
82+
83+
For more tips about the `intersystems.servers` object, see the [Notes](#Notes) section below.
84+
85+
### Client-side Editing
86+
87+
A simple workspace -- a local working folder in which you edit InterSystems source files and manage them using client-side source control (e.g. Git) -- will use the `objectscript.conn` settings object to **import** locally-edited code into a namespace on a server, compile it there and run/debug it, and also for initial **export** of an existing codebase (optional). This settings object is usually defined in Workspace Settings, for example in the `.vscode/settings.json` file of your working folder.
88+
89+
A quick way to add `objectscript.conn` to a new working folder is:
90+
91+
1. Open the folder in VS Code.
92+
2. Use the InterSystems icon on the activity bar to switch to **ObjectScript Explorer** view.
93+
3. Click the 'Choose Server and Namespace' button.
94+
4. Respond to the sequence of quickpicks. You can also define a new server at the start of this sequence by using the '+' button.
95+
96+
For more about `objectscript.conn` see the [Notes](#Notes) section below.
97+
98+
### Server-side Editing
99+
100+
To edit code directly in one or more namespaces on one or more servers (local or remote) we recommend creating a workspace definition file (for example _XYZ.code-workspace_) where you specify one or more root folders that directly access namespaces via the `isfs` or `isfs-readonly` URI schemes. The only difference between these two schemes is that any file opened from a folder using the `isfs-readonly` scheme will be set as read-only in VS Code and thus protected against being changed.
101+
102+
1. Start VS Code.
103+
2. If your last-used folder opens, use 'Close Folder' on the 'File' menu ('Code' menu on macOS). Or if what opened was your last-used workspace, use 'Close Workspace'.
104+
3. On VS Code's Explorer view (<kbd>⌘</kbd>/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd>), click the 'Choose Server and Namespace' button. Respond to the sequence of quickpicks. You can also define a new server connection during this process.
105+
4. Use 'Save Workspace As...' to store your workspace definition in a file with a `.code-workspace` extension.
106+
107+
For more about `isfs` and `isfs-readonly` folder specifications see the [Notes](#Notes) section below.
108+
109+
## Notes
110+
111+
- Connection-related output appears in the "Output" view while switched to the "ObjectScript" channel using the drop-down menu on the view titlebar.
112+
113+
- For Caché/IRIS instance with maximum security level, add `%Development` role for `/api/atelier/` web-application ([read more](https://community.intersystems.com/post/using-atelier-rest-api)).
114+
115+
- If you are getting `ERROR # 5540: SQLCODE: -99 Message: User xxx is not privileged for the operation` when you try to get or refresh class/routine/include- lists, grant your username (or a SQL role you hold) execute permission for the following SQL Procedure in the target namespace.
116+
```SQL
117+
GRANT EXECUTE ON %Library.RoutineMgr_StudioOpenDialog TO xxx
118+
```
119+
### More about `intersystems.servers`
120+
This settings object is useful for both client-side and server-side development.
121+
- An example server definition named 'local':
72122

73123
```json
74124
"intersystems.servers": {
@@ -84,19 +134,17 @@ We recommend you define server connections in the `intersystems.servers` object
84134
}
85135
```
86136

87-
By defining connections in your User Settings they become available for use by any workspace you open in VS Code. Alternatively, define them in workspace-specific settings.
137+
- By defining connections in your User Settings they become available for use by any workspace you open in VS Code. Alternatively, define them in workspace-specific settings.
88138

89-
Setting the `username` property is optional. If omitted it will be prompted for when connecting, then cached for the session.
139+
- Setting the `username` property is optional. If omitted it will be prompted for when connecting, then cached for the session.
90140

91-
Setting a plaintext value for the `password` property is **not** recommended. Instead, run the `InterSystems Server Manager: Store Password in Keychain` command from Command Palette.
92-
93-
If no password has been set or stored it will be prompted for when connecting, then cached for the session.
94-
95-
### Client-side Editing
141+
- Setting a plaintext value for the `password` property is **not** recommended. Instead, run the `InterSystems Server Manager: Store Password in Keychain` command from Command Palette.
96142

97-
A workspace consisting of a local working directory in which you edit InterSystems source files and manage them using client-side source control (e.g. Git) will use the `objectscript.conn` settings object to access the server for export (compile) and debug, and also for import. This is usually defined in Workspace Settings, for example in the `.vscode/settings.json` file of your working directory.
143+
- If no password has been set or stored it will be prompted for when connecting, then cached for the session.
98144

99-
We recommend that `objectscript.conn` uses its `server` property to point to an entry in `intersystems.servers`. For example:
145+
### More about `objectscript.conn`
146+
This settings object is primarily relevant when doing client-side development.
147+
- We recommend that `objectscript.conn` uses its `server` property to point to an entry in `intersystems.servers`. For example:
100148

101149
```json
102150
"objectscript.conn": {
@@ -106,52 +154,39 @@ We recommend that `objectscript.conn` uses its `server` property to point to an
106154
}
107155
```
108156

109-
The mandatory `ns` property defines which server namespace you will work with.
157+
- The mandatory `ns` property defines which server namespace you will work with.
110158

111-
When the `server` property is set, any `username` or `password` properties of `objectscript.conn` are ignored. Instead these values come from the `intersystems.servers` entry.
159+
- When the `server` property is set, any `username` or `password` properties of `objectscript.conn` are ignored. Instead these values come from the `intersystems.servers` entry.
112160

113-
### Server-side Editing
114-
115-
To edit code directly in one or more namespaces on one or more servers (local or remote) we recommend creating a workspace definition file (for example _XYZ.code-workspace_) where you specify one or more root folders that directly access namespaces via the `isfs` or `isfs-readonly` URI schemes. The only difference between these two schemes is that any file opened from a folder using the `isfs-readonly` scheme will be set as readonly in VS Code and thus protected against changing.
116-
117-
1. Start VS Code.
118-
2. If your last-used folder opens, use 'Close Folder' on the 'File' menu ('Code' menu on macOS). Or if what opened was your last-used workspace, use 'Close Workspace'.
119-
3. On VS Code's Explorer view, click the 'Choose Server and Namespace' button. Respond to the sequence of quickpicks. You can also define a new server connection during this process.
120-
4. Use 'Save Workspace As...' to store your workspace definition in a file with a `.code-workspace` extension.
161+
### More about `isfs` and `isfs-readonly` workspace folders
162+
Server-side development is best done using `isfs` folders. The read-only variant `isfs-readonly` is also useful when doing client-side development, since it enables server-side searching of your codebase.
121163

122-
To access the server-side files of a web application, edit the JSON of your workspace definition. Get there by running the 'Preferences: Open Workspace Settings (JSON)' command. Format your `uri` property like this example for the `/csp/user` web application:
164+
To modify how your folder behaves, edit the JSON of your workspace definition (_XYZ.code-workspace_ file). Get there by running the 'Preferences: Open Workspace Settings (JSON)' command. Edit your `uri` property.
123165

166+
- The `csp` query parameter indicates web application files are to be shown. The uri path optionally specifies which application. The `ns` parameter must specify the same namespace the application is configured to use. In the following example the first folder is for the `/csp/user` web application in the USER namespace of the server named 'local' and the second gives read-only access to all web applications that reside in the %SYS namespace. The second folder also uses the optional `name` property:
124167
```json
125168
{
126-
"uri": "isfs://local/csp/user?csp&ns=USER"
169+
"uri": "isfs://local/csp/user?ns=USER&csp"
170+
},
171+
{
172+
"name": "local:%SYS web files (read-only)",
173+
"uri": "isfs-readonly://local/?ns=%SYS&csp"
127174
}
128175
```
129-
The `csp` query parameter indicates web application files are to be shown. The uri path specifies which application. The `ns` parameter must specify the same namespace the application is configured to use.
130-
131-
To see only classes in the X.Y package, format the uri like this:
176+
177+
- To see only classes in the Xxx.Yyy package, format the uri like this:
132178

133179
```json
134180
{
135-
"uri": "isfs://local/X/Y?ns=USER&type=cls"
181+
"uri": "isfs://local/Xxx/Yyy?ns=USER&type=cls"
136182
}
137183
```
138184

139-
Other query parameters that can be specified:
140-
- `type=cls` to show only classes, or `type=rtn` to show only routines.
141-
- `flat=1` to flatten the hierarchy.
142-
- `generated=1` to show generated items.
143-
- `filter=filterspec` to use a filter specification formatted in the same way as used in InterSystems Studio's File Open dialog (e.g. `filter=Ensem*.inc`).
144-
145-
## Notes
146-
147-
Connection-related output appears in the "Output" view while switched to the "ObjectScript" channel using the drop-down menu on the view titlebar.
148-
149-
For Caché/IRIS instance with maximum security level, add `%Development` role for `/api/atelier/` web-application ([read more](https://community.intersystems.com/post/using-atelier-rest-api)).
150-
151-
If you are getting `ERROR #5540: SQLCODE: -99 Message: User xxx is not privileged for the operation` when you try to get/refresh class/routine/includes lists, grant your username (or a SQL role you hold) execute permission for the following SQL Procedure in the target namespace.
152-
```SQL
153-
GRANT EXECUTE ON %Library.RoutineMgr_StudioOpenDialog TO xxx
154-
```
185+
- Other query parameters that can be specified include:
186+
- `type=cls` to show only classes, or `type=rtn` to show only routines.
187+
- `flat=1` to flatten the hierarchy.
188+
- `generated=1` to show generated items.
189+
- `filter=filterspec` to use a filter specification formatted in the same way as used in InterSystems Studio's File Open dialog (e.g. `filter=Ensem*.inc`).
155190

156191
## Support and Training
157192

0 commit comments

Comments
 (0)