;;; oni-lsp.el --- LSP configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2022.0228.013647 ;; Package-Requires: (lsp-mode lsp-ui lsp-ivy) ;; 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 . ;;; Commentary: ;; Configuration for `lsp-mode' and friends. Add the following to your init file ;; in case you want to use this configuration: ;; ;; (with-eval-after-load 'lsp-mode (require 'oni-lsp)) ;;; Code: (require 'lsp) (require 'lsp-ivy) (require 'lsp-ui) (defun oni-lsp-show-doc () "Show documentation string in a help buffer." (interactive) (let* ((position-params (lsp--text-document-position-params)) (response (lsp-request "textDocument/hover" position-params)) (contents (gethash "contents" response)) (help-string (lsp-ui-doc--extract contents)) (symbol (gethash "value" (pcase contents ((pred arrayp) (aref contents 0)) (_ contents))))) (with-help-window (help-buffer) (princ symbol) (princ "\n\n") (princ help-string)))) (setq lsp-ui-doc-enable nil) (setq lsp-ui-sideline-enable nil) (define-key lsp-mode-map (kbd "C-c s") 'lsp-ivy-workspace-symbol) (define-key lsp-mode-map (kbd "C-c S") 'lsp-ivy-global-workspace-symbol) (add-hook 'lsp-mode-hook 'lsp-lens-mode) (provide 'oni-lsp) ;;; oni-lsp.el ends here