keyboardMacros.rc
author Claus Gittinger <cg@exept.de>
Fri, 04 Dec 2009 14:22:22 +0100
changeset 1086 18aa0a0cd8b1
parent 1077 6ac6f64936f8
child 1243 1fc6b3f01e48
permissions -rw-r--r--
when indenting/undenting, move the cursor with it
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"*
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 * Encoding: iso8859-1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 * $Header$
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 * MIMEType: application/x-smalltalk-source
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 * sample keyboardMacros.rc - file
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 * this file defines some keyboard macros
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 * Feel free to add your own.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 * Here, only the macro-codes are defined;
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
 * the actual binding of macro to a particular key is done in keyboard.rc.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
 * these are my personal preferrences which may not be
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
 * correct for your environment.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
 *
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
 * WARNING:
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
 *   please keep the expressions below free from manipulating
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
 *   global state.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
 *   Reason: in multihead applications, this will be consulted for each
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
 *   new display screen.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
 *"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
|macros|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
macros := UserPreferences current functionKeySequences.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
"/ macro to replace a text selection by unix commands output
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
macros at:#ReplaceSelectionByUnixCommandsOutput put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	"replace selection by corresponding
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	 unix commands output"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	|sel|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	sel := self selection.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	sel notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	    self replace:
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
		(PipeStream readingFrom:(sel asString))
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
		    contents asString
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
"/ macro to paste the text generated by a block
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"/macros at:#PasteBlockEvaluationsOutput put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
"/        "replace selection by blocks output"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
"/        |sel s block|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
"/        sel := self selectionAsString.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"/        sel notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
"/            block := Compiler evaluate:sel asString string.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
"/            s := '''' writeStream.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
"/            block value:s.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
"/            self paste:s contents asString
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
"/        ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
"/'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"/ macro to toggle tabs
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
macros at:#ToggleTabs put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	"toggle between 4-col
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	 and 8-col tabs"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	(tabPositions == self class tab4Positions)
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	     ifTrue:[self setTab8]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	     ifFalse:[self setTab4]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
"/ macro to indent by 4
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
macros at:#IndentBy4 put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	"indent selected line-range
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
	 by 4 spaces (i.e. to the right)"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
		line2 := line1+1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	    self withExecuteCursorDo:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
		    |line|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
		    line := self listAt:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
		    line notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
			line notEmpty ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
			    line := ''    '' , line.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
			    self withoutRedrawAt:lineNr put:line.
1086
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   102
			    line1 = (line2-1) ifTrue:[
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   103
				self cursorRight:4
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   104
			    ].
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
			]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		self textChanged.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
"/ macro to undent by 4
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
macros at:#UndentBy4 put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	"undent selected line-range
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	 by 4 spaces (i.e. to the left)"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
		line2 := line1+1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
	    self withExecuteCursorDo:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
		    |line|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
		    line := self listAt:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
		    line notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
			line notEmpty ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
			    (line startsWith:''    '') ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
				line := line copyFrom:5.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
				self withoutRedrawAt:lineNr put:line.
1086
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   144
				line1 = (line2-1) ifTrue:[
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   145
				    cursorCol > 4 ifTrue:[ self cursorLeft:4 ]
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   146
				].
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
			    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
			]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
		    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		self textChanged.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
"/ macro to indent by 1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
macros at:#IndentBy1 put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
	"indent selected line-range
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
	 by 1 space (i.e. to the right)"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
		line2 := line1+1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
	    self withExecuteCursorDo:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
		    |line|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
		    line := self listAt:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
		    line notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
			line notEmpty ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
			    line := '' '' , line.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
			    self withoutRedrawAt:lineNr put:line.
1086
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   186
			    line1 = (line2-1) ifTrue:[
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   187
				self cursorRight:1
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   188
			    ].
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
			]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
		    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
		self textChanged.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
"/ macro to undent by 1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
macros at:#UndentBy1 put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
	"undent selected line-range
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
	 by 1 space (i.e. to the left)"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
		line2 := line1+1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
	    self withExecuteCursorDo:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
		    |line|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
		    line := self listAt:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
		    line notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
			line notEmpty ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
			    (line startsWith:'' '') ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
				line := line copyFrom:2.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
				self withoutRedrawAt:lineNr put:line.
1086
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   228
				line1 = (line2-1) ifTrue:[
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   229
				    cursorCol > 1 ifTrue:[ self cursorLeft:1 ]
18aa0a0cd8b1 when indenting/undenting, move the cursor with it
Claus Gittinger <cg@exept.de>
parents: 1077
diff changeset
   230
				].
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
			    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
			]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
		    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
		self textChanged.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
		line1 to:line2-1 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
