Frist attempt to not use elpy

This commit is contained in:
2022-10-28 16:46:30 +02:00
parent f0aa182818
commit cee4734645

182
.emacs
View File

@@ -18,8 +18,6 @@
(other . "gnu"))) (other . "gnu")))
'(company-idle-delay 20.0) '(company-idle-delay 20.0)
'(compilation-scroll-output 'first-error) '(compilation-scroll-output 'first-error)
'(elpy-formatter 'black)
'(elpy-test-runner 'elpy-test-pytest-runner)
'(global-auto-revert-mode t) '(global-auto-revert-mode t)
'(global-display-line-numbers-mode t) '(global-display-line-numbers-mode t)
'(gofmt-command "goimports") '(gofmt-command "goimports")
@@ -30,7 +28,7 @@
("melpa" . "https://melpa.org/packages/"))) ("melpa" . "https://melpa.org/packages/")))
'(package-enable-at-startup nil) '(package-enable-at-startup nil)
'(package-selected-packages '(package-selected-packages
'(company-go zenburn-theme langtool smart-tabs-mode typescript-mode protobuf-mode opencl-mode glsl-mode go-mode elpy markdown-mode srefactor irony cmake-mode company magit use-package)) '(company-go zenburn-theme langtool smart-tabs-mode typescript-mode protobuf-mode opencl-mode glsl-mode go-mode markdown-mode srefactor irony cmake-mode company magit use-package))
'(safe-local-variable-values '(safe-local-variable-values
'((vc-follow-symlinks . t) '((vc-follow-symlinks . t)
(TeX-master . t) (TeX-master . t)
@@ -83,12 +81,6 @@
:config :config
(setq-default tab-width 4) ; or any other preferred value (setq-default tab-width 4) ; or any other preferred value
(setq cua-auto-tabify-rectangles nil) (setq cua-auto-tabify-rectangles nil)
;; (defadvice align (around smart-tabs activate)
;; (let ((indent-tabs-mode nil)) ad-do-it))
;; (defadvice align (around smart-tabs activate)
;; (let ((indent-tabs-mode nil)) ad-do-it))
;; (defadvice align-regexp (around smart-tabs activate)
;; (let ((indent-tabs-mode nil)) ad-do-it))
(defadvice indent-relative (around smart-tabs activate) (defadvice indent-relative (around smart-tabs activate)
(let ((indent-tabs-mode nil)) ad-do-it)) (let ((indent-tabs-mode nil)) ad-do-it))
(defadvice indent-according-to-mode (around smart-tabs activate) (defadvice indent-according-to-mode (around smart-tabs activate)
@@ -146,19 +138,13 @@
) )
(use-package cmake-mode (use-package cmake-mode
:hook
(cmake-mode . lsp-deferred)
:config :config
(setq cmake-tab-width 4) (setq cmake-tab-width 4)
) )
(use-package srefactor
:bind (:map c-mode-map
("M-RET" . srefactor-refactor-at-point)
:map c++-mode-map
("M-RET" . srefactor-refactor-at-point))
)
(use-package yasnippet (use-package yasnippet
:config :config
(yas-global-mode) (yas-global-mode)
@@ -180,17 +166,21 @@
(projectile-mode +1) (projectile-mode +1)
) )
(use-package cpputils-cmake (use-package flycheck
:config :config
(setq cppcm-write-flymake-makefile nil) (defvar-local atu/flycheck-local-cache nil)
:bind ( "C-c C-f" . ff-find-other-file)
)
(use-package flycheck) (defun atu/flycheck-checker-get (fn checker property)
(or (alist-get property (alist-get checker atu/flycheck-local-cache))
(funcall fn checker property)))
(advice-add 'flycheck-checker-get :around 'atu/flycheck-checker-get)
)
(use-package which-key) (use-package which-key)
(use-package lsp-mode (use-package lsp-mode
:after (flycheck)
:config :config
(yas-minor-mode) (yas-minor-mode)
(global-set-key (kbd "C-c C-n") 'flycheck-next-error) (global-set-key (kbd "C-c C-n") 'flycheck-next-error)
@@ -206,20 +196,16 @@
:init :init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l") (setq lsp-keymap-prefix "C-c l")
(require 'lsp-ltex) :hook (
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) ;; replace XXX-mode with concrete major-mode(e. g. python-mode)
(c++-mode . lsp-deferred)
(c-mode . lsp-deferred)
(cmake-mode . lsp-deferred)
(go-mode . lsp-deferred)
(typescript-mode . lsp-deferred)
(html-mode . lsp-deferred)
;; if you want which-key integration ;; if you want which-key integration
(lsp-mode . lsp-enable-which-key-integration)) (lsp-mode . lsp-enable-which-key-integration))
:commands (lsp lsp-deferred)) :commands (lsp lsp-deferred))
(use-package lsp-ui (use-package lsp-ui
:after lsp-mode
:config :config
(setq lsp-ui-sideline-show-diagnostics nil) (setq lsp-ui-sideline-show-diagnostics nil)
) )
@@ -228,10 +214,135 @@
:init :init
(setq lsp-ltex-version "15.2.0")) ; make sure you have set this, see below (setq lsp-ltex-version "15.2.0")) ; make sure you have set this, see below
(use-package ng2-mode) (use-package ng2-mode
:hook
(html-mode . lsp-deferred)
(typescript-mode . lsp-deferred)
)
(use-package yaml-mode) (use-package yaml-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PYTHON
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package python
:custom
(python-shell-interpreter "ipython")
(python-shell-interpreter-args "-i --simple-prompt")
(python-indent-guess-indent-offset-verbose nil)
:hook
(python-mode . (lambda () (setq-local company-prescient-sort-length-enable nil)))
(python-mode . (lambda () (setq-local fill-column 88)))
(python-mode . lsp-deferred)
;; (lsp-managed-mode . (lambda ()
;; (when (derived-mode-p 'python-mode)
;; (setq atu/flycheck-local-cache '((lsp . ((next-checkers . (python-flake8)))))))))
)
(use-package pyvenv
:after (projectile)
:config
(defun atu/get-direnv-venv ()
"Gets .direnv from project root python venv if any"
(when-let* ((root-dir (projectile-project-root))
(direnv (concat (file-name-as-directory root-dir) ".direnv"))
(venvs (directory-files direnv t "python-.*")))
(car (last venvs)))
)
(defun atu/get-dotvenv ()
"Gets .venv from project root if any"
(when-let* ((root-dir (projectile-project-root))
(venv (concat (file-name-as-directory root-dir) ".venv"))
(venv-exists (file-exists-p venv))
(venv-name (with-temp-buffer
(insert-file-contents venv-file)
(nth 0 (split-string (buffer-string))))))
venv-name)
)
(defun atu/get-venv-name ()
"Gets venv name from project root. Support .venv and .direnv structure"
(or (atu/get-dotvenv) (atu/get-direnv-venv))
)
(defun atu/activate-venv ()
"Activate python environment according to the project root"
(when-let ((venv-name (atu/get-venv-name)))
(pyvenv-mode)
(pyvenv-workon venv-name)
)
)
(defun atu/get-venv-python ()
"returns python executable from current venv"
(when-let* ((venv-name (atu/get-venv-name))
(python-exec (concat (file-name-as-directory venv-name) "bin/python3"))
(python-exists (file-executable-p python-exec))
)
python-exec)
)
(defun atu/activate-flycheck ()
"Activate flycheck unless its in the venv"
(if-let ((venv-name (atu/get-venv-name)))
(unless (and buffer-file-name (file-in-directory-p buffer-file-name venv-name))
(flycheck-mode))
(flycheck-mode))
)
(defun atu/append-workspace-extra-paths ()
"Appends needed extra-paths to lsp-jedi workspace if found"
(when-let* ((venv-name (atu/get-venv-name))
(site-packages (file-expand-wildcards (concat (file-name-as-directory venv-name) "lib/python*/site-packages")))
(site-package (car site-packages)))
(setq lsp-jedi-workspace-extra-paths
(vconcat lsp-jedi-workspace-extra-paths (vector site-package))
)
)
)
(defun atu/flycheck-set-python-paths ()
"Sets the rights executable for flycheck"
(when-let ((python-exec (atu/get-venv-python)))
(flycheck-set-checker-executable 'python-flake8 python-exec)
(flycheck-set-checker-executable 'python-pylint python-exec)
(flycheck-set-checker-executable 'python-mypy python-exec)
(flycheck-reset-enabled-checker 'python-flake8)
(flycheck-reset-enabled-checker 'python-pylint)
(flycheck-add-next-checker 'lsp 'python-pylint)
)
)
:hook
(python-mode . atu/activate-venv)
;(python-mode . atu/activate-flycheck)
(python-mode . atu/append-workspace-extra-paths)
(lsp-managed-mode . atu/flycheck-set-python-paths)
)
(use-package lsp-jedi
:config
(with-eval-after-load "lsp-mode"
(add-to-list 'lsp-disabled-clients 'pyls)
(add-to-list 'lsp-enabled-clients 'jedi)
)
)
;; (use-package blacken
;; :commands blacken-mode blacken-buffer
;; :hook
;; (python-mode . blacken-mode)
;; )
;; (use-package py-isort
;; :commands py-isort-buffer
;; :hook
;; (before-save-hook . py-isort-before-save)
;; )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C/C++ ;; C/C++
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -331,15 +442,6 @@
(use-package markdown-mode) (use-package markdown-mode)
(use-package elpy
:init
(elpy-enable)
:config
(add-hook 'elpy-mode-hook (lambda ()
(add-hook 'before-save-hook
'elpy-format-code nil t)))
)
(use-package go-mode (use-package go-mode
:after (projectile) :after (projectile)
:config :config