[squeak-dev] The Trunk: Morphic-mt.1828.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Dec 22 09:09:01 UTC 2021


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1828.mcz

==================== Summary ====================

Name: Morphic-mt.1828
Author: mt
Time: 22 December 2021, 10:08:57.760053 am
UUID: e590bde6-a599-1044-81d1-a37f78271169
Ancestors: Morphic-mt.1827

Tweak enclose-selection feature to toggle symmetric quote characters such as "" '' and ||. Others are still open=add and close=remove.

Thanks to Christoph (ct) and Jaromir (jar) for the idea!

Update #autoEnclose default to match the settings in the ReleaseBuilder. Now that several US-only keyboard shortcuts are gone, we need this preference and #encloseSelection enabled to cover all the cases.

Sorry for any inconveniences.

=============== Diff against Morphic-mt.1827 ===============

Item was changed:
  ----- Method: TextEditor class>>autoEnclose (in category 'preferences') -----
  autoEnclose
  	<preference: 'Auto enclose brackets () {} []'
  		categoryList: #('Morphic' 'editing')
  		description: 'When true, typing an opening parenthesis, bracket or square-bracket will also add its corresponding closing character after the cursor so you can type within the bracket.'
  		type: #Boolean>
  		
+ 	^ AutoEnclose ifNil: [ true ]!
- 	^ AutoEnclose ifNil: [ false ]!

Item was changed:
  ----- Method: TextEditor>>enclose: (in category 'editing keys') -----
  enclose: aKeyboardEvent
  	"Insert or remove bracket characters around the current selection."
  
  	| character left right startIndex stopIndex oldSelection which closingBracket t |
  	character := aKeyboardEvent keyCharacter.
  	self closeTypeIn.
  	startIndex := self startIndex.
  	stopIndex := self stopIndex.
  	oldSelection := self selection.
  	closingBracket := false.
  	which := '([<{|"''' indexOf: character ifAbsent: [
  			closingBracket := true.
  			')]>}|"''' indexOf: character ifAbsent: [ ^ false ]].
  	left := '([<{|"''' at: which.
  	right := ')]>}|"''' at: which.
  	t := self text.
  	((startIndex > 1 and: [stopIndex <= t size])
  			and: [ (t at: startIndex-1) = left and: [(t at: stopIndex) = right]]
+ 			and: [ closingBracket or: [left = right] ])
- 			and: [ closingBracket ])
  		ifTrue:
  			["already enclosed and character is a closing bracket; strip off brackets"
  			self selectFrom: startIndex-1 to: stopIndex.
  			self replaceSelectionWith: oldSelection]
  		ifFalse:
  			["not enclosed or character is an opening bracket; enclose by matching brackets"
  			closingBracket ifFalse:
  			[ self replaceSelectionWith:
  				(Text string: (String with: left), oldSelection string, (String with: right) attributes: emphasisHere).
  			self selectFrom: startIndex+1 to: stopIndex] ].
  	^true!



More information about the Squeak-dev mailing list