================================================================================
0. File andreas-talon/settings/settings_work_laptop.talon (failing)
================================================================================

hostname: EliteBook
-

settings():
    imgui.scale = 1.3
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (settings_declaration
      (block
        (assignment_statement
          (identifier)
          (float))))))

================================================================================
1. File andreas-talon/misc/tabs/tabs.talon
================================================================================

tag: user.tabs
-

tab last:                   app.tab_previous()
tab last <number_small>:
    app.tab_previous()
    repeat(number_small - 1)
tab next:                   app.tab_next()
tab next <number_small>:
    app.tab_next()
    repeat(number_small - 1)
tab <number_small>:         user.tab_jump(number_small)
tab minus <number_small>:   user.tab_jump_from_back(number_small)
tab final:                  user.tab_final()
tab back:                   user.tab_back()
tab left:                   user.tab_move_left()
tab right:                  user.tab_move_right()
tab new:                    app.tab_open()
tab duplicate:              user.tab_duplicate()
tab (reopen | restore):     app.tab_reopen()

tab close:                  app.tab_close()
tab last close:
    app.tab_previous()
    sleep(50ms)
    app.tab_close()
tab next close:
    app.tab_next()
    sleep(50ms)
    app.tab_close()
tab <number_small> close:
    user.tab_jump(number_small)
    sleep(50ms)
    app.tab_close()
tab final close:
    user.tab_final()
    sleep(50ms)
    app.tab_close()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
2. File andreas-talon/misc/abort/abort.talon
================================================================================

mode: command
mode: dictation
-

settings():
    user.abort_word = "cancel"

cancel$:   skip()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (settings_declaration
      (block
        (assignment_statement
          (identifier)
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word)
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
3. File andreas-talon/misc/screenshot/screenshot.talon
================================================================================

capture screen:                       user.screenshot()
capture screen <number_small>:        user.screenshot(number_small)
capture window:                       user.screenshot_window()
capture selection:                    user.screenshot_selection()

capture screen clip:                  user.screenshot_clipboard()
capture screen <number_small> clip:   user.screenshot_clipboard(number_small)
capture window clip:                  user.screenshot_window_clipboard()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
4. File andreas-talon/misc/numbers/numbers.talon
================================================================================

# numb fifty five point two -> 55.2
<user.number_prefix>:   "{number_prefix}"
--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))))

================================================================================
5. File andreas-talon/misc/search_engine.talon
================================================================================

search for <user.text>$:
    user.browser_focus_open(text)

search for (this | dis):
    text = edit.selected_text()
    user.browser_focus_open(text)
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
6. File andreas-talon/misc/scroll/scroll.talon
================================================================================

tag: user.scroll
-

small up:                   user.scroll_up()
small down:                 user.scroll_down()
small left:                 user.scroll_left()
small right:                user.scroll_right()

half up:                    user.scroll_up_half_page()
half down:                  user.scroll_down_half_page()

full up | upper:            user.scroll_up_page()
full down | downer:         user.scroll_down_page()

flow up:                    user.scroll_up_continuous()
flow down:                  user.scroll_down_continuous()

flow speed show:            user.scroll_speed_show()
flow speed <number_small>:
    user.scroll_speed(number_small)
flow speed up:              user.scroll_speed_increase()
flow speed down:            user.scroll_speed_decrease()

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (choice
          (seq
            (word)
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (choice
          (seq
            (word)
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
7. File andreas-talon/misc/modes/dictation_mode.talon
================================================================================

mode: dictation
language: en_US
language: sv_SE
experiment: anchor-file
-

# Freely dictate text
<user.prose>:               "{prose}"

# Insert the actual words
# Only words, no symbols or numbers
escape <user.words>$:       "{words}"
escape <user.words> over:   "{words}"

new line:
    edit.line_insert_down()
    user.dictation_format_reset()

new block:
    edit.line_insert_down()
    edit.line_insert_down()
    user.dictation_format_reset()

# Switch to command mode and insert a phrase
(command mode | over) [<phrase>]$:
    user.command_mode(phrase or "")

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (seq
                (word)
                (word))
              (word)))
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))))

================================================================================
8. File andreas-talon/misc/modes/command_mode.talon
================================================================================

# Switch to dictation mode and insert a phrase
dictate [<phrase>]$:      user.dictation_mode(phrase or "")

# Switch to swedish dictation
swedish$:                 user.swedish_mode()

# Switch to mixed mode and insert a phrase
mixed mode [<phrase>]$:   user.mixed_mode(phrase or "")

# Just guard so you can always try to break out of dictation mode and it won't do anything weird
command mode:             skip()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (comment)
    (command_declaration
      (rule
        (word)
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
9. File andreas-talon/misc/delimiters/delimiters.talon
================================================================================

# ----- Matching delimiter pairs -----
{user.delimiter_pair}:   user.delimiters_pair_insert_by_name(delimiter_pair)

{user.delimiter_pair_wrap} wrap word:
    edit.select_word()
    user.delimiters_pair_wrap_selection(delimiter_pair_wrap)

--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
10. File andreas-talon/misc/lorem_ipsum/lorem_ipsum.talon
================================================================================

lorem ipsum$:                  user.lorem_ipsum(30)
lorem ipsum <number_small>$:   user.lorem_ipsum(number_small)
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
11. File andreas-talon/misc/sleep/sleep.talon
================================================================================

mode: command
mode: dictation
language: en_US
language: sv_SE
-
settings():
    user.sleep_word = "drowse"

drowse [<phrase>]$:   user.talon_sleep()
^talon sleep$:        user.talon_sleep()
^talon status$:       user.talon_sleep_status()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (settings_declaration
      (block
        (assignment_statement
          (identifier)
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
12. File andreas-talon/misc/sleep/sleep_mode.talon
================================================================================

mode: sleep
-

settings():
    speech.timeout = 0

^talon wake$:     user.talon_wake()
^talon status$:   user.talon_sleep_status()

#this exists solely to prevent talon from waking up super easily in sleep mode at the moment with wav2letter
<phrase>:         skip()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (settings_declaration
      (block
        (assignment_statement
          (identifier)
          (integer))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
13. File andreas-talon/misc/operating_system/linux.talon
================================================================================

os: linux
-

switcher:       key(super)
show desktop:   key(super-ctrl-d)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
14. File andreas-talon/misc/operating_system/windows.talon
================================================================================

os: windows
-

show desktop:               key(super-d)
switcher:                   key(ctrl-alt-tab)

open task manager:          key(ctrl-shift-escape)

task view:                  key(super-tab)
start menu:                 key(super)
context menu:               key(super-x)

(start | stop) recording:   key(alt-f9)

scout app [<user.text>]$:
    key(super-s)
    "apps: {text or ''}"
pop app [<user.text>]$:
    key(super-s)
    "apps: {text or ''}"
    key(enter)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
15. File andreas-talon/misc/operating_system/operating_system.talon
================================================================================

open settings:       app.preferences()

^system shutdown$:   user.system_shutdown()
^system restart$:    user.system_restart()
^system hibernate$:
    user.talon_sleep()
    user.system_hibernate()
^system lock$:       key(super-l)

open {user.launch_command}:
    user.exec(launch_command)

open path {user.path}:
    user.exec(path)

open browser {user.webpage}:
    user.browser_focus_open(webpage)
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
16. File andreas-talon/misc/navigation/navigation.talon
================================================================================

tag: user.navigation
-

go back:      user.go_back()
go forward:   user.go_forward()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
17. File andreas-talon/misc/editor.talon
================================================================================

# ----- Navigation -----
page up:                  edit.page_up()
page down:                edit.page_down()

go top:
    user.stop_app()
    edit.file_start()
go bottom:
    user.stop_app()
    edit.file_end()

head:                     edit.line_start()
tail:                     edit.line_end()
middle:                   user.line_middle()

up [<number_small>]:      user.up(number_small or 1)
down [<number_small>]:    user.down(number_small or 1)
left [<number_small>]:    user.left(number_small or 1)
right [<number_small>]:   user.right(number_small or 1)

before:                   edit.word_left()
after:                    edit.word_right()

slap:                     edit.line_insert_down()
slapper:                  user.line_insert_down_twice()

indent:                   edit.indent_more()
dedent:                   edit.indent_less()

# ----- Selection -----
take all:                 edit.select_all()
take none:                edit.select_none()

extend top:               edit.extend_file_start()
extend bottom:            edit.extend_file_end()
extend head:              edit.extend_line_start()
extend tail:              edit.extend_line_end()

extend up:                edit.extend_up()
extend down:              edit.extend_down()
extend left:              edit.extend_left()
extend right:             edit.extend_right()

extend before:            edit.extend_word_left()
extend after:             edit.extend_word_right()

# ----- Delete, undo, redo -----
undo:                     edit.undo()
redo:                     edit.redo()

deli:                     edit.delete()
drill:                    user.delete_right()

# ----- Cut, copy, paste -----
cut (this | dis):         edit.cut()
copy (this | dis):        edit.copy()
paste it:                 edit.paste()
paste special:            edit.paste_match_style()

# ----- Word -----
take word:                edit.select_word()
cut word:                 user.cut_word()
copy word:                user.copy_word()
paste to word:            user.paste_word()
(chuck | clear) word:     edit.delete_word()

remove:                   user.delete_word_left()
wipe:                     user.delete_word_right()

# ----- Misc -----
drag up:                  edit.line_swap_up()
drag down:                edit.line_swap_down()
disk:                     edit.save()

# ----- Text insertions -----
make to do:               "TODO "
bullet:                   "* "
checkbox:                 "* [ ] "
spam:                     ", "
stacker:                  ": "
period:                   ". "
dasher:                   " - "
arrow:                    user.insert_arrow()

# ----- Cursorless duplication -----
# This are here because their implementation is useful in vscode input dialogs
take line:                edit.select_line()
cut line:                 user.cut_line()
copy line:                user.copy_line()
paste to line:            user.paste_line()
chuck line:               edit.delete_line()
clear line:               user.clear_line()

--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
18. File andreas-talon/misc/extensions/extensions.talon
================================================================================

<user.extension>:   "{extension}"
<user.domain>:      "{domain}"
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))))

================================================================================
19. File andreas-talon/misc/mouse/zoom_mouse.talon
================================================================================

tag: user.zoom_mouse
-

{user.mouse_click}:   user.zoom_mouse_click(mouse_click)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
20. File andreas-talon/misc/mouse/mouse.talon
================================================================================

# Buttons
mouse {user.mouse_click}:   user.mouse_click(mouse_click)
mouse drag:                 user.mouse_drag()

# Scroll
scroll up [<number_small>]: user.mouse_scroll("up", number_small or 1)
scroll down [<number_small>]: user.mouse_scroll("down", number_small or 1)

climb:                      user.mouse_scrolling("up")
drop:                       user.mouse_scrolling("down")

mouse speed show:           user.mouse_scroll_speed_notify()
mouse speed <number_small>: user.mouse_scroll_speed_set(number_small)
mouse speed up:             user.mouse_scroll_speed_increase()
mouse speed down:           user.mouse_scroll_speed_decrease()

mouse gaze:                 user.mouse_gaze_scroll()

# Modes
^mouse calibrate$:          tracking.calibrate()
^mouse control$:            user.mouse_toggle_control_mouse()
^mouse zoom$:               user.mouse_toggle_zoom_mouse()

# Misc
mouse center:               user.mouse_center_window()
mouse center click:
    user.mouse_center_window()
    mouse_click(0)

#TODO cursor
^cursor show$:              user.mouse_show_cursor()
# ^cursor hide$:                  user.mouse_hide_cursor()

mouse print position:
    print("{mouse_x()}, {mouse_y()}")

mouse copy position:
    clip.set_text("{mouse_x()}, {mouse_y()}")

--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (comment)
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))))

