Giter VIP home page Giter VIP logo

vimacs's Introduction

Vimacs

A Neovim Configuration. Inspired by JetBrains, Emacs, VS Code. Built on top of NvChad's UI.

Preface

This Neovim Distribution is heavily focused on performance, feature and beauty.

Vimacs is Beautiful

Vimacs uses a base configuration called NvChad which is beautiful out of the box.

Vimacs is Feature-rich

Vimacs comes with dozens of neovim plugins optimized for your daily use

Vimacs uses external programse to enhance it's functionality. (e.g) Vimacs has an optional mail client based on neomutt

The following image shows the which-key.nvim help for <leader> (aka space) key

Note

Green text means the top of the keymapping tree (e.g <leader>a includes everything related to AI, <leader>ai opens the Cody AI assistant in a vertical split) Red text means the direct cmd (e.g <leader>. opens the file manager)

Vimacs is Performant?

Because of the extensive ecosystem of Vimacs, Performance optimizations are crucial.

With the power of lazy loading (~%97.5), you only pay for what you use (lazy.nvim)

In addition to that, external programs use the system shell as an interface which doesn't reduce performance.

Showcase

image

image

image

More Themes (Click to expand!)

[!NOTE] There are 50+ themes that come out of the box with NvChad. This is just a showcase that'll give you some idea about the look.

Dark

Nord

image

Rosepine

image

Onedark

image

Catpuccin

image

Everforest

image

Light

Ayu Light

image

Prerequisites

Vimacs requires Neovim Nightly for all the features to work properly. Although It's possible to use Vimacs with stable neovim, It's not recommended.

Also vimacs comes with a lot of dependencies. Follow the instructions on this page to install them.

Note

Some of the vimacs features will require additional setup. (e.g AI Assistant, Project Surfing etc.) And some of the advanced features will require additional installation (SEE for more info)