"/ macro to convert selection to lowercase
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
macros at:#ConvertSelectionToLowercase put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
	"to-lower selected text"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
		line2 := line1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
	    line1 to:line2 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
		|line col1 col2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
		line := (self listAt:lineNr) copy.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
		line size > 0 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
		    lineNr == line1 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
			col1 := selectionStartCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
			col1 := 1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
		    lineNr == line2 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
			col2 := selectionEndCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
			col2 := (self listAt:lineNr) size.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
		    col1 to:col2 do:[:col |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
			|ch|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
			ch := line at:col.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
			line at:col put:ch asLowercase.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
		    self withoutRedrawAt:lineNr put:line.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
"/ macro to convert selection to uppercaseFirst words
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
"/
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
macros at:#ConvertSelectionToUppercaseFirst put:'
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   293
	"to-upperFirst selected text"
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
		line2 := line1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
	    line1 to:line2 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
		|line col1 col2 state|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
		line := (self listAt:lineNr) copy.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
		line size > 0 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
		    lineNr == line1 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
			col1 := selectionStartCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
			col1 := 1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
		    lineNr == line2 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
			col2 := selectionEndCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
			col2 := (self listAt:lineNr) size.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
		    state := #first.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
		    col1 to:col2 do:[:col |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
			|ch|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
			ch := line at:col.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
			ch isSeparator ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
			    state == #first ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
				line at:col put:ch asUppercase.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
				state := #skipRest
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
			    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
			] ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
			    state := #first
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
			]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
		    self withoutRedrawAt:lineNr put:line.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
macros at:#ConvertSelectionToUppercase put:'
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   344
	"to-upper selected text"
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
	|line1 line2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
	line1 isNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
	    line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
		line2 := line1
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
	    ]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
	].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
	line1 notNil ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
	    line1 to:line2 do:[:lineNr |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
		|line col1 col2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
		line := (self listAt:lineNr) copy.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
		line size > 0 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
		    lineNr == line1 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
			col1 := selectionStartCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
			col1 := 1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
		    lineNr == line2 ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
			col2 := selectionEndCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
		    ] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
			col2 := (self listAt:lineNr) size.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
		    col1 to:col2 do:[:col |
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
			|ch|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
			ch := line at:col.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
			line at:col put:ch asUppercase.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
		    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
		    self withoutRedrawAt:lineNr put:line.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
		    self invalidateLine:lineNr.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
		].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
	    ].
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   386
macros at:#ConvertSelectionToLowercaseOrUppercaseOrUppercaseFirst put:'
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   387
	"toLower/toUppercaseFirst/toUpper selected text"
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   388
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   389
	|line1 line2|
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   390
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   391
	line1 := self selectionStartLine.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   392
	line2 := self selectionEndLine.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   393
	line1 isNil ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   394
	    line1 := self perform:#cursorLine ifNotUnderstood:nil.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   395
	    line1 notNil ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   396
		line2 := line1
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   397
	    ]
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   398
	].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   399
	line1 notNil ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   400
	    line1 to:line2 do:[:lineNr |
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   401
		|line col1 col2 isAllLower isLowerFirst isAllUpper isUpperFirst
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   402
		 makeLowercase makeUppercase makeUppercaseFirst makeLowercaseFirst|
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   403
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   404
		line := (self listAt:lineNr) copy.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   405
		line size > 0 ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   406
		    lineNr == line1 ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   407
			col1 := selectionStartCol.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   408
		    ] ifFalse:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   409
			col1 := 1.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   410
		    ].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   411
		    lineNr == line2 ifTrue:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   412
			col2 := selectionEndCol.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   413
		    ] ifFalse:[
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   414
			col2 := (self listAt:lineNr) size.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   415
		    ].
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   416
		    isAllLower := isAllUpper := isUpperFirst := isLowerFirst := true.
