6

Am about to give up on getting this package working have tried the following options:

  1. From the prettier docs, installed the package from melpa and added the following to init.el:

    (require 'prettier-js) (add-hook 'js2-mode-hook 'prettier-js-mode)

    Running M-x prettier-js results in the error: Searching for program: No such file or directory, prettier

  2. Tried the use-package configuration from the answer: activate prettier-js-mode after every save

    Running M-q results in the error: Autoloading failed to define function prettier and using M-x prettier-js again results in Searching for program: No such file or directory, prettier.

Really not sure what the problem is here, the package is downloaded and present in my elpa directory. Any help is greatly appreciated.

Bauhaus
  • 161
  • 5
  • What OS are you using, how did you installed prettier and what is the path to it's executable (execute `which prettier` in your shell to get it)? – Oles Savluk Sep 29 '17 at 17:35

2 Answers2

3

Using use-package you can ensure it'll be available to your emacs. Here is my snippet:

(use-package prettier-js
  :after js2-mode
  :init
  (add-hook 'js2-mode-hook 'prettier-js-mode)
  (add-hook 'web-mode-hook 'prettier-js-mode)
  :config
  (setq prettier-js-args '("--trailing-comma" "all"
                           "--bracket-spacing" "false"))

  (defun enable-minor-mode (my-pair)
    "Enable minor mode if filename match the regexp.  MY-PAIR is a cons cell (regexp . minor-mode)."
    (if (buffer-file-name)
        (if (string-match (car my-pair) buffer-file-name)
            (funcall (cdr my-pair)))))
  (add-hook 'web-mode-hook #'(lambda ()
                               (enable-minor-mode
                                '("\\.jsx?\\'" . prettier-js-mode)))))
Drew
  • 75,699
  • 9
  • 109
  • 225
Shahin
  • 131
  • 3
1

You need to have the program prettier installed on your system. See git repo here.

After you have done this, use following code in your init.el:

(require 'prettier-js)
(add-hook 'js2-mode-hook 'prettier-js-mode)
(add-hook 'web-mode-hook 'prettier-js-mode)

Only if that is working you can think about replacing the above lines with a use-package definition.

jue
  • 4,476
  • 8
  • 20
  • 1
    Doing that and trying to run ```M-x prettier-js``` from either web-mode or js2-mode results in the error ```Searching for program: No such file or directory, prettier``` – Bauhaus Jul 15 '17 at 04:42
  • 1
    of course the installed program `prettier` needs to be installed in system PATH. So it could be found and called by emacs. You do not write which operating system you use, so it is hard to tell what you should do about this. – jue Jul 17 '17 at 09:02