Git Product home page Git Product logo

vim-makery's Introduction

I am a web developer. I enjoy working with React. I work professionally with Vue, Node.js, and MongoDB, among others.

Vim is my text editor of choice. Check out my Vim dotfiles for starters, or browse my repositories to find some of the stand-alone plugins I've authored.

I use Linux as my main operating system. I enjoy working in my terminal. I prefer keyboard-driven software in general. Check out my dotfiles!

I love open-source. Most of my daily drivers are open-source software. I also author my own open-source contributions. Find them here, on Github!

I love physics. I love understanding the universe on a theoretical level. My undergraduate studies were in Applied Physics. I enjoy browsing the Physics Stack Exchange for brain-tickling discussion.

I enjoy discussion about software. Catch me on IRC: igemnace on libera.chat. I frequent the following channels:

  • #vim
  • #archlinux
  • #bash
  • #emacs
  • #node.js
  • #commonlisp
  • #git
  • #sr.ht

vim-makery's People

Contributors

d4d3vd4v3 avatar hauleth avatar igemnace avatar joereynolds 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

Watchers

 avatar  avatar  avatar

vim-makery's Issues

Depends too much on current working directory

See the following discussions for background:

https://www.reddit.com/r/vim/comments/7112pw/makeryvim_a_plugin_to_manage_your_makeprgs/dn7fj3k/

Right now, the plugin depends on the current working directory being set properly as Vim starts (or as the plugin is sourced, e.g. via :packadd).

This has a few drawbacks:

  • Doesn't work with multiple projects with different root directories in a single Vim instance
  • Doesn't work well after a :cd if the relevant makeprg is required to run from project root
  • Doesn't allow for easy dynamic sourcing of config (e.g. re-source with some :MakeryReload command)

Ideas moving forward:

  • Care about the current file, not the current working directory (set buffer variables? check out lh-vim-lib's project variables?)
  • Save project root to a variable, to work properly even after a :cd

Relies on simple heuristic for re-running setup

#3 has been resolved by having makery#Setup run in a buffer-local manner, then running config detection with an autocommand on BufRead,BufNewFile.

While this works in the simple cases I've tested, it doesn't seem as robust as it can be. For comparison, Projectionist runs config detection on a long list of autocommand events.

While duplicating Projectionist's effort would be a waste (better to just do #5), some of those might be required to catch edge cases. Catching buftype in commit 1ac07e8 was already a concession here, for example, since without it, opening the quickfix kept bringing up Makery warnings.

Doesn't run makeprg from project root

If Vim is opened from a project subdir, it reads .makery.json from project root properly, since it recurses up directories to search for it.

However, project root is sometimes needed for the makeprg to work (e.g. having Mtags run ctags -R src will certainly need to run in project root, for it to find src). Saving project root to a variable could certainly prove convenient.

Ideas for detecting project root:

  • For .makery.json: use the directory in which .makery.json is found.
  • For g:makery_config: without globbing, use the exact path as it appears in the config. With globbing, use the current path (parent directory of the current buffer)?
  • For Projectionist support: use the most precisely targeted root from projectionist#query() or projectionist#path()?

Doesn't allow setting compiler settings for filetypes instead of projects

After a discussion on #vim, the idea of having Makery config for filetypes, potentially across multiple projects, was brought up by m_ben and vxid. Use cases in mind were C++ and Python, for which multiple linters exist. The current Makery system works well for juggling the linters, although the project-specific nature of configuration will mean lots of duplicate .makery.json files.

No solid action plan for now, much less an implementation route. I'm leaving this space open for when I get a better idea of how to tackle this.

Feature request: reread makery.json

After changing makery.json, I need to save the current vim session, exit vim, and load the session again. I would rather have a command that rereads makery.json so changes take effect without restarting vim. Would that be something easy to add?

Do not show message when there exist command

Alternatively use :echo instead of :echom as with current setup it sometimes requires user to <CR> through messages. It could be hidden behind some kind of g:makery_debug flag.

[Question] Support for the "current file" variable

I want to run a linter for the current file based on something like the following:

{
  "lint": {"makeprg": "clang-tidy %"}
}

Currently, the percent sign is not recognized correctly. Is there something like that implemented? Thanks.

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.