================================================================================
21. File andreas-talon/misc/editor_not_vscode.talon
================================================================================

not app: vscode
-

# Line
pre line:                edit.line_start()
post line:               edit.line_end()
clone line:              edit.line_clone()
drink (line | this):     edit.line_insert_up()
pour (line | this):      edit.line_insert_down()

# Head / tail
take head:               user.select_line_start()
take tail:               user.select_line_end()
cut head:                user.cut_line_start()
cut tail:                user.cut_line_end()
copy head:               user.copy_line_start()
copy tail:               user.copy_line_end()
(chuck | clear) head:    user.delete_line_start()
(chuck | clear) tail:    user.delete_line_end()

# Paragraph
pre block:               edit.paragraph_start()
post block:              edit.paragraph_end()
take block:              edit.select_paragraph()
cut block:               user.cut_paragraph()
copy block:              user.copy_paragraph()
paste to block:          user.paste_paragraph()
(chuck | clear) block:   edit.delete_paragraph()

# File / document
pre file:                edit.file_start()
post file:               edit.file_end()
take file:               edit.select_all()
cut file:                user.cut_all()
copy file:               user.copy_all()
paste to file:           user.paste_all()
(chuck | clear) file:    user.delete_all()

# Navigate to specified text/symbol: go right paren
{user.navigation_action} {user.navigation_direction} to <user.any_alphanumeric_key>:
    user.navigation(navigation_action, navigation_direction, any_alphanumeric_key)

# Reformat
<user.formatters> format this:
    user.reformat_selection(formatters)
<user.formatters> format line:
    edit.select_line()
    user.reformat_selection(formatters)

# Homophones
phones this:             user.homophones_cycle_selected()

# Wrap selection with delimiter pair
{user.delimiter_pair_wrap} wrap this:
    user.delimiters_pair_wrap_selection(delimiter_pair_wrap)
{user.delimiter_pair_wrap} wrap line:
    edit.select_line()
    user.delimiters_pair_wrap_selection(delimiter_pair_wrap)

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (match_modifier)
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (list
            (identifier))
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
22. File andreas-talon/misc/foot_switch/foot_switch.talon
================================================================================

# Top button
key(keypad_0:down):   skip()
key(keypad_0:up):     user.foot_switch_key(0)

# Center button
key(keypad_1:down):   skip()
key(keypad_1:up):     user.foot_switch_key(1)

# Left button
key(keypad_2:down):   skip()
key(keypad_2:up):     user.foot_switch_key(2)

# Right button
key(keypad_3:down):   skip()
key(keypad_3:up):     user.foot_switch_key(3)

scroll reverse:       user.foot_switch_scroll_reverse()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (comment)
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (comment)
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (comment)
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (key_binding_declaration
      (key_action
        (implicit_string))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
23. File andreas-talon/misc/audio_video.talon
================================================================================

tag: user.av
-

mute:   user.mute_microphone()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
24. File andreas-talon/misc/command_history/command_history.talon
================================================================================

command history:                  user.command_history_toggle()
command history clear:            user.command_history_clear()
command history less:             user.command_history_less()
command history more:             user.command_history_more()
command history <number_small>:   user.command_history_set_size(number_small)

subtitles (show | hide):          user.toggle_subtitles()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
25. File andreas-talon/misc/zoom/zoom.talon
================================================================================

tag: user.zoom
-

# ----- Zoom -----
^zoom in$:              edit.zoom_in()
^zoom out$:             edit.zoom_out()
^zoom reset$:           edit.zoom_reset()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
26. File andreas-talon/misc/clipboard_manager/clipboard_manager.talon
================================================================================

clippy:   user.clipboard_manager_toggle()

paste <number_small> [and <number_small>]*:
    user.clipboard_manager_paste(number_small_list)

paste special <number_small> [and <number_small>]*:
    user.clipboard_manager_paste(number_small_list, 1)

--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (integer))))))))

================================================================================
27. File andreas-talon/misc/clipboard_manager/clipboard_manager_open.talon
================================================================================

mode: user.clipboard_manager
-

clippy stay:
    user.clipboard_manager_toggle_sticky()

clippy update:
    user.clipboard_manager_update()

clippy clear:
    user.clipboard_manager_remove()

clippy chuck <number_small> [and <number_small>]*:
    user.clipboard_manager_remove(number_small_list)

clippy split <number_small> [and <number_small>]*:
    user.clipboard_manager_split(number_small_list)

clippy copy <number_small> [and <number_small>]*:
    user.clipboard_manager_copy(number_small_list)

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
28. File andreas-talon/misc/window_management/window_management.talon
================================================================================

focus {user.running_application}:
    user.focus_name(running_application)

(focus {user.running_application} <phrase>)+$:
    user.focus_names(running_application_list, phrase_list)

swap {user.running_application}:
    user.swap_window_position(running_application)

window new:                 app.window_open()
window close:               app.window_close()
window hide:                app.window_hide()
window last:                app.window_previous()
window next:                app.window_next()
window back:                key("alt-tab")

snap <user.window_snap_position>: user.snap_window(window_snap_position)
snap next screen:           user.move_window_next_screen()
snap last screen:           user.move_window_previous_screen()
snap screen <number_small>: user.move_window_to_screen(number_small)

move center:                user.move_window_to_screen_center()
move {user.resize_side} {user.resize_direction} [{user.resize_size}]:
    user.resize_window(resize_side, resize_direction, resize_size or "medium")

(snap | move) revert:       user.move_window_revert()

screen numbers:             user.screens_show_numbering()

--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (repeat1
          (parenthesized_rule
            (seq
              (word)
              (list
                (identifier))
              (capture
                (identifier)))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))
          (list
            (identifier))
          (optional
            (list
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string
                  (string_content))))))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
29. File andreas-talon/misc/window_management/window_focus_open.talon
================================================================================

mode: user.focus
-

^focus hide$:             user.focus_hide()
^focus <number_small>$:   user.focus_index(number_small - 1)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))))

================================================================================
30. File andreas-talon/misc/global.talon
================================================================================

