go to post Brett Saviano · Mar 18 The /api/monitor/alerts endpoint was created to allow for text-based alerts to be consumed by the now-discontinued System Alerting & Monitoring tool. It does not map to any concept related to Prometheus. For more information, see this documentation page.
go to post Brett Saviano · Mar 18 Thanks for the detailed explanation Mat. It makes sense that you would want to turn off VS Code's syncing since you've already implemented it via git hooks. I will think about the best way to implement these settings and will let you know when I have a proposal.
go to post Brett Saviano · Mar 18 Hi Michael, can you pleas explain what your git hooks are doing in more detail? If you don't want to share that publicly, feel free to send me a direct message.
go to post Brett Saviano · Mar 18 Hi Michael, I am convinced that a change should be made here. I'm going to always enable the code that fills in the ROUTINE and Class headers when a new file is created, because that scaffolding is valuable even if the user has to edit the generated name. However, I will leave the code that modifies existing files when they are moved guarded by the objectscript.autoAdjustName setting, which will remain false by default.
go to post Brett Saviano · Mar 12 Hi Michael, thanks for the feedback! The intention of that change was to not update the name of the document when you move it to another file location. However, it may be desirable for the extension to fill in the ROUTINE and Class headers, even if the generated name needs to be updated by the user.
go to post Brett Saviano · Feb 13 Of the three options presented already, concatenating with $LISTBUILD() is by far the most performant. Running the following method ClassMethod ListTest(l = 100000) { #; Concatenate with $LISTBUILD Set li="",zh=$ZHOROLOG For i=1:1:l Set li=li_$LISTBUILD(i) Write "Creating a list with length of ",$LISTLENGTH(li)," using $LISTBUILD() took ",$ZHOROLOG-zh," seconds",! #; Set $LIST Set li="",zh=$ZHOROLOG For i=1:1:l Set $LIST(li,i)=i Write "Creating a list with length of ",$LISTLENGTH(li)," using $LIST() took ",$ZHOROLOG-zh," seconds",! #; $LISTUPDATE Set li="",zh=$ZHOROLOG For i=1:1:l Set li=$LISTUPDATE(li,i,i) Write "Creating a list with length of ",$LISTLENGTH(li)," using $LISTUPDATE took ",$ZHOROLOG-zh," seconds" } on a recent version of IRIS produces these results: USER>d ##class(User.Test).ListTest() Creating a list with length of 100000 using $LISTBUILD() took .007244 seconds Creating a list with length of 100000 using $LIST() took 10.156168 seconds Creating a list with length of 100000 using $LISTUPDATE took 10.954107 seconds
go to post Brett Saviano · Feb 6 The issue is that I forgot to add the E/e flag to the list of flags for the Color() method, so empty lines were removed from the JSON output. I will edit the accepted answer.
go to post Brett Saviano · Feb 5 I'm glad you find this useful! Instead of looping through ^ROUTINE or ^rMAC to build the stream, you can open a %Routine object and pass that in as the first argument. That class implements the Stream interface. You can get a list of languages and attributes per language from a %SyntaxColor object using the Languages() and Attributes() methods.
go to post Brett Saviano · Feb 5 @Anna Golitsyna If you goal is to find all globals referenced in a document, you can use a modified version of the code I included in this comment. The code uses the %SyntaxColor class to get a JSON array of semantic tokens for a document, and then loops through them looking for global references. Note that this will only find literal references, not naked references or indirection. ClassMethod WriteAllGrefs() { Set syn = ##class(%SyntaxColor).%New(), in = ##class(%Stream.TmpCharacter).%New(), out = ##class(%Stream.TmpCharacter).%New() #; TODO Put your document's contents into "in" Do syn.Color(in,out,"COS" /* or "INT" or "CLS" */,"KE" /* K means JSON output, E means keep empty lines */) #; Format of the JSON output: #; [ #; #; One array for each source line #; [ #; { #; #; Language of the token. See Languages() in %Library.SyntaxColor. #; "l": %Integer, #; #; Attribute of the token. See Attributes() in %Library.SyntaxColor. #; "s": %Integer, #; #; Zero-indexed start position of the token on the line #; "p": %Integer, #; #; Length of the token in characters #; "c": %Integer #; } #; ] #; ] Set json = ##class(%DynamicArray).%FromJSON(out), lineIter = json.%GetIterator() While lineIter.%GetNext(.lineNum,.lineTokens) { Set tokensIter = lineTokens.%GetIterator() While tokensIter.%GetNext(,.token) { If ( #; COS (token.l = 1) && #; Global reference (token.s = 18) ) { Write "Gref starting in column ",token.p + 1," of line ",lineNum + 1,! } } } } You can combine this with the %Library.RoutineMgr_StudioOpenDialog query to make an index of all globals referenced in a subset of documents.
go to post Brett Saviano · Jan 31 This turned out to be a bug in VS Code core. The issue report can be found here: https://github.com/microsoft/vscode/issues/239350
go to post Brett Saviano · Jan 31 @Marc Mundt Can you post your workspace configuration (the .code-workspace file if you're using server-side editing)? Do you see any errors in the ObjectScript Output channel? Does the package only contain system or generated classes? By default those are not shown.
go to post Brett Saviano · Jan 31 Hi @Hendrik Schaefer, I've opened a GitHub Pull Request that addresses the issues you found that I was able to reproduce. I would appreciate it if you could this this vsix that includes the changes and make any comments on that Pull Request. Thanks again for your help! vscode-objectscript-2.12.11-dev.1470.vsix.zip
go to post Brett Saviano · Jan 27 Thank you for testing the beta! I will attempt to reproduce your issues and will report back. EDIT: Before I start testing, do you see any errors in the ObjectScript Output channel (besides EMFILE)? Also, the "auto-generating name" on creation of a new class/routine has been intentionally removed. This change divorces file importing from the export settings' folder structure, so it didn't make sense to keep using those settings to generate a file name. EDIT 2: The "auto-generating name" feature is still in the extension, it's just off by default. To turn it back on, use the objectscript.autoAdjustName setting.
go to post Brett Saviano · Jan 23 The Pull Request that implements these changes has been merged. GitHub beta releases starting with v2.12.11-beta.3 contain these changes, so there is no more need to use the special build of the extension found in the post.
go to post Brett Saviano · Jan 21 Hi @Andre Ribera , AFAIK there isn't a way to check on a server if a Studio client connected to it has unsaved changes to a project. You can edit projects programmatically using the %Studio.Project class. You may also want to consider making your app IDE-agnostic because Studio is deprecated and has been removed from IRIS kits starting with 2024.2.
go to post Brett Saviano · Jan 21 Hi @Olivier Caudron, happy to help! The :client-side editing" model in VS Code (editing files on the local file system) does not depend on Git. You can use it with any source control system. Because you're using Git, editing files in this way will unlock VS Code's excellent default Git integration.
go to post Brett Saviano · Jan 21 Hi @Luc Morningstar, if VS Code is not meeting your needs then I would be happy to hear about how we can improve it. We take bug reports and feature requests via GitHub issues. Please see these docs on how to report issues from VS Code and which types of issues go to which extension. I would also like to note that VS Code will fail to save a class if its name differs from another class name only in case.