Feature List

  • IDE:
    • On-Click Updates (DEMO) (NvChad)
    • Plugin Manager (lazy.nvim)
    • Inline Code Runner (sniprun)
    • Profiler (perfanno.nvim)
    • Project:
      • Project Manager (DEMO) (native)
      • Project Search (telescope-project.nvim)
    • Smooth Debugging Experience (DEMO) (nvim-dap) (nvim-dap-ui) (nvim-dap-virtual-text) (cmp-dap) (nvim-dap-repl-highlights) (mason.nvim) (mason-nvim-dap.nvim) (native)
    • Markdown Preview (DEMO) (markdown-preview.nvim)
    • Undo History Fuzzy Search (telescope-undo.nvim)
    • Undo Tree (undotree)
    • Code Symbols Navigation (symbols-outline.nvim)
    • Git:
      • Github Integration (octo.nvim)
      • Github Action Tracking (gh-actions.nvim)
      • Magit (neogit)
      • Git Conflict Viewer (git-conflict.nvim)
    • Project Runner (compiler.nvim)
    • Task Framework (overseer.nvim)
    • Testing Framework (neotest)
    • LSP
    • File Tree (nvim-tree)
    • Folding Mode (nvim-ufo)
    • Brace Hints (nvim-biscuits)
    • Tree-Sitter Hints (DEMO) (nvim_context_vt)
    • Smooth Sine Scrolling (neoscroll.nvim)
    • Session Manager (persistence.nvim)

  • Neovim:
    • Language aware comments (Comment.nvim)
    • Escape Insert Mode [jj, jk] (better-escape.nvim)
    • Surround Manupilation (nvim-surround)
    • Conditional + Smart File Switcher (DEMO) (other.nvim)
    • Inline Bookmark Indicator (marks.nvim)
    • Case Toggle (native)
    • Inline UnJoining (DEMO) (treesj)
    • QuickFix:
      • QuickFix File Preview (DEMO) (nvim-bqf)
      • Prettier Quick Fix (nvim-pqf)
    • Jump Navigation (DEMO) (flash.nvim)
    • File Marks (DEMO) (harpoon)
    • Align Actions (DEMO) (vim-easy-align)
    • Window Manager (winshift.nvim)
    • Text Objets:
      • Additional Text Objects (ns-textobject.nvim) (nvim-various-textobjs)
    • Custom Toggle (dial.nvim)
    • Exchange Motions (vim-exchange)

  • Miscellaneous:
    • Regular Expression Explainer (Hypersonic.nvim)
    • File Manager (telescope-file-browser.nvim)
    • Pop-up Language Translator (vim-translator)
    • REPL Translate (pantran.nvim)
    • LeetCode Integration (LeetBuddy.nvim)
    • Advanced Color Picker (ccc.nvim)
    • Nerd Font Picker (nerdy.nvim)
    • Programming
      • Function Argument Highlighter (hlargs.nvim)
      • Virtual Reference Table (lsp-lens.nvim)
      • CheatSheets (cheetsheets.nvim)
    • Real-time Colorscheme Editor (lush.nvim)
    • Clipboard Manager (nvim-neoclip.lua)
    • ToDo Manager (todo-comments.nvim)
    • Games:
      • Sudoku (sudoku.nvim)
      • VimBeGood (vim-be-good)
      • Tetris (nvim-tetris)
      • KillerSheep (killersheep.nvim)
      • Buffer Text Animations (cellular-automaton.nvim)
      • Mine Sweeper (nvimesweeper)
      • MonkeyType (speedtyper.nvim)
    • URL Manager (urlview.nvim)
    • External Browser Search (browse.nvim)
    • Apps:
      • Daily Calendar (apc.nvim)
    • Plugin Surf (telescope-lazy.nvim)
    • Integrated:
      • Browser (brow.sh)
      • Lynx (lynx)
      • Discord Client (discord) (TOU)
      • Hacker News Client (hacker_news_tui)
      • IRC Client (weechat)
      • Email Client (neomutt)
      • World Map (mapscii)
      • Music Player (ncmpcpp)
      • Reddit Client (tuir)
      • Stackoverflow (stackoverflow_tui)
      • WhatsApp Client (nchat)

  • Advanced:
    • Org-Mode (orgmode)
    • Doc:
      • Org:
        • Code Block LSP (nvim-FeMaco.lua)
      • Markdown:
        • Markdown Mode (mkdnflow.nvim)
        • Inline Code Evaluation (mdeval.nvim)
        • Code Block LSP (nvim-FeMaco.lua)
        • Toggle Checkbox (markdown-togglecheck)
        • Mind Maps (markmap.nvim)
      • Modes:
        • Table Mode (DEMO) (vim-table-mode)
        • Beautiful Comments (comment-box.nvim)
        • Due Mode (DEMO) (due.nvim)
    • Compiler Explorer (compiler-explorer.nvim)
    • Tree-Sitter Explorer (neovim):
      • Query Editor
      • Parse Tree
      • Hover Actions
    • Language:
      • C++:
        • Doc Search (cppman.nvim)
      • Rust:
        • Advanced crates.io Integration (crates.nvim)
    • Inline Document Generation (DEMO) (neogen)
    • PasteBin Client with multi-backends (paperplanes.nvim)
    • Refactoring:
      • Generic Refactoring (refactoring.nvim)
      • Smart Inline Actions (DEMO) (tree-sitter) (ts-node-action) (native)
      • Custom Code Actions (ts-node-action)
      • C++ native refactoring (nvim-treesitter-cpp-tools)
    • Snippet Engine (DEMO) (LuaSnip)
    • AI:
      • Github Copilot (copilot.lua)
      • AI Assistant (DEMO) (sg.nvim)
      • Multi-backend LLM Integration (llm.nvim)

  • UI:
    • Beautiful Neovim UI Wrapper (dressing.nvim)
    • Code MiniMap (codewindow.nvim)
    • Twilight Mode (DEMO) (twilight.nvim)
    • Mode Indicator Line Number (modicator.nvim)
    • Zen Mode (zen-mode.nvim)
    • Narrow Mode (true-zen.nvim)
    • Focus Mode (true-zen.nvim)
    • Minimalist Mode (true-zen.nvim)
    • Atarix Mode (true-zen.nvim)
    • Goyo Mode (goyo.nvim)
    • Smart Column (smartcolumn.nvim)

Installation

[!TODO]: Make INSTALL Script more interactive

git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1
git clone https://github.com/UTFeight/vimacs
cd vimacs && mv custom ~/.config/nvim/lua/custom
cd .. && rm -rf vimacs && nvim
  1. Neotest:
  • Rust:
    cargo install cargo-nextest
  1. Debugger:

    # This is for unexpected scenarios only.
    # In general mason should install these X-platform
    
    #                  config.fish                  #
    #               Vimacs Mason PATH               #
     export PATH="$HOME/.local/share/nvim/mason/bin"

    Vimacs ships with default python, C/C++ and Rust debuggers. If you have any other to configure please look into custom/plugins.lua "nvim-dap" and custom/configs/nvim-dap.lua

  2. Project Surfing:

