atcoder-tools icon indicating copy to clipboard operation
atcoder-tools copied to clipboard

言語ごとにインデント幅などのデフォルト設定を別々にできるようにしたい

Open chaemon opened this issue 6 years ago • 3 comments

標記の通り、言語ごとにインデント幅・タブや空白などの設定を別々にできるようにしたいです。

経緯としては、現在NIM言語バージョンのatcoder-toolsを作成しているのですが、NIM言語では下記のページのようにインデント幅は2が推奨となっており、ほぼすべてのコードやライブラリがインデント幅2で書かれています。

https://nim-lang.org/docs/nep1.html

ただし、pythonと同じようにインデント幅が2でなくてもコンパイルできて動かすことは可能です。

もしも、現状のようにデフォルトでインデント幅が4であると、大部分のNIMユーザーは設定ファイルでインデント幅を2に書き換えなくてはならず、使いづらいものとなってしまいます。

chaemon avatar Aug 16 '19 16:08 chaemon

これに関する抜本的な解決策としてそもそも設定ファイルに複数の言語に対応した設定記述を提案したいのですが、いかがでしょうか。

現行

[codestyle]
indent_type='space' # 'tab' or 'space'
indent_width=4
template_file='~/my_template.cpp'
workspace_dir='~/atcoder-workspace/'
lang='cpp'
code_generator_file="~/custom_code_generator.py"
[postprocess]
exec_on_each_problem_dir='clang-format -i ./*.cpp'
exec_on_contest_dir='touch CMakeLists.txt'

新案

以下のように、TOMLで特定の言語記述ができるようにする(langというオプションは廃止)

# common用
[codestyle]
workspace_dir='~/atcoder-workspace/'
[postprocess]
...
# cpp用
[cpp.codestyle]
indent_type='space' # 'tab' or 'space'
indent_width=4
template_file='~/my_template.cpp'
code_generator_file="~/custom_code_generator.py"
[cpp.postprocess]
exec_on_each_problem_dir='clang-format -i ./*.cpp'
exec_on_contest_dir='touch CMakeLists.txt'
# nim 用
[nim.codestyle]
indent_type='space' 
indent_width=2
template_file='~/my_template.nim'
code_generator_file="~/custom_code_generator_for_nim.py"
[nim.postprocess]
exec_on_each_problem_dir='nim用オートフォーマットコマンド'
exec_on_contest_dir='nim用コンテストディレクトリ'に対するコマンド

メリット

  • 実装が楽
  • もし言語指定無しcodestyleをcommonの設定として許すならば、既存の設定ファイルとの後方互換性が維持できる

デメリット

  • 思いついたら書く。
  • commonとかがあると特に設定の仕様が複雑化するのでドキュメントをちゃんと書かないとユーザーが困る(できればcommon用は需要が少ないのでdeprecateしたいところだがコンテストディレクトリとかはまとめて書きたいかも...?)

kyuridenamida avatar Aug 16 '19 17:08 kyuridenamida

とりあえずnimの対応版をリリースしたいのでひとまずは怪しいfixをします。

kyuridenamida avatar Aug 19 '19 16:08 kyuridenamida

投稿に気づかず、似たようなものをpull-requestしてしまいました。

indent幅はNIMだけ2にするのではなく、Languageクラスで指定できるようにしてはどうでしょうか?

chaemon avatar Aug 19 '19 17:08 chaemon