├── .gitignore ├── .gitpod.Dockerfile ├── .gitpod.yml ├── README.md ├── docker ├── base │ ├── Dockerfile │ ├── configs │ │ ├── .emacs-profiles.el │ │ ├── init.el │ │ ├── install-packages.el │ │ └── install-servers.el │ └── fonts │ │ ├── JetBrainsMono-Bold-Italic.ttf │ │ ├── JetBrainsMono-ExtraBold-Italic.ttf │ │ ├── JetBrainsMono-ExtraLight-Italic.ttf │ │ ├── JetBrainsMono-Italic.ttf │ │ ├── JetBrainsMono-Light-Italic.ttf │ │ ├── JetBrainsMono-Medium-Italic.ttf │ │ ├── JetBrainsMono-Regular.ttf │ │ ├── JetBrainsMono-SemiLight-Italic.ttf │ │ ├── JetBrainsMono-Variable-Italic.ttf │ │ ├── JetBrainsMono-Variable.ttf │ │ ├── RobotoMono-Italic-VariableFont_wght.ttf │ │ ├── RobotoMono-VariableFont_wght.ttf │ │ ├── all-the-icons.ttf │ │ ├── file-icons.ttf │ │ ├── fontawesome.ttf │ │ ├── material-design-icons.ttf │ │ ├── octicons.ttf │ │ └── weathericons.ttf ├── default │ ├── .bashrc-ex │ ├── .emacs-profiles.el │ ├── Dockerfile │ ├── startup.el │ └── vterm-module.so ├── doom │ ├── Dockerfile │ └── configs │ │ ├── config.el │ │ └── init.el └── spacemacs │ ├── Dockerfile │ ├── initialize-spacemacs.el │ └── spacemacs.d │ └── init.el └── gitpod.png /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yyoncho/gitpod-default:1.1.3 2 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod.Dockerfile 3 | ports: 4 | - port: 8085 5 | onOpen: open-browser 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Try with emacs-lsp demo projects](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#ORG=emacs-lsp,PROJECT=demo-projects,PROFILE=vanilla/https://github.com/emacs-lsp/lsp-gitpod) 2 | 3 | # One-click Emacs web IDE (beta) 4 | ![Gitpod](gitpod.png "Emacs Gitpod in action") 5 | ## Quickstart 6 | 7 | Open the following url: 8 | 9 | ``` 10 | https://gitpod.io/#ORG=emacs-lsp,PROJECT=demo-projects,PROFILE=vanilla/https://github.com/emacs-lsp/lsp-gitpod 11 | ``` 12 | 13 | You can replace `PROJECT` and `URL` with any `github` project. Once you login you will see `VScode` editor and after a separate browser tab will pop up with Emacs in it(if you have your popups disabled, you can prefix the `VScode` url with `8085-` but make sure you keep the `VScode` tab open). 14 | 15 | You can check this demo: https://www.youtube.com/watch?v=LGPdUkb9JHM for overview of the functionality. 16 | 17 | ## Features 18 | * Fully preconfigured ready-to-code Emacs Based IDE. There are several preconfigured 19 | - `vanilla` 20 | - `spacemacs` 21 | - `doom` 22 | - Your custom config (TBA) 23 | * The following servers are preinstalled on the image(more to come): 24 | - `jdtls` 25 | - `ts-ls` 26 | - `eslint` 27 | - `json-ls` 28 | - `xmlls` 29 | - `html-ls` 30 | - `rust-analyzer` 31 | - `css-ls` 32 | - `clojure-lsp` 33 | - `clangd` 34 | 35 | ## Tips 36 | 37 | * To avoid browser - Emacs key collisions you can use [Nyxt](https://github.com/atlas-engineer/nyxt) browser with `application-mode` enabled 38 | 39 | ## Limitations 40 | 41 | * VScode tab has to be kept open and you have to click every 30 minute on it to keep the session open. This issue will be sorted out with gitpod team. 42 | * Clipboard is not shared - this is GTK Broadway bug. 43 | -------------------------------------------------------------------------------- /docker/base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full 2 | 3 | USER gitpod 4 | WORKDIR /home/gitpod 5 | 6 | RUN sudo apt-get update && sudo apt-get install -y build-essential git autoconf texinfo libgnutls28-dev libxml2-dev libncurses5-dev libjansson-dev libgtk-3-dev:amd64 libgccjit-9-dev 7 | 8 | RUN git clone https://github.com/emacs-mirror/emacs --depth 1 --branch feature/pgtk 9 | 10 | WORKDIR /home/gitpod/emacs/ 11 | RUN ./autogen.sh 12 | RUN ./configure --with-pgtk --with-cairo --with-modules --with-native-compilation --with-json 13 | RUN NATIVE_FULL_AOT=1 make -j8 14 | 15 | RUN sudo apt-get update && sudo apt-get install -y ripgrep fasd libtool-bin 16 | 17 | COPY fonts/* /home/gitpod/.local/share/fonts/ 18 | RUN mkdir -p /home/gitpod/.local/share/fonts/ 19 | 20 | WORKDIR /home/gitpod/ 21 | 22 | COPY configs/install-packages.el /tmp/install-packages.el 23 | RUN LSP_USE_PLISTS=true ~/emacs/src/emacs --batch -l /tmp/install-packages.el 24 | 25 | USER root 26 | RUN mkdir /workspace/m2-repository/ -p 27 | RUN chown gitpod:gitpod /workspace/m2-repository/ 28 | USER gitpod 29 | 30 | COPY configs/install-servers.el /tmp/install-servers.el 31 | RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh && ~/emacs/src/emacs --batch -l /tmp/install-servers.el" 32 | 33 | COPY configs/init.el /home/gitpod/.emacs.d/init.el 34 | 35 | COPY fonts/* ~/.local/share/fonts/ 36 | -------------------------------------------------------------------------------- /docker/base/configs/.emacs-profiles.el: -------------------------------------------------------------------------------- 1 | (("vanilla" . ((user-emacs-directory . "~/vanilla"))) 2 | ("default" . ((user-emacs-directory . "~/vanilla"))) 3 | ("spacemacs" . ((user-emacs-directory . "~/spacemacs"))) 4 | ("doom" . ((user-emacs-directory . "~/doom")))) 5 | -------------------------------------------------------------------------------- /docker/base/configs/init.el: -------------------------------------------------------------------------------- 1 | (setq native-comp-deferred-compilation nil) 2 | (setq lsp-use-plists t) 3 | 4 | (package-initialize) 5 | 6 | (tool-bar-mode -1) 7 | (menu-bar-mode -1) 8 | (scroll-bar-mode -1) 9 | 10 | (load-theme 'doom-molokai t) 11 | (helm-mode) 12 | (helm-icons-enable) 13 | (require 'helm-xref) 14 | (define-key global-map [remap find-file] #'helm-find-files) 15 | (define-key global-map [remap execute-extended-command] #'helm-M-x) 16 | (define-key global-map [remap switch-to-buffer] #'helm-mini) 17 | (add-hook 'prog-mode-hook #'lsp) 18 | 19 | (with-eval-after-load 'treemacs-icons 20 | (treemacs-resize-icons 15)) 21 | 22 | (setq gc-cons-threshold (* 100 1024 1024) 23 | read-process-output-max (* 1024 1024) 24 | company-idle-delay 0.0 25 | company-minimum-prefix-length 1 26 | 27 | ;; lock file will kill `npm start' 28 | create-lockfiles nil 29 | inhibit-splash-screen t 30 | inhibit-startup-message t 31 | 32 | ;; avoid resizing of popup while typing. 33 | company-tooltip-maximum-width 60 34 | company-tooltip-minimum-width 60 35 | 36 | ;; less noise 37 | company-frontends '(company-pseudo-tooltip-frontend) 38 | 39 | ;; less noise 40 | lsp-completion-show-detail nil 41 | lsp-completion-show-kind nil 42 | 43 | ;; less noise/faster 44 | helm-buffer-details-flag nil 45 | 46 | lsp-idle-delay 0.1 47 | lsp-signature-function #'lsp-signature-posframe 48 | 49 | ;; faster details popup 50 | company-quickhelp-delay 0.1 51 | company-quickhelp-use-propertized-text t) 52 | 53 | (with-eval-after-load 'dired 54 | (treemacs-icons-dired-mode)) 55 | 56 | (add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration) 57 | (add-hook 'dired-mode-hook #'lsp-dired-mode) 58 | (yas-global-mode) 59 | (company-quickhelp-mode) 60 | 61 | (load "~/startup.el") 62 | -------------------------------------------------------------------------------- /docker/base/configs/install-packages.el: -------------------------------------------------------------------------------- 1 | ;; temporary 2 | (setq native-comp-deferred-compilation t) 3 | 4 | (package-initialize) 5 | 6 | (setq package-archives '(("melpa" . "http://www.mirrorservice.org/sites/melpa.org/packages/") 7 | ("gnu" . "http://elpa.gnu.org/packages/") 8 | ("nongnu" . "http://elpa.nongnu.org/nongnu/"))) 9 | 10 | (package-refresh-contents) 11 | 12 | (package-install 'quelpa) 13 | (setq package-native-compile t) 14 | 15 | (setq native-comp-async-jobs-number 8) 16 | ;; with jsonc-mode 17 | 18 | (quelpa '(json-mode :repo "kiennq/json-mode" :fetcher github)) 19 | 20 | (mapc #'package-install 21 | '(posframe yasnippet lsp-treemacs helm-lsp projectile hydra flycheck 22 | company avy which-key helm-xref dap-mode doom-themes 23 | company-quickhelp rust-mode php-mode scala-mode dart-mode 24 | clojure-mode all-the-icons treemacs-icons-dired helm-icons 25 | lsp-java lsp-dart lsp-metals lsp-ivy lsp-sourcekit 26 | magit page-break-lines helm-projectile typescript-mode 27 | csharp-mode go-mode kotlin-mode)) 28 | 29 | (while (not (zerop (comp-async-runnings))) 30 | (message "Waiting for native compilation to finish. %s" (comp-async-runnings)) 31 | (accept-process-output nil 1)) 32 | -------------------------------------------------------------------------------- /docker/base/configs/install-servers.el: -------------------------------------------------------------------------------- 1 | (package-initialize) 2 | 3 | (require 'lsp-mode) 4 | 5 | (require 'dap-cpptools) 6 | (dap-cpptools-setup) 7 | 8 | 9 | 10 | (defun my/wait-for-installation (server-id) 11 | (lsp-install-server nil server-id) 12 | 13 | (while (-filter #'lsp--client-download-in-progress? (ht-values lsp-clients)) 14 | (message "Waiting server installation for %s" 15 | (-map #'lsp--client-server-id 16 | (-filter #'lsp--client-download-in-progress? 17 | (ht-values lsp-clients)))) 18 | (accept-process-output nil 1))) 19 | 20 | (my/wait-for-installation 'jdtls) 21 | (my/wait-for-installation 'eslint) 22 | (my/wait-for-installation 'ts-ls) 23 | (my/wait-for-installation 'json-ls) 24 | (my/wait-for-installation 'xmlls) 25 | (my/wait-for-installation 'rust-analyzer) 26 | (my/wait-for-installation 'html-ls) 27 | (my/wait-for-installation 'css-ls) 28 | (my/wait-for-installation 'clojure-lsp) 29 | 30 | (require 'dap-node) 31 | (dap-node-setup) 32 | -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Bold-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Bold-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-ExtraBold-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-ExtraBold-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-ExtraLight-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-ExtraLight-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Light-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Light-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Medium-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Medium-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Regular.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-SemiLight-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-SemiLight-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Variable-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Variable-Italic.ttf -------------------------------------------------------------------------------- /docker/base/fonts/JetBrainsMono-Variable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/JetBrainsMono-Variable.ttf -------------------------------------------------------------------------------- /docker/base/fonts/RobotoMono-Italic-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/RobotoMono-Italic-VariableFont_wght.ttf -------------------------------------------------------------------------------- /docker/base/fonts/RobotoMono-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/RobotoMono-VariableFont_wght.ttf -------------------------------------------------------------------------------- /docker/base/fonts/all-the-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/all-the-icons.ttf -------------------------------------------------------------------------------- /docker/base/fonts/file-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/file-icons.ttf -------------------------------------------------------------------------------- /docker/base/fonts/fontawesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/fontawesome.ttf -------------------------------------------------------------------------------- /docker/base/fonts/material-design-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/material-design-icons.ttf -------------------------------------------------------------------------------- /docker/base/fonts/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/octicons.ttf -------------------------------------------------------------------------------- /docker/base/fonts/weathericons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/base/fonts/weathericons.ttf -------------------------------------------------------------------------------- /docker/default/.bashrc-ex: -------------------------------------------------------------------------------- 1 | # if [ -z $TUI ] 2 | # then 3 | # pid=$(pidof emacs) 4 | # if [ -z $pid ] 5 | # then 6 | # ~/go/bin/gotty --permit-write --port 8085 emacs -nw --with-profile ${PROFILE:-vanilla} ${FILE:-/workspace/} & 7 | # fi 8 | # else 9 | 10 | broadwayd :5 11 | 12 | pid=$(pidof emacs) 13 | if [ -z $pid ] 14 | then 15 | GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 /home/gitpod/emacs/src/emacs --with-profile ${PROFILE:-vanilla} & 16 | fi 17 | -------------------------------------------------------------------------------- /docker/default/.emacs-profiles.el: -------------------------------------------------------------------------------- 1 | (("vanilla" . ((user-emacs-directory . "~/vanilla"))) 2 | ("default" . ((user-emacs-directory . "~/vanilla"))) 3 | ("spacemacs" . ((user-emacs-directory . "~/spacemacs"))) 4 | ("doom" . ((user-emacs-directory . "~/doom")))) 5 | -------------------------------------------------------------------------------- /docker/default/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yyoncho/gitpod-base:1.1.2 2 | 3 | RUN mv .emacs.d vanilla 4 | 5 | COPY .emacs-profiles.el /home/gitpod/.emacs-profiles.el 6 | RUN git clone --depth 1 https://github.com/plexus/chemacs2 /home/gitpod/.emacs.d/ 7 | 8 | COPY --from=yyoncho/gitpod-doom:1.0.5 /home/gitpod/doom /home/gitpod/doom 9 | 10 | COPY --from=yyoncho/gitpod-spacemacs:1.0.12 /home/gitpod/.emacs.d /home/gitpod/spacemacs 11 | COPY --from=yyoncho/gitpod-spacemacs:1.0.12 /home/gitpod/.spacemacs.d /home/gitpod/.spacemacs.d 12 | 13 | USER root 14 | RUN chown gitpod:gitpod * 15 | USER gitpod 16 | 17 | RUN ln -s /home/gitpod/vanilla/.cache/lsp /home/gitpod/spacemacs/.cache/ 18 | 19 | USER root 20 | RUN ln -s /home/gitpod/vanilla/.cache doom/ 21 | USER gitpod 22 | 23 | RUN ln -s /home/gitpod/spacemacs/eln-cache /home/gitpod/.emacs.d/ 24 | 25 | COPY .bashrc-ex /home/gitpod/.bashrc-ex 26 | RUN echo 'source ~/.bashrc-ex' >> ~/.bashrc 27 | 28 | COPY --from=yyoncho/gitpod-doom:1.0.5 /home/gitpod/.config/doom /home/gitpod/.config/doom 29 | 30 | COPY startup.el /home/gitpod/ 31 | RUN sudo rm /home/gitpod/.spacemacs.d/* 32 | RUN sudo ln -s /workspace/lsp-gitpod/docker/spacemacs/spacemacs.d/init.el /home/gitpod/.spacemacs.d/ 33 | RUN sudo chown gitpod:gitpod /home/gitpod/.spacemacs.d -R 34 | COPY vterm-module.so /home/gitpod/spacemacs/.elpa/28.0/develop/vterm*/ 35 | -------------------------------------------------------------------------------- /docker/default/startup.el: -------------------------------------------------------------------------------- 1 | ;;; startup.el --- Common startup handling for lsp-mode gitpod configs -*- lexical-binding: t; -*- 2 | 3 | ;; Copyright (C) 2021 Ivan Yonchovski 4 | 5 | ;; Author: Ivan Yonchovski 6 | ;; Keywords: 7 | 8 | ;; This program is free software; you can redistribute it and/or modify 9 | ;; it under the terms of the GNU General Public License as published by 10 | ;; the Free Software Foundation, either version 3 of the License, or 11 | ;; (at your option) any later version. 12 | 13 | ;; This program is distributed in the hope that it will be useful, 14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | ;; GNU General Public License for more details. 17 | 18 | ;; You should have received a copy of the GNU General Public License 19 | ;; along with this program. If not, see . 20 | 21 | ;;; Commentary: 22 | 23 | ;; 24 | 25 | ;;; Code: 26 | 27 | ;; (setenv "ORG" "emacs-lsp") 28 | ;; (setenv "PROJECT" "lsp-gitpod") 29 | ;; (setenv "GITPOD_REPO_ROOT" "/tmp/") 30 | 31 | (defvar magit-clone-set-remote.pushDefault) 32 | 33 | (defun startup-handle-project-dir (directory) 34 | (find-file directory) 35 | (require 'lsp-mode) 36 | (if-let (workspaces (directory-files directory t ".*\.code-workspace" )) 37 | (progn 38 | (message "Loading %s" (car workspaces)) 39 | (lsp-load-vscode-workspace (car workspaces))) 40 | (lsp-workspace-folders-add directory))) 41 | 42 | (require 'f) 43 | 44 | (let* ((org (getenv "ORG")) 45 | (project (getenv "PROJECT")) 46 | (root (f-parent (getenv "GITPOD_REPO_ROOT"))) 47 | (directory (expand-file-name project root))) 48 | (when (and org project) 49 | (if (f-exists-p directory) 50 | (progn 51 | (message "Project %s/%s is already cloned in %s" org project directory) 52 | (startup-handle-project-dir directory)) 53 | (let ((magit-clone-set-remote.pushDefault t)) 54 | (message "Cloning project %s/%s." org project) 55 | (magit-clone-regular (format "https://github.com/%s/%s" org project) root nil) 56 | (set-process-sentinel 57 | magit-this-process 58 | (lambda (process event) 59 | (when (memq (process-status process) '(exit signal)) 60 | (let ((magit-process-raise-error t)) 61 | (magit-process-sentinel process event))) 62 | (when (and (eq (process-status process) 'exit) 63 | (= (process-exit-status process) 0)) 64 | (let ((default-directory directory)) 65 | (magit-remote-unset-head "origin"))) 66 | (startup-handle-project-dir directory))))))) 67 | 68 | (provide 'startup) 69 | ;;; startup.el ends here 70 | -------------------------------------------------------------------------------- /docker/default/vterm-module.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/docker/default/vterm-module.so -------------------------------------------------------------------------------- /docker/doom/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yyoncho/gitpod-base:1.0.9 2 | 3 | USER gitpod 4 | 5 | # Doom 6 | ## Clone and set the DOOMDIR folder 7 | 8 | RUN git clone --depth 1 https://github.com/hlissner/doom-emacs /home/gitpod/doom/ --branch develop 9 | COPY configs /home/gitpod/.config/doom 10 | 11 | ## Sync to install modules and packages 12 | RUN ulimit -n 9000 13 | RUN EMACS=~/emacs/src/emacs ~/doom/bin/doom sync 14 | -------------------------------------------------------------------------------- /docker/doom/configs/config.el: -------------------------------------------------------------------------------- 1 | ;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- 2 | 3 | ;;; NOTE: This is a slimmed down version of doom-emacs/core/templates/config.example.el 4 | 5 | (setq user-full-name "Gill Pod" 6 | user-mail-address "gill@examble.com") 7 | (setq doom-theme 'doom-one) 8 | (setq display-line-numbers-type t) 9 | 10 | (load "~/startup.el") 11 | -------------------------------------------------------------------------------- /docker/doom/configs/init.el: -------------------------------------------------------------------------------- 1 | ;;; init.el -*- lexical-binding: t; -*- 2 | 3 | ;; NOTE: this is a slimmed down version of doom-emacs/init.example.el 4 | 5 | (setq no-native-compile t 6 | straight-disable-native-compile t) 7 | 8 | (doom! :completion 9 | company ; the ultimate code completion backend 10 | vertico ; the search engine of the future 11 | 12 | :ui 13 | doom ; what makes DOOM look the way it does 14 | doom-dashboard ; a nifty splash screen for Emacs 15 | doom-quit ; DOOM quit-message prompts when you quit Emacs 16 | hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW 17 | (modeline +light) ; snazzy, Atom-inspired modeline, plus API 18 | ophints ; highlight the region an operation acts on 19 | (popup +defaults) ; tame sudden yet inevitable temporary windows 20 | (treemacs +lsp) ; a project drawer, like neotree but cooler 21 | vc-gutter ; vcs diff in the fringe 22 | vi-tilde-fringe ; fringe tildes to mark beyond EOB 23 | workspaces ; tab emulation, persistence & separate workspaces 24 | 25 | :editor 26 | (evil +everywhere); come to the dark side, we have cookies 27 | file-templates ; auto-snippets for empty files 28 | fold ; (nigh) universal code folding 29 | (format +onsave) ; automated prettiness 30 | snippets ; my elves. They type so I don't have to 31 | 32 | :emacs 33 | dired ; making dired pretty [functional] 34 | electric ; smarter, keyword-based electric-indent 35 | undo ; persistent, smarter undo for your inevitable mistakes 36 | vc ; version-control and Emacs, sitting in a tree 37 | 38 | :term 39 | vterm 40 | 41 | :checkers 42 | syntax ; tasing you for every semicolon you forget 43 | 44 | :tools 45 | (debugger +lsp) ; FIXME stepping through code, to help you add bugs 46 | editorconfig ; let someone else argue about tabs vs spaces 47 | (eval +overlay) ; run code, run (also, repls) 48 | lookup ; navigate your code and its documentation 49 | (lsp +peek) ; M-x vscode 50 | magit ; a git porcelain for Emacs 51 | 52 | :os 53 | (:if IS-MAC macos) ; improve compatibility with macOS 54 | ;;tty ; improve the terminal Emacs experience 55 | 56 | :lang 57 | ;;agda ; types of types of types of types... 58 | ;;beancount ; mind the GAAP 59 | (cc +lsp) ; C > C++ == 1 60 | (clojure +lsp) ; java with a lisp 61 | ;;common-lisp ; if you've seen one lisp, you've seen them all 62 | ;;coq ; proofs-as-programs 63 | ;;crystal ; ruby at the speed of c 64 | (csharp +lsp) ; unity, .NET, and mono shenanigans 65 | ;;data ; config/data formats 66 | (dart +lsp +flutter) ; paint ui and not much else 67 | ;;elixir ; erlang done right 68 | ;;elm ; care for a cup of TEA? 69 | emacs-lisp ; drown in parentheses 70 | ;;erlang ; an elegant language for a more civilized age 71 | ;;ess ; emacs speaks statistics 72 | ;;factor 73 | ;;faust ; dsp, but you get to keep your soul 74 | ;;fsharp ; ML stands for Microsoft's Language 75 | ;;fstar ; (dependent) types and (monadic) effects and Z3 76 | ;;gdscript ; the language you waited for 77 | (go +lsp) ; the hipster dialect 78 | (haskell +dante +lsp) ; a language that's lazier than I am 79 | ;;hy ; readability of scheme w/ speed of python 80 | ;;idris ; a language you can depend on 81 | json ; At least it ain't XML 82 | (java +meghanada +lsp) ; the poster child for carpal tunnel syndrome 83 | (javascript +lsp) ; all(hope(abandon(ye(who(enter(here)))))) 84 | (julia +lsp) ; a better, faster MATLAB 85 | ;;kotlin ; a better, slicker Java(Script) 86 | ;;latex ; writing papers in Emacs has never been so fun 87 | ;;lean ; for folks with too much to prove 88 | ;;ledger ; be audit you can be 89 | (lua +lsp) ; one-based indices? one-based indices 90 | markdown ; writing docs for people to ignore 91 | ;;nim ; python + lisp at the speed of c 92 | nix ; I hereby declare "nix geht mehr!" 93 | ;;ocaml ; an objective camel 94 | org ; organize your plain life in plain text 95 | ;;php ; perl's insecure younger brother 96 | ;;plantuml ; diagrams for confusing people more 97 | ;;purescript ; javascript, but functional 98 | (python +lsp) ; beautiful is better than ugly 99 | ;;qt ; the 'cutest' gui framework ever 100 | ;;racket ; a DSL for DSLs 101 | ;;raku ; the artist formerly known as perl6 102 | ;;rest ; Emacs as a REST client 103 | ;;rst ; ReST in peace 104 | (ruby +rails +lsp) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} 105 | (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() 106 | (scala +lsp) ; java, but good 107 | (scheme +guile) ; a fully conniving family of lisps 108 | sh ; she sells {ba,z,fi}sh shells on the C xor 109 | ;;sml 110 | ;;solidity ; do you need a blockchain? No. 111 | ;;swift ; who asked for emoji variables? 112 | ;;terra ; Earth and Moon in alignment for performance. 113 | ;;web ; the tubes 114 | ;;yaml ; JSON, but readable 115 | (zig +lsp) ; C, but simpler 116 | 117 | :config 118 | (default +bindings +smartparens)) 119 | -------------------------------------------------------------------------------- /docker/spacemacs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yyoncho/gitpod-base:1.0.9 2 | 3 | USER gitpod 4 | 5 | RUN rm -rf ~/.emacs.d 6 | 7 | RUN git clone --depth 1 https://github.com/syl20bnr/spacemacs /home/gitpod/.emacs.d/ --branch develop 8 | COPY spacemacs.d /home/gitpod/.spacemacs.d 9 | 10 | # RUN SPACEMACSDIR=~/.spacemacs.d ~/emacs/src/emacs --batch -l ~/.emacs.d/init.el -e "wait-for-native-comp" 11 | COPY initialize-spacemacs.el /home/gitpod/initialize-spacemacs.el 12 | 13 | RUN LSP_USE_PLISTS=true SPACEMACSDIR=~/.spacemacs.d ~/emacs/src/emacs --batch -l /home/gitpod/initialize-spacemacs.el 14 | -------------------------------------------------------------------------------- /docker/spacemacs/initialize-spacemacs.el: -------------------------------------------------------------------------------- 1 | (setq package-native-compile t) 2 | (setq native-comp-deferred-compilation nil) 3 | (setq native-comp-async-jobs-number 8) 4 | 5 | (advice-add 6 | 'native-compile-async :before 7 | (lambda (files &optional recursively load selector) 8 | (message "XXX: byte compiling %s, queue size = %s" files (length comp-files-queue)))) 9 | 10 | (load "/home/gitpod/.emacs.d/init.el") 11 | 12 | (message "Native compilation to finish. %s" (length comp-files-queue)) 13 | 14 | (while comp-files-queue 15 | (message "Waiting for native compilation to finish. %s" (length comp-files-queue)) 16 | (accept-process-output nil 5)) 17 | -------------------------------------------------------------------------------- /docker/spacemacs/spacemacs.d/init.el: -------------------------------------------------------------------------------- 1 | ;; temporary 2 | (setq package-native-compile t 3 | comp-async-jobs-number 8 4 | native-comp-deferred-compilation nil 5 | native-comp-async-report-warnings-errors nil 6 | lsp-use-plists t) 7 | 8 | ;; -*- mode: emacs-lisp; lexical-binding: t -*- 9 | ;; This file is loaded by Spacemacs at startup. 10 | ;; It must be stored in your home directory. 11 | 12 | (defun dotspacemacs/layers () 13 | "Layer configuration: 14 | This function should only modify configuration layer settings." 15 | (setq-default 16 | ;; Base distribution to use. This is a layer contained in the directory 17 | ;; `+distribution'. For now available distributions are `spacemacs-base' 18 | ;; or `spacemacs'. (default 'spacemacs) 19 | dotspacemacs-distribution 'spacemacs 20 | 21 | ;; Lazy installation of layers (i.e. layers are installed only when a file 22 | ;; with a supported type is opened). Possible values are `all', `unused' 23 | ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers 24 | ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will 25 | ;; lazy install any layer that support lazy installation even the layers 26 | ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy 27 | ;; installation feature and you have to explicitly list a layer in the 28 | ;; variable `dotspacemacs-configuration-layers' to install it. 29 | ;; (default 'unused) 30 | dotspacemacs-enable-lazy-installation 'unused 31 | 32 | ;; If non-nil then Spacemacs will ask for confirmation before installing 33 | ;; a layer lazily. (default t) 34 | dotspacemacs-ask-for-lazy-installation t 35 | 36 | ;; List of additional paths where to look for configuration layers. 37 | ;; Paths must have a trailing slash (i.e. `~/.mycontribs/') 38 | dotspacemacs-configuration-layer-path '() 39 | 40 | ;; List of configuration layers to load. 41 | dotspacemacs-configuration-layers 42 | '((javascript :variables javascript-backend 'lsp) 43 | (rust :variables rust-backend 'lsp) 44 | react 45 | dart 46 | go 47 | typescript 48 | rust 49 | (html :variables html-enable-lsp t) 50 | yaml 51 | (python :variables python-lsp-server 'pyright) 52 | emacs-lisp 53 | git 54 | helm 55 | fasd 56 | (lsp :variables 57 | lsp-ui-doc-enable nil 58 | lsp-ui-sideline-enable nil) 59 | (shell :variables shell-default-shell 'vterm) 60 | dap 61 | syntax-checking 62 | treemacs 63 | (c-c++ :variables c-c++-backend 'lsp-clangd) 64 | (auto-completion :variables auto-completion-enable-help-tooltip t) 65 | vinegar 66 | (java :variables java-backend 'lsp) 67 | markdown 68 | (treemacs :variables 69 | treemacs-space-between-root-nodes nil 70 | treemacs-wrap-around nil 71 | treemacs-use-follow-mode nil 72 | treemacs-use-git-mode nil) 73 | (clojure :variables clojure-enable-clj-refactor t)) 74 | 75 | ;; List of additional packages that will be installed without being wrapped 76 | ;; in a layer (generally the packages are installed only and should still be 77 | ;; loaded using load/require/use-package in the user-config section below in 78 | ;; this file). If you need some configuration for these packages, then 79 | ;; consider creating a layer. You can also put the configuration in 80 | ;; `dotspacemacs/user-config'. To use a local version of a package, use the 81 | ;; `:location' property: '(your-package :location "~/path/to/your-package/") 82 | ;; Also include the dependencies as they will not be resolved automatically. 83 | dotspacemacs-additional-packages '(helm-icons) 84 | 85 | ;; A list of packages that cannot be updated. 86 | dotspacemacs-frozen-packages '() 87 | 88 | ;; A list of packages that will not be installed and loaded. 89 | dotspacemacs-excluded-packages '() 90 | 91 | ;; Defines the behaviour of Spacemacs when installing packages. 92 | ;; Possible values are `used-only', `used-but-keep-unused' and `all'. 93 | ;; `used-only' installs only explicitly used packages and deletes any unused 94 | ;; packages as well as their unused dependencies. `used-but-keep-unused' 95 | ;; installs only the used packages but won't delete unused ones. `all' 96 | ;; installs *all* packages supported by Spacemacs and never uninstalls them. 97 | ;; (default is `used-only') 98 | dotspacemacs-install-packages 'used-only)) 99 | 100 | (defun dotspacemacs/init () 101 | "Initialization: 102 | This function is called at the very beginning of Spacemacs startup, 103 | before layer configuration. 104 | It should only modify the values of Spacemacs settings." 105 | ;; This setq-default sexp is an exhaustive list of all the supported 106 | ;; spacemacs settings. 107 | (setq-default 108 | ;; If non-nil then enable support for the portable dumper. You'll need 109 | ;; to compile Emacs 27 from source following the instructions in file 110 | ;; EXPERIMENTAL.org at to root of the git repository. 111 | ;; (default nil) 112 | dotspacemacs-enable-emacs-pdumper nil 113 | 114 | ;; Name of executable file pointing to emacs 27+. This executable must be 115 | ;; in your PATH. 116 | ;; (default "emacs") 117 | dotspacemacs-emacs-pdumper-executable-file "emacs" 118 | 119 | ;; Name of the Spacemacs dump file. This is the file will be created by the 120 | ;; portable dumper in the cache directory under dumps sub-directory. 121 | ;; To load it when starting Emacs add the parameter `--dump-file' 122 | ;; when invoking Emacs 27.1 executable on the command line, for instance: 123 | ;; ./emacs --dump-file=$HOME/.emacs.d/.cache/dumps/spacemacs-27.1.pdmp 124 | ;; (default (format "spacemacs-%s.pdmp" emacs-version)) 125 | dotspacemacs-emacs-dumper-dump-file (format "spacemacs-%s.pdmp" emacs-version) 126 | 127 | ;; If non-nil ELPA repositories are contacted via HTTPS whenever it's 128 | ;; possible. Set it to nil if you have no way to use HTTPS in your 129 | ;; environment, otherwise it is strongly recommended to let it set to t. 130 | ;; This variable has no effect if Emacs is launched with the parameter 131 | ;; `--insecure' which forces the value of this variable to nil. 132 | ;; (default t) 133 | dotspacemacs-elpa-https t 134 | 135 | ;; Maximum allowed time in seconds to contact an ELPA repository. 136 | ;; (default 5) 137 | dotspacemacs-elpa-timeout 5 138 | 139 | ;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes. 140 | ;; This is an advanced option and should not be changed unless you suspect 141 | ;; performance issues due to garbage collection operations. 142 | ;; (default '(100000000 0.1)) 143 | dotspacemacs-gc-cons '(100000000 0.1) 144 | 145 | ;; Set `read-process-output-max' when startup finishes. 146 | ;; This defines how much data is read from a foreign process. 147 | ;; Setting this >= 1 MB should increase performance for lsp servers 148 | ;; in emacs 27. 149 | ;; (default (* 1024 1024)) 150 | dotspacemacs-read-process-output-max (* 1024 1024) 151 | 152 | ;; If non-nil then Spacelpa repository is the primary source to install 153 | ;; a locked version of packages. If nil then Spacemacs will install the 154 | ;; latest version of packages from MELPA. Spacelpa is currently in 155 | ;; experimental state please use only for testing purposes. 156 | ;; (default nil) 157 | dotspacemacs-use-spacelpa nil 158 | 159 | ;; If non-nil then verify the signature for downloaded Spacelpa archives. 160 | ;; (default t) 161 | dotspacemacs-verify-spacelpa-archives t 162 | 163 | ;; If non-nil then spacemacs will check for updates at startup 164 | ;; when the current branch is not `develop'. Note that checking for 165 | ;; new versions works via git commands, thus it calls GitHub services 166 | ;; whenever you start Emacs. (default nil) 167 | dotspacemacs-check-for-update nil 168 | 169 | ;; If non-nil, a form that evaluates to a package directory. For example, to 170 | ;; use different package directories for different Emacs versions, set this 171 | ;; to `emacs-version'. (default 'emacs-version) 172 | dotspacemacs-elpa-subdirectory 'emacs-version 173 | 174 | ;; One of `vim', `emacs' or `hybrid'. 175 | ;; `hybrid' is like `vim' except that `insert state' is replaced by the 176 | ;; `hybrid state' with `emacs' key bindings. The value can also be a list 177 | ;; with `:variables' keyword (similar to layers). Check the editing styles 178 | ;; section of the documentation for details on available variables. 179 | ;; (default 'vim) 180 | dotspacemacs-editing-style 'hybrid 181 | 182 | ;; If non-nil show the version string in the Spacemacs buffer. It will 183 | ;; appear as (spacemacs version)@(emacs version) 184 | ;; (default t) 185 | dotspacemacs-startup-buffer-show-version t 186 | 187 | ;; Specify the startup banner. Default value is `official', it displays 188 | ;; the official spacemacs logo. An integer value is the index of text 189 | ;; banner, `random' chooses a random text banner in `core/banners' 190 | ;; directory. A string value must be a path to an image format supported 191 | ;; by your Emacs build. 192 | ;; If the value is nil then no banner is displayed. (default 'official) 193 | dotspacemacs-startup-banner 'official 194 | 195 | ;; List of items to show in startup buffer or an association list of 196 | ;; the form `(list-type . list-size)`. If nil then it is disabled. 197 | ;; Possible values for list-type are: 198 | ;; `recents' `recents-by-project' `bookmarks' `projects' `agenda' `todos'. 199 | ;; List sizes may be nil, in which case 200 | ;; `spacemacs-buffer-startup-lists-length' takes effect. 201 | ;; The exceptional case is `recents-by-project', where list-type must be a 202 | ;; pair of numbers, e.g. `(recents-by-project . (7 . 5))', where the first 203 | ;; number is the project limit and the second the limit on the recent files 204 | ;; within a project. 205 | dotspacemacs-startup-lists '((recents . 5) 206 | (projects . 7)) 207 | 208 | ;; True if the home buffer should respond to resize events. (default t) 209 | dotspacemacs-startup-buffer-responsive t 210 | 211 | ;; Show numbers before the startup list lines. (default t) 212 | dotspacemacs-show-startup-list-numbers t 213 | 214 | ;; The minimum delay in seconds between number key presses. (default 0.4) 215 | dotspacemacs-startup-buffer-multi-digit-delay 0.4 216 | 217 | ;; Default major mode for a new empty buffer. Possible values are mode 218 | ;; names such as `text-mode'; and `nil' to use Fundamental mode. 219 | ;; (default `text-mode') 220 | dotspacemacs-new-empty-buffer-major-mode 'text-mode 221 | 222 | ;; Default major mode of the scratch buffer (default `text-mode') 223 | dotspacemacs-scratch-mode 'text-mode 224 | 225 | ;; If non-nil, *scratch* buffer will be persistent. Things you write down in 226 | ;; *scratch* buffer will be saved and restored automatically. 227 | dotspacemacs-scratch-buffer-persistent nil 228 | 229 | ;; If non-nil, `kill-buffer' on *scratch* buffer 230 | ;; will bury it instead of killing. 231 | dotspacemacs-scratch-buffer-unkillable nil 232 | 233 | ;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!" 234 | ;; (default nil) 235 | dotspacemacs-initial-scratch-message nil 236 | 237 | ;; List of themes, the first of the list is loaded when spacemacs starts. 238 | ;; Press `SPC T n' to cycle to the next theme in the list (works great 239 | ;; with 2 themes variants, one dark and one light) 240 | dotspacemacs-themes '(spacemacs-light 241 | spacemacs-dark) 242 | 243 | ;; Set the theme for the Spaceline. Supported themes are `spacemacs', 244 | ;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The 245 | ;; first three are spaceline themes. `doom' is the doom-emacs mode-line. 246 | ;; `vanilla' is default Emacs mode-line. `custom' is a user defined themes, 247 | ;; refer to the DOCUMENTATION.org for more info on how to create your own 248 | ;; spaceline theme. Value can be a symbol or list with additional properties. 249 | ;; (default '(spacemacs :separator wave :separator-scale 1.5)) 250 | dotspacemacs-mode-line-theme 'doom 251 | 252 | ;; If non-nil the cursor color matches the state color in GUI Emacs. 253 | ;; (default t) 254 | dotspacemacs-colorize-cursor-according-to-state t 255 | 256 | ;; Default font or prioritized list of fonts. The `:size' can be specified as 257 | ;; a non-negative integer (pixel size), or a floating-point (point size). 258 | ;; Point size is recommended, because it's device independent. (default 10.0) 259 | dotspacemacs-default-font '("JetBrains Mono Light" :size 11.0) 260 | 261 | ;; The leader key (default "SPC") 262 | dotspacemacs-leader-key "SPC" 263 | 264 | ;; The key used for Emacs commands `M-x' (after pressing on the leader key). 265 | ;; (default "SPC") 266 | dotspacemacs-emacs-command-key "SPC" 267 | 268 | ;; The key used for Vim Ex commands (default ":") 269 | dotspacemacs-ex-command-key ":" 270 | 271 | ;; The leader key accessible in `emacs state' and `insert state' 272 | ;; (default "M-m") 273 | dotspacemacs-emacs-leader-key "M-m" 274 | 275 | ;; Major mode leader key is a shortcut key which is the equivalent of 276 | ;; pressing ` m`. Set it to `nil` to disable it. (default ",") 277 | dotspacemacs-major-mode-leader-key "," 278 | 279 | ;; Major mode leader key accessible in `emacs state' and `insert state'. 280 | ;; (default "C-M-m" for terminal mode, "" for GUI mode). 281 | ;; Thus M-RET should work as leader key in both GUI and terminal modes. 282 | ;; C-M-m also should work in terminal mode, but not in GUI mode. 283 | dotspacemacs-major-mode-emacs-leader-key (if window-system "" "C-M-m") 284 | 285 | ;; These variables control whether separate commands are bound in the GUI to 286 | ;; the key pairs `C-i', `TAB' and `C-m', `RET'. 287 | ;; Setting it to a non-nil value, allows for separate commands under `C-i' 288 | ;; and TAB or `C-m' and `RET'. 289 | ;; In the terminal, these pairs are generally indistinguishable, so this only 290 | ;; works in the GUI. (default nil) 291 | dotspacemacs-distinguish-gui-tab nil 292 | 293 | ;; Name of the default layout (default "Default") 294 | dotspacemacs-default-layout-name "Default" 295 | 296 | ;; If non-nil the default layout name is displayed in the mode-line. 297 | ;; (default nil) 298 | dotspacemacs-display-default-layout nil 299 | 300 | ;; If non-nil then the last auto saved layouts are resumed automatically upon 301 | ;; start. (default nil) 302 | dotspacemacs-auto-resume-layouts nil 303 | 304 | ;; If non-nil, auto-generate layout name when creating new layouts. Only has 305 | ;; effect when using the "jump to layout by number" commands. (default nil) 306 | dotspacemacs-auto-generate-layout-names nil 307 | 308 | ;; Size (in MB) above which spacemacs will prompt to open the large file 309 | ;; literally to avoid performance issues. Opening a file literally means that 310 | ;; no major mode or minor modes are active. (default is 1) 311 | dotspacemacs-large-file-size 1 312 | 313 | ;; Location where to auto-save files. Possible values are `original' to 314 | ;; auto-save the file in-place, `cache' to auto-save the file to another 315 | ;; file stored in the cache directory and `nil' to disable auto-saving. 316 | ;; (default 'cache) 317 | dotspacemacs-auto-save-file-location 'cache 318 | 319 | ;; Maximum number of rollback slots to keep in the cache. (default 5) 320 | dotspacemacs-max-rollback-slots 5 321 | 322 | ;; If non-nil, the paste transient-state is enabled. While enabled, after you 323 | ;; paste something, pressing `C-j' and `C-k' several times cycles through the 324 | ;; elements in the `kill-ring'. (default nil) 325 | dotspacemacs-enable-paste-transient-state nil 326 | 327 | ;; Which-key delay in seconds. The which-key buffer is the popup listing 328 | ;; the commands bound to the current keystroke sequence. (default 0.4) 329 | dotspacemacs-which-key-delay 0.4 330 | 331 | ;; Which-key frame position. Possible values are `right', `bottom' and 332 | ;; `right-then-bottom'. right-then-bottom tries to display the frame to the 333 | ;; right; if there is insufficient space it displays it at the bottom. 334 | ;; (default 'bottom) 335 | dotspacemacs-which-key-position 'bottom 336 | 337 | ;; Control where `switch-to-buffer' displays the buffer. If nil, 338 | ;; `switch-to-buffer' displays the buffer in the current window even if 339 | ;; another same-purpose window is available. If non-nil, `switch-to-buffer' 340 | ;; displays the buffer in a same-purpose window even if the buffer can be 341 | ;; displayed in the current window. (default nil) 342 | dotspacemacs-switch-to-buffer-prefers-purpose nil 343 | 344 | ;; If non-nil a progress bar is displayed when spacemacs is loading. This 345 | ;; may increase the boot time on some systems and emacs builds, set it to 346 | ;; nil to boost the loading time. (default t) 347 | dotspacemacs-loading-progress-bar t 348 | 349 | ;; If non-nil the frame is fullscreen when Emacs starts up. (default nil) 350 | ;; (Emacs 24.4+ only) 351 | dotspacemacs-fullscreen-at-startup nil 352 | 353 | ;; If non-nil `spacemacs/toggle-fullscreen' will not use native fullscreen. 354 | ;; Use to disable fullscreen animations in OSX. (default nil) 355 | dotspacemacs-fullscreen-use-non-native nil 356 | 357 | ;; If non-nil the frame is maximized when Emacs starts up. 358 | ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. 359 | ;; (default nil) (Emacs 24.4+ only) 360 | dotspacemacs-maximized-at-startup nil 361 | 362 | ;; If non-nil the frame is undecorated when Emacs starts up. Combine this 363 | ;; variable with `dotspacemacs-maximized-at-startup' in OSX to obtain 364 | ;; borderless fullscreen. (default nil) 365 | dotspacemacs-undecorated-at-startup nil 366 | 367 | ;; A value from the range (0..100), in increasing opacity, which describes 368 | ;; the transparency level of a frame when it's active or selected. 369 | ;; Transparency can be toggled through `toggle-transparency'. (default 90) 370 | dotspacemacs-active-transparency 90 371 | 372 | ;; A value from the range (0..100), in increasing opacity, which describes 373 | ;; the transparency level of a frame when it's inactive or deselected. 374 | ;; Transparency can be toggled through `toggle-transparency'. (default 90) 375 | dotspacemacs-inactive-transparency 90 376 | 377 | ;; If non-nil show the titles of transient states. (default t) 378 | dotspacemacs-show-transient-state-title t 379 | 380 | ;; If non-nil show the color guide hint for transient state keys. (default t) 381 | dotspacemacs-show-transient-state-color-guide t 382 | 383 | ;; If non-nil unicode symbols are displayed in the mode line. 384 | ;; If you use Emacs as a daemon and wants unicode characters only in GUI set 385 | ;; the value to quoted `display-graphic-p'. (default t) 386 | dotspacemacs-mode-line-unicode-symbols t 387 | 388 | ;; If non-nil smooth scrolling (native-scrolling) is enabled. Smooth 389 | ;; scrolling overrides the default behavior of Emacs which recenters point 390 | ;; when it reaches the top or bottom of the screen. (default t) 391 | dotspacemacs-smooth-scrolling t 392 | 393 | ;; Show the scroll bar while scrolling. The auto hide time can be configured 394 | ;; by setting this variable to a number. (default t) 395 | dotspacemacs-scroll-bar-while-scrolling t 396 | 397 | ;; Control line numbers activation. 398 | ;; If set to `t', `relative' or `visual' then line numbers are enabled in all 399 | ;; `prog-mode' and `text-mode' derivatives. If set to `relative', line 400 | ;; numbers are relative. If set to `visual', line numbers are also relative, 401 | ;; but lines are only visual lines are counted. For example, folded lines 402 | ;; will not be counted and wrapped lines are counted as multiple lines. 403 | ;; This variable can also be set to a property list for finer control: 404 | ;; '(:relative nil 405 | ;; :visual nil 406 | ;; :disabled-for-modes dired-mode 407 | ;; doc-view-mode 408 | ;; markdown-mode 409 | ;; org-mode 410 | ;; pdf-view-mode 411 | ;; text-mode 412 | ;; :size-limit-kb 1000) 413 | ;; When used in a plist, `visual' takes precedence over `relative'. 414 | ;; (default nil) 415 | dotspacemacs-line-numbers nil 416 | 417 | ;; Code folding method. Possible values are `evil', `origami' and `vimish'. 418 | ;; (default 'evil) 419 | dotspacemacs-folding-method 'evil 420 | 421 | ;; If non-nil and `dotspacemacs-activate-smartparens-mode' is also non-nil, 422 | ;; `smartparens-strict-mode' will be enabled in programming modes. 423 | ;; (default nil) 424 | dotspacemacs-smartparens-strict-mode nil 425 | 426 | ;; If non-nil smartparens-mode will be enabled in programming modes. 427 | ;; (default t) 428 | dotspacemacs-activate-smartparens-mode t 429 | 430 | ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes 431 | ;; over any automatically added closing parenthesis, bracket, quote, etc... 432 | ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) 433 | dotspacemacs-smart-closing-parenthesis nil 434 | 435 | ;; Select a scope to highlight delimiters. Possible values are `any', 436 | ;; `current', `all' or `nil'. Default is `all' (highlight any scope and 437 | ;; emphasis the current one). (default 'all) 438 | dotspacemacs-highlight-delimiters 'all 439 | 440 | ;; If non-nil, start an Emacs server if one is not already running. 441 | ;; (default nil) 442 | dotspacemacs-enable-server nil 443 | 444 | ;; Set the emacs server socket location. 445 | ;; If nil, uses whatever the Emacs default is, otherwise a directory path 446 | ;; like \"~/.emacs.d/server\". It has no effect if 447 | ;; `dotspacemacs-enable-server' is nil. 448 | ;; (default nil) 449 | dotspacemacs-server-socket-dir nil 450 | 451 | ;; If non-nil, advise quit functions to keep server open when quitting. 452 | ;; (default nil) 453 | dotspacemacs-persistent-server nil 454 | 455 | ;; List of search tool executable names. Spacemacs uses the first installed 456 | ;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'. 457 | ;; (default '("rg" "ag" "pt" "ack" "grep")) 458 | dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep") 459 | 460 | ;; Format specification for setting the frame title. 461 | ;; %a - the `abbreviated-file-name', or `buffer-name' 462 | ;; %t - `projectile-project-name' 463 | ;; %I - `invocation-name' 464 | ;; %S - `system-name' 465 | ;; %U - contents of $USER 466 | ;; %b - buffer name 467 | ;; %f - visited file name 468 | ;; %F - frame name 469 | ;; %s - process status 470 | ;; %p - percent of buffer above top of window, or Top, Bot or All 471 | ;; %P - percent of buffer above bottom of window, perhaps plus Top, or Bot or All 472 | ;; %m - mode name 473 | ;; %n - Narrow if appropriate 474 | ;; %z - mnemonics of buffer, terminal, and keyboard coding systems 475 | ;; %Z - like %z, but including the end-of-line format 476 | ;; If nil then Spacemacs uses default `frame-title-format' to avoid 477 | ;; performance issues, instead of calculating the frame title by 478 | ;; `spacemacs/title-prepare' all the time. 479 | ;; (default "%I@%S") 480 | dotspacemacs-frame-title-format "%I@%S" 481 | 482 | ;; Format specification for setting the icon title format 483 | ;; (default nil - same as frame-title-format) 484 | dotspacemacs-icon-title-format nil 485 | 486 | ;; Show trailing whitespace (default t) 487 | dotspacemacs-show-trailing-whitespace t 488 | 489 | ;; Delete whitespace while saving buffer. Possible values are `all' 490 | ;; to aggressively delete empty line and long sequences of whitespace, 491 | ;; `trailing' to delete only the whitespace at end of lines, `changed' to 492 | ;; delete only whitespace for changed lines or `nil' to disable cleanup. 493 | ;; (default nil) 494 | dotspacemacs-whitespace-cleanup 'trailing 495 | 496 | ;; If non nil activate `clean-aindent-mode' which tries to correct 497 | ;; virtual indentation of simple modes. This can interfer with mode specific 498 | ;; indent handling like has been reported for `go-mode'. 499 | ;; If it does deactivate it here. 500 | ;; (default t) 501 | dotspacemacs-use-clean-aindent-mode t 502 | 503 | ;; Accept SPC as y for prompts if non nil. (default nil) 504 | dotspacemacs-use-SPC-as-y nil 505 | 506 | ;; If non-nil shift your number row to match the entered keyboard layout 507 | ;; (only in insert state). Currently supported keyboard layouts are: 508 | ;; `qwerty-us', `qwertz-de' and `querty-ca-fr'. 509 | ;; New layouts can be added in `spacemacs-editing' layer. 510 | ;; (default nil) 511 | dotspacemacs-swap-number-row nil 512 | 513 | ;; Either nil or a number of seconds. If non-nil zone out after the specified 514 | ;; number of seconds. (default nil) 515 | dotspacemacs-zone-out-when-idle nil 516 | 517 | ;; Run `spacemacs/prettify-org-buffer' when 518 | ;; visiting README.org files of Spacemacs. 519 | ;; (default nil) 520 | dotspacemacs-pretty-docs nil 521 | 522 | ;; If nil the home buffer shows the full path of agenda items 523 | ;; and todos. If non nil only the file name is shown. 524 | dotspacemacs-home-shorten-agenda-source nil 525 | 526 | ;; If non-nil then byte-compile some of Spacemacs files. 527 | dotspacemacs-byte-compile t)) 528 | 529 | (defun dotspacemacs/user-env () 530 | "Environment variables setup. 531 | This function defines the environment variables for your Emacs session. By 532 | default it calls `spacemacs/load-spacemacs-env' which loads the environment 533 | variables declared in `~/.spacemacs.env' or `~/.spacemacs.d/.spacemacs.env'. 534 | See the header of this file for more information." 535 | (spacemacs/load-spacemacs-env)) 536 | 537 | (defun dotspacemacs/user-init () 538 | "Initialization for user code: 539 | This function is called immediately after `dotspacemacs/init', before layer 540 | configuration. 541 | It is mostly for variables that should be set before packages are loaded. 542 | If you are unsure, try setting them in `dotspacemacs/user-config' first." 543 | ) 544 | 545 | 546 | (defun dotspacemacs/user-load () 547 | "Library to load while dumping. 548 | This function is called only while dumping Spacemacs configuration. You can 549 | `require' or `load' the libraries of your choice that will be included in the 550 | dump.") 551 | 552 | (defun dotspacemacs/user-config () 553 | "Configuration for user code: 554 | This function is called at the very end of Spacemacs startup, after layer 555 | configuration. 556 | Put your configuration code here, except for variables that should be set 557 | before packages are loaded." 558 | ;; load common stuff 559 | 560 | (require 'helm-icons) 561 | (helm-icons-enable) 562 | 563 | (add-hook 'prog-mode-hook 'evil-cleverparens-mode) 564 | (add-hook 'web-mode-hook 'evil-cleverparens-mode) 565 | (add-hook 'web-mode-hook 'smartparens-mode) 566 | 567 | (with-eval-after-load 'treemacs-icons 568 | (treemacs-resize-icons 15)) 569 | 570 | (setq gc-cons-threshold (* 100 1024 1024) 571 | read-process-output-max (* 1024 1024) 572 | company-idle-delay 0.0 573 | company-minimum-prefix-length 1 574 | 575 | ;; lock file will kill `npm start' 576 | create-lockfiles nil 577 | inhibit-splash-screen t 578 | inhibit-startup-message t 579 | 580 | ;; avoid resizing of popup while typing. 581 | company-tooltip-maximum-width 60 582 | company-tooltip-minimum-width 60 583 | 584 | ;; less noise 585 | company-frontends '(company-pseudo-tooltip-frontend) 586 | 587 | ;; less noise 588 | lsp-completion-show-detail nil 589 | lsp-completion-show-kind nil 590 | 591 | ;; less noise/faster 592 | helm-buffer-details-flag nil 593 | 594 | lsp-idle-delay 0.1 595 | lsp-signature-function #'lsp-signature-posframe 596 | 597 | ;; faster details popup 598 | company-quickhelp-delay 0.1 599 | 600 | ;; evil improvements 601 | evil-move-beyond-eol t 602 | evil-cross-lines t) 603 | 604 | (with-eval-after-load 'vterm 605 | (setq vterm-shell "/bin/bash")) 606 | 607 | (add-hook 'dired-mode-hook #'lsp-dired-mode) 608 | 609 | (load "~/startup.el")) 610 | -------------------------------------------------------------------------------- /gitpod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-lsp/lsp-gitpod/94978551e6a663ccc765fa7ef0748442c82c390d/gitpod.png --------------------------------------------------------------------------------