branch: scratch/editorconfig-cc commit 6405aa9692a41e7583b725bbb187acca33dbb283 Author: 10sr <8slashes+...@gmail.com> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
Add editorconfig-conf-mode.el (#97) And moved some functions and definitions from editorconfig.el --- editorconfig-conf-mode.el | 94 +++++++++++++++++++++++++++++++++++++++++++++++ editorconfig.el | 60 ------------------------------ 2 files changed, 94 insertions(+), 60 deletions(-) diff --git a/editorconfig-conf-mode.el b/editorconfig-conf-mode.el new file mode 100644 index 0000000000..2c2b6ea73e --- /dev/null +++ b/editorconfig-conf-mode.el @@ -0,0 +1,94 @@ +;;; editorconfig-conf-mode.el --- Major mode for editing .editorconfig files + +;; Copyright (C) 2011-2016 EditorConfig Team + +;; Author: EditorConfig Team <editorcon...@googlegroups.com> +;; Version: 0.7.6 +;; URL: https://github.com/editorconfig/editorconfig-emacs#readme + +;; 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.") + +;;;###autoload +(define-derived-mode editorconfig-conf-mode conf-unix-mode "EditorConfig" + "Major mode for editing .editorconfig files." + (set-variable 'indent-line-function 'indent-relative) + (let ((key-property-list + '("charset" + "end_of_line" + "indent_size" + "indent_style" + "insert_final_newline" + "max_line_length" + "root" + "tab_width" + "trim_trailing_whitespace")) + (key-value-list + '("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) + (add-to-list + 'font-lock-value + `(,(format "[=:][ \t]*\\(%s\\)\\([ \t]\\|$\\)" key-value) + 1 font-lock-constant-face))) + ;; Highlight all key properties + (dolist (key-property key-property-list) + (add-to-list + 'font-lock-value + `(,(format "^[ \t]*\\(%s\\)[ \t]*[=:]" key-property) + 1 font-lock-builtin-face))) + + (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 diff --git a/editorconfig.el b/editorconfig.el index bded6aa75f..7d3c081db1 100644 --- a/editorconfig.el +++ b/editorconfig.el @@ -39,8 +39,6 @@ ;;; Code: -(require 'conf-mode) - (declare-function editorconfig-core-get-properties-hash "editorconfig-core" nil) @@ -321,12 +319,6 @@ This function do the job only when the major mode is not listed in editorconfig-exclude-modes))) (editorconfig-apply))) -(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.") - ;;;###autoload (define-minor-mode editorconfig-mode @@ -341,56 +333,4 @@ visiting files or changing major modes if the major mode is not listed in (add-hook hook 'editorconfig-mode-apply) (remove-hook hook 'editorconfig-mode-apply)))) - - -;;;###autoload -(define-derived-mode editorconfig-conf-mode conf-unix-mode "EditorConfig" - "Major mode for editing .editorconfig files." - (set-variable 'indent-line-function 'indent-relative) - (let ((key-property-list - '("charset" - "end_of_line" - "indent_size" - "indent_style" - "insert_final_newline" - "max_line_length" - "root" - "tab_width" - "trim_trailing_whitespace")) - (key-value-list - '("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) - (add-to-list - 'font-lock-value - `(,(format "[=:][ \t]*\\(%s\\)\\([ \t]\\|$\\)" key-value) - 1 font-lock-constant-face))) - ;; Highlight all key properties - (dolist (key-property key-property-list) - (add-to-list - 'font-lock-value - `(,(format "^[ \t]*\\(%s\\)[ \t]*[=:]" key-property) - 1 font-lock-builtin-face))) - - (conf-mode-initialize "#" font-lock-value))) - -;;;###autoload -(add-to-list 'auto-mode-alist - '("/\\.editorconfig\\'" . editorconfig-conf-mode)) - (provide 'editorconfig)