mirror of
https://github.com/vale981/python-docstring-mode
synced 2025-03-05 09:31:43 -05:00
honor fill column, some other minor fixes
This commit is contained in:
parent
33c2e850de
commit
cede45a6e8
2 changed files with 39 additions and 13 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
"""
|
||||
General Python docstring wrapper
|
||||
==============================================
|
||||
================================
|
||||
|
||||
Utility for wrapping docstrings in Python; specifically, docstrings in
|
||||
U{Epytext <http://epydoc.sourceforge.net/manual-epytext.html>} or Sphinx
|
||||
|
@ -179,14 +179,14 @@ class RegularParagraph(object):
|
|||
|
||||
|
||||
def wrap(self, output, indentation, width, initialBlank):
|
||||
thisLineWidth = width
|
||||
maxWidthThisLine = width
|
||||
if not self.words:
|
||||
return
|
||||
if initialBlank:
|
||||
thisLine = self.firstIndent(indentation)
|
||||
else:
|
||||
thisLine = ''
|
||||
thisLineWidth -= (3 + len(indentation))
|
||||
maxWidthThisLine -= (3 + len(indentation))
|
||||
first = True
|
||||
prevWord = ''
|
||||
for num, word in enumerate(self.words):
|
||||
|
@ -201,8 +201,10 @@ class RegularParagraph(object):
|
|||
else:
|
||||
spaces = 1
|
||||
prevWord = word
|
||||
if ( self.pointTracker.lengthOf(thisLine) +
|
||||
self.pointTracker.lengthOf(word) + spaces <= thisLineWidth ):
|
||||
thisLineWidthWithThisWord = (self.pointTracker.lengthOf(thisLine) +
|
||||
self.pointTracker.lengthOf(word) +
|
||||
spaces)
|
||||
if thisLineWidthWithThisWord <= maxWidthThisLine or first:
|
||||
if first:
|
||||
first = not first
|
||||
else:
|
||||
|
@ -211,7 +213,7 @@ class RegularParagraph(object):
|
|||
else:
|
||||
output.write(self.pointTracker.scan(thisLine, output.tell()))
|
||||
output.write("\n")
|
||||
thisLineWidth = width
|
||||
maxWidthThisLine = width
|
||||
thisLine = self.restIndent(indentation) + word
|
||||
output.write(self.pointTracker.scan(thisLine, output.tell()))
|
||||
output.write("\n")
|
||||
|
@ -519,22 +521,38 @@ def sampleDocstring():
|
|||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--offset")
|
||||
parser.add_argument("--indent")
|
||||
parser.add_argument("--width")
|
||||
namespace = parser.parse_args(sys.argv[1:])
|
||||
|
||||
from cStringIO import StringIO
|
||||
|
||||
io = StringIO()
|
||||
indata = sys.stdin.read()
|
||||
inlines = indata.split("\n")
|
||||
initialBlank, indentCount = indentHeuristic(inlines, io)
|
||||
point = 0
|
||||
if len(sys.argv) > 1 and sys.argv[1] == 'offset':
|
||||
doOffset = True
|
||||
point = int(sys.argv[2])
|
||||
width = 79
|
||||
|
||||
if namespace.offset is not None:
|
||||
point = int(namespace.offset)
|
||||
if namespace.indent is not None:
|
||||
indentCount = int(namespace.indent)
|
||||
if namespace.width is not None:
|
||||
width = int(namespace.width)
|
||||
|
||||
offset = wrapPythonDocstring(
|
||||
indata, io,
|
||||
indentation=" " * indentCount,
|
||||
width=width,
|
||||
point=point,
|
||||
initialBlank=initialBlank,
|
||||
)
|
||||
if doOffset:
|
||||
if namespace.offset is not None:
|
||||
sys.stdout.write(repr(offset))
|
||||
sys.stdout.write(" ")
|
||||
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
(throw 'not-a-string nil))))
|
||||
(string-start (+ (goto-char (nth 8 syx))
|
||||
3))
|
||||
;; at the beginning of the screen here
|
||||
(indent-count (- (- string-start 3)
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(point))))
|
||||
(string-end
|
||||
(- (condition-case () ; for unbalanced quotes
|
||||
(progn (forward-sexp)
|
||||
|
@ -32,14 +37,17 @@
|
|||
(shell-command-on-region
|
||||
string-start string-end
|
||||
(format
|
||||
"python %s offset %s"
|
||||
"python %s --offset %s --indent %s --width %s"
|
||||
python-docstring-script
|
||||
orig-offset)
|
||||
orig-offset
|
||||
indent-count
|
||||
fill-column
|
||||
)
|
||||
:replace t)
|
||||
(goto-char string-start)
|
||||
(forward-sexp)
|
||||
(string-to-number
|
||||
(buffer-substring-no-properties string-start (point)))
|
||||
(buffer-substring-no-properties string-start orig-point))
|
||||
)))
|
||||
(delete-region string-start (+ 1 (point)))
|
||||
offset-within)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue