diff options
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.el | 47 |
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 |