58 lines
1.7 KiB
Plaintext
58 lines
1.7 KiB
Plaintext
#update nushell sublime syntax
|
|
export def "nushell-syntax-2-sublime" [] {
|
|
let builtin = filter-command built-in
|
|
let plugins = filter-command plugin
|
|
let custom = filter-command custom
|
|
let keywords = filter-command keyword
|
|
|
|
let aliases = (
|
|
scope aliases
|
|
| get name
|
|
| uniq
|
|
| str join " | "
|
|
)
|
|
|
|
let personal_external = (
|
|
$env.PATH
|
|
| find bash & nushell
|
|
| get 0
|
|
| ansi strip
|
|
| ls $in
|
|
| find -v Readme
|
|
| get name
|
|
| path parse
|
|
| get stem
|
|
| str join " | "
|
|
)
|
|
|
|
let extra_keywords = " | else | catch"
|
|
let builtin = " (?x: " + $builtin + ")"
|
|
let plugins = " (?x: " + $plugins + ")"
|
|
let custom = " (?x: " + $custom + ")"
|
|
let keywords = " (?x: " + $keywords + $extra_keywords + ")"
|
|
let aliases = " (?x: " + $aliases + ")"
|
|
let personal_external = " (?x: " + $personal_external + ")"
|
|
let operators = " (?x: and | or | mod | in | not-in | not | xor | bit-or | bit-xor | bit-and | bit-shl | bit-shr | starts-with | ends-with)"
|
|
|
|
let new_commands = [] ++ $builtin ++ $custom ++ $plugins ++ $keywords ++ $aliases ++ $personal_external ++ $operators
|
|
|
|
mut file = open ~/.config/sublime-text/Packages/User/nushell.sublime-syntax | lines
|
|
let idx = $file | indexify | find '(?x:' | get index | drop | enumerate
|
|
|
|
for i in $idx {
|
|
$file = ($file | upsert $i.item ($new_commands | get $i.index))
|
|
}
|
|
|
|
$file | save -f ~/.config/sublime-text/Packages/User/nushell.sublime-syntax
|
|
}
|
|
|
|
#add a hidden column with the content of the # column
|
|
export def indexify [
|
|
column_name?: string = 'index'
|
|
] {
|
|
enumerate
|
|
| upsert $column_name {|el|
|
|
$el.index
|
|
}
|
|
| flatten
|
|
} |