The symlinked directory was being blocked by the gitignore on library/. I've removed that and added my entire library directory to version control.
This commit is contained in:
parent
78ab5c5fa5
commit
6591f017ab
|
|
@ -2,7 +2,6 @@ fish_variables
|
|||
NVIMS/
|
||||
plugged/
|
||||
dotfiles/.config/tmux/serious
|
||||
library/
|
||||
tags
|
||||
node_modules
|
||||
dotfiles/.config/tmux/resurrect/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,284 @@
|
|||
" Vim syntax file
|
||||
" Language: C Additions
|
||||
" Maintainer: Mikhail Wolfson <mywolfson@gmail.com>
|
||||
" URL: http://web.mit.edu/wolfsonm
|
||||
" Last Change: 2010 Dec. 3
|
||||
" Version: 0.4
|
||||
"
|
||||
" Changelog:
|
||||
" 0.4 - updates and fixes to cDelimiter to fix break with foldmethod=syntax,
|
||||
" entirely suggested and solved by Ivan Freitas
|
||||
" <ivansichfreitas@gmail.com>
|
||||
" 0.3 - updates and fixes to cUserFunctionPointer, thanks to
|
||||
" Alexei <lxmzhv@gmail.com>
|
||||
" 0.2 - change [] to operator
|
||||
" 0.1 - initial upload, modification from vimscript#1201, Extended c.vim
|
||||
|
||||
|
||||
" Common ANSI-standard functions
|
||||
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
|
||||
syn keyword cAnsiFunction main typeof
|
||||
syn keyword cAnsiFunction open close read write lseek dup dup2
|
||||
syn keyword cAnsiFunction fcntl ioctl
|
||||
syn keyword cAnsiFunction wctrans towctrans towupper
|
||||
syn keyword cAnsiFunction towlower wctype iswctype
|
||||
syn keyword cAnsiFunction iswxdigit iswupper iswspace
|
||||
syn keyword cAnsiFunction iswpunct iswprint iswlower
|
||||
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
|
||||
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
|
||||
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
|
||||
syn keyword cAnsiFunction mbrlen mbsinit wctob
|
||||
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
|
||||
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
|
||||
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
|
||||
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
|
||||
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
|
||||
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
|
||||
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
|
||||
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
|
||||
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
|
||||
syn keyword cAnsiFunction wcstol wcstold wcstof
|
||||
syn keyword cAnsiFunction wcstod ungetwc putwchar
|
||||
syn keyword cAnsiFunction putwc getwchar getwc
|
||||
syn keyword cAnsiFunction fwide fputws fputwc
|
||||
syn keyword cAnsiFunction fgetws fgetwc wscanf
|
||||
syn keyword cAnsiFunction wprintf vwscanf vwprintf
|
||||
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
|
||||
syn keyword cAnsiFunction vfwprintf swscanf swprintf
|
||||
syn keyword cAnsiFunction fwscanf fwprintf zonetime
|
||||
syn keyword cAnsiFunction strfxtime strftime localtime
|
||||
syn keyword cAnsiFunction gmtime ctime asctime
|
||||
syn keyword cAnsiFunction time mkxtime mktime
|
||||
syn keyword cAnsiFunction difftime clock strlen
|
||||
syn keyword cAnsiFunction strerror memset strtok
|
||||
syn keyword cAnsiFunction strstr strspn strrchr
|
||||
syn keyword cAnsiFunction strpbrk strcspn strchr
|
||||
syn keyword cAnsiFunction memchr strxfrm strncmp
|
||||
syn keyword cAnsiFunction strcoll strcmp memcmp
|
||||
syn keyword cAnsiFunction strncat strcat strncpy
|
||||
syn keyword cAnsiFunction strcpy memmove memcpy
|
||||
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
|
||||
syn keyword cAnsiFunction mbtowc mblen lldiv
|
||||
syn keyword cAnsiFunction ldiv div llabs
|
||||
syn keyword cAnsiFunction labs abs qsort
|
||||
syn keyword cAnsiFunction bsearch system getenv
|
||||
syn keyword cAnsiFunction exit atexit abort
|
||||
syn keyword cAnsiFunction realloc malloc free
|
||||
syn keyword cAnsiFunction calloc srand rand
|
||||
syn keyword cAnsiFunction strtoull strtoul strtoll
|
||||
syn keyword cAnsiFunction strtol strtold strtof
|
||||
syn keyword cAnsiFunction strtod atoll atol
|
||||
syn keyword cAnsiFunction atoi atof perror
|
||||
syn keyword cAnsiFunction ferror feof clearerr
|
||||
syn keyword cAnsiFunction rewind ftell fsetpos
|
||||
syn keyword cAnsiFunction fseek fgetpos fwrite
|
||||
syn keyword cAnsiFunction fread ungetc puts
|
||||
syn keyword cAnsiFunction putchar putc gets
|
||||
syn keyword cAnsiFunction getchar getc fputs
|
||||
syn keyword cAnsiFunction fputc fgets fgetc
|
||||
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
|
||||
syn keyword cAnsiFunction vscanf vprintf vfscanf
|
||||
syn keyword cAnsiFunction vfprintf sscanf sprintf
|
||||
syn keyword cAnsiFunction snprintf scanf printf
|
||||
syn keyword cAnsiFunction fscanf fprintf setvbuf
|
||||
syn keyword cAnsiFunction setbuf freopen fopen
|
||||
syn keyword cAnsiFunction fflush fclose tmpnam
|
||||
syn keyword cAnsiFunction tmpfile rename remove
|
||||
syn keyword cAnsiFunction offsetof va_start va_end
|
||||
syn keyword cAnsiFunction va_copy va_arg raise signal
|
||||
syn keyword cAnsiFunction longjmp setjmp isunordered
|
||||
syn keyword cAnsiFunction islessgreater islessequal isless
|
||||
syn keyword cAnsiFunction isgreaterequal isgreater fmal
|
||||
syn keyword cAnsiFunction fmaf fma fminl
|
||||
syn keyword cAnsiFunction fminf fmin fmaxl
|
||||
syn keyword cAnsiFunction fmaxf fmax fdiml
|
||||
syn keyword cAnsiFunction fdimf fdim nextafterxl
|
||||
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
|
||||
syn keyword cAnsiFunction nextafterf nextafter nanl
|
||||
syn keyword cAnsiFunction nanf nan copysignl
|
||||
syn keyword cAnsiFunction copysignf copysign remquol
|
||||
syn keyword cAnsiFunction remquof remquo remainderl
|
||||
syn keyword cAnsiFunction remainderf remainder fmodl
|
||||
syn keyword cAnsiFunction fmodf fmod truncl
|
||||
syn keyword cAnsiFunction truncf trunc llroundl
|
||||
syn keyword cAnsiFunction llroundf llround lroundl
|
||||
syn keyword cAnsiFunction lroundf lround roundl
|
||||
syn keyword cAnsiFunction roundf round llrintl
|
||||
syn keyword cAnsiFunction llrintf llrint lrintl
|
||||
syn keyword cAnsiFunction lrintf lrint rintl
|
||||
syn keyword cAnsiFunction rintf rint nearbyintl
|
||||
syn keyword cAnsiFunction nearbyintf nearbyint floorl
|
||||
syn keyword cAnsiFunction floorf floor ceill
|
||||
syn keyword cAnsiFunction ceilf ceil tgammal
|
||||
syn keyword cAnsiFunction tgammaf tgamma lgammal
|
||||
syn keyword cAnsiFunction lgammaf lgamma erfcl
|
||||
syn keyword cAnsiFunction erfcf erfc erfl
|
||||
syn keyword cAnsiFunction erff erf sqrtl
|
||||
syn keyword cAnsiFunction sqrtf sqrt powl
|
||||
syn keyword cAnsiFunction powf pow hypotl
|
||||
syn keyword cAnsiFunction hypotf hypot fabsl
|
||||
syn keyword cAnsiFunction fabsf fabs cbrtl
|
||||
syn keyword cAnsiFunction cbrtf cbrt scalblnl
|
||||
syn keyword cAnsiFunction scalblnf scalbln scalbnl
|
||||
syn keyword cAnsiFunction scalbnf scalbn modfl
|
||||
syn keyword cAnsiFunction modff modf logbl
|
||||
syn keyword cAnsiFunction logbf logb log2l
|
||||
syn keyword cAnsiFunction log2f log2 log1pl
|
||||
syn keyword cAnsiFunction log1pf log1p log10l
|
||||
syn keyword cAnsiFunction log10f log10 logl
|
||||
syn keyword cAnsiFunction logf log ldexpl
|
||||
syn keyword cAnsiFunction ldexpf ldexp ilogbl
|
||||
syn keyword cAnsiFunction ilogbf ilogb frexpl
|
||||
syn keyword cAnsiFunction frexpf frexp expm1l
|
||||
syn keyword cAnsiFunction expm1f expm1 exp2l
|
||||
syn keyword cAnsiFunction exp2f exp2 expl
|
||||
syn keyword cAnsiFunction expf exp tanhl
|
||||
syn keyword cAnsiFunction tanhf tanh sinhl
|
||||
syn keyword cAnsiFunction sinhf sinh coshl
|
||||
syn keyword cAnsiFunction coshf cosh atanhl
|
||||
syn keyword cAnsiFunction atanhf atanh asinhl
|
||||
syn keyword cAnsiFunction asinhf asinh acoshl
|
||||
syn keyword cAnsiFunction acoshf acosh tanl
|
||||
syn keyword cAnsiFunction tanf tan sinl
|
||||
syn keyword cAnsiFunction sinf sin cosl
|
||||
syn keyword cAnsiFunction cosf cos atan2l
|
||||
syn keyword cAnsiFunction atan2f atan2 atanl
|
||||
syn keyword cAnsiFunction atanf atan asinl
|
||||
syn keyword cAnsiFunction asinf asin acosl
|
||||
syn keyword cAnsiFunction acosf acos signbit
|
||||
syn keyword cAnsiFunction isnormal isnan isinf
|
||||
syn keyword cAnsiFunction isfinite fpclassify localeconv
|
||||
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
|
||||
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
|
||||
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
|
||||
syn keyword cAnsiFunction fesetround fegetround fetestexcept
|
||||
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
|
||||
syn keyword cAnsiFunction feclearexcept toupper tolower
|
||||
syn keyword cAnsiFunction isxdigit isupper isspace
|
||||
syn keyword cAnsiFunction ispunct isprint islower
|
||||
syn keyword cAnsiFunction isgraph isdigit iscntrl
|
||||
syn keyword cAnsiFunction isalpha isalnum creall
|
||||
syn keyword cAnsiFunction crealf creal cprojl
|
||||
syn keyword cAnsiFunction cprojf cproj conjl
|
||||
syn keyword cAnsiFunction conjf conj cimagl
|
||||
syn keyword cAnsiFunction cimagf cimag cargl
|
||||
syn keyword cAnsiFunction cargf carg csqrtl
|
||||
syn keyword cAnsiFunction csqrtf csqrt cpowl
|
||||
syn keyword cAnsiFunction cpowf cpow cabsl
|
||||
syn keyword cAnsiFunction cabsf cabs clogl
|
||||
syn keyword cAnsiFunction clogf clog cexpl
|
||||
syn keyword cAnsiFunction cexpf cexp ctanhl
|
||||
syn keyword cAnsiFunction ctanhf ctanh csinhl
|
||||
syn keyword cAnsiFunction csinhf csinh ccoshl
|
||||
syn keyword cAnsiFunction ccoshf ccosh catanhl
|
||||
syn keyword cAnsiFunction catanhf catanh casinhl
|
||||
syn keyword cAnsiFunction casinhf casinh cacoshl
|
||||
syn keyword cAnsiFunction cacoshf cacosh ctanl
|
||||
syn keyword cAnsiFunction ctanf ctan csinl
|
||||
syn keyword cAnsiFunction csinf csin ccosl
|
||||
syn keyword cAnsiFunction ccosf ccos catanl
|
||||
syn keyword cAnsiFunction catanf catan casinl
|
||||
syn keyword cAnsiFunction casinf casin cacosl
|
||||
syn keyword cAnsiFunction cacosf cacos assert
|
||||
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
|
||||
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
|
||||
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
|
||||
|
||||
" Common ANSI-standard Names
|
||||
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
|
||||
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
|
||||
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
|
||||
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
|
||||
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
|
||||
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
|
||||
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
|
||||
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
|
||||
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
|
||||
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
|
||||
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
|
||||
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
|
||||
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
|
||||
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
|
||||
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
|
||||
|
||||
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
|
||||
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
|
||||
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
|
||||
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
|
||||
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
|
||||
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
|
||||
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
|
||||
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
|
||||
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
|
||||
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
|
||||
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
|
||||
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
|
||||
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
|
||||
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
|
||||
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
|
||||
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
|
||||
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
|
||||
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
|
||||
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
|
||||
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
|
||||
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
|
||||
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
|
||||
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
|
||||
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
|
||||
|
||||
syn keyword cAnsiName errno environ
|
||||
|
||||
syn keyword cAnsiName STDC CX_LIMITED_RANGE
|
||||
syn keyword cAnsiName STDC FENV_ACCESS
|
||||
syn keyword cAnsiName STDC FP_CONTRACT
|
||||
|
||||
syn keyword cAnsiName AF_INET SOCK_STREAM INADDR_ANY AF_INET
|
||||
syn keyword cAnsiName SOL_SOCKET SO_REUSEPORT SO_REUSEADDR
|
||||
syn keyword cAnsiName SO_RCVTIMEO IPPROTO_TCP TCP_NODELAY
|
||||
syn keyword cAnsiName SOCK_DGRAM POLLIN
|
||||
|
||||
syn keyword cAnsiName and bitor not_eq xor
|
||||
syn keyword cAnsiName and_eq compl or xor_eq
|
||||
syn keyword cAnsiName bitand not or_eq
|
||||
|
||||
hi def link cAnsiFunction cFunction
|
||||
hi def link cAnsiName cIdentifier
|
||||
|
||||
" Operators
|
||||
syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
||||
syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
||||
syn match cOperator "[.!~*&%<>^|=,+-]"
|
||||
syn match cOperator "/[^/*=]"me=e-1
|
||||
syn match cOperator "/$"
|
||||
syn match cOperator "&&\|||"
|
||||
syn match cOperator "[][]"
|
||||
|
||||
" Preprocs
|
||||
syn keyword cDefined defined contained containedin=cDefine
|
||||
hi def link cDefined cDefine
|
||||
|
||||
" Functions
|
||||
syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||
syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
|
||||
|
||||
hi def link cUserFunction cFunction
|
||||
hi def link cUserFunctionPointer cFunction
|
||||
|
||||
" Delimiters
|
||||
syn match cDelimiter "[();\\]"
|
||||
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||
syn match cBraces display "[{}]"
|
||||
|
||||
|
||||
" Booleans
|
||||
syn keyword cBoolean true false TRUE FALSE
|
||||
|
||||
|
||||
" Links
|
||||
hi def link cFunction Function
|
||||
hi def link cIdentifier Identifier
|
||||
hi def link cDelimiter Delimiter
|
||||
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||
hi def link cBraces Delimiter
|
||||
hi def link cBoolean Boolean
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,562 @@
|
|||
" Vim syntax file
|
||||
" Language: Python
|
||||
" Current Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
|
||||
" Previous Maintainer: Neil Schemenauer <nas at python dot ca>
|
||||
" URL: https://github.com/hdima/python-syntax
|
||||
" Last Change: 2015-11-01
|
||||
" Filenames: *.py
|
||||
" Version: 3.6.0
|
||||
"
|
||||
" Based on python.vim (from Vim 6.1 distribution)
|
||||
" by Neil Schemenauer <nas at python dot ca>
|
||||
"
|
||||
" Please use the following channels for reporting bugs, offering suggestions or
|
||||
" feedback:
|
||||
|
||||
" - python.vim issue tracker: https://github.com/hdima/python-syntax/issues
|
||||
" - Email: Dmitry Vasiliev (dima at hlabs.org)
|
||||
" - Send a message or follow me for updates on Twitter: `@hdima
|
||||
" <https://twitter.com/hdima>`__
|
||||
"
|
||||
" Contributors
|
||||
" ============
|
||||
"
|
||||
" List of the contributors in alphabetical order:
|
||||
"
|
||||
" Andrea Riciputi
|
||||
" Anton Butanaev
|
||||
" Antony Lee
|
||||
" Caleb Adamantine
|
||||
" David Briscoe
|
||||
" Elizabeth Myers
|
||||
" Ihor Gorobets
|
||||
" Jeroen Ruigrok van der Werven
|
||||
" John Eikenberry
|
||||
" Joongi Kim
|
||||
" Marc Weber
|
||||
" Pedro Algarvio
|
||||
" Victor Salgado
|
||||
" Will Gray
|
||||
" Yuri Habrusiev
|
||||
"
|
||||
" Options
|
||||
" =======
|
||||
"
|
||||
" :let OPTION_NAME = 1 Enable option
|
||||
" :let OPTION_NAME = 0 Disable option
|
||||
"
|
||||
"
|
||||
" Option to select Python version
|
||||
" -------------------------------
|
||||
"
|
||||
" python_version_2 Enable highlighting for Python 2
|
||||
" (Python 3 highlighting is enabled
|
||||
" by default). Can also be set as
|
||||
" a buffer (b:python_version_2)
|
||||
" variable.
|
||||
"
|
||||
" You can also use the following local to buffer commands to switch
|
||||
" between two highlighting modes:
|
||||
"
|
||||
" :Python2Syntax Switch to Python 2 highlighting
|
||||
" mode
|
||||
" :Python3Syntax Switch to Python 3 highlighting
|
||||
" mode
|
||||
"
|
||||
" Option names used by the script
|
||||
" -------------------------------
|
||||
"
|
||||
" python_highlight_builtins Highlight builtin functions and
|
||||
" objects
|
||||
" python_highlight_builtin_objs Highlight builtin objects only
|
||||
" python_highlight_builtin_funcs Highlight builtin functions only
|
||||
" python_highlight_exceptions Highlight standard exceptions
|
||||
" python_highlight_string_formatting Highlight % string formatting
|
||||
" python_highlight_string_format Highlight str.format syntax
|
||||
" python_highlight_string_templates Highlight string.Template syntax
|
||||
" python_highlight_indent_errors Highlight indentation errors
|
||||
" python_highlight_space_errors Highlight trailing spaces
|
||||
" python_highlight_doctests Highlight doc-tests
|
||||
" python_print_as_function Highlight 'print' statement as
|
||||
" function for Python 2
|
||||
" python_highlight_file_headers_as_comments
|
||||
" Highlight shebang and coding
|
||||
" headers as comments
|
||||
"
|
||||
" python_highlight_all Enable all the options above
|
||||
" NOTE: This option don't override
|
||||
" any previously set options
|
||||
"
|
||||
" python_slow_sync Can be set to 0 for slow machines
|
||||
"
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For versions greater than 6.x: Quit when a syntax file was already loaded
|
||||
|
||||
"
|
||||
" Commands
|
||||
"
|
||||
command! -buffer Python3Syntax let b:python_version_2 = 0 | let &syntax=&syntax
|
||||
|
||||
" Enable option if it's not defined
|
||||
function! s:EnableByDefault(name)
|
||||
if !exists(a:name)
|
||||
let {a:name} = 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Check if option is enabled
|
||||
function! s:Enabled(name)
|
||||
return exists(a:name) && {a:name}
|
||||
endfunction
|
||||
|
||||
" Is it Python 2 syntax?
|
||||
function! s:Python2Syntax()
|
||||
if exists("b:python_version_2")
|
||||
return b:python_version_2
|
||||
endif
|
||||
return s:Enabled("g:python_version_2")
|
||||
endfunction
|
||||
|
||||
"
|
||||
" Default options
|
||||
"
|
||||
|
||||
call s:EnableByDefault("g:python_slow_sync")
|
||||
|
||||
if s:Enabled("g:python_highlight_all")
|
||||
call s:EnableByDefault("g:python_highlight_builtins")
|
||||
if s:Enabled("g:python_highlight_builtins")
|
||||
call s:EnableByDefault("g:python_highlight_builtin_objs")
|
||||
call s:EnableByDefault("g:python_highlight_builtin_funcs")
|
||||
endif
|
||||
call s:EnableByDefault("g:python_highlight_exceptions")
|
||||
call s:EnableByDefault("g:python_highlight_string_formatting")
|
||||
call s:EnableByDefault("g:python_highlight_string_format")
|
||||
call s:EnableByDefault("g:python_highlight_string_templates")
|
||||
call s:EnableByDefault("g:python_highlight_indent_errors")
|
||||
call s:EnableByDefault("g:python_highlight_space_errors")
|
||||
call s:EnableByDefault("g:python_highlight_doctests")
|
||||
call s:EnableByDefault("g:python_print_as_function")
|
||||
endif
|
||||
|
||||
"
|
||||
" Keywords
|
||||
"
|
||||
|
||||
syn keyword pythonStatement break continue del
|
||||
syn keyword pythonStatement exec return
|
||||
syn keyword pythonStatement pass raise
|
||||
syn keyword pythonStatement global assert
|
||||
syn keyword pythonStatement lambda
|
||||
syn keyword pythonStatement with
|
||||
syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
|
||||
syn keyword pythonRepeat for while
|
||||
syn keyword pythonConditional if elif else
|
||||
" The standard pyrex.vim unconditionally removes the pythonInclude group, so
|
||||
" we provide a dummy group here to avoid crashing pyrex.vim.
|
||||
syn keyword pythonInclude import
|
||||
syn keyword pythonImport import
|
||||
syn keyword pythonException try except finally
|
||||
syn keyword pythonOperator and in is not or
|
||||
|
||||
syn match pythonStatement "\<yield\>" display
|
||||
syn match pythonImport "\<from\>" display
|
||||
|
||||
if s:Python2Syntax()
|
||||
if !s:Enabled("g:python_print_as_function")
|
||||
syn keyword pythonStatement print
|
||||
endif
|
||||
syn keyword pythonImport as
|
||||
syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained
|
||||
else
|
||||
syn keyword pythonStatement as nonlocal None
|
||||
syn match pythonStatement "\<yield\s\+from\>" display
|
||||
syn keyword pythonBoolean True False
|
||||
syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
|
||||
syn keyword pythonStatement await
|
||||
syn match pythonStatement "\<async\s\+def\>" nextgroup=pythonFunction skipwhite
|
||||
syn match pythonStatement "\<async\s\+with\>" display
|
||||
syn match pythonStatement "\<async\s\+for\>" display
|
||||
endif
|
||||
|
||||
"
|
||||
" Decorators (new in Python 2.4)
|
||||
"
|
||||
|
||||
syn match pythonDecorator "@" display nextgroup=pythonDottedName skipwhite
|
||||
if s:Python2Syntax()
|
||||
syn match pythonDottedName "[a-zA-Z_][a-zA-Z0-9_]*\%(\.[a-zA-Z_][a-zA-Z0-9_]*\)*" display contained
|
||||
else
|
||||
syn match pythonDottedName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\)*" display contained
|
||||
endif
|
||||
syn match pythonDot "\." display containedin=pythonDottedName
|
||||
|
||||
"
|
||||
" Comments
|
||||
"
|
||||
|
||||
syn match pythonComment "#.*$" display contains=pythonTodo,@Spell
|
||||
if !s:Enabled("g:python_highlight_file_headers_as_comments")
|
||||
syn match pythonRun "\%^#!.*$"
|
||||
syn match pythonCoding "\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$"
|
||||
endif
|
||||
syn keyword pythonTodo TODO FIXME XXX contained
|
||||
|
||||
"
|
||||
" Errors
|
||||
"
|
||||
|
||||
syn match pythonError "\<\d\+\D\+\>" display
|
||||
syn match pythonError "[$?]" display
|
||||
syn match pythonError "[&|]\{2,}" display
|
||||
syn match pythonError "[=]\{3,}" display
|
||||
|
||||
" Mixing spaces and tabs also may be used for pretty formatting multiline
|
||||
" statements
|
||||
if s:Enabled("g:python_highlight_indent_errors")
|
||||
syn match pythonIndentError "^\s*\%( \t\|\t \)\s*\S"me=e-1 display
|
||||
endif
|
||||
|
||||
" Trailing space errors
|
||||
if s:Enabled("g:python_highlight_space_errors")
|
||||
syn match pythonSpaceError "\s\+$" display
|
||||
endif
|
||||
|
||||
"
|
||||
" Strings
|
||||
"
|
||||
|
||||
if s:Python2Syntax()
|
||||
" Python 2 strings
|
||||
syn region pythonString start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonString start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonString start=+[bB]\="""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonString start=+[bB]\='''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
|
||||
else
|
||||
" Python 3 byte strings
|
||||
syn region pythonBytes start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell
|
||||
syn region pythonBytes start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell
|
||||
syn region pythonBytes start=+[bB]"""+ end=+"""+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonBytes start=+[bB]'''+ end=+'''+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest,pythonSpaceError,@Spell
|
||||
|
||||
syn match pythonBytesError ".\+" display contained
|
||||
syn match pythonBytesContent "[\u0000-\u00ff]\+" display contained contains=pythonBytesEscape,pythonBytesEscapeError
|
||||
endif
|
||||
|
||||
syn match pythonBytesEscape +\\[abfnrtv'"\\]+ display contained
|
||||
syn match pythonBytesEscape "\\\o\o\=\o\=" display contained
|
||||
syn match pythonBytesEscapeError "\\\o\{,2}[89]" display contained
|
||||
syn match pythonBytesEscape "\\x\x\{2}" display contained
|
||||
syn match pythonBytesEscapeError "\\x\x\=\X" display contained
|
||||
syn match pythonBytesEscape "\\$"
|
||||
|
||||
syn match pythonUniEscape "\\u\x\{4}" display contained
|
||||
syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained
|
||||
syn match pythonUniEscape "\\U\x\{8}" display contained
|
||||
syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained
|
||||
syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained
|
||||
syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained
|
||||
|
||||
if s:Python2Syntax()
|
||||
" Python 2 Unicode strings
|
||||
syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonUniString start=+[uU]"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonUniString start=+[uU]'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
|
||||
else
|
||||
" Python 3 strings
|
||||
syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
|
||||
syn region pythonString start=+"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonString start=+'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
|
||||
endif
|
||||
|
||||
if s:Python2Syntax()
|
||||
" Python 2 Unicode raw strings
|
||||
syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
|
||||
syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
|
||||
syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell
|
||||
|
||||
syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained
|
||||
syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained
|
||||
endif
|
||||
|
||||
" Python 2/3 raw strings
|
||||
if s:Python2Syntax()
|
||||
syn region pythonRawString start=+[bB]\=[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawString start=+[bB]\=[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawString start=+[bB]\=[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonRawString start=+[bB]\=[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
|
||||
else
|
||||
syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawString start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonRawString start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
|
||||
|
||||
syn region pythonRawBytes start=+[bB][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawBytes start=+[bB][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
|
||||
syn region pythonRawBytes start=+[bB][rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
|
||||
syn region pythonRawBytes start=+[bB][rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
|
||||
endif
|
||||
|
||||
syn match pythonRawEscape +\\['"]+ display transparent contained
|
||||
|
||||
if s:Enabled("g:python_highlight_string_formatting")
|
||||
" % operator string formatting
|
||||
if s:Python2Syntax()
|
||||
syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
else
|
||||
syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
|
||||
syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:Enabled("g:python_highlight_string_format")
|
||||
" str.format syntax
|
||||
if s:Python2Syntax()
|
||||
syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
else
|
||||
syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString
|
||||
syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:Enabled("g:python_highlight_string_templates")
|
||||
" string.Template format
|
||||
if s:Python2Syntax()
|
||||
syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
|
||||
else
|
||||
syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonRawString
|
||||
syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonRawString
|
||||
syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonRawString
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:Enabled("g:python_highlight_doctests")
|
||||
" DocTests
|
||||
syn region pythonDocTest start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained
|
||||
syn region pythonDocTest2 start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained
|
||||
endif
|
||||
|
||||
"
|
||||
" Numbers (ints, longs, floats, complex)
|
||||
"
|
||||
|
||||
if s:Python2Syntax()
|
||||
syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\+\x*[lL]\=\>" display
|
||||
syn match pythonOctError "\<0[oO]\=\o*\D\+\d*[lL]\=\>" display
|
||||
syn match pythonBinError "\<0[bB][01]*\D\+\d*[lL]\=\>" display
|
||||
|
||||
syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display
|
||||
syn match pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display
|
||||
syn match pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display
|
||||
|
||||
syn match pythonNumberError "\<\d\+\D[lL]\=\>" display
|
||||
syn match pythonNumber "\<\d[lL]\=\>" display
|
||||
syn match pythonNumber "\<[0-9]\d\+[lL]\=\>" display
|
||||
syn match pythonNumber "\<\d\+[lLjJ]\>" display
|
||||
|
||||
syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display
|
||||
syn match pythonBinError "\<0[bB][01]*[2-9]\d*[lL]\=\>" display
|
||||
else
|
||||
syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*\>" display
|
||||
syn match pythonOctError "\<0[oO]\=\o*\D\+\d*\>" display
|
||||
syn match pythonBinError "\<0[bB][01]*\D\+\d*\>" display
|
||||
|
||||
syn match pythonHexNumber "\<0[xX]\x\+\>" display
|
||||
syn match pythonOctNumber "\<0[oO]\o\+\>" display
|
||||
syn match pythonBinNumber "\<0[bB][01]\+\>" display
|
||||
|
||||
syn match pythonNumberError "\<\d\+\D\>" display
|
||||
syn match pythonNumberError "\<0\d\+\>" display
|
||||
syn match pythonNumber "\<\d\>" display
|
||||
syn match pythonNumber "\<[1-9]\d\+\>" display
|
||||
syn match pythonNumber "\<\d\+[jJ]\>" display
|
||||
|
||||
syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*\>" display
|
||||
syn match pythonBinError "\<0[bB][01]*[2-9]\d*\>" display
|
||||
endif
|
||||
|
||||
syn match pythonFloat "\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" display
|
||||
syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display
|
||||
syn match pythonFloat "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=" display
|
||||
|
||||
"
|
||||
" Builtin objects and types
|
||||
"
|
||||
|
||||
if s:Enabled("g:python_highlight_builtin_objs")
|
||||
if s:Python2Syntax()
|
||||
syn keyword pythonBuiltinObj None
|
||||
syn keyword pythonBoolean True False
|
||||
endif
|
||||
syn keyword pythonBuiltinObj Ellipsis NotImplemented
|
||||
syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
|
||||
endif
|
||||
|
||||
"
|
||||
" Builtin functions
|
||||
"
|
||||
|
||||
if s:Enabled("g:python_highlight_builtin_funcs")
|
||||
if s:Python2Syntax()
|
||||
syn keyword pythonBuiltinFunc apply basestring buffer callable coerce
|
||||
syn keyword pythonBuiltinFunc execfile file help intern long raw_input
|
||||
syn keyword pythonBuiltinFunc reduce reload unichr unicode xrange
|
||||
if s:Enabled("g:python_print_as_function")
|
||||
syn keyword pythonBuiltinFunc print
|
||||
endif
|
||||
else
|
||||
syn keyword pythonBuiltinFunc ascii exec memoryview print
|
||||
endif
|
||||
syn keyword pythonBuiltinFunc __import__ abs all any
|
||||
syn keyword pythonBuiltinFunc bin bool bytearray bytes
|
||||
syn keyword pythonBuiltinFunc chr classmethod cmp compile complex
|
||||
syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval
|
||||
syn keyword pythonBuiltinFunc filter float format frozenset getattr
|
||||
syn keyword pythonBuiltinFunc globals hasattr hash hex id
|
||||
syn keyword pythonBuiltinFunc input int isinstance
|
||||
syn keyword pythonBuiltinFunc issubclass iter len list locals map max
|
||||
syn keyword pythonBuiltinFunc min next object oct open ord
|
||||
syn keyword pythonBuiltinFunc pow property range
|
||||
syn keyword pythonBuiltinFunc repr reversed round set setattr
|
||||
syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple
|
||||
syn keyword pythonBuiltinFunc type vars zip
|
||||
endif
|
||||
|
||||
"
|
||||
" Builtin exceptions and warnings
|
||||
"
|
||||
|
||||
if s:Enabled("g:python_highlight_exceptions")
|
||||
if s:Python2Syntax()
|
||||
syn keyword pythonExClass StandardError
|
||||
else
|
||||
syn keyword pythonExClass BlockingIOError ChildProcessError
|
||||
syn keyword pythonExClass ConnectionError BrokenPipeError
|
||||
syn keyword pythonExClass ConnectionAbortedError ConnectionRefusedError
|
||||
syn keyword pythonExClass ConnectionResetError FileExistsError
|
||||
syn keyword pythonExClass FileNotFoundError InterruptedError
|
||||
syn keyword pythonExClass IsADirectoryError NotADirectoryError
|
||||
syn keyword pythonExClass PermissionError ProcessLookupError TimeoutError
|
||||
|
||||
syn keyword pythonExClass ResourceWarning
|
||||
endif
|
||||
syn keyword pythonExClass BaseException
|
||||
syn keyword pythonExClass Exception ArithmeticError
|
||||
syn keyword pythonExClass LookupError EnvironmentError
|
||||
|
||||
syn keyword pythonExClass AssertionError AttributeError BufferError EOFError
|
||||
syn keyword pythonExClass FloatingPointError GeneratorExit IOError
|
||||
syn keyword pythonExClass ImportError IndexError KeyError
|
||||
syn keyword pythonExClass KeyboardInterrupt MemoryError NameError
|
||||
syn keyword pythonExClass NotImplementedError OSError OverflowError
|
||||
syn keyword pythonExClass ReferenceError RuntimeError StopIteration
|
||||
syn keyword pythonExClass SyntaxError IndentationError TabError
|
||||
syn keyword pythonExClass SystemError SystemExit TypeError
|
||||
syn keyword pythonExClass UnboundLocalError UnicodeError
|
||||
syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError
|
||||
syn keyword pythonExClass UnicodeTranslateError ValueError VMSError
|
||||
syn keyword pythonExClass WindowsError ZeroDivisionError
|
||||
|
||||
syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning
|
||||
syn keyword pythonExClass PendingDepricationWarning SyntaxWarning
|
||||
syn keyword pythonExClass RuntimeWarning FutureWarning
|
||||
syn keyword pythonExClass ImportWarning UnicodeWarning
|
||||
endif
|
||||
|
||||
if s:Enabled("g:python_slow_sync")
|
||||
syn sync minlines=2000
|
||||
else
|
||||
" This is fast but code inside triple quoted strings screws it up. It
|
||||
" is impossible to fix because the only way to know if you are inside a
|
||||
" triple quoted string is to start from the beginning of the file.
|
||||
syn sync match pythonSync grouphere NONE "):$"
|
||||
syn sync maxlines=200
|
||||
endif
|
||||
|
||||
if version >= 508 || !exists("did_python_syn_inits")
|
||||
if version <= 508
|
||||
let did_python_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink pythonStatement Statement
|
||||
HiLink pythonImport Include
|
||||
HiLink pythonFunction Function
|
||||
HiLink pythonConditional Conditional
|
||||
HiLink pythonRepeat Repeat
|
||||
HiLink pythonException Exception
|
||||
HiLink pythonOperator Operator
|
||||
|
||||
HiLink pythonDecorator Define
|
||||
HiLink pythonDottedName Function
|
||||
HiLink pythonDot Normal
|
||||
|
||||
HiLink pythonComment Comment
|
||||
if !s:Enabled("g:python_highlight_file_headers_as_comments")
|
||||
HiLink pythonCoding Special
|
||||
HiLink pythonRun Special
|
||||
endif
|
||||
HiLink pythonTodo Todo
|
||||
|
||||
HiLink pythonError Error
|
||||
HiLink pythonIndentError Error
|
||||
HiLink pythonSpaceError Error
|
||||
|
||||
HiLink pythonString String
|
||||
HiLink pythonRawString String
|
||||
|
||||
HiLink pythonUniEscape Special
|
||||
HiLink pythonUniEscapeError Error
|
||||
|
||||
if s:Python2Syntax()
|
||||
HiLink pythonUniString String
|
||||
HiLink pythonUniRawString String
|
||||
HiLink pythonUniRawEscape Special
|
||||
HiLink pythonUniRawEscapeError Error
|
||||
else
|
||||
HiLink pythonBytes String
|
||||
HiLink pythonRawBytes String
|
||||
HiLink pythonBytesContent String
|
||||
HiLink pythonBytesError Error
|
||||
HiLink pythonBytesEscape Special
|
||||
HiLink pythonBytesEscapeError Error
|
||||
endif
|
||||
|
||||
HiLink pythonStrFormatting Special
|
||||
HiLink pythonStrFormat Special
|
||||
HiLink pythonStrTemplate Special
|
||||
|
||||
HiLink pythonDocTest Special
|
||||
HiLink pythonDocTest2 Special
|
||||
|
||||
HiLink pythonNumber Number
|
||||
HiLink pythonHexNumber Number
|
||||
HiLink pythonOctNumber Number
|
||||
HiLink pythonBinNumber Number
|
||||
HiLink pythonFloat Float
|
||||
HiLink pythonNumberError Error
|
||||
HiLink pythonOctError Error
|
||||
HiLink pythonHexError Error
|
||||
HiLink pythonBinError Error
|
||||
|
||||
HiLink pythonBoolean Boolean
|
||||
|
||||
HiLink pythonBuiltinObj Structure
|
||||
HiLink pythonBuiltinFunc Function
|
||||
|
||||
HiLink pythonExClass Structure
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "python"
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
" -----------------------------------------------------------------------------
|
||||
" File: gruvbox.vim
|
||||
" Description: Retro groove color scheme for Airline
|
||||
" Author: morhetz <morhetz@gmail.com>
|
||||
" Source: https://github.com/morhetz/gruvbox
|
||||
" Last Modified: 12 Aug 2017
|
||||
" -----------------------------------------------------------------------------
|
||||
|
||||
let g:airline#themes#gruvbox#palette = {}
|
||||
|
||||
function! airline#themes#gruvbox#refresh()
|
||||
|
||||
let M0 = airline#themes#get_highlight('Identifier')
|
||||
let accents_group = airline#themes#get_highlight('Special')
|
||||
let modified_group = [M0[0], '', M0[2], '', '']
|
||||
let warning_group = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
|
||||
let error_group = airline#themes#get_highlight2(['Normal', 'bg'], ['WarningMsg', 'fg'])
|
||||
|
||||
let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['StatusLineNC', 'bg'])
|
||||
let s:N2 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['Pmenu', 'bg'])
|
||||
let s:N3 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['CursorLine', 'bg'])
|
||||
let g:airline#themes#gruvbox#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
|
||||
let g:airline#themes#gruvbox#palette.normal_modified = { 'airline_c': modified_group }
|
||||
let g:airline#themes#gruvbox#palette.normal.airline_warning = warning_group
|
||||
let g:airline#themes#gruvbox#palette.normal_modified.airline_warning = warning_group
|
||||
let g:airline#themes#gruvbox#palette.normal.airline_error = error_group
|
||||
let g:airline#themes#gruvbox#palette.normal_modified.airline_error = error_group
|
||||
|
||||
let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Identifier', 'fg'])
|
||||
let s:I2 = s:N2
|
||||
let s:I3 = airline#themes#get_highlight2(['Normal', 'fg'], ['Pmenu', 'bg'])
|
||||
let g:airline#themes#gruvbox#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
|
||||
let g:airline#themes#gruvbox#palette.insert_modified = g:airline#themes#gruvbox#palette.normal_modified
|
||||
let g:airline#themes#gruvbox#palette.insert.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.insert_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.insert.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
|
||||
let g:airline#themes#gruvbox#palette.insert_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
|
||||
|
||||
let s:R1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Structure', 'fg'])
|
||||
let s:R2 = s:I2
|
||||
let s:R3 = s:I3
|
||||
let g:airline#themes#gruvbox#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
|
||||
let g:airline#themes#gruvbox#palette.replace_modified = g:airline#themes#gruvbox#palette.normal_modified
|
||||
let g:airline#themes#gruvbox#palette.replace.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.replace_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.replace.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
|
||||
let g:airline#themes#gruvbox#palette.replace_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
|
||||
|
||||
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
|
||||
let s:V2 = s:N2
|
||||
let s:V3 = airline#themes#get_highlight2(['Normal', 'bg'], ['TabLine', 'fg'])
|
||||
let g:airline#themes#gruvbox#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
|
||||
let g:airline#themes#gruvbox#palette.visual_modified = { 'airline_c': [ s:V3[0], '', s:V3[2], '', '' ] }
|
||||
let g:airline#themes#gruvbox#palette.visual.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.visual_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
|
||||
let g:airline#themes#gruvbox#palette.visual.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
|
||||
let g:airline#themes#gruvbox#palette.visual_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
|
||||
|
||||
let s:IA = airline#themes#get_highlight2(['TabLine', 'fg'], ['CursorLine', 'bg'])
|
||||
let g:airline#themes#gruvbox#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
|
||||
let g:airline#themes#gruvbox#palette.inactive_modified = { 'airline_c': modified_group }
|
||||
|
||||
let g:airline#themes#gruvbox#palette.accents = { 'red': accents_group }
|
||||
|
||||
let s:TF = airline#themes#get_highlight2(['Normal', 'bg'], ['Normal', 'bg'])
|
||||
let g:airline#themes#gruvbox#palette.tabline = {
|
||||
\ 'airline_tab': s:N2,
|
||||
\ 'airline_tabsel': s:N1,
|
||||
\ 'airline_tabtype': s:V1,
|
||||
\ 'airline_tabfill': s:TF,
|
||||
\ 'airline_tabhid': s:IA,
|
||||
\ 'airline_tabmod': s:I1
|
||||
\ }
|
||||
|
||||
endfunction
|
||||
|
||||
call airline#themes#gruvbox#refresh()
|
||||
|
||||
" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
let g:airline#themes#quantum#palette = {}
|
||||
|
||||
function! airline#themes#quantum#refresh()
|
||||
let g:airline#themes#quantum#palette.accents = {
|
||||
\ 'red': airline#themes#get_highlight('Identifier'),
|
||||
\ }
|
||||
|
||||
let s:N1 = airline#themes#get_highlight2(['CursorLine', 'bg'], ['Directory', 'fg'], 'bold')
|
||||
let s:N2 = airline#themes#get_highlight('Pmenu')
|
||||
let s:N3 = airline#themes#get_highlight('TabLine')
|
||||
let g:airline#themes#quantum#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
|
||||
|
||||
let group = airline#themes#get_highlight('Type')
|
||||
let g:airline#themes#quantum#palette.normal_modified = {
|
||||
\ 'airline_c': [ group[0], '', group[2], '', '' ]
|
||||
\ }
|
||||
|
||||
let s:I1 = airline#themes#get_highlight2(['CursorLine', 'bg'], ['MoreMsg', 'fg'], 'bold')
|
||||
let g:airline#themes#quantum#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:N3)
|
||||
let g:airline#themes#quantum#palette.insert_modified = g:airline#themes#quantum#palette.normal_modified
|
||||
|
||||
let s:R1 = airline#themes#get_highlight2(['CursorLine', 'bg'], ['Error', 'fg'], 'bold')
|
||||
let g:airline#themes#quantum#palette.replace = airline#themes#generate_color_map(s:R1, s:N2, s:N3)
|
||||
let g:airline#themes#quantum#palette.replace_modified = g:airline#themes#quantum#palette.normal_modified
|
||||
|
||||
let s:V1 = airline#themes#get_highlight2(['CursorLine', 'bg'], ['Statement', 'fg'], 'bold')
|
||||
let g:airline#themes#quantum#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:N3)
|
||||
let g:airline#themes#quantum#palette.visual_modified = g:airline#themes#quantum#palette.normal_modified
|
||||
|
||||
let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])
|
||||
let g:airline#themes#quantum#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
|
||||
let g:airline#themes#quantum#palette.inactive_modified = g:airline#themes#quantum#palette.normal_modified
|
||||
|
||||
if get(g:, 'loaded_ctrlp', 0)
|
||||
let g:airline#themes#quantum#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
|
||||
\ airline#themes#get_highlight('CursorLine'),
|
||||
\ airline#themes#get_highlight2(['Operator', 'fg'], ['Normal', 'bg']),
|
||||
\ airline#themes#get_highlight2(['Normal', 'bg'], ['Operator', 'fg'], 'bold'))
|
||||
endif
|
||||
endfun
|
||||
|
||||
call airline#themes#quantum#refresh()
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,670 @@
|
|||
" _ _ _ __
|
||||
" | |__ __ _ __| | __ _____ | |/ _|
|
||||
" | '_ \ / _` |/ _` | \ \ /\ / / _ \| | |_
|
||||
" | |_) | (_| | (_| | \ V V / (_) | | _|
|
||||
" |_.__/ \__,_|\__,_| \_/\_/ \___/|_|_|
|
||||
"
|
||||
" I am the Bad Wolf. I create myself.
|
||||
" I take the words. I scatter them in time and space.
|
||||
" A message to lead myself here.
|
||||
"
|
||||
" A Vim colorscheme pieced together by Steve Losh.
|
||||
" Available at http://stevelosh.com/projects/badwolf/
|
||||
"
|
||||
" Why? {{{
|
||||
"
|
||||
" After using Molokai for quite a long time, I started longing for
|
||||
" a replacement.
|
||||
"
|
||||
" I love Molokai's high contrast and gooey, saturated tones, but it can be
|
||||
" a little inconsistent at times.
|
||||
"
|
||||
" Also it's winter here in Rochester, so I wanted a color scheme that's a bit
|
||||
" warmer. A little less blue and a bit more red.
|
||||
"
|
||||
" And so Bad Wolf was born. I'm no designer, but designers have been scattering
|
||||
" beautiful colors through time and space long before I came along. I took
|
||||
" advantage of that and reused some of my favorites to lead me to this scheme.
|
||||
"
|
||||
" }}}
|
||||
|
||||
" Supporting code -------------------------------------------------------------
|
||||
" Preamble {{{
|
||||
|
||||
if !has("gui_running") && &t_Co != 88 && &t_Co != 256
|
||||
finish
|
||||
endif
|
||||
color=#1f1f1f
|
||||
set background=dark
|
||||
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
let g:colors_name = "badwolf"
|
||||
|
||||
if !exists("g:badwolf_html_link_underline") " {{{
|
||||
let g:badwolf_html_link_underline = 1
|
||||
endif " }}}
|
||||
|
||||
if !exists("g:badwolf_css_props_highlight") " {{{
|
||||
let g:badwolf_css_props_highlight = 0
|
||||
endif " }}}
|
||||
|
||||
" }}}
|
||||
" Palette {{{
|
||||
|
||||
let s:bwc = {}
|
||||
|
||||
" The most basic of all our colors is a slightly tweaked version of the Molokai
|
||||
" Normal text.
|
||||
let s:bwc.plain = ['f8f6f2', 15]
|
||||
|
||||
" Pure and simple.
|
||||
let s:bwc.snow = ['ffffff', 15]
|
||||
let s:bwc.coal = ['000000', 16]
|
||||
|
||||
" All of the Gravel colors are based on a brown from Clouds Midnight.
|
||||
let s:bwc.brightgravel = ['d9cec3', 252]
|
||||
let s:bwc.lightgravel = ['998f84', 245]
|
||||
let s:bwc.gravel = ['857f78', 243]
|
||||
let s:bwc.mediumgravel = ['666462', 241]
|
||||
let s:bwc.deepgravel = ['45413b', 238]
|
||||
let s:bwc.deepergravel = ['35322d', 236]
|
||||
let s:bwc.darkgravel = ['242321', 235]
|
||||
let s:bwc.blackgravel = ['1c1b1a', 233]
|
||||
let s:bwc.blackestgravel = ['141413', 232]
|
||||
|
||||
" A color sampled from a highlight in a photo of a glass of Dale's Pale Ale on
|
||||
" my desk.
|
||||
let s:bwc.dalespale = ['fade3e', 221]
|
||||
|
||||
" A beautiful tan from Tomorrow Night.
|
||||
let s:bwc.dirtyblonde = ['f4cf86', 222]
|
||||
|
||||
" Delicious, chewy red from Made of Code for the poppiest highlights.
|
||||
let s:bwc.taffy = ['ff2c4b', 196]
|
||||
|
||||
" Another chewy accent, but use sparingly!
|
||||
let s:bwc.saltwatertaffy = ['8cffba', 121]
|
||||
|
||||
" The star of the show comes straight from Made of Code.
|
||||
"
|
||||
" You should almost never use this. It should be used for things that denote
|
||||
" 'where the user is', which basically consists of:
|
||||
"
|
||||
" * The cursor
|
||||
" * A REPL prompt
|
||||
let s:bwc.tardis = ['0a9dff', 39]
|
||||
|
||||
" This one's from Mustang, not Florida!
|
||||
let s:bwc.orange = ['ffa724', 214]
|
||||
|
||||
" A limier green from Getafe.
|
||||
let s:bwc.lime = ['aeee00', 154]
|
||||
|
||||
" Rose's dress in The Idiot's Lantern.
|
||||
let s:bwc.dress = ['ff9eb8', 211]
|
||||
|
||||
" Another play on the brown from Clouds Midnight. I love that color.
|
||||
let s:bwc.toffee = ['b88853', 137]
|
||||
|
||||
" Also based on that Clouds Midnight brown.
|
||||
let s:bwc.coffee = ['c7915b', 173]
|
||||
let s:bwc.darkroast = ['88633f', 95]
|
||||
|
||||
" }}}
|
||||
" Highlighting Function {{{
|
||||
function! s:HL(group, fg, ...)
|
||||
" Arguments: group, guifg, guibg, gui, guisp
|
||||
|
||||
let histring = 'hi ' . a:group . ' '
|
||||
|
||||
if strlen(a:fg)
|
||||
if a:fg == 'fg'
|
||||
let histring .= 'guifg=fg ctermfg=fg '
|
||||
else
|
||||
let c = get(s:bwc, a:fg)
|
||||
let histring .= 'guifg=#' . c[0] . ' ctermfg=' . c[1] . ' '
|
||||
endif
|
||||
endif
|
||||
|
||||
if a:0 >= 1 && strlen(a:1)
|
||||
if a:1 == 'bg'
|
||||
let histring .= 'guibg=bg ctermbg=bg '
|
||||
else
|
||||
let c = get(s:bwc, a:1)
|
||||
let histring .= 'guibg=#' . c[0] . ' ctermbg=' . c[1] . ' '
|
||||
endif
|
||||
endif
|
||||
|
||||
if a:0 >= 2 && strlen(a:2)
|
||||
let histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '
|
||||
endif
|
||||
|
||||
if a:0 >= 3 && strlen(a:3)
|
||||
let c = get(s:bwc, a:3)
|
||||
let histring .= 'guisp=#' . c[0] . ' '
|
||||
endif
|
||||
|
||||
" echom histring
|
||||
|
||||
execute histring
|
||||
endfunction
|
||||
" }}}
|
||||
" Configuration Options {{{
|
||||
|
||||
if exists('g:badwolf_darkgutter') && g:badwolf_darkgutter
|
||||
let s:gutter = 'blackestgravel'
|
||||
else
|
||||
let s:gutter = 'blackgravel'
|
||||
endif
|
||||
|
||||
if exists('g:badwolf_tabline')
|
||||
if g:badwolf_tabline == 0
|
||||
let s:tabline = 'blackestgravel'
|
||||
elseif g:badwolf_tabline == 1
|
||||
let s:tabline = 'blackgravel'
|
||||
elseif g:badwolf_tabline == 2
|
||||
let s:tabline = 'darkgravel'
|
||||
elseif g:badwolf_tabline == 3
|
||||
let s:tabline = 'deepgravel'
|
||||
else
|
||||
let s:tabline = 'blackestgravel'
|
||||
endif
|
||||
else
|
||||
let s:tabline = 'blackgravel'
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" Actual colorscheme ----------------------------------------------------------
|
||||
" Vanilla Vim {{{
|
||||
|
||||
" General/UI {{{
|
||||
|
||||
call s:HL('Normal', 'plain', 'blackgravel')
|
||||
|
||||
call s:HL('Folded', 'mediumgravel', 'bg', 'none')
|
||||
|
||||
call s:HL('VertSplit', 'lightgravel', 'bg', 'none')
|
||||
|
||||
call s:HL('CursorLine', '', 'darkgravel', 'none')
|
||||
call s:HL('CursorColumn', '', 'darkgravel')
|
||||
call s:HL('ColorColumn', '', 'darkgravel')
|
||||
|
||||
call s:HL('TabLine', 'plain', s:tabline, 'none')
|
||||
call s:HL('TabLineFill', 'plain', s:tabline, 'none')
|
||||
call s:HL('TabLineSel', 'coal', 'tardis', 'none')
|
||||
|
||||
call s:HL('MatchParen', 'dalespale', 'darkgravel', 'bold')
|
||||
|
||||
call s:HL('NonText', 'deepgravel', 'bg')
|
||||
call s:HL('SpecialKey', 'deepgravel', 'bg')
|
||||
|
||||
call s:HL('Visual', '', 'deepgravel')
|
||||
call s:HL('VisualNOS', '', 'deepgravel')
|
||||
|
||||
call s:HL('Search', 'coal', 'dalespale', 'bold')
|
||||
call s:HL('IncSearch', 'coal', 'tardis', 'bold')
|
||||
|
||||
call s:HL('Underlined', 'fg', '', 'underline')
|
||||
|
||||
call s:HL('StatusLine', 'coal', 'tardis', 'bold')
|
||||
call s:HL('StatusLineNC', 'snow', 'deepgravel', 'bold')
|
||||
|
||||
call s:HL('Directory', 'dirtyblonde', '', 'bold')
|
||||
|
||||
call s:HL('Title', 'lime')
|
||||
|
||||
call s:HL('ErrorMsg', 'taffy', 'bg', 'bold')
|
||||
call s:HL('MoreMsg', 'dalespale', '', 'bold')
|
||||
call s:HL('ModeMsg', 'dirtyblonde', '', 'bold')
|
||||
call s:HL('Question', 'dirtyblonde', '', 'bold')
|
||||
call s:HL('WarningMsg', 'dress', '', 'bold')
|
||||
|
||||
" This is a ctags tag, not an HTML one. 'Something you can use c-] on'.
|
||||
call s:HL('Tag', '', '', 'bold')
|
||||
|
||||
" hi IndentGuides guibg=#373737
|
||||
" hi WildMenu guifg=#66D9EF guibg=#000000
|
||||
|
||||
" }}}
|
||||
" Gutter {{{
|
||||
|
||||
call s:HL('LineNr', 'mediumgravel', s:gutter)
|
||||
call s:HL('SignColumn', '', s:gutter)
|
||||
call s:HL('FoldColumn', 'mediumgravel', s:gutter)
|
||||
|
||||
" }}}
|
||||
" Cursor {{{
|
||||
|
||||
call s:HL('Cursor', 'coal', 'tardis', 'bold')
|
||||
call s:HL('vCursor', 'coal', 'tardis', 'bold')
|
||||
call s:HL('iCursor', 'coal', 'tardis', 'none')
|
||||
|
||||
" }}}
|
||||
" Syntax highlighting {{{
|
||||
|
||||
" Start with a simple base.
|
||||
call s:HL('Special', 'plain')
|
||||
|
||||
" Comments are slightly brighter than folds, to make 'headers' easier to see.
|
||||
call s:HL('Comment', 'gravel')
|
||||
call s:HL('Todo', 'snow', 'bg', 'bold')
|
||||
call s:HL('SpecialComment', 'snow', 'bg', 'bold')
|
||||
|
||||
" Strings are a nice, pale straw color. Nothing too fancy.
|
||||
call s:HL('String', 'dirtyblonde')
|
||||
|
||||
" Control flow stuff is taffy.
|
||||
call s:HL('Statement', 'taffy', '', 'bold')
|
||||
call s:HL('Keyword', 'taffy', '', 'bold')
|
||||
call s:HL('Conditional', 'taffy', '', 'bold')
|
||||
call s:HL('Operator', 'taffy', '', 'none')
|
||||
call s:HL('Label', 'taffy', '', 'none')
|
||||
call s:HL('Repeat', 'taffy', '', 'none')
|
||||
|
||||
" Functions and variable declarations are orange, because plain looks weird.
|
||||
call s:HL('Identifier', 'orange', '', 'none')
|
||||
call s:HL('Function', 'orange', '', 'none')
|
||||
|
||||
" Preprocessor stuff is lime, to make it pop.
|
||||
"
|
||||
" This includes imports in any given language, because they should usually be
|
||||
" grouped together at the beginning of a file. If they're in the middle of some
|
||||
" other code they should stand out, because something tricky is
|
||||
" probably going on.
|
||||
call s:HL('PreProc', 'lime', '', 'none')
|
||||
call s:HL('Macro', 'lime', '', 'none')
|
||||
call s:HL('Define', 'lime', '', 'none')
|
||||
call s:HL('PreCondit', 'lime', '', 'bold')
|
||||
|
||||
" Constants of all kinds are colored together.
|
||||
" I'm not really happy with the color yet...
|
||||
call s:HL('Constant', 'toffee', '', 'bold')
|
||||
call s:HL('Character', 'toffee', '', 'bold')
|
||||
call s:HL('Boolean', 'toffee', '', 'bold')
|
||||
|
||||
call s:HL('Number', 'toffee', '', 'bold')
|
||||
call s:HL('Float', 'toffee', '', 'bold')
|
||||
|
||||
" Not sure what 'special character in a constant' means, but let's make it pop.
|
||||
call s:HL('SpecialChar', 'dress', '', 'bold')
|
||||
|
||||
call s:HL('Type', 'dress', '', 'none')
|
||||
call s:HL('StorageClass', 'taffy', '', 'none')
|
||||
call s:HL('Structure', 'taffy', '', 'none')
|
||||
call s:HL('Typedef', 'taffy', '', 'bold')
|
||||
|
||||
" Make try/catch blocks stand out.
|
||||
call s:HL('Exception', 'lime', '', 'bold')
|
||||
|
||||
" Misc
|
||||
call s:HL('Error', 'snow', 'taffy', 'bold')
|
||||
call s:HL('Debug', 'snow', '', 'bold')
|
||||
call s:HL('Ignore', 'gravel', '', '')
|
||||
|
||||
" }}}
|
||||
" Completion Menu {{{
|
||||
|
||||
call s:HL('Pmenu', 'plain', 'deepergravel')
|
||||
call s:HL('PmenuSel', 'coal', 'tardis', 'bold')
|
||||
call s:HL('PmenuSbar', '', 'deepergravel')
|
||||
call s:HL('PmenuThumb', 'brightgravel')
|
||||
|
||||
" }}}
|
||||
" Diffs {{{
|
||||
|
||||
call s:HL('DiffDelete', 'coal', 'coal')
|
||||
call s:HL('DiffAdd', '', 'deepergravel')
|
||||
call s:HL('DiffChange', '', 'darkgravel')
|
||||
call s:HL('DiffText', 'snow', 'deepergravel', 'bold')
|
||||
|
||||
" }}}
|
||||
" Spelling {{{
|
||||
|
||||
if has("spell")
|
||||
call s:HL('SpellCap', 'dalespale', 'bg', 'undercurl,bold', 'dalespale')
|
||||
call s:HL('SpellBad', '', 'bg', 'undercurl', 'dalespale')
|
||||
call s:HL('SpellLocal', '', '', 'undercurl', 'dalespale')
|
||||
call s:HL('SpellRare', '', '', 'undercurl', 'dalespale')
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" }}}
|
||||
" Plugins {{{
|
||||
|
||||
" CtrlP {{{
|
||||
|
||||
" the message when no match is found
|
||||
call s:HL('CtrlPNoEntries', 'snow', 'taffy', 'bold')
|
||||
|
||||
" the matched pattern
|
||||
call s:HL('CtrlPMatch', 'orange', 'bg', 'none')
|
||||
|
||||
" the line prefix '>' in the match window
|
||||
call s:HL('CtrlPLinePre', 'deepgravel', 'bg', 'none')
|
||||
|
||||
" the prompt’s base
|
||||
call s:HL('CtrlPPrtBase', 'deepgravel', 'bg', 'none')
|
||||
|
||||
" the prompt’s text
|
||||
call s:HL('CtrlPPrtText', 'plain', 'bg', 'none')
|
||||
|
||||
" the prompt’s cursor when moving over the text
|
||||
call s:HL('CtrlPPrtCursor', 'coal', 'tardis', 'bold')
|
||||
|
||||
" 'prt' or 'win', also for 'regex'
|
||||
call s:HL('CtrlPMode1', 'coal', 'tardis', 'bold')
|
||||
|
||||
" 'file' or 'path', also for the local working dir
|
||||
call s:HL('CtrlPMode2', 'coal', 'tardis', 'bold')
|
||||
|
||||
" the scanning status
|
||||
call s:HL('CtrlPStats', 'coal', 'tardis', 'bold')
|
||||
|
||||
" TODO: CtrlP extensions.
|
||||
" CtrlPTabExtra : the part of each line that’s not matched against (Comment)
|
||||
" CtrlPqfLineCol : the line and column numbers in quickfix mode (|s:HL-Search|)
|
||||
" CtrlPUndoT : the elapsed time in undo mode (|s:HL-Directory|)
|
||||
" CtrlPUndoBr : the square brackets [] in undo mode (Comment)
|
||||
" CtrlPUndoNr : the undo number inside [] in undo mode (String)
|
||||
|
||||
" }}}
|
||||
" EasyMotion {{{
|
||||
|
||||
call s:HL('EasyMotionTarget', 'tardis', 'bg', 'bold')
|
||||
call s:HL('EasyMotionShade', 'deepgravel', 'bg')
|
||||
|
||||
" }}}
|
||||
" Interesting Words {{{
|
||||
|
||||
" These are only used if you're me or have copied the <leader>hNUM mappings
|
||||
" from my Vimrc.
|
||||
call s:HL('InterestingWord1', 'coal', 'orange')
|
||||
call s:HL('InterestingWord2', 'coal', 'lime')
|
||||
call s:HL('InterestingWord3', 'coal', 'saltwatertaffy')
|
||||
call s:HL('InterestingWord4', 'coal', 'toffee')
|
||||
call s:HL('InterestingWord5', 'coal', 'dress')
|
||||
call s:HL('InterestingWord6', 'coal', 'taffy')
|
||||
|
||||
|
||||
" }}}
|
||||
" Makegreen {{{
|
||||
|
||||
" hi GreenBar term=reverse ctermfg=white ctermbg=green guifg=coal guibg=#9edf1c
|
||||
" hi RedBar term=reverse ctermfg=white ctermbg=red guifg=white guibg=#C50048
|
||||
|
||||
" }}}
|
||||
" Rainbow Parentheses {{{
|
||||
|
||||
call s:HL('level16c', 'mediumgravel', '', 'bold')
|
||||
call s:HL('level15c', 'dalespale', '', '')
|
||||
call s:HL('level14c', 'dress', '', '')
|
||||
call s:HL('level13c', 'orange', '', '')
|
||||
call s:HL('level12c', 'tardis', '', '')
|
||||
call s:HL('level11c', 'lime', '', '')
|
||||
call s:HL('level10c', 'toffee', '', '')
|
||||
call s:HL('level9c', 'saltwatertaffy', '', '')
|
||||
call s:HL('level8c', 'coffee', '', '')
|
||||
call s:HL('level7c', 'dalespale', '', '')
|
||||
call s:HL('level6c', 'dress', '', '')
|
||||
call s:HL('level5c', 'orange', '', '')
|
||||
call s:HL('level4c', 'tardis', '', '')
|
||||
call s:HL('level3c', 'lime', '', '')
|
||||
call s:HL('level2c', 'toffee', '', '')
|
||||
call s:HL('level1c', 'saltwatertaffy', '', '')
|
||||
|
||||
" }}}
|
||||
" ShowMarks {{{
|
||||
|
||||
call s:HL('ShowMarksHLl', 'tardis', 'blackgravel')
|
||||
call s:HL('ShowMarksHLu', 'tardis', 'blackgravel')
|
||||
call s:HL('ShowMarksHLo', 'tardis', 'blackgravel')
|
||||
call s:HL('ShowMarksHLm', 'tardis', 'blackgravel')
|
||||
|
||||
" }}}
|
||||
|
||||
" }}}
|
||||
" Filetype-specific {{{
|
||||
|
||||
" Clojure {{{
|
||||
|
||||
call s:HL('clojureSpecial', 'taffy', '', '')
|
||||
call s:HL('clojureDefn', 'taffy', '', '')
|
||||
call s:HL('clojureDefMacro', 'taffy', '', '')
|
||||
call s:HL('clojureDefine', 'taffy', '', '')
|
||||
call s:HL('clojureMacro', 'taffy', '', '')
|
||||
call s:HL('clojureCond', 'taffy', '', '')
|
||||
|
||||
call s:HL('clojureKeyword', 'orange', '', 'none')
|
||||
|
||||
call s:HL('clojureFunc', 'dress', '', 'none')
|
||||
call s:HL('clojureRepeat', 'dress', '', 'none')
|
||||
|
||||
call s:HL('clojureParen0', 'lightgravel', '', 'none')
|
||||
|
||||
call s:HL('clojureAnonArg', 'snow', '', 'bold')
|
||||
|
||||
" }}}
|
||||
" Common Lisp {{{
|
||||
|
||||
call s:HL('lispFunc', 'lime', '', 'none')
|
||||
call s:HL('lispVar', 'orange', '', 'bold')
|
||||
call s:HL('lispEscapeSpecial', 'orange', '', 'none')
|
||||
|
||||
" }}}
|
||||
" CSS {{{
|
||||
|
||||
if g:badwolf_css_props_highlight
|
||||
call s:HL('cssColorProp', 'taffy', '', 'none')
|
||||
call s:HL('cssBoxProp', 'taffy', '', 'none')
|
||||
call s:HL('cssTextProp', 'taffy', '', 'none')
|
||||
call s:HL('cssRenderProp', 'taffy', '', 'none')
|
||||
call s:HL('cssGeneratedContentProp', 'taffy', '', 'none')
|
||||
else
|
||||
call s:HL('cssColorProp', 'fg', '', 'none')
|
||||
call s:HL('cssBoxProp', 'fg', '', 'none')
|
||||
call s:HL('cssTextProp', 'fg', '', 'none')
|
||||
call s:HL('cssRenderProp', 'fg', '', 'none')
|
||||
call s:HL('cssGeneratedContentProp', 'fg', '', 'none')
|
||||
end
|
||||
|
||||
call s:HL('cssValueLength', 'toffee', '', 'bold')
|
||||
call s:HL('cssColor', 'toffee', '', 'bold')
|
||||
call s:HL('cssBraces', 'lightgravel', '', 'none')
|
||||
call s:HL('cssIdentifier', 'orange', '', 'bold')
|
||||
call s:HL('cssClassName', 'orange', '', 'none')
|
||||
|
||||
" }}}
|
||||
" Diff {{{
|
||||
|
||||
call s:HL('gitDiff', 'lightgravel', '',)
|
||||
|
||||
call s:HL('diffRemoved', 'dress', '',)
|
||||
call s:HL('diffAdded', 'lime', '',)
|
||||
call s:HL('diffFile', 'coal', 'taffy', 'bold')
|
||||
call s:HL('diffNewFile', 'coal', 'taffy', 'bold')
|
||||
|
||||
call s:HL('diffLine', 'coal', 'orange', 'bold')
|
||||
call s:HL('diffSubname', 'orange', '', 'none')
|
||||
|
||||
" }}}
|
||||
" Django Templates {{{
|
||||
|
||||
call s:HL('djangoArgument', 'dirtyblonde', '',)
|
||||
call s:HL('djangoTagBlock', 'orange', '')
|
||||
call s:HL('djangoVarBlock', 'orange', '')
|
||||
" hi djangoStatement guifg=#ff3853 gui=bold
|
||||
" hi djangoVarBlock guifg=#f4cf86
|
||||
|
||||
" }}}
|
||||
" HTML {{{
|
||||
|
||||
" Punctuation
|
||||
call s:HL('htmlTag', 'darkroast', 'bg', 'none')
|
||||
call s:HL('htmlEndTag', 'darkroast', 'bg', 'none')
|
||||
|
||||
" Tag names
|
||||
call s:HL('htmlTagName', 'coffee', '', 'bold')
|
||||
call s:HL('htmlSpecialTagName', 'coffee', '', 'bold')
|
||||
call s:HL('htmlSpecialChar', 'lime', '', 'none')
|
||||
|
||||
" Attributes
|
||||
call s:HL('htmlArg', 'coffee', '', 'none')
|
||||
|
||||
" Stuff inside an <a> tag
|
||||
|
||||
if g:badwolf_html_link_underline
|
||||
call s:HL('htmlLink', 'lightgravel', '', 'underline')
|
||||
else
|
||||
call s:HL('htmlLink', 'lightgravel', '', 'none')
|
||||
endif
|
||||
|
||||
" }}}
|
||||
" Java {{{
|
||||
|
||||
call s:HL('javaClassDecl', 'taffy', '', 'bold')
|
||||
call s:HL('javaScopeDecl', 'taffy', '', 'bold')
|
||||
call s:HL('javaCommentTitle', 'gravel', '')
|
||||
call s:HL('javaDocTags', 'snow', '', 'none')
|
||||
call s:HL('javaDocParam', 'dalespale', '', '')
|
||||
|
||||
" }}}
|
||||
" LaTeX {{{
|
||||
|
||||
call s:HL('texStatement', 'tardis', '', 'none')
|
||||
call s:HL('texMathZoneX', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneA', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneB', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneC', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneD', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneE', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneV', 'orange', '', 'none')
|
||||
call s:HL('texMathZoneX', 'orange', '', 'none')
|
||||
call s:HL('texMath', 'orange', '', 'none')
|
||||
call s:HL('texMathMatcher', 'orange', '', 'none')
|
||||
call s:HL('texRefLabel', 'dirtyblonde', '', 'none')
|
||||
call s:HL('texRefZone', 'lime', '', 'none')
|
||||
call s:HL('texComment', 'darkroast', '', 'none')
|
||||
call s:HL('texDelimiter', 'orange', '', 'none')
|
||||
call s:HL('texZone', 'brightgravel', '', 'none')
|
||||
|
||||
augroup badwolf_tex
|
||||
au!
|
||||
|
||||
au BufRead,BufNewFile *.tex syn region texMathZoneV start="\\(" end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
|
||||
au BufRead,BufNewFile *.tex syn region texMathZoneX start="\$" skip="\\\\\|\\\$" end="\$\|%stopzone\>" keepend contains=@texMathZoneGroup
|
||||
augroup END
|
||||
|
||||
" }}}
|
||||
" LessCSS {{{
|
||||
|
||||
call s:HL('lessVariable', 'lime', '', 'none')
|
||||
|
||||
" }}}
|
||||
" Lispyscript {{{
|
||||
|
||||
call s:HL('lispyscriptDefMacro', 'lime', '', '')
|
||||
call s:HL('lispyscriptRepeat', 'dress', '', 'none')
|
||||
|
||||
" }}}
|
||||
" REPLs {{{
|
||||
" This isn't a specific plugin, but just useful highlight classes for anything
|
||||
" that might want to use them.
|
||||
|
||||
call s:HL('replPrompt', 'tardis', '', 'bold')
|
||||
|
||||
" }}}
|
||||
" Mail {{{
|
||||
|
||||
call s:HL('mailSubject', 'orange', '', 'bold')
|
||||
call s:HL('mailHeader', 'lightgravel', '', '')
|
||||
call s:HL('mailHeaderKey', 'lightgravel', '', '')
|
||||
call s:HL('mailHeaderEmail', 'snow', '', '')
|
||||
call s:HL('mailURL', 'toffee', '', 'underline')
|
||||
call s:HL('mailSignature', 'gravel', '', 'none')
|
||||
|
||||
call s:HL('mailQuoted1', 'gravel', '', 'none')
|
||||
call s:HL('mailQuoted2', 'dress', '', 'none')
|
||||
call s:HL('mailQuoted3', 'dirtyblonde', '', 'none')
|
||||
call s:HL('mailQuoted4', 'orange', '', 'none')
|
||||
call s:HL('mailQuoted5', 'lime', '', 'none')
|
||||
|
||||
" }}}
|
||||
" Markdown {{{
|
||||
|
||||
call s:HL('markdownHeadingRule', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownHeadingDelimiter', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownOrderedListMarker', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownListMarker', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownItalic', 'snow', '', 'bold')
|
||||
call s:HL('markdownBold', 'snow', '', 'bold')
|
||||
call s:HL('markdownH1', 'orange', '', 'bold')
|
||||
call s:HL('markdownH2', 'lime', '', 'bold')
|
||||
call s:HL('markdownH3', 'lime', '', 'none')
|
||||
call s:HL('markdownH4', 'lime', '', 'none')
|
||||
call s:HL('markdownH5', 'lime', '', 'none')
|
||||
call s:HL('markdownH6', 'lime', '', 'none')
|
||||
call s:HL('markdownLinkText', 'toffee', '', 'underline')
|
||||
call s:HL('markdownIdDeclaration', 'toffee')
|
||||
call s:HL('markdownAutomaticLink', 'toffee', '', 'bold')
|
||||
call s:HL('markdownUrl', 'toffee', '', 'bold')
|
||||
call s:HL('markdownUrldelimiter', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownLinkDelimiter', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownLinkTextDelimiter', 'lightgravel', '', 'bold')
|
||||
call s:HL('markdownCodeDelimiter', 'dirtyblonde', '', 'bold')
|
||||
call s:HL('markdownCode', 'dirtyblonde', '', 'none')
|
||||
call s:HL('markdownCodeBlock', 'dirtyblonde', '', 'none')
|
||||
|
||||
" }}}
|
||||
" MySQL {{{
|
||||
|
||||
call s:HL('mysqlSpecial', 'dress', '', 'bold')
|
||||
|
||||
" }}}
|
||||
" Python {{{
|
||||
|
||||
hi def link pythonOperator Operator
|
||||
call s:HL('pythonBuiltin', 'dress')
|
||||
call s:HL('pythonBuiltinObj', 'dress')
|
||||
call s:HL('pythonBuiltinFunc', 'dress')
|
||||
call s:HL('pythonEscape', 'dress')
|
||||
call s:HL('pythonException', 'lime', '', 'bold')
|
||||
call s:HL('pythonExceptions', 'lime', '', 'none')
|
||||
call s:HL('pythonPrecondit', 'lime', '', 'none')
|
||||
call s:HL('pythonDecorator', 'taffy', '', 'none')
|
||||
call s:HL('pythonRun', 'gravel', '', 'bold')
|
||||
call s:HL('pythonCoding', 'gravel', '', 'bold')
|
||||
|
||||
" }}}
|
||||
" SLIMV {{{
|
||||
|
||||
" Rainbow parentheses
|
||||
call s:HL('hlLevel0', 'gravel')
|
||||
call s:HL('hlLevel1', 'orange')
|
||||
call s:HL('hlLevel2', 'saltwatertaffy')
|
||||
call s:HL('hlLevel3', 'dress')
|
||||
call s:HL('hlLevel4', 'coffee')
|
||||
call s:HL('hlLevel5', 'dirtyblonde')
|
||||
call s:HL('hlLevel6', 'orange')
|
||||
call s:HL('hlLevel7', 'saltwatertaffy')
|
||||
call s:HL('hlLevel8', 'dress')
|
||||
call s:HL('hlLevel9', 'coffee')
|
||||
|
||||
" }}}
|
||||
" Vim {{{
|
||||
|
||||
call s:HL('VimCommentTitle', 'lightgravel', '', 'bold')
|
||||
|
||||
call s:HL('VimMapMod', 'dress', '', 'none')
|
||||
call s:HL('VimMapModKey', 'dress', '', 'none')
|
||||
call s:HL('VimNotation', 'dress', '', 'none')
|
||||
call s:HL('VimBracket', 'dress', '', 'none')
|
||||
|
||||
" }}}
|
||||
|
||||
" }}}
|
||||
|
||||
|
|
@ -0,0 +1,672 @@
|
|||
|
||||
set background=dark
|
||||
|
||||
hi clear
|
||||
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
let colors_name = "jellybeans"
|
||||
|
||||
if has("gui_running") || (has('termguicolors') && &termguicolors)
|
||||
let s:true_color = 1
|
||||
else
|
||||
let s:true_color = 0
|
||||
endif
|
||||
|
||||
if s:true_color || &t_Co >= 88
|
||||
let s:low_color = 0
|
||||
else
|
||||
let s:low_color = 1
|
||||
endif
|
||||
|
||||
" Configuration Variables:
|
||||
" - g:jellybeans_overrides (default = {})
|
||||
" - g:jellybeans_use_lowcolor_black (default = 0)
|
||||
" - g:jellybeans_use_gui_italics (default = 1)
|
||||
" - g:jellybeans_use_term_italics (default = 0)
|
||||
|
||||
let s:background_color = "000"
|
||||
|
||||
if exists("g:jellybeans_overrides")
|
||||
let s:overrides = g:jellybeans_overrides
|
||||
else
|
||||
let s:overrides = {}
|
||||
endif
|
||||
|
||||
" Backwards compatibility
|
||||
if exists("g:jellybeans_background_color")
|
||||
\ || exists("g:jellybeans_background_color_256")
|
||||
\ || exists("g:jellybeans_use_term_background_color")
|
||||
|
||||
let s:overrides = deepcopy(s:overrides)
|
||||
|
||||
if !has_key(s:overrides, "background")
|
||||
let s:overrides["background"] = {}
|
||||
endif
|
||||
|
||||
if exists("g:jellybeans_background_color")
|
||||
let s:overrides["background"]["guibg"] = g:jellybeans_background_color
|
||||
endif
|
||||
|
||||
if exists("g:jellybeans_background_color_256")
|
||||
let s:overrides["background"]["256ctermbg"] = g:jellybeans_background_color_256
|
||||
endif
|
||||
|
||||
if exists("g:jellybeans_use_term_background_color")
|
||||
\ && g:jellybeans_use_term_background_color
|
||||
let s:overrides["background"]["ctermbg"] = "NONE"
|
||||
let s:overrides["background"]["256ctermbg"] = "NONE"
|
||||
endif
|
||||
endif
|
||||
|
||||
if exists("g:jellybeans_use_lowcolor_black") && g:jellybeans_use_lowcolor_black
|
||||
let s:termBlack = "Black"
|
||||
else
|
||||
let s:termBlack = "Grey"
|
||||
endif
|
||||
|
||||
" When `termguicolors` is set, Vim[^1] ignores `hi Normal guibg=NONE`
|
||||
" after Normal's `guibg` is already set to a color. See:
|
||||
"
|
||||
" - https://github.com/vim/vim/issues/981
|
||||
" - https://github.com/nanotech/jellybeans.vim/issues/64
|
||||
"
|
||||
" To work around this, ensure we don't set the default background
|
||||
" color before an override changes it to `NONE` by ensuring that the
|
||||
" background color isn't set to a value different from its override.
|
||||
"
|
||||
" [^1]: Tested on 8.0.567. Does not apply to Neovim.
|
||||
"
|
||||
if has_key(s:overrides, "background") && has_key(s:overrides["background"], "guibg")
|
||||
let s:background_color = s:overrides["background"]["guibg"]
|
||||
endif
|
||||
|
||||
" Color approximation functions by Henry So, Jr. and David Liang {{{
|
||||
" Added to jellybeans.vim by Daniel Herbert
|
||||
|
||||
if &t_Co == 88
|
||||
|
||||
" returns an approximate grey index for the given grey level
|
||||
fun! s:grey_number(x)
|
||||
if a:x < 23
|
||||
return 0
|
||||
elseif a:x < 69
|
||||
return 1
|
||||
elseif a:x < 103
|
||||
return 2
|
||||
elseif a:x < 127
|
||||
return 3
|
||||
elseif a:x < 150
|
||||
return 4
|
||||
elseif a:x < 173
|
||||
return 5
|
||||
elseif a:x < 196
|
||||
return 6
|
||||
elseif a:x < 219
|
||||
return 7
|
||||
elseif a:x < 243
|
||||
return 8
|
||||
else
|
||||
return 9
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the actual grey level represented by the grey index
|
||||
fun! s:grey_level(n)
|
||||
if a:n == 0
|
||||
return 0
|
||||
elseif a:n == 1
|
||||
return 46
|
||||
elseif a:n == 2
|
||||
return 92
|
||||
elseif a:n == 3
|
||||
return 115
|
||||
elseif a:n == 4
|
||||
return 139
|
||||
elseif a:n == 5
|
||||
return 162
|
||||
elseif a:n == 6
|
||||
return 185
|
||||
elseif a:n == 7
|
||||
return 208
|
||||
elseif a:n == 8
|
||||
return 231
|
||||
else
|
||||
return 255
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the palette index for the given grey index
|
||||
fun! s:grey_color(n)
|
||||
if a:n == 0
|
||||
return 16
|
||||
elseif a:n == 9
|
||||
return 79
|
||||
else
|
||||
return 79 + a:n
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns an approximate color index for the given color level
|
||||
fun! s:rgb_number(x)
|
||||
if a:x < 69
|
||||
return 0
|
||||
elseif a:x < 172
|
||||
return 1
|
||||
elseif a:x < 230
|
||||
return 2
|
||||
else
|
||||
return 3
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the actual color level for the given color index
|
||||
fun! s:rgb_level(n)
|
||||
if a:n == 0
|
||||
return 0
|
||||
elseif a:n == 1
|
||||
return 139
|
||||
elseif a:n == 2
|
||||
return 205
|
||||
else
|
||||
return 255
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the palette index for the given R/G/B color indices
|
||||
fun! s:rgb_color(x, y, z)
|
||||
return 16 + (a:x * 16) + (a:y * 4) + a:z
|
||||
endfun
|
||||
|
||||
else " assuming &t_Co == 256
|
||||
|
||||
" returns an approximate grey index for the given grey level
|
||||
fun! s:grey_number(x)
|
||||
if a:x < 14
|
||||
return 0
|
||||
else
|
||||
let l:n = (a:x - 8) / 10
|
||||
let l:m = (a:x - 8) % 10
|
||||
if l:m < 5
|
||||
return l:n
|
||||
else
|
||||
return l:n + 1
|
||||
endif
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the actual grey level represented by the grey index
|
||||
fun! s:grey_level(n)
|
||||
if a:n == 0
|
||||
return 0
|
||||
else
|
||||
return 8 + (a:n * 10)
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the palette index for the given grey index
|
||||
fun! s:grey_color(n)
|
||||
if a:n == 0
|
||||
return 16
|
||||
elseif a:n == 25
|
||||
return 231
|
||||
else
|
||||
return 231 + a:n
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns an approximate color index for the given color level
|
||||
fun! s:rgb_number(x)
|
||||
if a:x < 75
|
||||
return 0
|
||||
else
|
||||
let l:n = (a:x - 55) / 40
|
||||
let l:m = (a:x - 55) % 40
|
||||
if l:m < 20
|
||||
return l:n
|
||||
else
|
||||
return l:n + 1
|
||||
endif
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the actual color level for the given color index
|
||||
fun! s:rgb_level(n)
|
||||
if a:n == 0
|
||||
return 0
|
||||
else
|
||||
return 55 + (a:n * 40)
|
||||
endif
|
||||
endfun
|
||||
|
||||
" returns the palette index for the given R/G/B color indices
|
||||
fun! s:rgb_color(x, y, z)
|
||||
return 16 + (a:x * 36) + (a:y * 6) + a:z
|
||||
endfun
|
||||
|
||||
endif
|
||||
|
||||
" returns the palette index to approximate the given R/G/B color levels
|
||||
fun! s:color(r, g, b)
|
||||
" map greys directly (see xterm's 256colres.pl)
|
||||
if &t_Co == 256 && a:r == a:g && a:g == a:b && a:r > 3 && a:r < 243
|
||||
return (a:r - 8) / 10 + 232
|
||||
endif
|
||||
|
||||
" get the closest grey
|
||||
let l:gx = s:grey_number(a:r)
|
||||
let l:gy = s:grey_number(a:g)
|
||||
let l:gz = s:grey_number(a:b)
|
||||
|
||||
" get the closest color
|
||||
let l:x = s:rgb_number(a:r)
|
||||
let l:y = s:rgb_number(a:g)
|
||||
let l:z = s:rgb_number(a:b)
|
||||
|
||||
if l:gx == l:gy && l:gy == l:gz
|
||||
" there are two possibilities
|
||||
let l:dgr = s:grey_level(l:gx) - a:r
|
||||
let l:dgg = s:grey_level(l:gy) - a:g
|
||||
let l:dgb = s:grey_level(l:gz) - a:b
|
||||
let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
|
||||
let l:dr = s:rgb_level(l:gx) - a:r
|
||||
let l:dg = s:rgb_level(l:gy) - a:g
|
||||
let l:db = s:rgb_level(l:gz) - a:b
|
||||
let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
|
||||
if l:dgrey < l:drgb
|
||||
" use the grey
|
||||
return s:grey_color(l:gx)
|
||||
else
|
||||
" use the color
|
||||
return s:rgb_color(l:x, l:y, l:z)
|
||||
endif
|
||||
else
|
||||
" only one possibility
|
||||
return s:rgb_color(l:x, l:y, l:z)
|
||||
endif
|
||||
endfun
|
||||
|
||||
fun! s:is_empty_or_none(str)
|
||||
return empty(a:str) || a:str ==? "NONE"
|
||||
endfun
|
||||
|
||||
" returns the palette index to approximate the 'rrggbb' hex string
|
||||
fun! s:rgb(rgb)
|
||||
if s:is_empty_or_none(a:rgb)
|
||||
return "NONE"
|
||||
endif
|
||||
let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
|
||||
let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
|
||||
let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
|
||||
return s:color(l:r, l:g, l:b)
|
||||
endfun
|
||||
|
||||
fun! s:prefix_highlight_value_with(prefix, color)
|
||||
if s:is_empty_or_none(a:color)
|
||||
return "NONE"
|
||||
else
|
||||
return a:prefix . a:color
|
||||
endif
|
||||
endfun
|
||||
|
||||
fun! s:remove_italic_attr(attr)
|
||||
let l:attr = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",")
|
||||
if empty(l:attr)
|
||||
let l:attr = "NONE"
|
||||
endif
|
||||
return l:attr
|
||||
endfun
|
||||
|
||||
" sets the highlighting for the given group
|
||||
fun! s:X(group, fg, bg, attr, lcfg, lcbg)
|
||||
if s:low_color
|
||||
let l:cmd = "hi ".a:group.
|
||||
\ " ctermfg=".s:prefix_highlight_value_with("", a:lcfg).
|
||||
\ " ctermbg=".s:prefix_highlight_value_with("", a:lcbg)
|
||||
else
|
||||
let l:cmd = "hi ".a:group.
|
||||
\ " guifg=".s:prefix_highlight_value_with("#", a:fg).
|
||||
\ " guibg=".s:prefix_highlight_value_with("#", a:bg)
|
||||
if !s:true_color
|
||||
let l:cmd = l:cmd.
|
||||
\ " ctermfg=".s:rgb(a:fg).
|
||||
\ " ctermbg=".s:rgb(a:bg)
|
||||
endif
|
||||
endif
|
||||
|
||||
let l:attr = s:prefix_highlight_value_with("", a:attr)
|
||||
|
||||
if exists("g:jellybeans_use_term_italics") && g:jellybeans_use_term_italics
|
||||
let l:cterm_attr = l:attr
|
||||
else
|
||||
let l:cterm_attr = s:remove_italic_attr(l:attr)
|
||||
endif
|
||||
|
||||
if !exists("g:jellybeans_use_gui_italics") || g:jellybeans_use_gui_italics
|
||||
let l:gui_attr = l:attr
|
||||
else
|
||||
let l:gui_attr = s:remove_italic_attr(l:attr)
|
||||
endif
|
||||
|
||||
let l:cmd = l:cmd." gui=".l:gui_attr." cterm=".l:cterm_attr
|
||||
exec l:cmd
|
||||
endfun
|
||||
" }}}
|
||||
|
||||
call s:X("Normal","e8e8d3",s:background_color,"","White","")
|
||||
set background=dark
|
||||
|
||||
call s:X("CursorLine","","1c1c1c","","",s:termBlack)
|
||||
call s:X("CursorColumn","","1c1c1c","","",s:termBlack)
|
||||
|
||||
" Some of Terminal.app's default themes have a cursor color
|
||||
" too close to Jellybeans' preferred MatchParen background
|
||||
" color to be easily distinguishable. Other terminals tend
|
||||
" to use a brighter cursor color.
|
||||
"
|
||||
" Use a more distinct color in Terminal.app, and also in
|
||||
" low-color terminals if the preferred background color is
|
||||
" not available.
|
||||
if !has('gui_running') && $TERM_PROGRAM == "Apple_Terminal"
|
||||
let s:matchParenGuiFg = "dd0093"
|
||||
let s:matchParenGuiBg = "000000"
|
||||
else
|
||||
let s:matchParenGuiFg = "ffffff"
|
||||
let s:matchParenGuiBg = "556779"
|
||||
endif
|
||||
if s:termBlack != "Black"
|
||||
let s:matchParenTermFg = "Magenta"
|
||||
let s:matchParenTermBg = ""
|
||||
else
|
||||
let s:matchParenTermFg = ""
|
||||
let s:matchParenTermBg = s:termBlack
|
||||
endif
|
||||
call s:X("MatchParen",s:matchParenGuiFg,s:matchParenGuiBg,"bold",
|
||||
\ s:matchParenTermFg,s:matchParenTermBg)
|
||||
|
||||
call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack)
|
||||
call s:X("TabLineFill","9098a0","","","",s:termBlack)
|
||||
call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White")
|
||||
|
||||
" Auto-completion
|
||||
call s:X("Pmenu","ffffff","606060","","White",s:termBlack)
|
||||
call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White")
|
||||
|
||||
call s:X("Visual","","404040","","",s:termBlack)
|
||||
call s:X("Cursor",s:background_color,"b0d0f0","","","")
|
||||
|
||||
call s:X("LineNr","605958",s:background_color,"NONE",s:termBlack,"")
|
||||
call s:X("CursorLineNr","ccc5c4","","NONE","White","")
|
||||
call s:X("Comment","888888","","italic","Grey","")
|
||||
call s:X("Todo","c7c7c7","","bold","White",s:termBlack)
|
||||
|
||||
call s:X("StatusLine","000000","dddddd","italic","","White")
|
||||
call s:X("StatusLineNC","ffffff","403c41","italic","White","Black")
|
||||
call s:X("VertSplit","777777","403c41","",s:termBlack,s:termBlack)
|
||||
call s:X("WildMenu","f0a0c0","302028","","Magenta","")
|
||||
|
||||
call s:X("Folded","a0a8b0","384048","italic",s:termBlack,"")
|
||||
call s:X("FoldColumn","535D66","1f1f1f","","",s:termBlack)
|
||||
call s:X("SignColumn","777777","333333","","",s:termBlack)
|
||||
call s:X("ColorColumn","","000000","","",s:termBlack)
|
||||
|
||||
call s:X("Title","70b950","","bold","Green","")
|
||||
|
||||
call s:X("Constant","cf6a4c","","","Red","")
|
||||
call s:X("Special","799d6a","","","Green","")
|
||||
call s:X("Delimiter","668799","","","Grey","")
|
||||
|
||||
call s:X("String","99ad6a","","","Green","")
|
||||
call s:X("StringDelimiter","556633","","","DarkGreen","")
|
||||
|
||||
call s:X("Identifier","c6b6ee","","","LightCyan","")
|
||||
call s:X("Structure","8fbfdc","","","LightCyan","")
|
||||
call s:X("Function","fad07a","","","Yellow","")
|
||||
call s:X("Statement","8197bf","","","DarkBlue","")
|
||||
call s:X("PreProc","8fbfdc","","","LightBlue","")
|
||||
|
||||
hi! link Operator Structure
|
||||
hi! link Conceal Operator
|
||||
|
||||
call s:X("Type","ffb964","","","Yellow","")
|
||||
call s:X("NonText","606060",s:background_color,"",s:termBlack,"")
|
||||
|
||||
call s:X("SpecialKey","444444","1c1c1c","",s:termBlack,"")
|
||||
|
||||
call s:X("Search","f0a0c0","302028","underline","Magenta","")
|
||||
|
||||
call s:X("Directory","dad085","","","Yellow","")
|
||||
call s:X("ErrorMsg","","902020","","","DarkRed")
|
||||
hi! link Error ErrorMsg
|
||||
hi! link MoreMsg Special
|
||||
call s:X("Question","65C254","","","Green","")
|
||||
|
||||
|
||||
" Spell Checking
|
||||
|
||||
call s:X("SpellBad","","902020","underline","","DarkRed")
|
||||
call s:X("SpellCap","","0000df","underline","","Blue")
|
||||
call s:X("SpellRare","","540063","underline","","DarkMagenta")
|
||||
call s:X("SpellLocal","","2D7067","underline","","Green")
|
||||
|
||||
" Diff
|
||||
|
||||
hi! link diffRemoved Constant
|
||||
hi! link diffAdded String
|
||||
|
||||
" VimDiff
|
||||
|
||||
call s:X("DiffAdd","D2EBBE","437019","","White","DarkGreen")
|
||||
call s:X("DiffDelete","40000A","700009","","DarkRed","DarkRed")
|
||||
call s:X("DiffChange","","2B5B77","","White","DarkBlue")
|
||||
call s:X("DiffText","8fbfdc","000000","reverse","Yellow","")
|
||||
|
||||
" PHP
|
||||
|
||||
hi! link phpFunctions Function
|
||||
call s:X("StorageClass","c59f6f","","","Red","")
|
||||
hi! link phpSuperglobal Identifier
|
||||
hi! link phpQuoteSingle StringDelimiter
|
||||
hi! link phpQuoteDouble StringDelimiter
|
||||
hi! link phpBoolean Constant
|
||||
hi! link phpNull Constant
|
||||
hi! link phpArrayPair Operator
|
||||
hi! link phpOperator Normal
|
||||
hi! link phpRelation Normal
|
||||
hi! link phpVarSelector Identifier
|
||||
|
||||
" Python
|
||||
|
||||
hi! link pythonOperator Statement
|
||||
|
||||
" Ruby
|
||||
|
||||
hi! link rubySharpBang Comment
|
||||
call s:X("rubyClass","447799","","","DarkBlue","")
|
||||
call s:X("rubyIdentifier","c6b6fe","","","Cyan","")
|
||||
hi! link rubyConstant Type
|
||||
hi! link rubyFunction Function
|
||||
|
||||
call s:X("rubyInstanceVariable","c6b6fe","","","Cyan","")
|
||||
call s:X("rubySymbol","7697d6","","","Blue","")
|
||||
hi! link rubyGlobalVariable rubyInstanceVariable
|
||||
hi! link rubyModule rubyClass
|
||||
call s:X("rubyControl","7597c6","","","Blue","")
|
||||
|
||||
hi! link rubyString String
|
||||
hi! link rubyStringDelimiter StringDelimiter
|
||||
hi! link rubyInterpolationDelimiter Identifier
|
||||
|
||||
call s:X("rubyRegexpDelimiter","540063","","","Magenta","")
|
||||
call s:X("rubyRegexp","dd0093","","","DarkMagenta","")
|
||||
call s:X("rubyRegexpSpecial","a40073","","","Magenta","")
|
||||
|
||||
call s:X("rubyPredefinedIdentifier","de5577","","","Red","")
|
||||
|
||||
" Erlang
|
||||
|
||||
hi! link erlangAtom rubySymbol
|
||||
hi! link erlangBIF rubyPredefinedIdentifier
|
||||
hi! link erlangFunction rubyPredefinedIdentifier
|
||||
hi! link erlangDirective Statement
|
||||
hi! link erlangNode Identifier
|
||||
|
||||
" Elixir
|
||||
|
||||
hi! link elixirAtom rubySymbol
|
||||
|
||||
|
||||
" JavaScript
|
||||
|
||||
hi! link javaScriptValue Constant
|
||||
hi! link javaScriptRegexpString rubyRegexp
|
||||
hi! link javaScriptTemplateVar StringDelim
|
||||
hi! link javaScriptTemplateDelim Identifier
|
||||
hi! link javaScriptTemplateString String
|
||||
|
||||
" CoffeeScript
|
||||
|
||||
hi! link coffeeRegExp javaScriptRegexpString
|
||||
|
||||
" Lua
|
||||
|
||||
hi! link luaOperator Conditional
|
||||
|
||||
" C
|
||||
|
||||
hi! link cFormat Identifier
|
||||
hi! link cOperator Constant
|
||||
|
||||
" Objective-C/Cocoa
|
||||
|
||||
hi! link objcClass Type
|
||||
hi! link cocoaClass objcClass
|
||||
hi! link objcSubclass objcClass
|
||||
hi! link objcSuperclass objcClass
|
||||
hi! link objcDirective rubyClass
|
||||
hi! link objcStatement Constant
|
||||
hi! link cocoaFunction Function
|
||||
hi! link objcMethodName Identifier
|
||||
hi! link objcMethodArg Normal
|
||||
hi! link objcMessageName Identifier
|
||||
|
||||
" Vimscript
|
||||
|
||||
hi! link vimOper Normal
|
||||
|
||||
" HTML
|
||||
|
||||
hi! link htmlTag Statement
|
||||
hi! link htmlEndTag htmlTag
|
||||
hi! link htmlTagName htmlTag
|
||||
|
||||
" XML
|
||||
|
||||
hi! link xmlTag Statement
|
||||
hi! link xmlEndTag xmlTag
|
||||
hi! link xmlTagName xmlTag
|
||||
hi! link xmlEqual xmlTag
|
||||
hi! link xmlEntity Special
|
||||
hi! link xmlEntityPunct xmlEntity
|
||||
hi! link xmlDocTypeDecl PreProc
|
||||
hi! link xmlDocTypeKeyword PreProc
|
||||
hi! link xmlProcessingDelim xmlAttrib
|
||||
|
||||
" Debugger.vim
|
||||
|
||||
call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue")
|
||||
call s:X("DbgBreakPt","","4F0037","","","DarkMagenta")
|
||||
|
||||
" vim-indent-guides
|
||||
|
||||
if !exists("g:indent_guides_auto_colors")
|
||||
let g:indent_guides_auto_colors = 0
|
||||
endif
|
||||
call s:X("IndentGuidesOdd","","232323","","","")
|
||||
call s:X("IndentGuidesEven","","1b1b1b","","","")
|
||||
|
||||
" Plugins, etc.
|
||||
|
||||
hi! link TagListFileName Directory
|
||||
call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green")
|
||||
|
||||
" Manual overrides for 256-color terminals. Dark colors auto-map badly.
|
||||
if !s:low_color
|
||||
hi StatusLineNC ctermbg=235
|
||||
hi Folded ctermbg=236
|
||||
hi DiffText ctermfg=81
|
||||
hi DbgBreakPt ctermbg=53
|
||||
hi IndentGuidesOdd ctermbg=235
|
||||
hi IndentGuidesEven ctermbg=234
|
||||
endif
|
||||
|
||||
if !empty("s:overrides")
|
||||
fun! s:current_attr(group)
|
||||
let l:synid = synIDtrans(hlID(a:group))
|
||||
let l:attrs = []
|
||||
for l:attr in ["bold", "italic", "reverse", "standout", "underline", "undercurl"]
|
||||
if synIDattr(l:synid, l:attr, "gui") == 1
|
||||
call add(l:attrs, l:attr)
|
||||
endif
|
||||
endfor
|
||||
return join(l:attrs, ",")
|
||||
endfun
|
||||
fun! s:current_color(group, what, mode)
|
||||
let l:color = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode)
|
||||
if l:color == -1
|
||||
return ""
|
||||
else
|
||||
return substitute(l:color, "^#", "", "")
|
||||
endif
|
||||
endfun
|
||||
fun! s:load_color_def(group, def)
|
||||
call s:X(a:group, get(a:def, "guifg", s:current_color(a:group, "fg", "gui")),
|
||||
\ get(a:def, "guibg", s:current_color(a:group, "bg", "gui")),
|
||||
\ get(a:def, "attr", s:current_attr(a:group)),
|
||||
\ get(a:def, "ctermfg", s:current_color(a:group, "fg", "cterm")),
|
||||
\ get(a:def, "ctermbg", s:current_color(a:group, "bg", "cterm")))
|
||||
if !s:low_color
|
||||
for l:prop in ["ctermfg", "ctermbg"]
|
||||
let l:override_key = "256".l:prop
|
||||
if has_key(a:def, l:override_key)
|
||||
exec "hi ".a:group." ".l:prop."=".a:def[l:override_key]
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
endfun
|
||||
fun! s:load_colors(defs)
|
||||
for [l:group, l:def] in items(a:defs)
|
||||
if l:group == "background"
|
||||
call s:load_color_def("LineNr", l:def)
|
||||
call s:load_color_def("NonText", l:def)
|
||||
call s:load_color_def("Normal", l:def)
|
||||
else
|
||||
call s:load_color_def(l:group, l:def)
|
||||
endif
|
||||
unlet l:group
|
||||
unlet l:def
|
||||
endfor
|
||||
endfun
|
||||
call s:load_colors(s:overrides)
|
||||
delf s:load_colors
|
||||
delf s:load_color_def
|
||||
delf s:current_color
|
||||
delf s:current_attr
|
||||
endif
|
||||
|
||||
" delete functions {{{
|
||||
delf s:X
|
||||
delf s:remove_italic_attr
|
||||
delf s:prefix_highlight_value_with
|
||||
delf s:rgb
|
||||
delf s:is_empty_or_none
|
||||
delf s:color
|
||||
delf s:rgb_color
|
||||
delf s:rgb_level
|
||||
delf s:rgb_number
|
||||
delf s:grey_color
|
||||
delf s:grey_level
|
||||
delf s:grey_number
|
||||
" }}}
|
||||
|
|
@ -0,0 +1,261 @@
|
|||
" Quantum - A 24-bit Material color scheme for Vim
|
||||
" Author: Brandon Siders
|
||||
" License: MIT
|
||||
|
||||
highlight clear
|
||||
|
||||
if exists('syntax_on')
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
set background=dark
|
||||
let g:colors_name = 'quantum'
|
||||
|
||||
let g:quantum_italics = get(g:, 'quantum_italics', 0)
|
||||
let g:quantum_black = get(g:, 'quantum_black', 0)
|
||||
|
||||
" Color Palette
|
||||
let s:gray1 = g:quantum_black ? '#000000' : '#000'
|
||||
let s:gray2 = g:quantum_black ? '#292929' : '#2c3a41'
|
||||
let s:gray3 = g:quantum_black ? '#474646' : '#425762'
|
||||
let s:gray4 = g:quantum_black ? '#6a6c6c' : '#658494'
|
||||
let s:gray5 = g:quantum_black ? '#b7bdc0' : '#aebbc5'
|
||||
let s:red = '#dd7186'
|
||||
let s:green = '#87bb7c'
|
||||
let s:yellow = '#d5b875'
|
||||
let s:blue = '#70ace5'
|
||||
let s:purple = '#a48add'
|
||||
let s:cyan = '#69c5ce'
|
||||
let s:orange = '#d7956e'
|
||||
let s:indigo = '#7681de'
|
||||
|
||||
function! s:HL(group, fg, bg, attr)
|
||||
let l:attr = a:attr
|
||||
if !g:quantum_italics && l:attr ==# 'italic'
|
||||
let l:attr = 'none'
|
||||
endif
|
||||
|
||||
if !empty(a:fg)
|
||||
exec 'hi ' . a:group . ' guifg=' . a:fg
|
||||
endif
|
||||
if !empty(a:bg)
|
||||
exec 'hi ' . a:group . ' guibg=' . a:bg
|
||||
endif
|
||||
if !empty(a:attr)
|
||||
exec 'hi ' . a:group . ' gui=' . l:attr . ' cterm=' . l:attr
|
||||
endif
|
||||
endfun
|
||||
|
||||
" Vim Editor
|
||||
call s:HL('ColorColumn', '', s:gray2, '')
|
||||
call s:HL('Cursor', s:gray2, s:gray5, '')
|
||||
call s:HL('CursorColumn', '', s:gray2, '')
|
||||
call s:HL('CursorLine', '', s:gray2, 'none')
|
||||
call s:HL('CursorLineNr', s:cyan, s:gray2, 'none')
|
||||
call s:HL('Directory', s:blue, '', '')
|
||||
call s:HL('DiffAdd', s:green, s:gray2, 'none')
|
||||
call s:HL('DiffChange', s:yellow, s:gray2, 'none')
|
||||
call s:HL('DiffDelete', s:red, s:gray2, 'none')
|
||||
call s:HL('DiffText', s:blue, s:gray2, 'none')
|
||||
call s:HL('ErrorMsg', s:red, s:gray1, 'bold')
|
||||
call s:HL('FoldColumn', s:gray4, s:gray1, '')
|
||||
call s:HL('Folded', s:gray3, s:gray1, '')
|
||||
call s:HL('IncSearch', s:gray1, 's:gray5', '')
|
||||
call s:HL('LineNr', s:gray3, '', '')
|
||||
call s:HL('MatchParen', s:gray4, s:cyan, 'bold')
|
||||
call s:HL('ModeMsg', s:green, '', '')
|
||||
call s:HL('MoreMsg', s:green, '', '')
|
||||
call s:HL('NonText', s:gray4, '', 'none')
|
||||
call s:HL('Normal', s:gray5, s:gray1, 'none')
|
||||
call s:HL('Pmenu', s:gray5, s:gray3, '')
|
||||
call s:HL('PmenuSbar', '', s:gray2, '')
|
||||
call s:HL('PmenuSel', s:gray2, s:cyan, '')
|
||||
call s:HL('PmenuThumb', '', s:gray4, '')
|
||||
call s:HL('Question', s:blue, '', 'none')
|
||||
call s:HL('Search', s:yellow, s:gray1, '')
|
||||
call s:HL('SignColumn', s:gray5, s:gray1, '')
|
||||
call s:HL('SpecialKey', s:gray4, '', '')
|
||||
call s:HL('SpellCap', s:blue, s:gray2, 'undercurl')
|
||||
call s:HL('SpellBad', s:red, s:gray2, 'undercurl')
|
||||
call s:HL('StatusLine', s:gray5, s:gray3, 'none')
|
||||
call s:HL('StatusLineNC', s:gray2, s:gray4, '')
|
||||
call s:HL('TabLine', s:gray4, s:gray2, 'none')
|
||||
call s:HL('TabLineFill', s:gray4, s:gray2, 'none')
|
||||
call s:HL('TabLineSel', s:yellow, s:gray3, 'none')
|
||||
call s:HL('Title', s:green, '', 'none')
|
||||
call s:HL('VertSplit', s:gray4, s:gray1, 'none')
|
||||
call s:HL('Visual', s:gray5, s:gray3, '')
|
||||
call s:HL('WarningMsg', s:red, '', '')
|
||||
call s:HL('WildMenu', s:gray2, s:cyan, '')
|
||||
|
||||
" Standard Syntax
|
||||
call s:HL('Comment', s:gray4, '', 'italic')
|
||||
call s:HL('Constant', s:orange, '', '')
|
||||
call s:HL('String', s:green, '', '')
|
||||
call s:HL('Character', s:green, '', '')
|
||||
call s:HL('Identifier', s:red, '', 'none')
|
||||
call s:HL('Function', s:blue, '', '')
|
||||
call s:HL('Statement', s:purple, '', 'none')
|
||||
call s:HL('Operator', s:cyan, '', '')
|
||||
call s:HL('PreProc', s:cyan, '', '')
|
||||
call s:HL('Include', s:blue, '', '')
|
||||
call s:HL('Define', s:purple, '', 'none')
|
||||
call s:HL('Macro', s:purple, '', '')
|
||||
call s:HL('Type', s:yellow, '', 'none')
|
||||
call s:HL('Structure', s:cyan, '', '')
|
||||
call s:HL('Special', s:indigo, '', '')
|
||||
call s:HL('Underlined', s:blue, '', 'none')
|
||||
call s:HL('Error', s:red, s:gray1, 'bold')
|
||||
call s:HL('Todo', s:orange, s:gray1, 'bold')
|
||||
|
||||
" CSS
|
||||
call s:HL('cssAttrComma', s:gray5, '', '')
|
||||
call s:HL('cssPseudoClassId', s:yellow, '', '')
|
||||
call s:HL('cssBraces', s:gray5, '', '')
|
||||
call s:HL('cssClassName', s:yellow, '', '')
|
||||
call s:HL('cssClassNameDot', s:yellow, '', '')
|
||||
call s:HL('cssFunctionName', s:blue, '', '')
|
||||
call s:HL('cssImportant', s:cyan, '', '')
|
||||
call s:HL('cssIncludeKeyword', s:purple, '', '')
|
||||
call s:HL('cssTagName', s:red, '', '')
|
||||
call s:HL('cssMediaType', s:orange, '', '')
|
||||
call s:HL('cssProp', s:gray5, '', '')
|
||||
call s:HL('cssSelectorOp', s:cyan, '', '')
|
||||
call s:HL('cssSelectorOp2', s:cyan, '', '')
|
||||
|
||||
" Commit Messages (Git)
|
||||
call s:HL('gitcommitHeader', s:purple, '', '')
|
||||
call s:HL('gitcommitUnmerged', s:green, '', '')
|
||||
call s:HL('gitcommitSelectedFile', s:green, '', '')
|
||||
call s:HL('gitcommitDiscardedFile', s:red, '', '')
|
||||
call s:HL('gitcommitUnmergedFile', s:yellow, '', '')
|
||||
call s:HL('gitcommitSelectedType', s:green, '', '')
|
||||
call s:HL('gitcommitSummary', s:blue, '', '')
|
||||
call s:HL('gitcommitDiscardedType', s:red, '', '')
|
||||
hi link gitcommitNoBranch gitcommitBranch
|
||||
hi link gitcommitUntracked gitcommitComment
|
||||
hi link gitcommitDiscarded gitcommitComment
|
||||
hi link gitcommitSelected gitcommitComment
|
||||
hi link gitcommitDiscardedArrow gitcommitDiscardedFile
|
||||
hi link gitcommitSelectedArrow gitcommitSelectedFile
|
||||
hi link gitcommitUnmergedArrow gitcommitUnmergedFile
|
||||
|
||||
" HTML
|
||||
call s:HL('htmlEndTag', s:blue, '', '')
|
||||
call s:HL('htmlLink', s:red, '', '')
|
||||
call s:HL('htmlTag', s:blue, '', '')
|
||||
call s:HL('htmlTitle', s:gray5, '', '')
|
||||
call s:HL('htmlSpecialTagName', s:purple, '', '')
|
||||
|
||||
" Javascript
|
||||
call s:HL('javaScriptBraces', s:gray5, '', '')
|
||||
call s:HL('javaScriptNull', s:orange, '', '')
|
||||
call s:HL('javaScriptIdentifier', s:purple, '', '')
|
||||
call s:HL('javaScriptNumber', s:orange, '', '')
|
||||
call s:HL('javaScriptRequire', s:cyan, '', '')
|
||||
call s:HL('javaScriptReserved', s:purple, '', '')
|
||||
" pangloss/vim-javascript
|
||||
call s:HL('jsArrowFunction', s:purple, '', '')
|
||||
call s:HL('jsAsyncKeyword', s:purple, '', '')
|
||||
call s:HL('jsExtendsKeyword', s:purple, '', '')
|
||||
call s:HL('jsClassKeyword', s:purple, '', '')
|
||||
call s:HL('jsDocParam', s:green, '', '')
|
||||
call s:HL('jsDocTags', s:cyan, '', '')
|
||||
call s:HL('jsForAwait', s:purple, '', '')
|
||||
call s:HL('jsFlowArgumentDef', s:yellow, '', '')
|
||||
call s:HL('jsFrom', s:purple, '', '')
|
||||
call s:HL('jsImport', s:purple, '', '')
|
||||
call s:HL('jsExport', s:purple, '', '')
|
||||
call s:HL('jsExportDefault', s:purple, '', '')
|
||||
call s:HL('jsFuncCall', s:blue, '', '')
|
||||
call s:HL('jsFunction', s:purple, '', '')
|
||||
call s:HL('jsGlobalObjects', s:yellow, '', '')
|
||||
call s:HL('jsGlobalNodeObjects', s:yellow, '', '')
|
||||
call s:HL('jsModuleAs', s:purple, '', '')
|
||||
call s:HL('jsNull', s:orange, '', '')
|
||||
call s:HL('jsStorageClass', s:purple, '', '')
|
||||
call s:HL('jsTemplateBraces', s:red, '', '')
|
||||
call s:HL('jsTemplateExpression', s:red, '', '')
|
||||
call s:HL('jsThis', s:red, '', '')
|
||||
call s:HL('jsUndefined', s:orange, '', '')
|
||||
|
||||
" JSON
|
||||
call s:HL('jsonBraces', s:gray5, '', '')
|
||||
|
||||
" Less
|
||||
call s:HL('lessAmpersand', s:red, '', '')
|
||||
call s:HL('lessClassChar', s:yellow, '', '')
|
||||
call s:HL('lessCssAttribute', s:gray5, '', '')
|
||||
call s:HL('lessFunction', s:blue, '', '')
|
||||
call s:HL('lessVariable', s:purple, '', '')
|
||||
|
||||
" Markdown
|
||||
call s:HL('markdownBold', s:yellow, '', 'bold')
|
||||
call s:HL('markdownCode', s:cyan, '', '')
|
||||
call s:HL('markdownCodeBlock', s:cyan, '', '')
|
||||
call s:HL('markdownCodeDelimiter', s:cyan, '', '')
|
||||
call s:HL('markdownHeadingDelimiter', s:green, '', '')
|
||||
call s:HL('markdownHeadingRule', s:gray4, '', '')
|
||||
call s:HL('markdownId', s:purple, '', '')
|
||||
call s:HL('markdownItalic', s:blue, '', 'italic')
|
||||
call s:HL('markdownListMarker', s:orange, '', '')
|
||||
call s:HL('markdownOrderedListMarker', s:orange, '', '')
|
||||
call s:HL('markdownRule', s:gray4, '', '')
|
||||
call s:HL('markdownUrl', s:purple, '', '')
|
||||
call s:HL('markdownUrlTitleDelimiter', s:green, '', '')
|
||||
|
||||
" Ruby
|
||||
call s:HL('rubyInterpolation', s:cyan, '', '')
|
||||
call s:HL('rubyInterpolationDelimiter', s:indigo, '', '')
|
||||
call s:HL('rubyRegexp', s:cyan, '', '')
|
||||
call s:HL('rubyRegexpDelimiter', s:indigo, '', '')
|
||||
call s:HL('rubyStringDelimiter', s:green, '', '')
|
||||
|
||||
" Sass
|
||||
call s:HL('sassAmpersand', s:red, '', '')
|
||||
call s:HL('sassClassChar', s:yellow, '', '')
|
||||
call s:HL('sassMixinName', s:blue, '', '')
|
||||
call s:HL('sassVariable', s:purple, '', '')
|
||||
|
||||
" Vim-Fugitive
|
||||
call s:HL('diffAdded', s:green, '', '')
|
||||
call s:HL('diffRemoved', s:red, '', '')
|
||||
|
||||
" Vim-Gittgutter
|
||||
call s:HL('GitGutterAdd', s:green, '', '')
|
||||
call s:HL('GitGutterChange', s:yellow, '', '')
|
||||
call s:HL('GitGutterChangeDelete', s:orange, '', '')
|
||||
call s:HL('GitGutterDelete', s:red, '', '')
|
||||
|
||||
" Vim-Signify
|
||||
hi link SignifySignAdd GitGutterAdd
|
||||
hi link SignifySignChange GitGutterChange
|
||||
hi link SignifySignDelete GitGutterDelete
|
||||
|
||||
" XML
|
||||
call s:HL('xmlAttrib', s:yellow, '', '')
|
||||
call s:HL('xmlEndTag', s:blue, '', '')
|
||||
call s:HL('xmlTag', s:blue, '', '')
|
||||
call s:HL('xmlTagName', s:blue, '', '')
|
||||
|
||||
" Neovim terminal colors
|
||||
if has('nvim')
|
||||
let g:terminal_color_0 = s:gray1
|
||||
let g:terminal_color_1 = s:red
|
||||
let g:terminal_color_2 = s:green
|
||||
let g:terminal_color_3 = s:yellow
|
||||
let g:terminal_color_4 = s:blue
|
||||
let g:terminal_color_5 = s:purple
|
||||
let g:terminal_color_6 = s:cyan
|
||||
let g:terminal_color_7 = s:gray5
|
||||
let g:terminal_color_8 = s:gray3
|
||||
let g:terminal_color_9 = s:red
|
||||
let g:terminal_color_10 = s:green
|
||||
let g:terminal_color_11 = s:yellow
|
||||
let g:terminal_color_12 = s:blue
|
||||
let g:terminal_color_13 = s:purple
|
||||
let g:terminal_color_14 = s:cyan
|
||||
let g:terminal_color_15 = s:gray4
|
||||
let g:terminal_color_background = g:terminal_color_0
|
||||
let g:terminal_color_foreground = g:terminal_color_7
|
||||
endif
|
||||
|
|
@ -0,0 +1,216 @@
|
|||
|
||||
" Goyo mappings
|
||||
nmap <C-g> :Goyo 60x60
|
||||
|
||||
" Enable the Vue Language server
|
||||
let g:LanguageClient_serverCommands = {
|
||||
\ 'vue': ['vls']
|
||||
\ }
|
||||
|
||||
" init rainbow brackets
|
||||
"set to 0 if you want to enable it later via :RainbowToggle
|
||||
let g:rainbow_active = 0
|
||||
|
||||
" Emmet mappings
|
||||
let g:user_emmet_mode='a' " enable all functions in all modes
|
||||
let g:user_emmet_leader_key='<C-S>'
|
||||
|
||||
" Devicon Configurations
|
||||
" loading the plugin
|
||||
let g:webdevicons_enable = 1
|
||||
|
||||
" Indention Config
|
||||
let g:indentLine_char = '┊'
|
||||
|
||||
|
||||
" Lightline Themes Configurations
|
||||
let g:lightline = {
|
||||
\ 'colorscheme': 'simpleblack',
|
||||
\ 'active': {
|
||||
\ 'left': [ [ 'mode', 'paste' ],
|
||||
\ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ]
|
||||
\ },
|
||||
\ 'component_function': {
|
||||
\ 'cocstatus': 'coc#status'
|
||||
\ },
|
||||
\ }
|
||||
|
||||
|
||||
" Use auocmd to force lightline update.
|
||||
autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()
|
||||
|
||||
" Fancy markdown syntax
|
||||
let g:markdown_fenced_languages = ['css', 'js=javascript']
|
||||
|
||||
" +++++++++++++++++++++ vim-float-term configuration +++++++++++++++++++++++++
|
||||
|
||||
let g:floaterm_keymap_new = '<leader>.'
|
||||
let g:floaterm_position = 'center'
|
||||
let g:floaterm_type = 'normal'
|
||||
|
||||
" custom mappings for my person tools in normal mode only
|
||||
nnoremap <C-p> :FloatermNew ipython<CR>
|
||||
nnoremap <C-l> :FloatermNew lf<CR>
|
||||
nnoremap <C-s> :FloatermNew sefr<CR>
|
||||
|
||||
" +++++++++++++++++++++++++ Conquer of Completion +++++++++++++++++++++++++
|
||||
|
||||
" if hidden is not set, TextEdit might fail.
|
||||
set hidden
|
||||
|
||||
" Some servers have issues with backup files, see #649
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
|
||||
" Better display for messages
|
||||
set cmdheight=2
|
||||
|
||||
" You will have bad experience for diagnostic messages when it's default 4000.
|
||||
set updatetime=300
|
||||
|
||||
" don't give |ins-completion-menu| messages.
|
||||
set shortmess+=c
|
||||
|
||||
" always show signcolumns
|
||||
set signcolumn=yes
|
||||
|
||||
" Use tab for trigger completion with characters ahead and navigate.
|
||||
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin.
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ pumvisible() ? "\<C-n>" :
|
||||
\ <SID>check_back_space() ? "\<TAB>" :
|
||||
\ coc#refresh()
|
||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
||||
|
||||
function! s:check_back_space() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
" Use <c-space> to trigger completion.
|
||||
inoremap <silent><expr> <c-space> coc#refresh()
|
||||
|
||||
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position.
|
||||
" Coc only does snippet and additional edit on confirm.
|
||||
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
|
||||
" Or use `complete_info` if your vim support it, like:
|
||||
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
|
||||
|
||||
" Use `[g` and `]g` to navigate diagnostics
|
||||
nmap <silent> [g <Plug>(coc-diagnostic-prev)
|
||||
nmap <silent> ]g <Plug>(coc-diagnostic-next)
|
||||
|
||||
" Remap keys for gotos
|
||||
nmap <silent> gd <Plug>(coc-definition)
|
||||
nmap <silent> gy <Plug>(coc-type-definition)
|
||||
nmap <silent> gi <Plug>(coc-implementation)
|
||||
nmap <silent> gr <Plug>(coc-references)
|
||||
|
||||
" Use K to show documentation in preview window
|
||||
"nnoremap <silent> K :call <SID>show_documentation()<CR>
|
||||
|
||||
function! s:show_documentation()
|
||||
if (index(['vim','help'], &filetype) >= 0)
|
||||
execute 'h '.expand('<cword>')
|
||||
else
|
||||
call CocAction('doHover')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Highlight symbol under cursor on CursorHold
|
||||
autocmd CursorHold * silent call CocActionAsync('highlight')
|
||||
|
||||
" Remap for rename current word
|
||||
nmap <leader>rn <Plug>(coc-rename)
|
||||
|
||||
" Remap for format selected region
|
||||
xmap <leader>fr <Plug>(coc-format-selected)
|
||||
nmap <leader>fr <Plug>(coc-format-selected)
|
||||
|
||||
augroup mygroup
|
||||
autocmd!
|
||||
" Setup formatexpr specified filetype(s).
|
||||
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
|
||||
" Update signature help on jump placeholder
|
||||
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
|
||||
augroup end
|
||||
|
||||
" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph
|
||||
xmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
nmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
|
||||
" Remap for do codeAction of current line
|
||||
nmap <leader>ac <Plug>(coc-codeaction)
|
||||
" Fix autofix problem of current line
|
||||
nmap <leader>qf <Plug>(coc-fix-current)
|
||||
|
||||
" Create mappings for function text object, requires document symbols feature of languageserver.
|
||||
xmap if <Plug>(coc-funcobj-i)
|
||||
xmap af <Plug>(coc-funcobj-a)
|
||||
omap if <Plug>(coc-funcobj-i)
|
||||
omap af <Plug>(coc-funcobj-a)
|
||||
|
||||
" Use <TAB> for select selections ranges, needs server support, like: coc-tsserver, coc-python
|
||||
nmap <silent> <TAB> <Plug>(coc-range-select)
|
||||
xmap <silent> <TAB> <Plug>(coc-range-select)
|
||||
|
||||
" Use `:Format` to format current buffer
|
||||
command! -nargs=0 Format :call CocAction('format')
|
||||
|
||||
" Use `:Fold` to fold current buffer
|
||||
command! -nargs=? Fold :call CocAction('fold', <f-args>)
|
||||
|
||||
" use `:OR` for organize import of current buffer
|
||||
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
|
||||
|
||||
" Add status line support, for integration with other plugin, checkout `:h coc-status`
|
||||
set statusline^=%{StatusDiagnostic()}
|
||||
|
||||
" Using CocList
|
||||
" Show all diagnostics
|
||||
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
|
||||
" Manage extensions
|
||||
nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
|
||||
" Show commands
|
||||
nnoremap <silent> <space>c :<C-u>CocList commands<cr>
|
||||
" Find symbol of current document
|
||||
nnoremap <silent> <space>o :<C-u>CocList outline<cr>
|
||||
" Search workspace symbols
|
||||
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
|
||||
" Do default action for next item.
|
||||
nnoremap <silent> <space>j :<C-u>CocNext<CR>
|
||||
" Do default action for previous item.
|
||||
nnoremap <silent> <space>k :<C-u>CocPrev<CR>
|
||||
" Resume latest coc list
|
||||
nnoremap <silent> <space>p :<C-u>CocListResume<CR>
|
||||
|
||||
" Auto command for python projects
|
||||
autocmd FileType python let b:coc_root_patterns = ['.git', '.env']
|
||||
|
||||
" Auto command for correct comment highlighting in Json files
|
||||
autocmd FileType json syntax match Comment +\/\/.\+$+
|
||||
" status line function
|
||||
function! StatusDiagnostic() abort
|
||||
let info = get(b:, 'coc_diagnostic_info', {})
|
||||
if empty(info) | return '' | endif
|
||||
let msgs = []
|
||||
if get(info, 'error', 0)
|
||||
call add(msgs, 'E' . info['error'])
|
||||
endif
|
||||
if get(info, 'warning', 0)
|
||||
call add(msgs, 'W' . info['warning'])
|
||||
endif
|
||||
return join(msgs, ' ') . ' ' . get(g:, 'coc_status', '')
|
||||
endfunction
|
||||
|
||||
" Disable node version warning
|
||||
let g:coc_disable_startup_warning = 1
|
||||
|
||||
" Vim script coc extension
|
||||
let g:markdown_fenced_languages = [
|
||||
\ 'vim',
|
||||
\ 'help'
|
||||
\]
|
||||
|
||||
" Emoji completion
|
||||
set completefunc=emoji#complete
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
runtime plugins.vim
|
||||
runtime settings.vim
|
||||
runtime themes.vim
|
||||
runtime autocommands.vim
|
||||
runtime coc.vim
|
||||
runtime keys.vim
|
||||
|
||||
" Check code as python3 by default
|
||||
let g:neomake_python_python_maker = neomake#makers#ft#python#python()
|
||||
let g:neomake_python_flake8_maker = neomake#makers#ft#python#flake8()
|
||||
let g:neomake_python_python_maker.exe = 'python3 -m py_compile'
|
||||
let g:neomake_python_flake8_maker.exe = 'python3 -m flake8'
|
||||
|
||||
" Disable error messages inside the buffer, next to the problematic line
|
||||
let g:neomake_virtualtext_current_error = 1
|
||||
|
||||
"------------------------------------------------------------------------------
|
||||
" Shawn Anderson as of September 30th 2020
|
||||
noremap <leader>f 0
|
||||
noremap <leader>j $
|
||||
map <leader>/ :nohl<CR>
|
||||
|
||||
test
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
" September 29th 2020 - Shawn Anderson
|
||||
" ------------------------------------------------------------------------------
|
||||
" I have established a package management worklow with vim using stow. This has
|
||||
" far reaching implications.
|
||||
The command to load up the nvim environment that you want to be running is:
|
||||
`stow -v -R nvim_v1/ -t ../`
|
||||
|
||||
" September 22nd 2020 - Shawn Anderson
|
||||
" ------------------------------------------------------------------------------
|
||||
" Now that I actually know what I'm doing in vim (somewhat) I'm starting a new
|
||||
" config from scratch that will be the amalgamation of all the vim tricks and
|
||||
" tweaks that I have accumulated over the years. Development is in close
|
||||
" collaboration with Matthew Williams, whom I have been having a lot of vim
|
||||
" discussions with lately. Original plugin count: Matt-28 Shawn-39. Only 10
|
||||
" overlapping. Matt had the deprecated nerdtree and Shawn had the deprecated
|
||||
" nerdcommenter. In these cases the author has changed to preservim from
|
||||
" scrooloose.
|
||||
"
|
||||
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
" ____ _
|
||||
" / ___|| |__ __ ___ ___ __
|
||||
" \___ \| '_ \ / _` \ \ /\ / / '_ \
|
||||
" ___) | | | | (_| |\ V V /| | | |
|
||||
" |____/|_| |_|\__,_| \_/\_/ |_| |_|
|
||||
" _ _
|
||||
" / \ _ __ __| | ___ _ __ ___ ___ _ __
|
||||
" / _ \ | '_ \ / _` |/ _ \ '__/ __|/ _ \| '_ \
|
||||
" / ___ \| | | | (_| | __/ | \__ \ (_) | | | |
|
||||
" /_/ \_\_| |_|\__,_|\___|_| |___/\___/|_| |_|
|
||||
"
|
||||
" __ ___
|
||||
" \ \ / (_)_ __ ___
|
||||
" \ \ / /| | '_ ` _ \
|
||||
" \ V / | | | | | | |
|
||||
"Neo \_/ |_|_| |_| |_|
|
||||
" ____ __ _ _ _
|
||||
" / ___|___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __
|
||||
" | | / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \
|
||||
" | |__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | |
|
||||
" \____\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
|
||||
" |___/
|
||||
"
|
||||
" ==============================================================================
|
||||
" Now that I actually know what I'm doing in vim (somewhat) I'm starting a new
|
||||
" config from scratch that will be the amalgamation of all the vim tricks and
|
||||
" tweaks that I have accumulated over the years. Development is in close
|
||||
" collaboration with Matthew Williams, whom I have been having a lot of vim
|
||||
" discussions with lately. Original plugin count: Matt-28 Shawn-39. Only 10
|
||||
" overlapping. Matt had the deprecated nerdtree and Shawn had the deprecated
|
||||
" nerdcommenter. In these cases the author has changed to preservim from
|
||||
" scrooloose.
|
||||
"
|
||||
" September 22nd 2020 - Shawn Anderson
|
||||
" ==============================================================================
|
||||
" Contents
|
||||
" 0. Header and Introduction
|
||||
" 1. Table of Contents
|
||||
" 2. Feature List
|
||||
" 3. Key Binding Listing and Philosophy
|
||||
" 4. Plugin Directory and Customization
|
||||
" 5. Conquer of Completion
|
||||
" 6. General Configuration
|
||||
" 7. Language Specific Configuration
|
||||
" ==============================================================================
|
||||
" Feature List
|
||||
" TODO Tag based organization
|
||||
" TODO Fuzzy search oriented workflow
|
||||
" TODO Use ripgrep for plazingly fast file and string searches
|
||||
" TODO Use bat for beautiful previews during fuzzy searches
|
||||
" TODO Nerdtree Power Usage
|
||||
" TODO Rapid Configuration with Key Bindings
|
||||
" TODO Open plugin documentation from init.vim
|
||||
" TODO Plugin graduation process from experimental to optional to required
|
||||
" TODO Sort plugins by author, category, or requirment status
|
||||
" ==============================================================================
|
||||
" Key Binding List
|
||||
" ==============================================================================
|
||||
" Plugin Directory and Configuration
|
||||
call plug#begin('~/.config/nvim/plugged')
|
||||
Plug 'airblade/vim-gitgutter' " #git #:experimental #Origin-Shawn
|
||||
Plug 'airblade/vim-rooter' " Used by fzf... TODO Why? #FuzzySearch #:experimental #Origin-Shawn
|
||||
Plug 'alvan/vim-closetag' " Close tag pairs #Coding #:experimental #Origin-Shawn
|
||||
Plug 'arielrossanigo/dir-configs-override.vim' "Override configs by directory TODO What is this? #Origin-Matt
|
||||
Plug 'bfredl/nvim-ipy' " Ipython in Vim. TODO Is this complementary to Matt's floaterm workflow? #Coding #Python #:experimental #Origin-Shawn
|
||||
Plug 'donRaphaco/neotex', {'for': 'tex'} "Plugin for live preview of LaTex #Origin-Matt
|
||||
Plug 'euclio/vim-markdown-composer', { 'do': function('BuildComposer') } " Compose Markdown to view in browser #Workflow #:optional #Origin-Shawn
|
||||
Plug 'fisadev/FixedTaskList.vim' "Pending tasks list #Origin-Matt
|
||||
Plug 'itchyny/lightline.vim' "Lightline #Origin-Matt
|
||||
Plug 'jeetsukumaran/vim-indentwise' " Indentation based movements #Origin-Matt
|
||||
Plug 'jeffkreeftmeijer/vim-numbertoggle' " TODO What is this? #:experimental #Origin-Shawn
|
||||
Plug 'jez/vim-superman' " Man Pages in Vim #SystemUtility #:experimental #Origin-Shawn
|
||||
Plug 'jiangmiao/auto-pairs' " Auto close brackets TODO Is this necessary? #Coding #:experimental #Origin-Shawn
|
||||
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } "Code and files fuzzy finder #Origin-Matt
|
||||
Plug 'junegunn/fzf.vim' "fzf for vim #Origin-Matt
|
||||
Plug 'junegunn/goyo.vim' " Distraction free programming #Origin-Matt #:optional #Origin-Shawn
|
||||
Plug 'junegunn/gv.vim' " #git #:experimental #Origin-Shawn
|
||||
Plug 'junegunn/limelight.vim' " #:optional #Origin-Shawn
|
||||
Plug 'junegunn/vim-easy-align' " #:experimental #Origin-Shawn
|
||||
Plug 'junegunn/vim-emoji' "Vim Emoji #typing #Origin-Matt
|
||||
Plug 'junegunn/vim-github-dashboard' " #git #:experimental #Origin-Shawn
|
||||
Plug 'jreybert/vimagit' " Interactive git dashboard like emacs magit #git #:experimental #Origin-Shawn
|
||||
Plug 'lilydjwg/colorizer' " Paint css colors with the real color #Origin-Matt
|
||||
Plug 'liuchengxu/vista.vim' " Language server protocol.. TODO how does this relate to COC? #:experimental #Origin-Shawn
|
||||
Plug 'lotabout/slimux' " Send strings across tmux panes! #Workflow #:optional #Origin-Shawn
|
||||
Plug 'luochen1990/rainbow' "Rainbow Brackets #typing #Origin-Matt
|
||||
Plug 'majutsushi/tagbar' "Class/module browser TODO known problems: * current block not refreshing' #Origin-Matt
|
||||
Plug 'mattn/emmet-vim' " Generate html in a simple way TODO is this obsolete by coc-emmet #Origin-Matt
|
||||
Plug 'mhinz/vim-signify' " Git/mercurial/others diff icons on the side of the file lines #Origin-Matt
|
||||
Plug 'mhinz/vim-startify' " Fun homepage for vim #Workflow #:optional #Origin-Shawn
|
||||
Plug 'michaeljsmith/vim-indent-object' " Indent text object #Origin-Matt
|
||||
Plug 'mileszs/ack.vim' " Ack code search (requires ack installed in the system) TODO is there a way to prevent the progress which hides the editor? #Origin-Matt
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'} "Conquer of Completion #Completions #Origin-Matt #:required #Origin-Shawn
|
||||
Plug 'neoclide/coc-eslint' " #Javascript #Linting #:experimental #Origin-Shawn
|
||||
Plug 'neoclide/coc-prettier' " #Javascript #Linting #:experimental #Origin-Shawn
|
||||
Plug 'neoclide/jsonc.vim' " TODO What is this? #:experimental #Origin-Shawn
|
||||
Plug 'neomake/neomake' " #Linters TODO is it running on save? or when? TODO not detecting errors, just style, is it using pylint? #Origin-Matt #Origin-Shawn
|
||||
Plug 'preservim/nerdcommenter' "Quick Commentor #typing #Origin-Matt
|
||||
Plug 'preservim/nerdtree' | " #:required #Origin-Shawn
|
||||
\ Plug 'Xuyuanp/nerdtree-git-plugin' | " #:optional #Origin-Shawn
|
||||
\ Plug 'ryanoasis/vim-devicons' "Nice icons: Need to install patched font for this to work #Origin-Matt #:optional #Origin-Shawn
|
||||
Plug 'scrooloose/nerdcommenter' " #:optional #Origin-Shawn
|
||||
Plug 'scrooloose/nerdtree' "Vim extendable file browser #Origin-Matt
|
||||
Plug 'sheerun/vim-polyglot' " #Origin-Shawn
|
||||
Plug 'sheerun/vim-polyglot' " Better language packs #Origin-Matt
|
||||
Plug 'shougo/context_filetype.vim' "Completion from other opened files #Origin-Matt
|
||||
Plug 'Shougo/denite.nvim' " Unite all interfaces TODO Is this necessary with fzf? #Workflow #:experimental #Origin-Shawn
|
||||
Plug 'tomlion/vim-solidity' " TODO I'm sure that we don't need this given COC #:experimental #Origin-Shawn
|
||||
Plug 'townk/vim-autoclose' "Automatically close parenthesis, etc #Origin-Matt
|
||||
Plug 'tpope/vim-fugitive' " Git integration #git #Origin-Matt
|
||||
Plug 'tpope/vim-fugitive' " #:required #Origin-Shawn
|
||||
Plug 'tpope/vim-repeat' " Enable dot operator to work on plugin commands #Workflow #:required #Origin-Shawn
|
||||
Plug 'tpope/vim-rhubarb' " TODO What the heck is this? #:experimental #Origin-Shawn
|
||||
Plug 'tpope/vim-speeddating' " TODO What is this? #:experimental #Origin-Shawn
|
||||
Plug 'tpope/vim-surround' " Nice vim utility for surrounding blocks with things #Workflow #:optional #Origin-Shawn
|
||||
Plug 'tpope/vim-unimpaired' " TODO What does this do? #Workflow #:experimental #Origin-Shawn
|
||||
Plug 'vim-airline/vim-airline' " Airline status bar. TODO I'm sure I don't need this. Whatever Matt is doing is better. #:optional #Origin-Shawn
|
||||
Plug 'vim-airline/vim-airline-themes' " Airline status bar. TODO I'm sure I don't need this. Whatever Matt is doing is better. #:optional #Origin-Shawn
|
||||
Plug 'vim-scripts/indexedsearch' "Search results counter #Origin-Matt
|
||||
Plug 'vimwiki/vimwiki' " For ultimate organization. #Workflow #:required #Origin-Shawn
|
||||
Plug 'voldikss/vim-floaterm' "Integrated Floating terminal #Origin-Matt
|
||||
Plug 'yggdroot/indentline' "Show indention level through lines #Origin-Matt
|
||||
Plug 'yggdroot/indentline' " #Origin-Shawn
|
||||
call plug#end()
|
||||
" ============================================================================
|
||||
|
||||
:smile
|
||||
|
||||
" vim-devicons
|
||||
" add or override individual additional filetypes
|
||||
" let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {} " needed
|
||||
" let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['mkv'] = 'ƛ'
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
stow -v -R serious/ -t ../
|
||||
|
|
@ -0,0 +1 @@
|
|||
stow -v -D serious/ -t ../
|
||||
Loading…
Reference in New Issue