diff options
author | Raymond Hettinger <python@rcn.com> | 2004-06-04 06:31:08 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-06-04 06:31:08 (GMT) |
commit | 4e49b836db96264b3b5236794a3200eea32b2519 (patch) | |
tree | a4c87341cc817962277444d7f8e3fccee9e4cff8 /Lib/idlelib | |
parent | 3c145449daa8356c6ae4c296ffb24b5214647442 (diff) | |
download | cpython-4e49b836db96264b3b5236794a3200eea32b2519.zip cpython-4e49b836db96264b3b5236794a3200eea32b2519.tar.gz cpython-4e49b836db96264b3b5236794a3200eea32b2519.tar.bz2 |
SF patch #961387: Make IDLE's paragraph reformatting width configurable
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/FormatParagraph.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/config-main.def | 3 | ||||
-rw-r--r-- | Lib/idlelib/configDialog.py | 18 |
3 files changed, 27 insertions, 4 deletions
diff --git a/Lib/idlelib/FormatParagraph.py b/Lib/idlelib/FormatParagraph.py index eb0e693..80c654e 100644 --- a/Lib/idlelib/FormatParagraph.py +++ b/Lib/idlelib/FormatParagraph.py @@ -15,6 +15,7 @@ # * Fancy comments, like this bulleted list, arent handled :-) import re +from configHandler import idleConf class FormatParagraph: @@ -31,6 +32,7 @@ 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: @@ -44,8 +46,8 @@ class FormatParagraph: 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") @@ -62,7 +64,7 @@ class FormatParagraph: 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) @@ -99,7 +101,7 @@ def find_paragraph(text, mark): 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) diff --git a/Lib/idlelib/config-main.def b/Lib/idlelib/config-main.def index e06234b..b8667b8 100644 --- a/Lib/idlelib/config-main.def +++ b/Lib/idlelib/config-main.def @@ -58,6 +58,9 @@ font-size= 10 font-bold= 0 encoding= none +[FormatParagraph] +paragraph=70 + [Indent] use-spaces= 1 num-spaces= 4 diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py index 2645943..35ef9ae 100644 --- a/Lib/idlelib/configDialog.py +++ b/Lib/idlelib/configDialog.py @@ -337,6 +337,7 @@ class ConfigDialog(Toplevel): #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) @@ -349,6 +350,7 @@ class ConfigDialog(Toplevel): 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 @@ -374,6 +376,11 @@ class ConfigDialog(Toplevel): 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, @@ -411,6 +418,7 @@ class ConfigDialog(Toplevel): 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 @@ -429,6 +437,9 @@ class ConfigDialog(Toplevel): 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) @@ -466,6 +477,7 @@ class ConfigDialog(Toplevel): 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) @@ -558,6 +570,10 @@ class ConfigDialog(Toplevel): 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) @@ -1070,6 +1086,8 @@ class ConfigDialog(Toplevel): #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')) |