then:   skip()
stop:   user.stop_app()

pick <number_small>:
    user.pick_item(number_small - 1)
pick to:
    user.pick_item(1)
pick <user.word>:
    "{word}"
    key(enter)
pick <user.letters>:
    "{letters}"
    key(enter)

--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
31. File andreas-talon/misc/talon_helpers/talon_helpers.talon
================================================================================

talon print context:
    name = app.name()
    executable = app.executable()
    title = win.title()
    print("Name: {name}")
    print("Executable: {executable}")
    print("Title: {title}")

talon print title:                 print(win.title())
talon print tags:                  print(" \n{user.talon_get_tags()}")
talon print modes:                 print(" \n{user.talon_get_modes()}")
talon print captures:              print(" \n{user.talon_get_captures()}")
talon print lists:                 print(" \n{user.talon_get_lists()}")
talon print actions:               print(" \n{user.talon_get_actions()}")
talon print actions long:          print(" \n{user.talon_get_actions_long()}")
talon print <user.text> actions:   print(" \n{user.talon_get_actions_search(text)}")
talon print list problems:         user.talon_print_list_problems()
talon print core:                  print(" \n{user.talon_get_core()}")

talon copy title:                  clip.set_text(win.title())
talon copy tags:                   clip.set_text(user.talon_get_tags())
talon copy modes:                  clip.set_text(user.talon_get_modes())
talon copy captures:               clip.set_text(user.talon_get_captures())
talon copy actions:                clip.set_text(user.talon_get_actions())
talon copy actions long:           clip.set_text(user.talon_get_actions_long())
talon copy <user.text> actions:    clip.set_text(user.talon_get_actions_search(text))
talon copy core:                   clip.set_text(user.talon_get_core())

talon copy python context:         user.talon_add_context_clipboard_python()
talon copy context:                user.talon_add_context_clipboard()
talon copy commands:               user.help_copy_all_commands()

talon open log:                    menu.open_log()
talon open repl:                   menu.open_repl()
talon open home:                   menu.open_talon_home()
talon check updates:               menu.check_for_updates()

talon restart:                     user.talon_restart()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list
                  (variable
                    (identifier)))))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
32. File andreas-talon/misc/keys/keys.talon
================================================================================

# Letters [A-Z]
{user.letter}:          key(letter)

# Symbol keys: !, %, _
{user.key_symbol}:      key(key_symbol)

# Digits [0-9]
{user.key_number}:      key(key_number)

# Special keys.
(enter | okay):         key(enter)
tab:                    key(tab)

# Special symbols
new line [symbol]:      "\\n"
tab symbol:             "\\t"

# Modifier(s) + key: "control alpha" or "control win left"
<user.key_modifiers> <user.key_unmodified>:
    key("{key_modifiers}-{key_unmodified}")

# Single key. Including Modifiers, [a-z], [0-9], [F1-F12], arrow, symbols
press <user.key_any>:   key(key_any)

# Add symbol at end of line and then insert line below
push {user.key_symbol}:
    edit.line_end()
    "{key_symbol}"
    edit.line_insert_down()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (parenthesized_rule
          (choice
            (word)
            (word))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (word))))
      (block
        (expression_statement
          (string
            (string_escape_sequence)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_escape_sequence)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
33. File andreas-talon/misc/find/find.talon
================================================================================

tag: user.find
-

scout for clip:               edit.find(clip.text())
scout [<user.text>]$:         edit.find(text or "")

scout all for clip:           user.find_everywhere(clip.text())
scout all [<user.text>]$:     user.find_everywhere(text or "")

replace [<user.text>]$:       user.find_replace(text or "")
replace all [<user.text>]$:   user.find_replace_everywhere(text or "")

scout case:                   user.find_toggle_match_by_case()
scout word:                   user.find_toggle_match_by_word()
scout expression:             user.find_toggle_match_by_regex()
replace case:                 user.find_replace_toggle_preserve_case()

scout last:                   edit.find_previous()
scout next:                   edit.find_next()

scout hide:
    edit.find("")
    key(escape)

replace confirm:              user.find_replace_confirm()
replace confirm all:          user.find_replace_confirm_all()

scout file for clip:          user.find_file(clip.text())
scout file [<user.text>] [<user.extension>]$:
    text = text or ""
    extension = extension or ""
    user.find_file(text + extension)

pop <user.text>$:
    edit.find(text)
    key(enter)

pop file <user.text> [<user.extension>]$:
    extension = extension or ""
    user.find_file(text + extension)
    sleep(300ms)
    key(enter)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string))))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (action
                (identifier)
                (argument_list)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (binary_operator
            (variable
              (identifier))
            (operator)
            (string)))
        (assignment_statement
          (identifier)
          (binary_operator
            (variable
              (identifier))
            (operator)
            (string)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (variable
                  (identifier))))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (binary_operator
            (variable
              (identifier))
            (operator)
            (string)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (variable
                  (identifier))))))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
34. File andreas-talon/misc/emoticons/emoticons.talon
================================================================================

face {user.emoticon}:   " {emoticon}"
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))))

================================================================================
35. File andreas-talon/misc/repeater/repeater.talon
================================================================================

<user.repeater_phrase>:                 core.repeat_command(repeater_phrase)
repeat <user.repeater_phrase>:          core.repeat_command(repeater_phrase + 1)

phrase <user.repeater_phrase>:          core.repeat_partial_phrase(repeater_phrase)
repeat phrase <user.repeater_phrase>:   core.repeat_partial_phrase(repeater_phrase + 1)
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))))

================================================================================
36. File andreas-talon/misc/help/help_commands_open.talon
================================================================================

mode: user.help_commands
-

help hide:             user.help_hide()
help <number_small>:   user.help_select_index(number_small - 1)
help last:             user.help_previous()
help next:             user.help_next()
help return:           user.help_return()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (integer)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
37. File andreas-talon/misc/help/help_scope_open.talon
================================================================================

mode: user.help_scope
-

^scope hide$:   user.help_scope_toggle()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
38. File andreas-talon/misc/help/help_alphabet_open.talon
================================================================================

mode: user.help_alphabet
-

^alphabet hide$:   user.help_alphabet_toggle()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
39. File andreas-talon/misc/help/help_search_open.talon
================================================================================

mode: user.help_search
-

^search hide$:   user.help_search_hide()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
40. File andreas-talon/misc/help/help_formatters_open.talon
================================================================================

mode: user.help_formatters
-

^(format|formatters) hide$:   user.formatters_help_toggle()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
41. File andreas-talon/misc/help/help.talon
================================================================================

^help active$:                         user.help_active_toggle()
^help search <user.text>$:             user.help_search(text)
^help context {user.help_contexts}$:   user.help_context(help_contexts)

^help <user.text> commands$:           user.help_search_commands(text)
^help <user.text> actions$:            user.help_search_actions(text)

^help alphabet$:                       user.help_alphabet_toggle()
^help scope$:                          user.help_scope_toggle()
^help (format|formatters)$:            user.formatters_help_toggle()
^help focus$:                          user.focus_help_toggle()
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (list
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (capture
            (identifier))
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (capture
            (identifier))
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
42. File andreas-talon/misc/language_mode/language_mode.talon
================================================================================

^force see sharp$:        user.code_set_language_mode("csharp")
^force see plus plus$:    user.code_set_language_mode("cplusplus")
^force java$:             user.code_set_language_mode("java")
^force java script$:      user.code_set_language_mode("javascript")
^force type script$:      user.code_set_language_mode("typescript")
^force markdown$:         user.code_set_language_mode("markdown")
^force python$:           user.code_set_language_mode("python")
^force talon [script]$:   user.code_set_language_mode("talon")
^force html$:             user.code_set_language_mode("html")

^clear language mode$:
    user.code_clear_language_mode()
    user.notify("Cleared language modes")
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (optional
            (word)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))))

================================================================================
43. File andreas-talon/misc/media/media.talon
================================================================================

volume up:              user.volume_up()
volume down:            user.volume_down()
volume mute:            key(mute)

media next:             key(next)
media last:             key(prev)
media (play | pause):   key(play_pause)
media stop:             key(stop)

playback {user.playback_device}:
    user.notify("Playback device: {playback_device}")
    user.change_sound_device(playback_device)

microphone {user.microhpone_device}:
    user.notify("Microphone device: {microhpone_device}")
    user.change_sound_device(microhpone_device)

use {user.playback_microphone_pair}:
    user.change_sound_device_pair(playback_microphone_pair)
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
44. File andreas-talon/settings/settings.talon
================================================================================

