mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
SF patch #961387: Make IDLE's paragraph reformatting width configurable
This commit is contained in:
parent
3c145449da
commit
4e49b836db
3 changed files with 27 additions and 4 deletions
|
@ -15,6 +15,7 @@
|
||||||
# * Fancy comments, like this bulleted list, arent handled :-)
|
# * Fancy comments, like this bulleted list, arent handled :-)
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
from configHandler import idleConf
|
||||||
|
|
||||||
class FormatParagraph:
|
class FormatParagraph:
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ class FormatParagraph:
|
||||||
self.editwin = None
|
self.editwin = None
|
||||||
|
|
||||||
def format_paragraph_event(self, event):
|
def format_paragraph_event(self, event):
|
||||||
|
maxformatwidth = int(idleConf.GetOption('main','FormatParagraph','paragraph'))
|
||||||
text = self.editwin.text
|
text = self.editwin.text
|
||||||
first, last = self.editwin.get_selection_indices()
|
first, last = self.editwin.get_selection_indices()
|
||||||
if first and last:
|
if first and last:
|
||||||
|
@ -44,8 +46,8 @@ class FormatParagraph:
|
||||||
lines = data.split("\n")
|
lines = data.split("\n")
|
||||||
lines = map(lambda st, l=len(comment_header): st[l:], lines)
|
lines = map(lambda st, l=len(comment_header): st[l:], lines)
|
||||||
data = "\n".join(lines)
|
data = "\n".join(lines)
|
||||||
# Reformat to 70 chars or a 20 char width, whichever is greater.
|
# Reformat to maxformatwidth chars or a 20 char width, whichever is greater.
|
||||||
format_width = max(70-len(comment_header), 20)
|
format_width = max(maxformatwidth, len(comment_header), 20)
|
||||||
newdata = reformat_paragraph(data, format_width)
|
newdata = reformat_paragraph(data, format_width)
|
||||||
# re-split and re-insert the comment header.
|
# re-split and re-insert the comment header.
|
||||||
newdata = newdata.split("\n")
|
newdata = newdata.split("\n")
|
||||||
|
@ -62,7 +64,7 @@ class FormatParagraph:
|
||||||
newdata = '\n'.join(map(builder, newdata)) + block_suffix
|
newdata = '\n'.join(map(builder, newdata)) + block_suffix
|
||||||
else:
|
else:
|
||||||
# Just a normal text format
|
# Just a normal text format
|
||||||
newdata = reformat_paragraph(data)
|
newdata = reformat_paragraph(data, maxformatwidth)
|
||||||
text.tag_remove("sel", "1.0", "end")
|
text.tag_remove("sel", "1.0", "end")
|
||||||
if newdata != data:
|
if newdata != data:
|
||||||
text.mark_set("insert", first)
|
text.mark_set("insert", first)
|
||||||
|
@ -99,7 +101,7 @@ def find_paragraph(text, mark):
|
||||||
first = "%d.0" % (lineno+1)
|
first = "%d.0" % (lineno+1)
|
||||||
return first, last, comment_header, text.get(first, last)
|
return first, last, comment_header, text.get(first, last)
|
||||||
|
|
||||||
def reformat_paragraph(data, limit=70):
|
def reformat_paragraph(data, limit):
|
||||||
lines = data.split("\n")
|
lines = data.split("\n")
|
||||||
i = 0
|
i = 0
|
||||||
n = len(lines)
|
n = len(lines)
|
||||||
|
|
|
@ -58,6 +58,9 @@ font-size= 10
|
||||||
font-bold= 0
|
font-bold= 0
|
||||||
encoding= none
|
encoding= none
|
||||||
|
|
||||||
|
[FormatParagraph]
|
||||||
|
paragraph=70
|
||||||
|
|
||||||
[Indent]
|
[Indent]
|
||||||
use-spaces= 1
|
use-spaces= 1
|
||||||
num-spaces= 4
|
num-spaces= 4
|
||||||
|
|
|
@ -337,6 +337,7 @@ class ConfigDialog(Toplevel):
|
||||||
#tkVars
|
#tkVars
|
||||||
self.winWidth=StringVar(self)
|
self.winWidth=StringVar(self)
|
||||||
self.winHeight=StringVar(self)
|
self.winHeight=StringVar(self)
|
||||||
|
self.paraWidth=StringVar(self)
|
||||||
self.startupEdit=IntVar(self)
|
self.startupEdit=IntVar(self)
|
||||||
self.autoSave=IntVar(self)
|
self.autoSave=IntVar(self)
|
||||||
self.encoding=StringVar(self)
|
self.encoding=StringVar(self)
|
||||||
|
@ -349,6 +350,7 @@ class ConfigDialog(Toplevel):
|
||||||
frameRun=Frame(frame,borderwidth=2,relief=GROOVE)
|
frameRun=Frame(frame,borderwidth=2,relief=GROOVE)
|
||||||
frameSave=Frame(frame,borderwidth=2,relief=GROOVE)
|
frameSave=Frame(frame,borderwidth=2,relief=GROOVE)
|
||||||
frameWinSize=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)
|
frameEncoding=Frame(frame,borderwidth=2,relief=GROOVE)
|
||||||
frameHelp=Frame(frame,borderwidth=2,relief=GROOVE)
|
frameHelp=Frame(frame,borderwidth=2,relief=GROOVE)
|
||||||
#frameRun
|
#frameRun
|
||||||
|
@ -374,6 +376,11 @@ class ConfigDialog(Toplevel):
|
||||||
labelWinHeightTitle=Label(frameWinSize,text='Height')
|
labelWinHeightTitle=Label(frameWinSize,text='Height')
|
||||||
entryWinHeight=Entry(frameWinSize,textvariable=self.winHeight,
|
entryWinHeight=Entry(frameWinSize,textvariable=self.winHeight,
|
||||||
width=3)
|
width=3)
|
||||||
|
#paragraphFormatWidth
|
||||||
|
labelParaWidthTitle=Label(frameParaSize,text='Paragraph reformat'+
|
||||||
|
' width (in characters)')
|
||||||
|
entryParaWidth=Entry(frameParaSize,textvariable=self.paraWidth,
|
||||||
|
width=3)
|
||||||
#frameEncoding
|
#frameEncoding
|
||||||
labelEncodingTitle=Label(frameEncoding,text="Default Source Encoding")
|
labelEncodingTitle=Label(frameEncoding,text="Default Source Encoding")
|
||||||
radioEncLocale=Radiobutton(frameEncoding,variable=self.encoding,
|
radioEncLocale=Radiobutton(frameEncoding,variable=self.encoding,
|
||||||
|
@ -411,6 +418,7 @@ class ConfigDialog(Toplevel):
|
||||||
frameRun.pack(side=TOP,padx=5,pady=5,fill=X)
|
frameRun.pack(side=TOP,padx=5,pady=5,fill=X)
|
||||||
frameSave.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)
|
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)
|
frameEncoding.pack(side=TOP,padx=5,pady=5,fill=X)
|
||||||
frameHelp.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
|
frameHelp.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
|
||||||
#frameRun
|
#frameRun
|
||||||
|
@ -429,6 +437,9 @@ class ConfigDialog(Toplevel):
|
||||||
labelWinHeightTitle.pack(side=RIGHT,anchor=E,pady=5)
|
labelWinHeightTitle.pack(side=RIGHT,anchor=E,pady=5)
|
||||||
entryWinWidth.pack(side=RIGHT,anchor=E,padx=10,pady=5)
|
entryWinWidth.pack(side=RIGHT,anchor=E,padx=10,pady=5)
|
||||||
labelWinWidthTitle.pack(side=RIGHT,anchor=E,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
|
#frameEncoding
|
||||||
labelEncodingTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
|
labelEncodingTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
|
||||||
radioEncNone.pack(side=RIGHT,anchor=E,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.keysAreBuiltin.trace_variable('w',self.VarChanged_keysAreBuiltin)
|
||||||
self.winWidth.trace_variable('w',self.VarChanged_winWidth)
|
self.winWidth.trace_variable('w',self.VarChanged_winWidth)
|
||||||
self.winHeight.trace_variable('w',self.VarChanged_winHeight)
|
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.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
|
||||||
self.autoSave.trace_variable('w',self.VarChanged_autoSave)
|
self.autoSave.trace_variable('w',self.VarChanged_autoSave)
|
||||||
self.encoding.trace_variable('w',self.VarChanged_encoding)
|
self.encoding.trace_variable('w',self.VarChanged_encoding)
|
||||||
|
@ -558,6 +570,10 @@ class ConfigDialog(Toplevel):
|
||||||
value=self.winHeight.get()
|
value=self.winHeight.get()
|
||||||
self.AddChangedItem('main','EditorWindow','height',value)
|
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):
|
def VarChanged_startupEdit(self,*params):
|
||||||
value=self.startupEdit.get()
|
value=self.startupEdit.get()
|
||||||
self.AddChangedItem('main','General','editor-on-startup',value)
|
self.AddChangedItem('main','General','editor-on-startup',value)
|
||||||
|
@ -1070,6 +1086,8 @@ class ConfigDialog(Toplevel):
|
||||||
#initial window size
|
#initial window size
|
||||||
self.winWidth.set(idleConf.GetOption('main','EditorWindow','width'))
|
self.winWidth.set(idleConf.GetOption('main','EditorWindow','width'))
|
||||||
self.winHeight.set(idleConf.GetOption('main','EditorWindow','height'))
|
self.winHeight.set(idleConf.GetOption('main','EditorWindow','height'))
|
||||||
|
#initial paragraph reformat size
|
||||||
|
self.paraWidth.set(idleConf.GetOption('main','FormatParagraph','paragraph'))
|
||||||
# default source encoding
|
# default source encoding
|
||||||
self.encoding.set(idleConf.GetOption('main', 'EditorWindow',
|
self.encoding.set(idleConf.GetOption('main', 'EditorWindow',
|
||||||
'encoding', default='none'))
|
'encoding', default='none'))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue