tvl-depot/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180822.214/nix-format.el
William Carroll 17ee0e400b Support Vim, Tmux, Emacs with Stow
After moving off of Meta, Dotfiles has a greater responsibility to
manage configs. Vim, Tmux, and Emacs are now within Stow's purview.
2018-09-10 14:53:23 -04:00

35 lines
1 KiB
EmacsLisp

;;; nix-format.el --- Nix formatter -*- lexical-binding: t -*-
;; This file is NOT part of GNU Emacs.
;;; 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