 	
 	# Escape sequences
 	escapes:
+		patterns: [
+			{include: "#escapes-copymode"}
+			{include: "#escapes-full"}
+		]
+	
+	
+	# Limited range of escape sequences permitted in copy-mode
+	"escapes-copymode":
 		patterns: [{
 			
 			# Comments

			captures:
				1: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
		},{
			
			# Parametric/function-like escape sequences
			name: "constant.character.escape.function.roff"
			match: "(\\\\[bCDhHSlLovwxXN])((.)(.*?)(\\3))"
			captures:
				1: {name: "entity.name.function.roff"}
				2: {name: "string.other.roff"}
				3: {name: "punctuation.definition.begin.roff"}
				4: {patterns: [{include: "#escapes"}]}
				5: {name: "punctuation.definition.end.roff"}
		},{
			
			# Transparent throughput
			name: "meta.throughput.roff"
			begin: "\\\\!"
			beginCaptures:
				0: {name: "constant.character.escape.transparent-line.roff"}
			end: "(?<!\\\\)$"
			patterns: [
				{match: "\\x5C{2}", name: "constant.character.escape.backslash.roff"}
				{match: "\\\\\n",   name: "constant.character.escape.newline.roff"}
			]
		},{
			
			# Font: Roman/regular
			name: "constant.character.escape.font.roff"
			match: "\\\\f[RP1]"
			captures:
				0: {name: "entity.name.roff"}
		}, {
			
			# Font: Italics (typically rendered by nroff as underlined text)
			name: "markup.italic.roff"
			begin: "(\\\\f[I2])"
			end: "(?=\\\\f[A-Za-z0-9])"
			beginCaptures:
				1: {name: "entity.name.roff"}
		},{
			
			# Font: Bold
			name: "markup.bold.roff"
			begin: "(\\\\f[B3])"
			end: "(?=\\\\f[A-Za-z0-9])"
			beginCaptures:
				1: {name: "entity.name.roff"}
		},{
			
			# Font: Bold and italic
			name: "markup.bold.italic.roff"
			begin: "(\\\\f4)"
			end: "(?=\\\\f[A-Za-z0-9])"
			beginCaptures:
				1: {name: "entity.name.roff"}
		},{
			
			# \fX, \f(XX, \fN - Change to font named "X" or "XX", or position N
			name: "constant.character.escape.function.font.roff"
			match: "(\\\\f\\()(\\S{2})|(\\\\f)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				3: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
				4: {name: "variable.parameter.roff"}
		},{
			
			# \gx, \g(xx - Format of number register "x" or "xx"
			name: "constant.character.escape.function.format-register.roff"
			match: "(\\\\g\\()(\\S{2})|(\\\\g)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				3: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
				4: {name: "variable.parameter.roff"}
		},{
			
			# \kX - Mark horizontal input place in register "X"
			name: "constant.character.escape.function.mark-input.roff"
			match: "(\\\\k)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
		},{
			
			# \nX, \n(XX - Contents of number register "X" or "XX"
			name: "constant.character.escape.function.expand-register.roff"
			match: "(\\\\n\\()(\\S{2})|(\\\\n)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				3: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
				4: {name: "variable.parameter.roff"}
		},{
			
			# \sN, \s±N - Point-size change function; also \s(NN, \s±(NN
			name: "constant.character.escape.function.point-size.roff"
			match: "(\\\\s[-+]?\\(?)(\\d+)"
			captures:
				1: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
		},{
			
			# \zC - Print "C" with zero width (without spacing)
			name: "constant.character.escape.function.zero-width-print.roff"
			match: "(\\\\z)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
		},{
			
			# \Z - Any character not listed above
			name: "constant.character.escape.misc.roff"
			match: "\\\\\\S"
		}]
	
	
	

				1: {name: "punctuation.definition.comment.roff"}
		},
		
		# Basic sequences
		{match: "\\\\\n",    name: "constant.character.escape.newline.roff"}
		{match: "\\\\t",     name: "constant.character.escape.tab.roff"}
		{match: "\\\\a",     name: "constant.character.escape.leader-char.roff"}
		{match: "\\x5C{2}",  name: "constant.character.escape.backslash.roff"}
		{match: "\\\\\\.",   name: "constant.character.escape.dot.roff"}, {
			
			# \nX, \n(XX - Contents of number register "X" or "XX"
			name: "constant.character.escape.function.expand-register.roff"
			match: "(\\\\n\\()(\\S{2})|(\\\\n)(\\S)"
			captures:
				1: {name: "entity.name.roff"}
				3: {name: "entity.name.roff"}
				2: {name: "variable.parameter.roff"}
				4: {name: "variable.parameter.roff"}
		},{
			
			# \*x, \*(xx - Interpolate string "x" or "xx"
