;;; thanos-dev.el --- Developer Tools Configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2023 Thanos Apollo ;; Author: Thanos Apollo ;; Keywords: extensions ;; 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: ;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ ;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ ;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ ;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ ;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ ;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ ;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ ;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ ;;; Code: (require 'company) (add-hook 'after-init-hook 'global-company-mode) (define-key company-active-map (kbd "TAB") 'company-indent-or-complete-common) (setq company-idle-delay (lambda () (if (company-in-string-or-comment) nil 0.0))) (require 'company-box) (add-hook 'company-mode-hook 'company-box-mode) (setf company-box-icons-alist 'company-box-icons-images) (setq indent-tabs-mode nil) (defun insert-brackets (&optional arg) "Insert brackets." (interactive "P") (insert-pair arg ?\[ ?\])) (global-set-key (kbd "C-x M-[") 'insert-brackets) ;; Magit (require 'magit) (setf magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1) (define-prefix-command 'thanos/magit) (global-set-key (kbd "C-c g") 'thanos/magit) (define-key thanos/magit (kbd "c") 'magit-clone) ;; shell scripting (define-auto-insert '("\\.sh\\'" . "Bash skeleton") '("Description:" \n "#!/bin/bash")) (add-hook 'shell-script-mode #'auto-insert) ;; Emacs lisp (setf tab-always-indent 'complete) (add-to-list 'completion-styles 'initials t) (add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode) (add-hook 'emacs-lisp-mode-hook #'company-mode) (add-hook 'emacs-lisp-mode-hook #'display-line-numbers-mode) ;; Disable checkdoc flycheck for org-src buffers (add-hook 'org-src-mode-hook #'(lambda () (flycheck-disable-checker 'emacs-lisp-checkdoc))) ;; Common lisp (setf inferior-lisp-program "sbcl") (add-hook 'lisp-mode-hook #'rainbow-delimiters-mode) (add-hook 'lisp-mode-hook #'company-mode) (add-hook 'scheme-mode-hook #'rainbow-delimiters-mode) (add-hook 'scheme-mode-hook #'company-mode) ;; LSP config (defun thanos/lsp-mode-setup () (setf lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols)) (lsp-headerline-breadcrumb-mode)) (require 'lsp-mode) (add-hook 'lsp-mode #'thanos/lsp-mode-setup) (setf lsp-keymap-prefix "C-c l") (lsp-enable-which-key-integration t) (require 'lsp-ui) (add-hook 'lsp-mode 'lsp-ui-mode) (setf lsp-ui-doc-position 'bottom) ;;; Python ;; set pylsp with lsp-mode (setf lsp-pyls-server-command "~/usr/bin/pylsp") (require 'python-mode) (add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode)) (add-hook 'python-mode 'lsp-mode) ;; json (require 'json-mode) (add-to-list 'auto-mode-alist '("\\.json'" . json-mode)) ;; ChatGPT (require 'gptel) (define-key 'thanos/applications-map (kbd "c") 'gptel-send) (setf gptel-api-key (password-store-get "chatgpt/api") gptel-model 'gpt-4-32k) (provide 'thanos-dev) ;;; thanos-dev.el ends here