[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dockerfile-mode 1fd094a409 009/104: Merge pull request #2
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dockerfile-mode 1fd094a409 009/104: Merge pull request #2 from purcell/patch-1 |
Date: |
Sat, 29 Jan 2022 07:58:16 -0500 (EST) |
branch: elpa/dockerfile-mode
commit 1fd094a409fc04a729c16223dd12a2c99102336a
Merge: c462ba8650 2e2f7231fc
Author: Drew Csillag <drew@thecsillags.com>
Commit: Drew Csillag <drew@thecsillags.com>
Merge pull request #2 from purcell/patch-1
Various fixes and improvements
---
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 35d10860d9 039/104: Fix inability to build images on Windows., (continued)
- [nongnu] elpa/dockerfile-mode 35d10860d9 039/104: Fix inability to build images on Windows., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 98434943c3 005/104: Adjust auto-mode regexp in README., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 1015f3818d 016/104: Added copy and onbuild commands, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode a532e30371 023/104: Use syntax highlighting in README, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 6a64806b78 029/104: now treats single quotes like double quotes, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 34a0a5d082 030/104: Merge branch 'master' of github.com:spotify/dockerfile-mode, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 26239c3b95 043/104: Resolve spotify/#24, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode fdebd1eda5 044/104: Pass --build-args to docker build, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode c462ba8650 007/104: Merge pull request #1 from thomasf/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 730b2dbd84 010/104: Update Dockerfile keywords to match docker 0.7.6, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 1fd094a409 009/104: Merge pull request #2 from purcell/patch-1,
ELPA Syncer <=
- [nongnu] elpa/dockerfile-mode 8f74b941d2 035/104: Add support for ARG command, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 93d6013437 046/104: Resolve spotify/#24, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode fd1cf02f06 040/104: Merge pull request #22 from jaccarmac/fix-windows-build, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 8273401efa 045/104: Merge pull request #26 from rcj/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode a464ee6e91 047/104: Merge branch 'master' of github.com:davidshen84/dockerfile-mode, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 5f1e17e4e5 050/104: Merge pull request #27 from ju2wheels/feature/add_missing_keywords, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode a690935648 055/104: Make no attempt to support antiquated Emacsen < 24, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 40d83ba7c6 058/104: Include image name in build output buffer name, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode fd7bba9f4a 059/104: default-directory is the easier way to get the working directory, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 39f35d927f 063/104: Prefer compilation-mode to async-shell-command, ELPA Syncer, 2022/01/29