# * Fancy comments, like this bulleted list, arent handled :-)
import re
+from configHandler import idleConf
class FormatParagraph:
self.editwin = None
def format_paragraph_event(self, event):
+ maxformatwidth = int(idleConf.GetOption('main','FormatParagraph','paragraph'))
text = self.editwin.text
first, last = self.editwin.get_selection_indices()
if first and last:
lines = data.split("\n")
lines = map(lambda st, l=len(comment_header): st[l:], lines)
data = "\n".join(lines)
- # Reformat to 70 chars or a 20 char width, whichever is greater.
- format_width = max(70-len(comment_header), 20)
+ # Reformat to maxformatwidth chars or a 20 char width, whichever is greater.
+ format_width = max(maxformatwidth, len(comment_header), 20)
newdata = reformat_paragraph(data, format_width)
# re-split and re-insert the comment header.
newdata = newdata.split("\n")
newdata = '\n'.join(map(builder, newdata)) + block_suffix
else:
# Just a normal text format
- newdata = reformat_paragraph(data)
+ newdata = reformat_paragraph(data, maxformatwidth)
text.tag_remove("sel", "1.0", "end")
if newdata != data:
text.mark_set("insert", first)
first = "%d.0" % (lineno+1)
return first, last, comment_header, text.get(first, last)
-def reformat_paragraph(data, limit=70):
+def reformat_paragraph(data, limit):
lines = data.split("\n")
i = 0
n = len(lines)
#tkVars
self.winWidth=StringVar(self)
self.winHeight=StringVar(self)
+ self.paraWidth=StringVar(self)
self.startupEdit=IntVar(self)
self.autoSave=IntVar(self)
self.encoding=StringVar(self)
frameRun=Frame(frame,borderwidth=2,relief=GROOVE)
frameSave=Frame(frame,borderwidth=2,relief=GROOVE)
frameWinSize=Frame(frame,borderwidth=2,relief=GROOVE)
+ frameParaSize=Frame(frame,borderwidth=2,relief=GROOVE)
frameEncoding=Frame(frame,borderwidth=2,relief=GROOVE)
frameHelp=Frame(frame,borderwidth=2,relief=GROOVE)
#frameRun
labelWinHeightTitle=Label(frameWinSize,text='Height')
entryWinHeight=Entry(frameWinSize,textvariable=self.winHeight,
width=3)
+ #paragraphFormatWidth
+ labelParaWidthTitle=Label(frameParaSize,text='Paragraph reformat'+
+ ' width (in characters)')
+ entryParaWidth=Entry(frameParaSize,textvariable=self.paraWidth,
+ width=3)
#frameEncoding
labelEncodingTitle=Label(frameEncoding,text="Default Source Encoding")
radioEncLocale=Radiobutton(frameEncoding,variable=self.encoding,
frameRun.pack(side=TOP,padx=5,pady=5,fill=X)
frameSave.pack(side=TOP,padx=5,pady=5,fill=X)
frameWinSize.pack(side=TOP,padx=5,pady=5,fill=X)
+ frameParaSize.pack(side=TOP,padx=5,pady=5,fill=X)
frameEncoding.pack(side=TOP,padx=5,pady=5,fill=X)
frameHelp.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
#frameRun
labelWinHeightTitle.pack(side=RIGHT,anchor=E,pady=5)
entryWinWidth.pack(side=RIGHT,anchor=E,padx=10,pady=5)
labelWinWidthTitle.pack(side=RIGHT,anchor=E,pady=5)
+ #paragraphFormatWidth
+ labelParaWidthTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
+ entryParaWidth.pack(side=RIGHT,anchor=E,padx=10,pady=5)
#frameEncoding
labelEncodingTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
radioEncNone.pack(side=RIGHT,anchor=E,pady=5)
self.keysAreBuiltin.trace_variable('w',self.VarChanged_keysAreBuiltin)
self.winWidth.trace_variable('w',self.VarChanged_winWidth)
self.winHeight.trace_variable('w',self.VarChanged_winHeight)
+ self.paraWidth.trace_variable('w',self.VarChanged_paraWidth)
self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
self.autoSave.trace_variable('w',self.VarChanged_autoSave)
self.encoding.trace_variable('w',self.VarChanged_encoding)
value=self.winHeight.get()
self.AddChangedItem('main','EditorWindow','height',value)
+ def VarChanged_paraWidth(self,*params):
+ value=self.paraWidth.get()
+ self.AddChangedItem('main','FormatParagraph','paragraph',value)
+
def VarChanged_startupEdit(self,*params):
value=self.startupEdit.get()
self.AddChangedItem('main','General','editor-on-startup',value)
#initial window size
self.winWidth.set(idleConf.GetOption('main','EditorWindow','width'))
self.winHeight.set(idleConf.GetOption('main','EditorWindow','height'))
+ #initial paragraph reformat size
+ self.paraWidth.set(idleConf.GetOption('main','FormatParagraph','paragraph'))
# default source encoding
self.encoding.set(idleConf.GetOption('main', 'EditorWindow',
'encoding', default='none'))