2017-09-20 5 views
2

Oft bearbeite ich einen Docstring und finde meine Bearbeitung schiebt die Breite einer Linie über den gewünschten rechten Rand. Daher müssen viele Textzeilen unterhalb dieser Änderung möglicherweise neu formatiert werden, bevor mein Docstring wieder akzeptabel ist.
Was ist eine einfache und sichere Möglichkeit, dies automatisch zu beheben?automatisch umformatieren Docstrings zu respektieren rechten Rand

Zum Beispiel:

class WellDocumentedClass: 
    """The first line of this is <72 characters wide. And is above lots| 
    more text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.| 
    et mauris ac eros placerat auctor. Mauris mollis est scelerisse | 
    accumsan dapibus. Ut imperdiet suscipit lacinia. Maecenas volutpat | 
    iaculis malesuada. Sed venenatis ipsum gravida molestolaoreet. Fuse| 
    facilisis neque nec mauris maximus rutrum. Suspendisse at vestibulo| 
    orci, ut feugiat odio. Aliquam erat volutpat. Nulla accumsan justo | 
    ligula, at imperdiet quam ultrices non. Cras vitae vehicula ligula.| 
    Quisque quam massa, dignissim in volutpat in, mattis eu urna.  | 
    """ 
    pass 

Oh nein! Ich habe versehentlich das Wort "Docstring" aus der ersten Zeile weggelassen. Es war so perfekt formatiert!

class WellDocumentedClass: 
    """The first line of this docstring is <72 characters wide. And is |above lots 
    more text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.| 
    et mauris ac eros placerat auctor. Mauris mollis est scelerisse | 
    accumsan dapibus. Ut imperdiet suscipit lacinia. Maecenas volutpat | 
    iaculis malesuada. Sed venenatis ipsum gravida molestolaoreet. Fuse| 
    facilisis neque nec mauris maximus rutrum. Suspendisse at vestibulo| 
    orci, ut feugiat odio. Aliquam erat volutpat. Nulla accumsan justo | 
    ligula, at imperdiet quam ultrices non. Cras vitae vehicula ligula.| 
    Quisque quam massa, dignissim in volutpat in, mattis eu urna.  | 
    """ 
    pass 

Argh. Zeit, meine Maus zu benutzen und viel zu drücken ... außer ... was machst du in solchen Momenten?

Antwort

2

Sie können dies in Sublime Text erzielen 3 durch die Schaffung eines (relativ) einfache Plugin:

  • Menü Extras -> Hersteller -> Neue Plugin ...
  • markieren und ersetzen mit dem folgenden
import sublime 
import sublime_plugin 
import textwrap 


class WrapTextCommand(sublime_plugin.TextCommand): 
    def run(self, edit, width=0): 
     # use the narrowest ruler from the view if no width specified, or default to 72 if no rulers are enabled 
     width = width or next(iter(self.view.settings().get('rulers', [])), 72) 
     new_sel = list() 
     # loop through the selections in reverse order so that the selection positions don't move when the selected text changes size 
     for sel in reversed(self.view.sel()): 
      # make sure the leading indentation is selected, for `dedent` to work properly 
      sel = sel.cover(self.view.line(sel.begin())) 
      # determine how much indentation is at the first selected line 
      indentation_amount = self.view.indentation_level(sel.begin()) * self.view.settings().get('tab_size', 4) 
      # create a wrapper that will keep that indentation 
      wrapper = textwrap.TextWrapper(drop_whitespace=True, width=width, initial_indent=' ' * indentation_amount, subsequent_indent=' ' * indentation_amount) 
      # unindent the selected text before then reformatting the text to fill the available (column) space 
      text = wrapper.fill(textwrap.dedent(self.view.substr(sel))) 
      # replace the selected text with the rewrapped text 
      self.view.replace(edit, sel, text) 
      # resize the selection to match the new wrapped text size 
      new_sel.append(sublime.Region(sel.begin(), sel.begin() + len(text))) 
     self.view.sel().clear() 
     self.view.sel().add_all(new_sel) 
  • speichern, im Ordner ST empfiehlt (Packages/User/) als so etwas wie wraptext.py
  • eine Keybinding erstellen Sie die neue Wrap-Funktionalität aufzurufen:
{ "keys": ["alt+."], "command": "wrap_text" }, 
  • genießen

wrap docstring

1

In PyCharm, markieren Sie die docstring und klicken Edit -> Fill Paragraph