Sorry, I see that now! Have you checked your server connection information and made sure you have the correct host, port username and password?
- Log in to post comments
Sorry, I see that now! Have you checked your server connection information and made sure you have the correct host, port username and password?
@Nimisha Joseph
If you uninstalled Ensembe, what server are you trying to connect to?
I just created a code-workspace file using your example above and I couldn't reproduce this is it possible that there's a .vscode/settings.json inside the "." folder that contains different objectscript.export settings? If so, those will take precedence. Folder-specific settings take precedence over workspace-specific settings, and workspace-specific take precdence over user-specific.
@Mathew Rimmington
Based on your description, I think that your setting for "objectscript.export.folder" should be "appname/src/database" instead of "src/database".
The "Export Project Contents" command that you clicked is for exporting as individual UDL files in your workspace for editing with local source control. To export server documents in a single XML file, you an use the "Export Documents to XML File..." command that's documented here.
@Pietro Di Leo
When you say "export a project", what do you mean by that? Do you mean "export the documents in the project to edit them", or "export the contents as a single legacy XML file for deployment/sharing"?
@Mathew Rimmington
I think I've made the fix. You can download a version of the Language Server extension with the fix here. To install it, simply drag the .vsix file into the extensions view in VS Code. It will prompt you to reload so the new version of the extension can be activated. Be sure you download the correct version for your platform and please let me know if your issue is resolved. I plan on releasing a new Language Server version very soon and I'd like this fix to be in it!
@Mathew Rimmington Sorry, I misread the prompt in the screenshot. Can you open the settings.json file that contains the server definition that you're having trouble with and send me that? I'd like to confirm that it has "UnknownUser" as the username and not no username. If so, I can modify the Language Server to handle that case better.
I know what's happening now. You're creating the server definition with no username, and when the server manager extension tries to use it, it assumes that you wanted to store your credentials securely, so it gives you this prompt. When you leave it blank, it inserts "UnknownUser" with no password as your credentials. The Language Server extension needs to handle that case. I will make the fix.
@Mathew Rimmington
The Language Server expects that if you want to use unauthenticated access then you need to provide no username, not "UnknownUser".
@Scott Roth
You can redirect output to a file in the mgr directory. Docs are here.
Hi @Pietro Di Leo, my post on features unique to the VS Code WebSocket Terminal is now live and can be viewed here. I think it's a nice addendum to your very informative article!
@Rodrigo Werneck
I recommend you use an intermediary stream to avoid <MAXSTRING> errors with large JSON objects:
ClassMethod DuplicateDAO(dao As %DynamicAbstractObject) As %DynamicAbstractObject
{
Set strm = ##class(%Stream.TmpCharacter).%New()
Do dao.%ToJSON(strm)
Return ##class(%DynamicAbstractObject).%FromJSON(strm)
}@Stephane Devin
Here's a pretty-printed version of the attributes list for JavaScript:
Attribute 0: Error
Attribute 1: White Space
Attribute 2: _Tab
Attribute 3: Label
Attribute 4: Delimiter
Attribute 5: String
Attribute 6: Comment
Attribute 7: Decimal integer
Attribute 8: Hexadecimal integer
Attribute 9: Floating point number
Attribute 10: Regexp delimiter
Attribute 11: Regexp body
Attribute 12: Regexp escape sequence
Attribute 13: Regexp flags
Attribute 14: Identifier
Attribute 15: Operator
Attribute 16: Definition keyword
Attribute 17: Statement keyword
Attribute 18: Literal keyword
Attribute 19: Expression keyword
Attribute 20: Future keyword
Attribute 21: CSP extension
Attribute 22: JSON property name
@Stephane Devin
You can use %SyntaxColor to parse JavaScript. Here's a very simple example that reads in a JS file, parses it, and returns a JSON representation of the semantic tokens:
ClassMethod JSTokens() As %Boolean
{
#; Reading from a file, writing to a temporary stream
Set syn = ##class(%SyntaxColor).%New(), in = ##class(%Stream.FileCharacter).%New(), out = ##class(%Stream.TmpCharacter).%New()
#; Need the "K" flag to get JSON output
Do in.LinkToFile("/Users/bsaviano/Desktop/test.js"), syn.Color(in,out,"JS","K")
#; Get a %DynamicArray from the stream
Set tokens = ##class(%DynamicArray).%FromJSON(out)
#; Process JSON ...
#; JSON is of the format:
#; {
#; // The position of the token within the line
#; p: number;
#; // The length of the token
#; c: number;
#; // Language number, see %SyntaxColor::Languages()
#; l: number;
#; // Attribute number, see %SyntaxColor::Attributes()
#; s: number;
#; }[][]
#; Where there is one array per line of the source document
}
I suggest you study the class reference for %Library.SyntaxColor since it's not that easy to use.
Great post @Pietro Di Leo! For those interested in the features unique to the WebSocket Terminal, I will publish an article on this topic soon. Stay tuned!
@Nicki Vallentgoed
There isn't a way to check if a file is out of date without saving it. I think the best change you could make to your workflow would be using a private server instead of a shared server. Since you're working with local files, you shouldn't care about the server version since it's not the source of truth. If you used your own private development server you could turn off the version checking logic and let your source control system handle differences.
@Pravin Barton
If you want to only search a single folder, you can right-click on it in the explorer and select "Find in Folder...". VS Code will show the search view and auto-populate the "files to include" text box.
@Marcel den Ouden
The VS Code extension uses your objectscript.export settings to determine what the name of the file should be from its URI. It assumes that if you're working in a client-side folder you will have those settings properly configured for how your classes are stored in the local folder (since they are needed to export classes). I don't know how the full path could be used for the file name so that is probably a bug.
@Hannah Sullivan
This is documented in the Server Manager's README. It will be added to the official InterSystems documentation for VS Code at a later date.
@Kevin Kindschuh
The VS Code Integrated Terminal is an OS shell, so if you want to open an IRIS terminal you need to use a command like "iris terminal <instance>". If that instance is on another machine, you'll have to use SSH. Starting with IRIS 2023.2, VS Code supports a WebSocket-based terminal so that you can launch a terminal on a remote server without needing SSH. The WebSocket terminal is not a full terminal though.
@Sam Duncan Here's a simple method to export subclasses. It exports all of the classes in a single XML file and prints that to the console. You can easily modify that behavior by changing the $SYSTEM.OBJ.Export() line to whatever export strategy you want.
ClassMethod ExportSubclasses(pSuper As %String) As %Status
{
#Dim tSC As %Status = $$$OK
#Dim tEx As %Exception.AbstractException
#Dim tPc As %ProcedureContext
#Dim tRs As %SQL.ClassQueryResultSet
Try {
#; Build a subscripted array of subclasses
Set tStmt = ##class(%SQL.Statement).%New()
Set tSC = tStmt.%PrepareClassQuery("%Dictionary.ClassDefinitionQuery","SubclassOf")
If $$$ISERR(tSC) Quit
Set tPc = tStmt.%Execute(pSuper)
If tPc.%SQLCODE < 0 {
Throw ##class(%Exception.SQL).CreateFromSQLCODE(tPc.%SQLCODE,tPc.%Message)
}
Set tRs = tPc.%NextResult()
While tRs.%Next(.tSC) {
Set tSubclasses(tRs.%GetData(1)_".CLS") = ""
}
If $$$ISOK(tSC), $DATA(tSubclasses) = 10 {
#; Export the subclasses
Set tSC = $SYSTEM.OBJ.Export(.tSubclasses,,"/nodisplay")
}
} Catch tEx {
Set tSC = tEx.AsStatus()
}
Quit tSC
}Hi @Scott Roth, when 2023.2 is released VS Code will support an integrated WebSocket-based terminal that's implemented as a new Atelier API endpoint. It will be available in kits by default and the vscode-objectscript. It's documented here and the newest beta version of the vscode-objectscript extension and 2023.2 previews have the needed code.
@Michael Gosselin
The best place to report those issues is the GitHub repository for the Server Manager extension. Also, any details you can give us would be great. Does a server already exist with that name in your user settings? Do you have a workspace open?
cc @John Murray
InterSystems is working on adding support for XML import/export in the Atelier API with integration in the VS Code UI via commands. I will post the PR here when it's opened and a suitable kit is publicly available.
@Evgeny Shvarov
It's available on the VS Code Marketplace, which is where people would expect to find it.
Hi @Michael Davidovich, I can show you how to configure VS Code to see system classes. Are you using client-side or server-side editing?
Hi @Josef Zvonicek, I'm glad that VS Code is making you more productive, and thanks for the feedback. I have some comments about your fine-tuning list:
@Anna Golitsyna
I think the debugging experience in VS Code is actually better than Studio since you can view the properties of OREF's in the variables view in VS Code but not Studio. You can have that developer file an issue report on GitHub, or contact the WRC if you have a support contract.
As for features in Studio but not VS Code, the biggest one is the Inspector. It is very unlikely that it will ever be implemented in VS Code. VS Code also does not support integration with the legacy Zen BPL and DTL editors. VS Code will support integration with the new Angular versions of those editors when they are implemented. VS Code also doesn't support syntax coloring for Cache Basic or MultiValue Basic, but you can still edit those files.
@Anna Golitsyna
The big plus is that VS Code is in active development, while Studio hasn't seen enhancements in years and now is deprecated. Other than that, here are some benefits of VS Code: