paste text..
The insert mode mapping I have is: x<bs><esc>"+]p
I'm getting really weird results with a snippet I'm pasting from a web
page, using GVim 7.3 (this is the snippet before paste):
def moneyfmt(value, places=2, curr='', sep=',', dp='.',
              pos='', neg='-', trailneg=''):
     """Convert Decimal to a money formatted string.
     places:  required number of places after the decimal point
     curr:    optional currency symbol before the sign (may be blank)
     sep:     optional grouping separator (comma, period, space, or blank)
     dp:      decimal point indicator (comma or period)
              only specify as blank when places is zero
     pos:     optional sign for positive numbers: '+', space or blank
     neg:     optional sign for negative numbers: '-', '(', space or blank
     trailneg:optional trailing minus indicator:  '-', ')', space or blank
     >>> d = Decimal('-1234567.8901')
     >>> moneyfmt(d, curr='$')
     '-$1,234,567.89'
     >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
     '1.234.568-'
     >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
     '($1,234,567.89)'
     >>> moneyfmt(Decimal(123456789), sep=' ')
     '123 456 789.00'
     >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
     '<0.02>'
     """
     q = Decimal(10) ** -places      # 2 places --> '0.01'
     sign, digits, exp = value.quantize(q).as_tuple()
     result = []
     digits = map(str, digits)
     build, next = result.append, digits.pop
     if sign:
         build(trailneg)
     for i in range(places):
         build(next() if digits else '0')
     build(dp)
     if not digits:
         build('0')
     i = 0
     while digits:
         build(next())
         i += 1
         if i == 3 and digits:
             i = 0
             build(sep)
     build(curr)
     build(neg if sign else pos)
     return ''.join(reversed(result))
when I'm pasting at an existing indent of 4 spaces, I get:
     def moneyfmt(value, places=2, curr='', sep=',', dp='.',
     pos='', neg='-', trailneg=''):
"""Convert Decimal to a money formatted string.
places:  required number of places after the decimal point
curr:    optional currency symbol before the sign (may be blank)
sep:     optional grouping separator (comma, period, space, or blank)
dp:      decimal point indicator (comma or period)
     only specify as blank when places is zero
pos:     optional sign for positive numbers: '+', space or blank
neg:     optional sign for negative numbers: '-', '(', space or blank
trailneg:optional trailing minus indicator:  '-', ')', space or blank
 >>> d = Decimal('-1234567.8901')
 >>> moneyfmt(d, curr='$')
'-$1,234,567.89'
 >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
'1.234.568-'
 >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
'($1,234,567.89)'
 >>> moneyfmt(Decimal(123456789), sep=' ')
'123 456 789.00'
 >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
'<0.02>'
"""
q = Decimal(10) ** -places      # 2 places --> '0.01'
sign, digits, exp = value.quantize(q).as_tuple()
result = []
digits = map(str, digits)
build, next = result.append, digits.pop
if sign:
build(trailneg)
for i in range(places):
build(next() if digits else '0')
build(dp)
if not digits:
build('0')
i = 0
while digits:
build(next())
i += 1
if i == 3 and digits:
    i = 0
    build(sep)
build(curr)
build(neg if sign else pos)
return ''.join(reversed(result))
Why is one indented block preserved near the end while all others are
flattened? If I paste at 0 indent, all indent is flattened.
Seems like 'paste' option doesn't make a difference in gvim except
that it stops my alt-key shortcut from working in insert mode.
How can I do a normal, proper paste at an existing indent with a
keyboard shortcut (i.e. same as what you get with middle mouse button,
so that every line is at an indent I begin with plus whatever indent
is in the copied text)?:
     def moneyfmt(value, places=2, curr='', sep=',', dp='.',
              pos='', neg='-', trailneg=''):
     """Convert Decimal to a money formatted string.
     places:  required number of places after the decimal point
     curr:    optional currency symbol before the sign (may be blank)
     sep:     optional grouping separator (comma, period, space, or blank)
     dp:      decimal point indicator (comma or period)
              only specify as blank when places is zero
     pos:     optional sign for positive numbers: '+', space or blank
     neg:     optional sign for negative numbers: '-', '(', space or blank
     trailneg:optional trailing minus indicator:  '-', ')', space or blank
     >>> d = Decimal('-1234567.8901')
     >>> moneyfmt(d, curr='$')
     '-$1,234,567.89'
     >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
     '1.234.568-'
     >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
     '($1,234,567.89)'
     >>> moneyfmt(Decimal(123456789), sep=' ')
     '123 456 789.00'
     >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
     '<0.02>'
     """
     q = Decimal(10) ** -places      # 2 places --> '0.01'
     sign, digits, exp = value.quantize(q).as_tuple()
     result = []
     digits = map(str, digits)
     build, next = result.append, digits.pop
     if sign:
         build(trailneg)
     for i in range(places):
         build(next() if digits else '0')
     build(dp)
     if not digits:
         build('0')
     i = 0
     while digits:
         build(next())
         i += 1
         if i == 3 and digits:
             i = 0
             build(sep)
     build(curr)
     build(neg if sign else pos)
     return ''.join(reversed(result))
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
 
No comments:
Post a Comment