Karya, built on 2022-03-21T01:30:44 (patch 89d1651424c35e564138d93424a157ff87457245)
Safe HaskellSafe-Inferred



Block level cmds.



list :: Cmd.CmdL [(Id.BlockId, Int)] Source #

All BlockIds, along with the count of views for each one.

find_id :: Ui.M m => Text -> m [Id.BlockId] Source #

Find BlockIds that match the string.

find :: Text -> Cmd.CmdL [(Id.BlockId, Text)] Source #

Find all blocks with the given text in their titles.

map_titles :: (Text -> Text) -> Cmd.CmdL () Source #

Transform all block titles.


html_doc :: Cmd.CmdL () Source #

Write HTML documentation for the selected track to build/derive_doc.html.

bindings_equal :: CallDoc.SymbolName -> Cmd.CmdL Text Source #

Print a summary of bindings in scope, grouped by namespace and sorted by shadow priority. This is useful to see if your call is being shadowed.

If the same call shows up twice it may mean you imported the same module twice.

block call

rename :: Id.Id -> Cmd.CmdL () Source #

Rename focused block.

It doesn't update TrackIds so they may still be named under their old block, but track id names aren't supposed to carry meaning anyway.

rename_all :: Id.BlockId -> Id.Id -> Cmd.CmdL () Source #

Rename a block and update all calls to it in all blocks. This is not totally accurate since it updates all symbols that match, but it doesn't know that the symbol would be definitely used as a block call. So if you have clef = treble and a block named treble, it will update both. I could probably solve this by switching back to separate string and symbol types, but it seems like a minor issue.

replace :: Id.BlockId -> Id.Id -> Cmd.CmdL () Source #

Rename block calls in a single block.

map_text :: (Text -> Text) -> DeriveT.Expr -> DeriveT.Expr Source #

Transform both Symbols and Strs.


for_event :: Maybe Id.BlockId -> Cmd.CmdL () Source #

If the events under the cursor are a block calls, create blocks that don't already exist. Optionally use a template block.

named :: Id.Id -> Cmd.CmdL Id.ViewId Source #

Copy the current block into a new empty block with the given name.

copy :: Bool -> Id.Id -> Cmd.CmdL Id.ViewId Source #

Create a named block with the same structure as the focused one.


destroy :: Ui.M m => [Id.BlockId] -> m () Source #


divide :: Cmd.CmdL () Source #

Insert a divider to the right of the selection.

undivide :: Cmd.CmdL () Source #

Remove a divider to the right of the selection. The selection likes to skip dividers so they can't be deleted normally.


append :: Cmd.M m => Id.BlockId -> m () Source #


add / remove time

add_time :: Cmd.M m => m () Source #

Add time encompassed by the selection to this block, expand its event in caller blocks, and renumber the ruler globally. This is like a super cmd_insert_time.

remove_time :: Cmd.M m => m () Source #

add_time_ruler :: Cmd.M m => m [Id.BlockId] Source #

Like add_time and remove_time, except this will splice the selected bit of ruler into the corresponding times in the top track. This is useful if there are changing time signatures, and you want to move future time signatures along with the events.