Is it possible to export User-Defined Code Fragments from Studio?
It's well-known among Studio users that besides few predefined code fragments (for ObjectScript, Basic, MV Basic) it's possible to add user-defined code fragments. I found it rather convenient to use them as patterns that help to follow some conventions (internal standards) of writing, say, methods descriptions.
But I didn't find a way how to share these patterns, except dumb copy-pasting. Did somebody succeed with this task? Any help would be appreciated.
I'd rephrase it to - is it possible with VSCode?
AFAIK fragments or snippets support is an embedded feature of VSCode. Tagging @Raj Singh and @Dmitry Maslennikov
Here's how you can add your ObjectScript snippents to VSCode.
They are usually Stored in:
C:\Users\<USER>\Documents\Intersystems\CodeSnippets.txt
If they are not there open Studio -Instruments - Parameters - Environment - Code Fragments
The file path would be there:
Look at the file CodeSnippets.txt which is located in the Documents\InterSystems directory on your windows pc where Studio is installed
Many thanks for the help! Nice day to everybody!
As with everything in VS code you can link the code snippets at a USER level or at a WORKSPACE level
Another trick is to write snippets of code as #defines in an INCLUDE file and then reference the snippet using the syntax $$${snippet_nanme}
Then Include the include file in the classes you write.
If you work your way through the InterSystems include files you will find many examples where the ISC developers have done exactly this.
Here is an example of a #define for a block of code
Set %response.Status = ..#HTTP400BADREQUEST ##Continue
Set:'$D(tErrorResp) tErrorResp=##class(PJH.HST.JSON.Proxy.ErrorStatus).%New() ##Continue
Set tErrorResp.error = %ErrorResponseMessage_" Contact system administrator" ##Continue
$$$WriteJSONError
;Do ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(tErrorResp,.tVisit,,"ltw")
The #continue at the end of each line tells the .inc processor to proceed to the next line
then in your code you just write your line of code as
do $$$JSONError400(%ErrorResponseMessage)
.......
Nigel
@Nigel.Salm5021 A great example for the traditional approach
Thank you, Nigel.
Multi-line macros don't meet my needs. What I really need are fillable patterns (templates), to prompt developers on writing methods (functions) descriptions in a standardized manner, something like this:
Ah, ok
I'm afraid I don't have an easy answer for this one. I just tried creating an abstract class with all of the comments indicating the contents and structure and then inherited it into another new persistent class but all of the /// comments did not load into the new class. I tried compiling the class and then used the View-Class Documentation in the hope that the comments would appear in the documentation but they did not :-(
Back to the drawing board
Nigel
Nigel,
I'm OK with the answers given by Eduard and Danny. After moving to VS Code situation with snippets would be even better.
Thank you again.