Repository: MashMB/nvim-ide Branch: master Commit: 3c9b2b1aabc0 Files: 59 Total size: 44.7 KB Directory structure: gitextract_n3vngbze/ ├── .gitignore ├── LICENSE.md ├── Makefile ├── README.md ├── nvim/ │ ├── Dockerfile │ ├── config/ │ │ ├── airline/ │ │ │ └── airline.vim │ │ ├── coc/ │ │ │ ├── coc.vim │ │ │ └── extensions.vim │ │ ├── coc-settings.json │ │ ├── fzf/ │ │ │ └── fzf.vim │ │ ├── general/ │ │ │ ├── keys.vim │ │ │ └── settings.vim │ │ ├── git/ │ │ │ ├── fugitive.vim │ │ │ └── fzf-checkout.vim │ │ ├── gruvbox/ │ │ │ └── gruvbox.vim │ │ ├── init.vim │ │ ├── nerdtree/ │ │ │ ├── nerdtree-git.vim │ │ │ └── nerdtree.vim │ │ ├── startify/ │ │ │ └── startify.vim │ │ ├── telescope/ │ │ │ └── telescope.vim │ │ ├── treesitter/ │ │ │ └── treesitter.vim │ │ └── vimspector/ │ │ └── vimspector.vim │ ├── home/ │ │ └── .bashrc │ └── spell/ │ ├── pl.utf-8.spl │ └── uk.utf-8.spl ├── nvim-flutter/ │ ├── Dockerfile │ ├── config/ │ │ ├── coc/ │ │ │ └── extensions.vim │ │ ├── coc-settings.json │ │ └── treesitter/ │ │ └── treesitter.vim │ └── home/ │ └── .bashrc ├── nvim-go/ │ ├── Dockerfile │ └── config/ │ ├── coc/ │ │ └── extensions.vim │ ├── coc-settings.json │ └── treesitter/ │ └── treesitter.vim ├── nvim-jdk8/ │ ├── Dockerfile │ ├── config/ │ │ ├── coc/ │ │ │ └── extensions.vim │ │ ├── coc-settings.json │ │ └── treesitter/ │ │ └── treesitter.vim │ └── home/ │ └── .bashrc ├── nvim-latex/ │ ├── Dockerfile │ └── config/ │ ├── coc/ │ │ └── extensions.vim │ ├── coc-settings.json │ └── treesitter/ │ └── treesitter.vim ├── nvim-ojdk11/ │ ├── Dockerfile │ └── config/ │ ├── coc/ │ │ └── extensions.vim │ ├── coc-settings.json │ └── treesitter/ │ └── treesitter.vim ├── nvim-ojdk17/ │ ├── Dockerfile │ └── config/ │ ├── coc/ │ │ └── extensions.vim │ ├── coc-settings.json │ └── treesitter/ │ └── treesitter.vim ├── nvim-python3/ │ ├── Dockerfile │ ├── config/ │ │ ├── coc/ │ │ │ └── extensions.vim │ │ ├── coc-settings.json │ │ └── treesitter/ │ │ └── treesitter.vim │ └── env/ │ └── requirements.txt └── nvim-ts/ ├── Dockerfile └── config/ ├── coc-settings.json └── treesitter/ └── treesitter.vim ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Git ignore rules. # # @author Maciej Bedra ### Docker ### # Test compose files **/docker-compose.yml ================================================ FILE: LICENSE.md ================================================ MIT License Copyright (c) 2020 Maciej Bedra Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: Makefile ================================================ # Makefile for Neovim IDE. # # @author Maciej Bedra nvim = mashmb/nvim:dev nvim-flutter = mashmb/nvim-flutter:dev nvim-go = mashmb/nvim-go:dev nvim-jdk8 = mashmb/nvim-jdk8:dev nvim-latex = mashmb/nvim-latex:dev nvim-ojdk11 = mashmb/nvim-ojdk11:dev nvim-ojdk17 = mashmb/nvim-ojdk17:dev nvim-python3 = mashmb/nvim-python3:dev nvim-ts = mashmb/nvim-ts:dev all-build = build-nvim build-nvim-flutter build-nvim-go build-nvim-jdk8 build-nvim-latex build-nvim-ojdk11 build-nvim-ojdk17 build-nvim-python3 build-nvim-ts all-push = push-nvim push-nvim-flutter push-nvim-go push-nvim-jdk8 push-nvim-latex push-nvim-ojdk11 push-nvim-ojdk17 push-nvim-python3 push-nvim-ts all-clean = clean-nvim clean-nvim-flutter clean-nvim-go clean-nvim-jdk8 clean-nvim-latex clean-nvim-ojdk11 clean-nvim-ojdk17 clean-nvim-python3 clean-nvim-ts all: $(all-build) $(all-push) $(all-clean) login: docker login build-nvim: echo "--- Building $(nvim) image ---" cd nvim && docker build -t $(nvim) . build-nvim-flutter: echo "--- Building $(nvim-flutter) image ---" cd nvim-flutter && docker build -t $(nvim-flutter) . build-nvim-go: echo "--- Building $(nvim-go) image ---" cd nvim-go && docker build -t $(nvim-go) . build-nvim-jdk8: echo "--- Building $(nvim-jdk8) image ---" cd nvim-jdk8 && docker build -t $(nvim-jdk8) . build-nvim-latex: echo "--- Building $(nvim-latex) image ---" cd nvim-latex && docker build -t $(nvim-latex) . build-nvim-ojdk11: echo "--- Building $(nvim-ojdk11) image ---" cd nvim-ojdk11 && docker build -t $(nvim-ojdk11) . build-nvim-ojdk17: echo "--- Building $(nvim-ojdk17) image ---" cd nvim-ojdk17 && docker build -t $(nvim-ojdk17) . build-nvim-python3: echo "--- Building $(nvim-python3) image ---" cd nvim-python3 && docker build -t $(nvim-python3) . build-nvim-ts: echo "--- Building $(nvim-ts) image ---" cd nvim-ts && docker build -t $(nvim-ts) . push-nvim: login echo "--- Pushing $(nvim) image ---" docker push $(nvim) push-nvim-flutter: login echo "--- Pushing $(nvim-flutter) image ---" docker push $(nvim-flutter) push-nvim-go: login echo "--- Pushing $(nvim-go) image ---" docker push $(nvim-go) push-nvim-jdk8: login echo "--- Pushing $(nvim-jdk8) image ---" docker push $(nvim-jdk8) push-nvim-latex: login echo "--- Pushing $(nvim-latex) image ---" docker push $(nvim-latex) push-nvim-ojdk11: login echo "--- Pushing $(nvim-ojdk11) image ---" docker push $(nvim-ojdk11) push-nvim-ojdk17: login echo "--- Pushing $(nvim-ojdk17) image ---" docker push $(nvim-ojdk17) push-nvim-python3: login echo "--- Pushing $(nvim-python3) image ---" docker push $(nvim-python3) push-nvim-ts: login echo "--- Pushing $(nvim-ts) image ---" docker push $(nvim-ts) clean-nvim: echo "--- Removing $(nvim) image ---" docker image rm -f $(nvim) clean-nvim-flutter: echo "--- Removing $(nvim-flutter) image ---" docker image rm -f $(nvim-flutter) clean-nvim-go: echo "--- Removing $(nvim-go) image ---" docker image rm -f $(nvim-go) clean-nvim-jdk8: echo "--- Removing $(nvim-jdk8) image ---" docker image rm -f $(nvim-jdk8) clean-nvim-latex: echo "--- Removing $(nvim-latex) image ---" docker image rm -f $(nvim-latex) clean-nvim-ojdk11: echo "--- Removing $(nvim-ojdk11) image ---" docker image rm -f $(nvim-ojdk11) clean-nvim-ojdk17: echo "--- Removing $(nvim-ojdk17) image ---" docker image rm -f $(nvim-ojdk17) clean-nvim-python3: echo "--- Removing $(nvim-python3) image ---" docker image rm -f $(nvim-python3) clean-nvim-ts: echo "--- Removing $(nvim-ts) image ---" docker image rm -f $(nvim-ts) ================================================ FILE: README.md ================================================ # Neovim IDE Neovim as IDE in Docker container. The idea is to create comfy programming environment for various languages with usage of Docker. On host machine there should be the least of dependencies connected with development environment. Only Docker should be required, so development environment can be used on any computer - work, private or even VPS. Base image will contain Git and Neovim installation with basic configuration for itself and extensions like file explorer, Git integration, support for files like JSON, HTML, CSS, etc. From base image there will be created images for specific programming languages, so base configuration will be extended per programming language. All images build with this repository will be available on [Docker Hub](https://hub.docker.com/u/mashmb).

