# Define SciTE settings for C++, C files.

file.patterns.csrc=*.c;*.cpp
file.patterns.cplusplus=*.cpp;*.hpp
file.patterns.conly=*.c;*.h
file.patterns.compile=*.lex;*.grm;*.caio
file.patterns.bison=*.grm
file.patterns.flex=*.lex
file.patterns.caio=*.caio
file.patterns.cpplike=$(file.patterns.cplusplus);$(file.patterns.compile)
file.patterns.clike=$(file.patterns.conly);$(file.patterns.cpplike)

filter.cpp=C/C++|$(file.patterns.conly);$(file.patterns.cplusplus)|\
Compiler files|$(file.patterns.compile)|

lexer.$(file.patterns.clike)=cpp

keywordclass.cpp=alignas alignof and and_eq asm auto bitand bitor bool break \
case catch char char16_t char32_t class compl const constexpr const_cast continue \
decltype default delete do double dynamic_cast else enum explicit export extern false final float for \
friend goto if inline int long mutable namespace new noexcept not not_eq nullptr \
operator or or_eq override private protected public \
reinterpret_cast return short signed sizeof static static_assert static_cast struct switch \
template this thread_local throw true try typedef typeid typename union unsigned using \
virtual void volatile wchar_t while xor xor_eq

keywordclass.c=alignas alignof auto bool break case char complex const continue default \
double else enum extern float for goto if imaginary inline int long \
noreturn register return short signed sizeof static static_assert struct switch \
thread_local typedef union unsigned void volatile while \
_Alignas _Alignof _Atomic _Bool _Complex _Generic _Imaginary _Noreturn _Static_assert _Thread_local

keywords.$(file.patterns.cpplike)=$(keywordclass.cpp)
keywords.$(file.patterns.conly)=$(keywordclass.c)

# keywords2 is for highlighting user defined keywords or function calls or similar
keywords2.$(file.patterns.caio)=match rule visitor visit token

# keywords5 is for preprocessor definitions and will cause inactive code
# to be greyed out. This setting is a space separated list of definitions
# where a definition may be of the form NAME=VALUE or simply NAME.
#keywords5.$(file.patterns.cpp)=_MSC_VER SCI_NAMESPACE GTK_MAJOR_VERSION=2

word.characters.$(file.patterns.clike)=$(chars.alpha)$(chars.numeric)_#
calltip.cpp.word.characters=$(chars.alpha)$(chars.numeric)_
comment.block.cpp=//~
#comment.block.at.line.start.cpp=1
comment.stream.start.cpp=/*
comment.stream.end.cpp=*/
comment.box.start.cpp=/*
comment.box.middle.cpp= *
comment.box.end.cpp= */

# Folding
#fold.cpp.syntax.based=0
#fold.cpp.comment.multiline=0
#fold.cpp.comment.explicit=0
#defaults for fold.cpp.explicit.start=//{ and fold.cpp.explicit.end=//}
#  can be replaced by defining custom strings, e.g. //[ and //]
#fold.cpp.explicit.start=//[
#fold.cpp.explicit.end=//]
#if fold strings are set to something like /*{{{ and /*}}} (Origami/WinF style fold strings), enable
#  fold.cpp.explicit.anywhere, allowing explicit fold points being anywhere, not just in line comments
#fold.cpp.explicit.anywhere=1
#fold.at.else=1

statement.indent.$(file.patterns.cpplike)=5 case default do else for if private protected public while
statement.indent.$(file.patterns.conly)=5 case default do else for if while
statement.end.$(file.patterns.clike)=10 ;
statement.lookback.$(file.patterns.clike)=20
block.start.$(file.patterns.clike)=10 {
block.end.$(file.patterns.clike)=10 }

#autocomplete.cpp.fillups=(

#styling.within.preprocessor=1
preprocessor.symbol.$(file.patterns.clike)=#
preprocessor.start.$(file.patterns.clike)=if ifdef ifndef
preprocessor.middle.$(file.patterns.clike)=else elif
preprocessor.end.$(file.patterns.clike)=endif

#lexer.cpp.track.preprocessor=1
#lexer.cpp.update.preprocessor=1
#lexer.cpp.hashquoted.strings=1

# C++ styles