settings():
    # Speech timeout
    speech.timeout = 0.400
    # Record speech
    speech.record_all = 0

    # Location to store cursorless settings
    user.cursorless_settings_directory = "andreas/cursorless-settings"

    # Adjust the scale of the imgui to my liking
    imgui.scale = 2

    # Help gui
    user.help_max_command_lines_per_page = 50
    user.help_max_contexts_per_page = 50
    user.help_scope_max_length = 80

    # Number of lines to show in command history by default
    user.command_history_display = 2

    # Show subtitles by default
    user.subtitles_show = 1
    # Show subtitles on all screens
    user.subtitles_all_screens = 1

    # Show debug timing statistics for spoken phrases
    user.debug_timings = 0

    # Mouse scroll step
    user.scroll_step = 0.02

    # Clipboard manager settings
    user.clipboard_manager_max_rows = 25
    user.clipboard_manager_max_cols = 60
--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (settings_declaration
      (comment)
      (block
        (assignment_statement
          (identifier)
          (float))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (string
            (string_content)))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (assignment_statement
          (identifier)
          (integer))
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (comment)
        (assignment_statement
          (identifier)
          (float))
        (comment)
        (assignment_statement
          (identifier)
          (integer))
        (assignment_statement
          (identifier)
          (integer))))))

================================================================================
45. File andreas-talon/langs/talon/talon.talon
================================================================================

tag: user.talon
-
tag(): user.operators
tag(): user.comments

# Generic
make print:
    user.insert_snippet("print($0)")

# Context requirements
require win:     "os: windows\n"
require mac:     "os: mac\n"
require linux:   "os: linux\n"
require title:   "title: "
require app:     "app: "
require tag:     "tag: "

make tag:        "tag(): "
make true:       "1"
make false:      "0"

make key:
    user.insert_snippet("key($0)")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))))

================================================================================
46. File andreas-talon/langs/python/python.talon
================================================================================

tag: user.python
-
tag(): user.generic_language
tag(): user.operators
tag(): user.comments

# ----- Python additional -----

(op | is) in:   " in "
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))))

================================================================================
47. File andreas-talon/langs/java/java.talon
================================================================================

tag: user.java
-
tag(): user.generic_language
tag(): user.c_common
tag(): user.operators
tag(): user.comments

# ----- Java additional -----

new {user.code_data_type}:
    user.insert_snippet("new {code_data_type}($0);")

new <user.text>:
    format = user.code_get_class_format()
    name = user.format_text(text, format)
    user.insert_snippet("new {name}($0);")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))))

================================================================================
48. File andreas-talon/langs/html/html.talon
================================================================================

tag: user.html
-
tag(): user.comments

block tag {user.code_tag}:
    user.insert_snippet("<{code_tag}>\n\t$0\n</{code_tag}>")
block tag <user.text>:
    user.insert_snippet("<{text}>\n\t$0\n</{text}>")

tag {user.code_tag}:
    "<{code_tag}>"
    user.code_push_tag_name(code_tag)
tag <user.text>:
    "<{text}>"
    user.code_push_tag_name(text)

closed tag {user.code_tag}:       "<{code_tag}/>"
close tag <user.text>:   "<{text}/>"

close tag:                        user.code_close_tag()

attr <user.text>:
    user.insert_snippet(" {text}=$0")

make doctype:                     "<!DOCTYPE html>\n"
make blank:                       "&nbsp;"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_escape_sequence)
                (string_escape_sequence)
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_escape_sequence)
                (string_escape_sequence)
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))))

================================================================================
49. File andreas-talon/langs/tags/operators.talon
================================================================================

tag: user.operators
-

# ----- Assignment operator -----
op (assign | equals):          user.op_assign()

# ----- Math operators -----
op (minus | sub):              user.op_sub()
op (minus | sub) assign:       user.op_sub_assign()
op (plus | add):               user.op_add()
op (plus | add) assign:        user.op_add_assign()
op (multiply | mult):          user.op_mult()
op (multiply | mult) assign:   user.op_mult_assign()
op (divide | div):             user.op_div()
op (divide | div) assign:      user.op_div_assign()
op (modulo | mod):             user.op_mod()
op (modulo | mod) assign:      user.op_mod_assign()
op (power | pow):              user.op_exp()

# ----- Comparison operators -----
is equal:                      user.op_equal()
is not equal:                  user.op_not_equal()
is less:                       user.op_less()
is greater:                    user.op_greater()
is less [or] equal:            user.op_less_or_eq()
is greater [or] equal:         user.op_greater_or_eq()
is not:                        user.op_not()

is null:                       user.op_equal_null()
is not null:                   user.op_not_equal_null()

# ----- Logical operators -----
op and:                        user.op_and()
op or:                         user.op_or()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
50. File andreas-talon/langs/tags/comments.talon
================================================================================

tag: user.comments
-

comment:              code.toggle_comment()
make comment:         user.comments_insert()

make comment <user.text>$:
    text = user.format_text(text, "CAPITALIZE_FIRST_WORD")
    user.comments_insert(text)

make block comment:   user.comments_insert_block()

make block comment <user.text>$:
    text = user.format_text(text, "CAPITALIZE_FIRST_WORD")
    user.comments_insert_block(text)

make dock string:     user.comments_insert_docstring()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
51. File andreas-talon/langs/tags/generic_language.talon
================================================================================

tag: user.generic_language
-

# ----- Selection statements -----
make if:                      user.code_if()
make elif:                    user.code_elif()
make else:                    user.code_else()
make switch:                  user.code_switch()
make case:                    user.code_case()
make default:                 user.code_default()
make try:                     user.code_try()
make catch:                   user.code_catch()
make try catch:               user.code_try_catch()

# ----- Iteration statements -----
make for [loop]:              user.code_for()
make while [loop]:            user.code_while()
make do while [loop]:         user.code_do_while()
make for each [loop]:         user.code_foreach()

# ----- Miscellaneous statements -----
make true:                    user.code_true()
make false:                   user.code_false()
make break:                   user.code_break()
make continue:                user.code_continue()
make return:                  user.code_return()
make link:                    user.code_link()

# ----- Print statements -----
make print:                   user.code_print("")
make print <user.text>$:
    text = user.format_text(text, "CAPITALIZE_FIRST_WORD")
    user.code_print(text)
format string:                user.code_format_string()

# ----- Insert language specific text and snippets -----
make {user.code_insert}:      "{code_insert}"
make {user.code_snippet}:     user.insert_snippet("{code_snippet}")

# ----- Class statement -----
{user.code_class_modifier}* class <user.text>$:
    user.code_class_wrapper(text, code_class_modifier_list or "")

# ----- Function statement -----
{user.code_function_modifier}* function <user.text>$:
    user.code_function_wrapper(text, code_function_modifier_list or "")
{user.code_function_modifier}* method <user.text>$:
    user.code_method_wrapper(text, code_function_modifier_list or "")

function main:                user.code_function_main()

# ----- Constructor statement -----
{user.code_function_modifier}* function constructor:
    user.code_constructor_wrapper(code_function_modifier_list or "")

# ----- Variable statement -----
var {user.code_variable_modifier}* [{user.code_data_type}] <user.text>:
    user.code_variable_wrapper(text, code_variable_modifier_list or "", 0, code_data_type or "")
var {user.code_variable_modifier}* [{user.code_data_type}] <user.text> equals:
    user.code_variable_wrapper(text, code_variable_modifier_list or "", 1, code_data_type or "")

# ----- Insert data type -----
type {user.code_data_type}:   "{code_data_type}"
is type {user.code_data_type}:
    user.code_insert_type_annotation(code_data_type)
is type <user.text>:
    format = user.code_get_class_format()
    data_type = user.format_text(text, format)
    user.code_insert_type_annotation(data_type)
returns type {user.code_data_type}:
    user.code_insert_return_type(code_data_type)

# ----- Function call -----
call {user.code_function}:    user.code_call_function(code_function)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (repeat
            (list
              (identifier)))
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (repeat
            (list
              (identifier)))
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (repeat
            (list
              (identifier)))
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (repeat
            (list
              (identifier)))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (repeat
            (list
              (identifier)))
          (optional
            (list
              (identifier)))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string))
              (integer)
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (repeat
            (list
              (identifier)))
          (optional
            (list
              (identifier)))
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string))
              (integer)
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
52. File andreas-talon/langs/json/json.talon
================================================================================

tag: user.json
-
tag(): user.comments

make true:    "true"
make false:   "false"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))))

================================================================================
53. File andreas-talon/langs/javascript/typescript.talon
================================================================================

tag: user.typescript
-
tag(): user.javascript
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))))

================================================================================
54. File andreas-talon/langs/javascript/javascript.talon
================================================================================

tag: user.javascript
-
tag(): user.generic_language
tag(): user.c_common
tag(): user.operators
tag(): user.comments

# ----- JavaScript additional -----

convert to arrow:   user.arrowify_line()

make arrow function <user.text>:
    format = user.code_get_function_format()
    name = user.format_text(text, format)
    user.insert_snippet("const {name} = ($1) => {{\n$0\n}}")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list)))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_content)
                (string_escape_sequence)
                (string_content)
                (string_escape_sequence)
                (string_content)))))))))

================================================================================
55. File andreas-talon/langs/javascript/typescriptreact.talon
================================================================================

