[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dockerfile-mode 4ebf274d49 078/104: Add imenu support
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dockerfile-mode 4ebf274d49 078/104: Add imenu support |
Date: |
Sat, 29 Jan 2022 07:58:36 -0500 (EST) |
branch: elpa/dockerfile-mode
commit 4ebf274d490d12aa343f25dc7e9c9f1d54babdc7
Author: Matus Goljer <matus.goljer@gmail.com>
Commit: Drew Csillag <drew@thecsillags.com>
Add imenu support
---
dockerfile-mode.el | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/dockerfile-mode.el b/dockerfile-mode.el
index 9c9933a8b2..d55fe7b73b 100644
--- a/dockerfile-mode.el
+++ b/dockerfile-mode.el
@@ -63,6 +63,9 @@ Each element of the list will be passed as a separate
'((t (:inherit (font-lock-constant-face bold))))
"Face to highlight the base image alias inf FROM ... AS <alias> construct.")
+(defconst dockerfile--from-regex
+ (rx "from " (group (+? nonl)) (or " " eol) (? "as " (group (1+ nonl)))))
+
(defvar dockerfile-font-lock-keywords
`(,(cons (rx (or line-start "onbuild ")
(group (or "from" "maintainer" "run" "cmd" "expose" "env" "arg"
@@ -70,7 +73,7 @@ Each element of the list will be passed as a separate
"label" "stopsignal" "shell" "healthcheck"))
word-boundary)
font-lock-keyword-face)
- (,(rx "FROM " (group (+? nonl)) (or " " eol) (? "as " (group (1+ nonl))))
+ (,dockerfile--from-regex
(1 'dockerfile-image-name)
(2 'dockerfile-image-alias nil t))
,@(sh-font-lock-keywords)
@@ -164,12 +167,28 @@ If prefix arg NO-CACHE is set, don't cache the image."
(interactive (list (dockerfile-read-image-name)))
(dockerfile-build-buffer image-name t))
+(defun dockerfile--imenu-function ()
+ "Find the previous headline from point.
+
+Search for a FROM instruction. If an alias is used this is
+returned, otherwise the base image name is used."
+ (when (re-search-backward dockerfile--from-regex nil t)
+ (let ((data (match-data)))
+ (when (match-string 2)
+ ;; we drop the first match group because
+ ;; imenu-generic-expression can only use one offset, so we
+ ;; normalize to `1'.
+ (set-match-data (list (nth 0 data) (nth 1 data) (nth 4 data) (nth 5
data))))
+ t)))
+
;;;###autoload
(define-derived-mode dockerfile-mode prog-mode "Dockerfile"
"A major mode to edit Dockerfiles.
\\{dockerfile-mode-map}
"
(set-syntax-table dockerfile-mode-syntax-table)
+ (set (make-local-variable 'imenu-generic-expression)
+ `(("Stage" dockerfile--imenu-function 1)))
(set (make-local-variable 'require-final-newline) mode-require-final-newline)
(set (make-local-variable 'comment-start) "#")
(set (make-local-variable 'comment-end) "")
- [nongnu] elpa/dockerfile-mode cfa634ff1d 032/104: Merge pull request #18 from nabeo/add_dockerfile-build-no-cache-buffer, (continued)
- [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
- [nongnu] elpa/dockerfile-mode b53020b781 065/104: Add custom `dockerfile-use-sudo` type and group, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 52f821c9cd 061/104: Add missing package dependency on "s", ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 69bfba7acc 064/104: Merge pull request #31 from purcell/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 8172d83d5d 076/104: Merge pull request #40 from abloomston/safe-local-variable, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 4ebf274d49 078/104: Add imenu support,
ELPA Syncer <=
- [nongnu] elpa/dockerfile-mode 7223d92718 081/104: Support indentation for comments, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 780e6f51ca 085/104: Add doc string for the format of the docker build command., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode d31f7685eb 086/104: Remove keybinding to #'dockerfile-test-function, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 6a56c1cc17 089/104: Remove dependency on s.el, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 27a9f4d2f3 092/104: Added the option to use docker buildkit, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 83bc055f5b 103/104: Readme: Replace obsolete variable name with current, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode ad06a41259 101/104: Remove unnecessary declaration of dockerfile-mode-hook, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 628315e2e4 102/104: Added version and URL header, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode e6d5598bf0 068/104: Add adequate spacing to documentation, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode ed73e82dcc 082/104: Added support to bin to different binary than path binary, ELPA Syncer, 2022/01/29