diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-flycheck.el')
-rw-r--r-- | configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-flycheck.el | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-flycheck.el b/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-flycheck.el deleted file mode 100644 index d6397d074026..000000000000 --- a/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-flycheck.el +++ /dev/null @@ -1,235 +0,0 @@ -;;; lsp-ui-flycheck.el --- Flycheck support for lsp-mode -*- lexical-binding: t; -*- - -;; Copyright (C) 2017 fmdkdd -;; URL: https://github.com/emacs-lsp/lsp-ui -;; Keywords: lsp, ui - -;; This program is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <http://www.gnu.org/licenses/>. - -;;; Commentary: - -;; Flycheck integration for lsp-mode. To enable, put this in your config: -;; (require 'lsp-ui-flycheck) -;; (with-eval-after-load 'lsp-mode -;; (add-hook 'lsp-after-open-hook (lambda () (lsp-ui-flycheck-enable 1)))) - -;;; Code: - -(require 'lsp-notifications) -(require 'lsp-mode) -(require 'flycheck) -(require 'pcase) -(require 'dash) - -(defgroup lsp-ui-flycheck nil - "The LSP extension to display syntax checking." - :group 'tools - :group 'convenience - :group 'lsp-ui - :link '(custom-manual "(lsp-ui-flycheck) Top") - :link '(info-link "(lsp-ui-flycheck) Customizing")) - -(defcustom lsp-ui-flycheck-enable t - "Whether or not to enable ‘lsp-ui-flycheck’." - :type 'boolean - :group 'lsp-ui) - -(defcustom lsp-ui-flycheck-live-reporting t - "If non-nil, diagnostics in buffer will be reported as soon as possible. -Typically, on every keystroke. -If nil, diagnostics will be reported according to `flycheck-check-syntax-automatically'." - :type 'boolean - :group 'lsp-ui-flycheck) - -(defcustom lsp-ui-flycheck-list-position 'bottom - "Position where `lsp-ui-flycheck-list' will show diagnostics for the whole workspace." - :type '(choice (const :tag "Bottom" bottom) - (const :tag "Right" right)) - :group 'lsp-ui-flycheck) - -(defvar-local lsp-ui-flycheck-list--buffer nil) - -(defun lsp-ui-flycheck-list--post-command () - (when (eobp) - (forward-line -1))) - -(defun lsp-ui-flycheck-list--update (window workspace) - (let ((buffer-read-only nil) - (lsp--cur-workspace workspace)) - (erase-buffer) - (remove-overlays) - (maphash (lambda (file diagnostic) - (when diagnostic - (overlay-put - (make-overlay (point) (point)) - 'after-string - (concat (propertize "\n" 'face '(:height 0.2)) - (propertize (lsp-ui--workspace-path file) - 'face 'dired-directory) - (propertize "\n" 'face '(:height 0.2))))) - (dolist (diag diagnostic) - (let* ((message (or (lsp-diagnostic-message diag) "???")) - (severity (or (lsp-diagnostic-severity diag) 1)) - (line (or (lsp-diagnostic-line diag) 1)) - (face (cond ((= severity 1) 'error) - ((= severity 2) 'warning) - (t 'success))) - (text (concat (propertize (number-to-string line) 'face face) - ": " - (car (split-string message "\n"))))) - (add-text-properties 0 (length text) `(diag ,diag file ,file window ,window) text) - (insert (concat text "\n"))))) - lsp--diagnostics)) - (if (= (point) 1) - (overlay-put (make-overlay 1 1) - 'after-string "No diagnostic available\n") - (goto-char 1)) - (lsp-ui-flycheck-list-mode)) - -(defun lsp-ui-flycheck-list () - "List all the diagnostics in the whole workspace." - (interactive) - (let ((buffer (get-buffer-create "*lsp-diagnostics*")) - (workspace lsp--cur-workspace) - (window (selected-window))) - (with-current-buffer buffer - (lsp-ui-flycheck-list--update window workspace)) - (add-hook 'lsp-after-diagnostics-hook 'lsp-ui-flycheck-list--refresh nil t) - (setq lsp-ui-flycheck-list--buffer buffer) - (let ((win (display-buffer-in-side-window - buffer `((side . ,lsp-ui-flycheck-list-position) (slot . 5) (window-width . 0.20))))) - (set-window-dedicated-p win t) - (select-window win) - (fit-window-to-buffer nil nil 10)))) - -(defun lsp-ui-flycheck-list--refresh () - (let ((workspace lsp--cur-workspace) - (current-window (selected-window))) - (when (and (buffer-live-p lsp-ui-flycheck-list--buffer) - (get-buffer-window lsp-ui-flycheck-list--buffer) - workspace) - (with-selected-window (get-buffer-window lsp-ui-flycheck-list--buffer) - (lsp-ui-flycheck-list--update current-window workspace) - (fit-window-to-buffer nil nil 10))))) - -(defun lsp-ui-flycheck-list--open () - (-when-let* ((diag (get-text-property (point) 'diag)) - (file (get-text-property (point) 'file)) - (window (get-text-property (point) 'window)) - (line (lsp-diagnostic-line diag)) - (column (lsp-diagnostic-column diag)) - (marker (with-current-buffer - (or (get-file-buffer file) - (find-file-noselect file)) - (save-restriction - (widen) - (save-excursion - (goto-char 1) - (forward-line line) - (forward-char column) - (point-marker)))))) - (set-window-buffer window (marker-buffer marker) t) - (with-selected-window window - (goto-char marker) - (recenter) - (pulse-momentary-highlight-one-line (marker-position marker) 'next-error)) - window)) - -(defun lsp-ui-flycheck-list--view () - (interactive) - (lsp-ui-flycheck-list--open)) - -(defun lsp-ui-flycheck-list--visit () - (interactive) - (select-window (lsp-ui-flycheck-list--open))) - -(defun lsp-ui-flycheck-list--quit () - (interactive) - (kill-buffer)) - -(defvar lsp-ui-flycheck-list-mode-map nil - "Keymap for ‘lsp-ui-flycheck-list-mode’.") -(unless lsp-ui-flycheck-list-mode-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "q") 'lsp-ui-flycheck-list--quit) - (define-key map (kbd "<return>") 'lsp-ui-flycheck-list--view) - (define-key map (kbd "<M-return>") 'lsp-ui-flycheck-list--visit) - (setq lsp-ui-flycheck-list-mode-map map))) - -(define-derived-mode lsp-ui-flycheck-list-mode special-mode "lsp-ui-flycheck-list" - "Mode showing flycheck diagnostics for the whole workspace." - (setq truncate-lines t) - (setq mode-line-format nil) - (add-hook 'post-command-hook 'lsp-ui-flycheck-list--post-command nil t)) - -(defun lsp-ui-flycheck--start (checker callback) - "Start an LSP syntax check with CHECKER. - -CALLBACK is the status callback passed by Flycheck." - ;; Turn all errors from lsp--diagnostics for the current buffer into - ;; flycheck-error objects and pass them immediately to the callback - (let ((errors)) - (dolist (diag (or (gethash buffer-file-name lsp--diagnostics) - (gethash (file-truename buffer-file-name) lsp--diagnostics))) - (push (flycheck-error-new - :buffer (current-buffer) - :checker checker - :filename buffer-file-name - :line (1+ (lsp-diagnostic-line diag)) - :column (1+ (lsp-diagnostic-column diag)) - :message (lsp-diagnostic-message diag) - :level (pcase (lsp-diagnostic-severity diag) - (1 'error) - (2 'warning) - (_ 'info)) - :id (lsp-diagnostic-code diag)) - errors)) - (funcall callback 'finished errors))) - -(flycheck-define-generic-checker 'lsp-ui - "A syntax checker using the Language Server Protocol (RLS) -provided by lsp-mode. - -See https://github.com/emacs-lsp/lsp-mode." - :start #'lsp-ui-flycheck--start - :modes '(python-mode) ; Need a default mode - :predicate (lambda () lsp-mode) - :error-explainer (lambda (e) (flycheck-error-message e))) - -(defun lsp-ui-flycheck-add-mode (mode) - "Add MODE as a valid major mode for the lsp checker." - (unless (flycheck-checker-supports-major-mode-p 'lsp-ui mode) - (flycheck-add-mode 'lsp-ui mode))) - -(defun lsp-ui-flycheck--report nil - (and flycheck-mode - lsp-ui-flycheck-live-reporting - (flycheck-buffer))) - -;; FIXME: Provide a way to disable lsp-ui-flycheck -(defun lsp-ui-flycheck-enable (_) - "Enable flycheck integration for the current buffer." - (when lsp-ui-flycheck-live-reporting - (setq-local flycheck-check-syntax-automatically nil)) - (setq-local flycheck-checker 'lsp-ui) - (lsp-ui-flycheck-add-mode major-mode) - (add-to-list 'flycheck-checkers 'lsp-ui) - (add-hook 'lsp-after-diagnostics-hook 'lsp-ui-flycheck--report nil t)) - -;; lsp-ui.el loads lsp-ui-flycheck.el, so we can’t ‘require’ lsp-ui. -;; FIXME: Remove this cyclic dependency. -(declare-function lsp-ui--workspace-path "lsp-ui" (path)) - -(provide 'lsp-ui-flycheck) -;;; lsp-ui-flycheck.el ends here |