Comments (3)
Just to clarify, you want :Neoformat
to run bundle exec ruby-beautify
instead of ruby-beautify
if a Gemfile
is present?
Note: I don't have much experience with ruby
from neoformat.
That is correct. Unsure what the best approach would be, especially if you are in a child directory somewhere and you'd need to traverse the parent directories to find if a Gemfile is present somewhere.
from neoformat.
This is what I have so far. It would be great if you could check that it works for you!
Neoformat finds and checks the gem file with the regex ^gem .ruby-beautify.
and uses bundle exec ruby-beautify
instead of ruby-beautify
if present.
diff --git a/autoload/neoformat.vim b/autoload/neoformat.vim
index 7157f97..ebdc8b1 100644
--- a/autoload/neoformat.vim
+++ b/autoload/neoformat.vim
@@ -192,7 +192,10 @@ function! s:generate_cmd(definition, filetype) abort
call neoformat#utils#log('no exe field in definition')
return {}
endif
- if !executable(executable)
+
+ " check if executable is executable, need to split and take first
+ " executbale for cases such as 'bundle exec ruby-beautify'
+ if !executable(split(executable)[0])
call neoformat#utils#log('executable: ' . executable . ' is not an executable')
return {}
endif
diff --git a/autoload/neoformat/formatters/ruby.vim b/autoload/neoformat/formatters/ruby.vim
index ae09bfe..ce32bb8 100644
--- a/autoload/neoformat/formatters/ruby.vim
+++ b/autoload/neoformat/formatters/ruby.vim
@@ -3,8 +3,24 @@ function! neoformat#formatters#ruby#enabled() abort
endfunction
function! neoformat#formatters#ruby#rubybeautify() abort
- return {
+ let definition = {
\ 'exe': 'ruby-beautify',
\ 'args': ['--spaces', '-c ' . shiftwidth()],
\ }
+
+ let gemfile_lines = readfile(findfile('Gemfile', '.:'))
+
+ let use_bundle = 0
+ for l in gemfile_lines
+ if l =~# "^gem .ruby-beautify."
+ let use_bundle = 1
+ break
+ endif
+ endfor
+
+ if use_bundle
+ let definition.exe = 'bundle exec ruby-beautify'
+ endif
+
+ return definition
endfunction
from neoformat.
Related Issues (20)
- Escape filenames with the $ character
- bug: blade-formater unknow argument: q HOT 1
- `.swiftformat` config not detected
- clang-format used when formatter fails in some filetypes
- [Solved] fprettify makes nvim buffer empty HOT 1
- C# clang-format with Microsoft style broken HOT 1
- truncating files HOT 1
- Pyi files
- Clang-format doesn't use the style config file closest to the file's location
- Formatting F# buffer replaces it with error message
- g:neoformat_only_msg_on_error not working correctly
- Topiary support HOT 1
- Monorepo project root determination
- Adding `eslint_d` as valid formatter for another filetype, like "Vue" HOT 3
- .clang-format file is ignored when style is specified to file
- Configuration on neovim use lua HOT 1
- Add dprint as a formatter HOT 2
- Add ruff formatter for Python HOT 3
- Format only changed lines
- clang-format not work
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neoformat.