tag: user.typescriptreact
-
tag(): user.typescript
tag(): user.javascriptreact
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))))

================================================================================
56. File andreas-talon/langs/javascript/javascriptreact.talon
================================================================================

tag: user.javascriptreact
-
tag(): user.javascript
tag(): user.html
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))))

================================================================================
57. File andreas-talon/text/text.talon
================================================================================

# Formatted code phrase: "camel hello there" -> helloThere
<user.formatters_code> <user.text_code> [over]:
    user.insert_formatted(text_code, formatters_code)
strict <user.formatters_code> <user.text_code>$:
    user.insert_formatted(text_code, formatters_code)

# Formatted prose phrase: "sentence hello there" -> Hello there
{user.formatter_prose} <user.prose>$:
    user.insert_formatted(prose, formatter_prose)
{user.formatter_prose} <user.prose> over:
    user.insert_formatted(prose, formatter_prose)

# Only words, no symbols or numbers
escape words <user.words>$: "{words}"
escape words <user.words> over: "{words}"

# Single word
{user.formatter_word} <user.word>:
    user.insert_formatted(word, formatter_word)
# Single homophone word
{user.formatter_word} <user.ordinals_small> <user.word>:
    homophone = user.homophones_get_by_number(word, ordinals_small)
    user.insert_formatted(homophone, formatter_word)

# Abbreviated word: breif application -> app
<user.abbreviation>:        "{abbreviation}"

# Easy access to specific Swedish phrases
swe {user.swedish_phrase}:  "{swedish_phrase}"
{user.formatter_word} swe {user.swedish_phrase}:
    user.insert_formatted(swedish_phrase, formatter_word)

# Upper case characters
ship <user.letters> [over]:
    user.insert_formatted(letters, "ALL_CAPS")

# Reformat
<user.formatters> format word:
    edit.select_word()
    user.reformat_selection(formatters)

--------------------------------------------------------------------------------

(source_file
  (matches)
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (capture
            (identifier))
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (capture
          (identifier)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (optional
            (word))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
58. File andreas-talon/text/homophones/homophones.talon
================================================================================

phones pick this:
    user.homophones_show_selected()

phones pick word:
    edit.select_word()
    user.homophones_show_selected()

phones word:
    edit.select_word()
    user.homophones_cycle_selected()

--------------------------------------------------------------------------------

(source_file
  (matches)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
59. File andreas-talon/text/homophones/homophones_open.talon
================================================================================

mode: user.homophones
-

phones hide:             user.homophones_hide()
choose <number_small>:   user.homophones_select(number_small)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))))

================================================================================
60. File andreas-talon/apps/repl.talon
================================================================================

title: Talon - REPL
-

events tail:    "events.tail('/^((?!win|browser).)*$/')\n"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))))

================================================================================
61. File andreas-talon/apps/discord/discord.talon
================================================================================

app: discord
-
tag(): user.av
tag(): user.navigation

deafen:             key(ctrl-shift-d)

server last:        key(ctrl-alt-up)
server next:        key(ctrl-alt-down)

channel last:       key(alt-up)
channel next:       key(alt-down)

edit last:          key(up)
focus text:         key(tab)
go oldest unread:   key(shift-pageup)
go audio channel:   key(alt-left)
go text channel:    key(alt-right)
go call:            key(ctrl-shift-alt-v)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
62. File andreas-talon/apps/web/mattermost.talon
================================================================================

app: mattermost
-

edit last:             key(up)

jump to:               key(ctrl-k)
direct messages:       key(ctrl-shift-k)

channel last:          key(alt-up)
channel next:          key(alt-down)
channel unread last:   key(alt-shift-up)
channel unread next:   key(alt-shift-down)
next unread:           key(alt-shift-down)

make meet:
    "/meet"
    key(enter)
make meet external:
    "/meet-external"
    key(enter)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
63. File andreas-talon/apps/web/youtube.talon
================================================================================

tag: browser
and title: /YouTube| - YouTube$/
-

speed down:                 key(shift-,)
speed up:                   key(shift-.)
closed captions:            key(c)
mini player:                key(i)
theater mode:               key(t)
play | pause:               key(k)
mute:                       key(m)
video last:                 key(shift-p)
video next:                 key(shift-n)
seek left:                  key(j)
seek right:                 key(l)

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (match_modifier)
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (choice
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
64. File andreas-talon/apps/web/slack.talon
================================================================================

app: slack
-

sidebar (show | hide):       key(ctrl-shift-d)
panel (show | hide):         key(ctrl-.)

go unreads:                  key(ctrl-shift-a)
go threads:                  user.slack_open_search_result("Threads")
go [direct] messages:        key(ctrl-shift-k)
go (mentions | reactions):   key(ctrl-shift-m)
go drafts:                   user.slack_open_search_result("Drafts")

scout channel [<user.text>]:
    key(ctrl-k)
    "{text or ''}"
pop channel <user.text>:
    user.slack_open_search_result(text)

please [<user.text>]$:
    key(ctrl-k)
    sleep(100ms)
    edit.delete()
    sleep(100ms)
    "{text or ''}"

channel last:                key(alt-up)
channel next:                key(alt-down)
channel unread last:         key(alt-shift-up)
channel unread next:         key(alt-shift-down)
next unread:                 key(alt-shift-down)

edit last:                   key(ctrl-up)
edit:                        key(e)

format code:                 key(ctrl-shift-c)
format [code] block:         key(ctrl-alt-shift-c)
format quote:                key(ctrl-shift-9)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
65. File andreas-talon/apps/maven/maven.talon
================================================================================

tag: user.maven
-

maven version:            "mvn -v\n"
maven install:            "mvn install\n"
maven package:            "mvn package\n"
maven clean install:      "mvn clean install\n"
maven clean package:      "mvn clean package\n"
maven install parallel:   "mvn -T 1C install\n"
maven deploy:             "mvn clean install -P deploy\n"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))))

================================================================================
66. File andreas-talon/apps/terminal/windows_terminal.talon
================================================================================

app: windows_terminal
-
tag(): user.tabs
tag(): user.bash

split auto:     key(ctrl-alt-d)
split right:    key(ctrl-alt-right)
split down:     key(ctrl-alt-down)

focus up:       key(alt-up)
focus down:     key(alt-down)
focus left:     key(alt-left)
focus right:    key(alt-right)

resize up:      key(alt-shift-up)
resize down:    key(alt-shift-down)
resize left:    key(alt-shift-left)
resize right:   key(alt-shift-right)

please:         key(ctrl-shift-p)
please <user.text>$:
    key(ctrl-shift-p)
    "{text}"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))))

================================================================================
67. File andreas-talon/apps/terminal/bash.talon
================================================================================

tag: user.bash
-
tag(): terminal

cd:                            "cd "
cd <user.text>$:               "cd {text}"
go home:                       "cd ~\n"

list:                          "ls\n"
list all:                      "ls -a\n"
list long:                     "ls -lah\n"
list long pipe:                "ls -lah | "

history:                       "history "
history tail:                  "history | tail\n"
history tail <number_small>:   "history | tail -{number_small}\n"
history grep:                  "history | grep "
run history <number>:          "!{number}\n"
run last:                      "!!\n"
run last <number>:             "!-{number}\n"

head <number_small>:           "head -{number_small}"

tail <number_small>:           "tail -{number_small}"
# watch talon log:               "tail -f {user.talon_home()}/talon.log\n"
watch talon log:               user.tail_talon_log()

print dir:                     "pwd\n"
copy dir:                      "pwd | clipboard\n"

tar create:                    "tar -czvf "
tar extractf:                  "tar -xzvf "

echo:                          "echo "
echo <user.text>$:             "echo {text}"

grep:                          "grep "
make dir:                      "mkdir "
move:                          "mv "
# remove:                        "rm "
copy:                          "cp "
less:                          "less "
sudo:                          "sudo "
apt install:                   "apt install "
apt update:                    "apt update\n"
word count:                    "wc "
change mode:                   "chmod "
change owner:                  "chown "
exargs:                        "xargs "
exec:                          "exec "
cat:                           "cat "
diff:                          "diff "
unique:                        "uniq "
clipboard:                     "clipboard"
translate:                     "tr "
vim:                           "vim "
curl:                          "curl "
yarn:                          "yarn "
dev null:                      "/dev/null"
print exit code:               "echo $?\n"
pipe:                          " | "
op and:                        " && "
op or:                         " || "
terminate:                     key(ctrl-c)
clear:                         key(ctrl-l)
revert:                        key(alt-r)

# head:                          "head "
# tail:                          "tail "
# find:                          "find "
# sed:                           "sed "
# set:                           "set "
# ctrl-
# find -exec grep \;
# locate
# echo hello >> myfile.text
# pushd https://linuxhint.com/bash_pushd_command/
# cat /etc/os-release
#cat /proc/version
# fc last command in editor.
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string))))))
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment)
  (comment))

================================================================================
68. File andreas-talon/apps/terminal/terminal.talon
================================================================================

