|
|
- ;;; nix-format.el --- Nix formatter -*- lexical-binding: t -*-
-
- ;; This file is NOT part of GNU Emacs.
-
- ;; Version: 1.4.0
-
- ;;; Commentary:
-
- ;;; Code:
-
- (defcustom nix-nixfmt-bin "nixfmt"
- "Path to nixfmt executable."
- :group 'nix
- :type 'string)
-
- (defun nix--format-call (buf)
- "Format BUF using nixfmt."
- (with-current-buffer (get-buffer-create "*nixfmt*")
- (erase-buffer)
- (insert-buffer-substring buf)
- (if (zerop (call-process-region (point-min) (point-max) nix-nixfmt-bin t t nil))
- (progn
- (if (not (string= (buffer-string) (with-current-buffer buf (buffer-string))))
- (copy-to-buffer buf (point-min) (point-max)))
- (kill-buffer))
- (error "Nixfmt failed, see *nixfmt* buffer for details"))))
-
- (defun nix-format-buffer ()
- "Format the current buffer using nixfmt."
- (interactive)
- (unless (executable-find nix-nixfmt-bin)
- (error "Could not locate executable \"%s\"" nix-nixfmt-bin))
- (nix--format-call (current-buffer))
- (message "Formatted buffer with nixfmt."))
-
- (provide 'nix-format)
- ;;; nix-format.el ends here
|