dotfiles/.emacs.d/modules/sqrt-misc-programming.el
SqrtMinusOne 523a36b8f1
Some checks are pending
Update Site / trigger_update (push) Waiting to run
emacs: cleanup python dev
2025-11-24 18:14:46 +03:00

312 lines
8.4 KiB
EmacsLisp

;;; -*- lexical-binding: t -*-
(use-package ein
:commands (ein:run)
:disabled
:straight t)
(defun my/get-pipenv-python ()
(let ((default-directory (projectile-project-root)))
(cond ((file-exists-p ".venv/bin/python")
(expand-file-name ".venv/bin/python"))
(t (executable-find "python")))))
(use-package lsp-pyright
:straight t
:defer t
:hook (python-mode . (lambda ()
(require 'lsp-pyright)
(setq-local lsp-pyright-python-executable-cmd (my/get-pipenv-python))
(lsp))))
(add-hook 'python-mode-hook #'smartparens-mode)
(add-hook 'python-mode-hook #'treesit-fold-mode)
(use-package yapfify
:straight (:repo "JorisE/yapfify" :host github)
:disabled
:commands (yapfify-region
yapfify-buffer
yapfify-region-or-buffer
yapf-mode))
(use-package python-black
:straight t
:commands (python-black-buffer)
:config
(setq python-black-command "black"))
(use-package py-isort
:straight t
:commands (py-isort-buffer py-isort-region))
(my-leader-def
:keymaps '(python-mode-map python-ts-mode-map)
"rr" (lambda ()
(interactive)
(unless (and (fboundp #'org-src-edit-buffer-p) (org-src-edit-buffer-p))
(py-isort-buffer))
(python-black-buffer)))
(use-package numpydoc
:straight t
:commands (numpydoc-generate)
:init
(my-leader-def
:keymaps 'python-ts-mode-map
"rd" #'numpydoc-generate)
:config
(setq numpydoc-insertion-style 'prompt)
(setq numpydoc-insert-return-without-typehint nil))
(defun my/set-pipenv-pytest ()
(setq-local
python-pytest-executable
(concat (my/get-pipenv-python) " -m pytest")))
(use-package python-pytest
:straight t
:commands (python-pytest-dispatch)
:init
(my-leader-def
:keymaps '(python-mode-map python-ts-mode-map)
:infix "t"
"t" 'python-pytest-dispatch)
:config
(cl-defun python-pytest--run-as-comint (&key command)
"Run a pytest comint session for COMMAND."
(let* ((buffer (python-pytest--get-buffer))
(process (get-buffer-process buffer)))
(with-current-buffer buffer
(when (comint-check-proc buffer)
(unless (or compilation-always-kill
(yes-or-no-p "Kill running pytest process?"))
(user-error "Aborting; pytest still running")))
(when process
(delete-process process))
(let ((inhibit-read-only t))
(erase-buffer))
(unless (eq major-mode 'python-pytest-mode)
(python-pytest-mode))
(compilation-forget-errors)
(display-buffer buffer)
(setq command (format "export COLUMNS=%s; %s"
(- (window-width (get-buffer-window buffer)) 5)
command))
(insert (format "cwd: %s\ncmd: %s\n\n" default-directory command))
(setq python-pytest--current-command command)
(when python-pytest-pdb-track
(add-hook
'comint-output-filter-functions
'python-pdbtrack-comint-output-filter-function
nil t))
(run-hooks 'python-pytest-setup-hook)
(make-comint-in-buffer "pytest" buffer "bash" nil "-c" command)
(run-hooks 'python-pytest-started-hook)
(setq process (get-buffer-process buffer))
(set-process-sentinel process #'python-pytest--process-sentinel))))
(add-hook 'python-mode-hook #'my/set-pipenv-pytest)
(when (derived-mode-p 'python-mode)
(my/set-pipenv-pytest)))
(use-package code-cells
:straight t
:disabled
:commands (code-cells-mode code-cells-convert-ipynb))
(setq my/tensorboard-buffer "TensorBoard-out")
(defun my/tensorboard ()
(interactive)
(start-process
"tensorboard"
my/tensorboard-buffer
"tensorboard"
"serve"
"--logdir"
(car (find-file-read-args "Directory: " t)))
(display-buffer my/tensorboard-buffer))
(use-package json-mode
:straight t
:mode "\\.json\\'"
:config
(add-hook 'json-mode-hook #'smartparens-mode)
(add-hook 'json-mode-hook #'treesit-fold-mode)
(my/set-smartparens-indent 'json-mode))
(use-package csv-mode
:straight t
:disabled
:mode "\\.csv\\'")
(use-package yaml-mode
:straight t
:mode "\\.yml\\'"
:config
(add-hook 'yaml-mode-hook 'smartparens-mode)
;; (add-hook 'yaml-mode-hook 'highlight-indent-guides-mode)
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)))
(use-package dotenv-mode
:straight t
:mode "\\.env\\..*\\'")
(use-package gitignore-templates
:straight t
:commands (gitignore-templates-insert
gitignore-templates-new-file))
(use-package dockerfile-mode
:mode "Dockerfile\\'"
:straight t
:config
(add-hook 'dockerfile-mode 'smartparens-mode))
(use-package jenkinsfile-mode
:straight t
:mode "Jenkinsfile\\'"
:config
(add-hook 'jenkinsfile-mode-hook #'smartparens-mode)
(my/set-smartparens-indent 'jenkinsfile-mode))
(use-package crontab-mode
:mode "/crontab\\(\\.X*[[:alnum:]]+\\)?\\'"
:straight t)
(use-package nginx-mode
:straight t
:config
(my/set-smartparens-indent 'nginx-mode))
(use-package hcl-mode
:mode "\\.hcl\\'"
:straight t)
(add-hook 'sh-mode-hook #'smartparens-mode)
(use-package fish-mode
:straight t
:mode "\\.fish\\'"
:config
(add-hook 'fish-mode-hook #'smartparens-mode))
(setq my/sqlformatter-dialect-choice
'("db2" "mariadb" "mysql" "n1ql" "plsql" "postgresql" "redshift" "spark" "sql" "tsql"))
(setq my/sqlformatter-dialect "postgresql")
(defun my/sqlformatter-set-dialect ()
"Set dialect for sql-formatter"
(interactive)
(setq my/sqlformatter-dialect
(completing-read "Dialect: " my/sqlformatter-dialect-choice)))
(reformatter-define sqlformat
:program (executable-find "sql-formatter")
:args `("-l" ,my/sqlformatter-dialect))
(my-leader-def
:keymaps '(sql-mode-map)
"rr" #'sqlformat-buffer)
(use-package sparql-mode
:mode "\\.sparql\\'"
:straight t)
(use-package graphql-mode
:mode (rx (| "gql" "grapql") eos)
:straight t)
(defun my/doc-view-setup ()
(display-line-numbers-mode -1)
(undo-tree-mode -1))
(use-package doc-view
:straight (:type built-in)
:config
(setq doc-view-resolution 300)
(add-hook 'doc-view-mode-hook #'my/doc-view-setup)
(general-define-key
:states '(normal)
:keymaps '(doc-view-mode-map)
"j" #'doc-view-next-line-or-next-page
"k" #'doc-view-previous-line-or-previous-page))
(use-package gnuplot
:straight t
:commands (gnuplot-mode gnuplot-make-buffer)
:init
(add-to-list 'auto-mode-alist '("\\.gp\\'" . gnuplot-mode))
:config
(general-define-key
:keymaps 'gnuplot-mode-map
"C-c C-c" #'gnuplot-send-buffer-to-gnuplot)
(general-define-key
:states '(normal)
:keymaps 'gnuplot-mode-map
"RET" #'gnuplot-send-buffer-to-gnuplot)
(add-hook 'gnuplot-mode-hook #'smartparens-mode))
(use-package x509-mode
:commands (x509-dwim)
:straight (:host github :repo "jobbflykt/x509-mode"
:build (:not native-compile)))
(use-package lsp-java
:straight t
:after (lsp)
:config
(setq lsp-java-jdt-download-url "https://www.eclipse.org/downloads/download.php?file=/jdtls/milestones/1.23.0/jdt-language-server-1.23.0-202304271346.tar.gz"))
(add-hook 'java-mode-hook #'smartparens-mode)
;; (add-hook 'java-mode-hook #'hs-minor-mode)
(my/set-smartparens-indent 'java-mode)
(use-package go-mode
:straight t
:mode "\\.go\\'"
:config
(my/set-smartparens-indent 'go-mode)
(add-hook 'go-mode-hook #'smartparens-mode)
(add-hook 'go-mode-hook #'treesit-fold-mode))
(use-package csharp-mode
:straight t
:mode "\\.cs\\'"
:disabled t
:config
(setq lsp-csharp-server-path (executable-find "omnisharp-wrapper"))
(add-hook 'csharp-mode-hook #'csharp-tree-sitter-mode)
(add-hook 'csharp-tree-sitter-mode-hook #'smartparens-mode)
(add-hook 'csharp-mode-hook #'treesit-fold-mode)
(my/set-smartparens-indent 'csharp-tree-sitter-mode))
(use-package csproj-mode
:straight t
:mode "\\.csproj\\'"
:config
(add-hook 'csproj-mode #'smartparens-mode))
(use-package haskell-mode
:straight t
:mode "\\.hs\\'")
(use-package lsp-haskell
:straight t
:after (lsp haskell-mode))
(use-package nix-mode
:straight t
:mode "\\.nix\\'"
:config
(add-hook 'nix-mode-hook #'smartparens-mode)
(my/set-smartparens-indent 'nix-mode))
(use-package lua-mode
:straight t
:mode "\\.lua\\'"
:hook (lua-mode . smartparens-mode))
(my/set-smartparens-indent 'lua-mode)
(provide 'sqrt-misc-programming)