Compare commits

...

6 Commits

Author SHA1 Message Date
Dustin L. Howett
59f2bc383e Migrate spelling-0.0.21 changes from main 2022-10-21 17:09:04 -07:00
Carlos Zamora
f80a23ccb3 13 of 85 tests failing (all non-degenerate cases) 2022-10-21 17:09:04 -07:00
Carlos Zamora
7017feff8b pass MovementAtExclusiveEnd tests 2022-10-21 14:33:33 -07:00
Carlos Zamora
9bc13bffd8 Write tests 2022-10-21 11:34:35 -07:00
Carlos Zamora
66d7f56b29 Move endpoint by page 2022-10-20 14:16:44 -07:00
Carlos Zamora
340271075d Expand by page 2022-10-20 14:16:44 -07:00
19 changed files with 2484 additions and 972 deletions

View File

@@ -6,6 +6,7 @@ File | Purpose | Format | Info
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
[patterns/*.txt](patterns/) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[expect/*.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)

View File

@@ -21,7 +21,7 @@ See the `README.md` in each directory for more information.
:microscope: You can test your commits **without** *appending* to a PR by creating a new branch with that extra change and pushing it to your fork. The [check-spelling](https://github.com/marketplace/actions/check-spelling) action will run in response to your **push** -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink:
<details><summary>:clamp: If the flagged items are false positives</summary>
<details><summary>If the flagged items are :exploding_head: false positives</summary>
If items relate to a ...
* binary file (or some other file you wouldn't want to check at all).

View File

@@ -1,7 +1,7 @@
admins
allcolors
apc
Apc
apc
breadcrumb
breadcrumbs
bsd
@@ -14,8 +14,8 @@ CMMI
copyable
cybersecurity
dalet
dcs
Dcs
dcs
dialytika
dje
downside
@@ -34,10 +34,12 @@ gantt
gcc
geeksforgeeks
ghe
github
gje
godbolt
hostname
hostnames
https
hyperlink
hyperlinking
hyperlinks
@@ -54,6 +56,7 @@ Llast
llvm
Lmid
locl
lol
lorem
Lorigin
maxed
@@ -81,6 +84,7 @@ runtimes
shcha
slnt
Sos
ssh
timeline
timelines
timestamped
@@ -89,6 +93,7 @@ tokenizes
tonos
toolset
tshe
ubuntu
uiatextrange
UIs
und

View File

@@ -32,10 +32,10 @@ DERR
dlldata
DNE
DONTADDTORECENT
DWMWA
DWORDLONG
DWMSBT
DWMWA
DWMWA
DWORDLONG
endfor
ENDSESSION
enumset
@@ -110,8 +110,8 @@ memchr
memicmp
MENUCOMMAND
MENUDATA
MENUITEMINFOW
MENUINFO
MENUITEMINFOW
mmeapi
MOUSELEAVE
mov
@@ -158,8 +158,8 @@ rcx
REGCLS
RETURNCMD
rfind
roundf
ROOTOWNER
roundf
RSHIFT
SACL
schandle
@@ -211,6 +211,7 @@ UPDATEINIFILE
userenv
USEROBJECTFLAGS
Viewbox
virtualalloc
wcsstr
wcstoui
winmain

View File

@@ -0,0 +1,523 @@
# marker to ignore all code on line
^.*/\* #no-spell-check-line \*/.*$
# marker for ignoring a comment to the end of the line
// #no-spell-check.*$
# patch hunk comments
^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
# git index header
index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
# cid urls
(['"])cid:.*?\g{-1}
# data url in parens
\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
# data url in quotes
([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
# data url
data:[-a-zA-Z=;:/0-9+]*,\S*
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# magnet urls
magnet:[?=:\w]+
# magnet urls
"magnet:[^"]+"
# obs:
"obs:[^"]*"
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
# In this examples content, I'm using a number of different ways to match things to show various approaches
# asciinema
\basciinema\.org/a/[0-9a-zA-Z]+
# apple
\bdeveloper\.apple\.com/[-\w?=/]+
# Apple music
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
# appveyor api
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
# appveyor project
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
# Amazon
# Amazon
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
# AWS S3
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
# AWS execute-api
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
# AWS ELB
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
# AWS SNS
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
# AWS VPC
vpc-\w+
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
# YouTube url
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
# YouTube music
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
# YouTube tag
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
# YouTube image
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
# Google Accounts
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
# Google Analytics
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
# Google APIs
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
# Google Storage
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
# Google Calendar
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
\w+\@group\.calendar\.google\.com\b
# Google DataStudio
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
# The leading `/` here is as opposed to the `\b` above
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
# Google Docs
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
# Google Drive
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
# Google Groups
\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
# Google Maps
\bmaps\.google\.com/maps\?[\w&;=]*
# Google themes
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
# Google CDN
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
# Goo.gl
/goo\.gl/[a-zA-Z0-9]+
# Google Chrome Store
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
# Google Books
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
# Google Fonts
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
# Google Forms
\bforms\.gle/\w+
# Google Scholar
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
# Google Colab Research Drive
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
# GitHub SHAs (api)
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
# GitHub SHAs (markdown)
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
# GitHub SHAs
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
# GitHub wiki
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
# githubusercontent
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
# githubassets
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
# gist github
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
# git.io
\bgit\.io/[0-9a-zA-Z]+
# GitHub JSON
"node_id": "[-a-zA-Z=;:/0-9+]*"
# Contributor
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
# GHSA
GHSA(?:-[0-9a-z]{4}){3}
# GitLab commit
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
# GitLab merge requests
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
# GitLab uploads
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
# GitLab commits
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
# binanace
accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
# bitbucket diff
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
# bitbucket repositories commits
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
# bitbucket commits
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
# bit.ly
\bbit\.ly/\w+
# bitrise
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
# bootstrapcdn.com
\bbootstrapcdn\.com/[-./\w]+
# cdn.cloudflare.com
\bcdnjs\.cloudflare\.com/[./\w]+
# circleci
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
# gitter
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
# gravatar
\bgravatar\.com/avatar/[0-9a-f]+
# ibm
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
# imgur
\bimgur\.com/[^.]+
# Internet Archive
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
# discord
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
# Disqus
\bdisqus\.com/[-\w/%.()!?&=_]*
# medium link
\blink\.medium\.com/[a-zA-Z0-9]+
# medium
\bmedium\.com/\@?[^/\s"]+/[-\w]+
# microsoft
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
# powerbi
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
# vs devops
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
# microsoft store
\bmicrosoft\.com/store/apps/\w+
# mvnrepository.com
\bmvnrepository\.com/[-0-9a-z./]+
# now.sh
/[0-9a-z-.]+\.now\.sh\b
# oracle
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
# chromatic.com
/\S+.chromatic.com\S*[")]
# codacy
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
# compai
\bcompai\.pub/v1/png/[0-9a-f]+
# mailgun api
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
# mailgun
\b[0-9a-z]+.mailgun.org
# /message-id/
/message-id/[-\w@./%]+
# Reddit
\breddit\.com/r/[/\w_]*
# requestb.in
\brequestb\.in/[0-9a-z]+
# sched
\b[a-z0-9]+\.sched\.com\b
# Slack url
slack://[a-zA-Z0-9?&=]+
# Slack
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
# Slack edge
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
# Slack images
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
# shields.io
\bshields\.io/[-\w/%?=&.:+;,]*
# stackexchange -- https://stackexchange.com/feeds/sites
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
# Sentry
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
# Twitter markdown
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
# Twitter hashtag
\btwitter\.com/hashtag/[\w?_=&]*
# Twitter status
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
# Twitter profile images
\btwimg\.com/profile_images/[_\w./]*
# Twitter media
\btwimg\.com/media/[-_\w./?=]*
# Twitter link shortened
\bt\.co/\w+
# facebook
\bfburl\.com/[0-9a-z_]+
# facebook CDN
\bfbcdn\.net/[\w/.,]*
# facebook watch
\bfb\.watch/[0-9A-Za-z]+
# dropbox
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
# ipfs protocol
ipfs://[0-9a-z]*
# ipfs url
/ipfs/[0-9a-z]*
# w3
\bw3\.org/[-0-9a-zA-Z/#.]+
# loom
\bloom\.com/embed/[0-9a-f]+
# regex101
\bregex101\.com/r/[^/\s"]+/\d+
# figma
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
# freecodecamp.org
\bfreecodecamp\.org/[-\w/.]+
# image.tmdb.org
\bimage\.tmdb\.org/[/\w.]+
# mermaid
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
# Wikipedia
\ben\.wikipedia\.org/wiki/[-\w%.#]+
# gitweb
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
# HyperKitty lists
/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
# lists
/thread\.html/[^"\s]+
# list-management
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
# kubectl.kubernetes.io/last-applied-configuration
"kubectl.kubernetes.io/last-applied-configuration": ".*"
# pgp
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
# Spotify
\bopen\.spotify\.com/embed/playlist/\w+
# Mastodon
\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
# scastie
\bscastie\.scala-lang\.org/[^/]+/\w+
# images.unsplash.com
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
# pastebin
\bpastebin\.com/[\w/]+
# heroku
\b\w+\.heroku\.com/source/archive/\w+
# quip
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
# badgen.net
\bbadgen\.net/badge/[^")\]'\s]+
# statuspage.io
\w+\.statuspage\.io\b
# media.giphy.com
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
# tinyurl
\btinyurl\.com/\w+
# getopts
\bgetopts\s+(?:"[^"]+"|'[^']+')
# ANSI color codes
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
# URL escaped characters
\%[0-9A-F][A-F]
# IPv6
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
# c99 hex digits (not the full format, just one I've seen)
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
# Punycode
\bxn--[-0-9a-z]+
# sha
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
# sha-... -- uses a fancy capture
(['"]|&quot;)[0-9a-f]{40,}\g{-1}
# hex runs
\b[0-9a-fA-F]{16,}\b
# hex in url queries
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
# ssh
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
# PGP
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
# GPG keys
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
# Well known gpg keys
.well-known/openpgpkey/[\w./]+
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
# integrity
integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
# https://www.gnu.org/software/groff/manual/groff.html
# man troff content
\\f[BCIPR]
# '
\\\(aq
# .desktop mime types
^MimeTypes?=.*$
# .desktop localized entries
^[A-Z][a-z]+\[[a-z]+\]=.*$
# Localized .desktop content
Name\[[^\]]+\]=.*
# IServiceProvider
\bI(?=(?:[A-Z][a-z]{2,})+\b)
# crypt
"\$2[ayb]\$.{56}"
# scrypt / argon
\$(?:scrypt|argon\d+[di]*)\$\S+
# Input to GitHub JSON
content: "[-a-zA-Z=;:/0-9+]*="
# Python stringprefix / binaryprefix
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
# Regular expressions for (P|p)assword
\([A-Z]\|[a-z]\)[a-z]+
# JavaScript regular expressions
# javascript test regex
/.*/[gim]*\.test\(
# javascript match regex
\.match\(/[^/\s"]*/[gim]*\s*
# javascript match regex
\.match\(/\\[b].*?/[gim]*\s*\)(?:;|$)
# javascript regex
^\s*/\\[b].*/[gim]*\s*(?:\)(?:;|$)|,$)
# javascript replace regex
\.replace\(/[^/\s"]*/[gim]*\s*,
# Go regular expressions
regexp?\.MustCompile\(`[^`]*`\)
# sed regular expressions
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
# go install
go install(?:\s+[a-z]+\.[-@\w/.]+)+
# kubernetes pod status lists
# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
# kubectl - pods in CrashLoopBackOff
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
# kubernetes object suffix
-[0-9a-f]{10}-\w{5}\s
# posthog secrets
posthog\.init\((['"])phc_[^"',]+\g{-1},
# xcode
# xcodeproject scenes
(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}"
# xcode api botches
customObjectInstantitationMethod
# font awesome classes
\.fa-[-a-z0-9]+
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
## You could manually change `(?i)X...` to use `[Xx]...`
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
# Lorem
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
# Non-English
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
# French
# This corpus only had capital letters, but you probably want lowercase ones as well.
\b[LN]'+[a-z]{2,}\b
# latex
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
\\(?:necessary|r(?:eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
# ignore long runs of a single character:
\b([A-Za-z])\g{-1}{3,}\b
# Note that the next example is no longer necessary if you are using
# to match a string starting with a `#`, use a character-class:
[#]backwards
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# Compiler flags (Scala)
(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# Compiler flags
#(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# Compiler flags (linker)
,-B
# curl arguments
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
# set arguments
\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
# tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
# macOS temp folders
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/

View File

@@ -2,14 +2,14 @@
(?:(?i)\.png$)
(?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E
(?:^|/)3rdparty/
(?:^|/)dirs$
(?:^|/)go\.mod$
(?:^|/)go\.sum$
(?:^|/)package(?:-lock|)\.json$
(?:^|/)sources(?:|\.dep)$
(?:^|/)vendor/
ignore$
SUMS$
\.a$
\.ai$
\.avi$
\.bmp$
@@ -20,6 +20,8 @@ SUMS$
\.crt$
\.csr$
\.dll$
\.docx?$
\.drawio$
\.DS_Store$
\.eot$
\.eps$
@@ -31,6 +33,7 @@ SUMS$
\.icns$
\.ico$
\.jar$
\.jks$
\.jpeg$
\.jpg$
\.key$
@@ -41,6 +44,7 @@ SUMS$
\.mod$
\.mp3$
\.mp4$
\.o$
\.ocf$
\.otf$
\.pbxproj$
@@ -48,22 +52,41 @@ SUMS$
\.pem$
\.png$
\.psd$
\.pyc$
\.runsettings$
\.s$
\.sig$
\.so$
\.svg$
\.svgz$
\.svgz?$
\.tar$
\.tgz$
\.tiff?$
\.ttf$
\.vsdx$
\.wav$
\.webm$
\.webp$
\.woff
\.woff2?$
\.xcf$
\.xls
\.xlsx?$
\.xpm$
\.yml$
\.zip$
^\.github/actions/spelling/
^\.github/fabricbot.json$
^\.gitignore$
^\Q.git-blame-ignore-revs\E$
^\Q.github/workflows/spelling.yml\E$
^\Qdoc/reference/windows-terminal-logo.ans\E$
^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$
^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$
^\Qsrc/host/ft_host/chafa.txt\E$
^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$
^\XamlStyler.json$
^build/config/
^consolegit2gitfilters\.json$
^dep/
@@ -90,12 +113,5 @@ SUMS$
^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$
^src/types/ut_types/UtilsTests.cpp$
^tools/ReleaseEngineering/ServicingPipeline.ps1$
^\.github/actions/spelling/
^\.github/fabricbot.json$
^\.gitignore$
^\Q.github/workflows/spelling.yml\E$
^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$
^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$
^\Qsrc/host/ft_host/chafa.txt\E$
^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$
^\XamlStyler.json$
ignore$
SUMS$

View File

@@ -5,26 +5,19 @@ AAAAAABBBBBBCCC
AAAAABBBBBBCCC
abcd
abcd
abcde
abcdef
ABCDEFG
ABCDEFGH
ABCDEFGHIJ
abcdefghijk
ABCDEFGHIJKLMNO
abcdefghijklmnop
ABCDEFGHIJKLMNOPQRST
abcdefghijklmnopqrstuvwxyz
ABCG
ABE
abf
BBBBB
BBBBBBBB
BBBBBBBBBBBBBBDDDD
BBBBBCCC
BBBBCCCCC
BBGGRR
CCE
EFG
EFGh
QQQQQQQQQQABCDEFGHIJ

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,3 @@
http
www
WCAG
winui
appshellintegration

View File

@@ -1,3 +1,11 @@
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
# \bm_data\b
# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
# to use this:
#\bfit\(
# s.b. GitHub
\bGithub\b
@@ -16,6 +24,12 @@
# s.b. greater than
\bgreater then\b
# s.b. into
#\sin to\s
# s.b. opt-in
\sopt in\s
# s.b. less than
\bless then\b
@@ -27,10 +41,22 @@
\b[Nn]o[nt][- ]existent\b
# s.b. preexisting
[Pp]re-existing
[Pp]re[- ]existing
# s.b. preempt
[Pp]re[- ]empt\b
# s.b. preemptively
[Pp]re-emptively
[Pp]re[- ]emptively
# s.b. reentrancy
[Rr]e[- ]entrancy
# s.b. reentrant
[Rr]e[- ]entrant
# s.b. workaround(s)
#\bwork[- ]arounds?\b
# Reject duplicate words
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s

View File

@@ -27,13 +27,68 @@ ROY\sG\.\sBIV
# Python stringprefix / binaryprefix
\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'
# Automatically suggested patterns
# hit-count: 3831 file-count: 582
# IServiceProvider
\bI(?=(?:[A-Z][a-z]{2,})+\b)
# hit-count: 71 file-count: 35
# Compiler flags
(?:^|[\t ,"'`=(])-[D](?=[A-Z]{2,}|[A-Z][a-z])
(?:^|[\t ,"'`=(])-[X](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# hit-count: 41 file-count: 28
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# hit-count: 20 file-count: 9
# hex runs
\b[0-9a-fA-F]{16,}\b
# hit-count: 10 file-count: 7
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hit-count: 4 file-count: 4
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# hit-count: 4 file-count: 1
# ANSI color codes
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
# hit-count: 2 file-count: 1
# latex
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
# hit-count: 1 file-count: 1
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
# hit-count: 1 file-count: 1
# Non-English
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
# hit-count: 1 file-count: 1
# French
# This corpus only had capital letters, but you probably want lowercase ones as well.
\b[LN]'+[a-z]{2,}\b
# acceptable duplicates
# ls directory listings
[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+
# C/idl types + English ...
\s(Guid|long|LONG|that) \g{-1}\s
# javadoc / .net
(?:\@(?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
# Commit message -- Signed-off-by and friends
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
# Autogenerated revert commit message
^This reverts commit [0-9a-f]{40}\.$
# vtmode
--vtmode\s+(\w+)\s+\g{-1}\s

View File

@@ -1,31 +1,12 @@
benefitting
occurences?
Sorce
^attache$
^attacher$
^attachers$
benefitting
occurences?
^dependan.*
^oer$
^spae$
^spae-man$
^spaebook$
^spaecraft$
^spaed$
^spaedom$
^spaeing$
^spaeings$
^spaeman$
^spaer$
^Spaerobee$
^spaes$
^spaewife$
^spaewoman$
^spaework$
^spaewright$
Sorce
^[Ss]pae.*
^untill$
^untilling$
^wether$
^wether.*
^wethers$
^wetherteg$
^[Ss]pae.*

View File

@@ -1,10 +1,57 @@
# spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p
name: Spell checking
# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
# (in odd cases, it might actually run just to collapse a commment, but that's fairly rare)
# it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
# it needs `pull-requests: write` in order to manipulate those comments.
# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
# This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
# This job runs in response to an issue_comment and will push a new commit
# to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
# Tells the action to support and generate messages that enable it
# to make a commit to update the spelling metadata.
#
# `with.ssh_key`
# In order to trigger workflows when the commit is made, you can provide a
# secret (typically, a write-enabled github deploy key).
#
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
on:
pull_request_target:
push:
branches: ["**"]
tags-ignore: ["**"]
branches:
- "**"
tags-ignore:
- "**"
pull_request_target:
branches:
- "**"
tags-ignore:
- "**"
types:
- 'opened'
- 'reopened'
- 'synchronize'
issue_comment:
types:
- 'created'
jobs:
spelling:
@@ -24,23 +71,64 @@ jobs:
steps:
- name: check-spelling
id: spelling
uses: check-spelling/check-spelling@v0.0.20
uses: check-spelling/check-spelling@v0.0.21
with:
suppress_push_for_open_pull_request: 1
checkout: true
check_file_names: 1
spell_check_this: check-spelling/spell-check-this@prerelease
post_comment: 0
use_magic_file: 1
extra_dictionary_limit: 10
extra_dictionaries:
cspell:software-terms/src/software-terms.txt
cspell:python/src/python/python-lib.txt
cspell:node/node.txt
cspell:cpp/src/stdlib-c.txt
cspell:cpp/src/stdlib-cpp.txt
cspell:fullstack/fullstack.txt
cspell:filetypes/filetypes.txt
cspell:html/html.txt
cspell:cpp/src/compiler-msvc.txt
cspell:python/src/common/extra.txt
cspell:powershell/powershell.txt
cspell:aws/aws.txt
cspell:cpp/src/lang-keywords.txt
cspell:npm/npm.txt
cspell:dotnet/dotnet.txt
cspell:python/src/python/python.txt
cspell:css/css.txt
cspell:cpp/src/stdlib-cmath.txt
check_extra_dictionaries: ''
comment:
name: Report
comment-push:
name: Report (Push)
# If your workflow isn't running on push, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
contents: write
pull-requests: write
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name != 'push'
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps:
- name: comment
uses: check-spelling/check-spelling@v0.0.20
uses: check-spelling/check-spelling@v0.0.21
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
comment-pr:
name: Report (PR)
# If you workflow isn't running on pull_request*, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
pull-requests: write
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- name: comment
uses: check-spelling/check-spelling@v0.0.21
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}

View File

@@ -106,6 +106,46 @@ static constexpr til::point point_offset_by_line(const til::point start, const t
return { pos_x, pos_y };
}
static constexpr til::CoordType viewportHeight = 80;
static constexpr til::point point_offset_by_viewport(const til::point start, const til::rect& bounds, til::CoordType amt)
{
// X = left boundary for UIA
auto pos_x = bounds.left;
auto pos_y = start.y;
while (amt != 0)
{
if (amt > 0)
{
if (pos_y >= bounds.bottom)
{
pos_y = bounds.bottom;
break;
}
else
{
pos_y += viewportHeight;
pos_y = std::min(pos_y, bounds.bottom);
}
--amt;
}
else
{
if (pos_y <= bounds.top)
{
pos_y = bounds.top;
break;
}
else
{
pos_y -= viewportHeight;
pos_y = std::max(pos_y, 0);
}
++amt;
}
}
return { pos_x, pos_y };
}
// IMPORTANT: reference this _after_ defining point_offset_by_XXX. We need it for some definitions
#include "GeneratedUiaTextRangeMovementTests.g.cpp"
@@ -329,6 +369,7 @@ class UiaTextRangeTests
return L"Line";
case TextUnit_Paragraph:
case TextUnit_Page:
return L"Page";
case TextUnit_Document:
default:
return L"Document";
@@ -1345,6 +1386,7 @@ class UiaTextRangeTests
const til::point lastLineStart{ bufferSize.left, documentEndInclusive.y };
const auto secondToLastLinePos{ point_offset_by_line(lastLineStart, bufferSize, -1) };
const til::point secondToLastCharacterPos{ documentEndInclusive.x - 1, documentEndInclusive.y };
const auto lastPageStart{ point_offset_by_viewport(documentEndExclusive, bufferSize, -1) };
// Iterate over each TextUnit. If we don't support
// the given TextUnit, we're supposed to fallback
@@ -1404,6 +1446,11 @@ class UiaTextRangeTests
VERIFY_ARE_EQUAL(lastLineStart, utr->_start);
VERIFY_ARE_EQUAL(documentEndExclusive, utr->_end);
}
else if (textUnit <= TextUnit::TextUnit_Page)
{
VERIFY_ARE_EQUAL(origin, utr->_start);
VERIFY_ARE_EQUAL(documentEndExclusive, utr->_end);
}
else // textUnit <= TextUnit::TextUnit_Document:
{
VERIFY_ARE_EQUAL(origin, utr->_start);
@@ -1450,6 +1497,12 @@ class UiaTextRangeTests
VERIFY_ARE_EQUAL(degenerate || !atDocumentEnd ? lastLineStart : secondToLastLinePos, utr->_start);
VERIFY_ARE_EQUAL(lastLineStart, utr->_end);
}
else if (textUnit <= TextUnit::TextUnit_Page)
{
VERIFY_ARE_EQUAL(degenerate || !atDocumentEnd ? -1 : 0, moveAmt);
VERIFY_ARE_EQUAL(lastPageStart, utr->_start);
VERIFY_ARE_EQUAL(degenerate || !atDocumentEnd ? lastPageStart : documentEndExclusive, utr->_end);
}
else // textUnit <= TextUnit::TextUnit_Document:
{
VERIFY_ARE_EQUAL(degenerate || !atDocumentEnd ? -1 : 0, moveAmt);

View File

@@ -326,6 +326,47 @@ void UiaTextRangeBase::_expandToEnclosingUnit(TextUnit unit)
_end.Y = _start.Y + 1;
}
}
else if (unit <= TextUnit_Page)
{
// expand to page (viewport)
const auto viewport = _pData->GetViewport();
if (viewport.IsInBounds(_start))
{
// return current viewport
_start = viewport.Origin();
_end = std::min(documentEnd, viewport.EndExclusive());
}
else if (_start < viewport.Origin())
{
// return "previous" viewport
auto returnedViewport = viewport;
while (!returnedViewport.IsInBounds(_start))
{
const til::point newOrigin{ returnedViewport.Left(), std::max(returnedViewport.Top() - returnedViewport.Height(), bufferSize.Top()) };
returnedViewport = Viewport::FromDimensions(newOrigin, returnedViewport.Dimensions());
}
_start = returnedViewport.Origin();
_end = returnedViewport.EndExclusive();
}
else if (_start == documentEnd)
{
// return "last" viewport
_start = { bufferSize.Left(), std::max(documentEnd.y - viewport.Height(), bufferSize.Top()) };
_end = documentEnd;
}
else
{
// return "next" viewport
auto returnedViewport = viewport;
while (!returnedViewport.IsInBounds(_start))
{
const til::point newOrigin{ returnedViewport.EndExclusive() };
returnedViewport = Viewport::FromDimensions(newOrigin, returnedViewport.Dimensions());
}
_start = returnedViewport.Origin();
_end = std::min(returnedViewport.EndExclusive(), documentEnd);
}
}
else
{
// expand to document
@@ -1077,6 +1118,10 @@ try
{
_moveEndpointByUnitLine(count, endpoint, pRetVal, preventBoundary);
}
else if (unit <= TextUnit::TextUnit_Page)
{
_moveEndpointByUnitPage(count, endpoint, pRetVal, preventBoundary);
}
else if (unit <= TextUnit::TextUnit_Document)
{
_moveEndpointByUnitDocument(count, endpoint, pRetVal, preventBoundary);
@@ -1149,6 +1194,10 @@ IFACEMETHODIMP UiaTextRangeBase::MoveEndpointByUnit(_In_ TextPatternRangeEndpoin
{
_moveEndpointByUnitLine(count, endpoint, pRetVal);
}
else if (unit <= TextUnit::TextUnit_Page)
{
_moveEndpointByUnitPage(count, endpoint, pRetVal);
}
else if (unit <= TextUnit::TextUnit_Document)
{
_moveEndpointByUnitDocument(count, endpoint, pRetVal);
@@ -1706,6 +1755,115 @@ void UiaTextRangeBase::_moveEndpointByUnitLine(_In_ const int moveCount,
SetEndpoint(endpoint, resultPos);
}
// Routine Description:
// - moves the UTR's endpoint by moveCount times by line.
// - if endpoints crossed, the degenerate range is created and both endpoints are moved
// - a successful movement on start entails start being at Left()
// - a successful movement on end entails end being at Left() of the NEXT line
// Arguments:
// - moveCount - the number of times to move
// - endpoint - the endpoint to move
// - pAmountMoved - the number of times that the return values are "moved"
// - preventBoundary - true --> the range encompasses the unit we're on; prevent movement onto boundaries
// false --> act like we're just moving an endpoint; allow movement onto boundaries
// Return Value:
// - <none>
void UiaTextRangeBase::_moveEndpointByUnitPage(_In_ const int moveCount,
_In_ const TextPatternRangeEndpoint endpoint,
_Out_ const gsl::not_null<int*> pAmountMoved,
_In_ const bool preventBoundary) noexcept
{
*pAmountMoved = 0;
if (moveCount == 0)
{
return;
}
const auto moveDirection = (moveCount > 0) ? MovementDirection::Forward : MovementDirection::Backward;
const auto bufferSize = _getOptimizedBufferSize();
auto documentEnd{ bufferSize.EndExclusive() };
try
{
documentEnd = _getDocumentEnd();
}
CATCH_LOG();
auto success = true;
auto resultPos = GetEndpoint(endpoint);
const auto viewportSize = _pData->GetViewport().Dimensions();
while (std::abs(*pAmountMoved) < std::abs(moveCount) && success)
{
auto nextPos = resultPos;
switch (moveDirection)
{
case MovementDirection::Forward:
{
if (nextPos.Y >= documentEnd.Y)
{
// Corner Case: we're past the limit
// Clamp us to the limit
resultPos = documentEnd;
success = false;
}
else if (preventBoundary && nextPos.Y >= documentEnd.Y - viewportSize.Y)
{
// Corner Case: we're just before the limit
// and we're not allowed onto the exclusive end.
// Fail to move.
success = false;
}
else
{
nextPos.X = bufferSize.Left();
nextPos.Y = std::min(nextPos.Y + viewportSize.Y, documentEnd.Y);
success = true;
resultPos = nextPos;
(*pAmountMoved)++;
}
break;
}
case MovementDirection::Backward:
{
if (preventBoundary)
{
if (nextPos == bufferSize.Origin())
{
// can't move past top
success = false;
break;
}
else if (nextPos.Y <= bufferSize.Top() + viewportSize.Y)
{
// GH#10924: as a non-degenerate range, we are supposed to act
// like we already encompass the line.
// Move to the left boundary so we try to wrap around
nextPos = bufferSize.Origin();
}
}
// NOTE: Automatically detects if we are trying to move past origin
success = bufferSize.DecrementInBounds(nextPos, true);
if (success)
{
nextPos.X = bufferSize.Left();
nextPos.Y = std::max(nextPos.Y - viewportSize.Y + 1, bufferSize.Top());
resultPos = nextPos;
(*pAmountMoved)--;
}
break;
}
default:
break;
}
}
SetEndpoint(endpoint, resultPos);
}
// Routine Description:
// - moves the UTR's endpoint by moveCount times by document.
// - if endpoints crossed, the degenerate range is created and both endpoints are moved

View File

@@ -174,6 +174,12 @@ namespace Microsoft::Console::Types
const gsl::not_null<int*> pAmountMoved,
_In_ const bool preventBoundary = false) noexcept;
void
_moveEndpointByUnitPage(_In_ const int moveCount,
_In_ const TextPatternRangeEndpoint endpoint,
const gsl::not_null<int*> pAmountMoved,
_In_ const bool preventBoundary = false) noexcept;
void
_moveEndpointByUnitDocument(_In_ const int moveCount,
_In_ const TextPatternRangeEndpoint endpoint,

View File

@@ -36,6 +36,8 @@ constexpr til::CoordType segment4{ 64 };
constexpr til::point origin{ 0, 0 };
constexpr til::point midTop{ midX, 0 };
constexpr til::point midHistory{ midX, midPopulatedY };
constexpr til::point midHistoryViewStart{ midX, midPopulatedY - viewportHeight/2 };
constexpr til::point midHistoryViewEnd{ midX, midPopulatedY + viewportHeight/2 };
constexpr til::point midDocEnd{ midX, midY };
constexpr til::point lastCharPos{ 72, midY };
constexpr til::point docEnd{ 0, midY + 1 };
@@ -118,6 +120,17 @@ foreach ($var in $vars)
$result += "constexpr auto {0}{{ point_offset_by_line({1}, bufferSize, -{2}) }};" -f $var, $standardVar, $moveAmt;
}
}
'P' # move by page
{
if ($moveForward)
{
$result += "constexpr auto {0}{{ point_offset_by_viewport({1}, bufferSize, {2}) }};" -f $var, $standardVar, $moveAmt;
}
else
{
$result += "constexpr auto {0}{{ point_offset_by_viewport({1}, bufferSize, -{2}) }};" -f $var, $standardVar, $moveAmt;
}
}
Default { Write-Host "Error: unknown variable movement type" -ForegroundColor Red }
}
}

View File

@@ -89,16 +89,16 @@ FALSE,3,TextUnit_Document,-1,midHistory,midHistoryP1C,0,origin,docEnd,FALSE
FALSE,3,TextUnit_Document,0,midHistory,midHistoryP1C,0,origin,docEnd,FALSE
FALSE,3,TextUnit_Document,1,midHistory,midHistoryP1C,0,origin,docEnd,FALSE
FALSE,3,TextUnit_Document,5,midHistory,midHistoryP1C,0,origin,docEnd,FALSE
TRUE,8,TextUnit_Character,-5,bufferEnd,bufferEnd,-5,docEndM5C,docEndM5C,FALSE
TRUE,8,TextUnit_Character,-1,bufferEnd,bufferEnd,-1,docEndM1C,docEndM1C,FALSE
TRUE,8,TextUnit_Character,0,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Character,1,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Character,5,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,-5,bufferEnd,endExclusive,-5,docEndM5C,docEndM5C,FALSE
FALSE,8,TextUnit_Character,-1,bufferEnd,endExclusive,-1,docEndM1C,docEndM1C,FALSE
FALSE,8,TextUnit_Character,0,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,1,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,5,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
TRUE,4,TextUnit_Character,-5,midDocEnd,midDocEnd,-5,midDocEndM5C,midDocEndM5C,FALSE
TRUE,4,TextUnit_Character,-1,midDocEnd,midDocEnd,-1,midDocEndM1C,midDocEndM1C,FALSE
TRUE,4,TextUnit_Character,0,midDocEnd,midDocEnd,0,midDocEnd,midDocEnd,FALSE
TRUE,4,TextUnit_Character,1,midDocEnd,midDocEnd,1,midDocEndP1C,midDocEndP1C,FALSE
TRUE,4,TextUnit_Character,5,midDocEnd,midDocEnd,5,midDocEndP5C,midDocEndP5C,FALSE
FALSE,4,TextUnit_Character,-5,midDocEnd,midDocEndP1C,-5,midDocEndM5C,midDocEndM4C,FALSE
FALSE,4,TextUnit_Character,-1,midDocEnd,midDocEndP1C,-1,midDocEndM1C,midDocEnd,FALSE
FALSE,4,TextUnit_Character,0,midDocEnd,midDocEndP1C,0,midDocEnd,midDocEndP1C,FALSE
FALSE,4,TextUnit_Character,1,midDocEnd,midDocEndP1C,1,midDocEndP1C,midDocEndP2C,FALSE
FALSE,4,TextUnit_Character,5,midDocEnd,midDocEndP1C,5,midDocEndP5C,midDocEndP6C,FALSE
TRUE,8,TextUnit_Line,-5,bufferEnd,bufferEnd,-5,docEndM5L,docEndM5L,FALSE
TRUE,8,TextUnit_Line,-1,bufferEnd,bufferEnd,-1,docEndM1L,docEndM1L,FALSE
TRUE,8,TextUnit_Line,0,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
@@ -119,11 +119,11 @@ FALSE,8,TextUnit_Document,-1,bufferEnd,endExclusive,-1,origin,origin,FALSE
FALSE,8,TextUnit_Document,0,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Document,1,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Document,5,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,-5,endExclusive,endExclusive,-5,docEndM5C,docEndM5C,FALSE
TRUE,9,TextUnit_Character,-1,endExclusive,endExclusive,-1,docEndM1C,docEndM1C,FALSE
TRUE,9,TextUnit_Character,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,1,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,5,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,5,TextUnit_Character,-5,lastCharPos,lastCharPos,-5,lastCharPosM5C,lastCharPosM5C,FALSE
TRUE,5,TextUnit_Character,-1,lastCharPos,lastCharPos,-1,lastCharPosM1C,lastCharPosM1C,FALSE
TRUE,5,TextUnit_Character,0,lastCharPos,lastCharPos,0,lastCharPos,lastCharPos,FALSE
TRUE,5,TextUnit_Character,1,lastCharPos,lastCharPos,1,lastCharPosP1C,lastCharPosP1C,FALSE
TRUE,5,TextUnit_Character,5,lastCharPos,lastCharPos,5,lastCharPosP5C,lastCharPosP5C,FALSE
TRUE,9,TextUnit_Line,-5,endExclusive,endExclusive,-5,docEndM5L,docEndM5L,FALSE
TRUE,9,TextUnit_Line,-1,endExclusive,endExclusive,-1,docEndM1L,docEndM1L,FALSE
TRUE,9,TextUnit_Line,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
@@ -134,16 +134,16 @@ TRUE,9,TextUnit_Document,-1,endExclusive,endExclusive,-1,origin,origin,FALSE
TRUE,9,TextUnit_Document,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Document,1,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Document,5,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,4,TextUnit_Character,-5,midDocEnd,midDocEnd,-5,midDocEndM5C,midDocEndM5C,FALSE
TRUE,4,TextUnit_Character,-1,midDocEnd,midDocEnd,-1,midDocEndM1C,midDocEndM1C,FALSE
TRUE,4,TextUnit_Character,0,midDocEnd,midDocEnd,0,midDocEnd,midDocEnd,FALSE
TRUE,4,TextUnit_Character,1,midDocEnd,midDocEnd,1,midDocEndP1C,midDocEndP1C,FALSE
TRUE,4,TextUnit_Character,5,midDocEnd,midDocEnd,5,midDocEndP5C,midDocEndP5C,FALSE
FALSE,4,TextUnit_Character,-5,midDocEnd,midDocEndP1C,-5,midDocEndM5C,midDocEndM4C,FALSE
FALSE,4,TextUnit_Character,-1,midDocEnd,midDocEndP1C,-1,midDocEndM1C,midDocEnd,FALSE
FALSE,4,TextUnit_Character,0,midDocEnd,midDocEndP1C,0,midDocEnd,midDocEndP1C,FALSE
FALSE,4,TextUnit_Character,1,midDocEnd,midDocEndP1C,1,midDocEndP1C,midDocEndP2C,FALSE
FALSE,4,TextUnit_Character,5,midDocEnd,midDocEndP1C,5,midDocEndP5C,midDocEndP6C,FALSE
FALSE,5,TextUnit_Character,-5,lastCharPos,lastCharPosP1C,-5,lastCharPosM5C,lastCharPosM4C,FALSE
FALSE,5,TextUnit_Character,-1,lastCharPos,lastCharPosP1C,-1,lastCharPosM1C,lastCharPos,FALSE
FALSE,5,TextUnit_Character,0,lastCharPos,lastCharPosP1C,0,lastCharPos,lastCharPosP1C,FALSE
FALSE,5,TextUnit_Character,1,lastCharPos,lastCharPosP1C,1,lastCharPosP1C,lastCharPosP2C,FALSE
FALSE,5,TextUnit_Character,5,lastCharPos,lastCharPosP1C,5,lastCharPosP5C,lastCharPosP6C,FALSE
TRUE,6,TextUnit_Character,-5,docEnd,docEnd,-5,docEndM5C,docEndM5C,FALSE
TRUE,6,TextUnit_Character,-1,docEnd,docEnd,-1,docEndM1C,docEndM1C,FALSE
TRUE,6,TextUnit_Character,0,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Character,1,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Character,5,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,4,TextUnit_Line,-5,midDocEnd,midDocEnd,-5,midDocEndM4L,midDocEndM4L,FALSE
TRUE,4,TextUnit_Line,-1,midDocEnd,midDocEnd,-1,midDocEndLeft,midDocEndLeft,FALSE
TRUE,4,TextUnit_Line,0,midDocEnd,midDocEnd,0,midDocEnd,midDocEnd,FALSE
@@ -164,16 +164,16 @@ FALSE,4,TextUnit_Document,-1,midDocEnd,midDocEndP1C,0,origin,docEnd,FALSE
FALSE,4,TextUnit_Document,0,midDocEnd,midDocEndP1C,0,origin,docEnd,FALSE
FALSE,4,TextUnit_Document,1,midDocEnd,midDocEndP1C,0,origin,docEnd,FALSE
FALSE,4,TextUnit_Document,5,midDocEnd,midDocEndP1C,0,origin,docEnd,FALSE
TRUE,5,TextUnit_Character,-5,lastCharPos,lastCharPos,-5,lastCharPosM5C,lastCharPosM5C,FALSE
TRUE,5,TextUnit_Character,-1,lastCharPos,lastCharPos,-1,lastCharPosM1C,lastCharPosM1C,FALSE
TRUE,5,TextUnit_Character,0,lastCharPos,lastCharPos,0,lastCharPos,lastCharPos,FALSE
TRUE,5,TextUnit_Character,1,lastCharPos,lastCharPos,1,lastCharPosP1C,lastCharPosP1C,FALSE
TRUE,5,TextUnit_Character,5,lastCharPos,lastCharPos,5,lastCharPosP5C,lastCharPosP5C,FALSE
FALSE,5,TextUnit_Character,-5,lastCharPos,lastCharPosP1C,-5,lastCharPosM5C,lastCharPosM4C,FALSE
FALSE,5,TextUnit_Character,-1,lastCharPos,lastCharPosP1C,-1,lastCharPosM1C,lastCharPos,FALSE
FALSE,5,TextUnit_Character,0,lastCharPos,lastCharPosP1C,0,lastCharPos,lastCharPosP1C,FALSE
FALSE,5,TextUnit_Character,1,lastCharPos,lastCharPosP1C,1,lastCharPosP1C,lastCharPosP2C,FALSE
FALSE,5,TextUnit_Character,5,lastCharPos,lastCharPosP1C,5,lastCharPosP5C,lastCharPosP6C,FALSE
FALSE,6,TextUnit_Character,-5,docEnd,docEndP1C,-5,docEndM5C,docEndM5C,FALSE
FALSE,6,TextUnit_Character,-1,docEnd,docEndP1C,-1,docEndM1C,docEndM1C,FALSE
FALSE,6,TextUnit_Character,0,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Character,1,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Character,5,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,-5,midEmptySpace,midEmptySpace,-5,docEndM5C,docEndM5C,FALSE
TRUE,7,TextUnit_Character,-1,midEmptySpace,midEmptySpace,-1,docEndM1C,docEndM1C,FALSE
TRUE,7,TextUnit_Character,0,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,1,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,5,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,5,TextUnit_Line,-5,lastCharPos,lastCharPos,-5,lastCharPosM4L,lastCharPosM4L,FALSE
TRUE,5,TextUnit_Line,-1,lastCharPos,lastCharPos,-1,lastCharPosLeft,lastCharPosLeft,FALSE
TRUE,5,TextUnit_Line,0,lastCharPos,lastCharPos,0,lastCharPos,lastCharPos,FALSE
@@ -194,16 +194,16 @@ FALSE,5,TextUnit_Document,-1,lastCharPos,lastCharPosP1C,0,origin,docEnd,FALSE
FALSE,5,TextUnit_Document,0,lastCharPos,lastCharPosP1C,0,origin,docEnd,FALSE
FALSE,5,TextUnit_Document,1,lastCharPos,lastCharPosP1C,0,origin,docEnd,FALSE
FALSE,5,TextUnit_Document,5,lastCharPos,lastCharPosP1C,0,origin,docEnd,FALSE
TRUE,6,TextUnit_Character,-5,docEnd,docEnd,-5,docEndM5C,docEndM5C,FALSE
TRUE,6,TextUnit_Character,-1,docEnd,docEnd,-1,docEndM1C,docEndM1C,FALSE
TRUE,6,TextUnit_Character,0,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Character,1,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Character,5,docEnd,docEnd,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Character,-5,docEnd,docEndP1C,-5,docEndM5C,docEndM5C,FALSE
FALSE,6,TextUnit_Character,-1,docEnd,docEndP1C,-1,docEndM1C,docEndM1C,FALSE
FALSE,6,TextUnit_Character,0,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Character,1,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Character,5,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,-5,midEmptySpace,midEmptySpaceP1C,-5,docEndM5C,docEndM5C,FALSE
FALSE,7,TextUnit_Character,-1,midEmptySpace,midEmptySpaceP1C,-1,docEndM1C,docEndM1C,FALSE
FALSE,7,TextUnit_Character,0,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,1,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,5,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Character,-5,bufferEnd,bufferEnd,-5,docEndM5C,docEndM5C,FALSE
TRUE,8,TextUnit_Character,-1,bufferEnd,bufferEnd,-1,docEndM1C,docEndM1C,FALSE
TRUE,8,TextUnit_Character,0,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Character,1,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Character,5,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Line,-5,docEnd,docEnd,-5,docEndM5L,docEndM5L,FALSE
TRUE,6,TextUnit_Line,-1,docEnd,docEnd,-1,docEndM1L,docEndM1L,FALSE
TRUE,6,TextUnit_Line,0,docEnd,docEnd,0,docEnd,docEnd,FALSE
@@ -224,16 +224,16 @@ FALSE,6,TextUnit_Document,-1,docEnd,docEndP1C,-1,origin,origin,FALSE
FALSE,6,TextUnit_Document,0,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Document,1,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Document,5,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,-5,midEmptySpace,midEmptySpace,-5,docEndM5C,docEndM5C,FALSE
TRUE,7,TextUnit_Character,-1,midEmptySpace,midEmptySpace,-1,docEndM1C,docEndM1C,FALSE
TRUE,7,TextUnit_Character,0,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,1,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Character,5,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,-5,midEmptySpace,midEmptySpaceP1C,-5,docEndM5C,docEndM5C,FALSE
FALSE,7,TextUnit_Character,-1,midEmptySpace,midEmptySpaceP1C,-1,docEndM1C,docEndM1C,FALSE
FALSE,7,TextUnit_Character,0,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,1,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Character,5,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,-5,bufferEnd,endExclusive,-5,docEndM5C,docEndM5C,FALSE
FALSE,8,TextUnit_Character,-1,bufferEnd,endExclusive,-1,docEndM1C,docEndM1C,FALSE
FALSE,8,TextUnit_Character,0,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,1,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Character,5,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,-5,endExclusive,endExclusive,-5,docEndM5C,docEndM5C,FALSE
TRUE,9,TextUnit_Character,-1,endExclusive,endExclusive,-1,docEndM1C,docEndM1C,FALSE
TRUE,9,TextUnit_Character,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,1,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Character,5,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Line,-5,midEmptySpace,midEmptySpace,-5,docEndM5L,docEndM5L,FALSE
TRUE,7,TextUnit_Line,-1,midEmptySpace,midEmptySpace,-1,docEndM1L,docEndM1L,FALSE
TRUE,7,TextUnit_Line,0,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
@@ -339,3 +339,88 @@ TRUE,9,TextUnit_Word,-1,endExclusive,endExclusive,-1,segment4LmidDocEnd,segment4
TRUE,9,TextUnit_Word,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Word,1,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Word,5,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,1,TextUnit_Page,-5,origin,origin,0,origin,origin,FALSE
TRUE,1,TextUnit_Page,-1,origin,origin,0,origin,origin,FALSE
TRUE,1,TextUnit_Page,0,origin,origin,0,origin,origin,FALSE
TRUE,1,TextUnit_Page,1,origin,origin,1,originP1P,originP1P,FALSE
TRUE,1,TextUnit_Page,5,origin,origin,2,docEnd,docEnd,FALSE
FALSE,1,TextUnit_Page,-5,origin,originP1C,0,origin,originP1P,FALSE
FALSE,1,TextUnit_Page,-1,origin,originP1C,0,origin,originP1P,FALSE
FALSE,1,TextUnit_Page,0,origin,originP1C,0,origin,originP1P,FALSE
FALSE,1,TextUnit_Page,1,origin,originP1C,1,originP1P,docEnd,FALSE
FALSE,1,TextUnit_Page,5,origin,originP1C,1,originP1P,docEnd,FALSE
TRUE,2,TextUnit_Page,-5,midTop,midTop,-1,origin,origin,FALSE
TRUE,2,TextUnit_Page,-1,midTop,midTop,-1,origin,origin,FALSE
TRUE,2,TextUnit_Page,0,midTop,midTop,0,midTop,midTop,FALSE
TRUE,2,TextUnit_Page,1,midTop,midTop,1,originP1P,originP1P,FALSE
TRUE,2,TextUnit_Page,5,midTop,midTop,2,docEnd,docEnd,FALSE
FALSE,2,TextUnit_Page,-5,midTop,midTopP1C,0,origin,originP1P,FALSE
FALSE,2,TextUnit_Page,-1,midTop,midTopP1C,0,origin,originP1P,FALSE
FALSE,2,TextUnit_Page,0,midTop,midTopP1C,0,origin,originP1P,FALSE
FALSE,2,TextUnit_Page,1,midTop,midTopP1C,1,originP1P,docEnd,FALSE
FALSE,2,TextUnit_Page,5,midTop,midTopP1C,1,originP1P,docEnd,FALSE
TRUE,3,TextUnit_Page,-5,midHistory,midHistory,-1,origin,origin,FALSE
TRUE,3,TextUnit_Page,-1,midHistory,midHistory,-1,origin,origin,FALSE
TRUE,3,TextUnit_Page,0,midHistory,midHistory,0,midHistory,midHistory,FALSE
TRUE,3,TextUnit_Page,1,midHistory,midHistory,1,docEnd,docEnd,FALSE
TRUE,3,TextUnit_Page,5,midHistory,midHistory,1,docEnd,docEnd,FALSE
FALSE,3,TextUnit_Page,-5,midHistory,midHistoryP1C,0,origin,originP1P,FALSE
FALSE,3,TextUnit_Page,-1,midHistory,midHistoryP1C,0,origin,originP1P,FALSE
FALSE,3,TextUnit_Page,0,midHistory,midHistoryP1C,0,midHistoryViewStart,midHistoryViewEnd,FALSE
FALSE,3,TextUnit_Page,1,midHistory,midHistoryP1C,0,docEndM1P,docEnd,FALSE
FALSE,3,TextUnit_Page,5,midHistory,midHistoryP1C,0,docEndM1P,docEnd,FALSE
TRUE,4,TextUnit_Page,-5,midDocEnd,midDocEnd,-2,origin,origin,FALSE
TRUE,4,TextUnit_Page,-1,midDocEnd,midDocEnd,-1,docEndM1P,docEndM1P,FALSE
TRUE,4,TextUnit_Page,0,midDocEnd,midDocEnd,0,midDocEnd,midDocEnd,FALSE
TRUE,4,TextUnit_Page,1,midDocEnd,midDocEnd,1,docEnd,docEnd,FALSE
TRUE,4,TextUnit_Page,5,midDocEnd,midDocEnd,1,docEnd,docEnd,FALSE
FALSE,4,TextUnit_Page,-5,midDocEnd,midDocEndP1C,-5,docEndM6P,docEndM5P,FALSE
FALSE,4,TextUnit_Page,-1,midDocEnd,midDocEndP1C,-1,docEndM2P,docEndM1P,FALSE
FALSE,4,TextUnit_Page,0,midDocEnd,midDocEndP1C,0,docEndM1P,docEnd,FALSE
FALSE,4,TextUnit_Page,1,midDocEnd,midDocEndP1C,0,docEndM1P,docEnd,FALSE
FALSE,4,TextUnit_Page,5,midDocEnd,midDocEndP1C,0,docEndM1P,docEnd,FALSE
TRUE,5,TextUnit_Page,-5,lastCharPos,lastCharPos,-2,origin,origin,FALSE
TRUE,5,TextUnit_Page,-1,lastCharPos,lastCharPos,-1,docEndM1P,docEndM1P,FALSE
TRUE,5,TextUnit_Page,0,lastCharPos,lastCharPos,0,lastCharPos,lastCharPos,FALSE
TRUE,5,TextUnit_Page,1,lastCharPos,lastCharPos,1,docEnd,docEnd,FALSE
TRUE,5,TextUnit_Page,5,lastCharPos,lastCharPos,1,docEnd,docEnd,FALSE
FALSE,5,TextUnit_Page,-5,lastCharPos,lastCharPosP1C,-5,docEndM6P,docEndM5P,FALSE
FALSE,5,TextUnit_Page,-1,lastCharPos,lastCharPosP1C,-1,docEndM2P,docEndM1P,FALSE
FALSE,5,TextUnit_Page,0,lastCharPos,lastCharPosP1C,0,docEndM1P,docEnd,FALSE
FALSE,5,TextUnit_Page,1,lastCharPos,lastCharPosP1C,0,docEndM1P,docEnd,FALSE
FALSE,5,TextUnit_Page,5,lastCharPos,lastCharPosP1C,0,docEndM1P,docEnd,FALSE
TRUE,6,TextUnit_Page,-5,docEnd,docEnd,-2,origin,origin,FALSE
TRUE,6,TextUnit_Page,-1,docEnd,docEnd,-1,docEndM1P,docEndM1P,FALSE
TRUE,6,TextUnit_Page,0,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Page,1,docEnd,docEnd,0,docEnd,docEnd,FALSE
TRUE,6,TextUnit_Page,5,docEnd,docEnd,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Page,-5,docEnd,docEndP1C,-2,origin,origin,FALSE
FALSE,6,TextUnit_Page,-1,docEnd,docEndP1C,-1,docEndM1P,docEndM1P,FALSE
FALSE,6,TextUnit_Page,0,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Page,1,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
FALSE,6,TextUnit_Page,5,docEnd,docEndP1C,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Page,-5,midEmptySpace,midEmptySpace,-2,origin,origin,FALSE
TRUE,7,TextUnit_Page,-1,midEmptySpace,midEmptySpace,-1,docEndM1P,docEndM1P,FALSE
TRUE,7,TextUnit_Page,0,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Page,1,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
TRUE,7,TextUnit_Page,5,midEmptySpace,midEmptySpace,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Page,-5,midEmptySpace,midEmptySpaceP1C,-2,origin,origin,FALSE
FALSE,7,TextUnit_Page,-1,midEmptySpace,midEmptySpaceP1C,-1,docEndM1P,docEndM1P,FALSE
FALSE,7,TextUnit_Page,0,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Page,1,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
FALSE,7,TextUnit_Page,5,midEmptySpace,midEmptySpaceP1C,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Page,-5,bufferEnd,bufferEnd,-2,origin,origin,FALSE
TRUE,8,TextUnit_Page,-1,bufferEnd,bufferEnd,-1,docEndM1P,docEndM1P,FALSE
TRUE,8,TextUnit_Page,0,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Page,1,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
TRUE,8,TextUnit_Page,5,bufferEnd,bufferEnd,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Page,-5,bufferEnd,endExclusive,-2,origin,origin,FALSE
FALSE,8,TextUnit_Page,-1,bufferEnd,endExclusive,-1,docEndM1P,docEndM1P,FALSE
FALSE,8,TextUnit_Page,0,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Page,1,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
FALSE,8,TextUnit_Page,5,bufferEnd,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Page,-5,endExclusive,endExclusive,-2,origin,origin,FALSE
TRUE,9,TextUnit_Page,-1,endExclusive,endExclusive,-1,docEndM1P,docEndM1P,FALSE
TRUE,9,TextUnit_Page,0,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Page,1,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
TRUE,9,TextUnit_Page,5,endExclusive,endExclusive,0,docEnd,docEnd,FALSE
1 Degenerate Position TextUnit MoveAmount Start End Result_MoveAmount Result_Start Result_End Skip
89 FALSE 3 TextUnit_Document 0 midHistory midHistoryP1C 0 origin docEnd FALSE
90 FALSE 3 TextUnit_Document 1 midHistory midHistoryP1C 0 origin docEnd FALSE
91 FALSE 3 TextUnit_Document 5 midHistory midHistoryP1C 0 origin docEnd FALSE
92 TRUE 8 4 TextUnit_Character -5 bufferEnd midDocEnd bufferEnd midDocEnd -5 docEndM5C midDocEndM5C docEndM5C midDocEndM5C FALSE
93 TRUE 8 4 TextUnit_Character -1 bufferEnd midDocEnd bufferEnd midDocEnd -1 docEndM1C midDocEndM1C docEndM1C midDocEndM1C FALSE
94 TRUE 8 4 TextUnit_Character 0 bufferEnd midDocEnd bufferEnd midDocEnd 0 docEnd midDocEnd docEnd midDocEnd FALSE
95 TRUE 8 4 TextUnit_Character 1 bufferEnd midDocEnd bufferEnd midDocEnd 0 1 docEnd midDocEndP1C docEnd midDocEndP1C FALSE
96 TRUE 8 4 TextUnit_Character 5 bufferEnd midDocEnd bufferEnd midDocEnd 0 5 docEnd midDocEndP5C docEnd midDocEndP5C FALSE
97 FALSE 8 4 TextUnit_Character -5 bufferEnd midDocEnd endExclusive midDocEndP1C -5 docEndM5C midDocEndM5C docEndM5C midDocEndM4C FALSE
98 FALSE 8 4 TextUnit_Character -1 bufferEnd midDocEnd endExclusive midDocEndP1C -1 docEndM1C midDocEndM1C docEndM1C midDocEnd FALSE
99 FALSE 8 4 TextUnit_Character 0 bufferEnd midDocEnd endExclusive midDocEndP1C 0 docEnd midDocEnd docEnd midDocEndP1C FALSE
100 FALSE 8 4 TextUnit_Character 1 bufferEnd midDocEnd endExclusive midDocEndP1C 0 1 docEnd midDocEndP1C docEnd midDocEndP2C FALSE
101 FALSE 8 4 TextUnit_Character 5 bufferEnd midDocEnd endExclusive midDocEndP1C 0 5 docEnd midDocEndP5C docEnd midDocEndP6C FALSE
102 TRUE 8 TextUnit_Line -5 bufferEnd bufferEnd -5 docEndM5L docEndM5L FALSE
103 TRUE 8 TextUnit_Line -1 bufferEnd bufferEnd -1 docEndM1L docEndM1L FALSE
104 TRUE 8 TextUnit_Line 0 bufferEnd bufferEnd 0 docEnd docEnd FALSE
119 FALSE 8 TextUnit_Document 0 bufferEnd endExclusive 0 docEnd docEnd FALSE
120 FALSE 8 TextUnit_Document 1 bufferEnd endExclusive 0 docEnd docEnd FALSE
121 FALSE 8 TextUnit_Document 5 bufferEnd endExclusive 0 docEnd docEnd FALSE
122 TRUE 9 5 TextUnit_Character -5 endExclusive lastCharPos endExclusive lastCharPos -5 docEndM5C lastCharPosM5C docEndM5C lastCharPosM5C FALSE
123 TRUE 9 5 TextUnit_Character -1 endExclusive lastCharPos endExclusive lastCharPos -1 docEndM1C lastCharPosM1C docEndM1C lastCharPosM1C FALSE
124 TRUE 9 5 TextUnit_Character 0 endExclusive lastCharPos endExclusive lastCharPos 0 docEnd lastCharPos docEnd lastCharPos FALSE
125 TRUE 9 5 TextUnit_Character 1 endExclusive lastCharPos endExclusive lastCharPos 0 1 docEnd lastCharPosP1C docEnd lastCharPosP1C FALSE
126 TRUE 9 5 TextUnit_Character 5 endExclusive lastCharPos endExclusive lastCharPos 0 5 docEnd lastCharPosP5C docEnd lastCharPosP5C FALSE
127 TRUE 9 TextUnit_Line -5 endExclusive endExclusive -5 docEndM5L docEndM5L FALSE
128 TRUE 9 TextUnit_Line -1 endExclusive endExclusive -1 docEndM1L docEndM1L FALSE
129 TRUE 9 TextUnit_Line 0 endExclusive endExclusive 0 docEnd docEnd FALSE
134 TRUE 9 TextUnit_Document 0 endExclusive endExclusive 0 docEnd docEnd FALSE
135 TRUE 9 TextUnit_Document 1 endExclusive endExclusive 0 docEnd docEnd FALSE
136 TRUE 9 TextUnit_Document 5 endExclusive endExclusive 0 docEnd docEnd FALSE
137 TRUE FALSE 4 5 TextUnit_Character -5 midDocEnd lastCharPos midDocEnd lastCharPosP1C -5 midDocEndM5C lastCharPosM5C midDocEndM5C lastCharPosM4C FALSE
138 TRUE FALSE 4 5 TextUnit_Character -1 midDocEnd lastCharPos midDocEnd lastCharPosP1C -1 midDocEndM1C lastCharPosM1C midDocEndM1C lastCharPos FALSE
139 TRUE FALSE 4 5 TextUnit_Character 0 midDocEnd lastCharPos midDocEnd lastCharPosP1C 0 midDocEnd lastCharPos midDocEnd lastCharPosP1C FALSE
140 TRUE FALSE 4 5 TextUnit_Character 1 midDocEnd lastCharPos midDocEnd lastCharPosP1C 1 midDocEndP1C lastCharPosP1C midDocEndP1C lastCharPosP2C FALSE
141 TRUE FALSE 4 5 TextUnit_Character 5 midDocEnd lastCharPos midDocEnd lastCharPosP1C 5 midDocEndP5C lastCharPosP5C midDocEndP5C lastCharPosP6C FALSE
142 FALSE TRUE 4 6 TextUnit_Character -5 midDocEnd docEnd midDocEndP1C docEnd -5 midDocEndM5C docEndM5C midDocEndM4C docEndM5C FALSE
143 FALSE TRUE 4 6 TextUnit_Character -1 midDocEnd docEnd midDocEndP1C docEnd -1 midDocEndM1C docEndM1C midDocEnd docEndM1C FALSE
144 FALSE TRUE 4 6 TextUnit_Character 0 midDocEnd docEnd midDocEndP1C docEnd 0 midDocEnd docEnd midDocEndP1C docEnd FALSE
145 FALSE TRUE 4 6 TextUnit_Character 1 midDocEnd docEnd midDocEndP1C docEnd 1 0 midDocEndP1C docEnd midDocEndP2C docEnd FALSE
146 FALSE TRUE 4 6 TextUnit_Character 5 midDocEnd docEnd midDocEndP1C docEnd 5 0 midDocEndP5C docEnd midDocEndP6C docEnd FALSE
147 TRUE 4 TextUnit_Line -5 midDocEnd midDocEnd -5 midDocEndM4L midDocEndM4L FALSE
148 TRUE 4 TextUnit_Line -1 midDocEnd midDocEnd -1 midDocEndLeft midDocEndLeft FALSE
149 TRUE 4 TextUnit_Line 0 midDocEnd midDocEnd 0 midDocEnd midDocEnd FALSE
164 FALSE 4 TextUnit_Document 0 midDocEnd midDocEndP1C 0 origin docEnd FALSE
165 FALSE 4 TextUnit_Document 1 midDocEnd midDocEndP1C 0 origin docEnd FALSE
166 FALSE 4 TextUnit_Document 5 midDocEnd midDocEndP1C 0 origin docEnd FALSE
167 TRUE FALSE 5 6 TextUnit_Character -5 lastCharPos docEnd lastCharPos docEndP1C -5 lastCharPosM5C docEndM5C lastCharPosM5C docEndM5C FALSE
168 TRUE FALSE 5 6 TextUnit_Character -1 lastCharPos docEnd lastCharPos docEndP1C -1 lastCharPosM1C docEndM1C lastCharPosM1C docEndM1C FALSE
169 TRUE FALSE 5 6 TextUnit_Character 0 lastCharPos docEnd lastCharPos docEndP1C 0 lastCharPos docEnd lastCharPos docEnd FALSE
170 TRUE FALSE 5 6 TextUnit_Character 1 lastCharPos docEnd lastCharPos docEndP1C 1 0 lastCharPosP1C docEnd lastCharPosP1C docEnd FALSE
171 TRUE FALSE 5 6 TextUnit_Character 5 lastCharPos docEnd lastCharPos docEndP1C 5 0 lastCharPosP5C docEnd lastCharPosP5C docEnd FALSE
172 FALSE TRUE 5 7 TextUnit_Character -5 lastCharPos midEmptySpace lastCharPosP1C midEmptySpace -5 lastCharPosM5C docEndM5C lastCharPosM4C docEndM5C FALSE
173 FALSE TRUE 5 7 TextUnit_Character -1 lastCharPos midEmptySpace lastCharPosP1C midEmptySpace -1 lastCharPosM1C docEndM1C lastCharPos docEndM1C FALSE
174 FALSE TRUE 5 7 TextUnit_Character 0 lastCharPos midEmptySpace lastCharPosP1C midEmptySpace 0 lastCharPos docEnd lastCharPosP1C docEnd FALSE
175 FALSE TRUE 5 7 TextUnit_Character 1 lastCharPos midEmptySpace lastCharPosP1C midEmptySpace 1 0 lastCharPosP1C docEnd lastCharPosP2C docEnd FALSE
176 FALSE TRUE 5 7 TextUnit_Character 5 lastCharPos midEmptySpace lastCharPosP1C midEmptySpace 5 0 lastCharPosP5C docEnd lastCharPosP6C docEnd FALSE
177 TRUE 5 TextUnit_Line -5 lastCharPos lastCharPos -5 lastCharPosM4L lastCharPosM4L FALSE
178 TRUE 5 TextUnit_Line -1 lastCharPos lastCharPos -1 lastCharPosLeft lastCharPosLeft FALSE
179 TRUE 5 TextUnit_Line 0 lastCharPos lastCharPos 0 lastCharPos lastCharPos FALSE
194 FALSE 5 TextUnit_Document 0 lastCharPos lastCharPosP1C 0 origin docEnd FALSE
195 FALSE 5 TextUnit_Document 1 lastCharPos lastCharPosP1C 0 origin docEnd FALSE
196 FALSE 5 TextUnit_Document 5 lastCharPos lastCharPosP1C 0 origin docEnd FALSE
197 TRUE FALSE 6 7 TextUnit_Character -5 docEnd midEmptySpace docEnd midEmptySpaceP1C -5 docEndM5C docEndM5C FALSE
198 TRUE FALSE 6 7 TextUnit_Character -1 docEnd midEmptySpace docEnd midEmptySpaceP1C -1 docEndM1C docEndM1C FALSE
199 TRUE FALSE 6 7 TextUnit_Character 0 docEnd midEmptySpace docEnd midEmptySpaceP1C 0 docEnd docEnd FALSE
200 TRUE FALSE 6 7 TextUnit_Character 1 docEnd midEmptySpace docEnd midEmptySpaceP1C 0 docEnd docEnd FALSE
201 TRUE FALSE 6 7 TextUnit_Character 5 docEnd midEmptySpace docEnd midEmptySpaceP1C 0 docEnd docEnd FALSE
202 FALSE TRUE 6 8 TextUnit_Character -5 docEnd bufferEnd docEndP1C bufferEnd -5 docEndM5C docEndM5C FALSE
203 FALSE TRUE 6 8 TextUnit_Character -1 docEnd bufferEnd docEndP1C bufferEnd -1 docEndM1C docEndM1C FALSE
204 FALSE TRUE 6 8 TextUnit_Character 0 docEnd bufferEnd docEndP1C bufferEnd 0 docEnd docEnd FALSE
205 FALSE TRUE 6 8 TextUnit_Character 1 docEnd bufferEnd docEndP1C bufferEnd 0 docEnd docEnd FALSE
206 FALSE TRUE 6 8 TextUnit_Character 5 docEnd bufferEnd docEndP1C bufferEnd 0 docEnd docEnd FALSE
207 TRUE 6 TextUnit_Line -5 docEnd docEnd -5 docEndM5L docEndM5L FALSE
208 TRUE 6 TextUnit_Line -1 docEnd docEnd -1 docEndM1L docEndM1L FALSE
209 TRUE 6 TextUnit_Line 0 docEnd docEnd 0 docEnd docEnd FALSE
224 FALSE 6 TextUnit_Document 0 docEnd docEndP1C 0 docEnd docEnd FALSE
225 FALSE 6 TextUnit_Document 1 docEnd docEndP1C 0 docEnd docEnd FALSE
226 FALSE 6 TextUnit_Document 5 docEnd docEndP1C 0 docEnd docEnd FALSE
227 TRUE FALSE 7 8 TextUnit_Character -5 midEmptySpace bufferEnd midEmptySpace endExclusive -5 docEndM5C docEndM5C FALSE
228 TRUE FALSE 7 8 TextUnit_Character -1 midEmptySpace bufferEnd midEmptySpace endExclusive -1 docEndM1C docEndM1C FALSE
229 TRUE FALSE 7 8 TextUnit_Character 0 midEmptySpace bufferEnd midEmptySpace endExclusive 0 docEnd docEnd FALSE
230 TRUE FALSE 7 8 TextUnit_Character 1 midEmptySpace bufferEnd midEmptySpace endExclusive 0 docEnd docEnd FALSE
231 TRUE FALSE 7 8 TextUnit_Character 5 midEmptySpace bufferEnd midEmptySpace endExclusive 0 docEnd docEnd FALSE
232 FALSE TRUE 7 9 TextUnit_Character -5 midEmptySpace endExclusive midEmptySpaceP1C endExclusive -5 docEndM5C docEndM5C FALSE
233 FALSE TRUE 7 9 TextUnit_Character -1 midEmptySpace endExclusive midEmptySpaceP1C endExclusive -1 docEndM1C docEndM1C FALSE
234 FALSE TRUE 7 9 TextUnit_Character 0 midEmptySpace endExclusive midEmptySpaceP1C endExclusive 0 docEnd docEnd FALSE
235 FALSE TRUE 7 9 TextUnit_Character 1 midEmptySpace endExclusive midEmptySpaceP1C endExclusive 0 docEnd docEnd FALSE
236 FALSE TRUE 7 9 TextUnit_Character 5 midEmptySpace endExclusive midEmptySpaceP1C endExclusive 0 docEnd docEnd FALSE
237 TRUE 7 TextUnit_Line -5 midEmptySpace midEmptySpace -5 docEndM5L docEndM5L FALSE
238 TRUE 7 TextUnit_Line -1 midEmptySpace midEmptySpace -1 docEndM1L docEndM1L FALSE
239 TRUE 7 TextUnit_Line 0 midEmptySpace midEmptySpace 0 docEnd docEnd FALSE
339 TRUE 9 TextUnit_Word 0 endExclusive endExclusive 0 docEnd docEnd FALSE
340 TRUE 9 TextUnit_Word 1 endExclusive endExclusive 0 docEnd docEnd FALSE
341 TRUE 9 TextUnit_Word 5 endExclusive endExclusive 0 docEnd docEnd FALSE
342 TRUE 1 TextUnit_Page -5 origin origin 0 origin origin FALSE
343 TRUE 1 TextUnit_Page -1 origin origin 0 origin origin FALSE
344 TRUE 1 TextUnit_Page 0 origin origin 0 origin origin FALSE
345 TRUE 1 TextUnit_Page 1 origin origin 1 originP1P originP1P FALSE
346 TRUE 1 TextUnit_Page 5 origin origin 2 docEnd docEnd FALSE
347 FALSE 1 TextUnit_Page -5 origin originP1C 0 origin originP1P FALSE
348 FALSE 1 TextUnit_Page -1 origin originP1C 0 origin originP1P FALSE
349 FALSE 1 TextUnit_Page 0 origin originP1C 0 origin originP1P FALSE
350 FALSE 1 TextUnit_Page 1 origin originP1C 1 originP1P docEnd FALSE
351 FALSE 1 TextUnit_Page 5 origin originP1C 1 originP1P docEnd FALSE
352 TRUE 2 TextUnit_Page -5 midTop midTop -1 origin origin FALSE
353 TRUE 2 TextUnit_Page -1 midTop midTop -1 origin origin FALSE
354 TRUE 2 TextUnit_Page 0 midTop midTop 0 midTop midTop FALSE
355 TRUE 2 TextUnit_Page 1 midTop midTop 1 originP1P originP1P FALSE
356 TRUE 2 TextUnit_Page 5 midTop midTop 2 docEnd docEnd FALSE
357 FALSE 2 TextUnit_Page -5 midTop midTopP1C 0 origin originP1P FALSE
358 FALSE 2 TextUnit_Page -1 midTop midTopP1C 0 origin originP1P FALSE
359 FALSE 2 TextUnit_Page 0 midTop midTopP1C 0 origin originP1P FALSE
360 FALSE 2 TextUnit_Page 1 midTop midTopP1C 1 originP1P docEnd FALSE
361 FALSE 2 TextUnit_Page 5 midTop midTopP1C 1 originP1P docEnd FALSE
362 TRUE 3 TextUnit_Page -5 midHistory midHistory -1 origin origin FALSE
363 TRUE 3 TextUnit_Page -1 midHistory midHistory -1 origin origin FALSE
364 TRUE 3 TextUnit_Page 0 midHistory midHistory 0 midHistory midHistory FALSE
365 TRUE 3 TextUnit_Page 1 midHistory midHistory 1 docEnd docEnd FALSE
366 TRUE 3 TextUnit_Page 5 midHistory midHistory 1 docEnd docEnd FALSE
367 FALSE 3 TextUnit_Page -5 midHistory midHistoryP1C 0 origin originP1P FALSE
368 FALSE 3 TextUnit_Page -1 midHistory midHistoryP1C 0 origin originP1P FALSE
369 FALSE 3 TextUnit_Page 0 midHistory midHistoryP1C 0 midHistoryViewStart midHistoryViewEnd FALSE
370 FALSE 3 TextUnit_Page 1 midHistory midHistoryP1C 0 docEndM1P docEnd FALSE
371 FALSE 3 TextUnit_Page 5 midHistory midHistoryP1C 0 docEndM1P docEnd FALSE
372 TRUE 4 TextUnit_Page -5 midDocEnd midDocEnd -2 origin origin FALSE
373 TRUE 4 TextUnit_Page -1 midDocEnd midDocEnd -1 docEndM1P docEndM1P FALSE
374 TRUE 4 TextUnit_Page 0 midDocEnd midDocEnd 0 midDocEnd midDocEnd FALSE
375 TRUE 4 TextUnit_Page 1 midDocEnd midDocEnd 1 docEnd docEnd FALSE
376 TRUE 4 TextUnit_Page 5 midDocEnd midDocEnd 1 docEnd docEnd FALSE
377 FALSE 4 TextUnit_Page -5 midDocEnd midDocEndP1C -5 docEndM6P docEndM5P FALSE
378 FALSE 4 TextUnit_Page -1 midDocEnd midDocEndP1C -1 docEndM2P docEndM1P FALSE
379 FALSE 4 TextUnit_Page 0 midDocEnd midDocEndP1C 0 docEndM1P docEnd FALSE
380 FALSE 4 TextUnit_Page 1 midDocEnd midDocEndP1C 0 docEndM1P docEnd FALSE
381 FALSE 4 TextUnit_Page 5 midDocEnd midDocEndP1C 0 docEndM1P docEnd FALSE
382 TRUE 5 TextUnit_Page -5 lastCharPos lastCharPos -2 origin origin FALSE
383 TRUE 5 TextUnit_Page -1 lastCharPos lastCharPos -1 docEndM1P docEndM1P FALSE
384 TRUE 5 TextUnit_Page 0 lastCharPos lastCharPos 0 lastCharPos lastCharPos FALSE
385 TRUE 5 TextUnit_Page 1 lastCharPos lastCharPos 1 docEnd docEnd FALSE
386 TRUE 5 TextUnit_Page 5 lastCharPos lastCharPos 1 docEnd docEnd FALSE
387 FALSE 5 TextUnit_Page -5 lastCharPos lastCharPosP1C -5 docEndM6P docEndM5P FALSE
388 FALSE 5 TextUnit_Page -1 lastCharPos lastCharPosP1C -1 docEndM2P docEndM1P FALSE
389 FALSE 5 TextUnit_Page 0 lastCharPos lastCharPosP1C 0 docEndM1P docEnd FALSE
390 FALSE 5 TextUnit_Page 1 lastCharPos lastCharPosP1C 0 docEndM1P docEnd FALSE
391 FALSE 5 TextUnit_Page 5 lastCharPos lastCharPosP1C 0 docEndM1P docEnd FALSE
392 TRUE 6 TextUnit_Page -5 docEnd docEnd -2 origin origin FALSE
393 TRUE 6 TextUnit_Page -1 docEnd docEnd -1 docEndM1P docEndM1P FALSE
394 TRUE 6 TextUnit_Page 0 docEnd docEnd 0 docEnd docEnd FALSE
395 TRUE 6 TextUnit_Page 1 docEnd docEnd 0 docEnd docEnd FALSE
396 TRUE 6 TextUnit_Page 5 docEnd docEnd 0 docEnd docEnd FALSE
397 FALSE 6 TextUnit_Page -5 docEnd docEndP1C -2 origin origin FALSE
398 FALSE 6 TextUnit_Page -1 docEnd docEndP1C -1 docEndM1P docEndM1P FALSE
399 FALSE 6 TextUnit_Page 0 docEnd docEndP1C 0 docEnd docEnd FALSE
400 FALSE 6 TextUnit_Page 1 docEnd docEndP1C 0 docEnd docEnd FALSE
401 FALSE 6 TextUnit_Page 5 docEnd docEndP1C 0 docEnd docEnd FALSE
402 TRUE 7 TextUnit_Page -5 midEmptySpace midEmptySpace -2 origin origin FALSE
403 TRUE 7 TextUnit_Page -1 midEmptySpace midEmptySpace -1 docEndM1P docEndM1P FALSE
404 TRUE 7 TextUnit_Page 0 midEmptySpace midEmptySpace 0 docEnd docEnd FALSE
405 TRUE 7 TextUnit_Page 1 midEmptySpace midEmptySpace 0 docEnd docEnd FALSE
406 TRUE 7 TextUnit_Page 5 midEmptySpace midEmptySpace 0 docEnd docEnd FALSE
407 FALSE 7 TextUnit_Page -5 midEmptySpace midEmptySpaceP1C -2 origin origin FALSE
408 FALSE 7 TextUnit_Page -1 midEmptySpace midEmptySpaceP1C -1 docEndM1P docEndM1P FALSE
409 FALSE 7 TextUnit_Page 0 midEmptySpace midEmptySpaceP1C 0 docEnd docEnd FALSE
410 FALSE 7 TextUnit_Page 1 midEmptySpace midEmptySpaceP1C 0 docEnd docEnd FALSE
411 FALSE 7 TextUnit_Page 5 midEmptySpace midEmptySpaceP1C 0 docEnd docEnd FALSE
412 TRUE 8 TextUnit_Page -5 bufferEnd bufferEnd -2 origin origin FALSE
413 TRUE 8 TextUnit_Page -1 bufferEnd bufferEnd -1 docEndM1P docEndM1P FALSE
414 TRUE 8 TextUnit_Page 0 bufferEnd bufferEnd 0 docEnd docEnd FALSE
415 TRUE 8 TextUnit_Page 1 bufferEnd bufferEnd 0 docEnd docEnd FALSE
416 TRUE 8 TextUnit_Page 5 bufferEnd bufferEnd 0 docEnd docEnd FALSE
417 FALSE 8 TextUnit_Page -5 bufferEnd endExclusive -2 origin origin FALSE
418 FALSE 8 TextUnit_Page -1 bufferEnd endExclusive -1 docEndM1P docEndM1P FALSE
419 FALSE 8 TextUnit_Page 0 bufferEnd endExclusive 0 docEnd docEnd FALSE
420 FALSE 8 TextUnit_Page 1 bufferEnd endExclusive 0 docEnd docEnd FALSE
421 FALSE 8 TextUnit_Page 5 bufferEnd endExclusive 0 docEnd docEnd FALSE
422 TRUE 9 TextUnit_Page -5 endExclusive endExclusive -2 origin origin FALSE
423 TRUE 9 TextUnit_Page -1 endExclusive endExclusive -1 docEndM1P docEndM1P FALSE
424 TRUE 9 TextUnit_Page 0 endExclusive endExclusive 0 docEnd docEnd FALSE
425 TRUE 9 TextUnit_Page 1 endExclusive endExclusive 0 docEnd docEnd FALSE
426 TRUE 9 TextUnit_Page 5 endExclusive endExclusive 0 docEnd docEnd FALSE