1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-21 06:55:39 +00:00

Squashed commit of the following:

commit a2b7d1129ba03ab7d06618d838cd3abe6852488b
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date:   Tue Jun 18 01:23:21 2024 -0400

    Move files for inclusion into Emacs

commit cd4fc6f933e8679eff1754eaaac99e4361f0122f
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date:   Sun Jun 16 13:33:55 2024 -0400

    Incorporate trivial left-over changes

    The previous commits are the result of a `git rebase` that removed
    all the commits by contributors for whom we don't have paperwork.
    This one "smoothes" over some of the remaining diffs.

commit 94c0223e888d637ae5d75fcb210fe4bf7898b3da
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Jun 8 00:52:06 2024 +0900

    Fix text (#342)

commit d50dfb5c5bf2dc832c9aff8f4b8603c2d504c41a
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jun 4 15:02:56 2024 +0900

    Refactor find-file advices (#340)

    * Add coding-system test

    * Refactor find-file advices

    * Fix test

    * Fix test

    * Update

    * Update

commit f55bb4e691dcb63502035aa3e48f6839ae163b44
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Jun 2 16:42:31 2024 +0900

    Update CHANGELOG.md (#339)

    * Update CHANGELOG.md

    * Update CHANGELOG.md

commit a85a4cafa6c8a1a80f3671658e5aaaf8faedb923
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 31 22:19:15 2024 +0900

    Add switch not to override local variable values (#338)

    * Add tests

    * Define variables

    * Update --should-set

    * Add fixes to work

    * Update test and fix

    * Fix variables

    * Use defcustom for switch variables

    * Remove comment

commit 4fbfad0591a9851a48b8ead1e4459677d3f64c58
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Sat May 11 22:38:20 2024 -0700

    feat: Add Svelte support (#333)

commit d2d942b4cc83fa0ba32dcaaf6c73004e6490bfc8
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 11 15:45:42 2024 +0900

    Prepare v0.11.0 (#332)

    * Prepare v0.11.0

    * Update CHANGLOG for v0.11.0

    * 2024

commit 9ad3ed0e58bcd719d63d7b64538eff118d094767
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 10 00:45:15 2024 +0900

    Update CHANGELOG (#331)

commit 3fb9fd274d2435228a6545cd2a7553c9522b32e8
Author: 10sr <8.slashes@gmail.com>
Date:   Mon May 6 23:01:39 2024 +0900

    Separate some utility commands to new file (#330)

    * Remove switch to use legacy version

    Remove `editorconfig--lagacy-version` variable.

    * Create editorconfig-tools.el and move some functions into it

    * Fix merge

    * Update commentary

    * Update CHANGELOG

    * Update text

commit d73f126ddb44eba628a87df07f8fd7247c8221aa
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 5 23:46:58 2024 +0900

    Remove editorconfig-mode legacy version (#304)

    * Remove switch to use legacy version

    Remove `editorconfig--lagacy-version` variable.

    * Update CHANGELOG

commit ea19d96a7afcd947ece8490d8d9846519ac53606
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 3 18:49:50 2024 +0900

    Exclude some versions from test target (#329)

    nix-emacs-ci does not provide them any more.

commit 641c8cd06abfd0cf99cc56eeca5458a03feec7c6
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Thu Mar 28 13:22:07 2024 -0700

    ci: Bump Emacs 29.x to 3 (#327)

commit 0eef782ae0ece28f0c446165febcf02f6207bb5e
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Mon Mar 18 13:49:24 2024 -0700

    feat: Add Zig support (#326)

    * feat: Add Zig support

commit 4c7c96dee9ad7318b4df9414758cd46957cdb495
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Tue Jan 9 12:24:11 2024 +0900

    Add jsonian-mode (#320)

commit 94f6fa546f85a49fea649d9c479f20613a36b9af
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Mon Dec 18 14:01:05 2023 +0900

    Add php-ts-mode (#318)

commit f6eba36c09840b3f1952fb8a542347741a4f3de9
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Aug 3 00:05:49 2023 +0900

    Add support for hcl-mode (#312)

commit 4f0e71c9f9ae00fd6e90573c5c779da4c5f397ef
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Aug 2 23:45:29 2023 +0900

    Temporarily remove test with windows-latest, emacs snapshot (#313)

commit e81368ede389feb28d941c8e135c11e4bdf0160d
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Wed Aug 2 07:25:26 2023 -0700

    test: Emacs 29.1 (#311)

commit dc571e9422a1713e252093b4ee0eb290841dc07c
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 19 17:51:28 2023 +0900

    Update CHANGELOG (#308)

commit 8c1ec23fe6d9fc1d3e2ce24fe76503c88a4ebbc6
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 19 17:28:11 2023 +0900

    Prepare v0.10.1 (#307)

commit a415057ecfc5e89a903cb2e62a7d9d2596769532
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 19 17:07:23 2023 +0900

    Fix compile warning of python-mode offset (#306)

commit 94aa31702f7316db63411de8ded371f782d02baa
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 19 16:51:48 2023 +0900

    Fix when-let (again) (#305)

    * Fix compile of editorconfig-core

    * Use when-let* instead of when-let

commit 3b2b213934e6648834f043623bdce2a3b816ece1
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 7 17:15:54 2023 +0900

    Prepare v0.10.0 (#303)

    * Update CHANGELOG

    * Update CHANGELOG

    * Update version string

commit ea22e6977eb64a38e19250b1fef3933b702d8a16
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 7 17:03:30 2023 +0900

    Revert "Update version string"

    This reverts commit dfce47f4c5369711524c4da606201f33649bf894.

commit 8ba886d3a64514ca6b558a19a3df7cf147f528f0
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 7 16:46:09 2023 +0900

    Update version string

commit c6769a3be9d5447bbf253681e731aa017de49872
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 7 16:17:58 2023 +0900

    Check mode-class property for special modes (#301)

    In addition to checking parent mode

commit 02bd633818a2db80b2bf5ebaaf3eaed76a0443ac
Author: 10sr <8.slashes@gmail.com>
Date:   Sun May 7 15:59:34 2023 +0900

    Load subr-x when compiling (#302)

    `when-let` depends on this.

commit d7da0ea0fe118d88d032e81de65c79593c5181ea
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Thu Apr 27 03:25:18 2023 +0800

    Add support for gdscript-mode (#300)

commit 93c418e7d385f55103d94a926b0ec051e51bceeb
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Sun Apr 16 07:12:01 2023 +0800

    fix: Fix compile warnings (#298)

commit d21983b235c11f4a1845bd80e9d6ca25c9882f9a
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Sun Apr 16 07:05:26 2023 +0800

    Update copyright year (#297)

commit 38f84cca9a68bca0e74bb4f50e178e6a9883c1f4
Author: Mohsin Kaleem <mohkale@kisara.moe>
Date:   Mon Apr 10 00:46:35 2023 +0100

    Add bash-ts-mode to editorconfig-indentation-alist (#296)

    Co-authored-by: Hong Xu <hong@topbug.net>

commit 5f112084d762c05a6d31b9bd3c4619789614f842
Author: Simen Heggestøyl <simenheg@runbox.com>
Date:   Thu Mar 2 09:31:07 2023 +0100

    Fix compilation warnings in Emacs 29 (#292)

    Fix a bunch of compilation warnings in Emacs 29 about wrong usage of
    unescaped single quotes in docstrings.

commit 37b142e86513b2477c19defcf6798e362e5ba7bd
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Wed Feb 15 23:12:21 2023 -0800

    docs(README.md): Update development instructions (#291)

commit 7f3c344e15e86a54390f4b3428432476b45d6c62
Author: Mohsin Kaleem <mohkalsin@gmail.com>
Date:   Sun Feb 12 06:17:01 2023 +0000

    Add indent variable associations for numerous tree-sitter modes (#290)

    * Add indent variable associations for numerous tree-sitter modes

    * build: Correct csharp-ts-mode variable reference

commit 26bc586c7e19dd00554f732f4313e07a0a18bb97
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Tue Jan 3 19:43:54 2023 +0800

    Drop Emacs 24.x and 25.x (#286)

    * Drop Emacs 24.x and 25.x

    * test(build.yaml): Make fail-fast to false

    * Update CI test

    * docs: Update changelog

    * Revert author information

commit d96709f3ddb7ce905e2ba1ff615ed875e26d6fdb
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Thu Dec 29 05:46:11 2022 +0800

    chore: Place emacs dependency to the front (#285)

    * chore: Place emacs dependency infront

    * Update copyright year

commit 00913e8db3a864e7dbf8da7aa6ac355aeef3f999
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Nov 7 12:00:26 2022 +0900

    Prepare v0.9.1 (#281)

commit b57c665de578b7510affa426478fadacef80f5d4
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Oct 31 14:47:17 2022 +0900

    Check `filename` rather than `buffer-file-name` for consistency (#280)

    Co-authored-by: Wade Zhang <dochang@gmail.com>

commit 35b360daebc6fc30723b5f361c65345dea0cc7f7
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Oct 23 22:20:37 2022 +0900

    Prepare v0.9.0 (#275)

    * Update version number in el file

    * Update CHANGELOG for 0.9.0

    * Fix CHANGELOG

    * Fix release date

commit 52d089efa733e0add922e07485cf8ac547bf9e3c
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Oct 23 22:13:13 2022 +0900

    Fix package load for use-package usage (#277)

commit b9c5af58e5059dad44a79a52790c2d913930d0ef
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Oct 23 20:47:55 2022 +0900

     Add fixes for Emacs 29 (#276)

    * Fix warnings reported with Emacs29 snapshot

    * Disable vc feature for ert testings

commit cc2fc3d25447dfa6271a9b6434478c2f140b4022
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Date:   Fri Sep 30 07:18:09 2022 +0800

    tests(build.yml): Use latest minor version number (#274)

commit 7e266d113ed69c487e25260527c3e39fa274662f
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Apr 18 14:41:07 2022 +0900

    Add emacs 28.1 to test target (#270)

commit bd35e505585a738cfed09f8d7fbcdac523f648bb
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 26 13:05:00 2022 +0900

    Add doc about lsp-mode (#266)

    * WIP Add doc about lsp-mode

    * Update README

commit 69582a19e4c40bbf2006c2fac6f61b8eb5c9d4e3
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Sep 2 05:53:42 2021 +0900

    Update CHANGELOG

commit 3c47c18a72e98036d9ebf11350c3af9683d86c76
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Aug 30 19:25:20 2021 +0900

    Use new implementation by default (#263)

    * Use new implementation by default

    * Remove old test

    * Make editorconfig-hack-properties-functions deprecated

commit 111a668e52f68706650d5624f16fd92c0c113f7b
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 13 22:01:38 2021 +0900

    Prepare v0.8.2 (#262)

    * Update CHANGELOG

    * 2021

    * Prepare v0.8.2

commit 4bcd7e2f12800d3a4566130f447533a1955a978a
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 13 21:55:02 2021 +0900

    Update texi doc

commit 7e71870e27d2ef23196127640ca3935cbdd4a432
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 13 00:30:01 2021 +0900

    Update debug message format (#261)

commit 76fc064ee4ff6ab05db2c5004d7d4cd150b2fac1
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 13 00:19:52 2021 +0900

    Fix editorconfig-major-mode-hook (#260)

commit db6ae0703c07568780c71dd92874886208536eaa
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 13 00:07:12 2021 +0900

    Update README for NonGNU ELPA repository (#259)

    * Add NonGNU ELPA badge

    * Update README

commit f3164820fc06a642bbc0eccadc5386ec98befb5b
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Aug 10 00:23:58 2021 +0900

    Add some bug fixes to 20210221-testing (#258)

    * Rename internal function name

    * Update comment

    * Update -set-coding-system func name and doc

    * Add comment

    * Fix mode-hooks

    * Fix func name

    * Update -major-mode-hook function

commit 5e0f23b64c822e7f2ff1d23c756e89c1c073c23c
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Apr 7 13:07:42 2021 +0900

    Add fixes for compile warning

commit b46c5dd667b68bfca204ff7424df8588dae12a56
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Apr 7 12:02:07 2021 +0900

    Make new impl work when changing major-mode (#255)

commit 7375e7fdd21be087ffb52bf2917aefcaded3292c
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Feb 22 01:17:49 2021 +0900

    Return early when expecting coding-system has been already set

commit 13d8f9bb7bddf7f43091829fa361a336dbf2de61
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Feb 21 22:41:57 2021 +0900

    Add minor fixes to tests (#252)

    * Update Makefile targets

    * Update github actions task

    * Fix test macros

    * Update README

commit ddce92ffcc92b79080949ad72801292fa2bafeb9
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Feb 21 22:25:29 2021 +0900

    Use flag instead of adding -2-mode for new version testing (#251)

    * Use flag instead of adding -2-mode

    * Fix test

commit f18086a5b97625bcb51a4c8cb790efca80ef6d10
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Feb 21 21:37:45 2021 +0900

    Add debug message to -set-coding-system

commit afe9f62ecfcba0ce92255fa18c4a1af0787ff3b0
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Feb 21 21:06:19 2021 +0900

    Move hack-properties-function run

commit 2c7790d6eec32e486b448e2e40549d3f139227df
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Feb 21 20:58:40 2021 +0900

    Update display-warning messages

commit f8dc92d37b965370a2332e19609cebdddbbac406
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Feb 20 01:56:22 2021 +0900

    Fix for coding-system set when remote files do not exist (#250)

commit 28108cc8b456cedbc2e895da1c1151a11571cd4f
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Feb 20 00:44:22 2021 +0900

    Fix editorconfig execution for remote hosts via tramp (#249)

commit 8086a8a45982b30a9620f723ce81994ed4ad26e1
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Feb 20 00:14:23 2021 +0900

    Update docstrings

commit 69c8e3f766b2d458c5e3461c772cff69434962cd
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Feb 19 20:39:05 2021 +0900

    Update debug message

commit da2ede9ef13ae04ba4f1a37236052d9ce4c2e150
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Feb 19 18:11:37 2021 +0900

    Refactoring & add editorconfig-2-mode for beta test (#248)

    * Remove file type experimental feature temporarily

    * Do some refactors

    * Ignore failures of tests for file type feature

    * Make editorconfig-get-properties-function accept one argument

    * Implement editorconfig--advice-find-file-noselect

    * Define editorconfig-error

    * Implement advices

    * Update adviced function body

    * Update function name

    * Refactor exclude functions

    * Add more error handlings

    * Refactor editorconfig--advice-find-file-noselect

    * Add editorconfig-2-mode

    * Add nadvice to dependency list

    * Use display-warning instead of message for debug log

    * Update README

    * Fix editorconfig-2-mode for read-only-mode

    * Add test for editorconfig-2-mode

commit d53e3da79f40ec879b1520b6f73c371f8a5cfc03
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Feb 15 00:27:04 2021 +0900

    Stop excluding remote files by default (#245)

    To exclude remote files again, add following to the init.el:

        (add-to-list 'editorconfig-exclude-regexps
                     (eval-when-compile
                       (rx string-start "/" (or "http" "https" "ftp" "sftp"
                                                "rsync" "ssh") ":")))

commit 968bb5fb871e0076a4779f78526e3ad91777e60c
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jan 12 18:01:07 2021 +0900

    Do not run editorconfig-apply on recentf-save-file (#241)

commit a6c64cc26d5d237f6b3c53e8d637af96c428a5f7
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Jan 8 13:28:50 2021 +0900

    Use revert-buffer-with-coding-system to set coding system (#236)

    * Use revert-buffer-with-coding-system to set coding system

    * Avoid infinite call

    * Do not ask user for revert when buffer is not modified

    * Refactor -set-coding-system

    * Do not use revert when the file does not exist yet

    * Refactor -set-coding-system

commit 9605f6bf4408e4a5025dc6862fba96de347b9332
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Dec 24 05:26:25 2020 +0900

    Remove travis.yml (#238)

commit c73b0cf3fcc4dd5ff1e268d54d20ab6e88cd6b2e
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Dec 23 15:36:45 2020 +0900

    Update README 2 (#225)

    * Update README 2

    * Update README.md

    * Update README.md

    * Update README.md

    * Update README.md

    * Update README.md

    * Update README.md

commit bba5bdaef41895bf528f00923e8f1ce249a93641
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Nov 25 15:31:14 2020 +0900

    Add github actions badge

commit ee39cf38f4efda519db947dd850a6522836561c5
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 7 08:00:19 2020 +0900

    Do not init submodule in Makefile

commit 4def6c96944c8e704f4424d10fcd1a73076709c6
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 7 07:21:43 2020 +0900

    Add Github Actions build.yaml

commit 49cf213f30d027aae34b3d499aa637cb1cca5f38
Author: Brian Leung <29217594+leungbk@users.noreply.github.com>
Date:   Sun Nov 22 07:42:16 2020 -0800

    Silence byte-compiler warnings (#235)

    Move aliases before their referents

    Co-authored-by: 10sr <8.slashes@gmail.com>

commit d4fabc95b8b2af5d7ead1b1e8065c69d5805d6b4
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 7 07:22:32 2020 +0900

    Add Emacs 27.1 to test target (#228)

    * Add Emacs 27.1 to travis test target

    * Add GitHub Actions build.yaml

    * Fix evm 27.1 version

    * Remove github actions build.yaml

commit 1defe4a4cd0fa7f57c0013e6efc535bb02f827cd
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Jul 31 00:31:28 2020 +0900

    Fix references in CHANGELOG (#226)

    * Fix issue references in CHANGELOG

    * Fix commit reference link

commit 88efaca117ef6abd3bdee39de7b4b64628e59796
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 30 22:37:30 2020 +0900

    Update CHANGELOG

commit c8c7845c73d08bd21235bc79eafa887651990a6f
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 30 22:34:36 2020 +0900

    Add doc about make sandbox

commit 8c551d92bacea8d6ea1b73e945ab5600f7608a78
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 30 22:32:29 2020 +0900

    Update README to help bootstrap users (#219)

    * Update README to help bootstrap users

    * Update doc

    * Fix doc

    * Update

    * Updat

commit c0789e2d537fb609af72a1edf51e1c5e4673ab2e
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 22 23:13:55 2020 +0900

    Keep a CHANGELOG (#221)

    * Add empty CHANGELOG.md

    * Generate CHANGELOG template

    ```python
    #!/usr/bin/env python3

    import subprocess

    def _get_tag_date(tag):
        git_show = subprocess.run(["git", "show", tag, "--format=%cd", ...
..."--date=short", "-s"], capture_output=True)
        return git_show.stdout.decode("utf-8").strip()

    def main():
        git_tag = subprocess.run(["git",  "tag"], capture_output=True)
        versions = list(reversed([e[1:] for e in git_tag.stdout.decode...
...("utf-8").split("\n") if e]))
        for version in versions:
            print(f"## [{version}] - {_get_tag_date('v' + version)}")
            print()
            print()

        print(f"[Unreleased]: https://github.com/editorconfig/...
...editorconfig-emacs/compare/v{versions[0]}...HEAD")
        for version, version_prev in zip(versions, versions[1:]):
            print(f"[{version}]: https://github.com/editorconfig/...
...editorconfig-emacs/compare/v{version_prev}...v{version}")
        print(f"[{versions[-1]}]: https://github.com/editorconfig/...
...editorconfig-emacs/releases/tag/v{versions[-1]}")
        return

    main()
    ```

    * Paste release notes from github releases

    * Add release note for unreleased

    * Fix line

commit 68e940e0fd312848d18aba93b49285d7a8d74182
Author: 10sr <8.slashes@gmail.com>
Date:   Tue May 19 20:28:23 2020 +0900

    Add conf-mode abbrev-table definitions (#220)

commit dc9dc966f973d9e9f2992004beb462bc5813c01c
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Feb 12 16:39:43 2020 +0900

    Update hook docstrings (#215)

    #214

commit 5aa20f73ddbf5df60a9c66b219846d94c9d12a7d
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Feb 12 15:56:48 2020 +0900

    Define -mode-apply as an interactive command (#216)

commit 39175259174ba0eea3529fc4039fbd90c5990ecc
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 16 17:59:07 2020 +0900

    2020

commit d29d6f1254f018cdc696cf40614e6799e2673f64
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Dec 20 16:31:15 2019 +0900

    Update README

commit d24e05ccd13c44380dbbbc4756eb02ede3882b9e
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 23 13:39:46 2019 +0900

    Use elisp core by default

    Closes #198

commit 42d9b6aebd4488d6862ff39238a284408e5e4370
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Dec 20 16:31:40 2019 +0900

    Remove a trailing whitespace

commit 347e0171ad3cfcb70c0aca73b7b6fa8a5875dae6
Author: Damien Cassou <damien@cassou.me>
Date:   Wed Nov 27 06:29:43 2019 +0100

    Fix typos (#212)

    Typos found with codespell.

commit 7915da05ee67bf5c5356ddd49400e9facc15d004
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Oct 25 16:59:30 2019 +0900

    Fix that "?" does not match "/"

commit 480998f061d22444571f05b6c10d190c204c227e
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 23 14:32:21 2019 +0900

    Update core-test

commit 63fa8f9e4bc2938e7bc02b97da79335db29bf0e0
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Oct 10 13:44:34 2019 +0900

    Bump version to v0.8.1

commit b7d3a15f606582d30590fab8bbf0202fd7351c90
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 8 13:55:05 2019 +0900

    Fix support for Emacs<26

commit 19bad72db735c032e773b6201a80a5df2597c0f4
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 8 13:40:49 2019 +0900

    Add editorconfig-file-type-emacs-whitelist value

commit a179c9876f8f1fd343559aad13a32b96a651e86a
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Oct 7 22:34:03 2019 +0900

    Disallow setting mode when it is not listed in whitelist

commit cb218f4b5adc10faa2f89c4ec85bfafa7ad0600a
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 8 14:10:09 2019 +0900

    Use dist: trusty

commit ae5fb296026f948103ade4e7e42f3989dda44df7
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 8 14:04:41 2019 +0900

    Update travis Emacs26 version

commit 5e9769675fbf76566ca10f30c148f385396796ae
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Mon Jun 17 06:43:54 2019 +0100

    Add support for bpftrace-mode (#199)

commit 875088b1c587451916accd2474d57c66d05be1c6
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Jun 3 20:24:18 2019 +0900

    Add explicit support for rpm-spec-mode

commit 0faf4dc29c6c504a3026601b6035ff0735a0839b
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Jun 3 19:28:20 2019 +0900

    Make editorconfig-properties-hash permanetn-local

commit f511979e3c172932ba51b4b8e1172897f786c834
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Apr 2 15:55:33 2019 +0900

    Update message format for version info

    Update message format for version info

commit efc11ec6fd100b2c19950153b1f6e64d85c36d97
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Mar 26 23:20:10 2019 +0900

    Make -version print packaging version

commit c2ea49f01fbdc144e623c30cbb8b6bf4439ac6b5
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Mar 26 20:24:31 2019 +0900

    Bump version to v0.8.0

    (#192)

commit c6e817a36b2d901a837f373748941ff1246081f8
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Mar 23 21:40:49 2019 +0900

    Use API to get version info (#193)

commit 0cf6ce9534a35823f534014ec941db2a690f9002
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Feb 25 19:49:56 2019 +0900

    Use https for melpa badge

commit 695fce14c0f2cfc72520356cc9d6c46ed3fff33a
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 24 14:49:05 2019 +0900

    Update plugin-tests submodule

commit 1651d96aa2909d7f49c7e06a893c464e6f1fa2d9
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 24 14:48:26 2019 +0900

    Do not update submodule when running tests

commit ff0ed217461484a45ab8be7a8aa11c8b503f2388
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jan 22 13:59:50 2019 +0900

    Use reference link

commit 5632843e840d0e8dee819d283b8d0a2ae88b8fa8
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Jan 18 13:17:15 2019 +0900

    Update README

commit 570502fdbb5e7634a43178805caae16e709ba9d7
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 17 14:10:15 2019 +0900

    Update docstring

commit b36f495d1510a53c63e42d6f48513b2fc3fc5b45
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 17 12:38:25 2019 +0900

    Separate tool functions

commit f295ca7cb2e64a8312a172b53b5eee7f06f8ac6e
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 17 11:23:49 2019 +0900

    Use -*- lexical-binding: t -*-

    https://github.com/melpa/melpa/blob/master/...
...CONTRIBUTING.org#fixing-typical-problems

commit 2d342a1dc75d800577526bd5b62e2f2e350f2447
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 17 11:16:59 2019 +0900

    Fix function name

commit ec5576f7a9ae86649332414995124a3355ae5c13
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 17 11:13:37 2019 +0900

    Add fixes for package-lint

commit bd9e60c65cd8dd1fdc0f6fe35b2684bc2c4c2d80
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 17:09:18 2019 +0900

    Update README

commit 551fcd4dc2556506e95c26898d864743cfb379c8
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 17:14:18 2019 +0900

    Update commentary section

commit 8352b3f1d06aefcc4f8f6b7da760ced921efe93e
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 16:52:49 2019 +0900

    Remove comment

commit 51d2849fb6aaf195393f37dfbd1573d0b449df9b
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 16:44:59 2019 +0900

    Update year

commit 9b36c88ce02325e755ce07ebbfd6622b67619d63
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 16:43:13 2019 +0900

    M-x checkdoc

commit 68d488ee67e6fa06b9b596f178d445b28bab2865
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 16 14:24:46 2019 +0900

    Add struct docstring

commit feddcd841a913b8f1a79251bb347a2d3b00a06ae
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 10 14:40:30 2019 +0900

    Remove useless spaces

commit f735659b421c5f72bc6c137fd7717a1931ce719d
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 10 14:31:53 2019 +0900

    Stop using cl-defclass

    With Emacs<25 cl-defmethod cannot used for structs

commit 56fa185bcec16e2fb97b71a4e6dee0c5ef2b6256
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 10 14:30:55 2019 +0900

    Revert "Add support for Emacs24.5"

    This reverts commit 103081756d5d1de03dfa2d9d42b6e4a8581fca29.

commit 026b21393284b9328fec956dae28c26dab1903e6
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 10 14:13:21 2019 +0900

    Add support for Emacs24.5

commit 2aabf655a964a7a172de66391cfdd1d598e2e8f1
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jan 10 13:48:52 2019 +0900

    Refactor handle lib

commit d40048455064be9e090828b4cb28f86f922eae85
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jan 9 13:29:46 2019 +0900

    Use 0.8.0 for next version

commit 7a17d5ea063030313726104a3a1895bb6eb7021f
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jan 8 16:08:04 2019 +0900

    Remove unused tests

commit 4f20ce1e1cbf3de1284f8de988ea12a2dcdfa690
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jan 8 15:58:29 2019 +0900

    Get alist result from hash result

commit 69768d1bd108d93d392b2d8eb5750d8b8ddca169
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Jan 8 11:27:44 2019 +0900

    Implement --hash-merge

commit c36d66e3421dfbcdfa9f9221b900f3c8fbde8882
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Jan 7 20:29:20 2019 +0900

    Update get-properties-hash

commit 75d0158b6c5c1723a1d21f8c4ebdc37b91aa9d1c
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Jan 7 12:21:09 2019 +0900

    Add function to get properties from handlers as hash

commit e8ac4bf5d3d7e70ea815f68d64933330a7ffc1d9
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Tue Dec 25 21:05:37 2018 +0900

    Use Markdown's code spans instead of Emacs style `' (#186)

commit 77775d90c383c5ddd0c4f9564d022ef971c9f7c3
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Dec 25 11:49:07 2018 +0900

    Bump version to 0.7.14 (#185)

commit e25ac0d49ff1e1982d58198efab35f3bd2c368d4
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Dec 17 16:24:27 2018 +0900

    Add document for editorconfig-trim-whitespaces-mode

commit 29060e8494a4ee2bccae7114cdf148387bce2f47
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Dec 15 16:46:07 2018 +0900

    Add variable editorconfig-trim-whitespaces-mode

commit 1327acab8d855d479d9d087129d05de671da8c76
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Dec 3 19:41:49 2018 +0900

    Use princ instead of message to write to stdout

commit d22c30f408fb2447047e8413dc5ca435b062b933
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Dec 3 18:54:25 2018 +0900

    Update core-test submodule

commit 88b2303a1f28a1b257fb5c205fa36428219197e7
Author: Terje Larsen <terlar@gmail.com>
Date:   Sat Nov 17 23:16:12 2018 +0100

    Use ws-butler when enabled and available.

    When having auto-save on and you edit text the cleaning up of
    white-space is a bit intrusive and removes the space at the end of the
    line where you are writing. `ws-butler-mode` is an alternative that does
    take this into account.

commit 550897776f79f4e5395fe00924bdf620982f5b47
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Nov 15 16:09:02 2018 +0900

    Fix hack-properties-functions example

commit 8241f65395cd78b83a59d5cfc1c682ef1ead90cd
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Oct 25 13:21:50 2018 +0900

    Fix README and texi

commit dff69487901d0074b1fdad8c91e69b40e5e6543e
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Oct 24 13:41:30 2018 +0900

    Update document

commit 9ca51506778b486d947cba5dabd318614ebc5628
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 14:48:34 2018 +0900

    Add test for -hack-properties-functions

commit 07ae870dbb2fdc4ec70c440e355bd126d124dce6
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 14:27:56 2018 +0900

    Call -hack-properties-functions in editorconfig-apply

commit adfb8c54ba4ea5d52a558bd97221f40a5495e170
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 14:18:46 2018 +0900

    Add variable -hack-properties-functions

commit 28c4846e9cac199ff4c357033a80054017687b90
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 14:04:22 2018 +0900

    Fix version when -custom-hooks has marked as obsolete

commit 88824e7be5b7492845d914110e07328a93901e05
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 13:56:46 2018 +0900

    Update texi for hook name change

commit e11f186800af869897400eb2be72f7ec4c3379d2
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Oct 23 13:51:32 2018 +0900

    Use derived-mode-p for major-mode check (#180)

commit 791cb6777301fb22f97538471904188deb4b05ec
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Oct 19 19:13:19 2018 +0900

    Update README.md for hook name change

commit 1138109d4b29c2c8e8e360f9d9314d7081e4fbb4
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Oct 19 19:01:42 2018 +0900

    Change hook name -custom-hooks -> -after-apply-functions

    With obsolete-variable-alias

commit ff38e8046be032e0d84a5d326dd68d3f40ea449e
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 25 18:26:43 2018 +0900

    Do not call mode func when current mode is a child mode of target (#179)

commit 5fff8e44195d91f967b4bacc2562026c7bcfda01
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 25 15:40:52 2018 +0900

    Use file_type_ext for test fixtures

commit 20f627f9caf32d65509a8a536743c5960d52a8e0
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 25 14:19:56 2018 +0900

    Do not call major-mode when already enabled (#178)

commit 5a71b05195abc14e84970ba66d4ec2987627266d
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 25 11:55:59 2018 +0900

    Make conf-mode used when a file has .editorconfig extension

commit 46fff5b32a0a7b014dda9a970ca99ad8c35a05d3
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 25 11:52:16 2018 +0900

    Add file_type_ext to conf-mode keyword

commit 1bbbf78990925bfcb426b2752dc09cfd6ae5ba22
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Sep 22 15:25:02 2018 +0900

    Rename existing function set-major-mode -> set-major-mode-from-name

commit 780fc5f46ecda16c31c82b03d12ab392576db5f4
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Sep 22 15:19:47 2018 +0900

    Update doc

commit 82ba59023e3df7560e24dc4a5797bf92bcbc7656
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Sep 20 16:54:51 2018 +0900

    Set major-mode from file_type_ext value

commit 2fbbea8e862c80ee7c3cc463980b1a20835b0346
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Sep 21 13:43:11 2018 +0900

    Add ert-test for file_type_ext

commit 7524e641cacbc570a8a4c159fc8d2ef08e753584
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Sep 22 17:44:47 2018 +0900

    Add ert-test for file_type_emacs (#177)

commit aeb53c0d1c5dc1bdf854a77ac21d746571b14fa3
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Sep 22 17:40:14 2018 +0900

    Make `fixtures' a constant (#176)

commit 0f5926619f0d77b0a32fbe17730a2d04d93f1e4e
Author: 10sr <8.slashes@gmail.com>
Date:   Tue Sep 4 11:12:01 2018 +0900

    Update texi for HTTPS url

commit 29cc1456c06d392bff1368c935083a23f4375274
Author: 10sr <8.slashes@gmail.com>
Date:   Mon Sep 3 16:48:36 2018 +0900

    Use HTTPS link (#174)

commit 8a602e176a068bc952a685086157a0caf4025806
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 31 14:11:41 2018 +0900

    Update doc

commit b61e4feedb5108e2c555f818251fcb2af3725ba6
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 31 16:40:54 2018 +0900

    Update header.txt

commit 8e91d9fe91d39b4984650c487206e138c87f65ca
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Aug 31 16:13:56 2018 +0900

    Update Makefile for info generation

commit 75698b1b333992b1ee300c1b82e6409297b539ee
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Aug 23 13:52:57 2018 +0900

    Bump version 0.7.13

commit 5a71d819a6104c9ce8ac7f448579d3380113eed5
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Jul 27 15:49:16 2018 +0900

    Fix brackets tests (#172)

commit 44ff0c5adcdc6d621967b0861e720c7b16ef3543
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 26 12:50:33 2018 +0900

    Clear translate cache on file reload

commit ca36030e7e1b3f7feadc8cd1788aae4f46f5adfe
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 26 12:30:09 2018 +0900

    Remove numeric-range related vairables

commit c687ecda080521c00ceaa8aec05a7dd8fb2be48a
Author: 10sr <8.slashes@gmail.com>
Date:   Thu Jul 26 12:22:08 2018 +0900

    Stop checking numeric range separately

commit 2dd122c2bb9bf6fc09a53f32a27c84753465e747
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Jul 8 18:00:37 2018 +0900

    Disable delete-trailing-whitespace when buffer-read-only is nil

commit 898a6d84041d5c7c562e11ca3ccb59b7b3bd62e8
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Jul 8 17:53:50 2018 +0900

    Check editorconfig configs when read only state changes

commit e3e54b58970742f3ef40793a7f5e14850f45f00e
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Jul 8 18:10:03 2018 +0900

    Add trim-trailing-ws tests

    With case where read-only-mode is enabled

commit 1a760c97803abf8471e33c122dbd29987fddb5a5
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jun 20 01:26:01 2018 +0900

    Use emacs 26.1 instead of 26-pretest (#166)

commit 808922da89517828d6e8eddb614d3919c94b8b56
Author: 10sr <8.slashes@gmail.com>
Date:   Wed Jun 20 01:08:38 2018 +0900

    Bump version to 0.7.12

commit ac553270b14d31d57609de3186b60c6d2b3154e6
Author: 10sr <8.slashes@gmail.com>
Date:   Wed May 9 13:28:47 2018 +0900

    Fix info top page (#165)

    * Fix info top page

    * Parametrize texi top title

commit 2a35c763422b59e2e2dcdbd6ca842843672bf155
Author: 10sr <8.slashes@gmail.com>
Date:   Wed May 9 11:04:46 2018 +0900

    Add commented allow_failure

commit 9f4640807fe33a2021c20c0bd3f3dc076f00a54b
Author: 10sr <8.slashes@gmail.com>
Date:   Wed May 9 10:53:58 2018 +0900

    Fix batch command for emacs26-pretest testing

commit 8c2357c850782b84d5f90d41503c45d6a136df49
Author: 10sr <8.slashes@gmail.com>
Date:   Tue May 8 12:21:58 2018 +0900

    Update travis config file

commit e7286c67000425551b13cc80e2ede5982a6a4649
Author: 10sr <8.slashes@gmail.com>
Date:   Mon May 7 14:54:37 2018 +0900

    Use whitespace class

commit 09229ed40ef583dc9fd4d8a683d7077ba71e1b09
Author: 10sr <8.slashes@gmail.com>
Date:   Mon May 7 13:04:51 2018 +0900

    Add test for various normal whitespace

    Currently core-handle fails to parse files that contain whitespaces
    like line breaks, horizontal space, vertical space, etc.

    #161

commit 87fbfa3cea902380db512b7890cda07f872b9a07
Author: 10sr <8.slashes@gmail.com>
Date:   Mon May 7 11:52:54 2018 +0900

    Remove unused variable

commit adabfa6aea82255ea603e0cd13c69c43f50fcba8
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 5 02:55:20 2018 +0900

    Add .gitignore again

commit 14fbef761792145cc715418de3baae3485d5c386
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 5 02:52:36 2018 +0900

    Update texi

commit c9aafbcb9baceb5d3e7d5300c12788d21f642da4
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 5 02:52:19 2018 +0900

    Fix make doc command

commit 61384245f0e0b2185103f2647178cda6ef5586a8
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 5 02:31:03 2018 +0900

    Remove .info and add .texi

commit f8216577840405d6ddf0649bb9f1a2cca8b18f77
Author: 10sr <8.slashes@gmail.com>
Date:   Sat May 5 02:30:37 2018 +0900

    Remove doc/.gitignore

commit b3fbb8cb2bc75b1d277a38491418704cffd72e6f
Author: 10sr <8.slashes@gmail.com>
Date:   Fri May 4 23:27:03 2018 +0900

    Fix Makefile

commit 427ddeed978c6354f0ec33286da1c0bf70ad3a14
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Apr 29 14:21:47 2018 +0900

    Add doc/.gitignore

commit 31709798cace8eae8c4a8bebb9c25f9f50913506
Author: 10sr <8.slashes@gmail.com>
Date:   Sun Apr 29 14:21:25 2018 +0900

    docs -> doc

commit 0ce9c9839b72edad9b4cab9ef030173f1bcd37e9
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Apr 28 13:46:35 2018 +0900

    Add generated info file

commit 5db2fd4c8abce7ca169233dc5cec3c4fdefc017e
Author: 10sr <8.slashes@gmail.com>
Date:   Sat Apr 28 13:44:22 2018 +0900

    Add make info target

commit 12a79fff988a8385f9762a7db5e51fac334e2135
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Thu Apr 5 19:40:58 2018 -0400

    Add tests for lisp-indent-offset ignore

commit 6b92956a84498ace196d58b237602e653e22693c
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Thu Apr 5 19:15:04 2018 -0400

    Add variable to disable indent_size when conditions are met for lisp

commit 816bab2d5b6eb7508ce6811e1e116166eca8192c
Author: 10sr <8.slashes@gmail.com>
Date:   Fri Mar 30 13:48:30 2018 +0900

    Add csharp-mode support (#154)

commit b405ca428e2a67dd286ae1bd8cd75ac3a5dd6179
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Feb 11 00:50:44 2018 +0900

    Fix fnmatch for new cases

commit 4336c8bde838ce991fc0f3c70dd3471b6adb268a
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Feb 11 00:50:23 2018 +0900

    Add two test cases for fnmatch

commit f56964cd65075198b1173d58802666dedc434535
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Feb 10 23:34:10 2018 +0900

    Update core-test submodule

commit ffe4396e53939da21aa6c0edbaf33dfe7a1c1d26
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Nov 7 20:01:20 2017 +0900

    Prepare v0.7.11

commit 2cc03ae806ae0d89b0cb6812cc009419656a3055
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Fri Oct 6 00:29:13 2017 -0400

    Change hook editorconfig is applied on (#143)

    Change from `after-change-major-mode-hook' to
    `change-major-mode-after-body-hook' to allow dir-local variables to
    take precedence over editorconfig.

    Closes #141

commit 9c67d568df7cf2156c07fce2909484c0c68756ef
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Aug 16 13:06:11 2017 +0900

    Fix typo

commit 276097b635687dd7d337de96fd74b07b199dc3b5
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Aug 2 18:38:19 2017 +0900

    Add apache-mode support (#135)

commit 2e343c46610b6097d8102cff682e6c6f024ada35
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jul 24 19:03:40 2017 +0900

    Add file_type_emacs to editorocnfig-conf-mode keywords

commit 8dd4394ab9f3bd00467fc70061d6950461cec6bf
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jul 24 18:48:33 2017 +0900

    Add file_type_emacs entry for .editorconfig

commit 489e2e58f19fc07ad0e468c6a444341d9b6ddaa8
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jul 24 18:48:03 2017 +0900

    Add file_type_emacs support

commit 599d3791e45fc1be2c7d96661646a5a2ff16ca14
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jul 24 18:14:16 2017 +0900

    Add document about file_type_emacs property

commit edfd7d9819bbac50bf399713d7c71b3af39866cc
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jun 7 23:13:31 2017 +0900

    Prepare v0.7.10

commit 12af7738a0a9e9c693e41f55a1b536e4f44030fd
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jun 7 23:12:30 2017 +0900

    Add function to open nearest .editorconfig file (#131)

commit 0aeb78198993e803217782b7c8bf6638e5a9fbdc
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jun 7 22:48:47 2017 +0900

    Always do submodule update when test-ert

commit 71fc634a96a237a9aa9e25972885e932b5e40377
Author: Simen Heggestøyl <simen@e5r.no>
Date:   Thu May 18 13:54:19 2017 +0200

    Set `fill-column` directly

    Set `fill-column` directly instead of using `set-fill-column`. That
    function is useful when used interactively, but when called from Lisp
    it’s almost equivalent to just setting `fill-column`
    directly, and it avoids showing the “Fill column set
    to…” message.

commit 4cda53e796b2d972353cc7d3da7d1d1a571aea6e
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Fri May 12 09:07:21 2017 -0700

    Add support for feature mode. (#128)

commit a3242c35afcab0df8f3fe0a2fae4e54d157203b8
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Apr 26 13:55:52 2017 +0900

    Update editorconfig-conf-mode lighter text

commit 61911bc92d70abd66acf4d6e648945e2a2a6ec39
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 18 13:25:36 2017 +0900

    Fix assignment to free variable warnings

    Fixes #127

commit a3100e700498fcb694948bf26250cfd939031bf7
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Mar 10 13:06:57 2017 +0900

    Catch error thrown from editorconfig-custom-hooks

    And show it as warning.

commit c54fd3abe5b8d4a6997de147afbc645896b0d55c
Author: Jay Kamat <jaygkamat@gmail.com>
Date:   Wed Feb 22 21:50:06 2017 -0500

    Add support for verilog-mode

commit 75f1f7f934fdbe6801596466f6ab176b80f2c069
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Feb 22 00:37:12 2017 +0900

    Prepare v0.7.9

    Closes #122

commit ed06e323f9953c60d9cb32d42700407ec50c7327
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Feb 22 00:38:08 2017 +0900

    Update year in copyright

commit 3e2ec93953f6666bcca3c0b4b5252524cd3d7edd
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jan 13 13:02:04 2017 +0900

    Update README for some variables

commit 399451141873347e974ee1c2cd2f13c1ee070ffc
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jan 4 14:24:22 2017 +0900

    By default always use Emacs Lisp Core when accessing remote files (#118)

commit 426699c7c7944438cfc6481fd06cd4610f5d3881
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Jan 3 15:17:53 2017 +0900

    Add more plugin tests

commit dbfe7a208ac799069e723e46b77715436ae18b33
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Jan 3 14:38:22 2017 +0900

    Add plugin-tests submodule

commit 0496bfa0e5a74062513e9af106693afefb7d17ae
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Jan 3 14:03:45 2017 +0900

    Fix indentations of ert-tests/

    See #111

commit b6b64127d7f489a48f0761f4446b11b54e5f2f11
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Dec 12 14:44:41 2016 +0900

    Add php-mode to indentation-alist and add a short note

    About `php-mode-coding-style'.

    They basically do this at mode startup: "if php-mode-coding-style is
    'pear' (which it is by default), add a c-style called 'pear' and
    switch to it", and that style contains a c-basic-offset value. But
    since we're hooking later than that, we're welcome to override
    c-basic-offset without any risk.

    Also, php-mode suggests manually typing "nxml-mode" and "js2-mode" and
    "web-mode" and then "php-mode" etc, to switch editing styles if you
    have a document with multiple types of content (which is common in
    .php files), and every time you type php-mode, it runs that style
    injection again and resets c-basic-offset.
    However, editorconfig runs as a hook when the major mode changes,
    so it still re-applies the correct offset every time that happens.

    See #116 for more details.

commit daa0c0f096b5bf96f4027d4a006a3e6446c4b932
Author: Hong Xu <hong@topbug.net>
Date:   Tue Nov 8 00:09:10 2016 -0800

    Add Usami Kenta to the contributor list.

commit 005c313b4eaba2372d31d709899a1f2c33310d0c
Author: Hong Xu <hong@topbug.net>
Date:   Tue Nov 8 00:06:51 2016 -0800

    Reidentation for all *.el files.

commit 98a370e88960298cfbdb527d40fed3747e41da8a
Author: Hong Xu <hong@topbug.net>
Date:   Tue Nov 8 00:01:16 2016 -0800

    Massive reformatting of docstrings.

commit afadf377f9a82a66519189088cadddda376a1c9d
Author: Hong Xu <hong@topbug.net>
Date:   Mon Nov 7 23:51:08 2016 -0800

    Fix a doc string.

commit b540d0719fe9b1059781e6cf50b21b333b2c5433
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Tue Nov 8 16:13:41 2016 +0900

    Add editorconfig-exclude-prefixes (#108)

commit c545c8842a627b1d63c00280d504247ef2658b3d
Author: Hong Xu <hong@topbug.net>
Date:   Sat Nov 5 22:12:33 2016 -0700

    Reindent using Emacs-lisp style.

commit a0b3e7037f1bb043f281e3b08423698976950b33
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 6 13:37:54 2016 +0900

    Add one space to editorconfig-mode lighter text

commit d7bba76ba52fe64840c19bef9938f09ab1f40ca2
Author: Hong Xu <hong@topbug.net>
Date:   Sat Nov 5 09:44:41 2016 -0700

    Add a :lighter "EditorConfig" for editorconfig-mode.

commit 4e8ed00b9afe73165dc25a222890ceb8fa03ad81
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Mon Sep 5 06:31:28 2016 +0900

    Modify defgroup tag

commit 79bcc708530a7ed353aafa1e9ca07ff8758e068d
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Aug 9 14:12:21 2016 +0900

    Revert "Use truename for editorconfig name" (#106)

    * Revert "Use truename for editorconfig name"

    This reverts commit f9edfc16bc5d7e3f795025ac6fa3d6608634e18a.

    Not an important thing, and caused a regression reported in #105.

    * Bump version to 0.7.8

commit 1c32816351644dd97f4b3c153eb4394bb7b206e7
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Jul 19 21:59:02 2016 +0900

    Bump version to 0.7.7

commit 8a5e621265c4a5cb92876015699793f884876769
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jul 8 12:12:30 2016 +0900

    Avoid asking coding system when not specified (#102)

    Why ?

    In short: Emacs always asks which charset to use when
    editorconfig-mode is enabled, .editorconfig does not exist and trying
    to save files with non-ascii characters.  This is an annoying behavior
    so stop it.

    Calling `set-buffer-file-coding-system` sets the "explicit" flag, and
    it is used just before saving files.
    When this flag is set but the charset is `undecided`, Emacs asks
    users what charset to use for saving files with non-ascii
    characters (when this flag is not set Emacs do not ask and decide
    to use something automatically, `utf-8` for my environment).

    This typically happens when editing files in repositories without
    .editorconfig, and it is a bit annoying behavior.
    This change makes this plugin not call `set-buffer-file-coding-system`
    at all when neither `charset` nor `end_of_line` is provided, thus
    Emacs can decide charset automatically when saving files in
    repositories without .editorconfig files.

commit 4e65a21fae2c1a9a72c11dbcb73ecec42bf18af9
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jul 6 12:38:00 2016 +0900

    Load only editorconfig.el when using sandbox

commit 3739d7316ac29fc42e2438a7a7fe9e9fc2a3c672
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jun 24 15:57:46 2016 +0900

    Update README.md

commit 70e85e6153f311d805337302004828e016fa93c0
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jun 24 12:45:38 2016 +0900

    Load editorconfig-core explicitly just becore use (#100)

    Fix for the case where this plugin is installed with `git clone`.
    Additionally, When the core library is not available, it will emit a
    more friendly error message like:

        Cannot open load file" "no such file or directory" "editorconfig-core"

commit 3dd8b682435e075676a47f2476a5ecb29982e313
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jun 5 13:51:45 2016 +0900

    Add editorconfig-conf-mode.el (#97)

    And moved some functions and definitions from editorconfig.el

commit d900f27638d5d4340d38a575fc93b9e2f8455fc6
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue May 31 17:40:13 2016 +0900

    Simplify definition of string-integer-p (#96)

commit 663019d341fa1ec51be73aa597f378af048bfcf5
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon May 16 23:54:24 2016 +0900

    Print line number and its content on parse error (#95)

commit 692503ec109764bcd7990de59dc77c44e7fc8fd6
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu May 12 01:24:00 2016 +0900

    Add a note about deprecating marmalade repository

commit 55ce0fca59669ef85743879a262bfdde7b498805
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu May 12 01:20:50 2016 +0900

    Add link to Melpa stable

commit 331edef26d059515fb18df3057202be24d51c639
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed May 11 18:13:40 2016 +0900

    Remove link to Marmalade package repository

    Recently we do not update the package in Marmalade repository.

commit 7505fb780ff08cc62f41cb420723f4646ce3fe20
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu May 5 21:43:30 2016 +0900

    Bump version to 0.7.6

commit 335e70e23df617a8a2b7fe200a3015369e4b78b4
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu May 5 21:41:30 2016 +0900

    Trivial commentary fix

    Two spaces are required after period in Emacs documents.

commit 1c2ce46d3a924c3dd72611799d868be24c8f05d7
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon May 2 21:42:16 2016 +0900

    Add examples for core-handle members

commit bf8bfe5f38d33ccfcebf7ee00eae697d90c19f0f
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon May 2 20:47:02 2016 +0900

    Copy properties alists before using them

commit d79b9e410aa97292255622236ed2fdcba2b79b03
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon May 2 19:32:28 2016 +0900

    Use truename for editorconfig name

commit a4d73a4470b4de57deaafef9fc8988355c95f462
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Apr 22 15:54:40 2016 +0900

    Bump version to 0.7.5

commit 19e5f16ab68499a19459c638ecc6c5ed756b7111
Author: Hong Xu <hong@topbug.net>
Date:   Thu Apr 14 22:41:08 2016 -0700

    Update README: add information about customize-variable.

commit 8e744e00e40b956714f22880b5a747ebb61406a7
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 12 11:23:17 2016 +0900

    Use GFM style code block

commit b9c1318088e07db324fed70cd8ce6eec8ca6956a
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 12 11:19:56 2016 +0900

    Update editorconfig group docstring

commit 787889591816ef12bd78968ae5ce25a147bb8a0e
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 12 10:48:44 2016 +0900

    Make indentation of sample codes more consistent

commit eba248e638e83983992f2c02f806f8cb0454f1f1
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 12 10:45:34 2016 +0900

    Fix english

commit 24b4910571c042a78c14d57ecd5b1fcb11626ddc
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Apr 11 11:16:10 2016 +0900

    Add EditorConfig group definition

commit b93a7964d43cf6da0d2627c41dcf8445e6109d97
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 5 17:54:33 2016 +0900

    Add a comment for contributors

commit 5687b5fc35db617704e76ed06a890b5825ccbb7a
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Apr 11 14:42:20 2016 +0900

    Update instructions about core program

commit 02ab02413f0e7a91969d3742bc880745402189b5
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Apr 5 17:51:21 2016 +0900

    Add Customize section to README

commit 2afc760475be59fe1105f8824fa1fb8ebdf01fc2
Author: Hong Xu <hong@topbug.net>
Date:   Wed Apr 6 00:48:17 2016 -0700

    Only set fill-column if the given integer is positive.

commit 73b4b61e0bad2c7c74fb46baa040f0c677b94068
Author: Hong Xu <hong@topbug.net>
Date:   Sun Apr 3 17:41:26 2016 -0700

    No need to explicitly highlight the comments via font-lock
    in editorconfig-conf-mode

commit d9ae054ccc608289654bea018a099a1e73dace12
Author: Hong Xu <hong@topbug.net>
Date:   Sun Apr 3 17:36:43 2016 -0700

    Create a syntax table for editorconfig-conf-mode.

    Fix #83.

commit 3d6df2ae193aea34f6ddd481fc17381f235b3838
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Apr 2 23:56:04 2016 +0900

    Derive editorconfig-conf-mode from conf-unix-mode

    Should fix #83

commit cdcc5826d684324701ba446c1648d475ce47d5a6
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Apr 1 15:38:17 2016 +0900

    Add make sandbox target

    This commit adds a new Make target `sandbox`.
    Issue `make sandbox` to start new Emacs that loads *.el files in current
    directory and does not load the user init file.

commit e68384d544c14451e12c50b4bad6933b31abde24
Author: Hong Xu <hong@topbug.net>
Date:   Thu Mar 31 22:50:17 2016 -0700

    Refactor editorconfig-conf-mode

commit f2629b0abb5e212a015a10af460569b1dec3de29
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Mar 30 17:27:15 2016 +0900

    Do not check metadata of files other than editorconfig.el

commit 998d0e8f766dfdf92080e3f00d78e614ea136ae7
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Mar 30 15:41:38 2016 +0900

    Bump version to 0.7.4

    Only Package-Version in editoroconfig.el will be respected so remove
    from other files.

commit 64a2a85351db22d76f1dd510469b94cf61a5ba54
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Mar 30 15:40:36 2016 +0900

    Fix dependencies for one multifile package

commit 566ab7996e373cf7747f3856b0b4e67d8c26f17d
Author: Hong Xu <hong@topbug.net>
Date:   Sat Mar 26 17:04:43 2016 -0700

    Bump required editorconfi-core version

    Fix #80

commit 0791fced08790eceb64e5e9d3e46b444b71e0753
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Mar 20 01:58:51 2016 +0900

    Add editorconfig-exclude-modes

commit 33b0716c668685e177ffbe28efb7a95011b405b1
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Mar 18 12:21:40 2016 +0900

    Add editorocnfig-display-current-properties

    A function useful for debugging.

commit 50df3046e5af9c0edde66d4ba2cfe662144a538b
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Mar 18 11:55:30 2016 +0900

    Add one variable editorconfig-properties-hash

commit 3480bcd04e3e941d969439ed278fbb2aa7dea8ad
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Feb 18 01:07:31 2016 +0900

    Add editorconfig-conf-mode

    A major-mode for editing .editorconfig file.

commit 914720911131a54989d3b6403a428b397466fe01
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Feb 12 18:06:39 2016 +0900

    Bump version to v0.7.3

commit dbc25e04c487aeb7e879f4c8a3f1950e856acd8a
Author: Hong Xu <hong@topbug.net>
Date:   Sat Feb 6 21:07:06 2016 -0800

    Add octave-mode and matlab-mode support

    Close #66

commit f34c82709e2873eefa50f0c7568772b546019197
Author: Hong Xu <hong@topbug.net>
Date:   Wed Feb 3 22:12:39 2016 -0800

    Add support for scss-mode

commit 37d22c075078b32f8d75c2e2f0339d7a9760eeb3
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jan 27 15:35:49 2016 +0900

    Bump version to 0.7.2

commit f907c968c8835a980fbf0896b8e7ca81aca40d65
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Jan 27 15:30:28 2016 +0900

    Already 2016 :) Happy new year!

commit 953f4f0ab77bac932eba074cd1aab70059f3a4a1
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 24 21:51:53 2016 +0900

    Bump version: 0.7.1

commit d150069fc617a3daad2d698436e51786151c78dd
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 24 18:40:36 2016 +0900

    Catch error thrown from get-properties-function and display it

    This commit also fixes `display-warning' usage.

commit 6fbb3fe14ada3e9dbf84bf29f9223a2857e55c03
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 24 17:41:25 2016 +0900

    Throw error when editorconfig executable was not found

commit a7ea6807e5aa2e1bae5bf482adcdfd8f9a46425a
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 24 16:29:32 2016 +0900

    Add ess-mode indentation support

commit 5b9a1a38d2b0c45bdd69e6d64cd4273eec95bdd9
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 24 00:23:34 2016 +0900

    Add ps-mode indentation support

commit 9e1b9009578934c0ec1c7721ccb0c234c93aa634
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Jan 23 19:23:14 2016 +0900

    Add tcl-mode indentation support

commit 13956895101c2935dd00aff53e10e067db1272ad
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jan 22 14:47:51 2016 +0900

    editorocnfig-core: Throw error when parsing .editorconfig failed

commit 58b060cf3413b713015b62aec847fb66402b497a
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Jan 21 20:08:31 2016 +0900

    Remove find-file-hook

commit 563bebc5663b12589c713fc55080cce3fbbcd164
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Jan 21 02:10:27 2016 +0900

    I forgot to update editorconfig-core-version const

commit 466a0e4a720410d2bf13ebacecfd3ef53f8e6041
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 17 14:40:03 2016 +0900

    Bump version: 0.7.0

commit adb9ba4a9d7559342934216bc1565e1ddbb4b1a7
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 17 02:49:13 2016 +0900

    Update README for charset support

commit d40661e532673d110dce79f40f2c3fcb9ac765a6
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Jan 17 02:48:36 2016 +0900

    Support charset property

commit ae2544b55e9c26d5479bfe16886f09a79aaa08b6
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Jan 15 01:38:19 2016 +0900

    Bump version: 0.6.2

    Also use stable version in Package-Requires: there should be no
    problem with this.

commit fe9ed9b4cbfda2548c3fc3ca0db6e678a83f9ec7
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jan 11 23:15:18 2016 +0900

    Fix names of ert test cases

commit cd91a226fb792b6b3cbf3aaa05951cdd1ffa091c
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jan 11 23:14:45 2016 +0900

    Check package metadata using ert framework

commit 12f18b061a562d2fabea0b4cba1b2726db7a721e
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Jan 11 22:34:52 2016 +0900

    Use dedicated functions to manipulate hook

commit ae1254a7aa76f160578446dc5ead478200735b5d
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Jan 7 19:14:51 2016 +0900

    Use hook type for custom-hooks defcustom

commit 58f106454036e2248cec7d4dc4ca53c8fddb71ee
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Dec 27 22:35:38 2015 +0900

    Add MELPA badges

commit 9c65aa401996dd87fe054a1079885651529bd70f
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Dec 17 19:31:43 2015 +0900

    Use `require` instead of `load` in usage example

commit 48f77abd9040f2eb563efd6185b366cacd8b99de
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Dec 9 01:35:23 2015 +0900

    Bump version: 0.6.1

    This release is only for melpa stable and has no change since 0.6

commit ef465f0c5d0cdabbe8ae859d2cbfed018498cc94
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Dec 5 02:42:25 2015 +0900

    Add document about running tests

commit 2c3488e82410130bf811291ee07c9e208228a7a8
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Dec 5 01:52:40 2015 +0900

    Make `editorconfig-apply' an interactive command

commit d94e1f29f333bc8e70fda372a0ca906d54eed365
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Dec 4 01:30:24 2015 +0900

    Fix some warnings reported by flycheck

    Mainly docstring fix

commit df4dea58f13173bd1f8a2cf59b897e9429add23b
Author: 10sr <8slashes+git@gmail.com>
Date:   Fri Dec 4 16:08:10 2015 +0900

    Fix editorconfig-core commentary text

commit 2f297a27107c068b802fc92dbe166d4a8fae9e44
Author: 10sr <8slashes+git@gmail.com>
Date:   Thu Dec 3 02:12:59 2015 +0900

    Add license header to executable

commit 98a42ef7e85c2af1fa84be91ccfb677449ffe9ec
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Dec 1 02:05:08 2015 +0900

    Prepare v0.6

commit 320bfe2fa53175b8854cb81d5b008a4592fe475e
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 29 00:18:38 2015 +0900

    Fix all indentation according to editorconfig

commit 220f04ad82d8adae6562c036d42d61eb1a01d50f
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 29 01:18:33 2015 +0900

    Update README for core elisp

commit 8beaa3e2fc3a3676c5a22b219e6faf80c0a23489
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 29 00:32:53 2015 +0900

    Use core in elisp as a fallback

    editorconfig-core-get-properties-hash will be called when editorconfig
    executable is not found.

commit 8555cc5e7181da63c93ab41c1fadc9c8d3ae2224
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Nov 28 23:55:19 2015 +0900

    Update Makefile to run all tests including core

commit e3fe4530edab8b748415f25df5f173b82dc503f5
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Nov 28 23:30:57 2015 +0900

    Add editorconfig-core el files

commit 0b236465262048ff9143af337013becf324a3188
Author: 10sr <8slashes+git@gmail.com>
Date:   Wed Nov 25 12:08:39 2015 +0900

    Add files used to test core functions

commit cc948068c916e854561933a5857a5fbb55aeaa26
Author: 10sr <8slashes+git@gmail.com>
Date:   Sat Nov 28 23:35:37 2015 +0900

    Update .editorconfig for Makefile and .gitmodules

commit 12f49e98fa559b3055be17ab71f4092f1f078386
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Nov 17 16:36:15 2015 +0900

    Do nothing when current buffer does not visit any file

commit 1c7857782098192e8aba314bd7925814e3b4fddb
Author: Hong Xu <hong@topbug.net>
Date:   Thu Nov 5 12:43:57 2015 -0800

    Add 10sr to the contributor list

commit d076a16e81db4697be0d8744468906ab110f8b7e
Author: Hong Xu <hong@topbug.net>
Date:   Thu Nov 5 00:57:40 2015 -0800

    Apply settings on major mode change

commit e9da0d685d9d7367bce9dc3c572234b23293f0c3
Author: Hong Xu <hong@topbug.net>
Date:   Thu Nov 5 00:54:45 2015 -0800

    Rename editorconfig-find-file-hook to editorconfig-apply

commit f61c0e31151381d7dd6efc22afcbb9db20c6cf00
Author: 10sr <8slashes+git@gmail.com>
Date:   Mon Nov 2 01:40:55 2015 +0900

    Add aliases for obsolete variables and bump version

commit cfb329dabf54c1c99da3352481d7d819be9f90d7
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 1 20:10:51 2015 +0900

    Update README

commit 241554e8881cdc42e8524c16a4c0a39838c2c337
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 1 18:14:39 2015 +0900

    Change symbol prefix: edconf -> editorconfig

commit 0a319fab7845153a91fbd12ff1174f2808e2ed2c
Author: 10sr <8slashes+git@gmail.com>
Date:   Sun Nov 1 18:11:03 2015 +0900

    Add global minor mode

commit a4b8e55bf4dea4567f165ad5f71694f659610b3d
Author: 10sr <8slashes+git@gmail.com>
Date:   Tue Oct 27 22:15:00 2015 -0700

    Make EditorConfig core function pluggable

    Close #41

    Squashed commit of the following:

    commit e91aca6f38d9c42be19cc49aafc75ac086907b00
    Author: 10sr <8slashes+git@gmail.com>
    Date:   Sun Oct 25 03:19:26 2015 +0900

        Fix typo in docstring

    commit 76ce139cd0a0ff6bc250615ca7bb94868c85c41d
    Author: 10sr <8slashes+git@gmail.com>
    Date:   Tue Oct 13 13:51:13 2015 +0900

        Implement edconf-get-properties-from-exec

    commit 23baf520c83a7cb68634cd173ce28f9a6842f593
    Author: 10sr <8slashes+git@gmail.com>
    Date:   Mon Oct 12 03:18:54 2015 +0900

        Add variable edconf-get-properties-function

commit 46eb2863daa2f391bda9b9f8b0db0db210922b32
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Fri Oct 23 01:51:34 2015 +0900

    Add autoload cookie

commit d068ec0546938a0d02b05ac5a75c370962205ed2
Author: USAMI Kenta <tadsan@zonu.me>
Date:   Fri Oct 23 01:41:55 2015 +0900

    Use \' instead of $

commit b45ec732a2b59f8b3404ae40a52de0f08471bcb6
Author: Hong Xu <hong@topbug.net>
Date:   Mon Mar 16 15:02:01 2015 -0700

    Relicense to GPLv3+

commit 871a69ab908cb00e69fa5be0f7e4deaabcbe8b5d
Author: Hong Xu <hong@topbug.net>
Date:   Mon Mar 16 14:39:06 2015 -0700

    Add Hong Xu to contributor list.

commit 7a7e1544c961ee4659af40e6f59c2777d12ea297
Author: Hong Xu <hong@topbug.net>
Date:   Mon Mar 16 14:38:42 2015 -0700

    Update a few links in the README

commit e7a0874591b23885e10dc322211ff9f77b944dae
Author: Hong Xu <hong@topbug.net>
Date:   Fri Dec 19 00:33:17 2014 -0800

    Add hook mechanism.

commit c36ed4aeb7096abbe455fd91fd4708a413f0c16f
Author: Hong Xu <hong@topbug.net>
Date:   Sat Dec 20 18:04:39 2014 -0800

    Version 0.4

commit 6c18a40b51e459b44af380aa42e111870ab9334f
Author: Hong Xu <hong@topbug.net>
Date:   Thu Dec 18 23:17:28 2014 -0800

    Make edconf-exec-path a customizable variable.

commit 480a6bba4761fe1074bd70b4dc9cb461e50fa3b4
Author: Hong Xu <hong@topbug.net>
Date:   Thu Dec 18 22:13:17 2014 -0800

    Fix some issues caused by the previous commit.

commit 92519a8c255cfd7d2b730842c7cb00304f992735
Author: Hong Xu <hong@topbug.net>
Date:   Thu Dec 18 21:58:11 2014 -0800

    Don't set indent size if the given value makes no sense.

commit 9d1d2364313086590d0e578aab5dbaabeaf03ec9
Author: Hong Xu <hong@topbug.net>
Date:   Thu Dec 18 21:11:19 2014 -0800

    Don't set max_line_length if not specified.

commit d776cdc5eeedcac6a58fa50ea685275d6fec40e6
Author: Hong Xu <hong@topbug.net>
Date:   Thu Dec 18 21:02:28 2014 -0800

    Support max_line_length.

commit 56722d34df673387597dd68e3dd2c179fb0fcb96
Author: Hong Xu <hong@topbug.net>
Date:   Mon Aug 11 09:32:49 2014 -0700

    Add sh-indentation to the list of indent variable.

commit 6bdcaf89dff0ec33ccb82cd8c82658ae8a66c4e0
Author: Hong Xu <hong@topbug.net>
Date:   Tue Jul 8 14:38:52 2014 -0700

    Add cmake-mode support.

commit 5bc887b015d0c192133109448debcb1cd0a7b575
Author: Hong Xu <hong@topbug.net>
Date:   Wed Oct 16 18:10:24 2013 -0700

    Support web-mode.

    Fix editorconfig/editorconfig#124

commit 4e2bf3ddd61a87ac30bdfea04d222b8643ffd337
Author: Hong Xu <hong@topbug.net>
Date:   Thu Jun 6 17:50:32 2013 -0700

    Add the package manager installation way to README

commit ac28a9fd1d5b4bd0130fe78d3428cc1e93bbff7a
Author: Hong Xu <hong@topbug.net>
Date:   Thu Jun 6 17:41:45 2013 -0700

    Bump version number

commit fbe97a082421acf8ea41abee76f6ce223496a628
Author: Hong Xu <hong@topbug.net>
Date:   Wed Jun 5 01:06:46 2013 -0700

    Wrong way to indent html. Fixes it.

commit d7a7b6af8e7af9982543df76739be3f50e2bfee9
Author: Hong Xu <hong@topbug.net>
Date:   Wed Jun 5 01:02:45 2013 -0700

    Add JS and HTML indent settings.

commit 5dfbeb541ec9aa652e5728e7108cedb7c12a0a9b
Author: Hong Xu <hong@topbug.net>
Date:   Sun Jun 2 11:58:46 2013 -0700

    Fix indentation problem in the source file.

commit 9fdbf9ffddc1758019158328eadf293f6ecb7435
Author: Hong Xu <hong@topbug.net>
Date:   Sun Jun 2 11:53:48 2013 -0700

    Set indent value for AucTeX

commit e69ebeeaa1dd8e4769d5a40e25323db8d8672e59
Author: Hong Xu <hong@topbug.net>
Date:   Wed May 29 22:30:39 2013 -0700

    Reset the indentation rule.

commit ef90cfda833faeeb8b92cd528bf9523762efa94e
Author: Hong Xu <hong@topbug.net>
Date:   Sun May 26 10:32:29 2013 -0700

    Update package information.

commit 8ee7d0b5334da68b9147c28465529b07c5010363
Author: Hong Xu <hong@topbug.net>
Date:   Sun May 26 00:56:26 2013 -0700

    Set indent_size for lisp mode and ruby mode.

commit 45afbe1bc96afb423d42a2f547804f0e11f89f3f
Author: Hong Xu <hong@topbug.net>
Date:   Mon Mar 18 10:18:52 2013 -0700

    Add a link to `editorconfig.el` in README

commit 10be4fd165d39baa4394e26256f696a39ab01de3
Author: Jonas Bernoulli <jonas@bernoul.li>
Date:   Mon Mar 18 05:06:03 2013 +0100

    provide feature, use symbol prefix, add commentary,

    remove url from summary

commit a8ca8c46f75e76565d773c44cc9f36169beaa24c
Author: Hong Xu <xuhdev@gmail.com>
Date:   Sun Mar 4 12:37:02 2012 +0800

    Update EditorConfig Core URL.

commit c45e871a5d1394e6755fd2202d83cb53ad1b1e04
Author: Hong Xu <xuhdev@gmail.com>
Date:   Wed Jan 25 10:57:55 2012 +0800

    Add properties link.

commit d744546fc6864c0a2a4b524804982656988526b9
Author: Hong Xu <xuhdev@gmail.com>
Date:   Tue Jan 10 09:41:41 2012 +0800

    Add root=true to the top .editorconfig.

commit 68ad326706a14a707395501aeb03b579aef83777
Author: Hong Xu <xuhdev@gmail.com>
Date:   Sat Nov 26 11:05:37 2011 +0800

    Update EditorConfig url.

commit 38ac90325669f2643c3205715d4b76aa3e1891ca
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date:   Thu Jun 13 14:28:14 2024 -0400

    Erase initial commit content

commit 6360e7b904fcadb30678bf7fa740c998976eec75
Author: Trey Hunner <treyhunner@gmail.com>
Date:   Fri Nov 4 21:12:11 2011 -0700

    Add initial plugin
This commit is contained in:
Stefan Monnier 2024-06-18 01:26:41 -04:00
parent 94be2b2682
commit f563f0f961
7 changed files with 1970 additions and 0 deletions

297
doc/man/editorconfig.texi Normal file
View File

@ -0,0 +1,297 @@
@dircategory Emacs
@direntry
* EditorConfig: (editorconfig). EditorConfig Emacs Plugin.
@end direntry
@node Top
@chapter EditorConfig Emacs Plugin
@anchor{#editorconfig-emacs-plugin}
This is an @uref{https://editorconfig.org,EditorConfig} plugin for
@uref{https://www.gnu.org/software/emacs/,Emacs}.
@menu
* Getting Started::
* Supported properties::
* Customize::
* Troubleshooting::
* Submitting Bugs and Feature Requests::
* License::
@end menu
@node Getting Started
@section Getting Started
@anchor{#getting-started}
@menu
* packageel::
* use-package::
* Manual installation::
@end menu
@node packageel
@subsection package.el
@anchor{#package.el}
This package is available from
@uref{https://melpa.org/#/editorconfig,MELPA},
@uref{https://stable.melpa.org/#/editorconfig,MELPA Stable} and
@uref{http://elpa.nongnu.org/nongnu/editorconfig.html,NonGNU ELPA}.
Install from these repositories and enable global minor-mode
@code{editorconfig-mode}:
@verbatim
(editorconfig-mode 1)
@end verbatim
Normally, enabling @code{editorconfig-mode} should be enough for this
plugin to work: all other configurations are optional. This mode sets up
hooks so that EditorConfig properties will be loaded and applied to the
new buffers automatically when visiting files.
@node use-package
@subsection use-package
@anchor{#use-package}
If you use
@uref{https://www.emacswiki.org/emacs/UsePackage,@strong{use-package}},
add the following to your @code{init.el} file:
@verbatim
(use-package editorconfig
:ensure t
:config
(editorconfig-mode 1))
@end verbatim
@node Manual installation
@subsection Manual installation
@anchor{#manual-installation}
Copy all @code{.el} files in this repository to @code{~/.emacs.d/lisp}
and add the following:
@verbatim
(add-to-list 'load-path "~/.emacs.d/lisp")
(require 'editorconfig)
(editorconfig-mode 1)
@end verbatim
@node Supported properties
@section Supported properties
@anchor{#supported-properties}
Current Emacs plugin coverage for EditorConfig's
@uref{https://editorconfig.org/#supported-properties,properties}:
@itemize
@item
@code{indent_style}
@item
@code{indent_size}
@item
@code{tab_width}
@item
@code{end_of_line}
@item
@code{charset}
@item
@code{trim_trailing_whitespace}
@item
@code{insert_final_newline = true} is supported
@item
@code{insert_final_newline = false}
is not enforced (as in trailing newlines actually being removed
automagically), we just buffer-locally override any preferences that
would auto-add them to files @code{.editorconfig} marks as
trailing-newline-free
@item
@code{max_line_length}
@item
@code{file_type_ext} (Experimental)
(See below)
@item
@code{file_type_emacs} (Experimental)
(See below)
@item
@code{root} (only used by EditorConfig core)
@end itemize
Not yet covered properties marked with over-strike -- pull requests
implementing missing features warmly welcomed! Typically, you will want
to tie these to native functionality, or the configuration of existing
packages handling the feature.
As several packages have their own handling of, say, indentation, we
might not yet cover some mode you use, but we try to add the ones that
show up on our radar.
@menu
* File Type file_type_ext file_type_emacs::
@end menu
@node File Type file_type_ext file_type_emacs
@subsection File Type (file_type_ext, file_type_emacs)
@anchor{#file-type-file_type_ext-file_type_emacs}
File-type feature is currently disabled, because this package is now
undergoing big internal refactoring. For those who want this
functionality, please consider using
@uref{https://github.com/10sr/editorconfig-custom-majormode-el,editorconfig-custom-majormode}.
@node Customize
@section Customize
@anchor{#customize}
@code{editorconfig-emacs} provides some customize variables.
Here are some of these variables: for the full list of available
variables, type M-x customize-group [RET] editorconfig [RET].
@menu
* editorconfig-trim-whitespaces-mode::
* editorconfig-after-apply-functions::
* editorconfig-hack-properties-functions::
@end menu
@node editorconfig-trim-whitespaces-mode
@subsection @code{editorconfig-trim-whitespaces-mode}
@anchor{#editorconfig-trim-whitespaces-mode}
Buffer local minor-mode to use to trim trailing whitespaces.
If set, editorconfig will enable/disable this mode in accord with
@code{trim_trailing_whitespace} property in @code{.editorconfig}.
Otherwise, use Emacs built-in @code{delete-trailing-whitespace}
function.
One possible value is
@uref{https://github.com/lewang/ws-butler,@code{ws-butler-mode}}, with
which only lines touched get trimmed. To use it, add following to your
init.el:
@verbatim
(setq editorconfig-trim-whitespaces-mode
'ws-butler-mode)
@end verbatim
@node editorconfig-after-apply-functions
@subsection @code{editorconfig-after-apply-functions}
@anchor{#editorconfig-after-apply-functions}
(Formerly @code{editorconfig-custom-hooks})
A list of functions which will be called after loading common
EditorConfig settings, when you can set some custom variables.
For example, @code{web-mode} has several variables for indentation
offset size and EditorConfig sets them at once by @code{indent_size}.
You can stop indenting only blocks of @code{web-mode} by adding
following to your init.el:
@verbatim
(add-hook 'editorconfig-after-apply-functions
(lambda (props) (setq web-mode-block-padding 0)))
@end verbatim
@node editorconfig-hack-properties-functions
@subsection @code{editorconfig-hack-properties-functions}
@anchor{#editorconfig-hack-properties-functions}
A list of functions to alter property values before applying them.
These functions will be run after loading ".editorconfig" files and
before applying them to current buffer, so that you can alter some
properties from ".editorconfig" before they take effect.
For example, Makefile files always use tab characters for indentation:
you can overwrite "indent_style" property when current @code{major-mode}
is @code{makefile-mode}:
@verbatim
(add-hook 'editorconfig-hack-properties-functions
'(lambda (props)
(when (derived-mode-p 'makefile-mode)
(puthash 'indent_style "tab" props))))
@end verbatim
@node Troubleshooting
@section Troubleshooting
@anchor{#troubleshooting}
Enabling @code{editorconfig-mode} should be enough for normal cases.
When EditorConfig properties are not effective for unknown reason, we
recommend first trying
@code{M-x editorconfig-display-current-properties}.
This command will open a new buffer and display the EditorConfig
properties loaded for current buffer. You can check if EditorConfig
properties were not read for buffers at all, or they were loaded but did
not take effect for some other reasons.
@menu
* Indentation for new major-modes::
* Not work at all for FOO-mode!::
@end menu
@node Indentation for new major-modes
@subsection Indentation for new major-modes
@anchor{#indentation-for-new-major-modes}
Because most Emacs major-modes have their own indentation settings, this
plugin requires explicit support for each major-mode for
@code{indent_size} property.
By default this plugin ships with settings for many major-modes, but,
sorry to say, it cannot be perfect. Especially it is difficult to
support brand-new major-modes. Please feel free to submit issue or
pull-request for such major-mode!
Supported major-modes and their indentation configs are defined in the
variable @code{editorconfig-indentation-alist}.
@node Not work at all for FOO-mode!
@subsection Not work at all for FOO-mode!
@anchor{#not-work-at-all-for-foo-mode}
Most cases properties are loaded just after visiting files when
@code{editorconfig-mode} is enabled. But it is known that there are
major-modes that this mechanism does not work for and require explicit
call of @code{editorconfig-apply}.
Typically it will occur when the major-mode is not defined using
@code{define-derived-mode} (@code{rpm-spec-mode} is an example for
this). Please feel free to submit issues if you find such modes!
@node Submitting Bugs and Feature Requests
@section Submitting Bugs and Feature Requests
@anchor{#submitting-bugs-and-feature-requests}
Bugs, feature requests, and other issues should be submitted to the
issue tracker: https://github.com/editorconfig/editorconfig-emacs/issues
@menu
* Development::
@end menu
@node Development
@subsection Development
@anchor{#development}
Make and @uref{https://cmake.org,CMake} must be installed to run the
tests locally:
@verbatim
$ make check
@end verbatim
To start a new Emacs process with current @code{*.el} and without
loading user init file, run:
@verbatim
$ make sandbox
@end verbatim
@node License
@section License
@anchor{#license}
EditorConfig Emacs Plugin is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see @url{https://www.gnu.org/licenses/}.
@bye

View File

@ -0,0 +1,95 @@
;;; editorconfig-conf-mode.el --- Major mode for editing .editorconfig files -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Major mode for editing .editorconfig files.
;;; Code:
(require 'conf-mode)
(defvar editorconfig-conf-mode-syntax-table
(let ((table (make-syntax-table conf-unix-mode-syntax-table)))
(modify-syntax-entry ?\; "<" table)
table)
"Syntax table in use in `editorconfig-conf-mode' buffers.")
(defvar editorconfig-conf-mode-abbrev-table nil
"Abbrev table in use in `editorconfig-conf-mode' buffers.")
(define-abbrev-table 'editorconfig-conf-mode-abbrev-table ())
;;;###autoload
(define-derived-mode editorconfig-conf-mode conf-unix-mode "Conf[EditorConfig]"
"Major mode for editing .editorconfig files."
(set-variable 'indent-line-function 'indent-relative)
(let ((key-property-list
'("charset"
"end_of_line"
"file_type_emacs"
"file_type_ext"
"indent_size"
"indent_style"
"insert_final_newline"
"max_line_length"
"root"
"tab_width"
"trim_trailing_whitespace"))
(key-value-list
'("unset"
"true"
"false"
"lf"
"cr"
"crlf"
"space"
"tab"
"latin1"
"utf-8"
"utf-8-bom"
"utf-16be"
"utf-16le"))
(font-lock-value
'(("^[ \t]*\\[\\(.+?\\)\\]" 1 font-lock-type-face)
("^[ \t]*\\(.+?\\)[ \t]*[=:]" 1 font-lock-variable-name-face))))
;; Highlight all key values
(dolist (key-value key-value-list)
(push `(,(format "[=:][ \t]*\\(%s\\)\\([ \t]\\|$\\)" key-value)
1 font-lock-constant-face)
font-lock-value))
;; Highlight all key properties
(dolist (key-property key-property-list)
(push `(,(format "^[ \t]*\\(%s\\)[ \t]*[=:]" key-property)
1 font-lock-builtin-face)
font-lock-value))
(conf-mode-initialize "#" font-lock-value)))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.editorconfig\\'" . editorconfig-conf-mode))
(provide 'editorconfig-conf-mode)
;;; editorconfig-conf-mode.el ends here

View File

@ -0,0 +1,243 @@
;;; editorconfig-core-handle.el --- Handle Class for EditorConfig File -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Handle structures for EditorConfig config file. This library is used
;; internally from editorconfig-core.el .
;;; Code:
(require 'cl-lib)
(require 'editorconfig-fnmatch)
(defvar editorconfig-core-handle--cache-hash
(make-hash-table :test 'equal)
"Hash of EditorConfig filename and its `editorconfig-core-handle' instance.")
(cl-defstruct editorconfig-core-handle-section
"Structure representing one section in a .editorconfig file.
Slots:
`name'
String of section name (glob string).
`props'
Alist of properties: (KEY . VALUE)."
(name nil)
(props nil))
(defun editorconfig-core-handle-section-get-properties (section file dir)
"Return properties alist when SECTION name match FILE.
DIR should be the directory where .editorconfig file which has SECTION lives.
IF not match, return nil."
(when (editorconfig-core-handle--fnmatch-p
file (editorconfig-core-handle-section-name section) dir)
(editorconfig-core-handle-section-props section)))
(cl-defstruct editorconfig-core-handle
"Structure representing an .editorconfig file.
Slots:
`top-props'
Alist of top properties like ((\"root\" . \"true\"))
`sections'
List of `editorconfig-core-handle-section' structure objects.
`mtime'
Last modified time of .editorconfig file.
`path'
Absolute path to .editorconfig file.'
"
(top-props nil)
(sections nil)
(mtime nil)
(path nil))
(defun editorconfig-core-handle (conf)
"Return EditorConfig handle for CONF, which should be a file path.
If CONF does not exist return nil."
(when (file-readable-p conf)
(let ((cached (gethash conf editorconfig-core-handle--cache-hash))
(mtime (nth 5 (file-attributes conf))))
(if (and cached
(equal (editorconfig-core-handle-mtime cached) mtime))
cached
(let ((parsed (editorconfig-core-handle--parse-file conf)))
(puthash conf
(make-editorconfig-core-handle :top-props (plist-get parsed :top-props)
:sections (plist-get parsed :sections)
:mtime mtime
:path conf)
editorconfig-core-handle--cache-hash))))))
(defun editorconfig-core-handle-root-p (handle)
"Return non-nil if HANDLE represent root EditorConfig file.
If HANDLE is nil return nil."
(when handle
(string-equal "true"
(downcase (or (cdr (assoc "root"
(editorconfig-core-handle-top-props handle)))
"")))))
(defun editorconfig-core-handle-get-properties (handle file)
"Return list of alist of properties from HANDLE for FILE.
The list returned will be ordered by the lines they appear.
If HANDLE is nil return nil."
(when handle
(let ((dir (file-name-directory (editorconfig-core-handle-path handle))))
(cl-loop for section in (editorconfig-core-handle-sections handle)
for props = (editorconfig-core-handle-section-get-properties section
file
dir)
when props collect (copy-alist props)))))
(make-obsolete 'editorconfig-core-handle-get-properties
'editorconfig-core-handle-get-properties-hash
"0.8.0")
(defun editorconfig-core-handle-get-properties-hash (handle file)
"Return hash of properties from HANDLE for FILE.
If HANDLE is nil return nil."
(when handle
(let ((hash (make-hash-table))
(dir (file-name-directory (editorconfig-core-handle-path
handle))))
(dolist (section (editorconfig-core-handle-sections handle))
(cl-loop for (key . value) in (editorconfig-core-handle-section-get-properties section file dir)
do (puthash (intern key) value hash)))
hash)))
(defun editorconfig-core-handle--fnmatch-p (name pattern dir)
"Return non-nil if NAME match PATTERN.
If pattern has slash, pattern should be relative to DIR.
This function is a fnmatch with a few modification for EditorConfig usage."
(if (string-match-p "/" pattern)
(let ((pattern (replace-regexp-in-string "^/" "" pattern))
(dir (file-name-as-directory dir)))
(editorconfig-fnmatch-p name (concat dir pattern)))
(editorconfig-fnmatch-p name (concat "**/" pattern))))
(defsubst editorconfig-core-handle--string-trim (str)
"Remove leading and trailing whitespaces from STR."
(replace-regexp-in-string "[[:space:]]+\\'"
""
(replace-regexp-in-string "\\`[[:space:]]+"
""
str)))
(defun editorconfig-core-handle--parse-file (conf)
"Parse EditorConfig file CONF.
This function returns cons of its top properties alist and
alist of patterns and its properties alist.
The list returned will be ordered by the lines they appear.
If CONF is not found return nil."
(when (file-readable-p conf)
(with-temp-buffer
;; NOTE: Use this instead of insert-file-contents-literally to enable
;; code conversion
(insert-file-contents conf)
(goto-char (point-min))
(let ((point-max (point-max))
(sections ())
(top-props nil)
;; String of current line
(line "")
;; nil when pattern not appeared yet, "" when pattern is empty ("[]")
(pattern nil)
;; Alist of properties for current PATTERN
(props ())
;; Current line num
(current-line-number 1))
(while (not (eq (point) point-max))
(setq line
(buffer-substring-no-properties (line-beginning-position)
(line-end-position)))
(setq line
(replace-regexp-in-string "\\(^\\| \\)\\(#\\|;\\).*$"
""
(editorconfig-core-handle--string-trim line)))
(cond
((string-equal "" line)
nil)
;; Start of section
((string-match "^\\[\\(.*\\)\\]$"
line)
(when pattern
(setq sections
`(,@sections ,(make-editorconfig-core-handle-section
:name pattern
:props props)))
(setq pattern nil)
(setq props nil))
(setq pattern (match-string 1 line)))
(t
(let ((idx (string-match "=\\|:" line)))
(unless idx
(error "Error while reading config file: %s:%d:\n %s\n"
conf current-line-number line))
(let ((key (downcase (editorconfig-core-handle--string-trim
(substring line 0 idx))))
(value (editorconfig-core-handle--string-trim
(substring line (1+ idx)))))
(when (and (< (length key) 51)
(< (length value) 256))
(if pattern
(when (< (length pattern) 4097)
(setq props
`(,@props (,key . ,value))))
(setq top-props
`(,@top-props (,key . ,value)))))))))
(setq current-line-number (1+ current-line-number))
(goto-char (point-min))
(forward-line (1- current-line-number)))
(when pattern
(setq sections
`(,@sections ,(make-editorconfig-core-handle-section
:name pattern
:props props))))
(list :top-props top-props
:sections sections)))))
(provide 'editorconfig-core-handle)
;;; editorconfig-core-handle.el ends here

182
lisp/editorconfig-core.el Normal file
View File

@ -0,0 +1,182 @@
;;; editorconfig-core.el --- EditorConfig Core library in Emacs Lisp -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; This library is one implementation of EditorConfig Core, which parses
;; .editorconfig files and returns properties for given files.
;; This can be used in place of, for example, editorconfig-core-c.
;; Use from EditorConfig Emacs Plugin
;; Emacs plugin (v0.5 or later) can utilize this implementation.
;; By default, the plugin first search for any EditorConfig executable,
;; and fallback to this library if not found.
;; If you always want to use this library, add following lines to your init.el:
;; (setq editorconfig-get-properties-function
;; 'editorconfig-core-get-properties-hash)
;; Functions
;; editorconfig-core-get-properties (&optional file confname confversion)
;; Get EditorConfig properties for FILE.
;; If FILE is not given, use currently visiting file.
;; Give CONFNAME for basename of config file other than .editorconfig.
;; If need to specify config format version, give CONFVERSION.
;; This functions returns alist of properties. Each element will look like
;; (KEY . VALUE) .
;; editorconfig-core-get-properties-hash (&optional file confname confversion)
;; Get EditorConfig properties for FILE.
;; This function is almost same as `editorconfig-core-get-properties', but
;; returns hash object instead.
;;; Code:
(require 'cl-lib)
(require 'editorconfig-core-handle)
(eval-when-compile
(require 'subr-x))
(defun editorconfig-core--get-handles (dir confname &optional result)
"Get list of EditorConfig handlers for DIR from CONFNAME.
In the resulting list, the handle for root config file comes first, and the
nearest comes last.
The list may contains nil when no file was found for directories.
RESULT is used internally and normally should not be used."
(setq dir (expand-file-name dir))
(let ((handle (editorconfig-core-handle (concat (file-name-as-directory dir)
confname)))
(parent (file-name-directory (directory-file-name dir))))
(if (or (string= parent dir)
(and handle (editorconfig-core-handle-root-p handle)))
(cl-remove-if-not 'identity (cons handle result))
(editorconfig-core--get-handles parent
confname
(cons handle result)))))
;;;###autoload
(defun editorconfig-core-get-nearest-editorconfig (directory)
"Return path to .editorconfig file that is closest to DIRECTORY."
(when-let* ((handle (car (last
(editorconfig-core--get-handles directory
".editorconfig")))))
(editorconfig-core-handle-path handle)))
;;;###autoload
(defun editorconfig-core-get-properties (&optional file confname confversion)
"Get EditorConfig properties for FILE.
If FILE is not given, use currently visiting file.
Give CONFNAME for basename of config file other than .editorconfig.
If need to specify config format version, give CONFVERSION.
This function returns an alist of properties. Each element will
look like (KEY . VALUE)."
(let ((hash (editorconfig-core-get-properties-hash file confname confversion))
(result nil))
(maphash (lambda (key value)
(add-to-list 'result (cons (symbol-name key) value)))
hash)
result))
(defun editorconfig-core--hash-merge (into update)
"Merge two hashes INTO and UPDATE.
This is a destructive function, hash INTO will be modified.
When the same key exists in both two hashes, values of UPDATE takes precedence."
(maphash (lambda (key value) (puthash key value into)) update)
into)
;;;###autoload
(defun editorconfig-core-get-properties-hash (&optional file confname confversion)
"Get EditorConfig properties for FILE.
If FILE is not given, use currently visiting file.
Give CONFNAME for basename of config file other than .editorconfig.
If need to specify config format version, give CONFVERSION.
This function is almost same as `editorconfig-core-get-properties', but returns
hash object instead."
(setq file
(expand-file-name (or file
buffer-file-name
(error "FILE is not given and `buffer-file-name' is nil"))))
(setq confname (or confname ".editorconfig"))
(setq confversion (or confversion "0.12.0"))
(let ((result (make-hash-table)))
(dolist (handle (editorconfig-core--get-handles (file-name-directory file)
confname))
(editorconfig-core--hash-merge result
(editorconfig-core-handle-get-properties-hash handle
file)))
;; Downcase known boolean values
(dolist (key '( end_of_line indent_style indent_size insert_final_newline
trim_trailing_whitespace charset))
(when-let* ((val (gethash key result)))
(puthash key (downcase val) result)))
;; Add indent_size property
(let ((v-indent-size (gethash 'indent_size result))
(v-indent-style (gethash 'indent_style result)))
(when (and (not v-indent-size)
(string= v-indent-style "tab")
;; If VERSION < 0.9.0, indent_size should have no default value
(version<= "0.9.0"
confversion))
(puthash 'indent_size
"tab"
result)))
;; Add tab_width property
(let ((v-indent-size (gethash 'indent_size result))
(v-tab-width (gethash 'tab_width result)))
(when (and v-indent-size
(not v-tab-width)
(not (string= v-indent-size "tab")))
(puthash 'tab_width v-indent-size result)))
;; Update indent-size property
(let ((v-indent-size (gethash 'indent_size result))
(v-tab-width (gethash 'tab_width result)))
(when (and v-indent-size
v-tab-width
(string= v-indent-size "tab"))
(puthash 'indent_size v-tab-width result)))
result))
(provide 'editorconfig-core)
;;; editorconfig-core.el ends here

View File

@ -0,0 +1,284 @@
;;; editorconfig-fnmatch.el --- Glob pattern matching in Emacs lisp -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; editorconfig-fnmatch.el provides a fnmatch implementation with a few
;; extensions.
;; The main usage of this library is glob pattern matching for EditorConfig, but
;; it can also act solely.
;; editorconfig-fnmatch-p (name pattern)
;; Test whether NAME match PATTERN.
;; PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings
;; can be used:
;; * Matches any string of characters, except path separators (/)
;; ** Matches any string of characters
;; ? Matches any single character
;; [name] Matches any single character in name
;; [^name] Matches any single character not in name
;; {s1,s2,s3} Matches any of the strings given (separated by commas)
;; {min..max} Matches any number between min and max
;; This library is a port from editorconfig-core-py library.
;; https://github.com/editorconfig/editorconfig-core-py/blob/master/editorconfig/fnmatch.py
;;; Code:
(require 'cl-lib)
(defvar editorconfig-fnmatch--cache-hashtable
nil
"Cache of shell pattern and its translation.")
;; Clear cache on file reload
(setq editorconfig-fnmatch--cache-hashtable
(make-hash-table :test 'equal))
(defconst editorconfig-fnmatch--left-brace-regexp
"\\(^\\|[^\\]\\){"
"Regular expression for left brace ({).")
(defconst editorconfig-fnmatch--right-brace-regexp
"\\(^\\|[^\\]\\)}"
"Regular expression for right brace (}).")
(defconst editorconfig-fnmatch--numeric-range-regexp
"\\([+-]?[0-9]+\\)\\.\\.\\([+-]?[0-9]+\\)"
"Regular expression for numeric range (like {-3..+3}).")
(defun editorconfig-fnmatch--match-num (regexp string)
"Return how many times REGEXP is found in STRING."
(let ((num 0))
;; START arg does not work as expected in this case
(while (string-match regexp string)
(setq num (1+ num)
string (substring string (match-end 0))))
num))
;;;###autoload
(defun editorconfig-fnmatch-p (string pattern)
"Test whether STRING match PATTERN.
Matching ignores case if `case-fold-search' is non-nil.
PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings can
be used:
* Matches any string of characters, except path separators (/)
** Matches any string of characters
? Matches any single character
[name] Matches any single character in name
[^name] Matches any single character not in name
{s1,s2,s3} Matches any of the strings given (separated by commas)
{min..max} Matches any number between min and max"
(string-match (editorconfig-fnmatch-translate pattern)
string))
;;(editorconfig-fnmatch-translate "{a,{-3..3}}.js")
;;(editorconfig-fnmatch-p "1.js" "{a,{-3..3}}.js")
(defun editorconfig-fnmatch-translate (pattern)
"Translate a shell PATTERN to a regular expression.
Translation result will be cached, so same translation will not be done twice."
(let ((cached (gethash pattern
editorconfig-fnmatch--cache-hashtable)))
(or cached
(puthash pattern
(editorconfig-fnmatch--do-translate pattern)
editorconfig-fnmatch--cache-hashtable))))
(defun editorconfig-fnmatch--do-translate (pattern &optional nested)
"Translate a shell PATTERN to a regular expression.
Set NESTED to t when this function is called from itself.
This function is called from `editorconfig-fnmatch-translate', when no cached
translation is found for PATTERN."
(let ((index 0)
(length (length pattern))
(brace-level 0)
(in-brackets nil)
;; List of strings of resulting regexp
(result ())
(is-escaped nil)
(matching-braces (= (editorconfig-fnmatch--match-num
editorconfig-fnmatch--left-brace-regexp
pattern)
(editorconfig-fnmatch--match-num
editorconfig-fnmatch--right-brace-regexp
pattern)))
current-char
pos
has-slash
has-comma
num-range)
(while (< index length)
(if (and (not is-escaped)
(string-match "[^]\\*?[{},/\\-]+"
;;(string-match "[^]\\*?[{},/\\-]+" "?.a")
pattern
index)
(eq index (match-beginning 0)))
(setq result `(,@result ,(regexp-quote (match-string 0 pattern)))
index (match-end 0)
is-escaped nil)
(setq current-char (aref pattern index)
index (1+ index))
(cl-case current-char
(?*
(setq pos index)
(if (and (< pos length)
(= (aref pattern pos) ?*))
(setq result `(,@result ".*"))
(setq result `(,@result "[^/]*"))))
(??
(setq result `(,@result "[^/]")))
(?\[
(if in-brackets
(setq result `(,@result "\\["))
(if (= (aref pattern index) ?/)
;; Slash after an half-open bracket
(setq result `(,@result "\\[/")
index (+ index 1))
(setq pos index
has-slash nil)
(while (and (< pos length)
(not (= (aref pattern pos) ?\]))
(not has-slash))
(if (and (= (aref pattern pos) ?/)
(not (= (aref pattern (- pos 1)) ?\\)))
(setq has-slash t)
(setq pos (1+ pos))))
(if has-slash
(setq result `(,@result ,(concat "\\["
(substring pattern
index
(1+ pos))
"\\]"))
index (+ pos 2))
(if (and (< index length)
(memq (aref pattern index)
'(?! ?^)))
(setq index (1+ index)
result `(,@result "[^"))
(setq result `(,@result "[")))
(setq in-brackets t)))))
(?-
(if in-brackets
(setq result `(,@result "-"))
(setq result `(,@result "\\-"))))
(?\]
(setq result `(,@result "]")
in-brackets nil))
(?{
(setq pos index
has-comma nil)
(while (and (or (and (< pos length)
(not (= (aref pattern pos) ?})))
is-escaped)
(not has-comma))
(if (and (eq (aref pattern pos) ?,)
(not is-escaped))
(setq has-comma t)
(setq is-escaped (and (eq (aref pattern pos)
?\\)
(not is-escaped))
pos (1+ pos))))
(if (and (not has-comma)
(< pos length))
(let ((pattern-sub (substring pattern index pos)))
(setq num-range (string-match editorconfig-fnmatch--numeric-range-regexp
pattern-sub))
(if num-range
(let ((number-start (string-to-number (match-string 1
pattern-sub)))
(number-end (string-to-number (match-string 2
pattern-sub))))
(setq result `(,@result ,(concat "\\(?:"
(mapconcat 'number-to-string
(cl-loop for i from number-start to number-end
collect i)
"\\|")
"\\)"))))
(let ((inner (editorconfig-fnmatch--do-translate pattern-sub t)))
(setq result `(,@result ,(format "{%s}" inner)))))
(setq index (1+ pos)))
(if matching-braces
(setq result `(,@result "\\(?:")
brace-level (1+ brace-level))
(setq result `(,@result "{")))))
(?,
(if (and (> brace-level 0)
(not is-escaped))
(setq result `(,@result "\\|"))
(setq result `(,@result "\\,"))))
(?}
(if (and (> brace-level 0)
(not is-escaped))
(setq result `(,@result "\\)")
brace-level (- brace-level 1))
(setq result `(,@result "}"))))
(?/
(if (and (<= (+ index 3) (length pattern))
(string= (substring pattern index (+ index 3)) "**/"))
(setq result `(,@result "\\(?:/\\|/.*/\\)")
index (+ index 3))
(setq result `(,@result "/"))))
(t
(unless (= current-char ?\\)
(setq result `(,@result ,(regexp-quote (char-to-string current-char)))))))
(if (= current-char ?\\)
(progn (when is-escaped
(setq result `(,@result "\\\\")))
(setq is-escaped (not is-escaped)))
(setq is-escaped nil))))
(unless nested
(setq result `("^" ,@result "\\'")))
(apply #'concat result)))
(provide 'editorconfig-fnmatch)
;;; editorconfig-fnmatch.el ends here

122
lisp/editorconfig-tools.el Normal file
View File

@ -0,0 +1,122 @@
;;; editorconfig-tools.el --- Editorconfig tools -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Some utility commands for users, not used from editorconfig-mode.
;;; Code:
(require 'cl-lib)
(eval-when-compile
(require 'subr-x))
(require 'editorconfig)
;;;###autoload
(defun editorconfig-apply ()
"Get and apply EditorConfig properties to current buffer.
This function does not respect the values of `editorconfig-exclude-modes' and
`editorconfig-exclude-regexps' and always applies available properties.
Use `editorconfig-mode-apply' instead to make use of these variables."
(interactive)
(when buffer-file-name
(condition-case err
(progn
(let ((props (editorconfig-call-get-properties-function buffer-file-name)))
(condition-case err
(run-hook-with-args 'editorconfig-hack-properties-functions props)
(error
(display-warning '(editorconfig editorconfig-hack-properties-functions)
(format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
err)
:warning)))
(setq editorconfig-properties-hash props)
(editorconfig-set-local-variables props)
(editorconfig-set-coding-system-revert
(gethash 'end_of_line props)
(gethash 'charset props))
(condition-case err
(run-hook-with-args 'editorconfig-after-apply-functions props)
(error
(display-warning '(editorconfig editorconfig-after-apply-functions)
(format "Error while running editorconfig-after-apply-functions, abort running hook: %S"
err)
:warning)))))
(error
(display-warning '(editorconfig editorconfig-apply)
(format "Error in editorconfig-apply, styles will not be applied: %S" err)
:error)))))
(defun editorconfig-mode-apply ()
"Get and apply EditorConfig properties to current buffer.
This function does nothing when the major mode is listed in
`editorconfig-exclude-modes', or variable `buffer-file-name' matches
any of regexps in `editorconfig-exclude-regexps'."
(interactive)
(when (and major-mode
(not (editorconfig--disabled-for-majormode major-mode))
buffer-file-name
(not (editorconfig--disabled-for-filename buffer-file-name)))
(editorconfig-apply)))
;;;###autoload
(defun editorconfig-find-current-editorconfig ()
"Find the closest .editorconfig file for current file."
(interactive)
(eval-and-compile (require 'editorconfig-core))
(when-let* ((file (editorconfig-core-get-nearest-editorconfig
default-directory)))
(find-file file)))
;;;###autoload
(defun editorconfig-display-current-properties ()
"Display EditorConfig properties extracted for current buffer."
(interactive)
(if editorconfig-properties-hash
(let ((buf (get-buffer-create "*EditorConfig Properties*"))
(file buffer-file-name)
(props editorconfig-properties-hash))
(with-current-buffer buf
(erase-buffer)
(insert (format "# EditorConfig for %s\n" file))
(maphash (lambda (k v)
(insert (format "%S = %s\n" k v)))
props))
(display-buffer buf))
(message "Properties are not applied to current buffer yet.")
nil))
;;;###autoload
(defalias 'describe-editorconfig-properties
'editorconfig-display-current-properties)
(provide 'editorconfig-tools)
;;; editorconfig-tools.el ends here

747
lisp/editorconfig.el Normal file
View File

@ -0,0 +1,747 @@
;;; editorconfig.el --- EditorConfig Emacs Plugin -*- lexical-binding: t -*-
;; Copyright (C) 2011-2024 EditorConfig Team
;; Author: EditorConfig Team <editorconfig@googlegroups.com>
;; Version: 0.11.0
;; URL: https://github.com/editorconfig/editorconfig-emacs#readme
;; Package-Requires: ((emacs "26.1") (nadvice "0.3"))
;; Keywords: convenience editorconfig
;; See
;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
;; or the CONTRIBUTORS file for the list of contributors.
;; This file is part of EditorConfig Emacs Plugin.
;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.
;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
;; Public License for more details.
;; You should have received a copy of the GNU General Public License along with
;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; EditorConfig helps developers define and maintain consistent
;; coding styles between different editors and IDEs.
;; The EditorConfig project consists of a file format for defining
;; coding styles and a collection of text editor plugins that enable
;; editors to read the file format and adhere to defined styles.
;; EditorConfig files are easily readable and they work nicely with
;; version control systems.
;;; Code:
(require 'cl-lib)
(require 'pcase)
(require 'nadvice)
(eval-when-compile
(require 'rx)
(require 'subr-x)
(defvar tex-indent-basic)
(defvar tex-indent-item)
(defvar tex-indent-arg)
(defvar evil-shift-width))
(require 'editorconfig-core)
(defgroup editorconfig nil
"EditorConfig Emacs Plugin.
EditorConfig helps developers define and maintain consistent
coding styles between different editors and IDEs."
:tag "EditorConfig"
:prefix "editorconfig-"
:group 'tools)
(define-obsolete-variable-alias
'edconf-exec-path
'editorconfig-exec-path
"0.5")
(defcustom editorconfig-exec-path
"editorconfig"
"Path to EditorConfig executable.
Used by `editorconfig--execute-editorconfig-exec'."
:type 'string
:group 'editorconfig)
(define-obsolete-variable-alias
'edconf-get-properties-function
'editorconfig-get-properties-function
"0.5")
(defcustom editorconfig-get-properties-function
'editorconfig-core-get-properties-hash
"A function which gets EditorConfig properties for specified file.
This function will be called with one argument, full path of the target file,
and should return a hash object containing properties, or nil if any core
program is not available. Keys of this hash should be symbols of properties,
and values should be strings of their values.
For example, if you always want to use built-in core library instead
of any EditorConfig executable to get properties, add following to
your init.el:
(set-variable \\='editorconfig-get-properties-function
#\\='editorconfig-core-get-properties-hash)
Possible known values are:
* `editorconfig-core-get-properties-hash' (default)
* Always use built-in Emacs-Lisp implementation to get properties
* `editorconfig-get-properties'
* Use `editorconfig-get-properties-from-exec' when
`editorconfig-exec-path' executable is found, otherwise
use `editorconfig-core-get-properties-hash'
* `editorconfig-get-properties-from-exec'
* Get properties by executing EditorConfig executable"
:type 'function
:group 'editorconfig)
(define-obsolete-variable-alias
'edconf-custom-hooks
'editorconfig-after-apply-functions
"0.5")
(define-obsolete-variable-alias
'editorconfig-custom-hooks
'editorconfig-after-apply-functions
"0.7.14")
(defcustom editorconfig-after-apply-functions ()
"A list of functions after loading common EditorConfig settings.
Each element in this list is a hook function. This hook function
takes one parameter, which is a property hash table. The value
of properties can be obtained through gethash function.
The hook does not have to be coding style related; you can add
whatever functionality you want. For example, the following is
an example to add a new property emacs_linum to decide whether to
show line numbers on the left:
(add-hook \\='editorconfig-after-apply-functions
\\='(lambda (props)
(let ((show-line-num (gethash \\='emacs_linum props)))
(cond ((equal show-line-num \"true\") (linum-mode 1))
((equal show-line-num \"false\") (linum-mode 0))))))
This hook will be run even when there are no matching sections in
\".editorconfig\", or no \".editorconfig\" file was found at all."
:type 'hook
:group 'editorconfig)
(defcustom editorconfig-hack-properties-functions ()
"A list of function to alter property values before applying them.
These functions will be run after loading \".editorconfig\" files and before
applying them to current buffer, so that you can alter some properties from
\".editorconfig\" before they take effect.
\(Since 2021/08/30 (v0.9.0): Buffer coding-systems are set before running
this functions, so this variable cannot be used to change coding-systems.)
For example, Makefiles always use tab characters for indentation: you can
overwrite \"indent_style\" property when current `major-mode' is a
`makefile-mode' with following code:
(add-hook \\='editorconfig-hack-properties-functions
\\='(lambda (props)
(when (derived-mode-p \\='makefile-mode)
(puthash \\='indent_style \"tab\" props))))
This hook will be run even when there are no matching sections in
\".editorconfig\", or no \".editorconfig\" file was found at all."
:type 'hook
:group 'editorconfig)
(make-obsolete-variable 'editorconfig-hack-properties-functions
"Using `editorconfig-after-apply-functions' instead is recommended,
because since 2021/08/30 (v0.9.0) this variable cannot support all properties:
charset values will be referenced before running this hook."
"v0.9.0")
(define-obsolete-variable-alias
'edconf-indentation-alist
'editorconfig-indentation-alist
"0.5")
(defcustom editorconfig-indentation-alist
;; For contributors: Sort modes in alphabetical order
`((apache-mode apache-indent-level)
(bash-ts-mode sh-basic-offset
sh-indentation)
(bpftrace-mode c-basic-offset)
(c++-ts-mode c-basic-offset
c-ts-mode-indent-offset)
(c-ts-mode c-basic-offset
c-ts-mode-indent-offset)
(cmake-mode cmake-tab-width)
(cmake-ts-mode cmake-tab-width
cmake-ts-mode-indent-offset)
(csharp-mode c-basic-offset)
(csharp-ts-mode c-basic-offset
csharp-ts-mode-indent-offset)
(emacs-lisp-mode lisp-indent-offset)
(ess-mode ess-indent-offset)
(feature-mode feature-indent-offset
feature-indent-level)
(gdscript-mode gdscript-indent-offset)
(go-ts-mode go-ts-mode-indent-offset)
(hcl-mode hcl-indent-level)
(html-ts-mode html-ts-mode-indent-offset)
(java-ts-mode c-basic-offset
java-ts-mode-indent-offset)
(js-mode js-indent-level)
(jsonian-mode jsonian-default-indentation)
(latex-mode . editorconfig-set-indentation-latex-mode)
(lisp-mode lisp-indent-offset)
(matlab-mode matlab-indent-level)
(octave-mode octave-block-offset)
;; No need to change `php-mode-coding-style' value for php-mode
;; since we run editorconfig later than it resets `c-basic-offset'.
;; See https://github.com/editorconfig/editorconfig-emacs/issues/116
;; for details.
(php-mode c-basic-offset)
(php-ts-mode php-ts-mode-indent-offset)
(ps-mode ps-mode-tab)
(ruby-mode ruby-indent-level)
(rust-ts-mode rust-indent-offset
rust-ts-mode-indent-offset)
(scss-mode css-indent-offset)
(sgml-mode sgml-basic-offset)
(sh-mode sh-indentation)
(svelte-mode svelte-basic-offset)
(tcl-mode tcl-indent-level
tcl-continued-indent-level)
(toml-ts-mode toml-ts-mode-indent-offset)
(verilog-mode verilog-indent-level
verilog-indent-level-behavioral
verilog-indent-level-declaration
verilog-indent-level-module
verilog-cexp-indent
verilog-case-indent)
(web-mode (web-mode-indent-style . ,(lambda (size) 2))
web-mode-markup-indent-offset
web-mode-css-indent-offset
web-mode-code-indent-offset)
(zig-mode zig-indent-offset)
)
"Alist of indentation setting methods by modes."
:risky t)
(defcustom editorconfig-exclude-modes ()
"Modes in which `editorconfig-mode-apply' will not run."
:type '(repeat (symbol :tag "Major Mode"))
:group 'editorconfig)
(defcustom editorconfig-exclude-regexps ()
"List of regexp for buffer filenames `editorconfig-mode-apply' will not run.
When variable `buffer-file-name' matches any of the regexps, then
`editorconfig-mode-apply' will not do its work."
:type '(repeat string)
:group 'editorconfig)
(with-eval-after-load 'recentf
(add-to-list 'editorconfig-exclude-regexps
(rx-to-string '(seq string-start
(eval (expand-file-name recentf-save-file)))
t)))
(defcustom editorconfig-trim-whitespaces-mode nil
"Buffer local minor-mode to use to trim trailing whitespaces.
If set, enable that mode when `trim_trailing_whitespace` is set to true.
Otherwise, use `delete-trailing-whitespace'."
:type 'symbol
:group 'editorconfig)
(defvar editorconfig-properties-hash nil
"Hash object of EditorConfig properties that was enabled for current buffer.
Set by `editorconfig-apply' and nil if that is not invoked in
current buffer yet.")
(make-variable-buffer-local 'editorconfig-properties-hash)
(put 'editorconfig-properties-hash
'permanent-local
t)
(defvar editorconfig-lisp-use-default-indent nil
"Selectively ignore the value of indent_size for Lisp files.
Prevents `lisp-indent-offset' from being set selectively.
nil - `lisp-indent-offset' is always set normally.
t - `lisp-indent-offset' is never set normally
(always use default indent for lisps).
number - `lisp-indent-offset' is not set only if indent_size is
equal to this number. For example, if this is set to 2,
`lisp-indent-offset' will not be set only if indent_size is 2.")
(defcustom editorconfig-override-file-local-variables t
"Non-nil means editorconfig will override file local variable values."
:type 'boolean
:group 'editorconfig)
(defcustom editorconfig-override-dir-local-variables t
"Non-nil means editorconfig will override values defined in dir-locals.el ."
:type 'boolean
:group 'editorconfig)
(define-error 'editorconfig-error
"Error thrown from editorconfig lib")
(defun editorconfig-error (&rest args)
"Signal an `editorconfig-error'.
Make a message by passing ARGS to `format-message'."
(signal 'editorconfig-error (list (apply #'format-message args))))
(defun editorconfig--disabled-for-filename (filename)
"Return non-nil when EditorConfig is disabled for FILENAME."
(cl-assert (stringp filename))
(cl-loop for regexp in editorconfig-exclude-regexps
if (string-match regexp filename) return t
finally return nil))
(defun editorconfig--disabled-for-majormode (majormode)
"Return non-nil when Editorconfig is disabled for MAJORMODE."
(cl-assert majormode)
(or (provided-mode-derived-p majormode 'special-mode)
;; Some special modes (like `archive-mode') are not derived from
;; `special-mode'
(eq (get majormode 'mode-class) 'special)
(memq majormode
editorconfig-exclude-modes)))
(defun editorconfig-string-integer-p (string)
"Return non-nil if STRING represents integer."
(and (stringp string)
(string-match-p "\\`[0-9]+\\'" string)))
(defun editorconfig-set-indentation-latex-mode (size)
"Set `latex-mode' indent size to SIZE."
(setq-local LaTeX-indent-level size)
(setq-local LaTeX-item-indent size)
(setq-local TeX-brace-indent-level size))
(cl-defun editorconfig--should-set (symbol &optional size)
"Determine if editorconfig should set SYMBOL.
Optional arg SIZE is used when symbol is `lisp-indent-offset'.
See `editorconfig-lisp-use-default-indent' for details."
(display-warning '(editorconfig editorconfig--should-set)
(format "symbol: %S | size: %S"
symbol
size)
:debug)
(when (and (not editorconfig-override-file-local-variables)
(assq symbol file-local-variables-alist))
(cl-return-from editorconfig--should-set
nil))
(when (and (not editorconfig-override-dir-local-variables)
(assq symbol dir-local-variables-alist))
(cl-return-from editorconfig--should-set
nil))
(when (eq symbol 'lisp-indent-offset)
(cl-return-from editorconfig--should-set
(cond ((null editorconfig-lisp-use-default-indent) t)
((eql t editorconfig-lisp-use-default-indent) nil)
((numberp editorconfig-lisp-use-default-indent)
(not (eql size editorconfig-lisp-use-default-indent)))
(t t))))
t)
(defun editorconfig-set-indentation (style &optional size tab_width)
"Set indentation type from STYLE, SIZE and TAB_WIDTH."
(setq size
(cond ((editorconfig-string-integer-p size)
(string-to-number size))
((equal size "tab")
"tab")
(t
nil)))
(cond ((not (editorconfig--should-set 'tab-width))
nil)
)
(cond ((not (editorconfig--should-set 'indent-tabs-mode))
nil)
)
(when (editorconfig--should-set 'evil-shift-width)
)
)
(defvar-local editorconfig--apply-coding-system-currently nil
"Used internally.")
(put 'editorconfig--apply-coding-system-currently
'permanent-local
t)
(defun editorconfig-merge-coding-systems (end-of-line charset)
"Return merged coding system symbol of END-OF-LINE and CHARSET."
(let ((eol (cond
((equal end-of-line "lf") 'undecided-unix)
((equal end-of-line "cr") 'undecided-mac)
((equal end-of-line "crlf") 'undecided-dos)
(t 'undecided)))
(cs (cond
((equal charset "latin1") 'iso-latin-1)
((equal charset "utf-8") 'utf-8)
((equal charset "utf-8-bom") 'utf-8-with-signature)
((equal charset "utf-16be") 'utf-16be-with-signature)
((equal charset "utf-16le") 'utf-16le-with-signature)
(t 'undecided))))
(merge-coding-systems cs eol)))
(cl-defun editorconfig-set-coding-system-revert (end-of-line charset)
"Set buffer coding system by END-OF-LINE and CHARSET.
This function will revert buffer when the coding-system has been changed."
;; `editorconfig--advice-find-file-noselect' does not use this function
(let ((coding-system (editorconfig-merge-coding-systems end-of-line
charset)))
(display-warning '(editorconfig editorconfig-set-coding-system-revert)
(format "editorconfig-set-coding-system-revert: buffer-file-name: %S | buffer-file-coding-system: %S | coding-system: %S | apply-currently: %S"
buffer-file-name
buffer-file-coding-system
coding-system
editorconfig--apply-coding-system-currently)
:debug)
(when (eq coding-system 'undecided)
(cl-return-from editorconfig-set-coding-system-revert))
(when (and buffer-file-coding-system
(memq buffer-file-coding-system
(coding-system-aliases (merge-coding-systems coding-system
buffer-file-coding-system))))
(cl-return-from editorconfig-set-coding-system-revert))
(unless (file-readable-p buffer-file-name)
(set-buffer-file-coding-system coding-system)
(cl-return-from editorconfig-set-coding-system-revert))
(unless (memq coding-system
(coding-system-aliases editorconfig--apply-coding-system-currently))
;; Revert functions might call editorconfig-apply again
(unwind-protect
(progn
(setq editorconfig--apply-coding-system-currently coding-system)
;; Revert without query if buffer is not modified
(let ((revert-without-query '(".")))
(revert-buffer-with-coding-system coding-system)))
(setq editorconfig--apply-coding-system-currently nil)))))
(defun editorconfig-set-trailing-nl (final-newline)
"Set up requiring final newline by FINAL-NEWLINE.
This function will set `require-final-newline' and `mode-require-final-newline'
to non-nil when FINAL-NEWLINE is true."
(pcase final-newline
("true"
)
("false"
)))
(defun editorconfig-set-trailing-ws (trim-trailing-ws)
(if editorconfig-trim-whitespaces-mode
(funcall editorconfig-trim-whitespaces-mode 1)
...)
(when editorconfig-trim-whitespaces-mode
(funcall editorconfig-trim-whitespaces-mode 0))
...)
(defun editorconfig-set-line-length (length)
"Set the max line length (`fill-column') to LENGTH."
(when (and (editorconfig-string-integer-p length)
(> (string-to-number length) 0))
(setq fill-column (string-to-number length))))
(defun editorconfig--execute-editorconfig-exec (filename)
"Execute EditorConfig core with FILENAME and return output."
(if filename
(with-temp-buffer
(let ((remote (file-remote-p filename))
(remote-localname (file-remote-p filename
'localname)))
(display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
(format "editorconfig--execute-editorconfig-exec: filename: %S | remote: %S | remote-localname: %S"
filename
remote
remote-localname)
:debug)
(if remote
(progn
(cd (concat remote "/"))
(setq filename remote-localname))
(cd "/")))
(display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
(format "editorconfig--execute-editorconfig-exec: default-directory: %S | filename: %S"
default-directory
filename
)
:debug)
(if (eq 0
(process-file editorconfig-exec-path nil t nil filename))
(buffer-string)
(editorconfig-error (buffer-string))))
""))
(defun editorconfig--parse-properties (props-string)
)
(defun editorconfig-get-properties-from-exec (filename)
"Get EditorConfig properties of file FILENAME.
This function uses value of `editorconfig-exec-path' to get properties."
(if (executable-find editorconfig-exec-path)
(editorconfig--parse-properties (editorconfig--execute-editorconfig-exec filename))
(editorconfig-error "Unable to find editorconfig executable")))
(defun editorconfig-get-properties (filename)
"Get EditorConfig properties for file FILENAME.
It calls `editorconfig-get-properties-from-exec' if
`editorconfig-exec-path' is found, otherwise
`editorconfig-core-get-properties-hash'."
(if (and (executable-find editorconfig-exec-path)
(not (file-remote-p filename)))
(editorconfig-get-properties-from-exec filename)
(require 'editorconfig-core)
(editorconfig-core-get-properties-hash filename)))
(defun editorconfig-call-get-properties-function (filename)
"Call `editorconfig-get-properties-function' with FILENAME and return result.
This function also removes `unset' properties and calls
`editorconfig-hack-properties-functions'."
(unless (functionp editorconfig-get-properties-function)
(editorconfig-error "Invalid editorconfig-get-properties-function value"))
(if (stringp filename)
(setq filename (expand-file-name filename))
(editorconfig-error "Invalid argument: %S" filename))
(let ((props nil))
(condition-case err
(setq props (funcall editorconfig-get-properties-function
filename))
(error
(editorconfig-error "Error from editorconfig-get-properties-function: %S"
err)))
(cl-loop for k being the hash-keys of props using (hash-values v)
when (equal v "unset") do (remhash k props))
props))
(defun editorconfig-set-local-variables (props)
"Set buffer variables according to EditorConfig PROPS."
(editorconfig-set-indentation (gethash 'indent_style props)
(gethash 'indent_size props)
(gethash 'tab_width props))
(editorconfig-set-trailing-nl (gethash 'insert_final_newline props))
(editorconfig-set-trailing-ws (gethash 'trim_trailing_whitespace props))
(editorconfig-set-line-length (gethash 'max_line_length props)))
(defun editorconfig-major-mode-hook ()
"Function to run when `major-mode' has been changed.
This functions does not reload .editorconfig file, just sets local variables
again. Changing major mode can reset these variables.
This function also executes `editorconfig-after-apply-functions' functions."
(display-warning '(editorconfig editorconfig-major-mode-hook)
(format "editorconfig-major-mode-hook: editorconfig-mode: %S, major-mode: %S, -properties-hash: %S"
(and (boundp 'editorconfig-mode)
editorconfig-mode)
major-mode
editorconfig-properties-hash)
:debug)
(when (and (bound-and-true-p editorconfig-mode)
editorconfig-properties-hash)
(editorconfig-set-local-variables editorconfig-properties-hash)
(condition-case err
(run-hook-with-args 'editorconfig-after-apply-functions editorconfig-properties-hash)
(error
(display-warning '(editorconfig editorconfig-major-mode-hook)
(format "Error while running `editorconfig-after-apply-functions': %S"
err))))))
(defvar editorconfig--filename-codingsystem-hash (make-hash-table :test 'equal)
"Used interally.
`editorconfig--advice-find-file-noselect' will put value to this hash, and
`editorconfig--advice-insert-file-contents' will use the value to set
`coding-system-for-read' value.")
(defun editorconfig--advice-insert-file-contents (f filename &rest args)
"Set `coding-system-for-read'.
This function should be added as an advice function to `insert-file-contents'.
F is that function, and FILENAME and ARGS are arguments passed to F."
;; This function uses `editorconfig--filename-codingsystem-hash' to decide what coding-system
;; should be used, which will be set by `editorconfig--advice-find-file-noselect'.
(display-warning '(editorconfig editorconfig--advice-insert-file-contents)
(format "editorconfig--advice-insert-file-contents: filename: %S args: %S codingsystem: %S bufferfilename: %S"
filename args
editorconfig--filename-codingsystem-hash
buffer-file-name)
:debug)
(let ((coding-system (and (stringp filename)
(gethash (expand-file-name filename)
editorconfig--filename-codingsystem-hash))))
(if (and coding-system
(not (eq coding-system
'undecided)))
(let ((coding-system-for-read coding-system))
(apply f filename args))
(apply f filename args))))
(defun editorconfig--advice-find-file-noselect (f filename &rest args)
"Get EditorConfig properties and apply them to buffer to be visited.
This function should be added as an advice function to `find-file-noselect'.
F is that function, and FILENAME and ARGS are arguments passed to F."
(let ((props nil)
(coding-system nil)
(ret nil))
(condition-case err
(when (and (stringp filename)
(not (editorconfig--disabled-for-filename filename)))
(setq props (editorconfig-call-get-properties-function filename))
(setq coding-system
(editorconfig-merge-coding-systems (gethash 'end_of_line props)
(gethash 'charset props)))
(puthash (expand-file-name filename)
coding-system
editorconfig--filename-codingsystem-hash))
(error
(display-warning '(editorconfig editorconfig--advice-find-file-noselect)
(format "Failed to get properties, styles will not be applied: %S"
err)
:warning)))
(setq ret (apply f filename args))
(clrhash editorconfig--filename-codingsystem-hash)
(condition-case err
(with-current-buffer ret
(when (and props
;; filename has already been checked
(not (editorconfig--disabled-for-majormode major-mode)))
;; When file path indicates it is a remote file and it actually
;; does not exists, `buffer-file-coding-system' will not be set.
;; (Seems `insert-file-contents' will not be called)
;; For this case, explicitly set this value so that saving will be done
;; with expected coding system.
(when (and (file-remote-p filename)
(not (local-variable-p 'buffer-file-coding-system))
(not (file-exists-p filename))
coding-system
(not (eq coding-system
'undecided)))
(set-buffer-file-coding-system coding-system))
;; NOTE: hack-properties-functions cannot affect coding-system value,
;; because it has to be set before initializing buffers.
(condition-case err
(run-hook-with-args 'editorconfig-hack-properties-functions props)
(error
(display-warning '(editorconfig editorconfig-hack-properties-functions)
(format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
err)
:warning)))
(setq editorconfig-properties-hash props)
;; When initializing buffer, `editorconfig-major-mode-hook'
;; will be called before setting `editorconfig-properties-hash', so
;; execute this explicitly here.
(editorconfig-set-local-variables props)
(condition-case err
(run-hook-with-args 'editorconfig-after-apply-functions props)
(error
(display-warning '(editorconfig editorconfig--advice-find-file-noselect)
(format "Error while running `editorconfig-after-apply-functions': %S"
err))))))
(error
(display-warning '(editorconfig editorconfig--advice-find-file-noselect)
(format "Error while setting variables from EditorConfig: %S" err))))
ret))
;;;###autoload
(define-minor-mode editorconfig-mode
"Toggle EditorConfig feature.
To disable EditorConfig in some buffers, modify
`editorconfig-exclude-modes' or `editorconfig-exclude-regexps'."
:global t
:lighter editorconfig-mode-lighter
(let ((modehooks '(prog-mode-hook
text-mode-hook
read-only-mode-hook
;; Some modes call `kill-all-local-variables' in their init
;; code, which clears some values set by editorconfig.
;; For those modes, editorconfig-apply need to be called
;; explicitly through their hooks.
rpm-spec-mode-hook)))
(if editorconfig-mode
(progn
(advice-add 'find-file-noselect :around 'editorconfig--advice-find-file-noselect)
(advice-add 'insert-file-contents :around 'editorconfig--advice-insert-file-contents)
(dolist (hook modehooks)
(add-hook hook
'editorconfig-major-mode-hook
t)))
(advice-remove 'find-file-noselect 'editorconfig--advice-find-file-noselect)
(advice-remove 'insert-file-contents 'editorconfig--advice-insert-file-contents)
(dolist (hook modehooks)
(remove-hook hook 'editorconfig-major-mode-hook)))))
;; (defconst editorconfig--version
;; (eval-when-compile
;; (require 'lisp-mnt)
;; (declare-function lm-version "lisp-mnt" nil)
;; (lm-version))
;; "EditorConfig version.")
(declare-function find-library-name "find-func" (library))
(declare-function lm-version "lisp-mnt" nil)
;;;###autoload
(defun editorconfig-version (&optional show-version)
"Get EditorConfig version as string.
If called interactively or if SHOW-VERSION is non-nil, show the
version in the echo area and the messages buffer."
(interactive (list t))
(let* ((version (with-temp-buffer
(require 'find-func)
(insert-file-contents (find-library-name "editorconfig"))
(require 'lisp-mnt)
(lm-version)))
(pkg (and (eval-and-compile (require 'package nil t))
(cadr (assq 'editorconfig
package-alist))))
(pkg-version (and pkg
(package-version-join (package-desc-version pkg))))
(version-full (if (and pkg-version
(not (string= version pkg-version)))
(concat version "-" pkg-version)
version)))
(when show-version
(message "EditorConfig Emacs v%s" version-full))
version-full))
(provide 'editorconfig)
;;; editorconfig.el ends here
;; Local Variables:
;; sentence-end-double-space: t
;; End: