[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dockerfile-mode 922845c229 002/104: Added dockerfile-mode.
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dockerfile-mode 922845c229 002/104: Added dockerfile-mode.el |
Date: |
Sat, 29 Jan 2022 07:58:15 -0500 (EST) |
branch: elpa/dockerfile-mode
commit 922845c22981fa11eadf59cb114a65954b6874b8
Author: Drew Csillag <drewc@spotify.com>
Commit: Drew Csillag <drewc@spotify.com>
Added dockerfile-mode.el
---
dockerfile-mode.el | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/dockerfile-mode.el b/dockerfile-mode.el
new file mode 100644
index 0000000000..1dc5460ce1
--- /dev/null
+++ b/dockerfile-mode.el
@@ -0,0 +1,101 @@
+;;; 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.
+
+(require 'sh-script)
+
+(defvar docker-image-name nil)
+
+(defgroup dockerfile nil
+ "dockerfile code editing commands for Emacs."
+ :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
+ :prefix "dockerfile-"
+ :group 'languages)
+
+(defcustom dockerfile-mode-hook nil
+ "*Hook called by `dockerfile-mode'."
+ :type 'hook
+ :group 'dockerfile)
+
+(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)
+
("\\b\\([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)
+ ,@(sh-font-lock-keywords)
+ ,@(sh-font-lock-keywords-2)
+ ,@(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)))
+ (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"))
+ (define-key menu-map [dfb]
+ '(menu-item "Build" dockerfile-build-buffer
+ :help "Send the Dockerfile to docker build"))
+ map))
+
+(defvar dockerfile-mode-abbrev-table nil
+ "Abbrev table used while in `dockerfile-mode'.")
+
+(unless dockerfile-mode-abbrev-table
+ (define-abbrev-table 'dockerfile-mode-abbrev-table ()))
+
+(defun dockerfile-build-buffer (image-name)
+ "Build an image based upon the buffer"
+ (interactive
+ (if (null docker-image-name)
+ (list (read-string "image-name:" nil nil))
+ (list docker-image-name)))
+ (save-buffer)
+ (shell-command
+ (concat "docker build -t " image-name " " (file-name-directory
(buffer-file-name)) "&")
+ "*docker-build-output*")
+ (switch-to-buffer "*docker-build-output*"))
+
+;;;###autoload
+(defun dockerfile-mode ()
+ "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))
+
+(provide 'dockerfile-mode)
- [nongnu] branch elpa/dockerfile-mode created (now 5db94549ce), ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 58179938b2 004/104: Only recognize Dockerfile keywords at beginning of the line, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 922845c229 002/104: Added dockerfile-mode.el,
ELPA Syncer <=
- [nongnu] elpa/dockerfile-mode 7f92c17b99 006/104: Option to use sudo when invoking docker builder, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 8771eb1d9a 022/104: Use async-shell-command instead of shell-command, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 6ed974d462 014/104: Autoload docker mode for Dockerfiles., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode d1e9754285 037/104: Fix build failure when path of Dockerfile contains spaces., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode e20c7e587a 025/104: Correctly set require-final-newline, ELPA Syncer, 2022/01/29
- [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