[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/nix-mode cc60a0d027 417/500: Make nix-drv-mode a derived-m
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/nix-mode cc60a0d027 417/500: Make nix-drv-mode a derived-mode of javascript-mode |
Date: |
Sat, 29 Jan 2022 08:27:51 -0500 (EST) |
branch: elpa/nix-mode
commit cc60a0d027c17f0ae659e28eb6f070935e792e4d
Author: Matthew Bauer <mjbauer95@gmail.com>
Commit: Matthew Bauer <mjbauer95@gmail.com>
Make nix-drv-mode a derived-mode of javascript-mode
This makes nix-drv-mode derived from javascript-mode. Cleanup is done
on change major mode. Cleanup can also be done manually via
nix-drv-mode-dejsonify-buffer.
---
nix-drv-mode.el | 47 +++++++++++++++++++++++++----------------------
1 file changed, 25 insertions(+), 22 deletions(-)
diff --git a/nix-drv-mode.el b/nix-drv-mode.el
index c9b253be6b..480f19c939 100644
--- a/nix-drv-mode.el
+++ b/nix-drv-mode.el
@@ -19,30 +19,33 @@
(require 'javascript-mode)
(require 'nix)
-(defvar-local nix-drv-mode nil)
-
;;;###autoload
-(defun nix-drv-mode ()
+(define-derived-mode nix-drv-mode javascript-mode "Nix-Derivation"
"Pretty print Nix’s .drv files."
- (interactive)
- (when (string-match (format "^%s/" nix-store-dir) (buffer-file-name))
- (if nix-drv-mode
- (progn
- (erase-buffer)
- (insert-file-contents (buffer-file-name))
- (setq nix-drv-mode nil)
- (set-buffer-modified-p nil)
- (read-only-mode nil))
- (let ((inhibit-read-only t))
- (setq nix-drv-mode t)
- (erase-buffer)
- (insert (shell-command-to-string
- (format "%s show-derivation \"%s\""
- nix-executable
- (buffer-file-name))))
- (javascript-mode)
- (set-buffer-modified-p nil)
- (read-only-mode 1)))))
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert (shell-command-to-string
+ (format "%s show-derivation \"%s\""
+ nix-executable
+ (buffer-file-name))))
+ (set-buffer-modified-p nil)
+ (read-only-mode 1))
+
+ (add-hook 'change-major-mode-hook #'nix-drv-mode-dejsonify-buffer nil t))
+
+(defun nix-drv-mode-dejsonify-buffer ()
+ "Restore nix-drv-mode when switching to another mode."
+
+ (remove-hook 'change-major-mode-hook #'nix-drv-mode-dejsonify-buffer t)
+
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert-file-contents (buffer-file-name))
+ (set-buffer-modified-p nil)
+ (read-only-mode nil)))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.drv\\'" . nix-drv-mode))
(provide 'nix-drv-mode)
;;; nix-drv-mode.el ends here
- [nongnu] elpa/nix-mode 9362a70d0b 468/500: nix-flake: Organize the library into outlines, (continued)
- [nongnu] elpa/nix-mode 9362a70d0b 468/500: nix-flake: Organize the library into outlines, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 241cc0881e 466/500: nix-flake.el: Init nix-flake command, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode dd0d1c0d0b 467/500: nix-flake: WIP: nix-flake-init, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode acf4fd09db 470/500: nix-flake: Add customization options, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7346057087 471/500: nix-flake: Show aliases in the registry as well, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode de85646434 486/500: Add dependabot.yml, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 186698599c 480/500: nix-flake: Set a prompt string, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 6712a66321 381/500: Fix yaml, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 1c42c634bf 379/500: Allow missing git repo, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 38958e5203 413/500: Update install-nix-action in GitHub Action, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode cc60a0d027 417/500: Make nix-drv-mode a derived-mode of javascript-mode,
ELPA Syncer <=
- [nongnu] elpa/nix-mode 0de9c70c89 429/500: Split up `nix-search` into two separate functions, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode e8e5211f6e 426/500: Merge pull request #122 from leungbk/def-obsol, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 98426b94e5 280/500: Add function to indent things in blocks for nix-indent-line, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 71fda1db41 373/500: add README section for nix-prettify-mode (#100), ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode fc68739bec 011/500: Fix syntax error, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode cb392d45b6 030/500: tweak indentation, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode ade1d49841 128/500: Fixup indentation logic., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 414a40fe54 131/500: Add hydra mode (#25), ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode f7fa332705 155/500: Add nix-shell custom group, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 6573b1d70e 145/500: Add nix-shell.el, ELPA Syncer, 2022/01/29