Hmmm. I’m not sure I understand how to get this to work.
I created a file “/Users/janke/Library/Application Support/Sublime Text 3/Packages/User/Default.tmPreferences”. I think Sublime Text is recognizing it, because when I "touch"ed it to create a blank file and opened it in Sublime Text, it popped up a dialog about invalid XML in that file.
I created it with these contents:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>text.html</string>
<key>settings</key>
<dict>
<key>shellVariables</key>
<array>
<dict>
<key>name</key>
<string>TM_FULLNAME</string>
<key>value</key>
<string>Andrew Janke</string>
</dict>
<dict>
<key>name</key>
<string>TM_YEAR</string>
<key>value</key>
<string>2019</string>
</dict>
<dict>
<key>name</key>
<string>TM_FULLNAME_TEST</string>
<key>value</key>
<string>Andrew Janke</string>
</dict>
<dict>
<key>name</key>
<string>TM_YEAR_TEST</string>
<key>value</key>
<string>2019</string>
</dict>
</array>
</dict>
</dict>
</plist>
But when using the snippet that uses $TM_FULLNAME and $TM_YEAR, they still aren’t substituted.
Thinking those might be special variables, I created a new Snippet that uses $TM_FULLNAME_TEST and $TM_YEAR_TEST (which are defined in the Default.tmPreferences file), like this:
<snippet>
<content><![CDATA[## Copyright (C) ${TM_YEAR_TEST} $TM_FULLNAME_TEST
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
[...]
]]></content>
<tabTrigger>octklass</tabTrigger>
But when I use that snippet, the variables are still not filled in.