[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dockerfile-mode 2e2f7231fc 008/104: Various fixes and impr
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dockerfile-mode 2e2f7231fc 008/104: Various fixes and improvements |
Date: |
Sat, 29 Jan 2022 07:58:16 -0500 (EST) |
branch: elpa/dockerfile-mode
commit 2e2f7231fc345087acbf879b5ab9d29ec87551e7
Author: Steve Purcell <steve@sanityinc.com>
Commit: Steve Purcell <steve@sanityinc.com>
Various fixes and improvements
* Use standard header/footer lines for compatibility with package.el
* Include auto-mode-alist entry by default
* Use a proper mode definition rather than a plain function
* Support comments via the syntax table, not font lock keywords
* Use define-abbrev-table where appropriate
* Specify keywords more concisely, and pass "case-fold" flag with font-lock
defaults to allow case insensitivity
---
dockerfile-mode.el | 96 +++++++++++++++++++++++++++++-------------------------
1 file changed, 52 insertions(+), 44 deletions(-)
diff --git a/dockerfile-mode.el b/dockerfile-mode.el
index 58c2e4e40d..c9b25545fe 100644
--- a/dockerfile-mode.el
+++ b/dockerfile-mode.el
@@ -1,18 +1,23 @@
-;;; Copyright (c) 2013 Spotify AB
-;;;
-;;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
-;;; use this file except in compliance with the License. You may obtain a copy
of
-;;; the License at
-;;;
-;;; http://www.apache.org/licenses/LICENSE-2.0
-;;;
-;;; Unless required by applicable law or agreed to in writing, software
-;;; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-;;; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-;;; License for the specific language governing permissions and limitations
under
-;;; the License.
+;;; dockerfile-mode.el --- Major mode for editing Docker's Dockerfiles
+
+;; Copyright (c) 2013 Spotify AB
+;;
+;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
+;; use this file except in compliance with the License. You may obtain a copy
of
+;; the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+;; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+;; License for the specific language governing permissions and limitations
under
+;; the License.
+
+;;; Code:
(require 'sh-script)
+(require 'rx)
(defvar docker-image-name nil)
@@ -30,38 +35,41 @@
(defcustom dockerfile-use-sudo nil
"Runs docker builder command with sudo.")
-(defvar dockerfile-mode-syntax-table nil
- "Syntax table used while in `dockerfile-mode'.")
-(setq dockerfile-mode-syntax-table (make-syntax-table))
-(modify-syntax-entry ?\# "<" dockerfile-mode-syntax-table)
-(modify-syntax-entry ?\n ">" dockerfile-mode-syntax-table)
-
(defvar dockerfile-font-lock-keywords
- `(
- ("#.*$" . font-lock-comment-face)
-
("^\\([Ff][Rr][Oo][Mm]\\|[mM][aA][iI][nN][tT][aA][iI][nN][eE][rR]\\|[rR][uU][nN]\\|[eE][nN][vV]\\|[cC][mM][dD]\\|[eE][xX][pP][oO][sS][eE]\\|[iI][nN][sS][eE][rR][tT]\\|[cC][oO][pP][yY]\\|[eE][nN][tT][rR][yY][pP][oO][iI][nN][tT]\\|[vV][oO][lL][uU][mM][eE]\\|[aA][dD][dD]\\)\\b"
. font-lock-keyword-face)
+ `(,(cons (rx line-start
+ (group (or "from" "maintainer" "run" "env" "cmd"
+ "expose" "insert" "copy" "entrypoint"
+ "volume" "add"))
+ word-boundary)
+ font-lock-keyword-face)
,@(sh-font-lock-keywords)
,@(sh-font-lock-keywords-2)
- ,@(sh-font-lock-keywords-1)
- )
+ ,@(sh-font-lock-keywords-1))
"Default font-lock-keywords for `dockerfile mode'.")
(defvar dockerfile-mode-map
(let ((map (make-sparse-keymap))
- (menu-map (make-sparse-keymap)))
+ (menu-map (make-sparse-keymap)))
(define-key map "\C-c\C-b" 'dockerfile-build-buffer)
(define-key map "\C-c\C-z" 'dockerfile-test-function)
(define-key map "\C-c\C-c" 'comment-region)
(define-key map [menu-bar dockerfile-mode] (cons "Dockerfile" menu-map))
(define-key menu-map [dfc]
'(menu-item "Comment Region" comment-region
- :help "Comment Region"))
+ :help "Comment Region"))
(define-key menu-map [dfb]
'(menu-item "Build" dockerfile-build-buffer
- :help "Send the Dockerfile to docker build"))
+ :help "Send the Dockerfile to docker build"))
map))
-(defvar dockerfile-mode-abbrev-table nil
+(defvar dockerfile-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ (modify-syntax-entry ?# "<" table)
+ (modify-syntax-entry ?\n ">" table)
+ table)
+ "Syntax table for `dockerfile-mode'.")
+
+(define-abbrev-table 'dockerfile-mode-abbrev-table nil
"Abbrev table used while in `dockerfile-mode'.")
(unless dockerfile-mode-abbrev-table
@@ -80,27 +88,27 @@
"*docker-build-output*")
(print "docker-image-name must be a string, consider surrounding it with
double quotes")))
+;; Handle emacs < 24, which does not have prog-mode
+(defalias 'dockerfile-parent-mode
+ (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode))
+
;;;###autoload
-(defun dockerfile-mode ()
+(define-derived-mode dockerfile-mode dockerfile-parent-mode "Dockerfile"
"A major mode to edit Dockerfiles.
\\{dockerfile-mode-map}
"
- (interactive)
- (kill-all-local-variables)
- (use-local-map dockerfile-mode-map)
-
- (make-local-variable 'comment-start)
- (setq comment-start "#")
- (make-local-variable 'parse-sexp-ignore-comments)
- (setq parse-sexp-ignore-comments t)
- (setq local-abbrev-table dockerfile-mode-abbrev-table)
-
- (make-local-variable 'font-lock-defaults)
- (setq major-mode 'dockerfile-mode
- mode-name "dockerfile"
- font-lock-defaults '(dockerfile-font-lock-keywords nil))
(set-syntax-table dockerfile-mode-syntax-table)
- (run-mode-hooks 'dockerfile-mode-hook))
+ (set (make-local-variable 'require-final-newline) t)
+ (set (make-local-variable 'comment-start) "#")
+ (set (make-local-variable 'comment-end) "")
+ (set (make-local-variable 'comment-start-skip) "#+ *")
+ (set (make-local-variable 'parse-sexp-ignore-comments) t)
+ (set (make-local-variable 'font-lock-defaults)
+ '(dockerfile-font-lock-keywords nil t))
+ (setq local-abbrev-table dockerfile-mode-abbrev-table))
+
+(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))
(provide 'dockerfile-mode)
+;;; dockerfile-mode.el ends here
- [nongnu] elpa/dockerfile-mode 9f4381178a 079/104: Adds a very simple indent-line-function for Dockerfiles., (continued)
- [nongnu] elpa/dockerfile-mode 9f4381178a 079/104: Adds a very simple indent-line-function for Dockerfiles., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 24a5a6cee6 083/104: Allow builds without tag/image name, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode a4f8aad581 091/104: FIX: make emacs lisp variable name consistent in README.md, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode b01f2ecdb6 094/104: Merge branch 'ncaq-add-dockerfile-indent-offset', ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 652c2e0ba0 084/104: Remove logic for checking if there is an image-name provided, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 533d5d4983 096/104: Tighten auto-mode-alist pattern some more, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode fd8057e438 098/104: Fix elisp byte-compiler warning, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 3b1374563f 100/104: Add support for TRAMP file names, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 37ef4643fc 001/104: Added essentials, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 3f460b6de0 003/104: Error check docker-image-name and give helpful error message, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 2e2f7231fc 008/104: Various fixes and improvements,
ELPA Syncer <=
- [nongnu] elpa/dockerfile-mode 472c405828 018/104: Merge pull request #8 from mgalgs/prompt-space, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 4e6a0f62c0 021/104: Use format instead of concat, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode fadac401c8 019/104: added note about emacs compatibility, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 4d3ccfd569 024/104: Merge pull request #9 from Silex/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode cfa634ff1d 032/104: Merge pull request #18 from nabeo/add_dockerfile-build-no-cache-buffer, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 40be396417 036/104: Merge pull request #20 from djui/patch-1, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 53434afa3b 042/104: Merge pull request #23 from nabeo/add_stopsignal_to_font_lock_keywaords, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 5dad943a19 053/104: Fix overly-general auto-mode-alist entry, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode ca679539c4 054/104: Fix naming of unprefixed symbol, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 5c60ad7a78 056/104: Rename image name variable, and read it consistently, ELPA Syncer, 2022/01/29