# Default
style.cpp.32=$(font.base)
# White space
style.cpp.0=fore:#808080
# Comment: /* */.
style.cpp.1=$(colour.code.comment.box),$(font.code.comment.box)
# Line Comment: //.
style.cpp.2=$(colour.code.comment.line),$(font.code.comment.line)
# Doc comment: block comments beginning with /** or /*!
style.cpp.3=$(colour.code.comment.doc),$(font.code.comment.doc)
# Number
style.cpp.4=$(colour.number)
# Keyword
style.cpp.5=$(colour.keyword),bold
# Double quoted string
style.cpp.6=$(colour.string)
# Single quoted string
style.cpp.7=$(colour.char)
# UUIDs (only in IDL)
style.cpp.8=fore:#804080
# Preprocessor
style.cpp.9=$(colour.preproc)
# Operators
style.cpp.10=$(colour.operator),bold
# Identifiers
style.cpp.11=
# End of line where string is not closed
style.cpp.12=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
# Verbatim strings for C#
style.cpp.13=fore:#007F00,$(font.monospace),back:#E0FFE0,eolfilled
# Regular expressions for JavaScript
style.cpp.14=fore:#3F7F3F,$(font.monospace),back:#E0F0FF,eolfilled
# Doc Comment Line: line comments beginning with /// or //!.
style.cpp.15=$(colour.code.comment.doc),$(font.code.comment.doc)
# Keywords2
style.cpp.16=fore:#B00040,bold
# Comment keyword
style.cpp.17=fore:#3060A0,$(font.code.comment.doc)
# Comment keyword error
style.cpp.18=fore:#804020,$(font.code.comment.doc)
# Raw strings for C++0x
style.cpp.20=$(colour.string),back:#FFF3FF,eolfilled
# Triple-quoted strings for Vala
style.cpp.21=$(font.monospace),fore:#007F00,back:#E0FFE0,eolfilled
# Hash-quoted strings for Pike
style.cpp.22=$(font.monospace),fore:#007F00,back:#E7FFD7,eolfilled
# Preprocessor stream comment
style.cpp.23=fore:#659900
# Preprocessor stream doc comment
style.cpp.24=$(colour.code.comment.doc)
# User defined literals
style.cpp.25=fore:#C06000
# Task Marker
style.cpp.26=fore:#BE07FF,$(font.code.comment.line)

# Inactive states are 64 greater than their active counterparts

# White space
style.cpp.64=fore:#C0C0C0
# Comment: /* */.
style.cpp.65=$(style.cpp.1),fore:#90B090
# Line Comment: //.
style.cpp.66=$(style.cpp.2),fore:#90B090
# Doc comment: block comments beginning with /** or /*!
style.cpp.67=$(style.cpp.3),fore:#D0D0D0
# Number
style.cpp.68=$(style.cpp.4),fore:#90B0B0
# Keyword
style.cpp.69=$(style.cpp.5),fore:#9090B0
# Double quoted string
style.cpp.70=$(style.cpp.6),fore:#B090B0
# Single quoted string
style.cpp.71=$(style.cpp.7),fore:#B090B0
# UUIDs (only in IDL)
style.cpp.72=$(style.cpp.8),fore:#C0C0C0
# Preprocessor
style.cpp.73=$(style.cpp.9),fore:#B0B090
# Operators
style.cpp.74=$(style.cpp.10),fore:#B0B0B0
# Identifiers
style.cpp.75=$(style.cpp.11),fore:#B0B0B0
# End of line where string is not closed
style.cpp.76=$(style.cpp.12),fore:#000000
# Verbatim strings for C#
style.cpp.77=$(style.cpp.13),fore:#90B090
# Regular expressions for JavaScript
style.cpp.78=$(style.cpp.14),fore:#7FAF7F
# Doc Comment Line: line comments beginning with /// or //!.
style.cpp.79=$(style.cpp.15),fore:#C0C0C0
# Keywords2
style.cpp.80=$(style.cpp.16),fore:#C0C0C0
# Comment keyword
style.cpp.81=$(style.cpp.17),fore:#C0C0C0
# Comment keyword error
style.cpp.82=$(style.cpp.18),fore:#C0C0C0
# Raw strings for C++0x
style.cpp.84=$(style.cpp.20),fore:#B090B0
# Triple-quoted strings for Vala
style.cpp.85=$(style.cpp.21),fore:#90B090
# Hash-quoted strings for Pike
style.cpp.86=$(style.cpp.22),fore:#90B090
# Preprocessor stream comment
style.cpp.87=$(style.cpp.23),fore:#A0C090
# Preprocessor stream doc comment
style.cpp.88=$(style.cpp.23),fore:#C0C0C0
# User defined literals
style.cpp.89=fore:#D7A090
# Task Marker
style.cpp.90=fore:#C3A1CF,$(font.code.comment.line)

