Comments (3)
+1
from beautifyruby.
+1
from beautifyruby.
+1.
As a temporary workaround, open up beautify_ruby.py and replace the beautify_buffer
function with this:
def beautify_buffer(self, edit):
sel = self.view.sel()
if all(selection.empty() for selection in sel): # if there is no selection,
sel = [sublime.Region(0, self.view.size())] # beautify the entire file
for buffer_region in sel:
# buffer_region = sublime.Region(0, self.view.size())
buffer_text = self.view.substr(buffer_region)
if buffer_text == "":
return
self.save_viewport_state()
beautified_buffer = self.pipe(self.cmd(), buffer_text)
fix_lines = beautified_buffer.replace(os.linesep,'\n')
self.check_valid_output(fix_lines)
self.view.replace(edit, buffer_region, fix_lines)
self.reset_viewport_state()
This beautifies just the selections, or the entire file if there is no selection. However, BeautifyRuby treats it as if the selection is all there is in the file, so indentation is stripped down to the base indentation. To fix this, we could use python's textwrap module.
import textwrap
# skip a bunch of lines
def beautify_buffer(self, edit):
sel = self.view.sel()
if all(selection.empty() for selection in sel):
sel = [sublime.Region(0, self.view.size())]
for buffer_region in sel:
# buffer_region = sublime.Region(0, self.view.size())
buffer_text = self.view.substr(buffer_region)
indentation = len(buffer_text) - len(buffer_text.lstrip()) # this line
if buffer_text == "":
return
self.save_viewport_state()
beautified_buffer = self.pipe(self.cmd(), buffer_text)
fix_lines = beautified_buffer.replace(os.linesep,'\n')
fix_lines = textwrap.indent(fix_lines, ' ' * indentation) # and this one
self.check_valid_output(fix_lines)
self.view.replace(edit, buffer_region, fix_lines)
self.reset_viewport_state()
from beautifyruby.
Related Issues (20)
- Error: invalid output. Check your ruby interpreter setting (only with ERB files) HOT 8
- Align parameters according to the standard and/or Rubocop HOT 2
- Incorrect Indentation of Comments HOT 2
- multiline method chaining with leading dots HOT 1
- Heredoc EOF Indented HOT 1
- Is it possible to set tab size for different type of file?
- How to add space at both sides of “+” etc
- Empty lines
- Can you run beautifyRuby on project.
- ERROR: This is not a ruby file
- Ruby 3.0 single line methods support
- After %x command rest of file is super indented HOT 3
- BeautifyRuby changes tab_size to 4 HOT 2
- Case Statements Not Indenting HOT 1
- Parameters not aligned for multiline method calls with no parenthesis
- `class` hash key break alignment when starting a line
- Indents incorrectly for odd tab_size HOT 1
- Turn off beautify for regions? HOT 1
- Unexpected Indentation
- case without matcher HOT 2
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 beautifyruby.