added vim files to mac
This commit is contained in:
Executable
+297
@@ -0,0 +1,297 @@
|
||||
" ====================================================================
|
||||
" Auth: Alex Celani
|
||||
" Lang: Text
|
||||
" Revn: 10-16-2020 1.5
|
||||
" Func: Define syntax coloring for .txt files when being edited in Vim
|
||||
"
|
||||
" TODO: make comments create new comments on line overrun and newline
|
||||
" add highlighting for titles, vocab words, definitions
|
||||
" create a better template file showing all the highlighting
|
||||
" get term=underline working to avoid using link statements
|
||||
" ====================================================================
|
||||
" CHANGE LOG
|
||||
" --------------------------------------------------------------------
|
||||
" 09-29-2020: copy over from go.vim
|
||||
" 10-01-2020: gutted entire file
|
||||
" made my own quote regex
|
||||
" made comment
|
||||
" added link to list of group names and their colors
|
||||
" 10-02-2020: rewrote quotes to allow multiline quotes with rollover
|
||||
" added recognition for numbers
|
||||
" separated numbers into numbers and numbers in quotes
|
||||
" added date recognition, underlines dates in change log
|
||||
" made comments recognize Auth, Lang, Revn, Func, Todo
|
||||
" underline Auth, Lang, Revn, Func, Todo, and Change Log
|
||||
" recognized fields, the field delimiter (::), and
|
||||
" property delimiter (->)
|
||||
" added tags for notes to self, and the body of such
|
||||
" began writing something to passively color body
|
||||
" colored things Norse things green, and Russian red
|
||||
" added Color Guide, and source
|
||||
" changed some colors up a bit
|
||||
" made property delimiter of variable length, also use =>
|
||||
" 10-03-2020: added reminded to color explicitly in Todo
|
||||
" 10-11-2020: replaced most links with explicit ctermfg statements
|
||||
" added expressions, names, operations
|
||||
" changed some colors up a bit
|
||||
" shortened lines down to <= 70 characters
|
||||
" 10-16-2020: added Norge to norwegian words
|
||||
" added spaces around = in expression to avoid confusion
|
||||
" with => marker
|
||||
" changed noteTag color from DkRed to Red to match notes
|
||||
" added <> region
|
||||
" added i, j, e, pi as numbers
|
||||
"
|
||||
" ====================================================================
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
|
||||
" XXX Expressions:
|
||||
" highlight equations, formulas, expressions, etc
|
||||
" expressions: .* is any number of characters
|
||||
" = is literal
|
||||
" .* is any number of characters again
|
||||
" added spaces around = to avoid confusion with =>
|
||||
"
|
||||
" the idea is that it's stuff that equals stuff, and we
|
||||
" worry about what it is later
|
||||
" name: \c case-escapes the sequence
|
||||
" \a is alphabetic characters, probably don't need escaping
|
||||
" \+ is at least 1 match, so it's 1 or more letters is a name
|
||||
" name: \c\a\= is 0 or 1 case-escaped alphabetic characters
|
||||
" _ is literal, best I can get to subscripts
|
||||
" \a\+ is 1 or more case-escaped alphabetic characters
|
||||
" op: inside [] can allow for one choice from any contained characters
|
||||
" =, +, -, /, ^ are all literals for operations
|
||||
" \* escapes the * character, which is now multiplication
|
||||
" Num: see Numbers: below
|
||||
" FIXME try to make name into one thing, probably with \{,1}
|
||||
syn match expression ".* = .*" contains=name,op,num skipwhite
|
||||
syn match name "\c\a\+" contained
|
||||
syn match name "\c\a\=_\a\+" contained
|
||||
syn match op "[=+-/^\*]" contained
|
||||
|
||||
|
||||
" XXX Quotes:
|
||||
" quotes should exist between odd pairs of quotation marks
|
||||
" eg| "quote" not
|
||||
" "quote" not "quote"
|
||||
" "not
|
||||
" quote"
|
||||
" "quote only if the it rolls
|
||||
" over onto the next line"
|
||||
" Calling the quotation a region instead of pattern match makes it
|
||||
" easier to wrap around a new line
|
||||
" the first and last quote define the expression
|
||||
" \ escapes the next character, allowing \" to appear as a literal "
|
||||
" thus, start and end are both quotes, and the reqion can span lines
|
||||
" added contains num on the off chance I want to embed a number
|
||||
" added contains for norwegian and russian for the hell of it
|
||||
syn region quote start="\"" end="\"" contains=numQuote,norwegian,russian
|
||||
" -- DEPRECATED --
|
||||
" the first and last quote define the expression
|
||||
" \ is the escape character, so \" means I want to look for a quote
|
||||
" . is every non-new line character possible
|
||||
" \{,} is \{0,infinity}, means I'm looking for between 0 and infinity
|
||||
" matches for the previous character, which is a wildcard, .
|
||||
" \{-,} will prioritize the smallest amount of matches possible
|
||||
" syn match quote "\".\{-,}\""
|
||||
" -- DEPRECATED --
|
||||
|
||||
|
||||
" XXX Unnamed Field:
|
||||
" match, because it should really only span one line
|
||||
" < and > are literals
|
||||
" .* means any character any number of times
|
||||
" contains numQuote
|
||||
syn match unnamed "<.*>" contains=numQuote
|
||||
|
||||
|
||||
" XXX Numbers:
|
||||
" num and numQuote allow for the coloring of numbers. numQuote exists
|
||||
" for the sole purpose of coloring numbers differently for when
|
||||
" they're inside of a quote, thus the contained keyword for numQuote
|
||||
" the first and last quote define the expression
|
||||
" - is the negative symbol, \? allows for 0 or 1 matchings, which
|
||||
" allows for negative numbers
|
||||
" \d is any digit [0-9], \+ is 1 or more matches, which means there
|
||||
" MUST be at least one number for a match to be seen
|
||||
" \a is any letter [a-zA-Z], * allows any number of them for variables
|
||||
" \. escapes the . character so decimal points can be represented
|
||||
" \? allows 0 or 1 matches of \., because number only have 1 decimal
|
||||
" \d for numbers after the decimal
|
||||
" * for any number of matches, using \+ (one or more matches) would
|
||||
" have only allowed for 2 digit numbers minimum
|
||||
" i, j, e, pi are all common numbers
|
||||
syn match numQuote "-\?\d\+\a*\.\?\d*" contained
|
||||
syn keyword numQuote j i e pi contained
|
||||
syn match num "-\?\d\+\a*\.\?\d*"
|
||||
syn keyword num j i e pi
|
||||
|
||||
|
||||
|
||||
" XXX Dates:
|
||||
" Date highlighting for the Change Log
|
||||
" the first and last quote define the expression
|
||||
" \d is any digit [0-9]
|
||||
" \{1,2} matches 1 or 2 times, although it should only ever get 2
|
||||
" - literal hyphen, which seperates months, days, and years
|
||||
" The same three elements are repeated again for the days
|
||||
" \d is any digit, used again for the years
|
||||
" \{4} for only four digits can be matched
|
||||
" ends with : because only dates in change log should be highlighted
|
||||
" marked as contained, as it should only be highlighted in comments
|
||||
" contains colon, so I can highlight the color separately
|
||||
" for some reason, the colon doesn't work as keyword, so simple match
|
||||
syn match date "\d\{1,2}-\d\{1,2}-\d\{4}:" contained contains=colon
|
||||
syn match colon ":" contained
|
||||
|
||||
|
||||
" XXX Comments:
|
||||
" comments come after #
|
||||
" eg| not comment # now a comment
|
||||
" # comment
|
||||
" not a comment
|
||||
" not
|
||||
" not
|
||||
" ### comment
|
||||
"
|
||||
" first and last quote define the expression
|
||||
" # can come literally, because it doesn't need escaping
|
||||
" . is every non-new line character possible
|
||||
" * matches as many matches as possible
|
||||
" i.e. a pound sign, and then as many characters as possible
|
||||
syn match comments "#.*" contains=commentFields,commentTodo,date,norwegian,russian
|
||||
" commentFields and commentTodo are contained within comments, so they
|
||||
" are as such in the definition of a comment, and listed as contained
|
||||
" in their own definitions
|
||||
" commentFields is match instead of keyword, will contain the space
|
||||
syn keyword commentFields contained Auth Revn File Func
|
||||
syn keyword commentTodo contained TODO
|
||||
syn match commentFields contained "CHANGE LOG"
|
||||
|
||||
|
||||
" XXX Fields:
|
||||
" Denotes properties, things that are of importance
|
||||
" first and last quote define the expression
|
||||
" . is any character
|
||||
" * is any number of that character
|
||||
" :: is the literal characters '::', which denotes the property
|
||||
" Using nextgroup would have been better praxis, but this works
|
||||
" After, denote the delimiter as own syntax element to color uniquely
|
||||
" FIXME: make this better with nextgroup
|
||||
syn match fields ".*::" contains=delim
|
||||
syn match delim "::"
|
||||
|
||||
" XXX Properties:
|
||||
" Denotes a property of a field
|
||||
" -\+ is one or more hyphens
|
||||
" =\+ is one or more equals signs
|
||||
" > is a literal
|
||||
syn match properties "-\+>"
|
||||
syn match properties "=\+>"
|
||||
|
||||
|
||||
" XXX Notes:
|
||||
" Allow for notes to be left with special highlighting
|
||||
" \c escapes the case, so search is entirely case insensitive
|
||||
" note are all literals
|
||||
" s\? will alow for either 0 or 1 of the character "s" to be matched,
|
||||
" essentially allowing for both notes and note
|
||||
" finally followed by a colon
|
||||
" nextgroup is the actual notes to be taken, as this is just the tag
|
||||
syn match noteTag "\cnotes\?:" nextgroup=notes
|
||||
" define notes as starting with space, ending with exclamation mark
|
||||
" if it's not denoted as contained, then the whole damn thing will be
|
||||
" highlighted
|
||||
syn region notes start=" " end="!" contained
|
||||
|
||||
|
||||
" FIXME Body:
|
||||
" This is the rest of the text
|
||||
" I found out with notes, if this isn't given as contained, it'll just
|
||||
" highlight everything
|
||||
"syn region body start=" " end=" "
|
||||
|
||||
|
||||
" XXX Norwegian:
|
||||
" XXX Russian:
|
||||
" lmfao ignore case sensitivity to avoid writing things twice
|
||||
" Highlight norwegian shit green
|
||||
syn case ignore
|
||||
syn keyword norwegian nordic nordics
|
||||
syn keyword norwegian norse
|
||||
syn keyword norwegian norway
|
||||
syn keyword norwegian norge
|
||||
syn keyword norwegian norsk
|
||||
syn keyword norwegian norwegian norwegians
|
||||
" Highlight Russian shit red
|
||||
syn keyword russian russian russians
|
||||
syn keyword russian rusky ruskies
|
||||
syn keyword russian russia
|
||||
syn keyword russian slav slavs
|
||||
syn keyword russian slavic
|
||||
syn case match
|
||||
" lmfao and turn the case sensitivity back on
|
||||
|
||||
|
||||
|
||||
" ColorGuide: ctermfg and ctermbg args - - - - source:: :help cterm
|
||||
" Black
|
||||
" LightBlue/Cyan/LightCyan, Blue/DarkBlue/DarkCyan
|
||||
" Green/LightGreen, DarkGreen
|
||||
" Red/LightRed, DarkRed
|
||||
" Magenta/LightMagenta, DarkMagenta
|
||||
" Yellow/LightYellow, DarkYellow/Brown
|
||||
" White
|
||||
" Gray/LightGray, DarkGray
|
||||
" ColorGuide: ctermfg and ctermbg args - - - - source:: :help cterm
|
||||
" ColorGuide: - - - - - - - - - - - - - - - source:: :help group-name
|
||||
" Dates and fields in comments still use links for highlighting to get
|
||||
" access to 'term' arguments that don't want to load correctly, namely
|
||||
" Underline -> PreProc (Magenta in default colo), with underline
|
||||
" ColorGuide: - - - - - - - - - - - - - - - source:: :help group-name
|
||||
|
||||
|
||||
" XXX Coloring:
|
||||
" hi[ghlight] <group> ctermfg=<color> [ctermbg=<color>]
|
||||
" group is typically a user-made group
|
||||
" ctermfg is the foreground, or font color
|
||||
" ctermbg is the background color, or highlight color
|
||||
|
||||
" Note: Keep ctermfg for expression and op the same value
|
||||
hi expression ctermfg=Blue
|
||||
hi name ctermfg=LightGreen
|
||||
hi op ctermfg=Blue
|
||||
hi num ctermfg=Magenta
|
||||
|
||||
hi unnamed ctermfg=Magenta
|
||||
hi quote ctermfg=DarkRed
|
||||
hi numQuote ctermfg=Green
|
||||
|
||||
hi comments ctermfg=Green
|
||||
" I want the underlines, but I can't figure out how to make them work
|
||||
" Normally, you add 'term=Underline', but that doesn't quite work
|
||||
hi def link commentFields Underlined
|
||||
hi def link date Underlined
|
||||
hi colon ctermfg=Cyan
|
||||
hi commentTodo ctermfg=Black ctermbg=Yellow
|
||||
|
||||
hi fields ctermfg=Red
|
||||
hi delim ctermfg=Yellow
|
||||
|
||||
hi properties ctermfg=Red
|
||||
hi noteTag ctermfg=White ctermbg=Red
|
||||
hi notes ctermfg=White ctermbg=Red
|
||||
|
||||
"hi body ctermfg=LightBlue
|
||||
|
||||
hi norwegian ctermfg=Green
|
||||
hi russian ctermfg=Red
|
||||
|
||||
let b:current_syntax = "txt"
|
||||
|
||||
Reference in New Issue
Block a user