tag: terminal
-
tag(): user.file_manager
tag(): user.git
tag(): user.maven
tag(): user.npm
tag(): user.yarn

vscode install:
    "vsce package -o bundle.vsix && code --install-extension bundle.vsix --force\n"

vscode package:
    "vsce package\n"
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))))

================================================================================
69. File andreas-talon/apps/kodi/kodi.talon
================================================================================

os: windows
and app.exe: kodi.exe
-

[go] back:        user.go_back()
full screen:      key(alt-enter)

menu:             key(m)
(pause | play):   key(space)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (match_modifier)
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (parenthesized_rule
          (choice
            (word)
            (word))))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
70. File andreas-talon/apps/yarn/yarn.talon
================================================================================

tag: user.yarn
-

yarn:           "yarn "
yarn version:   "yarn -version\n"
yarn compile:   "yarn compile\n"

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))))

================================================================================
71. File andreas-talon/apps/browser/browser.talon
================================================================================

tag: browser
-
tag(): user.zoom
tag(): user.tabs
tag(): user.find
tag(): user.navigation

go address:                 browser.focus_address()
go home:                    browser.go_home()
go {user.webpage}:          browser.go(webpage)
open {user.webpage}:        user.browser_open(webpage)

go private:                 browser.open_private_window()

bookmark show:              browser.bookmarks()
bookmark bar:               browser.bookmarks_bar()
bookmark it:                browser.bookmark()
bookmark tabs:              browser.bookmark_tabs()

(refresh | reload) page:    browser.reload()
(refresh | reload) page hard: browser.reload_hard()

show downloads:             browser.show_downloads()
show extensions:            browser.show_extensions()
show history:               browser.show_history()
show cache:                 browser.show_clear_cache()

dev tools:                  browser.toggle_dev_tools()

fullscreen:                 key(f)

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (word)))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
72. File andreas-talon/apps/browser/firefox.talon
================================================================================

app: firefox
-
tag(): browser
tag(): user.scroll

# Tabs
tab search:
    browser.focus_address()
    "% "
tab search <user.text>$:
    browser.focus_address()
    "% {text}"
    key(down)
tab mute:                   key(ctrl-m)

# Bitwarden
(bitwarden | bit warden) show:
    key(ctrl-shift-y)
login fill:
    key(ctrl-shift-l)
password generate:
    key(ctrl-shift-9)

# Vimium
tab split:                  app.tab_detach()

hunting:
    user.stop_app()
    key(escape ctrl-alt-f)
hunting new:
    user.stop_app()
    key(escape ctrl-alt-F)
hunting open:
    user.stop_app()
    key(escape ctrl-alt-g)

# Rango
{user.rango_with_target_action} <user.rango_target>:
    user.rango_command_with_target(rango_with_target_action, rango_target)
{user.rango_without_target_action}:
    user.rango_command_without_target(rango_without_target_action)

rango explicit:
    user.rango_disable_direct_clicking()
rango direct:
    user.rango_enable_direct_clicking()

copy address:
    user.rango_command_without_target("copyLocationProperty", "href")

# TODO Remove as soon as rango has proper extension side settings
hint bigger:
    user.rango_command_without_target("increaseHintSize")
hint smaller:
    user.rango_command_without_target("decreaseHintSize")
hint {user.rango_hint_styles}:
    user.rango_command_without_target("setHintStyle", user.rango_hint_styles)
hint weight {user.rango_hint_weights}:
    user.rango_command_without_target("setHintWeight", user.rango_hint_weights)

# Miscellaneous
copy image:
    mouse_click(1)
    sleep(0.1)
    key(y)
    sleep(0.1)
    user.clipboard_manager_update()
copy video:
    mouse_click(1)
    sleep(0.1)
    key(o:2 enter)
    sleep(0.1)
    user.clipboard_manager_update()

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (parenthesized_rule
            (choice
              (word)
              (seq
                (word)
                (word))))
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (list
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (list
          (identifier)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
73. File andreas-talon/apps/file_manager/file_manager_win.talon
================================================================================

os: windows
and tag: user.file_manager
-

go <user.letter> colon:   user.file_manager_open_directory("{letter}:")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (match_modifier)
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)
                (string_content)
                (string_content)
                (string_content)))))))))

================================================================================
74. File andreas-talon/apps/file_manager/windows_explorer.talon
================================================================================

app: windows_explorer
app: windows_file_browser
-
tag(): user.file_manager

go up:     user.select_up()
go down:   user.select_down()
select:    user.select_toggle()

scout [<user.text>]$:
    edit.find(text or "")
pop <user.text>$:
    edit.find(text)
    sleep("100ms")
    key(enter)

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
75. File andreas-talon/apps/file_manager/file_manager.talon
================================================================================

tag: user.file_manager
-
tag(): user.navigation


# ----- Navigation -----
go parent:                 user.file_manager_go_parent()
go address:                user.file_manager_focus_address()
go {user.path}:            user.file_manager_open_directory(path)
copy address:              user.file_manager_copy_address()

# ----- Create folders / files -----
file new:                  user.file_manager_new_file("")
folder new:                user.file_manager_new_folder("")
file new <user.text>$:     user.file_manager_new_file(text)
folder new <user.text>$:   user.file_manager_new_folder(text)

# ----- Miscellaneous -----
properties show:           user.file_manager_show_properties()
terminal here:             user.file_manager_terminal_here()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
76. File andreas-talon/apps/windows_task_switching.talon
================================================================================

os: windows
app.exe: Explorer.EXE
title: Task Switching
-

close:   key(ctrl-w)
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))))

================================================================================
77. File andreas-talon/apps/vscode/draft_editor.talon
================================================================================

not app: vscode
-

draft (this | dis):
    user.draft_editor_open()
draft all:
    edit.select_all()
    user.draft_editor_open()
draft line:
    edit.select_line()
    user.draft_editor_open()
draft top:
    edit.extend_file_start()
    user.draft_editor_open()
draft bottom:
    edit.extend_file_end()
    user.draft_editor_open()

draft submit:
    user.draft_editor_paste_last()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (match_modifier)
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
78. File andreas-talon/apps/vscode/vscode_take_word.talon
================================================================================

app: vscode
-

# Actions around take word

take <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)

pre <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.left()

post <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.right()

cut <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.cut()

copy <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.copy()

paste to <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.paste()

clear <user.cursorless_target> <user.repeater_phrase_all>:
    user.vscode_take_word(cursorless_target, repeater_phrase_all)
    edit.delete()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (comment)
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
79. File andreas-talon/apps/vscode/vscode.talon
================================================================================

app: vscode
-
tag(): user.scroll
tag(): user.navigation
tag(): user.zoom
tag(): user.tabs
tag(): user.find
tag(): user.comments
tag(): user.cursorless_experimental_snippets

settings():
    user.scroll_step = 0.025

# Language features
jest:                       code.complete()
jest first:
    code.complete()
    key(tab)
jest param:                 user.vscode("editor.action.triggerParameterHints")
format document:            user.format_document()
refactor this:              user.vscode("editor.action.refactor")

# Problems
problem next:               user.vscode("editor.action.marker.nextInFiles")
problem last:               user.vscode("editor.action.marker.prevInFiles")
problem fix:                user.vscode("problems.action.showQuickFixes")

# Imports
imports organize:           user.vscode("editor.action.organizeImports")
imports add:                user.vscode_add_missing_imports()
imports fix:
    user.vscode_add_missing_imports()
    sleep(0.1)
    user.vscode("editor.action.organizeImports")

# Split
split up:                   user.vscode("workbench.action.moveEditorToAboveGroup")
split down:                 user.vscode("workbench.action.moveEditorToBelowGroup")
split left:                 user.vscode("workbench.action.moveEditorToLeftGroup")
split right:                user.vscode("workbench.action.moveEditorToRightGroup")
focus up:                   user.vscode("workbench.action.focusAboveGroup")
focus down:                 user.vscode("workbench.action.focusBelowGroup")
focus left:                 user.vscode("workbench.action.focusLeftGroup")
focus right:                user.vscode("workbench.action.focusRightGroup")
shrink width:               user.vscode("workbench.action.decreaseViewWidth")
shrink height:              user.vscode("workbench.action.decreaseViewHeight")
expand width:               user.vscode("workbench.action.increaseViewWidth")
expand height:              user.vscode("workbench.action.increaseViewHeight")
split flip:                 user.vscode("workbench.action.toggleEditorGroupLayout")
split clear:                user.vscode("workbench.action.joinTwoGroups")
split solo:                 user.vscode("workbench.action.editorLayoutSingle")
maximize:                   user.vscode("workbench.action.toggleEditorWidths")
cross:                      user.vscode("workbench.action.focusNextGroup")
open cross:                 key(ctrl-enter)

