Emacs上で、コードの整形をやってくれる、formatterの設定をやってみた。
pythonについては、なんとなく塩梅が分るようになった気がしているが、その他は全滅なので HUGO を触るのに不便に感じたのでやってみた。
試したのは、 format-all、 prettier、 js-beaytify。
prettier と js-beaytify では、prettierの方がメジャーみたい。
1 prettier
GitHub - prettier/prettier-emacs: Minor mode to format JS code on file save
-
対応しているのは、 flow、babylon、typescript、css、less、scss、json、json5、json-stringify、 graphql、markdown、mdx、vue、yam、html など。
save する時に自動でやると、反応が遅いので、不快になる。
(use-package prettier-js :ensure t :defer t :diminish (prettier-js-mode . "-prett") ; :hook ( ; (yaml-mode . prettier-js-mode) ; (json-mode . prettier-js-mode) ; (html-mode . prettier-js-mode) ; (web-mode . prettier-js-mode) ; (css-mode . prettier-js-mode)) :config (setq prettier-js-command "~/.yarn/bin/prettier") (setq prettier-js-args '( "--trailing-comma" "all" "--bracket-spacing" "false" )) )
2 web-beautify
- GitHub - yasuyk/web-beautify: Format HTML, CSS and JavaScript/JSON by js-beau…
- formatting package of HTML, CSS and JavaScript/JSON
- js-beautify をインストしておく。
速度は prettier よりこちらが上。
(use-package web-beautify :ensure t :defer t)
3 format-all
- GitHub - lassik/emacs-format-all-the-code: Auto-format source code in many la…
- 外部の formatter を使うので、自分で用意する。
- できる範囲で formatter をインスト。私には不要なものを含めて。(debian buster)。
- prettier(Angular/Vue GraphQL Markdown TypeScript/TSX CSS/Less/SCSS JavaScript/JSON/JSX
- clang-format (Java + C/C++/Objective-C Protocol Buffers)
- Rust (rusfmt), Go (gofmt), Haskell (brittany), Python (black)
- Ruby (rufo), Emacs Lisp (emacs), HTML/XHTML/XML (tidy)
- SQL (sqlformat), Perl (perltidy), Shell script (shfmt)
- Assembly (asmfmt(go)), Clojure/ClojureScript (node-cljfmt)
- YAML (yq -> yq.v2)
- インストしてないやつ
- Crystal (crystal tool format), D (dfmt)
- Elixir (mix format), Elm (elm-format)
- Kotlin (ktlint), Lua (lua-fmt)
- OCaml (ocp-indent), Swift (swiftformat)
なんにでも対応しているみたいで、素人の私にはこちらが良さそう。
(use-package format-all :ensure t :defer t :bind (:map prog-mode-map ("<M-f8>" . format-all-buffer) ))
4 hydra でメニューに加える
‘C-x C-s’ が手に馴染んでいて、その度に一瞬待たされるのが嫌で、 hydra に登録して、手動で実行するようにした。
(defhydra hyd-dict (:hint nil) "dic, spell and formatter" ("G" skk-get "get dic(web)" :column "skk") ("E" skk-edit-private-jisyo "edit p jisho") ("w" lookup-pattern "lookup word" :column "lookup") ("r" lookup-region "lookup for region") ("W" eww-search-words "eww-search") ("s" ispell-word "ispell word" :column "flyspell") ("b" flyspell-buffer "ispell buffer") ("t" powerthesaurus-lookup-word-at-point "at point" :column "thesaurus") ("T" powerthesaurus-lookup-word "word") ("d" powerthesaurus-lookup-word-dwim "dwin") ("f" format-all-buffer "format-all" :column "formatter") ("h" web-beautify-html "beautify H") ("c" web-beautify-css "beautify C") ; ("p" prettier-js "prettier") ;; not work prettier-mode disable ("q" nil "Exit" :exit t :column "Quit") ("." nil "cancel" :color blue) )
ここのメニュに加えるはどうかと思うが、これでしばらく試してみる。
メモしてる時とかは、’fill-paragraph’ とか ‘fill-region’ なのだが、 これさえ使ってなかったことに気付いた。今更だが。
0 件のコメント:
コメントを投稿