1070
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   417
		    col1 to:col2 do:[:col |
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   418
			|ch|
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   419
1070
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   420
			ch := line at:col.
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   421
			ch isUppercase ifTrue:[
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   422
			    isAllLower := false.
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   423
			    col == col1 ifTrue:[
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   424
				isLowerFirst := false.
1070
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   425
			    ].
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   426
			] ifFalse:[
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   427
			    ch isLowercase ifTrue:[
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   428
				isAllUpper := false.
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   429
				col == col1 ifTrue:[
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   430
				    isUpperFirst := false.
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   431
				].
1070
d3525fab5c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1068
diff changeset
   432
			    ]
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   433
			].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   434
		    ].
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   435
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   436
		    makeLowercase := makeUppercase := makeUppercaseFirst := makeLowercaseFirst := false.
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   437
		    isLowerFirst ifTrue:[
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   438
			makeUppercaseFirst := true.
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   439
		    ] ifFalse:[
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   440
			"/ must remember where we come from - otherwise, we end up
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   441
			"/ in upperFirst - lowerFirst cycle.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   442
			"/ think about a good place to store this state
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   443
			false "(isUpperFirst and:[isAllUpper not])" ifTrue:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   444
			    makeLowercaseFirst := true.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   445
			 ] ifFalse:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   446
			    isAllUpper ifTrue:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   447
				makeLowercase := true.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   448
			    ] ifFalse:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   449
				makeUppercase := true.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   450
			    ]
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   451
			]
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   452
		    ].
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   453
		    makeUppercaseFirst ifTrue:[
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   454
			line at:col1 put:(line at:col1) asUppercase.
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   455
		    ] ifFalse:[
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   456
			makeLowercaseFirst ifTrue:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   457
			    line at:col1 put:(line at:col1) asLowercase.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   458
			] ifFalse:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   459
			    col1 to:col2 do:[:col |
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   460
				|ch|
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   461
1077
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   462
				ch := line at:col.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   463
				ch := makeLowercase
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   464
					ifTrue:[ ch asLowercase ]
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   465
					ifFalse:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   466
					    makeUppercase
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   467
						ifTrue:[ ch asUppercase ]
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   468
						ifFalse:[
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   469
						    col == col1
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   470
							ifTrue:[ ch asUppercase ]
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   471
							ifFalse:[ ch asLowercase ]
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   472
						]
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   473
					].
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   474
				line at:col put:ch.
6ac6f64936f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1076
diff changeset
   475
			    ].
1076
2d6b2399e42c better F& behavior; start by makeing UpperFirst
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   476
			].
726
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   477
		    ].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   478
		    self withoutRedrawAt:lineNr put:line.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   479
		    self invalidateLine:lineNr.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   480
		].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   481
	    ].
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   482
	]
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   483
'.
c3108d9652d8 better F6 macro
Claus Gittinger <cg@exept.de>
parents: 720
diff changeset
   484
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
macros at:#ParenthizeSelection put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
	"place parenthesis around the selected text"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
	|line1 col1 line2 col2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
	col1 := self selectionStartCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
	col2 := self selectionEndCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
	(line1 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
	    and:[ col1 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
	    and:[ line2 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
	    and:[ col2 notNil ]]])
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
	ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
	    self insertString:'')'' atLine:line2 col:col2+1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
	    self insertString:''('' atLine:line1 col:col1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
	    self selectFromLine:line1 col:col1 toLine:line2 col:col2+2.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
	] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
	    self beep.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
macros at:#UnparenthizeSelection put:'
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
	"remove parenthesis in the selected text"
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
	|line1 col1 line2 col2|
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
	line1 := self selectionStartLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
	col1 := self selectionStartCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
	line2 := self selectionEndLine.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
	col2 := self selectionEndCol.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
	(line1 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
	    and:[ col1 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
	    and:[ line2 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
	    and:[ col2 notNil
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
	    and:[ (''({[<'' includes:(self characterAtLine:line1 col:col1))
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
	    and:[ (''>]})'' includes:(self characterAtLine:line2 col:col2))  ]]]]])
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
	ifTrue:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
	    self deleteCharAtLine:line2 col:col2.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
	    self deleteCharAtLine:line1 col:col1.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
	    self selectFromLine:line1 col:col1 toLine:line2 col:col2-2.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
	] ifFalse:[
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
	    self beep.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
	]
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
'.
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
936
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   531
macros at:#SingleQuoteSelection put:'
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   532
	"place single quotes around the selected text"
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   533
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   534
	|line1 col1 line2 col2|
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   535
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   536
	line1 := self selectionStartLine.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   537
	col1 := self selectionStartCol.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   538
	line2 := self selectionEndLine.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   539
	col2 := self selectionEndCol.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   540
	(line1 notNil
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   541
	    and:[ col1 notNil
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   542
	    and:[ line2 notNil
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   543
	    and:[ col2 notNil ]]])
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   544
	ifTrue:[
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   545
	    self insertString:Character quote asString atLine:line2 col:col2+1.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   546
	    self insertString:Character quote asString atLine:line1 col:col1.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   547
	    self selectFromLine:line1 col:col1 toLine:line2 col:col2+2.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   548
	] ifFalse:[
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   549
	    self beep.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   550
	]
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   551
'.
f0563e73619a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 729
diff changeset
   552
720
b41f5ac59722 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 718
diff changeset
   553
"/macros keys do:[:k |
b41f5ac59722 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 718
diff changeset
   554
"/    Transcript showCR:k.
b41f5ac59722 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 718
diff changeset
   555
"/].
718
4483f832a017 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
!