**WARNING**: all images on [Docker Hub](https://hub.docker.com/u/mashmb) with **dev** tag are using the newest stable version of Neovim installed from source. ## Images Detailed images description (every directory matches single image, directory name represents image name). How to run image? For testing it could be: ```shell docker run -it mashmb/nvim:[tag] /bin/bash ``` For work suggested is **docker-compose.yml** file where configuration will be more tidy. Programming projects should be mounted from host to **/root/workspace/** directory: ```yml version: '3.8' services: nvim: image: mashmb/nvim:[tag] deploy: replicas: 1 resources: limits: memory: 2G volumes: - [path_to_projects]:/root/workspace ``` ### nvim Base Neovim image. Software installed: 1. **curl** - for downloading stuff 2. **fzf** - for fast files search 3. **ripgrep** - for fast text occurrence search 4. **tree** - files tree visualization 5. **Git** - Git support inside container (with GIT Flow) 6. **Lazygit** - Git visualization inside terminal 7. **xclip** - clipboard handling 8. **Python 3** - for proper Neovim work 9. **pip** - for Python 3 10. **NodeJS** - for proper Neovim work 11. **npm** - for NodeJS 12. **tzdata** - for default container timezone settings 13. Everything needed to install Neovim from source All components for Neovim are installed (pynvim with pip and neovim with npm). Image contains general settings and some key bindings for Neovim (saved in **/root/.config/nvim/general/**). Spell check for English and Polish is added. Europe/Warsaw as default timezone. Extensions are managed by Vim Plug. Installed and configured extensions: 1. Gruvbox theme 2. Airline status bar 3. Files tree (with Git integration and icons pack) 4. Welcome screen 5. Fuzzy finder (search for file and text occurrence) 7. Git integration 8. Hex colors preview support 9. Conquer of completion: - Code completion - Code documentation - Symbols and references highlighting - Code formatting - Code actions (optimize imports, generate, etc.) - Project scope renaming - Go to definition - Go to type definition - Go to implementation - Go to declaration - References - Quick fix - Code diagnostics - Code outline - Symbols search 9. Debugger Supported languages: 1. CSS 2. HTML 3. JavaScript 4. JSON 5. SH 6. SQL 7. YAML For users that type really fast on keyboard, Conquer of Completion can be too slow. You can disable auto completion with setting in **coc-settings.json**: ``` "suggest.autoTrigger": "none" ``` Completion will be available on shortcut **Ctrl + Space**. File can be saved once without formatting with **noa w** command. Additionally there are some Bash aliases: ``` alias cl="clear" alias ls="ls -al --color" alias du="du -h" alias vi="nvim" alias vim="nvim" alias lg="lazygit" alias gf="git flow" ``` Neovim background is transparent. It can be disabled in Neovim configuration (.config/nvim/general/settings.vim line **85**). ### nvim-flutter Image dedicated for Flutter development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-flutter - dart-vim-plugin (syntax highlighting) This image contains raw Flutter installation (no Android SDK, etc.). For Android development follow the [tutorial](https://dev.to/enriquem/android-sdk-without-studio-3idg). There are two ways to run Android emulator: 1. Install and configure `xauth` ([tutorial](https://www.geeksforgeeks.org/running-gui-applications-on-docker-in-linux/)), nextly install emulator in container and run it (remember about Docker privileged mode - without it there will be no hardware acceleration required by emulator). 2. Install Android SDK on host and in Docker container, connect to emulator on host over `adb`. ### nvim-go Image dedicated for Go development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-go - gopls Image has configured debugger for Go development with usage of **vimspector** (required **Delve** is installed also). ### nvim-jdk8 Image dedicated for Oracle Java 8 development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-java - [Eclipse JDT Language Server](https://download.eclipse.org/jdtls/milestones/0.57.0/) (for Oracle Java 8, version 0.57.0 is required) Image has configured debugger for Oracle Java 8 with usage of **vimspector** and [coc-java-debug](https://github.com/dansomething/coc-java-debug). Additionally **coc-xml** is installed for proper XML files handling with Java. **NOTE**: to use [Lombok](https://projectlombok.org/) it should be downloaded and mounted to container. Nextly it should be configured in **coc-settings.json**: ```json { "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar" // "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar -Xbootclasspath/a:[path]/lombok.jar" // older Java versions } ``` ### nvim-latex Image dedicated for LaTeX files edition. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-texlab PDF output file can be built with `:CocCommand latex.Build [file.pdf]` ### nvim-ojdk11 Image dedicated for OpenJDK 11 (Java 11) development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-java - [Eclipse JDT Language Server](https://download.eclipse.org/jdtls/) Image has configured debugger for OpenJDK 11 with usage of **vimspector** and [coc-java-debug](https://github.com/dansomething/coc-java-debug). Additionally **coc-xml** is installed for proper XML files handling with Java. **NOTE**: to use [Lombok](https://projectlombok.org/) it should be downloaded and mounted to container. Nextly it should be configured in **coc-settings.json**: ```json { "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar" // "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar -Xbootclasspath/a:[path]/lombok.jar" // older Java versions } ``` ### nvim-ojdk17 Image dedicated for OpenJDK 17 (Java 17) development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-java - [Eclipse JDT Language Server](https://download.eclipse.org/jdtls/) Image has configured debugger for OpenJDK 11 with usage of **vimspector** and [coc-java-debug](https://github.com/dansomething/coc-java-debug). Additionally **coc-xml** is installed for proper XML files handling with Java. **NOTE**: to use [Lombok](https://projectlombok.org/) it should be downloaded and mounted to container. Nextly it should be configured in **coc-settings.json**: ```json { "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar" // "java.jdt.ls.vmargs": "-javaagent:[path]/lombok.jar -Xbootclasspath/a:[path]/lombok.jar" // older Java versions } ``` ### nvim-python3 Image dedicated for Python3 development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-pyright - coc-python - jedi-language-server Image has configured debugger for Python3 development with usage of **vimspector**. All dependencies used to Python3 development are installed in virtual environment (/root/.env) so it can be easily modified with usage of volumes mounting. All user created virtual environments should be mounted in /root/envs. For more flexible workspace manging, *pyrightconfig.json* file can be created and mounted in */root/* directory. Example configuration used to avoid import errors in workspace without *env*: ```json { "reportMissingImports": false, "reportGeneralTypeIssues": false } ``` ### nvim-ts Image dedicated for Typescript development. It is overriding the base **nvim** image. Conquer of completion is realized with: - coc-tsserver Image has configured debugger for Typescript development with usage of **vimspector**. ================================================ FILE: nvim/Dockerfile ================================================ # Docker file for base Neovim image. # # @author Maciej Bedra # Debian image as base (unstable for newest software). FROM debian:sid-20211220 # Set image locale. ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV TZ=Europe/Warsaw # Expose some ports to host by default. EXPOSE 8080 8081 8082 8083 8084 8085 # Define which Neovim COC extensions should be installed. ARG COC='coc-css coc-eslint coc-html coc-json coc-sh coc-sql coc-tsserver coc-yaml' # Lazygit variables ARG LG='lazygit' ARG LG_GITHUB='https://github.com/jesseduffield/lazygit/releases/download/v0.31.4/lazygit_0.31.4_Linux_x86_64.tar.gz' ARG LG_ARCHIVE='lazygit.tar.gz' # GIT Flow variables ARG GIT_FLOW_GITHUB='https://github.com/petervanderdoes/gitflow-avh.git' ARG GIT_FLOW_DIR='gitflow-avh' # Update repositories and install software: # 1. curl. # 2. fzf for fast file search. # 3. ripgrep for fast text occurrence search. # 4. tree for files tree visualization. # 5. Git. # 6. Lazygit for Git visualization. # 7. xclip for clipboard handling. # 8. Python 3. # 9. pip for Python. # 10. NodeJS. # 11. npm for NodeJS. # 12. tzdata to set default container timezone. # 13. Everything needed to install Neovim from source. RUN apt-get update && apt-get -y install curl fzf ripgrep tree git xclip python3 python3-pip nodejs npm tzdata ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config zip unzip # Cooperate Neovim with Python 3. RUN pip3 install pynvim # Cooperate NodeJS with Neovim. RUN npm i -g neovim # Install Neovim from source. RUN mkdir -p /root/TMP RUN cd /root/TMP && git clone https://github.com/neovim/neovim RUN cd /root/TMP/neovim && git checkout stable && make -j4 && make install RUN rm -rf /root/TMP # Create directory for Neovim spell check dictionaries. RUN mkdir -p /root/.local/share/nvim/site/spell # Copy Neovim dictionaries. COPY ./spell/ /root/.local/share/nvim/site/spell/ # Install Vim Plug. RUN curl -fLo /root/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim # Create directory for Neovim configuration files. RUN mkdir -p /root/.config/nvim # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Install Neovim extensions. RUN nvim --headless +PlugInstall +qall # Create directory for Neovim COC extensions. RUN mkdir -p /root/.config/coc/extensions # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Create TMP directory RUN mkdir -p /root/TMP # Install Lazygit from binary RUN cd /root/TMP && curl -L -o $LG_ARCHIVE $LG_GITHUB RUN cd /root/TMP && tar xzvf $LG_ARCHIVE && mv $LG /usr/bin/ # Install GIT Flow RUN cd /root/TMP && git clone $GIT_FLOW_GITHUB RUN cd /root/TMP/$GIT_FLOW_DIR && git checkout master && make install # Delete TMP directory RUN rm -rf /root/TMP # Bash aliases COPY ./home/ /root/ # Create directory for projects (there should be mounted from host). RUN mkdir -p /root/workspace # Set default location after container startup. WORKDIR /root/workspace # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim/config/airline/airline.vim ================================================ " Configuration for Airline status bar. " " @author Maciej Bedra " Status bar theme let g:airline_theme = 'minimalist' " No empty sections let g:airline_skip_empty_sections = 1 " User power line fonts let g:airline_powerline_fonts = 1 " Fix for missing power line symbols if !exists('g:airline_symbols') let g:airline_symbols = {} endif " Unicode symbols let g:airline_left_sep = '' let g:airline_left_sep = '' let g:airline_right_sep = '' let g:airline_right_sep = '' let g:airline_symbols.linenr = '␊' let g:airline_symbols.linenr = '␤' let g:airline_symbols.linenr = '¶' let g:airline_symbols.branch = '⎇' let g:airline_symbols.paste = 'ρ' let g:airline_symbols.paste = 'Þ' let g:airline_symbols.paste = '∥' let g:airline_symbols.whitespace = 'Ξ' " Airline symbols let g:airline_left_sep = '' let g:airline_left_sep = '' let g:airline_right_sep = '' let g:airline_right_sep = '' let g:airline_symbols.branch = '' let g:airline_symbols.readonly = '' let g:airline_symbols.linenr = '' ================================================ FILE: nvim/config/coc/coc.vim ================================================ " Conquer of completion configuration. " " @author Maciej Bedra " Do not pass messages to ins-completion-menu set shortmess+=c " Do not shift text with sign column if has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif " Code completion inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Key binding used to trigger completion inoremap coc#refresh() " Confirm completion inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" " Key binding for programming documentation nnoremap d :call show_documentation() function! s:show_documentation() if (index(['vim', 'help'], &filetype) >= 0) execute'h '.expand('') elseif (coc#rpc#ready()) call CocActionAsync('doHover') else execute '!' . &keywordprg . " " . expand('') endif endfunction " Key bindings used to scroll pop ups content nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" " Highlight symbol and references on cursor hold autocmd CursorHold * silent call CocActionAsync('highlight') " Key binding used to format code nmap cf (coc-format) " Key binding for code action (optimize imports, generate code, etc.) nmap ca (coc-codeaction) " Key binding used for symbol rename nmap (coc-rename) " Key binding used to go to definition nmap cd (coc-definition) " Key binding used to go to type definition nmap ct (coc-type-definition) " Key binding used to to to implementation nmap ci (coc-implementation) " Key binding used to go to declaration nmap cr (coc-declaration) " Key binding used to find usages nmap cu (coc-references) " Key binding for quick fix nmap cq (coc-fix-current) " Key binding used to show code errors, warnings, etc. nmap ce :CocList diagnostics " Key binding for code outline nmap :CocList outline " Key binding used to find symbol nmap cs :CocList -I symbols ================================================ FILE: nvim/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ ] ================================================ FILE: nvim/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "javascript", "json", "sh", "sql", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true } ================================================ FILE: nvim/config/fzf/fzf.vim ================================================ " Configuration for fuzzy finder. " " @author Maciej Bedra " Search result on top let $FZF_DEFAULT_OPTS = '--reverse' " Fuzzy finder as pop up let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.6 } } " Key binding used to launch fuzzy finder (file search) " nmap :FZF " Key binding used to launch fuzzy finder (text occurrence) " nmap :Rg ================================================ FILE: nvim/config/general/keys.vim ================================================ " Key binding for Neovim out of the box. " " @author Maciej Bedra " More handy insert mode exit inoremap jk inoremap kj " Navigation between splits nnoremap h nnoremap j nnoremap k nnoremap l " Splits resizing nnoremap :resize -2 nnoremap :resize +2 nnoremap :vertical resize -2 nnoremap :vertical resize +2 " Editor tabs navigation nnoremap :tabnext nnoremap :tabprevious " Completion inoremap pumvisible() ? "\" : "\" " More handy line 'tabbing' vnoremap < >gv ================================================ FILE: nvim/config/general/settings.vim ================================================ " General settings for Neovim out of the box. " " @author Maciej Bedra " Set leader key let g:mapleader = "\" " Enable syntax highlighting syntax enable " Keep multiple buffers open set hidden " Long lines not wrapped set nowrap " Default encoding set encoding=utf-8 set fileencoding=utf-8 " Smaller pop up menu set pumheight=10 " Show cursor position all the time set ruler " More space for messages set cmdheight=2 " Treat dash separated words as a word text object set iskeyword+=- " Enable mouse set mouse=a " Horizontal splits on bottom set splitbelow " Vertical splits on right set splitright " 256 colors support set t_Co=256 " More visible '`' character set conceallevel=0 " 2 Spaces for TAB set tabstop=2 " 2 Spaces for indention set shiftwidth=2 " Smart TAB's set smarttab " Convert TAB's to Spaces set expandtab " Smart indents set smartindent " Support auto indent set autoindent " Status line set laststatus=0 " Line numbers set number relativenumber " Highlight current line set cursorline " Smooth scroll set so=999 " Max line length set colorcolumn=120 " Background color set background=dark " Transparent background autocmd VimEnter * hi Normal ctermbg=none " Show TAB's set showtabline=2 " Do not display mode set noshowmode " Disable backup set nobackup set nowritebackup " Faster completion set updatetime=300 " Short timeout set timeoutlen=500 " Stop new line comment continuation set formatoptions-=cro " Shared clipboard set clipboard=unnamedplus " Spell check set spell spelllang=en_us,pl " Auto source while writing to init.vim au! BufWritePost $MYVIMRC source % cmap w!! w !sudo tee % ================================================ FILE: nvim/config/git/fugitive.vim ================================================ " Configuration for Git with Neovim integration. " " @author Maciej Bedra " Key binding for Git status nmap gs :Git " Key binding for Git commit nmap gc :Git commit " Key binding for Git push nmap gp :Git push " Key binding for Git log nmap gl :Gclog " Key binding to get left chunk in merge conflict nmap dh :diffget //2 " Key binding to get right chunk in merge conflict nmap dl :diffget //3 ================================================ FILE: nvim/config/git/fzf-checkout.vim ================================================ " Configuration for Git branches fuzzy finder. " " @author Maciej Bedra " Key binding use to run Git branches fuzzy finder nmap gb :GBranches ================================================ FILE: nvim/config/gruvbox/gruvbox.vim ================================================ " Configuration for Neovim Gruvbox theme. " " @author Maciej Bedra " Use darker color scheme let g:gruvbox_contrast_dark = 'hard' " Activate theme colorscheme gruvbox ================================================ FILE: nvim/config/init.vim ================================================ " Neovim initialization file. " " @author Maciej Bedra " Configuration for Neovim out of the box source /root/.config/nvim/general/settings.vim source /root/.config/nvim/general/keys.vim " Neovim extensions call plug#begin('/root/.config/nvim/plugins') Plug 'morhetz/gruvbox' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'preservim/nerdtree' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'ryanoasis/vim-devicons' Plug 'kyazdani42/nvim-web-devicons' Plug 'mhinz/vim-startify' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' Plug 'junegunn/fzf' Plug 'junegunn/fzf.vim' Plug 'tpope/vim-fugitive' Plug 'stsewd/fzf-checkout.vim' Plug 'airblade/vim-gitgutter' Plug 'ap/vim-css-color' Plug 'nvim-treesitter/nvim-treesitter' Plug 'neoclide/coc.nvim', { 'branch': 'release' } Plug 'puremourning/vimspector' call plug#end() " Extensions configuration source /root/.config/nvim/gruvbox/gruvbox.vim source /root/.config/nvim/airline/airline.vim source /root/.config/nvim/nerdtree/nerdtree.vim source /root/.config/nvim/nerdtree/nerdtree-git.vim source /root/.config/nvim/startify/startify.vim source /root/.config/nvim/telescope/telescope.vim source /root/.config/nvim/fzf/fzf.vim source /root/.config/nvim/git/fugitive.vim source /root/.config/nvim/git/fzf-checkout.vim source /root/.config/nvim/treesitter/treesitter.vim source /root/.config/nvim/coc/coc.vim source /root/.config/nvim/coc/extensions.vim source /root/.config/nvim/vimspector/vimspector.vim ================================================ FILE: nvim/config/nerdtree/nerdtree-git.vim ================================================ " Git integration with files tree. " " @author Maciej Bedra " Activate Nerd fonts let g:NERDTreeGitStatusUseNerdFonts = 1 ================================================ FILE: nvim/config/nerdtree/nerdtree.vim ================================================ " Configuration for files tree. " " @author Maciej Bedra " Show hidden files by default let NERDTreeShowHidden=1 " Key binding used to open/close files tree nmap :NERDTreeToggle ================================================ FILE: nvim/config/startify/startify.vim ================================================ " Configuration for Neovim welcome screen. " " @author Maciej Bedra " Welcome header let g:startify_custom_header = [ \' ( * ', \' )\ ) ( ` ', \' ( ( (()/( )\))( ', \' )\ )\ /(_))((_)()\ ', \'((_)((_)(_)) (_()((_)', \'\ \ / / |_ _| | \/ |', \' \ V / | | | |\/| |', \' \_/ |___| |_| |_|', \] ================================================ FILE: nvim/config/telescope/telescope.vim ================================================ " Telescope fuzzy finder configuration. " " @author Maciej Bedra " Key binding used to launch fuzzy finder (file search) nmap Telescope find_files " Key binding used to launch fuzzy finder (text occurrence) nmap Telescope live_grep " Telescope defaults. lua << EOF require('telescope').setup{ defaults = { vimgrep_arguments = { 'rg', '--color=never', '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case' }, prompt_prefix = "> ", selection_caret = "> ", entry_prefix = " ", initial_mode = "insert", selection_strategy = "reset", sorting_strategy = "descending", layout_strategy = "horizontal", layout_config = { horizontal = { mirror = false, }, vertical = { mirror = false, }, }, file_sorter = require'telescope.sorters'.get_fuzzy_file, file_ignore_patterns = {}, generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, winblend = 0, border = {}, borderchars = { '─', '│', '─', '│', '╭', '╮', '╯', '╰' }, color_devicons = true, use_less = true, path_display = {}, set_env = { ['COLORTERM'] = 'truecolor' }, -- default = nil, file_previewer = require'telescope.previewers'.vim_buffer_cat.new, grep_previewer = require'telescope.previewers'.vim_buffer_vimgrep.new, qflist_previewer = require'telescope.previewers'.vim_buffer_qflist.new, buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker, disable_devicons = false, } } EOF ================================================ FILE: nvim/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim/config/vimspector/vimspector.vim ================================================ " Configuration for Neovim debugger. " " @author Maciej Bedra " Enable HUMAN key bindings for debugging. let g:vimspector_enable_mappings = 'HUMAN' ================================================ FILE: nvim/home/.bashrc ================================================ # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' source /usr/share/bash-completion/completions/fzf source /usr/share/doc/fzf/examples/key-bindings.bash export FZF_DEFAULT_OPTS="--reverse --no-height" alias cl="clear" alias ls="ls -al --color" alias du="du -h" alias vi="nvim" alias vim="nvim" alias lg="lazygit" alias gf="git flow" ================================================ FILE: nvim-flutter/Dockerfile ================================================ # Docker file for Neovim Flutter development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Neovim COC extensions for Flutter development. ARG COC='coc-flutter' # Install necessary system utilities. RUN apt-get update && apt-get -y install unzip xz-utils zip # Install Flutter. RUN cd /root && git clone https://github.com/flutter/flutter.git -b stable --depth 1 RUN /root/flutter/bin/flutter doctor # Add Flutter to PATH. COPY ./home/ /root/ # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-flutter/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-flutter', \ 'coc-html', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ ] ================================================ FILE: nvim-flutter/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "dart", "html", "javascript", "json", "sh", "sql", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true } ================================================ FILE: nvim-flutter/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "dart", "html", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim-flutter/home/.bashrc ================================================ # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' source /usr/share/bash-completion/completions/fzf source /usr/share/doc/fzf/examples/key-bindings.bash export FZF_DEFAULT_OPTS="--reverse --no-height" alias cl="clear" alias ls="ls -al --color" alias du="du -h" alias vi="nvim" alias vim="nvim" alias lg="lazygit" alias gf="git flow" export PATH=/root/flutter/bin:$PATH ================================================ FILE: nvim-go/Dockerfile ================================================ # Docker file for Neovim Go development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Neovim COC extensions for Go development. ARG COC='coc-go' # Install Go SDK. RUN apt-get update && apt-get -y install golang # Install Go language server. RUN go install golang.org/x/tools/gopls@latest # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Install Go language debugger adapter. RUN cd /root/.config/nvim/plugins/vimspector && python3 install_gadget.py --enable-go && go install github.com/go-delve/delve/cmd/dlv@latest # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-go/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-go', \ 'coc-html', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ ] ================================================ FILE: nvim-go/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "go", "html", "javascript", "json", "sh", "sql", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true } ================================================ FILE: nvim-go/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "go", "html", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim-jdk8/Dockerfile ================================================ # Docker file for Neovim Oracle Java 8 development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Name of Java JDK 8 archive, installation directory and Java Language Server archive. ARG JDK='jdk-8u321.tar.gz' ARG JDK_DIR='jdk1.8.0_321' ARG JDT='jdt-language-server-0.57.0-202006172108.tar.gz' # Neovim COC extensions for Java development. ARG COC='coc-java coc-java-debug coc-xml' # Install JDK8 Debian requirements. RUN apt-get update && apt-get install -y libc6-i386 # Create temporal directory for Java JDK 8 archive. RUN mkdir -p /root/TMP # Create directory for Java JDK 8 installation. RUN mkdir -p /usr/lib/jvm # Copy Java JDK 8 archive. COPY ./jdk/ /root/TMP/ # Install Java JDK 8 from archive. RUN cd /root/TMP && tar zxvf $JDK -C /usr/lib/jvm # Create directory for Java Language Server. RUN mkdir -p /root/.config/coc/extensions/coc-java-data/server # Install Java Language Server for COC. RUN cd /root/TMP && tar zxvf $JDT -C /root/.config/coc/extensions/coc-java-data/server # Clean Java JDK 8 archive. RUN rm -rf /root/TMP # Java JDK 8 alternatives. RUN update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/$JDK_DIR/bin/java" 1 RUN update-alternatives --set java /usr/lib/jvm/$JDK_DIR/bin/java # Copy .bashrc with JAVA HOME configured. COPY ./home/ /root/ # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-jdk8/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-java', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ 'coc-xml', \ ] ================================================ FILE: nvim-jdk8/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "java", "javascript", "json", "sh", "sql", "yaml", "xml" ], "codeLens.enable": true, "yaml.format.enable": true, "java.referencesCodeLens.enabled": true, "java.implementationsCodeLens.enabled": true } ================================================ FILE: nvim-jdk8/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "java", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim-jdk8/home/.bashrc ================================================ # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' source /usr/share/bash-completion/completions/fzf source /usr/share/doc/fzf/examples/key-bindings.bash export FZF_DEFAULT_OPTS="--reverse --no-height" alias cl="clear" alias ls="ls -al --color" alias du="du -h" alias vi="nvim" alias vim="nvim" alias lg="lazygit" alias gf="git flow" export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_321 export PATH=$JAVA_HOME/bin:$PATH ================================================ FILE: nvim-latex/Dockerfile ================================================ # Docker file for Neovim LaTeX editor. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Install LaTeX. RUN apt-get update && apt-get -y install texlive-latex-extra # Neovim COC extensions for LaTeX edition. ARG COC='coc-texlab' # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-latex/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-texlab', \ 'coc-tsserver', \ 'coc-yaml', \ ] ================================================ FILE: nvim-latex/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "javascript", "json", "sh", "sql", "tex", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true } ================================================ FILE: nvim-latex/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "javascript", "json", "latex", "yaml" }, } EOF ================================================ FILE: nvim-ojdk11/Dockerfile ================================================ # Docker file for Neovim Open JDK 11 (Java 11) development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Install Open JDK 11. RUN apt-get update && apt-get -y install openjdk-11-jdk # Neovim COC extensions for Java development. ARG COC='coc-java coc-java-debug coc-xml' # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-ojdk11/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-java', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ 'coc-xml', \ ] ================================================ FILE: nvim-ojdk11/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "java", "javascript", "json", "sh", "sql", "yaml", "xml" ], "codeLens.enable": true, "yaml.format.enable": true, "java.referencesCodeLens.enabled": true, "java.implementationsCodeLens.enabled": true } ================================================ FILE: nvim-ojdk11/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "java", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim-ojdk17/Dockerfile ================================================ # Docker file for Neovim Open JDK 17 (Java 17) development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Install Open JDK 17. RUN apt-get update && apt-get -y install openjdk-17-jdk # Neovim COC extensions for Java development. ARG COC='coc-java coc-java-debug coc-xml' # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-ojdk17/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-java', \ 'coc-json', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ 'coc-xml', \ ] ================================================ FILE: nvim-ojdk17/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "java", "javascript", "json", "sh", "sql", "yaml", "xml" ], "codeLens.enable": true, "yaml.format.enable": true, "java.referencesCodeLens.enabled": true, "java.implementationsCodeLens.enabled": true } ================================================ FILE: nvim-ojdk17/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "java", "javascript", "json", "yaml" }, } EOF ================================================ FILE: nvim-python3/Dockerfile ================================================ # Docker file for Neovim Python3 development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Neovim COC extensions for Python3 development. ARG COC='coc-pyright coc-python' # Create directory for virtual environments. RUN mkdir -p /root/envs # Prepare main virtual environment (for language server features). COPY ./env/ /root/ RUN apt-get update && apt-get -y install python3-venv RUN cd /root && python3 -m venv .env RUN /root/.env/bin/pip install -r /root/requirements.txt # Install Neovim COC extensions. RUN cd /root/.config/coc/extensions && npm install $COC --global --only=prod # Install Python language debugger adapter. RUN cd /root/.config/nvim/plugins/vimspector && python3 install_gadget.py --enable-python # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-python3/config/coc/extensions.vim ================================================ " Conquer of completion extensions. " " @author Maciej Bedra " Globally available extensions let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-eslint', \ 'coc-html', \ 'coc-json', \ 'coc-pyright', \ 'coc-python', \ 'coc-sh', \ 'coc-sql', \ 'coc-tsserver', \ 'coc-yaml', \ ] ================================================ FILE: nvim-python3/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "javascript", "json", "python", "sh", "sql", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true, "python.pythonPath": "/root/.env/bin/python", "python.venvPath": "/root/envs/", "python.jediEnabled": true, "python.jediPath": "/root/.env/lib/python3.9/site-packages/", "python.formatting.provider": "black", "python.formatting.blackPath": "/root/.env/bin/black", "python.linting.pylintEnabled": true, "python.linting.pylintPath": "/root/.env/bin/pylint", "python.autoComplete.addBrackets": true } ================================================ FILE: nvim-python3/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "javascript", "json", "python", "yaml" }, } EOF ================================================ FILE: nvim-python3/env/requirements.txt ================================================ appdirs==1.4.4 astroid==2.4.2 black==20.8b1 click==7.1.2 isort==5.6.4 jedi==0.17.2 jedi-language-server==0.21.0 lazy-object-proxy==1.4.3 mccabe==0.6.1 mypy-extensions==0.4.3 parso==0.7.1 pathspec==0.8.1 pygls==0.9.1 pylint==2.6.0 regex==2020.11.13 rope==0.18.0 six==1.15.0 toml==0.10.2 typed-ast==1.4.1 typing-extensions==3.7.4.3 wrapt==1.12.1 ================================================ FILE: nvim-ts/Dockerfile ================================================ # Docker file for Neovim Typescript development. # # @author Maciej Bedra # Base Neovim image. FROM mashmb/nvim:dev # Install Typescript SDK. RUN apt-get update && apt-get -y install watchman && npm install -g typescript # Install Node.js debugger adapter. RUN cd /root/.config/nvim/plugins/vimspector && python3 install_gadget.py --force-enable-node # Copy Neovim configuration files. COPY ./config/ /root/.config/nvim/ # Avoid container exit. CMD ["tail", "-f", "/dev/null"] ================================================ FILE: nvim-ts/config/coc-settings.json ================================================ { "coc.preferences.formatOnSaveFiletypes": [ "css", "html", "javascript", "json", "sh", "sql", "typescript", "yaml" ], "codeLens.enable": true, "yaml.format.enable": true } ================================================ FILE: nvim-ts/config/treesitter/treesitter.vim ================================================ " Code highlight configuration. " " @author Maciej Bedra " Treesitter setup. lua << EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = {}, }, indent = { enable = false, disable = {}, }, ensure_installed = { "css", "html", "javascript", "json", "typescript", "yaml" }, } EOF