diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/prettier-js-20180109.726/prettier-js.el')
-rw-r--r-- | configs/shared/emacs/.emacs.d/elpa/prettier-js-20180109.726/prettier-js.el | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/prettier-js-20180109.726/prettier-js.el b/configs/shared/emacs/.emacs.d/elpa/prettier-js-20180109.726/prettier-js.el deleted file mode 100644 index 1b74ee7de9ea..000000000000 --- a/configs/shared/emacs/.emacs.d/elpa/prettier-js-20180109.726/prettier-js.el +++ /dev/null @@ -1,214 +0,0 @@ -;;; prettier-js.el --- Minor mode to format JS code on file save - -;; Version: 0.1.0 -;; Package-Version: 20180109.726 - -;; Copyright (c) 2014 The go-mode Authors. All rights reserved. -;; Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved. - -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are -;; met: - -;; * Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; * Redistributions in binary form must reproduce the above -;; copyright notice, this list of conditions and the following disclaimer -;; in the documentation and/or other materials provided with the -;; distribution. -;; * Neither the name of the copyright holder nor the names of its -;; contributors may be used to endorse or promote products derived from -;; this software without specific prior written permission. - -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.) - -;; Author: James Long and contributors -;; Created: 10 January 2017 -;; Url: https://github.com/prettier/prettier-emacs -;; Keywords: convenience wp edit js - -;; This file is not part of GNU Emacs. - -;;; Commentary: -;; Formats your JavaScript code using 'prettier' on file save. - -;;; Code: - -(defgroup prettier-js nil - "Minor mode to format JS code on file save" - :group 'languages - :prefix "prettier-js" - :link '(url-link :tag "Repository" "https://github.com/prettier/prettier")) - -(defcustom prettier-js-command "prettier" - "The 'prettier' command." - :type 'string - :group 'prettier-js) - -(defcustom prettier-js-args '() - "List of args to send to prettier command." - :type '(repeat string) - :group 'prettier-js) - -(defcustom prettier-js-show-errors 'buffer - "Where to display prettier error output. -It can either be displayed in its own buffer, in the echo area, or not at all. -Please note that Emacs outputs to the echo area when writing -files and will overwrite prettier's echo output if used from inside -a `before-save-hook'." - :type '(choice - (const :tag "Own buffer" buffer) - (const :tag "Echo area" echo) - (const :tag "None" nil)) - :group 'prettier-js) - -(defcustom prettier-js-width-mode nil - "Specify width when formatting buffer contents." - :type '(choice - (const :tag "Window width" window) - (const :tag "Fill column" fill) - (const :tag "None" nil)) - :group 'prettier-js) - -(defun prettier-js--goto-line (line) - "Move cursor to line LINE." - (goto-char (point-min)) - (forward-line (1- line))) - -(defun prettier-js--apply-rcs-patch (patch-buffer) - "Apply an RCS-formatted diff from PATCH-BUFFER to the current buffer." - (let ((target-buffer (current-buffer)) - ;; Relative offset between buffer line numbers and line numbers - ;; in patch. - ;; - ;; Line numbers in the patch are based on the source file, so - ;; we have to keep an offset when making changes to the - ;; buffer. - ;; - ;; Appending lines decrements the offset (possibly making it - ;; negative), deleting lines increments it. This order - ;; simplifies the forward-line invocations. - (line-offset 0)) - (save-excursion - (with-current-buffer patch-buffer - (goto-char (point-min)) - (while (not (eobp)) - (unless (looking-at "^\\([ad]\\)\\([0-9]+\\) \\([0-9]+\\)") - (error "Invalid rcs patch or internal error in prettier-js--apply-rcs-patch")) - (forward-line) - (let ((action (match-string 1)) - (from (string-to-number (match-string 2))) - (len (string-to-number (match-string 3)))) - (cond - ((equal action "a") - (let ((start (point))) - (forward-line len) - (let ((text (buffer-substring start (point)))) - (with-current-buffer target-buffer - (setq line-offset (- line-offset len)) - (goto-char (point-min)) - (forward-line (- from len line-offset)) - (insert text))))) - ((equal action "d") - (with-current-buffer target-buffer - (prettier-js--goto-line (- from line-offset)) - (setq line-offset (+ line-offset len)) - (let ((beg (point))) - (forward-line len) - (delete-region (point) beg)))) - (t - (error "Invalid rcs patch or internal error in prettier-js--apply-rcs-patch"))))))))) - -(defun prettier-js--process-errors (filename errorfile errbuf) - "Process errors for FILENAME, using an ERRORFILE and display the output in ERRBUF." - (with-current-buffer errbuf - (if (eq prettier-js-show-errors 'echo) - (progn - (message "%s" (buffer-string)) - (prettier-js--kill-error-buffer errbuf)) - (insert-file-contents errorfile nil nil nil) - ;; Convert the prettier stderr to something understood by the compilation mode. - (goto-char (point-min)) - (insert "prettier errors:\n") - (while (search-forward-regexp "^stdin" nil t) - (replace-match (file-name-nondirectory filename))) - (compilation-mode) - (display-buffer errbuf)))) - -(defun prettier-js--kill-error-buffer (errbuf) - "Kill buffer ERRBUF." - (let ((win (get-buffer-window errbuf))) - (if win - (quit-window t win) - (with-current-buffer errbuf - (erase-buffer)) - (kill-buffer errbuf)))) - -(defun prettier-js () - "Format the current buffer according to the prettier tool." - (interactive) - (let* ((ext (file-name-extension buffer-file-name t)) - (bufferfile (make-temp-file "prettier" nil ext)) - (outputfile (make-temp-file "prettier" nil ext)) - (errorfile (make-temp-file "prettier" nil ext)) - (errbuf (if prettier-js-show-errors (get-buffer-create "*prettier errors*"))) - (patchbuf (get-buffer-create "*prettier patch*")) - (coding-system-for-read 'utf-8) - (coding-system-for-write 'utf-8) - (width-args - (cond - ((equal prettier-js-width-mode 'window) - (list "--print-width" (number-to-string (window-body-width)))) - ((equal prettier-js-width-mode 'fill) - (list "--print-width" (number-to-string fill-column))) - (t - '())))) - (unwind-protect - (save-restriction - (widen) - (write-region nil nil bufferfile) - (if errbuf - (with-current-buffer errbuf - (setq buffer-read-only nil) - (erase-buffer))) - (with-current-buffer patchbuf - (erase-buffer)) - (if (zerop (apply 'call-process - prettier-js-command bufferfile (list (list :file outputfile) errorfile) - nil (append prettier-js-args width-args (list "--stdin" "--stdin-filepath" buffer-file-name)))) - (progn - (call-process-region (point-min) (point-max) "diff" nil patchbuf nil "-n" "--strip-trailing-cr" "-" - outputfile) - (prettier-js--apply-rcs-patch patchbuf) - (message "Applied prettier with args `%s'" prettier-js-args) - (if errbuf (prettier-js--kill-error-buffer errbuf))) - (message "Could not apply prettier") - (if errbuf - (prettier-js--process-errors (buffer-file-name) errorfile errbuf)) - )) - (kill-buffer patchbuf) - (delete-file errorfile) - (delete-file bufferfile) - (delete-file outputfile)))) - -;;;###autoload -(define-minor-mode prettier-js-mode - "Runs prettier on file save when this mode is turned on" - :lighter " Prettier" - :global nil - (if prettier-js-mode - (add-hook 'before-save-hook 'prettier-js nil 'local) - (remove-hook 'before-save-hook 'prettier-js 'local))) - -(provide 'prettier-js) -;;; prettier-js.el ends here |