Karya, built on 2023-08-29T07:47:28 (patch 7a412d5d6ba4968ca4155ef276a062ccdeb9109a)
Safe HaskellSafe-Inferred

Cmd.Repl.LBlock

Description

Block level cmds.

Synopsis

Documentation

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.

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

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

doc

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.

create

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

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

dividers

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.

merge

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

stretch

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.