Warning

This feature requires a base_dirs variable in custom/plugins.lua as in telescope-project.nvim

  1. Github Copilot

    • Github Copilot is a paid program that suggests code when you are typing. You need to authorize by using:
    :Copilot auth
  1. Null-ls

    yay -S codespell textlint markdownlint stylua ruff
  2. LeetCode:

  3. Email Client:

    • Gmail:

    [!IMPORTANT] You need Two factor authentication enabled!

    Then follow the instructions from this site.

  1. Markdown-maps:

    yarn is required for markmap.nvim plugin

    yay -S yarn # AUR

TroubleShooting

Tree-Sitter

There is a bug in ts config which causes the tree-sitter to not install bash, org, python parsers.

run the following command to fix it:

:TSInstall bash org python

In some markdown files bash scripts will give not found (@heredoc_blabla) like chunky errors which you need to install bash parser like above

Credits

  • Thank you siduck for creating the wonderful neovim UI NvChad
  • Thank you folke for creating the excellent plugin manager, lazy.nvim
  • Thank you sourcegraph team for the amazing cody AI
  • Thank you all the plugin authors
  • Thank you neovim dev team

Terms of usage

Discordo

Automated user accounts or "self-bots" are against Discord's Terms of Service. I am not responsible for any loss caused by using "self-bots" or Discordo.

(See Discordo)

vimacs's People

Contributors

assyyn avatar orhnk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vimacs's Issues

WhatsApp Client

As I'm literally forced to use whatsapp in daily basis. (just like you!)
I'm adding a new feature as an option to install whatsapp client (after the INSTALL script can handle optional dependencies)

Only works in suckless st

hello, im trying to install this on my main (which is using alacritty) machine, works 100% completely fine on my laptop (which is using st), but when I run nvim my whole terminal crashes... I piped it to a file and theres just ANSI codes (?) in there:

