Skip to content

Releases: nojanath/SublimeKSP

1.20.0

23 Sep 20:25
c548c79
Compare
Choose a tag to compare

This update adds support for everything that was newly introduced with Kontakt 8.0, along with the following changes:

  • Added support for f-strings! These enable way easier concatenation of expressions in strings. Use <> tags to enclose the expression, for example: f'The value of variable a is: <a>.'

  • Fixed return types for sgn() and signbit() commands - these can return either integer or real depending on context, so they should work like abs() already did

  • Fixed the behavior of optimize_code and additional_branch_optimization pragmas to match CLI behavior (they should have automatically enabled extra_syntax_checks if it wasn't explicitly called)

  • Fixed -> max_value and -> min_value shorthands not being syntax colored

  • Fixed save_compiled_source pragma not working with a relative path that is just a .txt file without a parent folder

  • Updated activation triggers for many snippets to contain the whole word, (for example "family" instead of "fam")

Thanks to Nabeel from Impact Soundworks (@eitherys) for f-string support!

Have fun!

1.19.0

24 Apr 09:34
bbb0f93
Compare
Choose a tag to compare

This update adds support for new engine parameters introduced with Kontakt 7.10, along with the following changes:

  • Define substitutions have been optimized to only run on new code generations, rather than multiple steps repeated over the entire compiled output, which improves compile times greatly in some cases

  • Macro arguments can now spell defines to then be re-substituted at practically endless levels (until macros themselves crash at 40 levels). post_iterate_macro()/post_literate_macro() commands are thus deprecated now

  • Macro expansion now records the top-level calling line into expanded lines, which allows the developer to see the line of the macro invoked in the error message

  • Fixed file associations to code lines imported via recursive directory imports

  • Fixed optimize_code pragma directive did not work

  • Symbol list (CtrlR or CmdR on Mac) will now show the whole UI callback properly if the name of UI control contains macro #tokens#

  • Macro #tokens# are now syntax colored in most cases (some edge cases where this doesn't work exist still)

Thanks to Nabeel from Impact Soundworks (@eitherys) for the define/macro/directory import fixes and improvements!

Have fun!

1.18.2

06 Feb 19:31
a3e6950
Compare
Choose a tag to compare

This hotfix update resolves another issue pertaining to .sublime-syntax and .sublime-color-scheme clashing with old .tmTheme files.

Everyone, make sure to update, and have fun!

1.18.1

31 Jan 08:59
1ac27bb
Compare
Choose a tag to compare

This hotfix update resolves teething issues caused by the addition of the new compiler option, Additional Branch Optimization Steps

  • Fixed compilation not working if task functions were used

  • Fixed incorrect default value for Additional Branch Optimization Steps option (it was set to true, even if the menu didn't show it)

  • compile_with/withoutpragma directive for the new compiler option now works and is documented on Wiki (it's extra_branch_optimization)

Have fun!

1.18.0

29 Jan 21:57
Compare
Choose a tag to compare

This update adds support for new engine parameters and callback type introduced with Kontakt 7.8, along with the following changes:

  • Added an option which enables completions for vanilla KSP built-in constants and variables (with $, %, etc. type prefixes)

  • Added .SIZE define for literal defines (issue #99)

  • Added an error message if function declaration has duplicate argument names

  • Added a compiler option to enable additional branch optimization steps - this allows using if-else with defines, which can be used in many interesting ways

  • Added += and =+ operators to defines, which allows appending or prepending a literal define to the existing list of literals - see Wiki for more info!

  • Improved internal structure of built-ins data file, which enables using vanilla KSP built-in constants as they were supposed to be used
    (previously you couldn't use these to, for example, specify array size upon declaration)

  • Improved automatic syntax detection (SublimeKSP will automatically switch syntax to KSP if enough keywords have been detected in the first 5000 characters of currently focused document)

  • Improved syntax coloring of pers, instpers and read keywords when they are placed after the UI widget specifier

  • Further improved command line interface: output_file argument is now completely optional; save_compiled_source pragmas are now disregarded if output_file argument is specified

  • Fixed operator precedence for or, xor, .or. and .xor. operators

  • Fixed task function return and out parameters not working correctly (issue #217)

  • Fixed an issue where multi-dimensional arrays clashed with Combine Callbacks feature (issue #389)

  • Fixed "Optimize Compiled Code" option breaking with bitwise operators (issue #423)

  • Fixed $CONTROL_PAR_CUSTOM_ID missing from syntax coloring

Have fun!

1.17.2

25 Oct 10:04
3937b6f
Compare
Choose a tag to compare

This is a minor update with the following changes:

  • Fixes an issue introduced in 1.17.1, where import paths wouldn't be checked if they exist before compilation continued. Now works again!

  • Option "Play sound when compilation finishes" now finally works even for SublimeKSP installations done via Package Control!

Have fun!

1.17.1

28 Sep 09:07
9e630b3
Compare
Choose a tag to compare

Version 1.17.1

This is a minor update with the following changes:

  • Improved detection of duplicate defines - now both the name and the value of a define have to match in order to throw a compiler error

  • Removed $ENGINE_PAR_RAUM_MIX because it is not a valid engine parameter

  • Added support for importing whole folders in one go, instead of listing them file by file

  • Pressing Alt+O with cursor focused on the line which imports a folder will show all .ksp files within that folder in a new Sublime Text window

Have fun!

1.17.0

13 Sep 23:00
Compare
Choose a tag to compare

This version brings support for Kontakt 7.6 additions (including NKS2 parameter descriptive information and navigation commands!), along with several fixes.

  • Added support for real array arguments in load/save_array(_str) commands. This was supposed to be there in 7.5, alas...

  • Fixed missing Raum engine parameters ($ENGINE_PAR_RAUM_REVERB, $ENGINE_PAR_RAUM_PREDELAY_UNIT)

  • Fixed incorrectly named engine parameter for Raum Low Shelf (it was $ENGINE_PAR_RAUM_LOWCUT instead of $ENGINE_PAR_RAUM_LOWSHELF)

  • Fixed superfluous closed parentheses appearing in auto-completion suggestions for certain commands

  • Updated the list of functions with forced parentheses with all remaining commands that weren't there yet

1.16.0

11 Jul 19:42
5fbfc33
Compare
Choose a tag to compare
  • Added overloaded macros - different macros can now be executed based on different number of arguments they have!

  • Added the capability for override keyword which allows user-defined functions to override built-in functions

  • Added an error in case a duplicate define is being declared (issue #380)

  • Added a new comment type: section comment {{ }}, which will also show up in the symbol list (Ctrl/Cmd+R), making it easier to create named bookmark jumps in the code

  • Fixed persistence shorthands not working if they come after ui_control keyword (issue #379)

Thanks to @JackWilliams-FractureSounds for implementing overloaded macros and expanding the usage of override keyword!

1.15.0

29 Apr 21:13
89d4ccf
Compare
Choose a tag to compare
  • Fixed get_ui_id() being inserted in various situations when it shouldn't have been added (for example when using an array when setting $CONTROL_PAR_PARENT_PANEL etc.)

  • Fixed a couple of issues that prevented compilation from command line in certain cases (when using inline iterate_macro(), for example, string placeholders weren't reachable to the preprocessor)

  • Fixed #n# token not being replaced inside strings when using inline literate/iterate_macro() (issue #306)

  • Info bar line in Sublime Text will now report how long the compilation lasted upon successful compilation

  • If compiling from command line and output file argument wasn't specified, the compiler will notify the user about it upon successful compilation

  • Added $NI_ZONE_STATUS_ constants to builtins, which somehow managed to evade being included around Kontakt 7.1 times!

  • redirect_midi() command now has its arguments properly documented

  • Arrow shorthand notation for event parameters didn't work with functions like by_marks(), now it does (issue #350)

  • Added more syntax checks (when "Extra syntax checks" option is enabled) relevant to UI control declarations, and arguments which can be both integer and real (like for the sort() command)

  • Minor tweaks to KScript Dark theme for improved contrast

  • Cleaned up several files in the repository for better readability

  • Even more syntax coloring improvements, for example previously %CONTROL_PAR_VALUE would colorize as a valid control parameter, when it isn't valid - now it doesn't anymore; using macro tokens inside variable declarations didn't colorize properly, now it does

  • Completions list now looks the same in Sublime Text 4 as it does in Sublime Text 3 (function arguments are listed in parentheses after function name)

  • Fixed an error where all functions that had no arguments in the completion list ended up with closed parentheses (for example, exit()) which was incorrect

  • Added several more unit tests to keep us on our toes so that we don't break things in the future

  • Added .bat and .sh scripts to run tests locally (requires Python 3 to be installed and added to PATH environment variable)

  • Removed duplicate callbacks warning that was triggered too early in the compilation process

  • Removed Logger functionality - we recommend using Creator Tools with watch_var()/watch_array_idx() commands instead!

Thanks as always to @JackWilliams-FractureSounds for solving some of the tricky ones from the above list!