From ceadb0c77b94b41ab65b431b650d94d0d6a51a57 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 5 Jul 2019 09:03:41 +0100 Subject: [PATCH] lsp has been disabled by default --- config/fg42.user.el | 2 +- lib/extensions/development/init.el | 14 +++++++---- lib/extensions/python/init.el | 37 +++++++++++++++++++----------- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/config/fg42.user.el b/config/fg42.user.el index c0fdd0c..e259c2a 100644 --- a/config/fg42.user.el +++ b/config/fg42.user.el @@ -14,7 +14,7 @@ ;; ========= ;; Disable abilities which you don't want. (disable 'rbenv 'helm 'spell 'linum 'tabbar - 'smart-mode-line 'desktop-mode + 'smart-mode-line 'desktop-mode 'lsp 'dired+ 'guru 'emoji 'elpy 'github) diff --git a/lib/extensions/development/init.el b/lib/extensions/development/init.el index 056208d..cf9f636 100644 --- a/lib/extensions/development/init.el +++ b/lib/extensions/development/init.el @@ -49,10 +49,16 @@ "Replace some symbols with icons" (global-prettify-symbols-mode 1)) - (ability lsp - (require 'lsp-mode) - (add-hook 'prog-mode-hook #'lsp) - (setq lsp-prefer-flymake nil)) + + (ability lsp () + "LSP integration for FG42" + (require 'lsp-mode) + (require 'lsp-ui-imenu) + (add-hook 'lsp-after-open-hook 'lsp-enable-imenu) + (setq lsp-ui-sideline-ignore-duplicate t) + (setq lsp-prefer-flymake nil) + (add-hook 'lsp-mode-hook 'lsp-ui-mode)) + (ability bookmarks () (setq bm-restore-repository-on-load t) diff --git a/lib/extensions/python/init.el b/lib/extensions/python/init.el index bb5dbc8..2d2576a 100644 --- a/lib/extensions/python/init.el +++ b/lib/extensions/python/init.el @@ -93,9 +93,9 @@ (setq-local imenu-create-index-function #'python-imenu-create-flat-index)) (add-hook 'post-self-insert-hook - #'electric-layout-post-self-insert-function nil 'local) + #'electric-layout-post-self-insert-function nil 'local)) ;(add-hook 'after-save-hook 'python-mode-set-encoding nil 'local)) - ) + ;;;###autoload (defun extensions/python-initialize () (ability jedi () @@ -106,26 +106,23 @@ "Full feature python IDE. (A little bit heavy)" (require 'py-autopep8) - - (elpy-enable) + (advice-add 'python-mode :before 'elpy-enable) (setq python-shell-interpreter "ipython" python-shell-interpreter-args "-i --simple-prompt") ;; enable autopep8 formatting on save - (add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save) + (add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save)) + + - ;; use flycheck not flymake with elpy - (when (require 'flycheck nil t) - (setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) - (add-hook 'elpy-mode-hook 'flycheck-mode))) (ability venv () "Virtualenv support" (require 'virtualenvwrapper) (venv-initialize-interactive-shells) - (venv-initialize-eshell) - ) + (venv-initialize-eshell)) + (ability python-editor () "Gives FG42 the ability to edit pytho codes." @@ -144,15 +141,27 @@ (add-to-list 'auto-mode-alist '("\\.pyi\\'" . cython-mode)) (add-to-list 'auto-mode-alist - '("\\.pyx\\'" . cython-mode)))) + '("\\.pyx\\'" . cython-mode))) + (with-ability lsp + ;; Instruct LSP to use pyls + + (lsp-register-client + (make-lsp-client :new-connection (lsp-stdio-connection "pyls") + :major-modes '(python-mode) + :server-id 'pyls)) + ;; Setup LSP for python mode + (add-hook 'python-mode-hook + (lambda () + (push 'company-lsp company-backends) + (lsp))))) (ability python-code-completion ('code-completion) - "Gives FG42 the ability to complete python codes." + "Gives FG42 the ability to complete python codes.") ;(when (boundp 'company-backends) ; (add-to-list 'company-backends 'company-anaconda)))) - ) + (message "'python' extension has been initialized.")) (provide 'extensions/python/init)