about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el47
1 files changed, 47 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el b/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el
new file mode 100644
index 000000000000..08cc1629dd74
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-shebang.el
@@ -0,0 +1,47 @@
+;;; nix-shebang.el --- Handle nix shebang header -*- lexical-binding: t -*-
+
+;; Author: Matthew Bauer <mjbauer95@gmail.com>
+;; Homepage: https://github.com/NixOS/nix-mode
+;; Version: 1.2.1
+;; Keywords: nix, languages, tools, unix
+;; Package-Requires: ((emacs "24.3"))
+
+;; This file is NOT part of GNU Emacs.
+
+;;; Commentary:
+
+;; This detects file headers that look like:
+;; #!/usr/bin/env nix-shell
+;; #!nix-shell -i bash
+
+;; and correctly detects their file modes.
+
+;;; Code:
+
+(require 'files)
+
+(defvar nix-shebang-interpreter-regexp "#!\s*nix-shell -i \\([^ \t\n]+\\)"
+  "Regexp for nix-shell -i header.")
+
+(defun nix-shebang-get-interpreter ()
+  "Get interpreter string from nix-shell -i file."
+  (save-excursion
+    (goto-char (point-min))
+    (forward-line 1)
+    (when (looking-at nix-shebang-interpreter-regexp)
+      (match-string 1))))
+
+(defun nix-shebang-mode ()
+  "Detect and run file’s interpreter mode."
+  (let ((mode (nix-shebang-get-interpreter)))
+    (when mode
+      (funcall (assoc-default mode
+                              (mapcar (lambda (e)
+                                        (cons
+                                         (format "\\`%s\\'" (car e))
+                                         (cdr e)))
+                                      interpreter-mode-alist)
+                              #'string-match-p)))))
+
+(provide 'nix-shebang)
+;;; nix-shebang.el ends here