�[?1049h�[22;0;0t�[?1h�=�[H�[2J�]11;?��[?2004h�[?u�[c�[?25h�[?25l�(B�[m�[H�[2J�]112��[2 q�]112��[2 q�[?1002h�[?1006h�[38;2;233;233;244m�[48;2;20;20;35m�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[K
�[J�]112��[2 q�[?1002l�[?1006l�(B�[m�[?25h�[?1l�>�[?1049l�[23;0;0t�[?2004l�[?1004l

steps I took:

  1. install
git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1
git clone https://github.com/UTFeight/vimacs
cd vimacs && mv custom ~/.config/nvim/lua/custom
cd .. && rm -rf vimacs && nvim

or: copy over all files from my laptop to my main machine (doesn't fix anything)
2. run neovim for the first time and let lazy install all the plugins.
3. whole terminal crashes when I run nvim (works in tty and st)
terminals which crash that I've tested:
alacritty, xfce, gnome, xterm

can anyone reproduce?

Vimacs in the Lazyman Neovim Configuration Manager

I've added support for installing and initializing Vimacs in the Lazyman Neovim Configuration Manager.

However, integration of this configuration is still in development and not yet fully supported. Lazyman initializes Neovim configurations in headless mode and user interaction during initialization is not supported. The Vimacs configuration initialization prompts the user to accept the Cody license. This causes the Lazyman initialization process to hang and timeout.

After the timeout, Vimacs comes up cleanly so it does work in the end. I am trying to figure out how best to perform the initialization.

This is not really an issue report, more of an FYI. Your config can now be installed with Lazyman using the command:

lazyman -w Vimacs

I wanted to make it available to Lazyman users since it's pretty cool and a good NvChad example even if there is some delay in initialization. If you have any suggestions or questions or comments or concerns, please let me know.

Thanks for the good work!

neoproj looking can't find directory - Windows

Neoproj attempts to create a folder in the root directory but fails. I tried to debug this for a lil' bit but couldn't find a proper solution. Might have to do with the commands being sent in neoproj.lua being incompatible with windows, or the change from backslash to forward.

Error executing vim.schedule lua callback: name/AppData/Local/nvim-data/lazy/neoproj/lua/neoproj.lua:92: Vim:E344: Can't find directory "C:\Users\name/Github/repos/unnamed" in cdpath
stack traceback:
        [C]: in function 'cd'
        name/AppData/Local/nvim-data/lazy/neoproj/lua/neoproj.lua:92: in function 'on_confirm'
        Local/nvim-data/lazy/dressing.nvim/lua/dressing/input.lua:135: in function 'fn'
        vim/_editor.lua:477: in function 'cb'
        vim/_editor.lua:263: in function <vim/_editor.lua:262>

Integrated terminal (firefox) in neovim

They called me a madman!

Here is a quick demo using brow.sh (the modern browser in your terminal [Appendix I])

Wikipedia

demo-2023-08-31_18.14.11.mp4

Flappy Bird

demo-2023-08-31_18.19.05.mp4
Complex Sites
demo-2023-08-31_18.00.06.mp4

Brow.sh

[0] -> Brow.sh is a terminal based browser that supports:

  • WebGL (WOW)
  • Images
  • Videos
  • JS
  • HTML5
  • CSS3

Reddit Client

It'd be fun to surf reddit from your editor innit?

Discord Client

You are tired of using a GUI huh?
at least I do!

Here you go:

demo-2023-09-03_14.19.13.mp4

Note

Sorry for the screen tearing & glitching. I use a low-end Nvidia Graphics Card and these kind of problems occur when recording my screen

Integrated text-only browser

Brow.sh is insane!
But sometimes you just want something minimal!

There are some popular options:
- lynx
- elinks
- w3m (probably not)

Email Client

Emacs has an email client as well-known feature.
We need this power for vimacs too!

Games

Living inside Neovim (Terminal) requires a lot of optimizations on your workflow.

Although playing games is a complex task. It is dependent to the game you are playing.

I have chosen some list of minimal games that will fit nice into your terminals homely look (except killersheep lol)

Here is a list of plugins that I'm planning to add (No External Game for now [0])

  • Tetris
  • Cellular automaton (3 different modes: scramble, game_of_life, make_it_rain)
  • Chess (Wery nice imo)

Important

I'll not be adding a lot of DEMO's here because I want you guys to explore what are they?
Think it as a gift that is wrapped around with a lua config file :D

Minimal Rain-mode

Note

This doesn't really fit into the category of "game" but this should be in the main branch either. Instead of creating a whole branch for just one plugin, I'm adding this to the games branch

  • make_it_rain mode from callular-automaton plugin. (One of the few I'll share)
demo-2023-09-04_09.49.34.mp4

[0]: Current Games are only loaded from nvim's cache (plugins) not from your system bin (unlike how vimacs achieves various clients like: reddit, irc etc. are just the name of few)

External plugins are not loaded

I attempted to integrate additional plugins, namely noice.nvim, barbecure.nvim, and mini.nvim. I included them at the end of the custom/plugins.lua file. Although the plugins were successfully downloaded after restarting Neovim, I encountered issues. The anticipated notifications from noice, breadcrumbs from barbecure, and various features from mini, expected to be available immediately post-installation, are conspicuously absent.

The screenshots illustrate the absence of notifications and features that should be visible right after installation.

Screenshot 2024-01-25 at 8 08 00 PM Screenshot 2024-01-25 at 8 10 39 PM

The plugins were added in the manner depicted in the images, both in the custom/plugins.lua file and in the default plugins file.

Screenshot 2024-01-25 at 8 11 45 PM

However, despite successful installation of the plugins, the anticipated functionalities, such as the :Barbecue command from barbecure, remain unavailable. This is particularly perplexing as per the documentation, it should work seamlessly with the default nvChad configuration.

Music player

As an alternative to bongo (emacs's music player) we have ncmpcpp (well-known in r/unixporn)

It's just beautiful...

configured keybinding for Copilot not working

hi, first of all thanks for a great work on this. I love it.

Read the mapping at lua/custom/mapings.lua to check the keys to use copilot. Found C-h to accept suggestion.

image

But when i press C-h the suggestions are cycled but not accepted (1...2...3....). The usual mapping (TAB) does not work (tried just in case)
image

checked copilot.lua file and noticed M-tab as "accept" keybind
image

but not working either (i assumed M is Alt key but this rotates windows)
any other mapping I should check?

Application Menu

With this feature you can view custom actions in the statusbar:

image

Better Documentation

Although vimacs is still WIP, Need of a documentation is still there.

A lot of features built-in to the editor is just not documented!

(e.g) a tree-sitter query editor, view, query

image

Inline Code Generation Inspired From JetBrains

One thing I miss in (neo)vim is these intellisense code actions that comes with CLion IntelliJ etc. out of the box.

Although there are some level of code refactoring/generation implemented with LSP, refactoring.nvim and some 3rd party plugins, they lack some functionality.

So, I have decided to implement some myself using a plugin called ts-node-action.nvim which allows you to inline treesitter to code easily.

The first (and probably the most important) action I implement is extract function.
Here is a quick demo:

tmp-2023-09-28_03.50.00.mp4

Thanks to the ts-node-action.nvim plugin, we can direct these plugins to null-ls API which eases the process:

image

Renaming project to `vimacs`

I'm not done with this project.

I have plans that'll enhance this neovim configuration in an emacs inspired way.
I really like the name CamelVim but also vimacs. As someone who's in love with the emacs philosophy, and going to develop this project from that route.

I'd love to see some feedback

question: external tools installation

Hi UTFeight

I see a bunch of external tools (reddit, chat irc, stack overflow search, world map. music player, whatsapp....) but the only one I get to work is the music player. I assume is because ncmpcpp is installed on my system.

any documentation on other packages must i install to get all of them working? nothing found on Readme

Thanks a lot

broken theme/weird colors (can't decide whats wrong)

Screenshot 2023-08-29 at 7 41 03 PM Screenshot 2023-08-29 at 7 41 50 PM Screenshot 2023-08-29 at 7 42 01 PM Screenshot 2023-08-29 at 7 42 08 PM

hi Camel...

i'm running into some "theme/coloring/weird alignment" issue/situation as you can see from the screenshots... i tried changing the theme.. same thing... different colors... lol.

this is happening with other configs like :

  • nvchad
  • lunarvim
  • lazyvim
  • CamelVim

i have fig installed on macos and i use terminal with nerdfonts... what could be going on ..?
i would appreciate if you could look into this and put me in a direction .. i'll keep looking for a solution and i'll report back if i find anything on phind or gpt.

Errors after installing all packages

OS: OSX Sonoma
NVIM: NVIM v0.9.1
Vimacs: 0.4

I receive an error when trying to access Themes from the start up page.

E5108: Error executing lua: vim/_editor.lua:0: nvim_exec2(): Vim:Error executing Lua callback: .../share/nvi
m/lazy/lazy.nvim/lua/lazy/core/handler/cmd.lua:45: Vim:[telescope.run_command]: Unknown command
stack traceback:
        [C]: in function 'cmd'
        .../share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/cmd.lua:45: in function <.../share/nvim/lazy/laz
y.nvim/lua/lazy/core/handler/cmd.lua:16>
        [C]: in function 'nvim_exec2'
        vim/_editor.lua: in function 'cmd'
        ...san/.local/share/nvim/lazy/ui/lua/nvchad/nvdash/init.lua:138: in function <...san/.local/share/nv
im/lazy/ui/lua/nvchad/nvdash/init.lua:132>
stack traceback:
        [C]: in function 'nvim_exec2'
        vim/_editor.lua: in function 'cmd'
        ...san/.local/share/nvim/lazy/ui/lua/nvchad/nvdash/init.lua:138: in function <...san/.local/share/nv
im/lazy/ui/lua/nvchad/nvdash/init.lua:132>

I also receive this error just by push top arrow on the keyboard.

Failed to run `config` for telescope.nvim
...m/lazy/telescope.nvim/lua/telescope/_extensions/init.lua:10: 'themes' extension doesn't exist or isn't in
stalled: ...cker/start/telescope.nvim/lua/telescope/actions/init.lua:74: Key does not exist for 'telescope.a
ctions': preview_scrolling_left
# stacktrace:
  - /telescope.nvim/lua/telescope/_extensions/init.lua:10 _in_ **load_extension**
  - /telescope.nvim/lua/telescope/_extensions/init.lua:62 _in_ **load_extension**
  - ~/.config/nvim/lua/plugins/init.lua:247 _in_ **config**
  - vim/_editor.lua:0 _in_ **cmd**
  - /ui/lua/nvchad/nvdash/init.lua:138

Your help is appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.