# Sidebar
bar (show | hide):          user.vscode("workbench.action.toggleSidebarVisibility")
bar explore:                user.vscode("workbench.view.explorer")
bar extensions:             user.vscode("workbench.view.extensions")
bar outline:                user.vscode("outline.focus")
bar debug:                  user.vscode("workbench.view.debug")
bar search:                 user.vscode("workbench.view.search")
bar source:                 user.vscode("workbench.view.scm")
bar file:                   user.vscode("workbench.files.action.showActiveFileInExplorer")
bar collapse:               user.vscode("workbench.files.action.collapseExplorerFolders")
ref last:                   user.vscode("references-view.prev")
ref next:                   user.vscode("references-view.next")

# Panel
panel (show | hide):        user.vscode("workbench.action.togglePanel")
panel (large | small):      user.vscode("workbench.action.toggleMaximizedPanel")
panel control:              user.vscode("workbench.panel.repl.view.focus")
panel output:               user.vscode("workbench.panel.output.focus")
panel problems:             user.vscode("workbench.panel.markers.view.focus")
panel terminal:             user.vscode("workbench.action.terminal.focus")
panel debug:                user.vscode("workbench.debug.action.toggleRepl")
panel clear:                user.vscode("workbench.debug.panel.action.clearReplAction")

# Experimental locate api
<user.vscode_panel> grab line:
    user.vscode_grab_line(vscode_panel)
<user.vscode_panel> snap {user.resize_size}:
    user.vscode_resize_panel(vscode_panel, resize_size)

# Hide sidebar and panel
hide all:
    user.vscode("workbench.action.closeSidebar")
    user.vscode("workbench.action.closePanel")
    user.vscode("closeFindWidget")

# Files / Folders
folder open:                user.vscode("workbench.action.files.openFolder")
folder add:                 user.vscode("workbench.action.addRootFolder")
folder new:                 user.vscode("explorer.newFolder")
file open:                  user.vscode("workbench.action.files.openFile")
file new:                   user.vscode("explorer.newFile")
file open folder:           user.vscode("revealFileInOS")
file reveal:                user.vscode("workbench.files.action.showActiveFileInExplorer")
file copy path:
    user.vscode("copyFilePath")
    user.clipboard_manager_update()
file copy relative:
    user.vscode("copyRelativeFilePath")
    user.clipboard_manager_update()
file copy name:
    name = user.vscode_get("andreas.getFileName")
    clip.set_text(name)
file clone:                 user.vscode("fileutils.duplicateFile")
file rename:                user.vscode("fileutils.renameFile")
file remove:                user.vscode("fileutils.removeFile")
file move:                  user.vscode("fileutils.moveFile")
pop sibling:
    user.find_sibling_file()
    sleep(150ms)
    key(enter)

# Git
git open file:              user.git_open_working_file_url()
git copy file:              user.git_copy_working_file_url()
git changes:                user.vscode("git.openChange")
git changed files:          user.vscode("git.openAllChanges")
git add all:                user.vscode("git.stageAll")
git reset all:              user.vscode("git.unstageAll")
git pull:                   user.vscode("git.pull")
git push:                   user.vscode("git.push")
git push tags:              user.vscode("git.pushTags")
git checkout {user.git_branch}: user.git_find_branch(git_branch)
git checkout [<user.text>]: user.git_find_branch(text or "")
git commit [<user.text>]:
    user.vscode("git.commit")
    text = user.format_text(text or "", "CAPITALIZE_FIRST_WORD")
    "{text}"

# Folding
fold this:                  user.vscode("editor.fold")
unfold this:                user.vscode("editor.unfold")
fold recursive:             user.vscode("editor.foldRecursively")
unfold recursive:           user.vscode("editor.unfoldRecursively")
fold all:                   user.vscode("editor.foldAll")
unfold all:                 user.vscode("editor.unfoldAll")
fold comments:              user.vscode("editor.foldAllBlockComments")

# Navigation
go line <number>:           edit.jump_line(number)
take last word:             user.vscode("editor.action.addSelectionToPreviousFindMatch")
cursor back:                user.vscode("cursorUndo")
cursor forward:             user.vscode("cursorRedo")
cursor up:                  user.vscode("editor.action.insertCursorAbove")
cursor down:                user.vscode("editor.action.insertCursorBelow")
cursor lines:               user.vscode("editor.action.insertCursorAtEndOfEachLineSelected")
cursor expand:              user.vscode("editor.action.smartSelect.expand")
cursor shrink:              user.vscode("editor.action.smartSelect.shrink")
pop back:                   user.vscode("workbench.action.openPreviousRecentlyUsedEditor")
pop forward:                user.vscode("workbench.action.openNextRecentlyUsedEditor")
focus editor:               user.vscode("workbench.action.focusActiveEditorGroup")

# Debug and run
build program:              user.vscode("workbench.action.tasks.build")
run program:                user.vscode("workbench.action.debug.run")
debug start:                user.vscode("workbench.action.debug.start")
breakpoint:                 user.vscode("editor.debug.action.toggleBreakpoint")
continue:                   user.vscode("workbench.action.debug.continue")
step over:                  user.vscode("workbench.action.debug.stepOver")
step into:                  user.vscode("workbench.action.debug.stepInto")
step out:                   user.vscode("workbench.action.debug.stepOut")
debug restart:              user.vscode("workbench.action.debug.restart")
debug pause:                user.vscode("workbench.action.debug.pause")
debug stop:                 user.vscode("workbench.action.debug.stop")
debug select:               user.vscode("workbench.action.debug.selectandstart")
debug extension:
    user.vscode("workbench.action.debug.selectandstart")
    "run extension"
    key(enter)
debug test:
    user.vscode("workbench.action.debug.selectandstart")
    "extension tests"
    key(enter)
debug subset:
    user.vscode("workbench.action.debug.selectandstart")
    "run test subset"
    key(enter)
run task compile:
    user.vscode("workbench.action.tasks.runTask")
    "compile"
    sleep(0.2)
    key(enter)
run task [<user.text>]:
    user.vscode("workbench.action.tasks.runTask")
    "{text or ''}"
dev tools:                  user.vscode("workbench.action.toggleDevTools")
select element:             key(ctrl-shift-c)

# Find session
scout sesh [<user.text>]$:
    user.vscode_find_recent(text or "")
pop sesh <user.text>$:
    user.vscode_find_recent(text)
    key(enter)
pop sesh:
    user.vscode_find_recent("", 1)
    key(enter)

# Find a symbol
scout symbol [<user.text>]$:
    user.vscode("workbench.action.gotoSymbol")
    "{text}"
scout all symbol [<user.text>]$:
    user.vscode("workbench.action.showAllSymbols")
    "{text}"

# Find miscellaneous
scout again:                user.vscode("rerunSearchEditorSearch")

# Settings
open settings json:
    user.vscode("workbench.action.openSettingsJson")
open settings <user.text>:
    app.preferences()
    sleep(0.2)
    "{text}"

# CSV
align columns:              user.vscode("rainbow-csv.Align")
shrink columns:             user.vscode("rainbow-csv.Shrink")

# Cursorless
^cursorless use release$:
    user.cursorless_use_release()
^cursorless use develop$:
    user.cursorless_use_develop()
^cursorless record$:
    user.vscode("cursorless.recordTestCase")
^cursorless highlight record$:
    user.cursorless_record_highlight_test()
copy <user.cursorless_target>:
    user.cursorless_command("copyToClipboard", cursorless_target)
    user.clipboard_manager_update()
cut <user.cursorless_target>:
    user.cursorless_command("cutToClipboard", cursorless_target)
    user.clipboard_manager_update()
break line <user.cursorless_target>:
    user.cursorless_command("setSelectionBefore", cursorless_target)
    key("enter")
git open <user.cursorless_target>:
    user.cursorless_command("setSelection", cursorless_target)
    user.git_open_working_file_url(1)
git copy <user.cursorless_target>:
    user.cursorless_command("setSelection", cursorless_target)
    user.git_copy_working_file_url(1)
paste <number_small> [and <number_small>]* <user.cursorless_positional_target>:
    user.clipboard_manager_copy(number_small_list)
    user.cursorless_command("pasteFromClipboard", cursorless_positional_target)

# Misc
install extension:          user.vscode("workbench.extensions.action.installVSIX")
window reload:              user.vscode("workbench.action.reloadWindow")
trim trailing:              user.vscode("editor.action.trimTrailingWhitespace")
inspect scope:              user.vscode("editor.action.inspectTMScopes")
disk raw:                   user.save_without_formatting()
disk files:                 user.vscode("workbench.action.files.saveFiles")
undo everything:            user.vscode("andreas.undoUntilNotDirty")
copy command id:            user.copy_command_id()

snip last:                  user.vscode("jumpToPrevSnippetPlaceholder")
[snip] next:                user.vscode("jumpToNextSnippetPlaceholder")

change language [<user.text>]:
    user.change_language(text or "")

please [<user.text>]$:
    user.vscode("workbench.action.showCommands")
    "{user.text or ''}"

