2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

atom-beautifyを使ったJinja2のソースコード整形

Posted at

Atomを使った開発では、atom-beautifyというソースコード整形のパッケージを使うと良い感じにインデントや改行を入れてくれます。サポートしている言語も幅広く、それぞれにインデント幅やスタイルの指定など細かな設定ができるすぐれものです。

最近Djangoを書いている都合でJinja2形式のHTMLを書くことが多いのですが、atom-beautifyのデフォルトのHTMLの整形ルール(JS Beautify)では{{}}などの対応がなく包含関係などを上手に整形してくれないという不満がありました。

最初は「Jinja2対応の整形ルールなんて無いよな」と思って諦めていたのですが、どうやらHTMLのBeautifierでPretty Diffを選択すると良いということが分かり、早速やってみることに。

Support (html) jinja2 templates · Issue #418 · Glavin001/atom-beautify

atom-beautifyの設定

AtomのPreferences→Packageのatom-beautifyのSettings→HTMLのDefault Beautifierの設定を"JS Beautify"から"Pretty Diff"に変更する。

ss 2016-11-17 15.45.21.png

ソースコードの整形比較

JS Beautifyを使った場合(デフォルト)

{% extends "base.html" %} {% block title %}タイトル{% endblock title %} {% block content %}
<form action="{% url 'project:hoge'%}" method="post">
    {% csrf_token %} {{ form.non_field_errors }}
    <div class="form-group">
        {{ form.hoge_name.errors }}
        <label for="{{ form.hoge_name.id_for_label }}">hoge_name</label> {{ form.hoge_name }}
    </div>
    <div class="form-group">
        <div>
            <button type="submit" class="btn btn-primary">作成する</button>
        </div>
    </div>
</form>
{% endblock content %}

Pretty Diffを使った場合

{% extends "base.html" %}
{% block title %}タイトル{% endblock title %}
{% block content %}
    <form action="{% url 'project:hoge'%}" method="post">
        {% csrf_token %}
        {{ form.non_field_errors }}
        <div class="form-group">
            {{ form.hoge_name.errors }}
            <label for="{{ form.hoge_name.id_for_label }}">hoge_name</label>
            {{ form.hoge_name }}
        </div>
        <div class="form-group">
            <div>
                <button type="submit" class="btn btn-primary">作成する</button>
            </div>
        </div>
    </form>
{% endblock content %}

できました!きちんとblockを認識してくれています。ほかにも{% if %}{% else %}{% endif %}
{% for %}{% endfor %}にも対応してくれます。

これでレイアウトでGitのコミットを汚すことがなくなり、スタイルも統一することができました。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?