Oh, thank you very much for letting me know it!
+1 - Search option in the Quarks GUI
It would be really nice if
bool ScCodeEditor::insertMatchingTokens(const QString& text)
in sc_editor.cpp
would insert matching tokens on return/enter keypress instead of immediately. Most of the IDE’s I’ve used insert matching brackets on a new line after keyin for a new line.
Ability to
- read and process long line
- replace white spaces with new lines
The extensive line of pi digits from the following webpage is hard to work in SC-IDE. I pasted it into Virtual Studio Code and replaced white spaces with new lines. I would like to do the same workflow with SC-IDE. However, it could be no SC-IDE-related feature but a sclang-related part.
http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html
The ability to autofill a Ugen with its args and default values, e.g
SinOsc.ar(
/// hit the help popup →
SinOsc.ar(freq: 440, phase: 0, mul: 0, add: 0)
Or is this already possible? If so, please let me know how.
i think this is already possible with scnvim
Under Windows and Linux, the application name of sc-ide is ‘SuperCollider-IDE’, and the application name of sclang is ‘sclang’, while the two names under macOS are ‘SuperCollider’ with various icons. Using the same name for two applications is confusing for beginners. Therefore, I think it would be preferable also under macOS for the sc-ide name to be ‘SuperCollider-IDE’ and for the sclang name to be ‘sclang’.
It would be more convenient if SC-IDE would show the document in which a user evaluated the following code "a document".resolveRelative.openDocument
when closing the document opened by the code.
The steps to illustrate the current behaviour:
- Open “A.scd”.
- Evaluate the following code in the “A.scd”:
"B.scd".resolveRelative.openDocument
- The “B.scd” is opened.
- Evaluate the following code in the “B.scd” document:
"C.scd".resolveRelative.openDocument
- The “C.scd” is opened.
- Close the “C.scd”.
- The “A.scd” is displayed.
Using the SC-IDE for live coding, it would be very helpful to have multiple clipboards available for use with different keyboard shortcuts. For example, a generic line of code can be stored in a clipboard buffer, not interfering with the copy&paste buffer, and pasted in the editor by pressing, e.g., ctrl+1. Another line of code or code block can be pasted by pressing ctrl+2. The code in these buffers can be flexibly defined in the preferences of the IDE. Additionally, the keyboard shortcuts can be defined by the user as well for maximum customizability. This feature will speed up the typing of generic code that is used in live coding sessions and will allow the coders to invest their limited cognitive load in more musical tasks.
DDWSnippets quark.
hjh
DDWSnippets quark does an excellent job for live coding! My proposal is slightly different from what the quark offers. It could insert predefined snippets without typing (just hitting the keyboard shortcut), further optimizing the live coding workflow. It may be helpful in non-live coding situations as well, that is why I am proposing it as an IDE feature.
You can actually do this with DDWSnippets – the quark doesn’t spoon-feed that functionality but it should be possible.
In programming, IMO, any functionality available in a GUI should also be available through a programmatic interface – so that you aren’t limited to the one and only GUI. DDWSnippets follows this principle. Any bit of code anywhere can insert a snippet into a document by calling DDWSnippets.insert(theDocumentObject, "snippetIdString")
. This means you can write your own globalKeyDownAction to do whatever you want with it.
That’s all documented in the DDWSnippets helpfile btw.
hjh
OT but SCNvim includes a super cool .luaeaval
method that lets you drive NeoVim from SC - I use it to autoscroll to the part of a file that’s playing for example and even to programmatically select and evaluate paragraphs etc
do you have some configs/examples online @semiquaver ??
here’s a method that finds a lyric
scroll { |lyric|
var luacode = "vim.fn.search(\"%\")"
.format(lyric);
SCNvim.luaeval(luacode)
}
this will put any object in register D for pasting
+Object {
registerD {
SCNvim.luaeval( "vim.fn.setreg('d',{\"%\"})".format(this.asString) );
"% yanked to register d".format(this.asString).postln
}
}
insert Date at cursor
+Date {
*insertStamp{
var luacode = "local pos = vim.api.nvim_win_get_cursor(0);"
"vim.api.nvim_buf_set_text(0,pos[1]-1,pos[2],pos[1]-1,pos[2],{ [[%]]})".format(Date.getDate.stamp);
SCNvim.luaeval(luacode)
}
}
in the other direction you can send to sclang from lua using `require’scnvim’.send and require’scnvim editor’.send_selection. This function calls a vimscript I have that selects a kind of code block, sends it to be evaluated and then sends further instructions to sclang.
{ function()
vim.api.nvim_call_function("SelectPart",{})
require'scnvim.editor'.send_selection()
require'scnvim'.send("Part.current.synthV.render")
end, "render synthV" }
this kind of bidirectional communication between the editor and language is a little cumbersome since it transits through lua but its so so powerful in terms of building a work environment.
- text search function in the post window with the following options
- match case
- regular expression
- whole word
- the same three options for searching help documents
Make the ‘Find’ and ‘Find and Replace’ options visible.
hide/show comments in the SC-IDE editor and in the codes in the help document.
finding text for post window?
O/T but you might be ready for SCNvim…