RoswellとSBCLのFish Completionを作った


sbcl --helpros help を引いてemacsのkeyboard macroで整形をしまくって書いた。ついでに pry もcompletion書いた。


一番の難関はcompletionの -n だと思うが、今回は愚直に記述した。詳しくは Fish用の補完スクリプトの作り方#補完スクリプトの作り方に書いてあるので今後必要になった時に参照したい。




~/.g/g/t/roswell (*´ω`*) < ros <tab>
build       (Make executable from script.)  help         (Use "ros help [command]" for more information about a command.)  run                        (Run repl)  version  (Show the roswell version information)
config               (Get and set options)  init              (Creates a new ros script, optionally based on a template.)  template           (Manage templates)
delete  (Delete installed implementations)  install  (Install a given implementation or a system for roswell environment)  update    (Update installed systems.)
fmt                  (Indent lisp source.)  list                                                       (List Information)  use  (Change default implementation.)


sbcl <--option> のようなケース。

# pry -e
complete -c pry -s e -d "A line of code to execute in context before the session starts"

# sbcl --version
complete -c sbcl -l version -d  "Print version information and exit."


ros <commant> のようなケース。

# ros run
complete -f -c ros -n '__fish_use_subcommand' -xa run -d "Run repl"

# ros install
complete -f -c ros -n '__fish_use_subcommand' -xa install -d "Install a given implementation or a system for roswell environment"


ros <command> <--option> のようなケース。

# ros run -l
complete -c ros -n '__fish_seen_subcommand_from run' -s l -d 'load lisp FILE while building'

# ros run --load
complete -c ros -n '__fish_seen_subcommand_from run' -l load -d 'load lisp FILE while building'


  1. helpのような説明が要らない場合
# ros help <command>
set -l __roswell_helps "run install update build use init fmt list template delete config version"
complete -c ros -n "__fish_seen_subcommand_from help" -xa $__roswell_helps
  1. ros <command> <command> の場合
# ros config show
complete -c ros -n "__fish_seen_subcommand_from config" -xa show -d "show TARGET."

ついでに ros config のmanualの説明が間違っていたので修正pull requestを出してmergeされた。嬉しい。

roswellの場合、ドキュメントやmanはTravis CIで自動生成してくれるみたいだ。

You're right, it's supposed to push in travis ci!

We'll make a separate pull request with only markdown changes.


--enable-manual-generation--enable-html-generation をconfigureの引数に入れるとdocumentをupdateしてくれるみたい。

~/.g/g/t/roswell (*´ω`*) < bash bootstrap
~/.g/g/t/roswell (*´ω`*) < ./configure --enable-manual-generation --enable-html-generation
~/.g/g/t/roswell (*´ω`*) < make
~/.g/g/t/roswell (*´ω`*) < sudo make install

fishを便利にするのも、ちょっとしたpull requestを出すのも楽しいね。