From d2fe54802789acb62da7d373c5f86c0156d09e24 Mon Sep 17 00:00:00 2001 From: Christopher James Hayward Date: Sun, 16 May 2021 14:32:01 -0400 Subject: [PATCH] development -> (go, python) --- elisp/options.el | 2 +- modules/development.org | 110 +++------------------------------------- modules/fonts.org | 16 +----- modules/go.org | 75 +++++++++++++++++++++++++++ modules/python.org | 67 ++++++++++++++++++++++++ 5 files changed, 151 insertions(+), 119 deletions(-) create mode 100644 modules/go.org create mode 100644 modules/python.org diff --git a/elisp/options.el b/elisp/options.el index 94a359d..cba0501 100644 --- a/elisp/options.el +++ b/elisp/options.el @@ -4,7 +4,7 @@ gpg pass x11 exwm roam agenda spelling grammar reveal hugo capture projects docker lsp dap - development + development go python fonts ivy themes modeline dashboard) "All of the available modules.") diff --git a/modules/development.org b/modules/development.org index fd1c25a..7f5622b 100644 --- a/modules/development.org +++ b/modules/development.org @@ -11,75 +11,6 @@ Support for individual programming languages, has a hard dependency on the [[file:projects.org][Projects]] module for integration with *LSP*[fn:1] / *DAP*[fn:2] -* Go - -First class language support for *Golang*[fn:3]. - -+ Full support of *LSP*[fn:1] -+ Full support of *DAP*[fn:1] - -** Installing requirements - -Get started by installing the *gopls*[fn:4] language server. - -#+begin_src shell -GO111MODULE=on go get golang.org/x/tools/gopls@latest -#+end_src -** Setup the environment - -Make some modifications to the environment. - -*** Overriding the $GOPATH - -Set the =$GOPATH= environment variable prior to loading the module, allowing modification of the default value. - -#+begin_src emacs-lisp -(setenv "GOPATH" (concat (getenv "HOME") "/.go/")) -#+end_src - -*** Adding $GOBIN to the $PATH - -Include the ~bin~ subdirectory of the =$GOPATH= in the =$PATH= variable, adding compiled Golang applications to the system path. - -#+begin_src emacs-lisp -(setenv "PATH" (concat (getenv "GOPATH") "bin:" (getenv "PATH"))) -#+end_src - -** Configuration - -Include the *go-mode*[fn:5] package for integration with *lsp-mode* from the [[file:projects.org][Projects]] module. - -+ Manually set the ~gopls~ application path - -#+begin_src emacs-lisp -(use-package go-mode - :hook (go-mode . lsp) - :custom (lsp-go-gopls-server-path "~/.go/bin/gopls")) -#+end_src - -*** Before save hooks - -Apply some custom behaviour prior to saving buffers. - -+ Format buffers -+ Organize imports - -#+begin_src emacs-lisp -(defun dotfiles/go-hook () - (add-hook 'before-save-hook #'lsp-format-buffer t t) - (add-hook 'before-save-hook #'lsp-organize-imports t t)) - -(add-hook 'go-mode-hook #'dotfiles/go-hook) -#+end_src - -*** Babel structure templates - -Add a structure template for *Golang*[fn:3] source blocks. - -#+begin_src emacs-lisp -(add-to-list 'org-structure-template-alist '("go" . "src go")) -#+end_src - * HTTP Interactive with *HTTP* endpoints using the *ob-http*[fn:6] package. You can see how it works in my post [[file:../docs/posts/kanye-as-a-service.org.gpg][Kanye as a Service]]. Essentialy it adds interactive *HTTP* blocks that can output their results in place. @@ -122,41 +53,12 @@ Add support for the *C/C++* family of languages via the *CCLS*[fn:7] language se (org-babel-do-load-languages 'org-babel-load-languages '((C . t)))) #+end_src -* Python - -Adds support for *Python* and *Python 3*[fn:8] with *DAP*[fn:1] and *LSP*[fn:2] integration. The built in Emacs mode *python-mode*[fn:9] implements the behaviour. - -+ Load the babel language modules for Python -+ Add a structure template with ~