# Braces are only matched in operator style
braces.cpp.style=10

command.compile.$(file.patterns.clike)="$(SciteDefaultHome)\compile.cmd" "$(FileDir)" $(FileExt) $(FileName) "$(compile.flags)"
command.go.$(file.patterns.clike)="$(SciteDefaultHome)\run.cmd" "$(FileDir)" "$(program.exe)" "$(1)" pause
command.go.subsystem.$(file.patterns.clike)=2
command.clean.$(file.patterns.clike)=make clean

build_text=Build

command.build.name.$(file.patterns.clike)=$(build_text)
command.build.$(file.patterns.clike)=cpp_MakeAll
command.build.subsystem.$(file.patterns.clike)=3

command.name.0.$(file.patterns.clike)=Run within Console
command.0.$(file.patterns.clike)=run_program
command.subsystem.0.$(file.patterns.clike)=3
command.save.before.0.$(file.patterns.clike)=1
command.shortcut.0.$(file.patterns.clike)=Alt+F5

command.name.1.$(file.patterns.csrc)=All Unit Tests
command.1.$(file.patterns.csrc)=cpp_UnitTestAll
command.subsystem.1.$(file.patterns.csrc)=3
command.save.before.1.$(file.patterns.csrc)=1
command.shortcut.1.$(file.patterns.csrc)=Ctrl+Shift+F5
command.menu.1.$(file.patterns.csrc)=2

command.name.2.$(file.patterns.csrc)=Tests for Module
command.2.$(file.patterns.csrc)=cpp_UnitTest1
command.subsystem.2.$(file.patterns.csrc)=3
command.save.before.2.$(file.patterns.csrc)=1
command.shortcut.2.$(file.patterns.csrc)=Ctrl+F5
command.menu.2.$(file.patterns.csrc)=2

command.name.3.$(file.patterns.clike)=Draw Diagrams
command.3.$(file.patterns.clike)="$(SciteDefaultHome)\..\Umlet\Umlet.exe"
command.save.before.3.$(file.patterns.clike)=0

command.name.4.$(file.patterns.clike)=Indent
command.4.$(file.patterns.clike)=astyle -s3OHUKk3 $(FileNameExt)
command.save.before.4.$(file.patterns.clike)=1
command.is.filter.4.$(file.patterns.clike)=1


command.name.5.$(file.patterns.csrc)=Show Coverage
command.5.$(file.patterns.csrc)=cpp_ShowCoverage1
command.subsystem.5.$(file.patterns.csrc)=3
command.save.before.5.$(file.patterns.csrc)=1
command.menu.5.$(file.patterns.csrc)=2

command.name.6.$(file.patterns.clike)=Clear Coverage
command.6.$(file.patterns.clike)=cpp_ClearCoverage1
command.subsystem.6.$(file.patterns.clike)=3
command.menu.6.$(file.patterns.clike)=2

command.name.11.$(file.patterns.csrc)=All Feature Tests
command.11.$(file.patterns.csrc)=cpp_FeatureTestAll
command.subsystem.11.$(file.patterns.csrc)=3
command.save.before.11.$(file.patterns.csrc)=1
command.shortcut.11.$(file.patterns.csrc)=Ctrl+Shift+F6
command.menu.11.$(file.patterns.csrc)=2

command.help.$(file.patterns.clike)=$(CurrentWord)!$(SciteDefaultHome)/cppreference.chm
command.help.subsystem.$(file.patterns.clike)=4

abbreviations.$(file.patterns.clike)=$(SciteDefaultHome)\abbrev.properties

menu.1.$(file.patterns.clike)=&Debug

menu.2.$(file.patterns.clike)=&Testing

calltip.cpp.use.escapes=1
calltip.cpp.parameters.start=(
calltip.cpp.parameters.end=)
calltip.cpp.parameters.separators=,;
# autocomplete.cpp.fillups=(
api.$(file.patterns.conly)=$(SciteDefaultHome)\c11.api;$(SciteDefaultHome)\conio_bgi.api
api.$(file.patterns.cplusplus)=$(SciteDefaultHome)\c11.api;$(SciteDefaultHome)\conio_bgi.api;$(SciteDefaultHome)\cpp17.api;$(SciteDefaultHome)\gtest.api