--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (tag_import_declaration
      (identifier))
    (settings_declaration
      (block
        (assignment_statement
          (identifier)
          (float))))
    (comment)
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (parenthesized_rule
            (choice
              (word)
              (word)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (capture
            (identifier))
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string))
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (word))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string)
              (integer))))
        (expression_statement
          (key_action
            (implicit_string)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))
        (expression_statement
          (sleep_action
            (implicit_string)))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (start_anchor)
        (seq
          (word)
          (word)
          (word))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (integer))))))
    (command_declaration
      (rule
        (seq
          (word)
          (capture
            (identifier))
          (repeat
            (optional
              (seq
                (word)
                (capture
                  (identifier)))))
          (capture
            (identifier))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (variable
                (identifier)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content))
              (variable
                (identifier)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (optional
            (word))
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (optional
            (capture
              (identifier)))))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (binary_operator
                (variable
                  (identifier))
                (operator)
                (string)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (optional
            (capture
              (identifier))))
        (end_anchor))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)))))))

================================================================================
80. File andreas-talon/apps/vscode/draft_editor_active.talon
================================================================================

tag: user.draft_editor_active
-

draft submit:    user.draft_editor_submit()
draft discard:   user.draft_editor_discard()
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list)))))))

================================================================================
81. File andreas-talon/apps/vscode/vscode_notebook.talon
================================================================================

tag: user.vscode_notebook
-

render every cell0:    user.vscode("notebook.renderAllMarkdownCells")

# Execution
run cell:              user.vscode("notebook.cell.execute")
run new:               user.vscode("notebook.cell.executeAndInsertBelow")
stop cell:             user.vscode("notebook.cell.cancelExecution")

# Edit
chuck cell:            user.vscode("notebook.cell.delete")
cut cell:              user.vscode("notebook.cell.cut")
copy cell:             user.vscode("notebook.cell.copy")
paste cell:            user.vscode("notebook.cell.paste")
center cell:           user.vscode("notebook.centerActiveCell")

# Conversion
cell is code:          user.vscode("notebook.cell.changeToCode")
cell is mark:          user.vscode("notebook.cell.changeToMarkdown")
cell show numbers:     user.vscode("notebook.cell.toggleLineNumbers")

# Navigation
cell top:              user.vscode("notebook.focusTop")
cell up:               user.vscode("notebook.focusPreviousEditor")
cell down:             user.vscode("notebook.focusNextEditor")
cell bottom:           user.vscode("notebook.focusBottom")

# Merging and splitting
cell join above:       user.vscode("notebook.cell.joinAbove")
cell join below:       user.vscode("notebook.cell.joinBelow")
cell split:            user.vscode("notebook.cell.split")

# Insertion and duplication
drink cell:
    user.vscode("notebook.cell.insertCodeCellAboveAndFocusContainer")
    user.vscode("notebook.cell.edit")
pour cell:
    user.vscode("notebook.cell.insertCodeCellBelowAndFocusContainer")
    user.vscode("notebook.cell.edit")
clone cell:
    user.vscode("notebook.cell.copyDown")
    user.vscode("notebook.cell.edit")
clone cell up:
    user.vscode("notebook.cell.copyUp")
    user.vscode("notebook.cell.edit")

# cell view input/output
fold cell:             user.vscode("notebook.cell.collapseCellInput")
unfold cell:           user.vscode("notebook.cell.expandCellInput")
fold every cell:       user.vscode("notebook.cell.collapseAllCellInputs")
unfold every cell:     user.vscode("notebook.cell.expandAllCellInputs")

# Output
chuck output:          user.vscode("notebook.cell.clearOutputs")
chuck every output:    user.vscode("notebook.clearAllCellsOutputs")
fold output:           user.vscode("notebook.cell.collapseCellOutput")
unfold output:         user.vscode("notebook.cell.expandCellOutput")
fold every output:     user.vscode("notebook.cell.collapseAllCellOutputs")
unfold every output:   user.vscode("notebook.cell.expandAllCellOutputs")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (comment)
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))))

================================================================================
82. File andreas-talon/apps/vscode/vscode_bashbook.talon
================================================================================

app: vscode
win.file_ext: .bashbook
-

tag(): user.vscode_notebook

open as markdown:    user.vscode("bashbook.openNotebookAsMarkdown")
open every output:   user.vscode("bashbook.openAllOutputsInNewFile")
run take:            user.vscode("bashbook.cell.executeAndSelect")
run clear:           user.vscode("bashbook.cell.executeAndClear")
run down:            user.vscode("bashbook.cell.executeWithMarkdownOutput")
clear cell:          user.vscode("bashbook.cell.clearAndEdit")
copy output:         user.vscode("bashbook.cell.copyOutput")
open output:         user.vscode("bashbook.cell.openOutputInNewFile")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string))
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))))

================================================================================
83. File andreas-talon/apps/npm/npm.talon
================================================================================

tag: user.npm
-

npm version:            "npm -v\n"
npm install:            "npm install\n"
npm install global:     "npm install -g "
npm prune:              "npm prune\n"
npm clean:              "npm run clean\n"
npm start:              "npm start\n"
npm test:               "npm test\n"
npm run:                "npm run "
npm run <user.text>$:   "npm run {text}"
npm run build:          "npm run build\n"
npm run mongodb:        "npm run mongodb\n"
npm run keycloak:       "npm run keycloak\n"
npm run wildfly:        "npm run wildfly\n"
npm run start:          "npm run start "
npm run start local:    "npm run startLocal "
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))))

================================================================================
84. File andreas-talon/apps/notepad/notepad.talon
================================================================================

app: notepad
-

tag(): user.find
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (tag_import_declaration
      (identifier))))

================================================================================
85. File andreas-talon/apps/git/git.talon
================================================================================

tag: user.git
-

git verison:                "git --version\n"
git init:                   "git init\n"
git status:                 "git status\n"
git log:                    "git log --graph --color=always --format='%C(auto)%h%d %s %C(green)(%cr) %C(bold blue)<%an>%Creset'\n"
git log original:           "git log\n"
git reflog:                 "git reflog\n"
git clean:                  "git clean "
git remove:                 "git rm "
git tag:                    "git tag "
git branch:                 "git branch "
git branch deli:            "git branch -d "
git clone:                  "git clone "
git cherry pick:            "git cherry-pick "
git rebase:                 "git rebase "

git merge:                  "git merge "
git merge {user.git_branch}:
    "git merge {git_branch}"

git remote:                 "git remote "
git remote verbose:         "git remote -v\n"

git reset:                  "git reset "
git reset all:              "git reset .\n"
git reset head:             "git reset --soft HEAD^"
git reset soft:             "git reset --soft "
git reset hard:             "git reset --hard "

git fetch:                  "git fetch "
git fetch all:              "git fetch -a\n"
git fetch upstream:         "git fetch upstream\n"
git fetch prune:            "git fetch --prune origin\n"

git checkout:               "git checkout "
git checkout {user.git_branch}:
    "git checkout {git_branch}\n"
git checkout <user.text>:   "git checkout {text}"
git checkout branch:        "git checkout -b "
git checkout branch <user.text>:
    "git checkout -b {text}"
git checkout last:          "git checkout -\n"

git add:                    "git add "
git add all:                "git add .\n"

git commit:
    'git commit -m ""'
    key(left)
git commit <user.text>$:
    text = user.format_text(text, "CAPITALIZE_FIRST_WORD")
    'git commit -m "{text}"'
    key(left)
git commit amend:           "git commit --amend "

git diff:                   "git diff\n"
git diff halt:              "git diff "
git diff <user.text>:       "git diff {text}"

git pull:                   "git pull\n"
git pull upstream:          "git pull upstream\n"
git pull upstream master:   "git pull upstream master\n"
git pull upstream main:     "git pull upstream main\n"

git push:                   "git push\n"
git push tags:              "git push --tags\n"

git stash:                  "git stash "
git stash show:             "git stash show\n"
git stash pop:              "git stash pop"

git merge quit:
    ":q"
    key(enter)

git numstat:                user.git_numstat("")
git numstat year:           user.git_numstat("1 year")
git numstat month:          user.git_numstat("1 month")
git numstat week:           user.git_numstat("1 week")
--------------------------------------------------------------------------------

(source_file
  (matches
    (match
      (identifier)
      (implicit_string)))
  (declarations
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (list
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier)))
        (end_anchor))
      (block
        (assignment_statement
          (identifier)
          (action
            (identifier)
            (argument_list
              (variable
                (identifier))
              (string
                (string_content)))))
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (capture
            (identifier))))
      (block
        (expression_statement
          (string
            (string_content)
            (string_content)
            (string_content)
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)
            (string_escape_sequence)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (string
            (string_content)))
        (expression_statement
          (key_action
            (implicit_string)))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))
    (command_declaration
      (rule
        (seq
          (word)
          (word)
          (word)))
      (block
        (expression_statement
          (action
            (identifier)
            (argument_list
              (string
                (string_content)))))))))
