[vim/vim] fix(filetype): improve `htmldjango` filetype detection (PR #15037)

14 views
Skip to first unread message

Afiq Nazrie

unread,
Jun 17, 2024, 9:55:21 PM (9 days ago) Jun 17
to vim/vim, Subscribed

I found htmldjango filetype detection regex is only match small number of Django tags which results in high false negative. This PR adds the rest of the tags based on https://docs.djangoproject.com/en/5.0/ref/templates/builtins/#built-in-tag-reference.

In addition, the supplied lines for matching is too few and might result in high false negative too. Increasing it to 40 lines should reduce the false negative. (I picked 40 as I think it is close to the most common height of terminal in a 1080p screen.)

Let me know if you have any suggestion :D

Related PR on Neovim: neovim/neovim#29377


You can view, comment on, or merge this pull request online at:

  https://github.com/vim/vim/pull/15037

Commit Summary

  • 8081035 fix(filetype): update htmldjango tag to match
  • 82bf628 fix(filetype): increase htmldjango buffer line for matching to 40

File Changes

(1 file)

Patch Links:


Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/15037@github.com>

Afiq Nazrie

unread,
Jun 18, 2024, 6:20:33 AM (8 days ago) Jun 18
to vim/vim, Subscribed

getzola.html (I just put random valid Django tags in line 27-33)

<!DOCTYPE html>
<html lang="en-gb">
  <head>
    <meta charset="UTF-8" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description"
          content="Everything you need to make a static site engine in one binary." />
    <meta name="author" content="Vincent Prouillet" />
    <title>Zola</title>
    <link rel="stylesheet" href="https://www.getzola.org/site.css" />
    <link rel="icon" href="https://www.getzola.org/favicon.ico" />
  </head>
  <body>
    <header>
      <a class="header__logo white"
         href="https:&#x2F;&#x2F;www.getzola.org&#x2F;">Zola</a>
      <nav>
        <ul>
          <li>
            <a class="white"
               href="https://www.getzola.org/documentation/"
               class="nav-link">Docs</a>
          </li>
          <li>
            <a class="white" href="https://www.getzola.org/themes/" class="nav-link">Themes</a>
            {% for letter in name %}
              {% if loop.index % 2 == 0 %}
                <span style="color: red">{{ letter }}</span>
              {% else %}
                <span style="color: blue">{{ letter }}</span>
              {% endif %}
            {% endfor %}
          </li>
          <li>
            <a class="white" href="https://zola.discourse.group/" class="nav-link">Forum</a>
          </li>
          <li>
            <a class="white" href="https://github.com/getzola/zola" class="nav-link">GitHub</a>
          </li>
        </ul>
        <div class="search-container">
          <input id="search" type="search" placeholder="🔎 Search the docs" />
          <div class="search-results">
            <div class="search-results__items"></div>
          </div>
        </div>
      </nav>
    </header>
    <div class="content">
      <div class="hero">
        <h1>Your one-stop static site engine</h1>
        <p class="hero__tagline">Forget dependencies. Everything you need in one binary.</p>
        <a href="https://www.getzola.org/documentation/" class="button">Get started</a>
      </div>
      <div class="inverted-colours selling-points">
        <div class="selling-points__content container">
          <div class="selling-point">
            <h2>No dependencies</h2>
            <p>
              Zola comes as a single executable with Sass compilation, syntax
              highlighting, table of contents and many other features that
              traditionally require setting up a dev environment or adding some
              JavaScript libraries to your site.
            </p>
          </div>
          <div class="selling-point">
            <h2>Blazing fast</h2>
            <p>
              The average site will be generated in less than a second,
              including Sass compilation and syntax highlighting.
            </p>
          </div>
          <div class="selling-point">
            <h2>Scalable</h2>
            <p>
              Zola renders your whole site as static files, making it trivial to
              handle any kind of traffic you will throw at it at no cost without
              having to worry about managing a server or a database.
            </p>
          </div>
          <div class="selling-point">
            <h2>Easy to use</h2>
            <p>
              From the CLI to the template engine, everything is designed to be
              intuitive. Don't take my word for it though, look at the
              <a href="https://www.getzola.org/documentation/">documentation</a>
              and see for yourself.
            </p>
          </div>
          <div class="selling-point">
            <h2>Flexible</h2>
            <p>
              Zola gets out of your way so you can focus on your content, be it
              a blog, a knowledge base, a landing page or a combination of them.
            </p>
          </div>
          <div class="selling-point">
            <h2>Augmented Markdown</h2>
            <p>
              Zola comes with
              <a href="https://www.getzola.org/documentation/content/shortcodes/">shortcodes</a>
              and
              <a href="https://www.getzola.org/documentation/content/linking/">internal links</a>
              to make it easier to write your content.
            </p>
          </div>
        </div>
      </div>
    </div>
    <footer>
      ©2017-2024 —
      <a class="white" href="https://www.vincentprouillet.com">Vincent Prouillet</a>
      and
      <a class="white"
         href="https://github.com/getzola/zola/graphs/contributors">contributors</a>
    </footer>
    <script type="text/javascript"
            src="https://www.getzola.org/elasticlunr.min.js"></script>
    <script type="text/javascript" src="https://www.getzola.org/search.js"></script>
  </body>
</html>

Benchmark - v9.1.0496

Extra options: [./getzola.html]
Measured: 1000 times

Total Average: 34.784228 msec
Total Max:     49.700000 msec
Total Min:     32.567000 msec

  AVERAGE       MAX      MIN
-----------------------------
10.457772 17.086000 9.816000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/scripts.vim
 8.263982 16.024000 7.661000: $VIMRUNTIME/defaults.vim
 7.888493 14.534000 6.894000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/html.vim
 6.442452 13.005000 5.972000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/filetype.vim
 4.165122  6.824000 3.555000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/css.vim
 2.372461  4.785000 2.058000: opening buffers
 1.191531  2.253000 1.094000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/syntax.vim
 1.074161  2.060000 0.985000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/synload.vim
 0.959106  1.832000 0.875000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/syncolor.vim
 0.814663  2.589000 0.139000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent/html.vim
 0.798495  2.008000 0.679000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/vb.vim
 0.743085  1.548000 0.680000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/colors/lists/default.vim
 0.722137  1.687000 0.665000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/autoload/dist/ft.vim
 0.601083  5.272000 0.448000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/xml.vim
 0.590685  1.550000 0.510000: loading plugins
 0.444061  1.610000 0.340000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/netrwPlugin.vim
 0.409015  1.613000 0.176000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/ftplugin/html.vim
 0.357351  1.357000 0.327000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/autoload/htmlcomplete.vim
 0.321859  0.985000 0.157000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/gzip.vim
 0.307834  1.333000 0.265000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/javascript.vim
 0.290907  0.911000 0.253000: inits 1
 0.261815  0.863000 0.236000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent/javascript.vim
 0.228887  0.587000 0.202000: Termcap init
 0.221801  1.247000 0.162000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/dtd.vim
 0.207667  1.194000 0.187000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/autoload/dist/script.vim
 0.181571  1.159000 0.157000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/logiPat.vim
 0.166000  1.160000 0.137000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/zipPlugin.vim
 0.161232  0.833000 0.112000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/tarPlugin.vim
 0.153213  0.774000 0.138000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/matchparen.vim
 0.153137  1.129000 0.112000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/vimballPlugin.vim
 0.138751  0.381000 0.124000: reading viminfo
 0.104928  0.282000 0.095000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/tohtml.vim
 0.078912  0.260000 0.065000: Allocated generic buffers
 0.062385  0.228000 0.051000: loading packages
 0.058042  0.172000 0.051000: sourcing vimrc file(s)
 0.057891  0.190000 0.048000: locale set
 0.057653  0.265000 0.049000: init highlight
 0.054203  0.144000 0.040000: parsing arguments
 0.051885  4.457000 0.039000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/getscriptPlugin.vim
 0.042481  0.240000 0.037000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/ftplugin.vim
 0.040831  0.276000 0.017000: setting raw mode
 0.031475  0.118000 0.027000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/manpager.vim
 0.026592  0.156000 0.023000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent.vim
 0.023915  0.149000 0.019000: BufEnter autocommands
 0.022762  0.234000 0.020000: loading after plugins
 0.019370  0.110000 0.016000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/spellfile.vim
 0.011791  0.065000 0.009000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/rrhelper.vim
 0.010684  0.122000 0.008000: shell init
 0.007985  0.146000 0.006000: clearing screen
 0.007761  0.038000 0.006000: inits 2
 0.007190  0.137000 0.004000: --- VIM STARTING ---
 0.003960  0.037000 0.002000: inits 3
 0.003451  0.057000 0.002000: start termcap
 0.002349  0.023000 0.001000: window checked
 0.001440  0.012000 0.001000: editing files in windows
 0.000965  0.015000 0.000000: expanding arguments

Benchmark - this PR

Extra options: [./getzola.html]
Measured: 1000 times

Total Average: 23.924577 msec
Total Max:     77.414000 msec
Total Min:     22.659000 msec

 AVERAGE       MAX      MIN
----------------------------
8.126958 14.449000 7.601000: $VIMRUNTIME/defaults.vim
6.948326 11.118000 6.590000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/htmldjango.vim
6.658676 10.850000 6.318000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/html.vim
6.369272 10.919000 5.904000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/filetype.vim
3.726768  7.875000 3.537000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/css.vim
2.516440 56.652000 2.178000: opening buffers
1.517111  2.792000 1.413000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent/htmldjango.vim
1.452128  2.733000 1.357000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent/html.vim
1.176347  2.541000 1.086000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/syntax.vim
1.062174  2.429000 0.983000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/synload.vim
0.949410  2.270000 0.876000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/syncolor.vim
0.738344  1.875000 0.679000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/colors/lists/default.vim
0.733362  1.855000 0.682000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/vb.vim
0.717830  1.562000 0.664000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/autoload/dist/ft.vim
0.698953  5.362000 0.638000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/ftplugin/htmldjango.vim
0.607166  5.260000 0.554000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/ftplugin/html.vim
0.573874  1.383000 0.517000: loading plugins
0.419413  1.369000 0.341000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/netrwPlugin.vim
0.358076  0.958000 0.328000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/autoload/htmlcomplete.vim
0.289125  0.743000 0.155000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/gzip.vim
0.285238  0.458000 0.253000: inits 1
0.276131  0.881000 0.250000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/javascript.vim
0.261158  0.873000 0.237000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent/javascript.vim
0.222587  0.440000 0.200000: Termcap init
0.177072  0.598000 0.157000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/logiPat.vim
0.154263  0.763000 0.137000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/zipPlugin.vim
0.152174  0.660000 0.138000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/matchparen.vim
0.145474  0.557000 0.113000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/tarPlugin.vim
0.137828  0.408000 0.125000: reading viminfo
0.136794  0.680000 0.112000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/vimballPlugin.vim
0.119750  1.111000 0.107000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/django.vim
0.103716  0.369000 0.095000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/tohtml.vim
0.077158  0.223000 0.065000: Allocated generic buffers
0.061122  0.300000 0.051000: loading packages
0.056886  0.152000 0.050000: sourcing vimrc file(s)
0.056629  0.171000 0.049000: init highlight
0.056209  0.130000 0.047000: locale set
0.053205  0.175000 0.042000: parsing arguments
0.045615  0.295000 0.039000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/getscriptPlugin.vim
0.042225  0.211000 0.037000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/ftplugin.vim
0.038852  0.098000 0.019000: setting raw mode
0.031795  0.182000 0.028000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/manpager.vim
0.026885  0.206000 0.023000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/indent.vim
0.024276  0.130000 0.020000: BufEnter autocommands
0.022838  0.139000 0.020000: loading after plugins
0.019793  0.143000 0.017000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/syntax/xml.vim
0.018806  0.133000 0.016000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/spellfile.vim
0.011443  0.118000 0.009000: /home/mangkoran/.local/share/mise/installs/vim/9.1.0496/share/vim/vim91/plugin/rrhelper.vim
0.010383  0.068000 0.008000: shell init
0.007826  0.193000 0.006000: inits 2
0.007808  0.141000 0.006000: clearing screen
0.006664  0.050000 0.004000: --- VIM STARTING ---
0.003842  0.084000 0.002000: inits 3
0.003314  0.033000 0.002000: start termcap
0.002235  0.019000 0.001000: window checked
0.001469  0.003000 0.001000: editing files in windows
0.000934  0.003000 0.000000: expanding arguments


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/15037/c2175742358@github.com>

Afiq Nazrie

unread,
Jun 18, 2024, 8:42:18 AM (8 days ago) Jun 18
to vim/vim, Subscribed

I wonder why on the first benchmark (v9.1.0496) the scripts.vim was executed, while on the second benchmark (this PR) it did not?


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/15037/c2176006841@github.com>

Christian Brabandt

unread,
Jun 18, 2024, 1:52:36 PM (8 days ago) Jun 18
to vim/vim, Subscribed

thanks, let me include this.


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/15037/c2176656199@github.com>

Christian Brabandt

unread,
Jun 18, 2024, 2:01:26 PM (8 days ago) Jun 18
to vim/vim, Subscribed

Closed #15037 via 9718ed7.


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/15037/issue_event/13204743129@github.com>

Reply all
Reply to author
Forward
0 new messages