Files
creature/lisp/init-prettier.el
zedhugh b5d9ce18a7 use "creature/pkg-active" manage packages manually
- replace "add-pkg-in-pkg-dir" (recursive load-path scanning) with a
  central "creature/pkgs" registry that handles load path, autoloads,
  info dirs and dependencies
- adapt all init-*.el files to the new activation function
- add a top-level Makefile to byte-compile site-lisp packages
- remove unused "emacs-kv" and "emacs-db" submodules
2026-09-14 15:02:43 +08:00

49 lines
1.4 KiB
EmacsLisp

;; -*- coding: utf-8; lexical-binding: t; -*-
(require 'init-package)
(creature/pkg-active 'prettier)
(require 'init-editorconfig)
(autoload 'prettier-mode "prettier" "" t)
(defvar-local creature/formatter nil
"Formatter for buffer.")
(defun creature/prettier-setup ()
"Enable `prettier-mode' selectively."
(when (and prettier-mode
(or (not prettier-version) (prettier--in-node-modules-p)))
(prettier-mode -1)))
(defun creature/prettier-json-parser ()
(if (and buffer-file-name
(seq-contains
'("package.json" "package-lock.json" "composer.json")
(file-name-nondirectory buffer-file-name)))
'(json-stringify json json5)
'(json json5 json-stringify)))
(defun creature/prettier-set-formatter ()
(setq creature/formatter
(if (bound-and-true-p prettier-mode)
'creature/indent-region-or-buffer
nil)))
(with-eval-after-load 'prettier
(add-hook 'prettier-mode-hook #'creature/prettier-setup)
(add-hook 'prettier-mode-hook #'creature/prettier-set-formatter)
(add-to-list 'prettier-major-mode-parsers
'(js-json-mode . creature/prettier-json-parser)))
(dolist (hook '(css-mode-hook
js-base-mode-hook
json-ts-mode-hook
prisma-ts-mode-hook
typescript-mode-hook
typescript-ts-base-mode-hook))
(add-hook hook #'prettier-mode))
(provide 'init-prettier)