From f105c2ad816e5368b1cc3d1b85765ffb2b7afab6 Mon Sep 17 00:00:00 2001 From: Freaxed Date: Wed, 1 Nov 2023 18:30:31 +0100 Subject: [PATCH 01/10] first commit integrating koder\s Languages engine --- Makefile | 2 + data/languages.yaml | 83 ++ data/languages/awk.yaml | 41 + data/languages/bash.yaml | 39 + data/languages/c.yaml | 30 + data/languages/cmake.yaml | 23 + data/languages/cpp.yaml | 1481 +++++++++++++++++++++++++++++ data/languages/css.yaml | 75 ++ data/languages/diff.yaml | 10 + data/languages/gdscript.yaml | 81 ++ data/languages/html.yaml | 79 ++ data/languages/jam.yaml | 35 + data/languages/javascript.yaml | 35 + data/languages/lua.yaml | 49 + data/languages/makefile.yaml | 12 + data/languages/markdown.yaml | 25 + data/languages/ocaml.yaml | 31 + data/languages/perl.yaml | 56 ++ data/languages/php.yaml | 28 + data/languages/python.yaml | 25 + data/languages/rdef.yaml | 39 + data/languages/recipe.yaml | 91 ++ data/languages/ruby.yaml | 34 + data/languages/rust.yaml | 34 + data/languages/text.yaml | 2 + data/languages/xml.yaml | 23 + data/languages/yab.yaml | 36 + data/languages/yaml.yaml | 14 + data/styles/dark.yaml | 163 ++++ data/styles/default.yaml | 170 ++++ data/styles/dimmed.yaml | 171 ++++ data/styles/mono.yaml | 139 +++ data/styles/purpleriot.yaml | 141 +++ src/GenioApp.cpp | 6 + src/helpers/GenioCommon.cpp | 12 + src/helpers/GenioCommon.h | 1 + src/helpers/Languages.cpp | 323 +++++++ src/helpers/Languages.h | 38 + src/helpers/Utils.cpp | 47 +- src/helpers/Utils.h | 6 +- src/templates/TemplateManager.cpp | 26 +- src/ui/Editor.cpp | 25 +- 42 files changed, 3730 insertions(+), 51 deletions(-) create mode 100644 data/languages.yaml create mode 100644 data/languages/awk.yaml create mode 100644 data/languages/bash.yaml create mode 100644 data/languages/c.yaml create mode 100644 data/languages/cmake.yaml create mode 100644 data/languages/cpp.yaml create mode 100644 data/languages/css.yaml create mode 100644 data/languages/diff.yaml create mode 100644 data/languages/gdscript.yaml create mode 100644 data/languages/html.yaml create mode 100644 data/languages/jam.yaml create mode 100644 data/languages/javascript.yaml create mode 100644 data/languages/lua.yaml create mode 100644 data/languages/makefile.yaml create mode 100644 data/languages/markdown.yaml create mode 100644 data/languages/ocaml.yaml create mode 100644 data/languages/perl.yaml create mode 100644 data/languages/php.yaml create mode 100644 data/languages/python.yaml create mode 100644 data/languages/rdef.yaml create mode 100644 data/languages/recipe.yaml create mode 100644 data/languages/ruby.yaml create mode 100644 data/languages/rust.yaml create mode 100644 data/languages/text.yaml create mode 100644 data/languages/xml.yaml create mode 100644 data/languages/yab.yaml create mode 100644 data/languages/yaml.yaml create mode 100644 data/styles/dark.yaml create mode 100644 data/styles/default.yaml create mode 100644 data/styles/dimmed.yaml create mode 100644 data/styles/mono.yaml create mode 100644 data/styles/purpleriot.yaml create mode 100644 src/helpers/Languages.cpp create mode 100644 src/helpers/Languages.h diff --git a/Makefile b/Makefile index fb4af95f..9d8a50c5 100644 --- a/Makefile +++ b/Makefile @@ -57,6 +57,7 @@ SRCS += src/helpers/git/GitRepository.cpp SRCS += src/helpers/tabview/TabContainerView.cpp SRCS += src/helpers/tabview/TabManager.cpp SRCS += src/helpers/tabview/TabView.cpp +SRCS += src/helpers/tabview/Languages.cpp SRCS += src/lsp-client/LSPEditorWrapper.cpp SRCS += src/lsp-client/LSPProjectWrapper.cpp SRCS += src/lsp-client/LSPPipeClient.cpp @@ -92,6 +93,7 @@ LIBS += columnlistview tracker LIBS += git2 LIBS += src/lexilla/bin/liblexilla.a LIBS += src/scintilla/bin/libscintilla.a +LIBS += yaml-cpp # LIBPATHS = $(shell findpaths -a $(platform) B_FIND_PATH_DEVELOP_LIB_DIRECTORY) # LIBPATHS = /boot/home/config/non-packaged/lib diff --git a/data/languages.yaml b/data/languages.yaml new file mode 100644 index 00000000..b20edb9f --- /dev/null +++ b/data/languages.yaml @@ -0,0 +1,83 @@ +text: + name: Text file + extensions: [ txt ] +awk: + name: AWK + extensions: [ awk ] +bash: + name: Bash + extensions: [ sh, bash, bsh, csh, ksh, configure ] +c: + name: C + extensions: [ c ] +cmake: + name: CMake + extensions: [ cmake, CMakeLists.txt, CMakeCache.txt ] +cpp: + name: C++ + extensions: [ cc, cpp, cxx, h, hh, hpp, hxx, dox ] +css: + name: CSS + extensions: [ css ] +diff: + name: Diff + extensions: [ diff, patch, patchset ] +gdscript: + name: GDScript + extensions: [ gd ] +html: + name: HTML + extensions: [ html, htm, shtml, shtm, xhtml, xht, hta ] +jam: + name: Jam + extensions: [ Jamfile, Jamrules, Jambase ] +javascript: + name: JavaScript + extensions: [ js, jsm, json ] +lua: + name: Lua + extensions: [ lua ] +makefile: + name: Makefile + extensions: [ mk, mak, Makefile, Makefile.am, makefile ] +markdown: + name: Markdown + extensions: [ md, markdown ] +ocaml: + name: OCaml + extensions: [ ml, mli, sml, thy ] +perl: + name: Perl + extensions: [ pl, pm, pod ] +php: + name: PHP + extensions: [ php, php3, php4, php5, phps, phpt, phtml ] +python: + name: Python + extensions: [ py, pyw ] +rdef: + name: RDef + extensions: [ rdef ] +recipe: + name: Recipe + extensions: [ recipe ] +ruby: + name: Ruby + extensions: [ rb, rbw, rake, rjs, Rakefile ] +rust: + name: Rust + extensions: [ rs ] +yab: + name: YAB + extensions: [ yab ] +xml: + name: XML + extensions: [ xml, xaml, xsl, xslt, xsd, xul, kml, svg, mxml, xsml, wsdl, + xlf, xliff, xbl, sxbl, pimx, config, vsixmanifest, manifest, + proj, csproj, vbproj, fsproj, vcproj, vcxproj, nproj, pyproj, + javaproj, wixproj, filters, settings, testsettings, vsmdi, + ruleset, rules, targets, props, vsprops, propdesc, resx, + rdlc rdl swidtag gml gtt gpx ] +yaml: + name: YAML + extensions: [ yml, yaml ] diff --git a/data/languages/awk.yaml b/data/languages/awk.yaml new file mode 100644 index 00000000..759b918b --- /dev/null +++ b/data/languages/awk.yaml @@ -0,0 +1,41 @@ +# AWK +# adapted from SciTE +lexer: perl +keywords: + 0: > + BEGIN END + if else while do for in break continue delete exit function return + print printf sprintf + system close getline next nextfile fflush + atan2 cos exp int log rand sin sqrt srand + asort asorti gensub sub gsub index length match split + strtonum substr tolower toupper + mktime strftime systime + and compl lshift or rshift xor + bindtextdomain dcgettext dcngettext + ARGC ARGIND ARGV BINMODE CONVFMT ENVIRON ERRNO FIELDWIDTHS + FILENAME FNR FS IGNORECASE LINT NF NR OFMT OFS ORS PROCINFO + RS RT RSTART RLENGTH SUBSEP TEXTDOMAIN +comments: + line: "#" +styles: + 0: 32 + 1: 148 + 4: 104 + 5: 105 + 6: 106 + 7: 113 + 10: 32 + 17: 114 + 2: 101 + 8: 32 + 12: 152 + 13: 152 + 14: 103 + 15: 113 + 3: 32 + 19: 32 + 9: 109 + 20: 32 + 21: 113 + 18: 103 diff --git a/data/languages/bash.yaml b/data/languages/bash.yaml new file mode 100644 index 00000000..d50b8093 --- /dev/null +++ b/data/languages/bash.yaml @@ -0,0 +1,39 @@ +# Bash +lexer: bash +properties: + fold: 1 + fold.comment: 1 +keywords: + 0: > + alias ar asa awk banner basename bash bc bdiff break bunzip2 bzip2 cal + calendar case cat cc cd chmod cksum clear cmp col comm compress continue + cp cpio crypt csplit ctags cut date dc dd declare deroff dev df diff + diff3 dircmp dirname do done du echo ed egrep elif else env esac eval + ex exec exit expand export expr false fc fgrep fi file find fmt fold + for function functions getarch getconf getopt getopts grep gres hash + head help history iconv id if in integer jobs join kill local lc let + line ln logname look ls m4 mail mailx make man mkdir more mt mv newgrp + nl nm nohup ntps od pack paste patch pathchk pax pcat perl pg pr print + printf ps pwd read readonly red return rev rm rmdir sed select set + setarch sh shift size sleep sort spell split start stop strings strip + stty sum suspend sync tail tar tee test then time times touch tr trap + true tsort tty type typeset ulimit umask unalias uname uncompress + unexpand uniq unpack unset until uudecode uuencode vi vim vpax wait wc + whence which while who wpaste wstart xargs zcat +comments: + line: "#" +styles: + 0: 32 + 1: 148 + 3: 104 + 4: 105 + 5: 106 + 6: 106 + 7: 110 + 8: 32 + 9: 152 + 2: 101 + 10: 152 + 11: 151 + 12: 113 + 13: 113 diff --git a/data/languages/c.yaml b/data/languages/c.yaml new file mode 100644 index 00000000..9a9c9ae4 --- /dev/null +++ b/data/languages/c.yaml @@ -0,0 +1,30 @@ +# C +lexer: cpp +properties: + fold: 1 + lexer.cpp.track.preprocessor: 0 + styling.within.preprocessor: 1 +keywords: + 0: if else switch case default break goto return for while do continue typedef sizeof NULL + 1: void struct union enum char short int long double float signed unsigned const static extern auto register volatile +comments: + line: // + block: [ "/*", "*/" ] +styles: + 11: 32 + 10: 110 + 6: 106 + 7: 106 + 4: 104 + 5: 105 + 16: 105 + 1: 101 + 2: 101 + 3: 103 + 15: 103 + 17: 117 + 18: 117 + 19: 119 + 13: 113 + 14: 114 + 9: 109 diff --git a/data/languages/cmake.yaml b/data/languages/cmake.yaml new file mode 100644 index 00000000..2924f2a4 --- /dev/null +++ b/data/languages/cmake.yaml @@ -0,0 +1,23 @@ +# CMake +lexer: cmake +keywords: + 0: add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory build_command build_name cmake_minimum_required configure_file create_test_sourcelist else elseif enable_language enable_testing endforeach endif endmacro endwhile exec_program execute_process export_library_dependencies file find_file find_library find_package find_path find_program fltk_wrap_ui foreach get_cmake_property get_directory_property get_filename_component get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install install_files install_programs install_targets link_directories link_libraries list load_cache load_command macro make_directory mark_as_advanced math message option output_required_files project qt_wrap_cpp qt_wrap_ui remove remove_definitions separate_arguments set set_directory_properties set_source_files_properties set_target_properties set_tests_properties site_name source_group string subdir_depends subdirs target_link_libraries try_compile try_run use_mangled_mesa utility_source variable_requires vtk_make_instantiator vtk_wrap_java vtk_wrap_python vtk_wrap_tcl while write_file + 1: ABSOLUTE ABSTRACT ADDITIONAL_MAKE_CLEAN_FILES ALL AND APPEND ARGS ASCII BEFORE CACHE CACHE_VARIABLES CLEAR COMMAND COMMANDS COMMAND_NAME COMMENT COMPARE COMPILE_FLAGS COPYONLY DEFINED DEFINE_SYMBOL DEPENDS DOC EQUAL ESCAPE_QUOTES EXCLUDE EXCLUDE_FROM_ALL EXISTS EXPORT_MACRO EXT EXTRA_INCLUDE FATAL_ERROR FILE FILES FORCE FUNCTION GENERATED GLOB GLOB_RECURSE GREATER GROUP_SIZE HEADER_FILE_ONLY HEADER_LOCATION IMMEDIATE INCLUDES INCLUDE_DIRECTORIES INCLUDE_INTERNALS INCLUDE_REGULAR_EXPRESSION LESS LINK_DIRECTORIES LINK_FLAGS LOCATION MACOSX_BUNDLE MACROS MAIN_DEPENDENCY MAKE_DIRECTORY MATCH MATCHALL MATCHES MODULE NAME NAME_WE NOT NOTEQUAL NO_SYSTEM_PATH OBJECT_DEPENDS OPTIONAL OR OUTPUT OUTPUT_VARIABLE PATH PATHS POST_BUILD POST_INSTALL_SCRIPT PREFIX PREORDER PRE_BUILD PRE_INSTALL_SCRIPT PRE_LINK PROGRAM PROGRAM_ARGS PROPERTIES QUIET RANGE READ REGEX REGULAR_EXPRESSION REPLACE REQUIRED RETURN_VALUE RUNTIME_DIRECTORY SEND_ERROR SHARED SOURCES STATIC STATUS STREQUAL STRGREATER STRLESS SUFFIX TARGET TOLOWER TOUPPER VAR VARIABLES VERSION WIN32 WRAP_EXCLUDE WRITE APPLE MINGW MSYS CYGWIN BORLAND WATCOM MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80 CMAKE_COMPILER_2005 OFF ON HAIKU +comments: + line: "#" +styles: + 0: 32 + 1: 101 + 2: 106 + 3: 153 + 4: 154 + 5: 105 + 6: 152 + 7: 152 + 8: 113 + 9: 105 + 10: 105 + 11: 105 + 12: 117 + 13: 152 + 14: 104 diff --git a/data/languages/cpp.yaml b/data/languages/cpp.yaml new file mode 100644 index 00000000..9faaf6e9 --- /dev/null +++ b/data/languages/cpp.yaml @@ -0,0 +1,1481 @@ +# C++ +lexer: cpp +properties: + fold: 1 + lexer.cpp.track.preprocessor: 0 + styling.within.preprocessor: 1 +keywords: + 0: alignof and and_eq bitand bitor break case catch compl const_cast continue default delete do dynamic_cast else false for goto if namespace new not not_eq nullptr operator or or_eq reinterpret_cast return sizeof static_assert static_cast switch this throw true try typedef typeid using while xor xor_eq NULL + 1: alignas asm auto bool char char16_t char32_t class const constexpr decltype double enum explicit export extern final float friend inline int int8 int16 int32 int64 long mutable noexcept override private protected public register short signed size_t static struct template thread_local typename uint8 uint16 uint32 uint64 uchar unichar union unsigned virtual void volatile wchar_t +identifiers: + 11: + - std BPrivate BPackageKit + - string vector map unordered_map set unordered_set pair + - > + BA2D BAbstractBufferedDataReader BAbstractLayout BAbstractLayoutItem + BAbstractSocket BAffineTransform BAlert BAlignment BAppFileInfo + BApplication BArchivable BArchiveManager BArchiver + BAttributeDataReader BAttributedMailAttachment BAutolock + BBitmap BBitmapStream BBlockBufferPool BBlockBufferPoolNoLock + BBlockCache BBox BBuffer BBufferConsumer BBufferDataReader + BBufferedDataIO BBufferGroup BBufferIO BBufferPool + BBufferPoolLockable BBufferProducer BButton + BCardLayout BCatalog BCatalogData BCertificate BChannelControl + BChannelSlider BCheckBox BClipboard BCollator BCollatorAddOn + BColorControl BCommitTransactionResult BContext BContinuousParameter + BControl BControllable BControlLook BCountry BCurrency BCursor + BD2A BDatagramSocket BDataIO BDataReader BDataRequest BDate + BDateFormat BDateTime BDateTimeFormat BDeskbar BDigitalPort + BDirectMessageTarget BDirectory BDirectWindow BDiscreteParameter + BDragger BDurationFormat + BEmailMessage BEntry BEntryList BErrorOutput + BFDDataReader BFile BFileGameSound BFileInterface BFilePanel + BFileRequest BFlattenable BFloatFormat BFloatFormatImpl + BFloatFormatParameters BFont BFontPrivate BFormat BFormatImpl + BFormatParameters BFormattingConventions + BGameSound BGameSoundDevice BGenericNumberFormat BGLDispatcher + BGlobalWritableFileInfo BGLRenderer BGLScreen BGLView BGopherRequest + BGradient BGradientConic BGradientDiamond BGradientLinear + BGradientRadial BGradientRadialFocus BGridLayout BGridLayoutBuilder + BGridView BGroupLayout BGroupLayoutBuilder BGroupView + BHandler BHttpAuthentication BHttpForm BHttpFormData BHttpHeader + BHttpHeaders BHttpRequest BHttpResult + BIcon BIconUtils BInboundMailProtocol BInputDevice + BInputServerDevice BInputServerFilter BInputServerMethod + BInstallationLocationInfo BIntegerFormat BIntegerFormatImpl + BIntegerFormatParameters BInvoker + BJob BJobStateListener BJoystick + BKey BKeyStore + BLanguage BLayout BLayoutBuilder BLayoutContext + BLayoutContextListener BLayoutItem BLayoutUtils BList BListItem + BListView BLocale BLocaleRoster BLocker BLooper BLooperList + BLowLevelPackageContentHandler + BMailAccounts BMailAccountSettings BMailAddOnSettings + BMailAttachment BMailComponent BMailContainer BMailDaemon + BMailFilter BMailMessage BMailNotifier BMailProtocol + BMailProtocolSettings BMailSettings BMailSettingsView BMallocIO + BMediaAddOn BMediaBufferDecoder BMediaBufferEncoder BMediaDecoder + BMediaEncoder BMediaEventLooper BMediaFile BMediaFiles BMediaFormats + BMediaNode BMediaRoster BMediaRosterEx BMediaTheme BMediaTrack + BMemoryIO BMenu BMenuBar BMenuField BMenuItem BMenuWindow BMessage + BMessageFilter BMessageFormat BMessageQueue BMessageRunner + BMessenger BMidi BMidiConsumer BMidiEndpoint BMidiEvent + BMidiLocalConsumer BMidiLocalProducer BMidiPort BMidiPortGlue + BMidiProducer BMidiRoster BMidiRosterLooper BMidiStore BMidiSynth + BMidiSynthFile BMidiText BMIMEMultipartMailContainer + BMimeSnifferAddon BMimeType BMultiChannelControl + BNetAddress BNetBuffer BNetDebug BNetEndpoint BNetworkAddress + BNetworkAddressResolver BNetworkConfigurationListener BNetworkCookie + BNetworkCookieJar BNetworkCookieList BNetworkDevice + BNetworkInterface BNetworkInterfaceAddress + BNetworkInterfaceAddressSettings BNetworkInterfaceListItem + BNetworkInterfaceSettings BNetworkProfile BNetworkRequest + BNetworkRoster BNetworkRoute BNetworkServiceAddressSettings + BNetworkServiceSettings BNetworkSettings BNetworkSettingsAddOn + BNetworkSettingsInterfaceItem BNetworkSettingsItem + BNetworkSettingsListener BNode BNodeInfo BNoErrorOutput + BNotification BNullParameter BNumberFormat BNumberFormatParameters + BObjectList BOptionControl BOptionPopUp BOutboundMailProtocol + BOutlineListView + BPackageAttributeValue BPackageContentHandler BPackageData + BPackageDataReaderFactory BPackageEntry BPackageEntryAttribute + BPackageInfo BPackageInfoAttributeValue BPackageInfoContentHandle + BPackageInfoSet BPackageReader BPackageResolvable + BPackageResolvableData BPackageResolvableExpression + BPackageResolvableExpressionData BPackageRoster BPackageVersion + BPackageVersionData BPackageWriter BPackageWriterListener + BPackageWriterParameters BParameter BParameterGroup BParameterWeb + BPasswordKey BPath BPathFinder BPicture BPictureButton BPoint + BPolygon BPopUpMenu BPositionIO BPrintJob BPropertyInfo + BPushGameSound + BQuery + BRadioButton BRecentAppsList BRecentFilesList BRecentFoldersList + BRecentItemsList BRect BReference BReferenceable BRefFilter + BRefreshRepositoryRequest BRegion BRepositoryCache BRepositoryConfig + BRepositoryContentHandler BRepositoryInfo BRepositoryReader + BRepositoryWriter BRepositoryWriterListener BRequest BResources + BResourceStrings BRoster + BSamples BScreen BScreenSaver BScrollBar BScrollView BSecureSocket + BSeparatorItem BSeparatorView BSerialPort BServer BServerSocket + BShape BShapeIterator BShelf BSimpleGameSound BSimpleMailAttachment + BSize BSlider BSmallBuffer BSocket BSoftSynth BSolver BSolverPackage + BSolverPackageSpecifier BSolverPackageSpecifierList BSolverProblem + BSolverProblemSolution BSolverProblemSolutionElement + BSolverRepository BSolverResult BSolverResultElement BSound + BSoundFile BSoundPlayer BSpaceLayoutItem BSplitLayout + BSplitLayoutBuilder BSplitView BStackOrHeapArray + BStandardErrorOutput BStatable BStatusBar BStopWatch + BStreamingGameSound BString BStringItem BStringList BStringRef + BStringView BSymLink BSynth BScintillaView + BTab BTabView BTextControl BTextMailComponent BTextParameter + BTextView BTime BTimeCode BTimedEventQueue BTimeFormat BTimeSource + BTimeUnitFormat BTimeZone BToolTip BToolBar BTrackReader + BTransactionIssue BTranslationUtils BTranslator BTranslatorRoster + BTwoDimensionalLayout + BUnarchiveManager BUnarchiver BUnicodeChar BUrl BUrlContext + BUrlProtocolAsynchronousListener BUrlProtocolDispatchingListener + BUrlProtocolListener BUrlProtocolRoster BUrlRequest BUrlResult + BUrlSynchronousRequest BUSBConfiguration BUSBDevice BUSBEndpoint + BUSBInterface BUSBRoster BUser BUserSettingsFileInfo + BView BVolume BVolumeRoster + BWindow BWindowScreen BWindowStack + # cmd used (in develop/headers/os): + # find . -name "*.h" | xargs -d"\n" -I% \ + # grep -o -E $'[ \t]+B_[A-Z0-9_]+' % | awk '{$1=$1};1' | sort -u | \ + # tr '\n' ' ' | fold -w 68 -s | sed 's/^/ /g' + # with B_HID_USB* and some B_BEOS* removed (~50 KiB of text) + # + minor tweaks + - > + B_0_BPS B_110_BPS B_115200_BPS B_1200_BPS B_134_BPS B_15_BIT_1024 + B_15_BIT_1152 B_15_BIT_1280 B_15_BIT_1600 B_15_BIT_640 B_15_BIT_800 + B_150_BPS B_16_BIT_1024 B_16_BIT_1152 B_16_BIT_1280 B_16_BIT_1600 + B_16_BIT_640 B_16_BIT_800 B_16_BIT_TRANSFER B_1800_BPS B_19200_BPS + B_2_POINT_INTERPOLATION B_200_BPS B_230400_BPS B_2400_BPS + B_2D_ACCELERATION B_300_BPS B_31250_BPS B_32_BIT_1024 B_32_BIT_1152 + B_32_BIT_1280 B_32_BIT_1600 B_32_BIT_640 B_32_BIT_800 + B_32_BIT_CONTIGUOUS B_32_BIT_FULL_LOCK B_38400_BPS + B_3D_ACCELERATION B_4800_BPS B_50_BPS B_57600_BPS B_600_BPS + B_75_BPS B_8_BIT_1024 B_8_BIT_1152 B_8_BIT_1280 B_8_BIT_1600 + B_8_BIT_640 B_8_BIT_800 B_8_BIT_DAC B_8_BIT_TRANSFER B_9600_BPS + B_AB_DAY_1 B_AB_DAY_2 B_AB_DAY_3 B_AB_DAY_4 B_AB_DAY_5 B_AB_DAY_6 + B_AB_DAY_7 B_AB_MON_1 B_AB_MON_10 B_AB_MON_11 B_AB_MON_12 + B_AB_MON_2 B_AB_MON_3 B_AB_MON_4 B_AB_MON_5 B_AB_MON_6 B_AB_MON_7 + B_AB_MON_8 B_AB_MON_9 B_ABORT B_ABOUT_REQUESTED + B_ABSOLUTE_REAL_TIME_TIMEOUT B_ABSOLUTE_TIMEOUT + B_ACCELERANT_CLONE_INFO_SIZE B_ACCELERANT_ENGINE_COUNT + B_ACCELERANT_ENTRY_POINT B_ACCELERANT_MODE_COUNT + B_ACCELERANT_PRIVATE_START B_ACCELERANT_RETRACE_SEMAPHORE + B_ACCELERANT_VERSION B_ACCORDION B_ACOUSTIC_BASS B_ACOUSTIC_GRAND + B_ACOUSTIC_GUITAR_NYLON B_ACOUSTIC_GUITAR_STEEL B_ACPI_MODULE_NAME + B_ACQUIRE_ENGINE B_ACQUIRE_OVERLAY_LOCK B_ACTIVATED + B_ACTIVE_ICON_BITMAP B_ACTIVE_SENSING B_ADD_FIXED_DRIVER + B_ADD_ON_IMAGE B_ADVANCED_PARAMETER B_AFFINE_IDENTITY_TRANSFORM + B_AFFINE_TRANSFORM_TYPE B_AFTER_TIME B_AGOGO B_AIFF_FILE + B_AIFF_FORMAT B_AIFF_FORMAT_FAMILY B_ALIGN_BOTTOM B_ALIGN_CENTER + B_ALIGN_HORIZONTAL_CENTER B_ALIGN_HORIZONTAL_UNSET B_ALIGN_LEFT + B_ALIGN_MIDDLE B_ALIGN_NO_VERTICAL B_ALIGN_RIGHT B_ALIGN_TOP + B_ALIGN_USE_FULL_HEIGHT B_ALIGN_USE_FULL_WIDTH + B_ALIGN_VERTICAL_CENTER B_ALIGN_VERTICAL_UNSET + B_ALIGNMENT_EXCEPTION B_ALIGNMENT_TYPE B_ALL_BORDERS + B_ALL_INSTALLATION_LOCATIONS B_ALL_NOTES_OFF B_ALL_WORKSPACES + B_ALLOW_ARCHITECTURE_CHANGE B_ALLOW_DEINSTALLATION + B_ALLOW_DOWNGRADE B_ALLOW_NAME_CHANGE B_ALLOW_REPLACEMENT + B_ALLOW_VENDOR_CHANGE B_ALPHA_COMPOSITE B_ALPHA_OVERLAY + B_ALPHA_VERSION B_ALPHABETIC_PRESENTATION_FORMS_BLOCK + B_ALREADY_PAUSED B_ALREADY_RESUMED B_ALREADY_RUNNING B_ALT_DIGITS + B_ALTO_SAX B_ALWAYS B_AM_STRING B_AMBIGUOUS_APP_LAUNCH B_AND B_ANY + B_ANY_ADDRESS B_ANY_BYTES_PER_ROW B_ANY_DELIVERY B_ANY_EVENT + B_ANY_FORMAT_FAMILY B_ANY_KERNEL_ADDRESS B_ANY_KERNEL_BLOCK_ADDRESS + B_ANY_NODE B_ANY_QUALITY B_ANY_SOURCE B_ANY_TYPE B_APP_ACTIVATED + B_APP_ERROR_BASE B_APP_HINT_CHANGED B_APP_IMAGE B_APP_IMAGE_SYMBOL + B_APP_MIME_TYPE B_APP_VERSION_KIND B_APPLAUSE B_APPS_DIRECTORY + B_ARABIC_EXTENDED_BLOCK B_ARABIC_PRESENTATION_FORMS_A_BLOCK + B_ARABIC_PRESENTATION_FORMS_B_BLOCK B_ARCHIVED_OBJECT B_ARGV_ONLY + B_ARGV_RECEIVED B_ARMENIAN_BLOCK B_ARROWS_BLOCK B_ASCII_TYPE + B_ASF_FORMAT_FAMILY B_ASSUME_OWNERSHIP B_ASYNCHRONOUS_CONTROLS + B_AT_TIME B_ATOM_TYPE B_ATOMIZER_MODULE_NAME B_ATOMREF_TYPE + B_ATTR_CHANGED B_ATTR_CREATED B_ATTR_INFO_CHANGED + B_ATTR_NAME_LENGTH B_ATTR_REMOVED B_AU_FORMAT B_AUDIO_CHAR + B_AUDIO_DOUBLE B_AUDIO_DRIVER_BASE B_AUDIO_FLOAT B_AUDIO_INT + B_AUDIO_PLAYBACK B_AUDIO_RECORDING B_AUDIO_SHORT B_AUDIO_SIZE_MASK + B_AUDIO_UCHAR B_AUTO_UPDATE_SIZE_LIMITS B_AVI B_AVI_FORMAT_FAMILY + B_AVOID_FOCUS B_AVOID_FRONT B_AVOID_TRANSLATION_MACROS + B_AVR_FORMAT_FAMILY B_BACKGROUND_APP B_BACKGROUND_ERASE_TEXT + B_BACKGROUND_IMAGE B_BACKGROUND_INFO B_BACKGROUND_MODE + B_BACKGROUND_MODE_CENTERED B_BACKGROUND_MODE_SCALED + B_BACKGROUND_MODE_TILED B_BACKGROUND_MODE_USE_ORIGIN + B_BACKGROUND_ORIGIN B_BACKGROUND_WORKSPACES B_BACKSPACE + B_BAD_ADDRESS B_BAD_DATA B_BAD_HANDLER B_BAD_IMAGE_ID B_BAD_INDEX + B_BAD_INSTRUMENT B_BAD_MIDI_DATA B_BAD_MIME_SNIFFER_RULE + B_BAD_PORT_ID B_BAD_REPLY B_BAD_SCRIPT_SYNTAX B_BAD_SEM_ID + B_BAD_SUBSCRIBER B_BAD_TEAM_ID B_BAD_THREAD_ID B_BAD_THREAD_STATE + B_BAD_TYPE B_BAD_VALUE B_BAGPIPE B_BALANCE B_BANJO B_BARITONE_SAX + B_BASE_ADDRESS B_BASIC_ARABIC_BLOCK B_BASIC_GEORGIAN_BLOCK + B_BASIC_GREEK_BLOCK B_BASIC_HEBREW_BLOCK B_BASIC_LATIN_BLOCK + B_BASS_LEAD B_BASSOON B_BEFORE_TIME B_BEGINS_WITH + B_BENDIAN_TO_HOST_DOUBLE B_BENDIAN_TO_HOST_FLOAT + B_BENDIAN_TO_HOST_INT16 B_BENDIAN_TO_HOST_INT32 + B_BENDIAN_TO_HOST_INT64 B_BENGALI_BLOCK B_BEOS_VERSION + B_BEOS_VERSION_4 B_BEOS_VERSION_4_5 B_BEOS_VERSION_5 + B_BEOS_VERSION_MAUI B_BETA_VERSION B_BEVEL_JOIN B_BIG_ENDIAN + B_BIG_RGB_16_BIT B_BIG_RGB_32_BIT B_BIG_SYNTH B_BIG_SYNTH_FILE + B_BIG5_CONVERSION B_BIOS_MODULE_NAME B_BIRD_TWEET + B_BITMAP_ACCEPTS_VIEWS B_BITMAP_CLEAR_TO_WHITE B_BITMAP_IS_AREA + B_BITMAP_IS_CONTIGUOUS B_BITMAP_IS_LOCKED B_BITMAP_IS_OFFSCREEN + B_BITMAP_NO_SERVER_LINK B_BITMAP_RESERVE_OVERLAY_CHANNEL + B_BITMAP_SPACING B_BITMAP_WILL_OVERLAY + B_BITMAPS_SUPPORT_ATTACHED_VIEWS B_BITMAPS_SUPPORT_OVERLAY B_BITRATE + B_BLANK_PEDESTAL B_BLEND_FRAME B_BLOCK_ELEMENTS_BLOCK B_BLOCK_THUMB + B_BLOWN_BOTTLE B_BMP_FORMAT B_BOLD_FACE B_BOOL_TYPE B_BOPOMOFO_BLOCK + B_BORDER_CONTENTS B_BORDER_EACH_ITEM B_BORDER_FRAME B_BORDERED_WINDOW + B_BORDERED_WINDOW_LOOK B_BOTTOM_BORDER B_BOUNDS_CHECK_EXCEPTION + B_BOWED B_BOX_DRAWING_BLOCK B_BRASS_SECTION B_BREATH_CONTROLLER + B_BREATH_NOISE B_BRIGHT_GRAND B_BT_SUCCEEDED B_BT_WAIT + B_BUFFER_BOTTOM_TO_TOP B_BUFFER_CONSUMER B_BUFFER_MOVED + B_BUFFER_NONINTERLEAVED B_BUFFER_NOT_AVAILABLE B_BUFFER_OVERFLOW + B_BUFFER_PRODUCER B_BUFFER_RESET B_BUFFER_RESIZED + B_BUFFER_TOP_TO_BOTTOM B_BUSTED_PIPE B_BUSY B_BUTT_CAP B_BUTT_JOIN + B_BUTTON_BACKGROUND B_BUTTON_BEHAVIOR B_BUTTON_FRAME + B_BUTTON_WITH_POP_UP_BACKGROUND B_BW_PRINTER B_BYTE_ALIGNMENT + B_CABLE_MESSAGE B_CALLIOPE B_CAM_FOR_DRIVER_MODULE_NAME + B_CAM_FOR_SIM_MODULE_NAME B_CAN_INTERRUPT B_CANCEL B_CANCEL_BUTTON + B_CANCELED B_CAPS_LOCK B_CAPS_SHIFT_TABLE B_CAPS_TABLE B_CATKEY + B_CD B_CD_FORMAT B_CELESTA B_CELESTE_DEPTH B_CELLO B_CELLS_16 + B_CELLS_32 B_CELLS_4 B_CELLS_64 B_CELLS_8 B_CHANNEL_BACK_CENTER + B_CHANNEL_CENTER B_CHANNEL_FRONT_LEFT_CENTER + B_CHANNEL_FRONT_RIGHT_CENTER B_CHANNEL_LEFT B_CHANNEL_PRESSURE + B_CHANNEL_REARLEFT B_CHANNEL_REARRIGHT B_CHANNEL_RIGHT + B_CHANNEL_SIDE_LEFT B_CHANNEL_SIDE_RIGHT B_CHANNEL_SUB + B_CHANNEL_TOP_BACK_CENTER B_CHANNEL_TOP_BACK_LEFT + B_CHANNEL_TOP_BACK_RIGHT B_CHANNEL_TOP_CENTER + B_CHANNEL_TOP_FRONT_CENTER B_CHANNEL_TOP_FRONT_LEFT + B_CHANNEL_TOP_FRONT_RIGHT B_CHAR_SPACING B_CHAR_TYPE B_CHARANG + B_CHECK_CONTINUOSLY B_CHECK_CONTINUOUSLY B_CHECK_DAILY + B_CHECK_NEVER B_CHECK_PERMISSION B_CHECK_WEEKDAYS B_CHIFF B_CHOIR + B_CHORUS_DEPTH B_CHURCH_ORGAN B_CJK_COMPATIBILITY_BLOCK + B_CJK_COMPATIBILITY_FORMS_BLOCK + B_CJK_COMPATIBILITY_IDEOGRAPHS_BLOCK B_CJK_MISCELLANEOUS_BLOCK + B_CJK_SYMBOLS_AND_PUNCTUATION_BLOCK B_CJK_UNIFIED_IDEOGRAPHS_BLOCK + B_CLARINET B_CLAVICHORD B_CLEAN_BUFFERS B_CLICK_SPEED_CHANGED + B_CLICK_TO_FOCUS_MOUSE B_CLICKED B_CLIP_SHORT_RUNS + B_CLIPBOARD_CHANGED B_CLIPPING_MODIFIED B_CLONE_ACCELERANT + B_CLONE_ADDRESS B_CLOSE_CLONED_GRAPHICS_CARD B_CLOSE_GRAPHICS_CARD + B_CLOSE_ON_ESCAPE B_CLOSE_REQUESTED B_CMAP8 B_CMY24 B_CMY32 + B_CMYA32 B_CMYK32 B_CODEC_TYPE_INFO B_CODESET B_COLLATE_DEFAULT + B_COLLATE_IDENTICAL B_COLLATE_PRIMARY B_COLLATE_QUATERNARY + B_COLLATE_SECONDARY B_COLLATE_TERTIARY B_COLLECTING_CATKEYS + B_COLOR_8_BIT B_COLOR_8_BIT_TYPE B_COLOR_PRINTER B_COLOR_SPACE + B_COLORS_UPDATED B_COMBINING_DIACRITICAL_MARKS_BLOCK + B_COMBINING_HALF_MARKS_BLOCK B_COMBINING_MARKS_FOR_SYMBOLS_BLOCK + B_COMMAND_KEY B_COMMAND_KIND B_COMPLETE_BUFFER B_COMPRESSION + B_CONDENSED_FACE B_CONFIG_GRAPHICS_CARD + B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME B_CONFLICTING_REQUESTS + B_CONNECT_MUTED B_CONSTANT_ALPHA B_CONTAINS B_CONTIGUOUS B_CONTINUE + B_CONTINUOUS_PARAMETER B_CONTRABASS B_CONTROL_BACKGROUND_COLOR + B_CONTROL_BG B_CONTROL_BORDER_COLOR B_CONTROL_CHANGE B_CONTROL_FG + B_CONTROL_HIGHLIGHT_COLOR B_CONTROL_INVOKED B_CONTROL_KEY + B_CONTROL_MARK_COLOR B_CONTROL_MODIFIED B_CONTROL_OFF B_CONTROL_ON + B_CONTROL_PARTIALLY_ON B_CONTROL_PICTURES_BLOCK B_CONTROL_TABLE + B_CONTROL_TEXT_COLOR B_CONTROLLABLE B_COPY B_COPY_TARGET B_COUNT_OF + B_COUNT_PROPERTIES B_COUNTRY_STRINGS_BASE B_CPU B_CPU_ALPHA + B_CPU_ARM B_CPU_ARM_64 B_CPU_M68K B_CPU_MIPS B_CPU_PPC B_CPU_PPC_64 + B_CPU_SH B_CPU_UNKNOWN B_CPU_VENDOR_AMD B_CPU_VENDOR_CYRIX + B_CPU_VENDOR_IBM B_CPU_VENDOR_IDT B_CPU_VENDOR_INTEL + B_CPU_VENDOR_MOTOROLA B_CPU_VENDOR_NATIONAL_SEMICONDUCTOR + B_CPU_VENDOR_NEC B_CPU_VENDOR_RISE B_CPU_VENDOR_TRANSMETA + B_CPU_VENDOR_UNKNOWN B_CPU_VENDOR_VIA B_CREATE_ACTIVE_ICON_BITMAP + B_CREATE_DISABLED_ICON_BITMAPS B_CREATE_FILE + B_CREATE_PARAMETER_EDITOR B_CREATE_PARTIALLY_ACTIVE_ICON_BITMAP + B_CREATE_PROPERTY B_CROSS_DEVICE_LINK B_CROSSFADE B_CRT_CONTROL + B_CUR_DRIVER_API_VERSION B_CURRENCY_FIELD B_CURRENCY_SYMBOLS_BLOCK + B_CURRENT_FS_API_VERSION B_CURRENT_IMAGE_SYMBOL B_CURRENT_TEAM + B_CURRENT_WORKSPACE B_CURSOR_ID_CONTEXT_MENU B_CURSOR_ID_COPY + B_CURSOR_ID_CREATE_LINK B_CURSOR_ID_CROSS_HAIR + B_CURSOR_ID_FOLLOW_LINK B_CURSOR_ID_GRAB B_CURSOR_ID_GRABBING + B_CURSOR_ID_HELP B_CURSOR_ID_I_BEAM B_CURSOR_ID_I_BEAM_HORIZONTAL + B_CURSOR_ID_MOVE B_CURSOR_ID_NO_CURSOR B_CURSOR_ID_NOT_ALLOWED + B_CURSOR_ID_PROGRESS B_CURSOR_ID_RESIZE_EAST + B_CURSOR_ID_RESIZE_EAST_WEST B_CURSOR_ID_RESIZE_NORTH + B_CURSOR_ID_RESIZE_NORTH_EAST + B_CURSOR_ID_RESIZE_NORTH_EAST_SOUTH_WEST + B_CURSOR_ID_RESIZE_NORTH_SOUTH B_CURSOR_ID_RESIZE_NORTH_WEST + B_CURSOR_ID_RESIZE_NORTH_WEST_SOUTH_EAST B_CURSOR_ID_RESIZE_SOUTH + B_CURSOR_ID_RESIZE_SOUTH_EAST B_CURSOR_ID_RESIZE_SOUTH_WEST + B_CURSOR_ID_RESIZE_WEST B_CURSOR_ID_SYSTEM_DEFAULT + B_CURSOR_ID_ZOOM_IN B_CURSOR_ID_ZOOM_OUT B_CUT B_CYRILLIC_BLOCK + B_DARKEN_1_TINT B_DARKEN_2_TINT B_DARKEN_3_TINT B_DARKEN_4_TINT + B_DARKEN_MAX_TINT B_DATA_AVAILABLE B_DATA_BITS_7 B_DATA_BITS_8 + B_DATA_DECREMENT B_DATA_ENTRY B_DATA_INCREMENT B_DATA_NOT_AVAILABLE + B_DATA_READ_WATCHPOINT B_DATA_READ_WRITE_WATCHPOINT B_DATA_STATUS + B_DATA_WRITE_WATCHPOINT B_DATE_ELEMENT_AM_PM B_DATE_ELEMENT_DAY + B_DATE_ELEMENT_HOUR B_DATE_ELEMENT_INVALID B_DATE_ELEMENT_MINUTE + B_DATE_ELEMENT_MONTH B_DATE_ELEMENT_SECOND B_DATE_ELEMENT_TIMEZONE + B_DATE_ELEMENT_WEEKDAY B_DATE_ELEMENT_YEAR + B_DATE_FORMAT_STYLE_COUNT B_DATE_SEPARATOR B_DATE_TIME_FORMAT + B_DAY_1 B_DAY_2 B_DAY_3 B_DAY_4 B_DAY_5 B_DAY_6 B_DAY_7 + B_DEBUG_MESSAGE_CLEAR_BREAKPOINT + B_DEBUG_MESSAGE_CLEAR_WATCHPOINT B_DEBUG_MESSAGE_CONTINUE_THREAD + B_DEBUG_MESSAGE_GET_CPU_STATE B_DEBUG_MESSAGE_GET_SIGNAL_HANDLER + B_DEBUG_MESSAGE_GET_SIGNAL_MASKS B_DEBUG_MESSAGE_PREPARE_HANDOVER + B_DEBUG_MESSAGE_READ_MEMORY B_DEBUG_MESSAGE_SET_BREAKPOINT + B_DEBUG_MESSAGE_SET_CPU_STATE B_DEBUG_MESSAGE_SET_SIGNAL_HANDLER + B_DEBUG_MESSAGE_SET_SIGNAL_MASKS B_DEBUG_MESSAGE_SET_TEAM_FLAGS + B_DEBUG_MESSAGE_SET_THREAD_FLAGS B_DEBUG_MESSAGE_SET_WATCHPOINT + B_DEBUG_MESSAGE_WRITE_MEMORY B_DEBUG_PROFILE_EVENT_BASE + B_DEBUG_PROFILE_EVENT_PARAMETER_MASK B_DEBUG_PROFILE_IMAGE_EVENT + B_DEBUG_SIGNAL_MASK_AND B_DEBUG_SIGNAL_MASK_OR + B_DEBUG_SIGNAL_MASK_SET B_DEBUG_SIGNAL_TO_MASK + B_DEBUG_SPINLOCK_CONTENTION B_DEBUG_START_PROFILER + B_DEBUG_STOP_PROFILER B_DEBUG_WRITE_CORE_FILE + B_DEBUGGER_ALREADY_INSTALLED B_DEBUGGER_MESSAGE_BREAKPOINT_HIT + B_DEBUGGER_MESSAGE_DEBUGGER_CALL + B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED + B_DEBUGGER_MESSAGE_HANDED_OVER B_DEBUGGER_MESSAGE_IMAGE_CREATED + B_DEBUGGER_MESSAGE_IMAGE_DELETED B_DEBUGGER_MESSAGE_POST_SYSCALL + B_DEBUGGER_MESSAGE_PRE_SYSCALL B_DEBUGGER_MESSAGE_PROFILER_UPDATE + B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED B_DEBUGGER_MESSAGE_SINGLE_STEP + B_DEBUGGER_MESSAGE_TEAM_CREATED B_DEBUGGER_MESSAGE_TEAM_DELETED + B_DEBUGGER_MESSAGE_TEAM_EXEC B_DEBUGGER_MESSAGE_THREAD_CREATED + B_DEBUGGER_MESSAGE_THREAD_DEBUGGED + B_DEBUGGER_MESSAGE_THREAD_DELETED B_DEBUGGER_MESSAGE_WATCHPOINT_HIT + B_DECIMAL_SEPARATOR B_DECIMAL_SEPARATOR_FIELD B_DECREASE_PRECISION + B_DEFAULT_BUTTON B_DEFAULT_MEDIA_PRIORITY B_DEFAULT_MITER_LIMIT + B_DEFAULT_SYNTH B_DEFINE_HPKG_ATTRIBUTE B_DEFINE_SYMBOL_VERSION + B_DEFINE_WEAK_ALIAS B_DELETE B_DELETE_MAIL_ACTION + B_DELETE_PARAMETER_EDITOR B_DELETE_PROPERTY B_DELETE_TRANSLATOR + B_DEPENDENCY_NOT_INSTALLABLE B_DEPENDENCY_NOT_PROVIDED + B_DEPENDENCY_PROBLEM B_DESKBAR_BOTTOM B_DESKBAR_LEFT_BOTTOM + B_DESKBAR_LEFT_TOP B_DESKBAR_RIGHT_BOTTOM B_DESKBAR_RIGHT_TOP + B_DESKBAR_TOP B_DESKTOP_COLOR B_DESKTOP_DIRECTORY + B_DEV_BAD_DRIVE_NUM B_DEV_BAD_PID B_DEV_CONFIGURATION_ERROR + B_DEV_CRC_ERROR B_DEV_DATA_OVERRUN B_DEV_DATA_UNDERRUN + B_DEV_DISABLED_BY_USER B_DEV_DOOR_OPEN B_DEV_FIFO_OVERRUN + B_DEV_FIFO_UNDERRUN B_DEV_FORMAT_ERROR B_DEV_ID_ERROR + B_DEV_INVALID_IOCTL B_DEV_INVALID_PIPE B_DEV_MEDIA_CHANGE_REQUESTED + B_DEV_MEDIA_CHANGED B_DEV_MULTIPLE_ERRORS B_DEV_NAME_LENGTH + B_DEV_NO_MEDIA B_DEV_NO_MEMORY B_DEV_NOT_READY B_DEV_PENDING + B_DEV_READ_ERROR B_DEV_RECALIBRATE_ERROR B_DEV_RESOURCE_CONFLICT + B_DEV_SEEK_ERROR B_DEV_STALLED B_DEV_TIMEOUT B_DEV_TOO_LATE + B_DEV_UNEXPECTED_PID B_DEV_UNREADABLE B_DEV_WRITE_ERROR + B_DEVANAGARI_BLOCK B_DEVELOPMENT_VERSION B_DEVICE_BUS + B_DEVICE_ERROR_BASE B_DEVICE_FIXED_CHILD B_DEVICE_FLAGS + B_DEVICE_FULL B_DEVICE_ID B_DEVICE_INFO_CAN_BE_DISABLED + B_DEVICE_INFO_CONFIGURED B_DEVICE_INFO_ENABLED B_DEVICE_INTERFACE + B_DEVICE_MANAGER_MODULE_NAME B_DEVICE_MAPPING B_DEVICE_MOUNTED + B_DEVICE_NOT_FOUND B_DEVICE_OP_CODES_END B_DEVICE_PRETTY_NAME + B_DEVICE_SUB_TYPE B_DEVICE_TYPE B_DEVICE_UNIQUE_ID + B_DEVICE_UNMOUNTED B_DEVICE_VENDOR_ID B_DINGBATS_BLOCK + B_DIRECT_MODE_MASK B_DIRECT_MODIFY B_DIRECT_SPECIFIER + B_DIRECT_START B_DIRECT_STOP B_DIRECTORY_NODE B_DIRECTORY_NOT_EMPTY + B_DISABLE_ANTIALIASING B_DISABLED B_DISABLED_ICON_BITMAP + B_DISABLED_LABEL_TINT B_DISABLED_MARK_TINT B_DISCRETE_PARAMETER + B_DISK B_DISK_DEVICE_HAS_MEDIA B_DISK_DEVICE_IS_FILE + B_DISK_DEVICE_JOB_BAD_TYPE + B_DISK_DEVICE_JOB_CAN_CANCEL B_DISK_DEVICE_JOB_CAN_PAUSE + B_DISK_DEVICE_JOB_CANCEL B_DISK_DEVICE_JOB_CANCELED + B_DISK_DEVICE_JOB_CONTINUE B_DISK_DEVICE_JOB_CREATE + B_DISK_DEVICE_JOB_DEFRAGMENT B_DISK_DEVICE_JOB_DELETE + B_DISK_DEVICE_JOB_FAILED B_DISK_DEVICE_JOB_IN_PROGRESS + B_DISK_DEVICE_JOB_INITIALIZE B_DISK_DEVICE_JOB_MOVE + B_DISK_DEVICE_JOB_REPAIR B_DISK_DEVICE_JOB_RESIZE + B_DISK_DEVICE_JOB_REVERSE B_DISK_DEVICE_JOB_REVERSE_ON_CANCEL + B_DISK_DEVICE_JOB_SCAN B_DISK_DEVICE_JOB_SCHEDULED + B_DISK_DEVICE_JOB_SET_CONTENT_NAME + B_DISK_DEVICE_JOB_SET_CONTENT_PARAMETERS B_DISK_DEVICE_JOB_SET_NAME + B_DISK_DEVICE_JOB_SET_PARAMETERS B_DISK_DEVICE_JOB_SET_TYPE + B_DISK_DEVICE_JOB_STOP_ON_CANCEL B_DISK_DEVICE_JOB_SUCCEEDED + B_DISK_DEVICE_JOB_UNINITIALIZE B_DISK_DEVICE_JOB_UNINITIALIZED + B_DISK_DEVICE_MAX_PARAMETER_SIZE B_DISK_DEVICE_NAME_LENGTH + B_DISK_DEVICE_READ_ONLY B_DISK_DEVICE_REMOVABLE + B_DISK_DEVICE_TYPE_LENGTH B_DISK_DEVICE_WRITE_ONCE + B_DISK_SYSTEM_IS_FILE_SYSTEM B_DISK_SYSTEM_NAME_LENGTH + B_DISK_SYSTEM_SUPPORTS_CHECKING + B_DISK_SYSTEM_SUPPORTS_CHECKING_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_CONTENT_NAME + B_DISK_SYSTEM_SUPPORTS_CREATING_CHILD + B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING + B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_DELETING_CHILD + B_DISK_SYSTEM_SUPPORTS_INITIALIZING B_DISK_SYSTEM_SUPPORTS_MOVING + B_DISK_SYSTEM_SUPPORTS_MOVING_CHILD + B_DISK_SYSTEM_SUPPORTS_MOVING_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_NAME B_DISK_SYSTEM_SUPPORTS_REPAIRING + B_DISK_SYSTEM_SUPPORTS_REPAIRING_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_RESIZING + B_DISK_SYSTEM_SUPPORTS_RESIZING_CHILD + B_DISK_SYSTEM_SUPPORTS_RESIZING_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME + B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS + B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS_WHILE_MOUNTED + B_DISK_SYSTEM_SUPPORTS_SETTING_NAME + B_DISK_SYSTEM_SUPPORTS_SETTING_PARAMETERS + B_DISK_SYSTEM_SUPPORTS_SETTING_TYPE B_DISK_SYSTEM_SUPPORTS_WRITING + B_DISPATCH_MESSAGE B_DISPLAY_PRIORITY B_DISTORTION_GUITAR + B_DIVIDE_ERROR B_DMA_ALIGNMENT B_DMA_BOUNDARY B_DMA_HIGH_ADDRESS + B_DMA_IO B_DMA_LOW_ADDRESS B_DMA_MAX_SEGMENT_BLOCKS + B_DMA_MAX_SEGMENT_COUNT B_DMA_MAX_TRANSFER_BLOCKS B_DMA_RESOURCE + B_DO_NOT_RESCHEDULE B_DO_NOT_RESIZE_TO_FIT + B_DOCUMENT_BACKGROUND_COLOR B_DOCUMENT_TEXT_COLOR B_DOCUMENT_WINDOW + B_DOCUMENT_WINDOW_LOOK B_DONE B_DONT_ASSUME_OWNERSHIP + B_DONT_DEINSTALL B_DONT_DEINSTALL_ALL B_DONT_DO_THAT + B_DONT_FORBID_INSTALLATION B_DONT_INSTALL + B_DONT_INSTALL_MOST_RECENT B_DONT_KEEP B_DONT_LOCK B_DOUBLE_TYPE + B_DOWN_ARROW B_DPC_MODULE_NAME B_DPMS B_DPMS_CAPABILITIES + B_DPMS_MODE B_DPMS_OFF B_DPMS_ON B_DPMS_STAND_BY B_DPMS_SUSPEND + B_DRAW_ON_CHILDREN B_DRAWBAR_ORGAN B_DRIVER_CHANGED B_DROP_DATA + B_DROP_SAMPLE B_DROPPED_DELIVERY B_DULCIMER B_DUPLICATE_REPLY + B_DXF_FORMAT B_EDIT_BG B_EDIT_FG B_EFFECTS_DEPTH B_EJECT_DEVICE + B_ELECTRIC_BASS_FINGER B_ELECTRIC_BASS_PICK B_ELECTRIC_GRAND + B_ELECTRIC_GUITAR_CLEAN B_ELECTRIC_GUITAR_JAZZ + B_ELECTRIC_GUITAR_MUTED B_ELECTRIC_PIANO_1 B_ELECTRIC_PIANO_2 + B_ELF_APP_MIME_TYPE B_EMPTY_ALERT B_ENABLE B_ENABLE_DEBUGGER + B_ENABLE_VIEW_DRAWING B_ENCLOSED_ALPHANUMERICS_BLOCK + B_ENCLOSED_CJK_LETTERS_AND_MONTHS_BLOCK B_END B_ENDORSABLE + B_ENDS_WITH B_ENGLISH_HORN B_ENTER B_ENTERED_VIEW + B_ENTITY_INTERFACE B_ENTRY_CREATED B_ENTRY_MOVED B_ENTRY_NOT_FOUND + B_ENTRY_REMOVED B_EPS_FORMAT B_EQ B_EQUALIZATION B_ERA + B_ERA_DATE_FORMAT B_ERA_DATE_TIME_FORMAT B_ERA_TIME_FORMAT + B_ERASE_FILE B_ERROR B_ERROR_NOTIFICATION B_ERRORS_END B_ESCAPE + B_EUC_CONVERSION B_EUC_KR_CONVERSION B_EVEN_ODD B_EVEN_PARITY + B_EVEN_SPACING B_EVENT_ACQUIRE_SEMAPHORE B_EVENT_DISCONNECTED + B_EVENT_ERROR B_EVENT_HIGH_PRIORITY_READ + B_EVENT_HIGH_PRIORITY_WRITE B_EVENT_INVALID B_EVENT_PRIORITY_READ + B_EVENT_PRIORITY_WRITE B_EVENT_READ B_EVENT_WRITE + B_EVERYTHING_CHANGED B_EXACT_ADDRESS B_EXCEPTION_OCCURRED + B_EXCLUSIVE B_EXCLUSIVE_LAUNCH B_EXECUTE_AREA B_EXECUTE_PROPERTY + B_EXITED_VIEW B_EXPIRE_TIMER B_EXPONENT_FIELD B_EXPONENT_SIGN_FIELD + B_EXPONENT_SYMBOL_FIELD B_EXPONENTIAL B_EXPRESSION_CTRL B_F1_BUFFER + B_F1_DOMINANT B_F1_KEY B_F10_KEY B_F11_KEY B_F12_KEY B_F2_BUFFER + B_F2_DOMINANT B_F2_KEY B_F3_KEY B_F4_KEY B_F5_KEY B_F6_KEY B_F7_KEY + B_F8_KEY B_F9_KEY B_FAIL_IF_EXISTS B_FAILURE_COLOR B_FANCY_BORDER + B_FDT_MODULE_NAME B_FIDDLE B_FIELD_NAME_LENGTH B_FIFTHS + B_FILE_ERROR B_FILE_EXISTS B_FILE_EXTENSIONS_CHANGED + B_FILE_INTERFACE B_FILE_MIME_TYPE B_FILE_NAME_LENGTH B_FILE_NODE + B_FILE_NOT_FOUND B_FILE_TOO_LARGE B_FILL_RECTANGLE B_FILL_SPAN + B_FILTER_BITMAP_BILINEAR B_FINAL_VERSION B_FIND_CASE_INSENSITIVE + B_FIND_CHILD_ON_DEMAND B_FIND_IN_DESCRIPTION B_FIND_IN_NAME + B_FIND_IN_PROVIDES B_FIND_IN_REQUIRES B_FIND_IN_SUMMARY + B_FIND_INSTALLED_ONLY B_FIND_MULTIPLE_CHILDREN + B_FIND_PATH_ADD_ONS_DIRECTORY B_FIND_PATH_APPS_DIRECTORY + B_FIND_PATH_BIN_DIRECTORY B_FIND_PATH_BOOT_DIRECTORY + B_FIND_PATH_CACHE_DIRECTORY B_FIND_PATH_CREATE_DIRECTORY + B_FIND_PATH_CREATE_PARENT_DIRECTORY B_FIND_PATH_DATA_DIRECTORY + B_FIND_PATH_DEVELOP_DIRECTORY B_FIND_PATH_DEVELOP_LIB_DIRECTORY + B_FIND_PATH_DOCUMENTATION_DIRECTORY B_FIND_PATH_ETC_DIRECTORY + B_FIND_PATH_EXISTING_ONLY B_FIND_PATH_FONTS_DIRECTORY + B_FIND_PATH_HEADERS_DIRECTORY B_FIND_PATH_IMAGE_PATH + B_FIND_PATH_INSTALLATION_LOCATION_DIRECTORY + B_FIND_PATH_LIB_DIRECTORY B_FIND_PATH_LOG_DIRECTORY + B_FIND_PATH_MEDIA_NODES_DIRECTORY B_FIND_PATH_PACKAGE_PATH + B_FIND_PATH_PACKAGES_DIRECTORY B_FIND_PATH_PREFERENCES_DIRECTORY + B_FIND_PATH_SERVERS_DIRECTORY B_FIND_PATH_SETTINGS_DIRECTORY + B_FIND_PATH_SOUNDS_DIRECTORY B_FIND_PATH_SPOOL_DIRECTORY + B_FIND_PATH_TRANSLATORS_DIRECTORY B_FIND_PATH_VAR_DIRECTORY + B_FIND_PATHS_SYSTEM_ONLY B_FIND_PATHS_USER_ONLY + B_FIRST_REAL_TIME_PRIORITY B_FIRST_USER_ATTRIBUTE B_FIRST_USER_TYPE + B_FIXED_SPACING B_FLAT B_FLAVOR_IS_GLOBAL B_FLAVOR_IS_LOCAL + B_FLOAT_SAMPLES B_FLOAT_TYPE B_FLOATING_ALL_WINDOW_FEEL + B_FLOATING_APP_WINDOW_FEEL B_FLOATING_POINT_EXCEPTION + B_FLOATING_SUBSET_WINDOW_FEEL B_FLOATING_WINDOW + B_FLOATING_WINDOW_LOOK B_FLUSH_DCACHE B_FLUSH_DRIVE_CACHE + B_FLUSH_ICACHE B_FLUTE B_FOCUS_FOLLOWS_MOUSE B_FOCUSED B_FOLLOW_ALL + B_FOLLOW_ALL_SIDES B_FOLLOW_BOTTOM B_FOLLOW_H_CENTER B_FOLLOW_LEFT + B_FOLLOW_LEFT_RIGHT B_FOLLOW_LEFT_TOP B_FOLLOW_NONE B_FOLLOW_RIGHT + B_FOLLOW_TOP B_FOLLOW_TOP_BOTTOM B_FOLLOW_V_CENTER B_FONT_ALL + B_FONT_ENCODING B_FONT_FACE B_FONT_FALSE_BOLD_WIDTH + B_FONT_FAMILY_AND_STYLE B_FONT_FAMILY_LENGTH B_FONT_FLAGS + B_FONT_LEFT_TO_RIGHT B_FONT_RIGHT_TO_LEFT B_FONT_ROTATION + B_FONT_SHEAR B_FONT_SIZE B_FONT_SPACING B_FONT_STYLE_LENGTH + B_FONTS_UPDATED B_FOOT_CONTROLLER B_FORCE_ANTIALIASING + B_FORCE_UNMOUNT B_FORMAT_CHANGED B_FORMAT_DEVICE B_FRACTION_FIELD + B_FRAME_BUFFER_CONTROL B_FRAME_EVENTS B_FRAME_RATE B_FRENCH_HORN + B_FREQUENCY B_FRET_NOISE B_FRETLESS_BASS B_FROM_POSIX_ERROR + B_FS_HAS_ALIASES B_FS_HAS_ATTR B_FS_HAS_MIME B_FS_HAS_QUERY + B_FS_HAS_SELF_HEALING_LINKS B_FS_IS_PERSISTENT B_FS_IS_READONLY + B_FS_IS_REMOVABLE B_FS_IS_SHARED B_FS_SUPPORTS_MONITOR_CHILDREN + B_FS_SUPPORTS_NODE_MONITORING B_FULL_DATE_FORMAT B_FULL_LOCK + B_FULL_POINTER_HISTORY B_FULL_TIME_FORMAT B_FULL_UPDATE_ON_RESIZE + B_FUNCTION_KEY B_FUTURE_STRING B_FX_1 B_FX_2 B_FX_3 B_FX_4 B_FX_5 + B_FX_6 B_FX_7 B_FX_8 B_GAIN B_GAMMA_CONTROL B_GAMMA_VERSION + B_GBK_CONVERSION B_GE B_GENERAL_BG B_GENERAL_CTRL_1 + B_GENERAL_CTRL_2 B_GENERAL_CTRL_3 B_GENERAL_CTRL_4 B_GENERAL_CTRL_5 + B_GENERAL_CTRL_6 B_GENERAL_CTRL_7 B_GENERAL_CTRL_8 + B_GENERAL_ERROR_BASE B_GENERAL_FG B_GENERAL_PROTECTION_FAULT + B_GENERAL_PUNCTUATION_BLOCK B_GENERIC B_GEOMETRIC_SHAPES_BLOCK + B_GEORGIAN_EXTENDED_BLOCK B_GET_ACCELERANT_CLONE_INFO + B_GET_ACCELERANT_DEVICE_INFO B_GET_ACCELERANT_SIGNATURE + B_GET_BIOS_DRIVE_ID B_GET_BIOS_GEOMETRY B_GET_BRIGHTNESS + B_GET_DEVICE_NAME B_GET_DEVICE_SIZE B_GET_DISPLAY_MODE + B_GET_DRIVER_FOR_DEVICE B_GET_EDID_INFO B_GET_FRAME_BUFFER_CONFIG + B_GET_GEOMETRY B_GET_GRAPHICS_CARD_HOOKS B_GET_GRAPHICS_CARD_INFO + B_GET_ICON B_GET_ICON_NAME B_GET_INFO_FOR_CLONE + B_GET_INFO_FOR_CLONE_SIZE B_GET_MEDIA_STATUS B_GET_MODE_LIST + B_GET_MONITOR_INFO B_GET_NEXT_OPEN_DEVICE B_GET_PARTITION_INFO + B_GET_PATH_FOR_DEVICE B_GET_PIXEL_CLOCK_LIMITS + B_GET_PREFERRED_DISPLAY_MODE B_GET_PROPERTY B_GET_READ_STATUS + B_GET_REFRESH_RATES B_GET_SCREEN_SPACES B_GET_SUPPORTED_SUITES + B_GET_SYNC_TOKEN B_GET_TIMING_CONSTRAINTS B_GET_VECTOR_ICON + B_GET_WRITE_STATUS B_GIF_FORMAT B_GLOCKENSPIEL B_GMT_TIME + B_GOLDEN_MASTER_VERSION B_GOP_SIZE B_GRAPHIC_DRIVER_BASE + B_GRAPHICS_HOOK_COUNT B_GRAY1 B_GRAY8 B_GRAYSCALE_8_BIT + B_GRAYSCALE_8_BIT_TYPE B_GREEK_EXTENDED_BLOCK + B_GREEK_SYMBOLS_AND_COPTIC_BLOCK B_GROUP_FRAME B_GROUPING_SEPARATOR + B_GROUPING_SEPARATOR_FIELD B_GS_ALREADY_COMMITTED B_GS_BAD_HANDLE + B_GS_CD_THROUGH_GAIN B_GS_CUR_API_VERSION B_GS_F + B_GS_FIRST_PRIVATE_ATTRIBUTE B_GS_FIRST_USER_ATTRIBUTE B_GS_GAIN + B_GS_INVALID_SOUND B_GS_LOOPING B_GS_MAIN_GAIN B_GS_MAIN_SOUND + B_GS_MIN_API_VERSION B_GS_NO_ATTRIBUTE B_GS_NO_HARDWARE + B_GS_NO_SOUNDS B_GS_PAN B_GS_READ_ONLY_VALUE B_GS_S16 B_GS_S32 + B_GS_SAMPLING_RATE B_GS_U8 B_GT B_GUITAR_HARMONICS B_GUJARATI_BLOCK + B_GUNSHOT B_GURMUKHI_BLOCK B_H_SCROLL_BAR_HEIGHT B_HAIKU_32_BIT + B_HAIKU_64_BIT B_HAIKU_ABI B_HAIKU_ABI_GCC_2 + B_HAIKU_ABI_GCC_2_ANCIENT B_HAIKU_ABI_GCC_2_BEOS + B_HAIKU_ABI_GCC_2_HAIKU B_HAIKU_ABI_GCC_4 B_HAIKU_ABI_MAJOR + B_HAIKU_ABI_NAME B_HAIKU_BEOS_COMPATIBLE B_HAIKU_BITS + B_HAIKU_PHYSICAL_32_BIT B_HAIKU_PHYSICAL_64_BIT + B_HAIKU_PHYSICAL_BITS B_HAIKU_VERSION B_HAIKU_VERSION_1 + B_HAIKU_VERSION_1_ALPHA_1 B_HAIKU_VERSION_1_ALPHA_2 + B_HAIKU_VERSION_1_ALPHA_3 B_HAIKU_VERSION_1_ALPHA_4 + B_HAIKU_VERSION_1_BETA_1 B_HAIKU_VERSION_1_PRE_ALPHA_2 + B_HAIKU_VERSION_1_PRE_ALPHA_3 B_HAIKU_VERSION_1_PRE_ALPHA_4 + B_HAIKU_VERSION_1_PRE_BETA_1 B_HAIKU_VERSION_1_PRE_BETA_2 + B_HAIKU_VERSION_BEOS B_HAIKU_VERSION_BONE B_HAIKU_VERSION_DANO + B_HALFWIDTH_AND_FULLWIDTH_FORMS_BLOCK B_HALO B_HAND_CURSOR + B_HANDLE_BUFFER B_HANDLED_INTERRUPT B_HANGUL B_HANGUL_BLOCK + B_HANGUL_COMPATIBILITY_JAMO_BLOCK B_HANGUL_HANJA + B_HANGUL_JAMO_BLOCK B_HANKAKU_ZENKAKU B_HARDWARE B_HARDWARE_CONTROL + B_HARDWARE_CURSOR B_HARMONICA B_HARPSICHORD B_HAS_TUNED_FONT + B_HASH_MARKS_BOTH B_HASH_MARKS_BOTTOM B_HASH_MARKS_LEFT + B_HASH_MARKS_NONE B_HASH_MARKS_RIGHT B_HASH_MARKS_TOP + B_HEADER_HAS_FLAGS B_HEAVY_FACE B_HEBREW_EXTENDED_BLOCK + B_HELICOPTER + B_HIDDEN_PARAMETER B_HIGH_QUALITY B_HIGH_SURROGATES_BLOCK + B_HIGHLIGHT_BACKGROUND_TINT B_HILITE_BG B_HILITE_FG + B_HIRAGANA_BLOCK B_HLS24 B_HLS32 B_HLSA32 B_HOLD_2 B_HOME + B_HOMOGENOUS_BUFFERS B_HONKY_TONK B_HOOK_COUNT B_HORIZONTAL + B_HORIZONTAL_SCROLL_BAR_BACKGROUND B_HOST_IS_BENDIAN + B_HOST_IS_LENDIAN B_HOST_TO_BENDIAN_DOUBLE B_HOST_TO_BENDIAN_FLOAT + B_HOST_TO_BENDIAN_INT16 B_HOST_TO_BENDIAN_INT32 + B_HOST_TO_BENDIAN_INT64 B_HOST_TO_LENDIAN_DOUBLE + B_HOST_TO_LENDIAN_FLOAT B_HOST_TO_LENDIAN_INT16 + B_HOST_TO_LENDIAN_INT32 B_HOST_TO_LENDIAN_INT64 B_HOURS_DIFF + B_HOVER B_HPKG_ATTRIBUTE_ENCODING_INT_16_BIT + B_HPKG_ATTRIBUTE_ENCODING_INT_32_BIT + B_HPKG_ATTRIBUTE_ENCODING_INT_64_BIT + B_HPKG_ATTRIBUTE_ENCODING_INT_8_BIT + B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP + B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE + B_HPKG_ATTRIBUTE_ENCODING_STRING_INLINE + B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE + B_HPKG_ATTRIBUTE_ID_DATA B_HPKG_ATTRIBUTE_ID_DATA_CHUNK_SIZE + B_HPKG_ATTRIBUTE_ID_DATA_COMPRESSION B_HPKG_ATTRIBUTE_ID_DATA_SIZE + B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY B_HPKG_ATTRIBUTE_ID_ENUM_COUNT + B_HPKG_ATTRIBUTE_ID_FILE_ATIME B_HPKG_ATTRIBUTE_ID_FILE_ATIME_NANOS + B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE + B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE_TYPE + B_HPKG_ATTRIBUTE_ID_FILE_CRTIM_NANOS + B_HPKG_ATTRIBUTE_ID_FILE_CRTIME B_HPKG_ATTRIBUTE_ID_FILE_GROUP + B_HPKG_ATTRIBUTE_ID_FILE_MTIME B_HPKG_ATTRIBUTE_ID_FILE_MTIME_NANOS + B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS B_HPKG_ATTRIBUTE_ID_FILE_TYPE + B_HPKG_ATTRIBUTE_ID_FILE_USER + B_HPKG_ATTRIBUTE_ID_PACKAGE_ARCHITECTURE + B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM + B_HPKG_ATTRIBUTE_ID_PACKAGE_CONFLICTS + B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT + B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION + B_HPKG_ATTRIBUTE_ID_PACKAGE_FLAGS + B_HPKG_ATTRIBUTE_ID_PACKAGE_FRESHENS + B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH + B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE + B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME + B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER + B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES + B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE + B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_TYPE + B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES + B_HPKG_ATTRIBUTE_ID_PACKAGE_REQUIRES + B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR + B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL + B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY + B_HPKG_ATTRIBUTE_ID_PACKAGE_SUPPLEMENTS + B_HPKG_ATTRIBUTE_ID_PACKAGE_URL B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR + B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR + B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO + B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR + B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE + B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_REVISION + B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH B_HPKG_ATTRIBUTE_TYPE_ENUM_COUNT + B_HPKG_ATTRIBUTE_TYPE_INT B_HPKG_ATTRIBUTE_TYPE_INVALID + B_HPKG_ATTRIBUTE_TYPE_RAW B_HPKG_ATTRIBUTE_TYPE_STRING + B_HPKG_ATTRIBUTE_TYPE_UINT B_HPKG_COMPRESSION_LEVEL_BEST + B_HPKG_COMPRESSION_LEVEL_FASTEST B_HPKG_COMPRESSION_LEVEL_NONE + B_HPKG_COMPRESSION_NONE B_HPKG_COMPRESSION_ZLIB + B_HPKG_COMPRESSION_ZSTD B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB + B_HPKG_DEFAULT_DATA_COMPRESSION + B_HPKG_DEFAULT_DIRECTORY_PERMISSIONS + B_HPKG_DEFAULT_FILE_PERMISSIONS B_HPKG_DEFAULT_FILE_TYPE + B_HPKG_DEFAULT_SYMLINK_PERMISSIONS B_HPKG_FILE_TYPE_DIRECTORY + B_HPKG_FILE_TYPE_FILE B_HPKG_FILE_TYPE_SYMLINK B_HPKG_MAGIC + B_HPKG_MAX_INLINE_DATA_SIZE B_HPKG_MINOR_VERSION + B_HPKG_PACKAGE_INFO_FILE_NAME + B_HPKG_READER_DONT_PRINT_VERSION_MISMATCH_MESSAGE B_HPKG_REPO_MAGIC + B_HPKG_REPO_MINOR_VERSION B_HPKG_REPO_VERSION + B_HPKG_SECTION_ENUM_COUNT B_HPKG_SECTION_HEADER B_HPKG_SECTION_HEAP + B_HPKG_SECTION_PACKAGE_ATTRIBUTES B_HPKG_SECTION_PACKAGE_TOC + B_HPKG_SECTION_REPOSITORY_INFO B_HPKG_VERSION + B_HPKG_WRITER_FORCE_ADD B_HPKG_WRITER_UPDATE_PACKAGE B_HSI24 + B_HSI32 B_HSIA32 B_HSV24 B_HSV32 B_HSVA32 B_HTTP_10 B_HTTP_11 + B_HTTP_AUTHENTICATION_ALGORITHM_MD5 + B_HTTP_AUTHENTICATION_ALGORITHM_MD5_SESS + B_HTTP_AUTHENTICATION_ALGORITHM_NONE B_HTTP_AUTHENTICATION_BASIC + B_HTTP_AUTHENTICATION_DIGEST B_HTTP_AUTHENTICATION_IE_DIGEST + B_HTTP_AUTHENTICATION_NONE B_HTTP_CONNECT B_HTTP_DELETE + B_HTTP_FORM_MULTIPART B_HTTP_FORM_URL_ENCODED B_HTTP_GET + B_HTTP_HEAD B_HTTP_OPTIONS B_HTTP_POST + B_HTTP_PROTOCOL_USER_AGENT_FORMAT B_HTTP_PUT B_HTTP_QOP_AUTH + B_HTTP_QOP_AUTHINT B_HTTP_QOP_NONE B_HTTP_STATUS__CLIENT_ERROR_BASE + B_HTTP_STATUS__CLIENT_ERROR_END B_HTTP_STATUS__INFORMATIONAL_BASE + B_HTTP_STATUS__INFORMATIONAL_END B_HTTP_STATUS__REDIRECTION_BASE + B_HTTP_STATUS__REDIRECTION_END B_HTTP_STATUS__SERVER_ERROR_BASE + B_HTTP_STATUS__SERVER_ERROR_END B_HTTP_STATUS__SUCCESS_BASE + B_HTTP_STATUS__SUCCESS_END B_HTTP_STATUS_ACCEPTED + B_HTTP_STATUS_BAD_GATEWAY B_HTTP_STATUS_BAD_REQUEST + B_HTTP_STATUS_CLASS_CLIENT_ERROR B_HTTP_STATUS_CLASS_INFORMATIONAL + B_HTTP_STATUS_CLASS_INVALID B_HTTP_STATUS_CLASS_REDIRECTION + B_HTTP_STATUS_CLASS_SERVER_ERROR B_HTTP_STATUS_CLASS_SUCCESS + B_HTTP_STATUS_CONFLICT B_HTTP_STATUS_CONTINUE B_HTTP_STATUS_CREATED + B_HTTP_STATUS_EXPECTATION_FAILED B_HTTP_STATUS_FORBIDDEN + B_HTTP_STATUS_FOUND B_HTTP_STATUS_GATEWAY_TIMEOUT + B_HTTP_STATUS_GONE B_HTTP_STATUS_INTERNAL_SERVER_ERROR + B_HTTP_STATUS_LENGTH_REQUIRED B_HTTP_STATUS_METHOD_NOT_ALLOWED + B_HTTP_STATUS_MOVED_PERMANENTLY B_HTTP_STATUS_MULTIPLE_CHOICE + B_HTTP_STATUS_NO_CONTENT + B_HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION + B_HTTP_STATUS_NOT_ACCEPTABLE B_HTTP_STATUS_NOT_FOUND + B_HTTP_STATUS_NOT_IMPLEMENTED B_HTTP_STATUS_NOT_MODIFIED + B_HTTP_STATUS_OK B_HTTP_STATUS_PARTIAL_CONTENT + B_HTTP_STATUS_PAYMENT_REQUIRED B_HTTP_STATUS_PRECONDITION_FAILED + B_HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED + B_HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE + B_HTTP_STATUS_REQUEST_TIMEOUT B_HTTP_STATUS_REQUEST_URI_TOO_LARGE + B_HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE + B_HTTP_STATUS_RESET_CONTENT B_HTTP_STATUS_SEE_OTHER + B_HTTP_STATUS_SERVICE_UNAVAILABLE B_HTTP_STATUS_SWITCHING_PROTOCOLS + B_HTTP_STATUS_TEMPORARY_REDIRECT B_HTTP_STATUS_UNAUTHORIZED + B_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE B_HTTP_STATUS_USE_PROXY + B_HTTP_TRACE B_HTTPFORM_BUFFER B_HTTPFORM_FILE B_HTTPFORM_STRING + B_HTTPFORM_UNKNOWN B_I_BEAM_CURSOR B_ICON_CHANGED + B_ICON_FOR_TYPE_CHANGED B_ID_SPECIFIER B_IDEA_ALERT B_IDLE_PRIORITY + B_IGNORE_OUTLINE B_ILLEGAL_DATA B_IMPERFECTLY_SEEKABLE + B_IMPORTANT_NOTIFICATION B_IN_DISTRESS B_INACTIVE_ICON_BITMAP + B_INCREASE_LATENCY B_INDEX_SPECIFIER B_INFERIOR_ARCHITECTURE + B_INFINITE_TIMEOUT B_INFO_ALERT B_INFORMATION_NOTIFICATION + B_INIT_ACCELERANT B_INIT_AFTER_FUNCTION_NAME + B_INIT_BEFORE_FUNCTION_NAME B_INITIAL_ADD + B_INITIALIZE_PARAMETER_EDITOR B_INITIALIZE_RW_SPINLOCK + B_INITIALIZE_SEQLOCK B_INITIALIZE_SPINLOCK B_INPUT_DEVICE_ADDED + B_INPUT_DEVICE_REMOVED B_INPUT_DEVICE_STARTED + B_INPUT_DEVICE_STOPPED B_INPUT_DEVICES_CHANGED B_INPUT_METHOD_AWARE + B_INPUT_METHOD_CHANGED B_INPUT_METHOD_EVENT + B_INPUT_METHOD_LOCATION_REQUEST B_INPUT_METHOD_STARTED + B_INPUT_METHOD_STOPPED B_INPUT_MUX B_INSERT B_INSIDE_VIEW + B_INSTALL_EXCLUDED B_INSTALL_INFERIOR_ARCHITECTURE B_INSTALL_OLD + B_INSTALLATION_LOCATION_PACKAGES_CHANGED + B_INSTALLED_PACKAGE_OBSOLETES_RESOLVABLE + B_INSTALLED_PACKAGE_PROBLEM B_INSTANT_WARP_FOCUS_FOLLOWS_MOUSE + B_INT16_TYPE B_INT32_TYPE B_INT64_TYPE B_INT8_TYPE B_INTEGER_FIELD + B_INTERFACE_ERROR_BASE B_INTERRUPTED B_INVALID B_INVALID_OP + B_INVALID_OPCODE_EXCEPTION B_INVALIDATE B_INVALIDATE_AFTER_LAYOUT + B_INVALIDATE_DCACHE B_INVALIDATE_ICACHE B_INVERT_RECTANGLE + B_INVOKE_SCHEDULER B_IO_ERROR B_IO_FB_NA B_IO_MEMORY B_IO_PORT + B_IO_PORT_RESOURCE B_IPA_EXTENSIONS_BLOCK B_IRQ_RESOURCE + B_IS_A_DIRECTORY B_IS_CONTROL B_IS_FIXED B_ISA_BUS + B_ISA_DMA_CHANNEL B_ISA_MEMORY_32_BIT B_ISA_MODULE_NAME + B_ISO_8859_1 B_ISO_8859_10 B_ISO_8859_2 B_ISO_8859_3 B_ISO_8859_4 + B_ISO_8859_5 B_ISO_8859_6 B_ISO_8859_7 B_ISO_8859_8 B_ISO_8859_9 + B_ISO1_CONVERSION B_ISO10_CONVERSION B_ISO13_CONVERSION + B_ISO14_CONVERSION B_ISO15_CONVERSION B_ISO2_CONVERSION + B_ISO3_CONVERSION B_ISO4_CONVERSION B_ISO5_CONVERSION + B_ISO6_CONVERSION B_ISO7_CONVERSION B_ISO8_CONVERSION + B_ISO9_CONVERSION B_ITALIC_FACE B_ITEMS_IN_COLUMN B_ITEMS_IN_MATRIX + B_ITEMS_IN_ROW B_JIS_CONVERSION B_JOB_STATE_ABORTED + B_JOB_STATE_FAILED B_JOB_STATE_IN_PROGRESS B_JOB_STATE_STARTED + B_JOB_STATE_SUCCEEDED B_JOB_STATE_WAITING_TO_RUN + B_JOYSTICK_DRIVER_BASE B_JPEG_FORMAT B_JUKEBOX B_KALIMBA + B_KANNADA_BLOCK B_KATAKANA_BLOCK B_KATAKANA_HIRAGANA B_KDEBUG_CONT + B_KDEBUG_QUIT B_KEEP_DRIVER_LOADED B_KEEP_EXCLUDED + B_KEEP_ICON_BITMAP B_KEEP_INFERIOR_ARCHITECTURE B_KEEP_LOADED + B_KEEP_OLD B_KERNEL_READ_AREA B_KERNEL_WRITE_AREA B_KEY_DOWN + B_KEY_LOCKS_CHANGED B_KEY_MAP_CHANGED B_KEY_MODE_FT_IEEE802_1X + B_KEY_MODE_FT_PSK B_KEY_MODE_IEEE802_1X + B_KEY_MODE_IEEE802_1X_SHA256 B_KEY_MODE_NONE B_KEY_MODE_PSK + B_KEY_MODE_PSK_SHA256 B_KEY_MODE_WPS B_KEY_PRESSURE + B_KEY_PURPOSE_ANY B_KEY_PURPOSE_GENERIC B_KEY_PURPOSE_KEYRING + B_KEY_PURPOSE_NETWORK B_KEY_PURPOSE_VOLUME B_KEY_PURPOSE_WEB + B_KEY_REPEAT_DELAY_CHANGED B_KEY_REPEAT_RATE_CHANGED B_KEY_TYPE_ANY + B_KEY_TYPE_CERTIFICATE B_KEY_TYPE_GENERIC B_KEY_TYPE_PASSWORD + B_KEY_UP B_KEYBOARD_DEVICE B_KEYBOARD_EVENTS + B_KEYBOARD_NAVIGATION_COLOR B_KILL_CAN_INTERRUPT B_KNOWS_ANYTHING + B_KNOWS_ENCODED_AUDIO B_KNOWS_ENCODED_VIDEO B_KNOWS_MIDI + B_KNOWS_OTHER B_KNOWS_RAW_AUDIO B_KNOWS_RAW_VIDEO + B_KOI8R_CONVERSION B_KOTO B_LAB24 B_LAB32 B_LABA32 B_LAME_ASS_CARD + B_LANGUAGE_STRINGS_BASE B_LAO_BLOCK B_LARGE_ICON B_LARGE_ICON_TYPE + B_LAST_BUFFER_ERROR B_LAST_ISA_DMA_ENTRY B_LATIN_EXTENDED_A_BLOCK + B_LATIN_EXTENDED_ADDITIONAL_BLOCK B_LATIN_EXTENDED_B_BLOCK + B_LATIN1_SUPPLEMENT_BLOCK B_LAUNCH_FAILED + B_LAUNCH_FAILED_APP_IN_TRASH B_LAUNCH_FAILED_APP_NOT_FOUND + B_LAUNCH_FAILED_EXECUTABLE B_LAUNCH_FAILED_FILES_APP_NOT_FOUND + B_LAUNCH_FAILED_NO_PREFERRED_APP B_LAUNCH_FAILED_NO_RESOLVE_LINK + B_LAUNCH_MASK B_LAYOUT_WINDOW B_LAZY_LOCK B_LE B_LEAD_1 B_LEAD_2 + B_LEAD_3 B_LEAD_4 B_LEAD_5 B_LEAD_6 B_LEAD_7 B_LEAD_8 B_LEFT_ARROW + B_LEFT_BORDER B_LEFT_COMMAND_KEY B_LEFT_CONTROL_KEY + B_LEFT_DOWN_ARROW B_LEFT_OPTION_KEY B_LEFT_SHIFT_KEY + B_LEFT_TO_RIGHT B_LEFT_UP_ARROW B_LEGACY_EXECUTABLE + B_LENDIAN_TO_HOST_DOUBLE B_LENDIAN_TO_HOST_FLOAT + B_LENDIAN_TO_HOST_INT16 B_LENDIAN_TO_HOST_INT32 + B_LENDIAN_TO_HOST_INT64 B_LETTERLIKE_SYMBOLS_BLOCK B_LEVEL + B_LIBRARY_IMAGE B_LIGHT_FACE B_LIGHTEN_1_TINT B_LIGHTEN_2_TINT + B_LIGHTEN_MAX_TINT B_LINEAR B_LINEAR_INTERPOLATION B_LINEAR_SAMPLES + B_LINK_ACTIVE_COLOR B_LINK_HOVER_COLOR B_LINK_LIMIT B_LINK_TARGET + B_LINK_TEXT_COLOR B_LINK_VISITED_COLOR B_LIST_BACKGROUND_COLOR + B_LIST_ITEM_TEXT_COLOR B_LIST_SELECTED_BACKGROUND_COLOR + B_LIST_SELECTED_ITEM_TEXT_COLOR B_LITTLE_ENDIAN B_LITTLE_SYNTH + B_LITTLE_SYNTH_FILE B_LIVE_3D_RENDERING B_LIVE_AUDIO_MANIPULATION + B_LIVE_QUERY B_LIVE_VIDEO_MANIPULATION B_LOAD_MEDIA B_LOCAL_CONTROL + B_LOCAL_SOURCE B_LOCAL_TIME B_LOCALE_CHANGED B_LOCK_WINDOW_FOCUS + B_LOGARITHMIC B_LOMEM B_LONG_DATE_FORMAT B_LONG_DESCRIPTION_CHANGED + B_LONG_TIME_FORMAT B_LOOPER_PORT_DEFAULT_CAPACITY B_LOW_PRIORITY + B_LOW_QUALITY B_LOW_SURROGATES_BLOCK B_LOWEST_ACTIVE_PRIORITY B_LT + B_MAC_ROMAN_CONVERSION B_MACHINE_CHECK_EXCEPTION B_MACINTOSH_ROMAN + B_MAIL_ACCESS_ERROR B_MAIL_ATTR_ACCOUNT B_MAIL_ATTR_ACCOUNT_ID + B_MAIL_ATTR_BCC B_MAIL_ATTR_CC B_MAIL_ATTR_CONTENT + B_MAIL_ATTR_FLAGS B_MAIL_ATTR_FROM B_MAIL_ATTR_HEADER + B_MAIL_ATTR_MIME B_MAIL_ATTR_NAME B_MAIL_ATTR_PRIORITY + B_MAIL_ATTR_READ B_MAIL_ATTR_RECIPIENTS B_MAIL_ATTR_REPLY + B_MAIL_ATTR_STATUS B_MAIL_ATTR_SUBJECT B_MAIL_ATTR_THREAD + B_MAIL_ATTR_TO B_MAIL_ATTR_WHEN B_MAIL_ATTRIBUTED_ATTACHMENT + B_MAIL_BCC B_MAIL_BODY_FETCHED B_MAIL_CC B_MAIL_DATE + B_MAIL_ERROR_BASE B_MAIL_FROM B_MAIL_INVALID_MAIL + B_MAIL_MULTIPART_CONTAINER B_MAIL_NO_DAEMON B_MAIL_NO_RECIPIENT + B_MAIL_NULL_CONVERSION B_MAIL_PENDING B_MAIL_PLAIN_TEXT_BODY + B_MAIL_PRIORITY B_MAIL_REPLY B_MAIL_REPLY_TO B_MAIL_REPLY_TO_ALL + B_MAIL_REPLY_TO_SENDER B_MAIL_SAVE B_MAIL_SENT + B_MAIL_SHOW_STATUS_WINDOW_ALWAYS B_MAIL_SHOW_STATUS_WINDOW_NEVER + B_MAIL_SHOW_STATUS_WINDOW_WHEN_ACTIVE + B_MAIL_SHOW_STATUS_WINDOW_WHEN_SENDING B_MAIL_SIMPLE_ATTACHMENT + B_MAIL_SUBJECT B_MAIL_TO B_MAIL_TYPE B_MAIL_UNKNOWN_FIELD + B_MAIL_UNKNOWN_HOST B_MAIL_UNKNOWN_USER B_MAIL_US_ASCII_CONVERSION + B_MAIL_UTF8_CONVERSION B_MAIL_WRONG_PASSWORD B_MAIN_SCREEN_ID + B_MAIN_VOLUME B_MALAYALAM_BLOCK B_MALLOC_CACHE B_MARIMBA + B_MASTER_GAIN B_MASTER_HEADER B_MATHEMATICAL_OPERATORS_BLOCK + B_MATRIX_AMBISONIC_WXYZ B_MATRIX_PROLOGIC_LR B_MAX_COMPATIBLE_IDS + B_MAX_HOST_NAME_LENGTH B_MAX_ISA_DMA_COUNT B_MAX_MOUSE_BUTTONS + B_MAX_READ_WRITE_MEMORY_SIZE B_MAX_SYMLINKS B_MAX_USER_NAME_LENGTH + B_MEDIA_ADDON_DISABLED B_MEDIA_ADDON_FAILED + B_MEDIA_ADDON_RESTRICTED B_MEDIA_ALREADY_CONNECTED + B_MEDIA_ANY_QUALITY B_MEDIA_APP_ALREADY_REGISTERED + B_MEDIA_APP_NOT_REGISTERED B_MEDIA_BAD_BUFFER + B_MEDIA_BAD_CLIP_FORMAT B_MEDIA_BAD_DESTINATION B_MEDIA_BAD_FORMAT + B_MEDIA_BAD_NODE B_MEDIA_BAD_SOURCE B_MEDIA_BIG_ENDIAN + B_MEDIA_BUFFER_ALREADY_EXISTS B_MEDIA_BUFFER_CREATED + B_MEDIA_BUFFER_DELETED B_MEDIA_BUFFERS_NOT_RECLAIMED + B_MEDIA_CANNOT_CHANGE_RUN_MODE B_MEDIA_CANNOT_RECLAIM_BUFFERS + B_MEDIA_CANNOT_SEEK B_MEDIA_CHANGE_IN_PROGRESS + B_MEDIA_CONNECTION_BROKEN B_MEDIA_CONNECTION_MADE + B_MEDIA_CONTIGUOUS_BUFFER B_MEDIA_DEFAULT_CHANGED + B_MEDIA_DUPLICATE_FORMAT B_MEDIA_ENCODED_AUDIO + B_MEDIA_ENCODED_VIDEO B_MEDIA_ERROR_BASE B_MEDIA_FILE_BIG_BUFFERS + B_MEDIA_FILE_NO_READ_AHEAD B_MEDIA_FILE_REPLACE_MODE + B_MEDIA_FILE_UNBUFFERED B_MEDIA_FIRST_USER_TYPE + B_MEDIA_FLAGS_PRIVATE B_MEDIA_FLAGS_VERSION B_MEDIA_FLAVORS_CHANGED + B_MEDIA_FORMAT_CHANGED B_MEDIA_HIGH_QUALITY B_MEDIA_HOST_ENDIAN + B_MEDIA_HTML B_MEDIA_KEY_FRAME B_MEDIA_LINEAR_UPDATES + B_MEDIA_LITTLE_ENDIAN B_MEDIA_LOW_QUALITY + B_MEDIA_MAUI_UNDEFINED_FLAGS B_MEDIA_MEDIUM_QUALITY + B_MEDIA_MESSAGE_SIZE B_MEDIA_MIDI B_MEDIA_MULTIPLE_BUFFERS + B_MEDIA_MULTISTREAM B_MEDIA_MUTABLE_SIZE B_MEDIA_NAME_LENGTH + B_MEDIA_NEW_PARAMETER_VALUE B_MEDIA_NO_HANDLER B_MEDIA_NO_TYPE + B_MEDIA_NODE_ALREADY_EXISTS B_MEDIA_NODE_BUSY B_MEDIA_NODE_CREATED + B_MEDIA_NODE_DELETED B_MEDIA_NODE_STOPPED B_MEDIA_NOT_CONNECTED + B_MEDIA_PARAMETER_CHANGED B_MEDIA_PARAMETER_GROUP_TYPE + B_MEDIA_PARAMETER_TYPE B_MEDIA_PARAMETER_WEB_TYPE + B_MEDIA_PARAMETERS B_MEDIA_PRIVATE B_MEDIA_RAW_AUDIO + B_MEDIA_RAW_VIDEO B_MEDIA_REALTIME_ALLOCATOR + B_MEDIA_REALTIME_ANYKIND B_MEDIA_REALTIME_AUDIO + B_MEDIA_REALTIME_DISABLED B_MEDIA_REALTIME_UNAVAILABLE + B_MEDIA_REALTIME_VIDEO B_MEDIA_REJECT_WILDCARDS + B_MEDIA_REPLACE_MODE B_MEDIA_RETAINED_DATA B_MEDIA_SEEK_BACKWARD + B_MEDIA_SEEK_CLOSEST_BACKWARD B_MEDIA_SEEK_CLOSEST_FORWARD + B_MEDIA_SEEK_DIRECTION_MASK B_MEDIA_SEEK_FORWARD + B_MEDIA_SEEK_TO_FRAME B_MEDIA_SEEK_TO_TIME B_MEDIA_SEEKABLE + B_MEDIA_SERVER_QUIT B_MEDIA_SERVER_SIGNATURE B_MEDIA_SERVER_STARTED + B_MEDIA_STALE_CHANGE_COUNT B_MEDIA_STREAMING B_MEDIA_SYSTEM_FAILURE + B_MEDIA_TEXT B_MEDIA_TIME_SOURCE_BUSY B_MEDIA_TIME_SOURCE_STOPPED + B_MEDIA_TIMECODE B_MEDIA_TOO_MANY_BUFFERS B_MEDIA_TOO_MANY_NODES + B_MEDIA_TRANSPORT_STATE B_MEDIA_UNKNOWN_TYPE B_MEDIA_VBL + B_MEDIA_WEB_CHANGED B_MEDIA_WILDCARD B_MEDIUM_DATE_FORMAT + B_MEDIUM_QUALITY B_MEDIUM_TIME_FORMAT B_MELODIC_TOM + B_MEMORY_RESOURCE B_MENU_BACKGROUND B_MENU_BACKGROUND_COLOR + B_MENU_BAR_BACKGROUND B_MENU_FIELD_BACKGROUND B_MENU_FIELD_FRAME + B_MENU_ITEM_BACKGROUND B_MENU_ITEM_TEXT_COLOR B_MENU_KEY + B_MENU_SELECTED_BACKGROUND_COLOR B_MENU_SELECTED_BORDER_COLOR + B_MENU_SELECTED_ITEM_TEXT_COLOR B_MENU_SELECTION_BACKGROUND_COLOR + B_MESSAGE_NOT_UNDERSTOOD B_MESSAGE_TO_SELF B_MESSAGE_TYPE + B_MESSENGER_TYPE B_META_MIME_CHANGED B_META_MIME_DELETED + B_META_MIME_MODIFIED B_METALLIC B_METRIC B_MICROSECONDS_DIFF + B_MIDI_BALANCE B_MIDI_CHANGED_LATENCY B_MIDI_CHANGED_NAME + B_MIDI_CHANGED_PROPERTIES B_MIDI_CONNECTED B_MIDI_DEFAULT_TIMEOUT + B_MIDI_DISCONNECTED B_MIDI_DRIVER_BASE B_MIDI_ERROR_BASE + B_MIDI_EVENT B_MIDI_GET_READ_TIMEOUT B_MIDI_GET_READ_TIMEOUT_OLD + B_MIDI_NO_OP B_MIDI_PARSER_MODULE_NAME B_MIDI_PROCESSING + B_MIDI_REGISTERED B_MIDI_SET_READ_TIMEOUT + B_MIDI_SET_READ_TIMEOUT_OLD B_MIDI_TIME_CODE B_MIDI_TIMED_READ + B_MIDI_TIMED_WRITE B_MIDI_UNREGISTERED B_MIDI_WRITE_CLEAR + B_MIDI_WRITE_SYNC B_MILLISECONDS_DIFF B_MIME_DATA + B_MIME_STRING_TYPE B_MIME_TABLE_MODULE_NAME B_MIME_TYPE + B_MIME_TYPE_CREATED B_MIME_TYPE_DELETED B_MIME_TYPE_LENGTH + B_MINI_ICON B_MINI_ICON_TYPE B_MINIMIZE B_MINUTES_DIFF + B_MISC_FORMAT_FAMILY B_MISCELLANEOUS_SYMBOLS_BLOCK + B_MISCELLANEOUS_TECHNICAL_BLOCK B_MISMATCHED_VALUES + B_MISSING_LIBRARY B_MISSING_SYMBOL B_MITER_JOIN B_MIXED_COLORS + B_MODAL_ALL_WINDOW_FEEL B_MODAL_APP_WINDOW_FEEL + B_MODAL_SUBSET_WINDOW_FEEL B_MODAL_WINDOW B_MODAL_WINDOW_LOOK + B_MODE_CHANGED B_MODIFIERS_CHANGED B_MODULATION B_MODULE_INIT + B_MODULE_UNINIT B_MON_1 B_MON_10 B_MON_11 B_MON_12 B_MON_2 B_MON_3 + B_MON_4 B_MON_5 B_MON_6 B_MON_7 B_MON_8 B_MON_9 B_MONO_MODE_ON + B_MONOCHROME_1_BIT B_MONOCHROME_1_BIT_TYPE B_MOUNT_READ_ONLY + B_MOUNT_VIRTUAL_DEVICE B_MOUSE_ACCELERATION_CHANGED B_MOUSE_DOWN + B_MOUSE_ENTER_EXIT B_MOUSE_IDLE B_MOUSE_MAP_CHANGED B_MOUSE_MOVED + B_MOUSE_SPEED_CHANGED B_MOUSE_TYPE_CHANGED B_MOUSE_UP + B_MOUSE_WHEEL_CHANGED B_MOVE_CURSOR B_MOVE_DISPLAY + B_MOVE_DISPLAY_AREA B_MOVE_IF_PARTIALLY_OFFSCREEN + B_MOVE_MAIL_ACTION B_MOVE_OP B_MOVE_TARGET B_MPEG_1_AUDIO_LAYER_1 + B_MPEG_1_AUDIO_LAYER_2 B_MPEG_1_AUDIO_LAYER_3 B_MPEG_1_VIDEO + B_MPEG_2_5_AUDIO_LAYER_1 B_MPEG_2_5_AUDIO_LAYER_2 + B_MPEG_2_5_AUDIO_LAYER_3 B_MPEG_2_AUDIO_LAYER_1 + B_MPEG_2_AUDIO_LAYER_2 B_MPEG_2_AUDIO_LAYER_3 B_MPEG_2_VIDEO + B_MPEG_ANY B_MPEG_FORMAT_FAMILY B_MPEG1 B_MPEG2 + B_MPU_401_DISABLE_CARD_INT B_MPU_401_ENABLE_CARD_INT + B_MPU_401_MODULE_NAME B_MS_DOS_866_CONVERSION B_MS_DOS_CONVERSION + B_MS_WINDOWS_1250_CONVERSION B_MS_WINDOWS_1251_CONVERSION + B_MS_WINDOWS_CONVERSION B_MTR_MASK B_MTR_UC B_MTR_WB B_MTR_WC + B_MTR_WP B_MTR_WT B_MULAW_SAMPLES B_MULTIPLE_LAUNCH + B_MULTIPLE_SELECTION_LIST B_MUSIC_BOX B_MUTE B_MUTED_TRUMPET + B_NAME_IN_USE B_NAME_NOT_FOUND B_NAME_SPECIFIER B_NAME_TOO_LONG + B_NAVIGABLE B_NAVIGABLE_JUMP B_NAVIGATION_BASE_COLOR + B_NAVIGATION_PULSE_COLOR B_NE B_NEGATIVE_FACE + B_NETPOSITIVE_APP_SIGNATURE B_NETPOSITIVE_BACK + B_NETPOSITIVE_BOOKMARK_SIGNATURE B_NETPOSITIVE_DOWN + B_NETPOSITIVE_FORWARD B_NETPOSITIVE_HOME B_NETPOSITIVE_OPEN_URL + B_NETPOSITIVE_RELOAD B_NETPOSITIVE_STOP B_NETPOSITIVE_UP B_NETWORK + B_NETWORK_ADDRESS_TYPE B_NETWORK_AUTHENTICATION_EAP + B_NETWORK_AUTHENTICATION_NONE B_NETWORK_AUTHENTICATION_WEP + B_NETWORK_AUTHENTICATION_WPA B_NETWORK_AUTHENTICATION_WPA2 + B_NETWORK_CIPHER_AES_128_CMAC B_NETWORK_CIPHER_CCMP + B_NETWORK_CIPHER_NONE B_NETWORK_CIPHER_TKIP + B_NETWORK_CIPHER_WEP_104 B_NETWORK_CIPHER_WEP_40 + B_NETWORK_DEVICE_LINK_CHANGED B_NETWORK_EAP_ENCAPSULATION_NONE + B_NETWORK_EAP_ENCAPSULATION_PEAP B_NETWORK_EAP_ENCAPSULATION_TLS + B_NETWORK_INTERFACE_ADDED B_NETWORK_INTERFACE_CHANGED + B_NETWORK_INTERFACE_REMOVED B_NETWORK_IS_ENCRYPTED + B_NETWORK_IS_PERSISTENT B_NETWORK_MONITOR + B_NETWORK_SETTINGS_TYPE_DIAL_UP B_NETWORK_SETTINGS_TYPE_INTERFACE + B_NETWORK_SETTINGS_TYPE_OTHER B_NETWORK_SETTINGS_TYPE_SERVICE + B_NETWORK_SETTINGS_TYPE_VPN B_NETWORK_WLAN_JOINED + B_NETWORK_WLAN_LEFT B_NETWORK_WLAN_MESSAGE_INTEGRITY_FAILED + B_NETWORK_WLAN_SCANNED B_NEW_AGE B_NO_ACTION + B_NO_ADDRESS_RESOLUTION B_NO_BORDER B_NO_BORDER_WINDOW_LOOK + B_NO_CLEANUP B_NO_COLOR B_NO_COLOR_SPACE B_NO_ENABLE_COUNTER + B_NO_ERROR B_NO_EVENT B_NO_EXPRESSION B_NO_INIT B_NO_LOCK + B_NO_MAIL_ACTION B_NO_MEMORY B_NO_MERGE B_NO_MORE_FDS + B_NO_MORE_PORTS B_NO_MORE_SEMS B_NO_MORE_TEAMS B_NO_MORE_THREADS + B_NO_OP B_NO_PARITY B_NO_POINTER_HISTORY B_NO_PRINT_SERVER + B_NO_REPLY B_NO_SERVER_SIDE_WINDOW_MODIFIERS B_NO_SONG_PLAYING + B_NO_SPECIFIER B_NO_STRING B_NO_SYNTH B_NO_TINT B_NO_TRANSLATOR + B_NO_TRUNCATION B_NO_WORKSPACE_ACTIVATION B_NODE_FAILED_PREROLL + B_NODE_FAILED_SEEK B_NODE_FAILED_SET_RUN_MODE + B_NODE_FAILED_SET_TIME_SOURCE_FOR B_NODE_FAILED_START + B_NODE_FAILED_STOP B_NODE_FAILED_TIME_WARP B_NODE_IN_DISTRESS + B_NODE_MONITOR B_NOFLOW_CONTROL B_NON_MASKABLE_INTERRUPT B_NONZERO + B_NORMAL_FOCUS_FOLLOWS_MOUSE B_NORMAL_MOUSE B_NORMAL_PRIORITY + B_NORMAL_TABLE B_NORMAL_WINDOW_FEEL B_NOT B_NOT_A_DIRECTORY + B_NOT_A_MESSAGE B_NOT_ALLOWED B_NOT_AN_EXECUTABLE + B_NOT_ANCHORED_ON_ACTIVATE B_NOT_CLOSABLE B_NOT_H_RESIZABLE + B_NOT_IN_DISTUPGRADE_REPOSITORY B_NOT_INITIALIZED B_NOT_MINIMIZABLE + B_NOT_MOVABLE B_NOT_PAUSED B_NOT_RESIZABLE B_NOT_SUPPORTED + B_NOT_V_RESIZABLE B_NOT_ZOOMABLE B_NOTE_OFF B_NOTE_ON B_NOW + B_NULL_PARAMETER B_NUM_COUNTRY_STRINGS B_NUM_LANGUAGE_STRINGS + B_NUM_LOCK B_NUMBER_CRUNCHING B_NUMBER_FORMS_BLOCK B_OBJECT_CACHE + B_OBJECT_TYPE B_OBJECT_TYPE_FD B_OBJECT_TYPE_PORT + B_OBJECT_TYPE_SEMAPHORE B_OBJECT_TYPE_THREAD B_OBOE + B_OBSERVE_ORIGINAL_WHAT B_OBSERVE_WHAT_CHANGE + B_OBSERVER_NOTICE_CHANGE B_OBSERVER_OBSERVE_ALL B_OCARINA + B_ODD_PARITY B_OFF_T_TYPE B_OFFLINE B_OFFLINE_PROCESSING + B_OFFSET_SPACING B_OK B_OMNI_MODE_OFF B_OMNI_MODE_ON + B_ONE_SHOT_ABSOLUTE_ALARM B_ONE_SHOT_ABSOLUTE_TIMER + B_ONE_SHOT_RELATIVE_ALARM B_ONE_SHOT_RELATIVE_TIMER + B_ONE_STATE_BUTTON B_OP_ADD B_OP_ALPHA B_OP_BLEND B_OP_COPY + B_OP_ERASE B_OP_INVERT B_OP_MAX B_OP_MIN B_OP_OVER B_OP_SELECT + B_OP_SUBTRACT B_OPEN B_OPEN_AT_END B_OPEN_GRAPHICS_CARD + B_OPEN_IN_WORKSPACE B_OPEN_PANEL B_OPTICAL + B_OPTICAL_CHARACTER_RECOGNITION_BLOCK B_OPTION_CAPS_SHIFT_TABLE + B_OPTION_CAPS_TABLE B_OPTION_CONTROL_VALUE B_OPTION_KEY + B_OPTION_SHIFT_TABLE B_OPTION_TABLE B_OR B_ORCHESTRA_HIT + B_ORCHESTRAL_STRINGS B_ORIGIN B_ORIYA_BLOCK B_OS_ERROR_BASE + B_OS_NAME_LENGTH B_OTHER_STRINGS_BASE B_OUTLINE_RESIZE + B_OUTLINED_FACE B_OUTPUT_MUX B_OUTSIDE_VIEW B_OVERDRIVEN_GUITAR + B_OVERFLOW_EXCEPTION B_OVERLAY_FILTER_HORIZONTAL + B_OVERLAY_FILTER_VERTICAL B_OVERLAY_MIRROR + B_OVERLAY_TRANSFER_CHANNEL B_PACKAGE B_PACKAGE_ARCHITECTURE_ANY + B_PACKAGE_ARCHITECTURE_ARM B_PACKAGE_ARCHITECTURE_ENUM_COUNT + B_PACKAGE_ARCHITECTURE_M68K B_PACKAGE_ARCHITECTURE_PPC + B_PACKAGE_ARCHITECTURE_SOURCE B_PACKAGE_ARCHITECTURE_X86 + B_PACKAGE_ARCHITECTURE_X86_64 B_PACKAGE_ARCHITECTURE_X86_GCC2 + B_PACKAGE_CONFLICT B_PACKAGE_FLAG_APPROVE_LICENSE + B_PACKAGE_FLAG_SYSTEM_PACKAGE + B_PACKAGE_IMPLICITLY_OBSOLETES_RESOLVABLE + B_PACKAGE_INFO_ARCHITECTURE B_PACKAGE_INFO_BASE_PACKAGE + B_PACKAGE_INFO_CHECKSUM B_PACKAGE_INFO_CONFLICTS + B_PACKAGE_INFO_COPYRIGHTS B_PACKAGE_INFO_DESCRIPTION + B_PACKAGE_INFO_ENUM_COUNT B_PACKAGE_INFO_FLAGS + B_PACKAGE_INFO_FRESHENS B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES + B_PACKAGE_INFO_GROUPS B_PACKAGE_INFO_INSTALL_PATH + B_PACKAGE_INFO_LICENSES B_PACKAGE_INFO_NAME B_PACKAGE_INFO_PACKAGER + B_PACKAGE_INFO_POST_INSTALL_SCRIPTS B_PACKAGE_INFO_PROVIDES + B_PACKAGE_INFO_REPLACES B_PACKAGE_INFO_REQUIRES + B_PACKAGE_INFO_SOURCE_URLS B_PACKAGE_INFO_SUMMARY + B_PACKAGE_INFO_SUPPLEMENTS B_PACKAGE_INFO_URLS + B_PACKAGE_INFO_USER_SETTINGS_FILES B_PACKAGE_INFO_USERS + B_PACKAGE_INFO_VENDOR B_PACKAGE_INFO_VERSION + B_PACKAGE_INSTALLATION_LOCATION_ENUM_COUNT + B_PACKAGE_INSTALLATION_LOCATION_HOME + B_PACKAGE_INSTALLATION_LOCATION_SYSTEM B_PACKAGE_LINKS_DIRECTORY + B_PACKAGE_NAME_CLASH B_PACKAGE_NOT_INSTALLABLE + B_PACKAGE_OBSOLETES_RESOLVABLE B_PACKAGE_RESOLVABLE_OP_ENUM_COUNT + B_PACKAGE_RESOLVABLE_OP_EQUAL B_PACKAGE_RESOLVABLE_OP_GREATER + B_PACKAGE_RESOLVABLE_OP_GREATER_EQUAL B_PACKAGE_RESOLVABLE_OP_LESS + B_PACKAGE_RESOLVABLE_OP_LESS_EQUAL + B_PACKAGE_RESOLVABLE_OP_NOT_EQUAL B_PACKAGE_UPDATE B_PAD_1 B_PAD_2 + B_PAD_3 B_PAD_4 B_PAD_5 B_PAD_6 B_PAD_7 B_PAD_8 B_PAGE_DOWN + B_PAGE_SIZE B_PAGE_UP B_PAN B_PAN_FLUTE B_PANEL_BACKGROUND_COLOR + B_PANEL_TEXT_COLOR B_PARALLEL_ACCESS B_PARALLEL_BUFFER_ACCESS + B_PARAMETER B_PARAMETER_EDITOR_TYPE B_PARTIAL_MAIL_TYPE + B_PARTIAL_READ B_PARTIAL_WRITE B_PARTIALLY_ACTIVATE_ICON_BITMAP + B_PARTIALLY_ACTIVATED B_PARTITION_BUSY + B_PARTITION_CHANGED_BLOCK_SIZE B_PARTITION_CHANGED_CHECK + B_PARTITION_CHANGED_CHILDREN B_PARTITION_CHANGED_CONTENT_NAME + B_PARTITION_CHANGED_CONTENT_PARAMETERS + B_PARTITION_CHANGED_CONTENT_SIZE B_PARTITION_CHANGED_CONTENT_TYPE + B_PARTITION_CHANGED_DEFRAGMENTATION B_PARTITION_CHANGED_DESCENDANTS + B_PARTITION_CHANGED_FLAGS B_PARTITION_CHANGED_INITIALIZATION + B_PARTITION_CHANGED_NAME B_PARTITION_CHANGED_OFFSET + B_PARTITION_CHANGED_PARAMETERS B_PARTITION_CHANGED_REPAIR + B_PARTITION_CHANGED_SIZE B_PARTITION_CHANGED_STATUS + B_PARTITION_CHANGED_TYPE B_PARTITION_CHANGED_VOLUME + B_PARTITION_CORRUPT B_PARTITION_CREATE_CHILD B_PARTITION_DEFRAGMENT + B_PARTITION_DELETE_CHILD B_PARTITION_FILE_SYSTEM + B_PARTITION_INITIALIZE B_PARTITION_IS_DEVICE B_PARTITION_MOUNTED + B_PARTITION_MOVE B_PARTITION_MOVE_CHILD + B_PARTITION_PARTITIONING_SYSTEM B_PARTITION_READ_ONLY + B_PARTITION_REPAIR B_PARTITION_RESIZE B_PARTITION_RESIZE_CHILD + B_PARTITION_SET_CONTENT_NAME B_PARTITION_SET_CONTENT_PARAMETERS + B_PARTITION_SET_NAME B_PARTITION_SET_PARAMETERS + B_PARTITION_SET_TYPE B_PARTITION_SHADOW B_PARTITION_SHADOW_CHILD + B_PARTITION_TOO_SMALL B_PARTITION_UNINITIALIZED + B_PARTITION_UNRECOGNIZED B_PARTITION_VALID B_PASTE + B_PATH_NAME_LENGTH B_PATTERN_TYPE B_PAUSE_IN_PROGRESS B_PAUSE_KEY + B_PAUSED B_PCI_BUS B_PCI_DEVICE_BUS B_PCI_DEVICE_DEVICE + B_PCI_DEVICE_DOMAIN B_PCI_DEVICE_FUNCTION B_PCI_MODULE_NAME + B_PCI_X86_MODULE_NAME B_PCMCIA_BUS B_PE_APP_MIME_TYPE + B_PEF_APP_MIME_TYPE B_PERCENT_FIELD B_PERCUSSIVE_ORGAN + B_PERFECTLY_SEEKABLE B_PERIODIC_ALARM B_PERIODIC_TIMER + B_PERMILLE_FIELD B_PERMISSION_DENIED B_PHASER_DEPTH + B_PHYSICAL_INPUT B_PHYSICAL_OUTPUT B_PICCOLO B_PICT_FORMAT + B_PITCH_BEND B_PIXEL_ALIGNMENT B_PIXEL_ALPHA B_PIZZICATO_STRINGS + B_PLAIN_BORDER B_PM_STRING B_PNG_FORMAT B_POINT_TYPE + B_POINTER_EVENTS B_POINTER_TYPE B_POINTING_DEVICE B_POLY_MODE_ON + B_POLYNOMIAL B_POLYSYNTH B_POP_UP_BEHAVIOR B_PORTAMENTO + B_PORTAMENTO_TIME B_POSITIVE_HSYNC B_POSITIVE_VSYNC B_POSIX_ENOMEM + B_POSIX_ERROR_BASE B_POST_INSTALL_SCRIPT_FAILED + B_POST_INSTALL_SCRIPT_NOT_FOUND B_POSTSCRIPT_TYPE1_WINDOWS + B_PPM_FORMAT B_PREFERENCES_DIRECTORY B_PREFERRED_APP_CHANGED + B_PRESENTATION_BG B_PRESENTATION_FG B_PRI B_PRIMARY_MOUSE_BUTTON + B_PRINT_ERROR_BASE B_PRINT_KEY B_PRINTER B_PRINTER_CHANGED + B_PRINTF_POINTER_WIDTH B_PRINTING_METRIC B_PRIVATE + B_PRIVATE_USE_AREA_BLOCK B_PRIX16 B_PRIX32 B_PRIX64 B_PRIX8 + B_PRIXADDR B_PRIXGENADDR B_PRIXPHYSADDR B_PRIXSIZE B_PROCESSING + B_PRODUCER_STOPPED B_PROGRAM_CHANGE B_PROGRAMMED_DELIVERY + B_PROGRESS_NOTIFICATION B_PROPERTIES_PARAMETER_EDITOR + B_PROPERTY_INFO_TYPE B_PROPERTY_NAME_LENGTH B_PROPOSE_DISPLAY_MODE + B_PROPOSE_FRAME_BUFFER B_PULSE B_PULSE_NEEDED B_QUALITY + B_QUERY_NON_INDEXED B_QUERY_UPDATE B_QUICKTIME + B_QUICKTIME_FORMAT_FAMILY B_QUIT_ON_WINDOW_CLOSE B_QUIT_REQUESTED + B_QUITTING B_R40_COMPILED B_RANDOMIZED_ANY_ADDRESS + B_RANDOMIZED_BASE_ADDRESS B_RANGE_SPECIFIER B_RAW_DEVICE_COMMAND + B_RAW_DEVICE_DATA_IN B_RAW_DEVICE_REPORT_RESIDUAL + B_RAW_DEVICE_SHORT_READ_VALID B_RAW_TYPE B_READ B_READ_AREA + B_READ_DEVICE B_READ_ONLY B_READ_ONLY_DEVICE B_READ_WRITE + B_READABLE B_READY_TO_RUN B_REAL_TIME_DISPLAY_PRIORITY + B_REAL_TIME_PRIORITY B_RECORDER B_RECORDING B_RECSTATE B_RECT_TYPE + B_RECYCLE_BUFFER B_REDO B_REED_ORGAN B_REF_TYPE B_REFS_RECEIVED + B_REGULAR_FACE B_RELATIVE_TIMEOUT B_RELEASE_ALL B_RELEASE_ENGINE + B_RELEASE_IF_WAITING_ONLY B_RELEASE_OVERLAY_LOCK B_REMOTE_SOURCE + B_REMOVE_EVENT B_REMOVE_FIXED_DRIVER B_REPLACE_OP B_REPLY + B_REQUEST_ACTIVATED B_REQUEST_FORMAT_CHANGE B_REQUEST_LAUNCHED + B_REQUEST_QUIT B_REQUESTED_RESOLVABLE_NOT_PROVIDED + B_REQUESTED_RESOLVABLE_PROVIDED_BY_SYSTEM B_RESET_ALL_CONTROLLERS + B_RESET_STATUS_BAR B_RESOLUTION B_RESORT_QUEUE B_RESOURCE_MIME_TYPE + B_RESOURCE_NOT_FOUND B_RESOURCE_UNAVAILABLE + B_RESTORE_BACKGROUND_IMAGE B_RESULT_NOT_REPRESENTABLE B_RETURN + B_REVERB_BALLROOM B_REVERB_CAVERN B_REVERB_CLOSET B_REVERB_DUNGEON + B_REVERB_GARAGE B_REVERB_NONE B_REVERSE_CYMBAL + B_REVERSE_INDEX_SPECIFIER B_REVERSE_RANGE_SPECIFIER B_RGB_16_BIT + B_RGB_32_BIT B_RGB_32_BIT_TYPE B_RGB_COLOR_TYPE B_RGB15 B_RGB15_BIG + B_RGB15_LITTLE B_RGB16 B_RGB16_BIG B_RGB16_LITTLE B_RGB24 + B_RGB24_BIG B_RGB24_LITTLE B_RGB32 B_RGB32_BIG B_RGB32_LITTLE + B_RGBA15 B_RGBA15_BIG B_RGBA15_LITTLE B_RGBA32 B_RGBA32_BIG + B_RGBA32_LITTLE B_RIGHT_ARROW B_RIGHT_BORDER B_RIGHT_COMMAND_KEY + B_RIGHT_CONTROL_KEY B_RIGHT_DOWN_ARROW B_RIGHT_OPTION_KEY + B_RIGHT_SHIFT_KEY B_RIGHT_TO_LEFT B_RIGHT_UP_ARROW B_ROCK_ORGAN + B_ROUND_CAP B_ROUND_JOIN B_RW_SPINLOCK_INITIALIZER + B_SAFEMODE_DRIVER_SETTINGS B_SAFEMODE_SAFE_MODE + B_SAME_POSITION_IN_ALL_WORKSPACES B_SAMPLES_ONLY B_SAVE_PANEL + B_SAVE_REQUESTED B_SAWTOOTH_WAVE B_SCANNER B_SCN B_SCREEN_CHANGED + B_SCREEN_METRIC B_SCREEN_TO_SCREEN_BLIT + B_SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT + B_SCREEN_TO_SCREEN_TRANSPARENT_BLIT B_SCROLL + B_SCROLL_BAR_THUMB_COLOR B_SCROLL_KEY B_SCROLL_LOCK + B_SCROLL_VIEW_FRAME B_SCSI_ALL_DEVICES_MASK + B_SCSI_BUS_RAW_PATH_INQUIRY B_SCSI_BUS_RAW_RESET B_SCSI_CD + B_SCSI_CD_MASK B_SCSI_CPU B_SCSI_CPU_MASK B_SCSI_DATA_MODE + B_SCSI_DISK B_SCSI_DISK_MASK B_SCSI_EJECT B_SCSI_ENABLE_PROFILING + B_SCSI_GET_POSITION B_SCSI_GET_TOC B_SCSI_GET_VOLUME B_SCSI_INQUIRY + B_SCSI_JUKEBOX B_SCSI_JUKEBOX_MASK B_SCSI_NETWORK + B_SCSI_NETWORK_MASK B_SCSI_OPTICAL B_SCSI_OPTICAL_MASK + B_SCSI_PAUSE_AUDIO B_SCSI_PLAY_POSITION B_SCSI_PLAY_TRACK + B_SCSI_PORT0_CHANNEL B_SCSI_PORT0_VOLUME B_SCSI_PORT1_CHANNEL + B_SCSI_PORT1_VOLUME B_SCSI_PORT2_CHANNEL B_SCSI_PORT2_VOLUME + B_SCSI_PORT3_CHANNEL B_SCSI_PORT3_VOLUME B_SCSI_PREVENT_ALLOW + B_SCSI_PRINTER B_SCSI_PRINTER_MASK B_SCSI_READ_CD + B_SCSI_RESUME_AUDIO B_SCSI_SCAN B_SCSI_SCAN_FOR_DEVICES + B_SCSI_SCANNER B_SCSI_SCANNER_MASK B_SCSI_SET_VOLUME + B_SCSI_STOP_AUDIO B_SCSI_TAPE B_SCSI_TAPE_MASK B_SCSI_WORM + B_SCSI_WORM_MASK B_SEASHORE B_SECONDARY_MOUSE_BUTTON B_SECONDS_DIFF + B_SEEK B_SEEK_TAG B_SEEN B_SEGMENT_NOT_PRESENT B_SEGMENT_VIOLATION + B_SELECT_ALL B_SELECT_DISCONNECTED B_SELECT_ERROR + B_SELECT_HIGH_PRI_READ B_SELECT_HIGH_PRI_WRITE B_SELECT_PRI_READ + B_SELECT_PRI_WRITE B_SELECT_READ B_SELECT_STRING B_SELECT_WRITE + B_SELF_CONFLICT B_SEQLOCK_INITIALIZER B_SERVER_NOT_FOUND + B_SET_BLOCKING_IO B_SET_BRIGHTNESS B_SET_CLONED_GRAPHICS_CARD + B_SET_CURSOR_BITMAP B_SET_CURSOR_SHAPE B_SET_DEFAULT + B_SET_DEVICE_SIZE B_SET_DISPLAY_AREA B_SET_DISPLAY_MODE + B_SET_DPMS_MODE B_SET_FRAME_BUFFER B_SET_INDEXED_COLOR + B_SET_INDEXED_COLORS B_SET_INTERRUPTABLE_IO B_SET_NONBLOCKING_IO + B_SET_OUTPUT_BUFFERS_FOR B_SET_OUTPUT_ENABLED B_SET_PARTITION + B_SET_PROPERTY B_SET_SCREEN_GAMMA B_SET_UNINTERRUPTABLE_IO + B_SET_VIDEO_CLIPPING_FOR B_SETTINGS_BG B_SETTINGS_FG B_SHADOW_COLOR + B_SHAKUHACHI B_SHAMISEN B_SHANAI B_SHIFT_KEY B_SHIFT_TABLE + B_SHINE_COLOR B_SHORT_DATE_FORMAT B_SHORT_DATE_TIME_FORMAT + B_SHORT_DESCRIPTION_CHANGED B_SHORT_TIME_AM_PM_FORMAT + B_SHORT_TIME_FORMAT B_SHOW_CURSOR B_SHUTDOWN_CANCELLED + B_SHUTTING_DOWN B_SHUTTLE_MODE B_SHUTTLE_SPEED B_SIGN_FIELD + B_SILENT_RELAUNCH B_SIMPLE_DATA B_SIMPLE_TRANSPORT B_SINGLE_LAUNCH + B_SINGLE_SELECTION_LIST B_SITAR B_SIZE_T_TYPE B_SIZE_TYPE + B_SIZE_UNLIMITED B_SIZE_UNSET B_SJIS_CONVERSION B_SKIP_MESSAGE + B_SLAP_BASS_1 B_SLAP_BASS_2 B_SMALL_BUFFER + B_SMALL_FORM_VARIANTS_BLOCK B_SNIFFER_RULE_CHANGED B_SOFT_PEDAL + B_SOFTWARE_CONTROL B_SOLID_HIGH B_SOLID_LOW B_SOME_APP_ACTIVATED + B_SOME_APP_LAUNCHED B_SOME_APP_QUIT B_SONG_POSITION B_SONG_SELECT + B_SOPRANO_SAX B_SOSTENUTO B_SOUND_DONE B_SOUNDS B_SPACE + B_SPACING_MODIFIER_LETTERS_BLOCK B_SPECIALS_BLOCK B_SPECIFIERS_END + B_SPINLOCK_INITIALIZER B_SPINLOCK_IS_LOCKED B_SQUARE_CAP + B_SQUARE_JOIN B_SQUARE_WAVE B_SSIZE_T_TYPE B_STACK_AREA + B_STACK_FAULT B_START B_STARTED + B_STARTING_POST_INSTALL_SCRIPT_FAILED B_STAT_ACCESS_TIME + B_STAT_CHANGE_TIME B_STAT_CHANGED B_STAT_CREATION_TIME B_STAT_GID + B_STAT_INTERIM_UPDATE B_STAT_MODE B_STAT_MODIFICATION_TIME + B_STAT_SIZE B_STAT_SIZE_INSECURE B_STAT_UID B_STATUS_BAR_COLOR + B_STATUS_RENDERING B_STEEL_DRUMS B_STOP B_STOP_ALERT B_STOP_BIT_1 + B_STOP_BITS_1 B_STOP_BITS_2 B_STOP_WATCHING B_STOPPED + B_STORAGE_ERROR_BASE B_STREAM_NOT_FOUND B_STRIKEOUT_FACE + B_STRING_ENSEMBLE_1 B_STRING_ENSEMBLE_2 B_STRING_LIST_TYPE + B_STRING_SPACING B_STRING_TYPE B_STYLED_TEXT_FORMAT + B_SUBPIXEL_PRECISE B_SUBSCRIBER_NOT_ENTERED B_SUBSTITUTE + B_SUBSTREAM_HEADER B_SUCCESS_COLOR + B_SUPERSCRIPTS_AND_SUBSCRIPTS_BLOCK B_SUPPORTED_TYPES_CHANGED + B_SUPPORTS_LAYOUT B_SUSPEND_VIEW_FOCUS B_SUSTAIN_PEDAL + B_SWAP_ALWAYS B_SWAP_BENDIAN_TO_HOST B_SWAP_DOUBLE B_SWAP_FLOAT + B_SWAP_HOST_TO_BENDIAN B_SWAP_HOST_TO_LENDIAN B_SWAP_INT16 + B_SWAP_INT32 B_SWAP_INT64 B_SWAP_LENDIAN_TO_HOST B_SWAP_OP B_SWEEP + B_SYMBOL_TYPE_ANY B_SYMBOL_TYPE_DATA B_SYMBOL_TYPE_TEXT + B_SYMLINK_NODE B_SYNC_ON_GREEN B_SYNC_TO_TOKEN B_SYNTH_BASS_1 + B_SYNTH_BASS_2 B_SYNTH_BRASS_1 B_SYNTH_BRASS_2 B_SYNTH_DIRECTORY + B_SYNTH_DRUM B_SYNTH_STRINGS_1 B_SYNTH_STRINGS_2 B_SYNTH_VOICE + B_SYS_EX_END B_SYS_EX_START B_SYSTEM_ADDONS_DIRECTORY + B_SYSTEM_APPS_DIRECTORY B_SYSTEM_ATOMIZER_NAME + B_SYSTEM_BIN_DIRECTORY B_SYSTEM_BOOT_DIRECTORY + B_SYSTEM_CACHE_DIRECTORY B_SYSTEM_DATA_DIRECTORY + B_SYSTEM_DEVELOP_DIRECTORY B_SYSTEM_DIRECTORY + B_SYSTEM_DOCUMENTATION_DIRECTORY B_SYSTEM_ETC_DIRECTORY + B_SYSTEM_FONTS_DIRECTORY B_SYSTEM_HEADERS_DIRECTORY B_SYSTEM_IMAGE + B_SYSTEM_LIB_DIRECTORY B_SYSTEM_LOG_DIRECTORY + B_SYSTEM_MEDIA_NODES_DIRECTORY B_SYSTEM_MIXER + B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY + B_SYSTEM_NONPACKAGED_BIN_DIRECTORY + B_SYSTEM_NONPACKAGED_DATA_DIRECTORY + B_SYSTEM_NONPACKAGED_DEVELOP_DIRECTORY + B_SYSTEM_NONPACKAGED_DIRECTORY + B_SYSTEM_NONPACKAGED_DOCUMENTATION_DIRECTORY + B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY + B_SYSTEM_NONPACKAGED_HEADERS_DIRECTORY + B_SYSTEM_NONPACKAGED_LIB_DIRECTORY + B_SYSTEM_NONPACKAGED_MEDIA_NODES_DIRECTORY + B_SYSTEM_NONPACKAGED_SOUNDS_DIRECTORY + B_SYSTEM_NONPACKAGED_TRANSLATORS_DIRECTORY + B_SYSTEM_PACKAGES_DIRECTORY B_SYSTEM_PREFERENCES_DIRECTORY + B_SYSTEM_RESET B_SYSTEM_SERVERS_DIRECTORY + B_SYSTEM_SETTINGS_DIRECTORY B_SYSTEM_SOUNDS_DIRECTORY + B_SYSTEM_SPOOL_DIRECTORY B_SYSTEM_TEAM B_SYSTEM_TEMP_DIRECTORY + B_SYSTEM_TIMEBASE B_SYSTEM_TRANSLATORS_DIRECTORY + B_SYSTEM_VAR_DIRECTORY B_SYSTEM_VERSION_KIND B_TAB B_TAB_ANY + B_TAB_FIRST B_TAB_FRONT B_TAIKO_DRUMS B_TAMIL_BLOCK + B_TANGO_ACCORDION B_TAPE B_TEAM_DEBUG_IMAGES + B_TEAM_DEBUG_POST_SYSCALL B_TEAM_DEBUG_PRE_SYSCALL + B_TEAM_DEBUG_PREVENT_EXIT B_TEAM_DEBUG_SIGNALS + B_TEAM_DEBUG_STOP_NEW_THREADS B_TEAM_DEBUG_TEAM_CREATION + B_TEAM_DEBUG_THREADS B_TEAM_DEBUG_USER_FLAG_MASK + B_TEAM_USAGE_CHILDREN B_TEAM_USAGE_SELF B_TELEPHONE B_TELUGU_BLOCK + B_TEMPO_CHANGE B_TENOR_SAX B_TERM_AFTER_FUNCTION_NAME + B_TERM_BEFORE_FUNCTION_NAME B_TERMINATED B_TERTIARY_MOUSE_BUTTON + B_TEXT_CONTROL_FRAME B_TEXT_PARAMETER B_TGA_FORMAT B_THAI_BLOCK + B_THREAD_ASLEEP B_THREAD_DEBUG_HANDLE_EVENT + B_THREAD_DEBUG_IGNORE_EVENT B_THREAD_DEBUG_POST_SYSCALL + B_THREAD_DEBUG_PRE_SYSCALL B_THREAD_DEBUG_STOP_CHILD_THREADS + B_THREAD_DEBUG_SYSCALL_TRACE_CHILD_THREADS + B_THREAD_DEBUG_USER_FLAG_MASK B_THREAD_READY B_THREAD_RECEIVING + B_THREAD_RUNNING B_THREAD_SUSPENDED B_THREAD_WAITING + B_TIBETAN_BLOCK B_TIFF_FORMAT B_TILE_BITMAP B_TILE_BITMAP_X + B_TILE_BITMAP_Y B_TIME_AM_PM_FORMAT B_TIME_CODE + B_TIME_FORMAT_STYLE_COUNT B_TIME_SEPARATOR B_TIME_SOURCE + B_TIME_TYPE B_TIME_UNIT_ABBREVIATED B_TIME_UNIT_DAY + B_TIME_UNIT_FULL B_TIME_UNIT_HOUR B_TIME_UNIT_LAST + B_TIME_UNIT_MINUTE B_TIME_UNIT_MONTH B_TIME_UNIT_SECOND + B_TIME_UNIT_WEEK B_TIME_UNIT_YEAR B_TIMECODE_100 B_TIMECODE_18 + B_TIMECODE_24 B_TIMECODE_25 B_TIMECODE_30 B_TIMECODE_30_DROP_2 + B_TIMECODE_30_DROP_4 B_TIMECODE_75 B_TIMECODE_DEFAULT B_TIMED_OUT + B_TIMEOUT B_TIMEOUT_REAL_TIME_BASE B_TIMER B_TIMESOURCE_SEEK + B_TIMESOURCE_START B_TIMESOURCE_STOP B_TIMESOURCE_STOP_IMMEDIATELY + B_TIMING_CLOCK B_TIMING_INTERLACED B_TIMPANI B_TINKLE_BELL + B_TITLED_WINDOW B_TITLED_WINDOW_LOOK B_TO_NEGATIVE_ERROR + B_TO_POSITIVE_ERROR B_TO_POSIX_ERROR B_TODAY_STRING + B_TOGGLE_BEHAVIOR B_TOMORROW_STRING B_TOO_MANY_ARGS + B_TOO_MANY_SONGS_PLAYING B_TOOL_TIP_BACKGROUND_COLOR + B_TOOL_TIP_TEXT_COLOR B_TOP_BORDER B_TOP_SCANLINE_F1 + B_TOP_SCANLINE_F2 B_TOP_TO_BOTTOM B_TOPOLOGY_CORE + B_TOPOLOGY_PACKAGE B_TOPOLOGY_ROOT B_TOPOLOGY_SMT + B_TOPOLOGY_UNKNOWN B_TRACK B_TRACK_RECT_CORNER B_TRACK_WHOLE_RECT + B_TRACKER_ADDON_MESSAGE B_TRANSACTION_BAD_REQUEST + B_TRANSACTION_CHANGE_COUNT_MISMATCH + B_TRANSACTION_FAILED_TO_ACCESS_ENTRY + B_TRANSACTION_FAILED_TO_ADD_GROUP B_TRANSACTION_FAILED_TO_ADD_USER + B_TRANSACTION_FAILED_TO_ADD_USER_TO_GROUP + B_TRANSACTION_FAILED_TO_CHANGE_PACKAGE_ACTIVATION + B_TRANSACTION_FAILED_TO_COPY_FILE + B_TRANSACTION_FAILED_TO_CREATE_DIRECTORY + B_TRANSACTION_FAILED_TO_EXTRACT_PACKAGE_FILE + B_TRANSACTION_FAILED_TO_GET_ENTRY_PATH + B_TRANSACTION_FAILED_TO_MOVE_DIRECTORY + B_TRANSACTION_FAILED_TO_MOVE_FILE + B_TRANSACTION_FAILED_TO_OPEN_DIRECTORY + B_TRANSACTION_FAILED_TO_OPEN_FILE + B_TRANSACTION_FAILED_TO_READ_PACKAGE_FILE + B_TRANSACTION_FAILED_TO_REMOVE_DIRECTORY + B_TRANSACTION_FAILED_TO_WRITE_ACTIVATION_FILE + B_TRANSACTION_FAILED_TO_WRITE_FILE_ATTRIBUTE + B_TRANSACTION_INSTALLATION_LOCATION_BUSY + B_TRANSACTION_INTERNAL_ERROR B_TRANSACTION_NO_MEMORY + B_TRANSACTION_NO_SUCH_PACKAGE B_TRANSACTION_OK + B_TRANSACTION_PACKAGE_ALREADY_EXISTS B_TRANSLATE B_TRANSLATE_ALL + B_TRANSLATE_COMMENT B_TRANSLATE_CONTEXT B_TRANSLATE_ID + B_TRANSLATE_MARK B_TRANSLATE_MARK_ALL B_TRANSLATE_MARK_ALL_VOID + B_TRANSLATE_MARK_COMMENT B_TRANSLATE_MARK_COMMENT_VOID + B_TRANSLATE_MARK_CONTEXT B_TRANSLATE_MARK_CONTEXT_VOID + B_TRANSLATE_MARK_ID B_TRANSLATE_MARK_ID_VOID + B_TRANSLATE_MARK_SYSTEM_NAME B_TRANSLATE_MARK_SYSTEM_NAME_VOID + B_TRANSLATE_MARK_VOID B_TRANSLATE_NOCOLLECT + B_TRANSLATE_NOCOLLECT_ALL B_TRANSLATE_NOCOLLECT_COMMENT + B_TRANSLATE_NOCOLLECT_ID B_TRANSLATE_NOCOLLECT_SYSTEM_NAME + B_TRANSLATE_SYSTEM_NAME B_TRANSLATION_BASE_ERROR + B_TRANSLATION_CONTEXT B_TRANSLATION_CURRENT_VERSION + B_TRANSLATION_ERROR_BASE B_TRANSLATION_MAJOR_VERSION + B_TRANSLATION_MAKE_VERSION B_TRANSLATION_MENU + B_TRANSLATION_MIN_VERSION B_TRANSLATION_MINOR_VERSION + B_TRANSLATION_REVISION_VERSION B_TRANSLATION_SYSTEM_NAME_CONTEXT + B_TRANSLATOR_ADDED B_TRANSLATOR_ANY_TYPE B_TRANSLATOR_BITMAP + B_TRANSLATOR_EXT_BITMAP_COLOR_SPACE B_TRANSLATOR_EXT_BITMAP_PALETTE + B_TRANSLATOR_EXT_BITMAP_RECT B_TRANSLATOR_EXT_COMMENT + B_TRANSLATOR_EXT_DATA_ONLY B_TRANSLATOR_EXT_FRAME + B_TRANSLATOR_EXT_HEADER_ONLY B_TRANSLATOR_EXT_SOUND_CHANNEL + B_TRANSLATOR_EXT_SOUND_LOOP B_TRANSLATOR_EXT_SOUND_MARKER + B_TRANSLATOR_EXT_SOUND_MONO B_TRANSLATOR_EXT_TIME + B_TRANSLATOR_MEDIA B_TRANSLATOR_MIDI B_TRANSLATOR_MIME_TYPE + B_TRANSLATOR_NONE B_TRANSLATOR_PICTURE B_TRANSLATOR_REMOVED + B_TRANSLATOR_SOUND B_TRANSLATOR_TEXT B_TRANSPARENT_32_BIT + B_TRANSPARENT_8_BIT B_TRANSPARENT_COLOR B_TRANSPARENT_MAGIC_CMAP8 + B_TRANSPARENT_MAGIC_RGBA15 B_TRANSPARENT_MAGIC_RGBA15_BIG + B_TRANSPARENT_MAGIC_RGBA32 B_TRANSPARENT_MAGIC_RGBA32_BIG + B_TRASH_DIRECTORY B_TRASH_TARGET B_TREMOLO_DEPTH B_TREMOLO_STRINGS + B_TRIANGLE_THUMB B_TRIM_BITMAP B_TRIM_DEVICE B_TRIM_ICON_BITMAP + B_TRIM_ICON_BITMAP_KEEP_ASPECT B_TROMBONE B_TRUETYPE_WINDOWS + B_TRUMPET B_TRUNCATE_BEGINNING B_TRUNCATE_END B_TRUNCATE_MIDDLE + B_TRUNCATE_SMART B_TTY_MODULE_NAME B_TTY_MODULE_NAME_DANO + B_TTY_MODULE_NAME_R5 B_TUBA B_TUBULAR_BELLS B_TUNE_REQUEST + B_TUNER_CHANNEL B_TWO_STATE_BUTTON B_TYPE_CODE_KIND B_TYPE_INSTALL + B_TYPE_UNINSTALL B_UINT16_TYPE B_UINT32_TYPE B_UINT64_TYPE + B_UINT8_TYPE B_UNCONFIGURED_ADDRESS_FAMILIES B_UNDEFINED_DEVICE + B_UNDEFINED_SAMPLES B_UNDERSCORE_FACE B_UNDO B_UNDO_CLEAR + B_UNDO_CUT B_UNDO_DROP B_UNDO_PASTE B_UNDO_TYPING + B_UNDO_UNAVAILABLE B_UNHANDLED_INTERRUPT B_UNICODE_AEGEAN_NUMBERS + B_UNICODE_ALCHEMICAL_SYMBOLS + B_UNICODE_ALPHABETIC_PRESENTATION_FORMS + B_UNICODE_ANCIENT_GREEK_MUSICAL_NOTATION + B_UNICODE_ANCIENT_GREEK_NUMBERS B_UNICODE_ANCIENT_SYMBOLS + B_UNICODE_ARABIC B_UNICODE_ARABIC_NUMBER + B_UNICODE_ARABIC_PRESENTATION_FORMS_A + B_UNICODE_ARABIC_PRESENTATION_FORMS_B B_UNICODE_ARABIC_SUPPLEMENT + B_UNICODE_ARMENIAN B_UNICODE_ARROWS B_UNICODE_AVESTAN + B_UNICODE_BALINESE B_UNICODE_BAMUM B_UNICODE_BAMUM_SUPPLEMENT + B_UNICODE_BASIC_LATIN B_UNICODE_BATAK B_UNICODE_BENGALI + B_UNICODE_BLOCK_ELEMENTS B_UNICODE_BLOCK_SEPARATOR + B_UNICODE_BOPOMOFO B_UNICODE_BOPOMOFO_EXTENDED + B_UNICODE_BOUNDARY_NEUTRAL B_UNICODE_BOX_DRAWING B_UNICODE_BRAHMI + B_UNICODE_BRAILLE_PATTERNS B_UNICODE_BUGINESE B_UNICODE_BUHID + B_UNICODE_BYZANTINE_MUSICAL_SYMBOLS B_UNICODE_CARIAN + B_UNICODE_CATEGORY_COUNT B_UNICODE_CHAM B_UNICODE_CHEROKEE + B_UNICODE_CJK_COMPATIBILITY B_UNICODE_CJK_COMPATIBILITY_FORMS + B_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS + B_UNICODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT + B_UNICODE_CJK_RADICALS_SUPPLEMENT B_UNICODE_CJK_STROKES + B_UNICODE_CJK_SYMBOLS_AND_PUNCTUATION + B_UNICODE_CJK_UNIFIED_IDEOGRAPHS + B_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A + B_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B + B_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C + B_UNICODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D + B_UNICODE_COMBINING_DIACRITICAL_MARKS + B_UNICODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT + B_UNICODE_COMBINING_HALF_MARKS + B_UNICODE_COMBINING_MARKS_FOR_SYMBOLS + B_UNICODE_COMBINING_SPACING_MARK + B_UNICODE_COMMON_INDIC_NUMBER_FORMS + B_UNICODE_COMMON_NUMBER_SEPARATOR B_UNICODE_CONNECTOR_PUNCTUATION + B_UNICODE_CONTROL_CHAR B_UNICODE_CONTROL_PICTURES + B_UNICODE_CONVERSION B_UNICODE_COPTIC + B_UNICODE_COUNTING_ROD_NUMERALS B_UNICODE_CUNEIFORM + B_UNICODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION + B_UNICODE_CURRENCY_SYMBOL B_UNICODE_CURRENCY_SYMBOLS + B_UNICODE_CYPRIOT_SYLLABARY B_UNICODE_CYRILLIC + B_UNICODE_CYRILLIC_EXTENDED_A B_UNICODE_CYRILLIC_EXTENDED_B + B_UNICODE_CYRILLIC_SUPPLEMENT B_UNICODE_CYRILLIC_SUPPLEMENTARY + B_UNICODE_DASH_PUNCTUATION B_UNICODE_DECIMAL_DIGIT_NUMBER + B_UNICODE_DESERET B_UNICODE_DEVANAGARI + B_UNICODE_DEVANAGARI_EXTENDED B_UNICODE_DINGBATS + B_UNICODE_DIR_NON_SPACING_MARK B_UNICODE_DIRECTION_COUNT + B_UNICODE_DOMINO_TILES B_UNICODE_EA_AMBIGUOUS B_UNICODE_EA_COUNT + B_UNICODE_EA_FULLWIDTH B_UNICODE_EA_HALFWIDTH B_UNICODE_EA_NARROW + B_UNICODE_EA_NEUTRAL B_UNICODE_EA_WIDE + B_UNICODE_EGYPTIAN_HIEROGLYPHS B_UNICODE_EMOTICONS + B_UNICODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT + B_UNICODE_ENCLOSED_ALPHANUMERICS + B_UNICODE_ENCLOSED_CJK_LETTERS_AND_MONTHS + B_UNICODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT B_UNICODE_ENCLOSING_MARK + B_UNICODE_END_PUNCTUATION B_UNICODE_ETHIOPIC + B_UNICODE_ETHIOPIC_EXTENDED B_UNICODE_ETHIOPIC_EXTENDED_A + B_UNICODE_ETHIOPIC_SUPPLEMENT B_UNICODE_EUROPEAN_NUMBER + B_UNICODE_EUROPEAN_NUMBER_SEPARATOR + B_UNICODE_EUROPEAN_NUMBER_TERMINATOR B_UNICODE_FINAL_PUNCTUATION + B_UNICODE_FORMAT_CHAR B_UNICODE_GENERAL_OTHER_TYPES + B_UNICODE_GENERAL_PUNCTUATION B_UNICODE_GEOMETRIC_SHAPES + B_UNICODE_GEORGIAN B_UNICODE_GEORGIAN_SUPPLEMENT + B_UNICODE_GLAGOLITIC B_UNICODE_GOTHIC B_UNICODE_GREEK + B_UNICODE_GREEK_EXTENDED B_UNICODE_GUJARATI B_UNICODE_GURMUKHI + B_UNICODE_HALFWIDTH_AND_FULLWIDTH_FORMS + B_UNICODE_HANGUL_COMPATIBILITY_JAMO B_UNICODE_HANGUL_JAMO + B_UNICODE_HANGUL_JAMO_EXTENDED_A B_UNICODE_HANGUL_JAMO_EXTENDED_B + B_UNICODE_HANGUL_SYLLABLES B_UNICODE_HANUNOO B_UNICODE_HEBREW + B_UNICODE_HIGH_PRIVATE_USE_SURROGATES B_UNICODE_HIGH_SURROGATES + B_UNICODE_HIRAGANA B_UNICODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS + B_UNICODE_IMPERIAL_ARAMAIC B_UNICODE_INITIAL_PUNCTUATION + B_UNICODE_INSCRIPTIONAL_PAHLAVI B_UNICODE_INSCRIPTIONAL_PARTHIAN + B_UNICODE_INVALID_CODE B_UNICODE_IPA_EXTENSIONS B_UNICODE_JAVANESE + B_UNICODE_KAITHI B_UNICODE_KANA_SUPPLEMENT B_UNICODE_KANBUN + B_UNICODE_KANGXI_RADICALS B_UNICODE_KANNADA B_UNICODE_KATAKANA + B_UNICODE_KATAKANA_PHONETIC_EXTENSIONS B_UNICODE_KAYAH_LI + B_UNICODE_KHAROSHTHI B_UNICODE_KHMER B_UNICODE_KHMER_SYMBOLS + B_UNICODE_LAO B_UNICODE_LATIN_1_SUPPLEMENT + B_UNICODE_LATIN_EXTENDED_A B_UNICODE_LATIN_EXTENDED_ADDITIONAL + B_UNICODE_LATIN_EXTENDED_B B_UNICODE_LATIN_EXTENDED_C + B_UNICODE_LATIN_EXTENDED_D B_UNICODE_LEFT_TO_RIGHT + B_UNICODE_LEFT_TO_RIGHT_EMBEDDING B_UNICODE_LEFT_TO_RIGHT_OVERRIDE + B_UNICODE_LEPCHA B_UNICODE_LETTER_NUMBER + B_UNICODE_LETTERLIKE_SYMBOLS B_UNICODE_LIMBU + B_UNICODE_LINE_SEPARATOR B_UNICODE_LINEAR_B_IDEOGRAMS + B_UNICODE_LINEAR_B_SYLLABARY B_UNICODE_LISU + B_UNICODE_LOW_SURROGATES B_UNICODE_LOWERCASE_LETTER + B_UNICODE_LYCIAN B_UNICODE_LYDIAN B_UNICODE_MAHJONG_TILES + B_UNICODE_MALAYALAM B_UNICODE_MANDAIC B_UNICODE_MATH_SYMBOL + B_UNICODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS + B_UNICODE_MATHEMATICAL_OPERATORS B_UNICODE_MEETEI_MAYEK + B_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A + B_UNICODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B + B_UNICODE_MISCELLANEOUS_SYMBOLS + B_UNICODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS + B_UNICODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS + B_UNICODE_MISCELLANEOUS_TECHNICAL B_UNICODE_MODIFIER_LETTER + B_UNICODE_MODIFIER_SYMBOL B_UNICODE_MODIFIER_TONE_LETTERS + B_UNICODE_MONGOLIAN B_UNICODE_MUSICAL_SYMBOLS B_UNICODE_MYANMAR + B_UNICODE_MYANMAR_EXTENDED_A B_UNICODE_NEW_TAI_LUE B_UNICODE_NKO + B_UNICODE_NO_BLOCK B_UNICODE_NO_SCRIPT B_UNICODE_NON_SPACING_MARK + B_UNICODE_NUMBER_FORMS B_UNICODE_OGHAM B_UNICODE_OL_CHIKI + B_UNICODE_OLD_ITALIC B_UNICODE_OLD_PERSIAN + B_UNICODE_OLD_SOUTH_ARABIAN B_UNICODE_OLD_TURKIC + B_UNICODE_OPTICAL_CHARACTER_RECOGNITION B_UNICODE_ORIYA + B_UNICODE_OSMANYA B_UNICODE_OTHER_LETTER B_UNICODE_OTHER_NEUTRAL + B_UNICODE_OTHER_NUMBER B_UNICODE_OTHER_PUNCTUATION + B_UNICODE_OTHER_SYMBOL B_UNICODE_PARAGRAPH_SEPARATOR + B_UNICODE_PHAGS_PA B_UNICODE_PHAISTOS_DISC B_UNICODE_PHOENICIAN + B_UNICODE_PHONETIC_EXTENSIONS + B_UNICODE_PHONETIC_EXTENSIONS_SUPPLEMENT B_UNICODE_PLAYING_CARDS + B_UNICODE_POP_DIRECTIONAL_FORMAT B_UNICODE_PRIVATE_USE + B_UNICODE_PRIVATE_USE_AREA B_UNICODE_PRIVATE_USE_CHAR + B_UNICODE_REJANG B_UNICODE_RIGHT_TO_LEFT + B_UNICODE_RIGHT_TO_LEFT_ARABIC B_UNICODE_RIGHT_TO_LEFT_EMBEDDING + B_UNICODE_RIGHT_TO_LEFT_OVERRIDE B_UNICODE_RUMI_NUMERAL_SYMBOLS + B_UNICODE_RUNIC B_UNICODE_SAMARITAN B_UNICODE_SAURASHTRA + B_UNICODE_SCRIPT_COUNT B_UNICODE_SEGMENT_SEPARATOR + B_UNICODE_SHAVIAN B_UNICODE_SINHALA B_UNICODE_SMALL_FORM_VARIANTS + B_UNICODE_SPACE_SEPARATOR B_UNICODE_SPACING_MODIFIER_LETTERS + B_UNICODE_SPECIALS B_UNICODE_START_PUNCTUATION B_UNICODE_SUNDANESE + B_UNICODE_SUPERSCRIPTS_AND_SUBSCRIPTS + B_UNICODE_SUPPLEMENTAL_ARROWS_A B_UNICODE_SUPPLEMENTAL_ARROWS_B + B_UNICODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS + B_UNICODE_SUPPLEMENTAL_PUNCTUATION + B_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A + B_UNICODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B B_UNICODE_SURROGATE + B_UNICODE_SYLOTI_NAGRI B_UNICODE_SYRIAC B_UNICODE_TAGALOG + B_UNICODE_TAGBANWA B_UNICODE_TAGS B_UNICODE_TAI_LE + B_UNICODE_TAI_THAM B_UNICODE_TAI_VIET + B_UNICODE_TAI_XUAN_JING_SYMBOLS B_UNICODE_TAMIL B_UNICODE_TELUGU + B_UNICODE_THAANA B_UNICODE_THAI B_UNICODE_TIBETAN + B_UNICODE_TIFINAGH B_UNICODE_TITLECASE_LETTER + B_UNICODE_TRANSPORT_AND_MAP_SYMBOLS B_UNICODE_UGARITIC + B_UNICODE_UNASSIGNED + B_UNICODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS + B_UNICODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED + B_UNICODE_UPPERCASE_LETTER B_UNICODE_UTF8 B_UNICODE_VAI + B_UNICODE_VARIATION_SELECTORS + B_UNICODE_VARIATION_SELECTORS_SUPPLEMENT B_UNICODE_VEDIC_EXTENSIONS + B_UNICODE_VERTICAL_FORMS B_UNICODE_WHITE_SPACE_NEUTRAL + B_UNICODE_YI_RADICALS B_UNICODE_YI_SYLLABLES + B_UNICODE_YIJING_HEXAGRAM_SYMBOLS B_UNINIT_ACCELERANT B_UNIX_FILE + B_UNKNOWN B_UNKNOWN_BUS B_UNKNOWN_EXECUTABLE B_UNKNOWN_FILE + B_UNKNOWN_MIME_TYPE B_UNMAPPED_KEY_DOWN B_UNMAPPED_KEY_UP B_UNREAD + B_UNREGISTERED B_UNSPECIFIED B_UNSUPPORTED B_UNTYPED_WINDOW + B_UP_ARROW B_UPDATE_MIME_INFO_FORCE_KEEP_TYPE + B_UPDATE_MIME_INFO_FORCE_UPDATE_ALL B_UPDATE_MIME_INFO_NO_FORCE + B_UPDATE_STATUS_BAR B_URGENT_DISPLAY_PRIORITY B_URGENT_PRIORITY + B_URL_FILE B_URL_FTP B_URL_GOPHER B_URL_HTTP B_URL_HTTPS + B_URL_MAILTO B_URL_NEWS B_URL_NNTP + B_URL_PROTOCOL_CERTIFICATE_VERIFICATION_FAILED + B_URL_PROTOCOL_CONNECTION_OPENED B_URL_PROTOCOL_DATA_RECEIVED + B_URL_PROTOCOL_DEBUG_ERROR B_URL_PROTOCOL_DEBUG_HEADER_IN + B_URL_PROTOCOL_DEBUG_HEADER_OUT B_URL_PROTOCOL_DEBUG_MESSAGE + B_URL_PROTOCOL_DEBUG_TEXT B_URL_PROTOCOL_DEBUG_TRANSFER_IN + B_URL_PROTOCOL_DEBUG_TRANSFER_OUT B_URL_PROTOCOL_DOWNLOAD_PROGRESS + B_URL_PROTOCOL_HEADERS_RECEIVED B_URL_PROTOCOL_HOSTNAME_RESOLVED + B_URL_PROTOCOL_NOTIFICATION B_URL_PROTOCOL_REQUEST_COMPLETED + B_URL_PROTOCOL_RESPONSE_STARTED B_URL_PROTOCOL_UPLOAD_PROGRESS + B_URL_RLOGIN B_URL_TELNET B_URL_TN3270 B_URL_WAIS B_US + B_USB_HID_DESCRIPTOR_HID B_USB_HID_DESCRIPTOR_PHYSICAL + B_USB_HID_DESCRIPTOR_REPORT B_USB_HID_INTERFACE_BOOT_SUBCLASS + B_USB_HID_INTERFACE_NO_SUBCLASS B_USB_MODULE_NAME + B_USB_REQUEST_HID_GET_IDLE B_USB_REQUEST_HID_GET_PROTOCOL + B_USB_REQUEST_HID_GET_REPORT B_USB_REQUEST_HID_SET_IDLE + B_USB_REQUEST_HID_SET_PROTOCOL B_USB_REQUEST_HID_SET_REPORT + B_USE_ATTRIBUTES B_USE_BIG_INSETS B_USE_BIG_SPACING + B_USE_BOTH_LOCATIONS B_USE_DEFAULT_SPACING B_USE_HALF_ITEM_INSETS + B_USE_HALF_ITEM_SPACING B_USE_ITEM_INSETS B_USE_ITEM_SPACING + B_USE_POSITIVE_POSIX_ERRORS B_USE_RESOURCES B_USE_SMALL_INSETS + B_USE_SMALL_SPACING B_USE_WINDOW_INSETS B_USE_WINDOW_SPACING + B_USER_ADDONS_DIRECTORY B_USER_APPS_DIRECTORY B_USER_ATTRIBUTE_NAME + B_USER_BIN_DIRECTORY B_USER_BOOT_DIRECTORY B_USER_CACHE_DIRECTORY + B_USER_CLEANUP B_USER_CLONEABLE_AREA B_USER_CONFIG_DIRECTORY + B_USER_DATA_DIRECTORY B_USER_DESKBAR_DIRECTORY + B_USER_DEVELOP_DIRECTORY B_USER_DIRECTORY + B_USER_DOCUMENTATION_DIRECTORY B_USER_ETC_DIRECTORY B_USER_EVENT + B_USER_FONTS_DIRECTORY B_USER_HEADERS_DIRECTORY + B_USER_INPUT_HANDLING B_USER_LIB_DIRECTORY B_USER_LOG_DIRECTORY + B_USER_MEDIA_NODES_DIRECTORY B_USER_NONPACKAGED_ADDONS_DIRECTORY + B_USER_NONPACKAGED_BIN_DIRECTORY B_USER_NONPACKAGED_DATA_DIRECTORY + B_USER_NONPACKAGED_DEVELOP_DIRECTORY B_USER_NONPACKAGED_DIRECTORY + B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY + B_USER_NONPACKAGED_FONTS_DIRECTORY + B_USER_NONPACKAGED_HEADERS_DIRECTORY + B_USER_NONPACKAGED_LIB_DIRECTORY + B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY + B_USER_NONPACKAGED_SOUNDS_DIRECTORY + B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY B_USER_PACKAGES_DIRECTORY + B_USER_PREFERENCES_DIRECTORY B_USER_PRINTERS_DIRECTORY + B_USER_RUN_STATES B_USER_SERVERS_DIRECTORY + B_USER_SETTINGS_DIRECTORY B_USER_SOUNDS_DIRECTORY + B_USER_SPOOL_DIRECTORY B_USER_TRANSLATORS_DIRECTORY + B_USER_VAR_DIRECTORY B_UTF16_CONVERSION B_UTF8_BULLET + B_UTF8_CLOSE_QUOTE B_UTF8_COPYRIGHT B_UTF8_ELLIPSIS B_UTF8_HIROSHI + B_UTF8_OPEN_QUOTE B_UTF8_REGISTERED B_UTF8_SMILING_FACE + B_UTF8_TRADEMARK B_UTILITIES_DIRECTORY B_UVL24 B_UVL32 B_UVLA32 + B_V_SCROLL_BAR_WIDTH B_VALUE_CHANGED B_VECTOR_ICON_TYPE + B_VERIFY_ALLOW_UNINSTALL B_VERTICAL + B_VERTICAL_SCROLL_BAR_BACKGROUND B_VIBRAPHONE B_VID + B_VIDEO_BOTTOM_LEFT_RIGHT B_VIDEO_FORMAT B_VIDEO_PLAYBACK + B_VIDEO_RECORDING B_VIDEO_TOP_LEFT_RIGHT B_VIEW_MOVED + B_VIEW_RESIZED B_VIEWS_SUPPORT_DRAW_BITMAP B_VIOLA B_VIOLIN + B_VNODE_DONT_CREATE_SPECIAL_SUB_NODE B_VNODE_PUBLISH_REMOVED + B_VOICE B_VOICE_AAH B_VOICE_OOH B_WAIT_ENGINE_IDLE + B_WAIT_FOR_RETRACE B_WAIT_TILL_LOADED B_WARM B_WARNING_ALERT B_WARP + B_WARP_FOCUS_FOLLOWS_MOUSE B_WATCH_ALL B_WATCH_ATTR + B_WATCH_CHILDREN B_WATCH_DIRECTORY B_WATCH_INTERIM_STAT + B_WATCH_MOUNT B_WATCH_NAME B_WATCH_NETWORK_INTERFACE_CHANGES + B_WATCH_NETWORK_LINK_CHANGES B_WATCH_NETWORK_WLAN_CHANGES + B_WATCH_PACKAGE_INSTALLATION_LOCATIONS B_WATCH_STAT B_WAV_FORMAT + B_WAV_FORMAT_FAMILY B_WAVE_FILE B_WEB_ADC_CONVERTER + B_WEB_BUFFER_INPUT B_WEB_BUFFER_OUTPUT B_WEB_DAC_CONVERTER + B_WEB_LOGICAL_BUS B_WEB_LOGICAL_INPUT B_WEB_LOGICAL_OUTPUT + B_WEB_PHYSICAL_INPUT B_WEB_PHYSICAL_OUTPUT B_WEEKDAY_FRIDAY + B_WEEKDAY_MONDAY B_WEEKDAY_SATURDAY B_WEEKDAY_SUNDAY + B_WEEKDAY_THURSDAY B_WEEKDAY_TUESDAY B_WEEKDAY_WEDNESDAY B_WHISTLE + B_WIDTH_AS_USUAL B_WIDTH_FROM_LABEL B_WIDTH_FROM_WIDEST + B_WILL_ACCEPT_FIRST_CLICK B_WILL_DRAW B_WILL_SEEK B_WILL_START + B_WILL_STOP B_WILL_TIMEWARP B_WINDOW_ACTIVATED + B_WINDOW_BORDER_COLOR B_WINDOW_INACTIVE_BORDER_COLOR + B_WINDOW_INACTIVE_TAB_COLOR B_WINDOW_INACTIVE_TEXT_COLOR + B_WINDOW_MOVE_BY B_WINDOW_MOVE_TO B_WINDOW_MOVED B_WINDOW_RESIZED + B_WINDOW_TAB_COLOR B_WINDOW_TEXT_COLOR B_WOODBLOCK + B_WORKSPACE_ACTIVATED B_WORKSPACES_CHANGED B_WORM B_WOULD_BLOCK + B_WRITABLE B_WRITABLE_FILE_COMPARISON_FAILED + B_WRITABLE_FILE_NO_PACKAGE_ATTRIBUTE B_WRITABLE_FILE_NOT_EQUAL + B_WRITABLE_FILE_OLD_ORIGINAL_FILE_MISSING + B_WRITABLE_FILE_OLD_ORIGINAL_FILE_TYPE_MISMATCH + B_WRITABLE_FILE_TYPE_MISMATCH + B_WRITABLE_FILE_UPDATE_TYPE_AUTO_MERGE + B_WRITABLE_FILE_UPDATE_TYPE_DEFAULT + B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT + B_WRITABLE_FILE_UPDATE_TYPE_KEEP_OLD + B_WRITABLE_FILE_UPDATE_TYPE_MANUAL + B_WRITABLE_SYMLINK_COMPARISON_FAILED B_WRITABLE_SYMLINK_NOT_EQUAL + B_WRITE_AREA B_WRITE_ONLY B_XATTR_TYPE B_XYLOPHONE B_YC + B_YES_EXPRESSION B_YES_STRING B_YESTERDAY_STRING B_YUV12 B_YUV411 + B_YUV420 B_YUV422 B_YUV444 B_YUV9 B_ZOOM +comments: + line: // + block: [ "/*", "*/" ] +styles: + 11: 32 + 10: 110 + 6: 106 + 7: 106 + 4: 104 + 5: 105 + 16: 105 + 1: 101 + 2: 101 + 3: 103 + 15: 103 + 17: 117 + 18: 117 + 19: 119 + 13: 113 + 14: 114 + 9: 109 +substyles: + 11: [ 121, 119, 119, 120 ] diff --git a/data/languages/css.yaml b/data/languages/css.yaml new file mode 100644 index 00000000..347d5b59 --- /dev/null +++ b/data/languages/css.yaml @@ -0,0 +1,75 @@ +# CSS +lexer: css +properties: +keywords: + 0: > + background background-attachment background-color background-image + background-position background-repeat border border-bottom + border-bottom-width border-color border-left border-left-width + border-right border-right-width border-style border-top + border-top-width border-width clear color display float font + font-family font-size font-style font-variant font-weight height + letter-spacing line-height list-style list-style-image + list-style-position list-style-type margin margin-bottom margin-left + margin-right margin-top padding padding-bottom padding-left + padding-right padding-top text-align text-decoration text-indent + text-transform vertical-align white-space width word-spacing + 1: > + active checked disabled empty enabled first-child first-of-type focus + hover in-range invalid lang last-child last-of-type link not nth-child + nth-last-child nth-last-of-type nth-of-type only-of-type only-child + optional out-of-range read-only read-write required root target valid + visited + 2: > + azimuth border-bottom-color border-bottom-style border-collapse + border-left-color border-left-style border-right-color + border-right-style border-spacing border-top-color border-top-style + bottom caption-side clip content counter-increment counter-reset cue + cue-after cue-before cursor direction elevation empty-cells inline-table + left ltr max-height max-width min-height min-width orphans outline + outline-color outline-style outline-width overflow page-break-after + page-break-before page-break-inside pause pause-after pause-before + pitch pitch-range play-during position quotes richness right rtl + speak speak-header speak-numeral speak-punctuation speech-rate stress + table table-caption table-cell table-layout top unicode-bidi visibility + voice-family volume widows z-index + 3: > + align-content align-items align-self animation animation-delay + animation-direction animation-duration animation-fill-mode + animation-iteration-count animation-name animation-play-state + animation-timing-function backface-visibility background-clip + background-origin background-size border-bottom-left-radius + border-bottom-right-radius border-image border-image-outset + border-image-repeat border-image-slice border-image-source + border-image-width border-radius border-top-left-radius + border-top-right-radius box-shadow box-sizing column-count column-fill + column-gap column-rule column-rule-color column-rule-style + column-rule-width column-span column-width columns flex flex-basis + flex-direction flex-flow flex-grow flex-shrink flex-wrap + font-size-adjust font-stretch justify-content opacity order + outline-offset overflow-x overflow-y perspective perspective-origin + resize tab-size text-align-last text-decoration-color + text-decoration-line text-decoration-style text-justify + text-overflow text-shadow transform transform-origin + transform-style transition transition-delay transition-duration + transition-property transition-timing-function word-break word-wrap + 4: > + after before first-letter first-line selection +comments: + block: [ "/*", "*/" ] +styles: + 0: 32 + 1: 155 + 2: 155 + 3: 155 + 4: 32 + 5: 32 + 6: 156 + 15: 156 + 17: 156 + 7: 32 + 8: 32 + 9: 101 + 10: 32 + 11: 148 + 12: 117 diff --git a/data/languages/diff.yaml b/data/languages/diff.yaml new file mode 100644 index 00000000..5072d574 --- /dev/null +++ b/data/languages/diff.yaml @@ -0,0 +1,10 @@ +# Diff +lexer: diff +styles: + 0: 32 + 1: 101 + 2: 105 + 3: 152 + 4: 109 + 5: 165 + 6: 166 diff --git a/data/languages/gdscript.yaml b/data/languages/gdscript.yaml new file mode 100644 index 00000000..d0b3d288 --- /dev/null +++ b/data/languages/gdscript.yaml @@ -0,0 +1,81 @@ +# GDScript +lexer: python +properties: + fold: 1 +keywords: + # keywords 0 - style: 5 + 0: as assert break breakpoint class const continue elif else enum export extends for func if is match master mastersync onready pass preload print puppet puppetsync remote remotesync return self setget signal static tool var while yield PI TAU INF NAN false true bool float int null and in or not + # keywords 1 - style: 14 + 1: _get _get_property_list _init _notification _set _enter_tree _exit_tree _get_configuration_warning _input _physics_process _process _ready _unhandled_input _unhandled_key_input _input_event _draw +identifiers: + 11: + - > # built in types + Vector2 Rect2 Vector3 Transform2D Plane Quat AABB Basis Transform Color NodePath Object Array Dictionary String PoolByteArray PoolIntArray PoolRealArray PoolStringArray PoolVector2Array PoolVector3Array PoolColorArray RID + - > # Nodes 2D + Node2D AnimatedSprite CollisionObject2D Area2D PhysicsBody2D KinematicBody2D RigidBody2D StaticBody2D AudioStreamPlayer2D BackBufferCopy Bone2D CPUParticles2D Camera2D CanvasModulate CollisionPolygon2D CollisionShape2D Joint2D DampedSpringJoint2D GrooveJoint2D PinJoint2D Light2D LightOccluder2D Line2D MeshInstance2D Navigation2D NavigationPolygonInstance ParallaxLayer Particles2D Path2D PathFollow2D Polygon2D Position2D RayCast2D RemoteTransform2D Skeleton2D Sprite TileMap TouchScreenButton VisibilityNotifier2D YSort + - > # Nodes 3D + Node Spatial ARVRAnchor Camera ARVRCamera ClippedCamera InterpolatedCamera ARVRController ARVROrigin VisualInstance GeometryInstance SpriteBase3D AnimatedSprite3D Sprite3D CPUParticles ImmediateGeometry MeshInstance SoftBody MultiMeshInstance Particles BakedLightmap CSGShape CSGPrimitive CSGBox CSGCylinder CSGMesh CSGPolygon CSGSphere CSGTorus CSGCombiner Light DirectionalLight OmniLight SpotLight GIProbe ReflectionProbe RootMotionView CollisionObject Area PhysicsBody KinematicBody PhysicalBone RigidBody VehicleBody StaticBody AudioStreamPlayer3D BoneAttachment CollisionPolygon CollisionShape Joint ConeTwistJoint Generic6DOFJoint HingeJoint PinJoint SliderJoint GridMap Listener Navigation NavigationMeshInstance Path PathFollow Position3D ProximityGroup RayCast RemoteTransform Skeleton SpringArm VehicleWheel VisibilityNotifier VisibilityEnabler + - > # GUI Nodes + Control Popup WindowDialog AcceptDialog ConfirmationDialog FileDialog PopupDialog PopupMenu PopupPanel BaseButton Button CheckBox CheckButton ColorPickerButton MenuButton OptionButton ToolButton LinkButton TextureButton Container CenterContainer BoxContainer ColorPicker HBoxContainer VBoxContainer GraphNode GridContainer SplitContainer HSplitContainer VSplitContainer MarginContainer PanelContainer ScrollContainer TabContainer ViewportContainer ColorRect GraphEdit Range ScrollBar HScrollBar VScrollBar Slider HSlider VSlider ProgressBar SpinBox TextureProgress Separator HSepparator VSeparator ItemList Label LineEdit NinePatchRect Panel ReferenceRect RichTextLabel Tabs TextEdit TextureRect Tree + - > # Color Names + aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflower cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkturquoise darkviolet deeppink deepskyblue dimgray dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray webgray green webgreen greenyellow honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrod lightgray lightgreen lightpink lightsalmon lightseagreen lightskyblue lightslategray lightsteelblue lightyellow lime limegreen linen magenta maroon webmaroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navyblue oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple webpurple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen + - > # other nodes + CanvasItem AnimationPlayer AnimationTree AnimationTreePlayer AudioStreamPlayer CanvasLayer ParallaxBackground HTTPRequest ResourcePreloader SkeletonIK Timer Tween Viewport WorldEnvironment + - > # classes + Object Input InputDefault Reference Resource InputEvent InputEventAction InputEventWithModifiers InputEventGesture InputEventMagnifyGesture InputEventPanGesture InputEventKey InputEventMouse InputEventMouseButton InputEventMouseMotion InputEventJoypadButton InputEventJoypadMotion InputEventMIDI InputEventScreenDrag InputEventScreenTouch VisualScriptNode VisualScriptInputAction VisualShaderNode VisualShaderNodeInput InputMap + - > # methods + # input + action_press action_release add_joy_mapping get_accelerometer get_action_strength get_connected_joypads get_gravity get_gyroscope get_joy_axis get_joy_axis_index_from_string get_joy_axis_string get_joy_button_index_from_string get_joy_button_string get_joy_guid get_joy_name get_joy_vibration_duration get_joy_vibration_strength get_last_mouse_speed get_magnetometer get_mouse_button_mask get_mouse_mode is_action_just_pressed is_action_just_released is_action_pressed is_joy_button_pressed is_joy_known is_key_pressed is_mouse_button_pressed joy_connection_changed parse_input_event remove_joy_mapping set_custom_mouse_cursor set_default_cursor_shape set_mouse_mode set_use_accumulated_input start_joy_vibration stop_joy_vibration warp_mouse_position + # canvas item + draw_char draw_circle draw_colored_polygon draw_line draw_mesh draw_multiline draw_multiline_colors draw_multimesh draw_polygon draw_polyline draw_polyline_colors draw_primitive draw_rect draw_set_trasform draw_set_transform_matrix draw_string draw_style_box draw_texture draw_texture_rect draw_texture_rect_region force_update_transform get_canvas get_canvas_item get_canvas_transform get_global_transform_with_canvas get_local_mouse_position get_world_2d hide is_local_transform_notification_enabled is_set_as_toplevel is_transform_notification_enabled is_visible_in_tree make_canvas_position_local make_input_local set_as_toplevel set_notify_local_transform set_notify_transform show update + # area + get_collision_layer_bit get_collision_mask_bit get_overlapping_areas get_overlapping_bodies overlaps_area overlaps_body set_collision_layer_bit set_collision_layer_mask_bit + # collision object + create_chape_owner get_rid get_shape_owners is_shape_owner_disabled remove_shape_owner shape_find_owner shape_owner_add_shape shape_owner_clear_shapes shape_owner_get_owner shape_owner_get_shape shape_owner_get_shape_count shape_owner_get_shape_index shape_owner_remove_shape shape_owner_get_transform shape_owner_set_disabled shape_owner_set_transform + # spatial + force_update_transform get_parent_spatial get_world global_rotate global_scale global_translate hide is_local_transform_notification_enabled is_scale_disabled is_set_as_toplevel is_transform_notification_enabled is_visible_in_tree look_at look_at_from_position orthonormalize rotate rotate_object_local rotate_x rotate_y rotate_z scale_object_local set_as_toplevel set_disable_scale set_identity set_ignore_transform_notification set_notify_local_transform set_notify_transform show to_global to_local translate translate_object_local update_gizmo + # node + add_child add_child_below_node add_to_group can_process duplicate find_node find_parent get_child get_child_count get_children get_groups get_index get_network_master get_node get_node_and_resource get_node_or_null get_parent get_path get_path_to get_physics_process_delta_time get_position_in_parent get_process_delta_time get_scene_instance_load_placeholder get_tree get_viewport has_node has_node_and_resource is_a_parent_of is_displayed_folded is_greater_than is_in_group is_inside_tree is_network_master is_physics_processing is_physics_processing_internal is_processing is_processing_input is_processing_internal is_processing_unhandled_input is_processing_unhandled_key_input move_child print_stray_nodes print_tree print_tree_pretty propagate_call propagate_notification queue_free raise remove_and_skip remove_child remove_from_group replace_by request_ready rpc rpc_config rpc_id rpc_unreliable rpc_unreliable_id rset rset_config rset_id rset_unreliable rset_unreliable_id set_display_folded set_network_master set_physics_process set_physics_process_internal set_process set_process_input set_process_internal set_process_priority set_process_unhandled_input set_process_unhandled_key_input set_scene_instance_load_placeholder + # object + callv can_translate_message connect disconnect emit_signal free get get_class get_incoming_connections get_indexed get_instance_id get_meta get_meta_list get_method_list get_property_list get_script get_signal_connection_list get_signal_list has_meta has_method has_user_signal is_blocking_signals is_class is_connected is_queued_for_deletion notification property_list_changed_notify set set_block_signals set_deferred set_indexed set_message_translation set_meta set_script tr + - > # signals + script_changed ready renamed tree_entered tree_exited tree_exiting visibility_changed input_event mouse_entered mouse_exited area_entered area_exited area_shape_entered area_shape_exited body_entered body_exited body_shape_entered body_shape_exited draw hide item_rect_changed joy_connection_changed +comments: + line: "#" + # block: ['"""', '"""'] +styles: + 0: 32 # default white-space + 1: 101 # comment + 2: 104 # number + 3: 106 # string + 4: 106 # character + 5: 105 # keywords 0 (for keywords) + 6: 126 # triple quotes + 7: 126 # triple double quotes + 8: 119 # class name + 9: 119 # defname - identifier + 10: 110 # operator + 11: 32 # >> all identifiers + 12: 104 # comment block + 13: 113 # error literal string + 14: 105 # keywords 1 (methods) + 15: 109 # preprocessor + 16: 106 # literal string interpolated - f-string + 17: 106 # literal string interpolated - single quoted f-string + 18: 126 # literal string interpolated - triple quoted f-string + 19: 126 # literal string interpolated - triple double quoated f-string +substyles: + # [ builtin, nodes2d, nodes3d, guiNodes, colors, otherNodes, classes, methods, signals ] + 11: [ 135, 121, 121, 121, 117, 121, 119, 119, 129 ] + +# substiles for "identifiers": 11:[ +# 0 - Builtin-Types +# 1 - Nodes 2D +# 2 - Nodes 3D +# 3 - GUI Nodes +# 4 - Color names +# 5 - Other Nodes +# 6 - Classes +# 7 - Methods +# 8 - Signals +# ] diff --git a/data/languages/html.yaml b/data/languages/html.yaml new file mode 100644 index 00000000..e38a8222 --- /dev/null +++ b/data/languages/html.yaml @@ -0,0 +1,79 @@ +# HTML +lexer: hypertext +properties: + fold: 1 + fold.html: 1 +keywords: + 0: > + a abbr acronym address applet area article aside audio b base basefont + bdi bdo big blockquote body br button canvas caption center cite code + col colgroup datalist dd del details dfn dialog dir div dl dt em embed + fieldset figcaption figure font footer form frame frameset h1 h2 h3 h4 + h5 h6 head header hr html i iframe img input ins kbd keygen label legend + li link main map mark menu menuitem meta meter nav noframes noscript + object ol optgroup option output p param picture pre progress q rp rt + ruby s samp script section select small source span strike strong style + sub summary sup table tbody td textarea tfoot th thead time title tr + track tt u ul var video wbr + 1: > + abstract arguments await boolean break byte case catch char class const + continue debugger default delete do double else enum eval export extends + false final finally float for function goto if implements import in + instanceof int interface let long native new null package private + protected public return short static super switch synchronized this + throw throws transient true try typeof var void volatile while with + yield + 4: > + __CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ + __NAMESPACE__ __TRAIT__ __halt_compiler + abstract and array as break callable case catch class + clone const continue declare default die do echo else elseif empty + enddeclare endfor endforeach endif endswitch endwhile eval exit extends + final for foreach function global goto if implements include + include_once instanceof insteadof interface isset list namespace new or + parent print private protected public require require_once return self + static switch throw trait try unset use var while xor +comments: + block: [ "" ] +styles: + 0: 32 + 12: 155 + 13: 155 + 9: 101 + 5: 104 + 6: 106 + 7: 106 + 1: 155 + 11: 155 + 2: 32 + 3: 156 + 4: 32 + 21: 161 + 17: 32 + 19: 32 + 10: 106 + 18: 117 + # JavaScript + 41: 32 + 42: 101 + 43: 101 + 44: 103 + 45: 104 + 46: 32 + 47: 105 + 48: 106 + 49: 106 + 50: 32 + 51: 106 + 52: 114 + # PHP + 118: 32 + 119: 106 + 126: 32 + 120: 106 + 121: 105 + 122: 104 + 123: 152 + 124: 101 + 125: 101 + 127: 32 diff --git a/data/languages/jam.yaml b/data/languages/jam.yaml new file mode 100644 index 00000000..8df053b8 --- /dev/null +++ b/data/languages/jam.yaml @@ -0,0 +1,35 @@ +lexer: jam +properties: + fold: 1 + fold.comment: 1 +keywords: + 0: > + actions bind break case continue default else existing for if ignore in + include jumptoeof local maxline on piecemeal quietly return rule switch + together updated while +identifiers: + 6: + - > + As Bulk Cc C++ Clean File Fortran GenFile HardLink HdrRule + InstallInto InstallBin InstallLib InstallFile InstallMan + InstallShell Lex Library LibraryFromObjects LinkLibraries LocalClean + LocalDepends Main MainFromObjects MakeLocate MkDir Object + ObjectCcFlags ObjectC++Flags ObjectHdrs Objects RmTemps Setuid + SoftLink SubDir SubDirCcFlags SubDirC++Flags SubDirHdrs SubInclude + Shell Undefines UserObject Yacc + FAppendSuffix FDirName FGrist FGristFiles FGristSourceFiles + FIsPrefix FStripCommon FReverse FRelPath FSubDir + Always Depends Echo Exit Includes NoCare NoUpdate NotFile Temporary +comments: + line: "#" +styles: + 0: 32 + 1: 101 + 2: 104 + 3: 106 + 4: 105 + 5: 110 + 6: 32 + 7: 152 +substyles: + 6: [ 120 ] diff --git a/data/languages/javascript.yaml b/data/languages/javascript.yaml new file mode 100644 index 00000000..0e4d28fa --- /dev/null +++ b/data/languages/javascript.yaml @@ -0,0 +1,35 @@ +# JavaScript +lexer: cpp +properties: + fold: 1 +keywords: + 0: > + abstract arguments await boolean break byte case catch char class const + continue debugger default delete do double else enum eval export extends + false final finally float for function goto if implements import in + instanceof int interface let long native new null package private + protected public return short static super switch synchronized this + throw throws transient true try typeof var void volatile while with + yield +comments: + line: "//" + block: [ "/*", "*/" ] +styles: + 11: 32 + 10: 32 + 6: 106 + 7: 106 + 4: 104 + 5: 105 + 16: 105 + 1: 101 + 2: 101 + 3: 103 + 15: 103 + 17: 117 + 18: 117 + 19: 119 + 13: 113 + 14: 114 + 9: 109 + 12: 106 diff --git a/data/languages/lua.yaml b/data/languages/lua.yaml new file mode 100644 index 00000000..d3439c43 --- /dev/null +++ b/data/languages/lua.yaml @@ -0,0 +1,49 @@ +# Lua +lexer: lua +properties: + fold: 1 +keywords: + 0: > + and break do else elseif end false for function if in local nil not or + repeat return then true until while + 1: > + assert collectgarbage dofile error _G getfenv getmetatable ipairs load + loadfile loadstring next pairs pcall print rawequal rawget rawset select + setfenv setmetatable tonumber tostring type unpack _VERSION xpcall + 2: > + string.byte string.char string.dump string.find string.format + string.gmatch string.gsub string.len string.lower string.match + string.rep string.reverse string.sub string.upper + table.concat table.insert table.maxn table.remove table.sort + math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos + math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge + math.ldexp math.log math.log10 math.max math.min math.modf math.pi + math.pow math.rad math.random math.randomseed math.sin math.sinh + math.sqrt math.tan math.tanh + 3: > + coroutine.create coroutine.resume coroutine.running coroutine.status + coroutine.wrap coroutine.yield + io.close io.flush io.input io.lines io.open io.output io.popen io.read + io.tmpfile io.type io.write + os.clock os.date os.difftime os.execute os.exit os.getenv os.remove + os.rename os.setlocale os.time os.tmpname +comments: + line: "--" + block: [ "--[[", "]]" ] +styles: + 0: 32 + 1: 101 + 2: 101 + 3: 103 + 4: 104 + 5: 105 + 6: 106 + 7: 106 + 8: 106 + 9: 109 + 10: 110 + 11: 32 + 13: 120 + 14: 119 + 15: 121 + 20: 32 diff --git a/data/languages/makefile.yaml b/data/languages/makefile.yaml new file mode 100644 index 00000000..3c025c12 --- /dev/null +++ b/data/languages/makefile.yaml @@ -0,0 +1,12 @@ +# Makefile +lexer: makefile +comments: + line: "#" +styles: + 0: 32 + 1: 101 + 2: 109 + 3: 152 + 4: 32 + 5: 103 + 9: 32 diff --git a/data/languages/markdown.yaml b/data/languages/markdown.yaml new file mode 100644 index 00000000..2bbc63d6 --- /dev/null +++ b/data/languages/markdown.yaml @@ -0,0 +1,25 @@ +# Markdown +lexer: markdown +styles: + 0: 32 + 1: 32 + 2: 200 + 3: 200 + 4: 201 + 5: 201 + 6: 105 + 7: 105 + 8: 105 + 9: 105 + 10: 105 + 11: 105 + 12: 110 + 13: 110 + 14: 110 + 15: 104 + 16: 165 + 17: 110 + 18: 121 + 19: 106 + 20: 106 + 21: 106 diff --git a/data/languages/ocaml.yaml b/data/languages/ocaml.yaml new file mode 100644 index 00000000..0bef2161 --- /dev/null +++ b/data/languages/ocaml.yaml @@ -0,0 +1,31 @@ +# OCaml +lexer: caml +keywords: + 0: > + and as assert begin class constraint do done downto else end exception + external false for fun function functor if in include inherit + initializer lazy let match method module mutable new object of open or + private rec sig struct then to true try type val virtual when while with + 1: > + option Some None ignore ref lnot succ pred + 2: > + array bool char float int list string unit +comments: + block: [ "(*", "*)" ] +styles: + 0: 32 + 1: 32 + 2: 32 + 3: 105 + 4: 105 + 5: 105 + 6: 113 + 7: 32 + 8: 104 + 9: 106 + #10: + 11: 106 + 12: 101 + 13: 101 + 14: 103 + 15: 103 diff --git a/data/languages/perl.yaml b/data/languages/perl.yaml new file mode 100644 index 00000000..0ab69b30 --- /dev/null +++ b/data/languages/perl.yaml @@ -0,0 +1,56 @@ +# Perl +# adapted from SciTE +lexer: perl +keywords: + 0: > + NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD + BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK abs accept + alarm and atan2 bind binmode bless caller chdir chmod chomp chop + chown chr chroot close closedir cmp connect continue cos crypt + dbmclose dbmopen defined delete die do dump each else elsif endgrent + endhostent endnetent endprotoent endpwent endservent eof eq eval + exec exists exit exp fcntl fileno flock for foreach fork format + formline ge getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname + gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername + getpgrp getppid getpriority getprotobyname getprotobynumber getprotoent + getpwent getpwnam getpwuid getservbyname getservbyport getservent + getsockname getsockopt glob gmtime goto grep gt hex if index + int ioctl join keys kill last lc lcfirst le length link listen + local localtime lock log lstat lt map mkdir msgctl msgget msgrcv + msgsnd my ne next no not oct open opendir or ord our pack package + pipe pop pos print printf prototype push quotemeta qu + rand read readdir readline readlink readpipe recv redo + ref rename require reset return reverse rewinddir rindex rmdir + scalar seek seekdir select semctl semget semop send setgrent + sethostent setnetent setpgrp setpriority setprotoent setpwent + setservent setsockopt shift shmctl shmget shmread shmwrite shutdown + sin sleep socket socketpair sort splice split sprintf sqrt srand + stat study sub substr symlink syscall sysopen sysread sysseek + system syswrite tell telldir tie tied time times truncate + uc ucfirst umask undef unless unlink unpack unshift untie until + use utime values vec wait waitpid wantarray warn while write + xor + given when default break say state UNITCHECK __SUB__ fc +comments: + line: "#" +styles: + 0: 32 + 1: 148 + 4: 104 + 5: 105 + 6: 106 + 7: 126 + 10: 32 + 17: 114 + 2: 101 + 8: 32 + 12: 152 + 13: 152 + 14: 103 + 15: 113 + 3: 32 + 19: 32 + 9: 109 + 20: 32 + 21: 113 + 18: 103 diff --git a/data/languages/php.yaml b/data/languages/php.yaml new file mode 100644 index 00000000..f6e84710 --- /dev/null +++ b/data/languages/php.yaml @@ -0,0 +1,28 @@ +# PHP +lexer: phpscript +keywords: + 4: > + __CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ + __NAMESPACE__ __TRAIT__ __halt_compiler + abstract and array as break callable case catch class + clone const continue declare default die do echo else elseif empty + enddeclare endfor endforeach endif endswitch endwhile eval exit extends + final for foreach function global goto if implements include + include_once instanceof insteadof interface isset list namespace new or + parent print private protected public require require_once return self + static switch throw trait try unset use var while xor +comments: + line: "//" + block: [ "/*", "*/" ] +styles: + 18: 117 + 118: 32 + 119: 106 + 126: 32 + 120: 106 + 121: 105 + 122: 104 + 123: 152 + 124: 101 + 125: 101 + 127: 32 diff --git a/data/languages/python.yaml b/data/languages/python.yaml new file mode 100644 index 00000000..74e71a34 --- /dev/null +++ b/data/languages/python.yaml @@ -0,0 +1,25 @@ +# Python +lexer: python +properties: + fold: 1 +keywords: + 0: and as assert break class continue def del elif else except exec False finally for from global if import in is lambda None not or pass print raise return triple True try while with yield +comments: + line: "#" +styles: + 0: 32 + 1: 101 + 2: 104 + 3: 106 + 4: 106 + 5: 105 + 6: 126 + 7: 32 + 8: 32 + 9: 129 + 10: 32 + 11: 32 + 12: 101 + 13: 106 + 14: 32 + 15: 135 diff --git a/data/languages/rdef.yaml b/data/languages/rdef.yaml new file mode 100644 index 00000000..25635b1d --- /dev/null +++ b/data/languages/rdef.yaml @@ -0,0 +1,39 @@ +# RDef +lexer: cpp +properties: + fold: 1 +keywords: + 0: resource + 1: vector_icon message array +identifiers: + 11: + - > + app_signature app_name_catalog_entry app_flags app_version + file_types major middle minor variety internal short_info long_info + - > + B_SINGLE_LAUNCH B_EXCLUSIVE_LAUNCH B_MULTIPLE_LAUNCH + B_APPV_DEVELOPMENT B_APPV_ALPHA B_APPV_BETA B_APPV_GAMMA + B_APPV_GOLDEN_MASTER B_APPV_FINAL +comments: + line: // + block: [ "/*", "*/" ] +styles: + 11: 32 + 10: 110 + 6: 106 + 7: 106 + 4: 104 + 5: 105 + 16: 105 + 1: 101 + 2: 101 + 3: 103 + 15: 103 + 17: 117 + 18: 117 + 19: 119 + 13: 113 + 14: 114 + 9: 109 +substyles: + 11: [ 119, 120 ] diff --git a/data/languages/recipe.yaml b/data/languages/recipe.yaml new file mode 100644 index 00000000..da108815 --- /dev/null +++ b/data/languages/recipe.yaml @@ -0,0 +1,91 @@ +lexer: bash +properties: + fold: 1 + fold.comment: 1 +keywords: + 0: > + alias ar asa awk banner basename bash bc bdiff break bunzip2 bzip2 cal + calendar case cat cc cd chmod cksum clear cmp col comm compress continue + cp cpio crypt csplit ctags cut date dc dd declare deroff dev df diff + diff3 dircmp dirname do done du echo ed egrep elif else env esac eval + ex exec exit expand export expr false fc fgrep fi file find fmt fold + for function functions getarch getconf getopt getopts grep gres hash + head help history iconv id if in integer jobs join kill local lc let + line ln logname look ls m4 mail mailx make man mkdir more mt mv newgrp + nl nm nohup ntps od pack paste patch pathchk pax pcat perl pg pr print + printf ps pwd read readonly red return rev rm rmdir sed select set + setarch sh shift size sleep sort spell split start stop strings strip + stty sum suspend sync tail tar tee test then time times touch tr trap + true tsort tty type typeset ulimit umask unalias uname uncompress + unexpand uniq unpack unset until uudecode uuencode vi vim vpax wait wc + whence which while who wpaste wstart xargs zcat +identifiers: + 8: + - > + BUILD PATCH INSTALL TEST + ADDITIONAL_FILES ARCHITECTURES BUILD_PACKAGE_ACTIVATION_PHASE + BUILD_PACKAGE_ACTIVATION_FILE BUILD_PREREQUIRES BUILD_REQUIRES + CHECKSUM_SHA256 CHECKSUM_SHA256_2 + CHECKSUM_SHA256_3 CHECKSUM_SHA256_4 CHECKSUM_SHA256_5 + CHECKSUM_SHA256_6 CHECKSUM_SHA256_7 CHECKSUM_SHA256_8 + CHECKSUM_SHA256_9 CONFLICTS COPYRIGHT DESCRIPTION + DISABLE_SOURCE_PACKAGE FRESHENS GLOBAL_WRITABLE_FILES HOMEPAGE + LICENSE MESSAGE PACKAGE_GROUPS PACKAGE_USERS PATCHES + POST_INSTALL_SCRIPTS PROVIDES PROVIDES_devel REPLACES REQUIRES + REQUIRES_devel REVISION SECONDARY_ARCHITECTURES + SOURCE_DIR SOURCE_DIR_2 SOURCE_DIR_3 + SOURCE_DIR_4 SOURCE_DIR_5 SOURCE_DIR_6 SOURCE_DIR_7 SOURCE_DIR_8 + SOURCE_DIR_9 SOURCE_FILENAME SOURCE_URI SOURCE_URI_2 SOURCE_URI_3 + SOURCE_URI_4 SOURCE_URI_5 SOURCE_URI_6 SOURCE_URI_7 SOURCE_URI_8 + SOURCE_URI_9 SUMMARY SUPPLEMENTS TEST_REQUIRES USER_SETTINGS_FILES + - > + addAppDeskbarSymlink addPreferencesDeskbarSymlink + addResourcesToBinaries checkedUnmount defineDebugInfoPackage + extractDebugInfo fixDevelopLibDirReferences + fixPkgconfig getPackagePrefix getTargetArchitectureCommand + packageDebugInfos packageEntries prepareInstalledDevelLib + prepareInstalledDevelLibs runConfigure symlinkRelative + updateRevisionVariables + 9: + - > + addOnsDir appsDir binDir buildArchitecture buildMachineTriple + buildMachineTripleAsName configureDirArgs configureDirVariables + crossSysrootDir dataDir dataRootDir debugInfoDir developDir + developDocDir developLibDir docDir documentationDir fontsDir + includeDir infoDir installDestDir isCrossRepository jobArgs + jobs libDir libExecDir localStateDir manDir oldIncludeDir + portBaseDir portDir portFullVersion portName + portPackageLinksDir portRevision portRevisionedName portVersion + portVersionedName postInstallDir preferencesDir prefix + relativDebugInfoDir relativeAddOnsDir relativeAppsDir + relativeBinDir relativeDataDir relativeDataRootDir + relativeDevelopDir relativeDevelopDocDir relativeDevelopLibDir + relativeDocDir relativeDocumentationDir relativeFontsDir + relativeIncludeDir relativeInfoDir relativeLibDir + relativeLibExecDir relativeLocalStateDir relativeManDir + relativeOldIncludeDir relativePostInstallDir + relativePreferencesDir relativeSbinDir relativeSettingsDir + relativeSharedStateDir sbinDir secondaryArchSuffix settingsDir + sharedStateDir sourceDir sourceDir2 sourceDir3 sourceDir4 + sourceDir5 sourceDir6 sourceDir7 sourceDir8 sourceDir9 + targetArchitecture targetMachineTriple targetMachineTripleAsName +comments: + line: "#" +styles: + 0: 32 + 1: 148 + 3: 104 + 4: 105 + 5: 106 + 6: 106 + 7: 110 + 8: 32 + 9: 152 + 2: 101 + 10: 152 + 11: 151 + 12: 113 + 13: 113 +substyles: + 8: [ 180, 181 ] + 9: [ 182 ] diff --git a/data/languages/ruby.yaml b/data/languages/ruby.yaml new file mode 100644 index 00000000..820c20f2 --- /dev/null +++ b/data/languages/ruby.yaml @@ -0,0 +1,34 @@ +# Ruby +# adapted from SciTE +lexer: ruby +keywords: + 0: > + __FILE__ and def end in or self unless __LINE__ begin \ + defined? ensure module redo super until BEGIN break do false next rescue + then when END case else for nil retry true while alias class elsif if + not return undef yield +comments: + line: "#" +styles: + 0: 32 + 1: 148 + 2: 101 + 3: 32 + 4: 104 + 5: 105 + 6: 106 + 7: 106 + 8: 32 + 9: 129 + 10: 32 + 11: 32 + 12: 114 + 13: 152 + 14: 32 + 15: 109 + 16: 32 + 17: 32 + 18: 151 + 19: 113 + 24: 106 + 29: 105 diff --git a/data/languages/rust.yaml b/data/languages/rust.yaml new file mode 100644 index 00000000..cc3d55c1 --- /dev/null +++ b/data/languages/rust.yaml @@ -0,0 +1,34 @@ +# Rust +# adapted from SciTE +lexer: rust +keywords: + 0: alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self sizeof static struct super trait true type typeof unsafe unsized use virtual while yield + 1: bool char f32 f64 i16 i32 i64 i8 int str u16 u32 u64 u8 uint + 2: Self +comments: + line: "//" + block: [ "/*", "*/" ] +styles: + 0: 32 + 19: 109 + 20: 148 + 6: 105 + 7: 105 + 8: 105 + 9: 105 + 10: 105 + 11: 105 + 12: 105 + 5: 104 + 13: 106 + 14: 106 + 21: 106 + 22: 106 + 15: 106 + 23: 105 + 16: 32 + 18: 126 + 1: 101 + 2: 101 + 3: 103 + 4: 103 diff --git a/data/languages/text.yaml b/data/languages/text.yaml new file mode 100644 index 00000000..71d37ed0 --- /dev/null +++ b/data/languages/text.yaml @@ -0,0 +1,2 @@ +# Text file +lexer: null diff --git a/data/languages/xml.yaml b/data/languages/xml.yaml new file mode 100644 index 00000000..8cc28346 --- /dev/null +++ b/data/languages/xml.yaml @@ -0,0 +1,23 @@ +# XML +lexer: xml +properties: + fold: 1 + fold.html: 1 + html.tags.case.sensitive: 1 +comments: + block: [ "" ] +styles: + 0: 32 + 12: 155 + 13: 155 + 9: 101 + 5: 104 + 6: 106 + 7: 106 + 1: 155 + 11: 155 + 2: 32 + 3: 156 + 4: 32 + 21: 161 + 17: 32 diff --git a/data/languages/yab.yaml b/data/languages/yab.yaml new file mode 100644 index 00000000..c1914343 --- /dev/null +++ b/data/languages/yab.yaml @@ -0,0 +1,36 @@ +# YAB +lexer: yab +properties: + fold: 1 +keywords: + 0: > + and alert arraydim arraysize boxview break button case calendar + checkbox chr$ circle clear clipboard close collapse color colorcontrol + column columnbox compile continue copy count curve dim data date$ + default draw dropbox dropzone ellipse else elseif elsif end endif + endsub eof eor error euler execute exit expand export false filepanel + flush for frac getscreen$ glob gosub goto hashmarks hide if image + import inkey$ input instr interrupt ismousein keyboard label layout + left$ len let line listbox load$ local localize log loop lower$ ltrim$ + max menu message$ mid$ min mod mouse msg$ new next not on open option or + paste$ pause peek peek$ pi poke popupmenu print printer putscreen + radiobutton ran read reading rect rect redim remove repeat resize + restore return reverse right$ rinstr rtrim$ save$ screen scrollbar seek + select set setup show sig sin sleep slider sort soundplay spincontrol + split split$ splitview sqr sqrt stackview static step str$ sub submenu + subroutine svg switch system system$ tabview tan tell text textcontrol + textedit texturl then time$ token token$ tooltip translate$ treebox + trim$ true until upper$ using val view wait wend while window writing + xor +comments: + line: "#" +styles: + 0: 32 + 7: 32 + 1: 101 + 2: 104 + 3: 105 + 4: 106 + 5: 109 + 6: 110 + 8: 103 diff --git a/data/languages/yaml.yaml b/data/languages/yaml.yaml new file mode 100644 index 00000000..aa6cf452 --- /dev/null +++ b/data/languages/yaml.yaml @@ -0,0 +1,14 @@ +# YAML +lexer: yaml +comments: + line: "#" +styles: + 0: 32 + 1: 101 + 2: 32 + 3: 105 + 4: 104 + 5: 145 + 6: 32 + 7: 106 + 8: 148 diff --git a/data/styles/dark.yaml b/data/styles/dark.yaml new file mode 100644 index 00000000..0a478d07 --- /dev/null +++ b/data/styles/dark.yaml @@ -0,0 +1,163 @@ +# Copyright (c) 2018 Mikael Konradsson +# MIT licensed + +Global: + Default: + id: 32 + foreground: "#FFFCFF" + background: "#282629" + Current line: + background: "#141414" + Whitespace: + foreground: "#66BFFF" + Selected text: + background: "#474247" + Caret: + foreground: "#FF4050" + Edge: + foreground: "#656066" + Fold: + foreground: "#282629" + background: "#474247" + Fold marker: + foreground: "#e4e4e4" + background: "#808080" + Indent guideline: + id: 37 + foreground: "#474247" + background: "#474247" + Brace highlight: + id: 34 + foreground: "#26C99E" + background: "#282629" + style: [ bold ] + Bad brace: + id: 35 + foreground: "#FF4050" + background: "#282629" + style: [ bold ] + Line number: + id: 33 + foreground: "#656066" + background: "#212022" + Smart highlight: + background: "#FF4050" + Find mark: + background: "#0000ff" + Incremental highlight: + background: "#00ffff" + Tags match highlight: + background: "#CC78FA" + Tags attributes: + background: "#F553BF" + Bookmark marker: + foreground: "#7694B2" + background: "#7f9fbf" +# C++ +Preprocessor: + id: 109 + foreground: "#66BFFF" + style: [ bold ] +Keyword: + id: 105 + foreground: "#66BFFF" + style: [ bold ] +Number: + id: 104 + foreground: "#FFD24A" +String: + id: 106 + foreground: "#A4CC35" +Operator: + id: 110 + foreground: "#F553BF" +Verbatim: + id: 113 + foreground: "#F28144" +Regexp: + id: 114 + foreground: "#F28144" +Global class: + id: 119 + foreground: "#53A6E1" +Constant: + id: 120 + foreground: "#F97C31" +Namespace: + id: 121 + foreground: "#FF74F4" +Comment: + id: 101 + foreground: "#C1BCC2" +Comment doc: + id: 103 + foreground: "#66BFFF" +Comment doc keyword: + id: 117 + foreground: "#A45EEC" + style: [ bold ] +# Python/Ruby +Triple: + id: 126 + foreground: "#646464" +Defname: + id: 129 + foreground: "#66BFFF" + style: [ bold ] +Decorator: + id: 135 + foreground: "#F28144" + style: [ italic ] +# YAML +Reference: + id: 145 + foreground: "#F28144" +Error: + id: 148 + foreground: "#F03E4D" +# AWK/Bash/Diff/Makefile +Backticks: + id: 151 + foreground: "#CC78FA" + style: [ bold ] +Scalar/Array/Diff header: + id: 152 + foreground: "#F28144" + style: [ italic ] +Recipe env variables: + id: 180 + foreground: "#53A6E1" +Recipe shell functions: + id: 181 + foreground: "#E05900" + style: [ bold ] +Recipe Scalar: + id: 182 + foreground: "#408080" + style: [ italic ] +Deleted: + id: 165 + foreground: "#F03E4D" +Added: + id: 166 + foreground: "#1FC598" +# CMake +String L: + id: 153 + foreground: "#A4CC35" + style: [ italic ] +String R: + id: 154 + foreground: "#A4CC35" + style: [ underline ] +# HTML/XML/CSS +Tag Start/End: + id: 155 + foreground: "#F28144" +Attribute: + id: 156 + foreground: "#26C99E" +SGML default: + id: 161 + foreground: "#282629" + background: "#1FC598" diff --git a/data/styles/default.yaml b/data/styles/default.yaml new file mode 100644 index 00000000..fb98618e --- /dev/null +++ b/data/styles/default.yaml @@ -0,0 +1,170 @@ +# based on Eclipse theme for Notepad++ +# Copyright (c) 2009 Fesenko Alexander +# MIT licensed +Global: + Default: + id: 32 + foreground: "#000000" + background: "#ffffff" + Current line: + background: "#e8f2fe" + Whitespace: + foreground: "#7f9fbf" + Selected text: + background: "#d4d4d4" + Caret: + foreground: "#000000" + Edge: + foreground: "#7f9fbf" + Fold: + foreground: "#e4e4e4" + background: "#e4e4e4" + Fold marker: + foreground: "#e4e4e4" + background: "#808080" + Indent guideline: + id: 37 + foreground: "#c0c0c0" + background: "#ffffff" + Brace highlight: + id: 34 + foreground: "#0000ff" + background: "#ffffff" + style: [ bold ] + Bad brace: + id: 35 + foreground: "#ff0000" + background: "#ffffff" + style: [ bold ] + Line number: + id: 33 + foreground: "#808080" + background: "#e4e4e4" + Smart highlight: + background: "#a3a3a3" + Find mark: + background: "#0000ff" + Incremental highlight: + background: "#00ffff" + Tags match highlight: + background: "#00ffff" + Tags attributes: + background: "#ffffff" + Bookmark marker: + foreground: "#7f9fbf" + background: "#e8f2fe" +# C++ +Preprocessor: + id: 109 + foreground: "#7f7f9f" + style: [ bold ] +Keyword: + id: 105 + foreground: "#7f0055" + style: [ bold ] +Number: + id: 104 + foreground: "#af0f91" +String: + id: 106 + foreground: "#2a00ff" +Operator: + id: 110 + foreground: "#3f5fbf" +Verbatim: + id: 113 + foreground: "#646464" +Regexp: + id: 114 + foreground: "#646464" +Global class: + id: 119 + foreground: "#006600" +Constant: + id: 120 + foreground: "#552200" +Namespace: + id: 121 + foreground: "#408080" +Comment: + id: 101 + foreground: "#557f5f" +Comment doc: + id: 103 + foreground: "#3f55bf" +Comment doc keyword: + id: 117 + foreground: "#7f9fbf" + style: [ bold ] +# Python/Ruby +Triple: + id: 126 + foreground: "#646464" +Defname: + id: 129 + foreground: "#3f5fbf" + style: [ bold ] +Decorator: + id: 135 + foreground: "#3f5fbf" + style: [ italic ] +# YAML +Reference: + id: 145 + foreground: "#3f3fbf" +Error: + id: 148 + foreground: "#ff4136" +# AWK/Bash/Diff/Makefile +Backticks: + id: 151 + foreground: "#646464" + style: [ bold ] +Scalar/Array/Diff header: + id: 152 + foreground: "#0000c0" + style: [ italic ] +Recipe env variables: + id: 180 + foreground: "#006600" +Recipe shell functions: + id: 181 + foreground: "#552200" + style: [ bold ] +Recipe Scalar: + id: 182 + foreground: "#408080" + style: [ italic ] +Deleted: + id: 165 + foreground: "#ff4136" +Added: + id: 166 + foreground: "#2ecc40" +# CMake +String L: + id: 153 + foreground: "#2a00ff" + style: [ italic ] +String R: + id: 154 + foreground: "#2a00ff" + style: [ underline ] +# HTML/XML/CSS +Tag Start/End: + id: 155 + foreground: "#3f7f7f" +Attribute: + id: 156 + foreground: "#7f007f" +SGML default: + id: 161 + foreground: "#000000" + background: "#a6caf0" +# Markdown +Strong: + id: 200 + style: [ bold ] +Emphasis: + id: 201 + style: [ italic ] \ No newline at end of file diff --git a/data/styles/dimmed.yaml b/data/styles/dimmed.yaml new file mode 100644 index 00000000..6e30f591 --- /dev/null +++ b/data/styles/dimmed.yaml @@ -0,0 +1,171 @@ +# based on Eclipse theme for Notepad++ +# a dimmed version of Koder's default style +# Copyright (c) 2009 Fesenko Alexander +# MIT licensed +Global: + Default: + id: 32 + foreground: "#000000" + background: "#EEEEEE" + Current line: + background: "#FFFFFF" + Whitespace: + foreground: "#7f9fbf" + Selected text: + background: "#5EBCFF" + Caret: + foreground: "#000000" + Edge: + foreground: "#7f9fbf" + Fold: + foreground: "#e4e4e4" + background: "#D8D8D8" + Fold marker: + foreground: "#FFFFFF" + background: "#808080" + Indent guideline: + id: 37 + foreground: "#c0c0c0" + background: "#ffffff" + Brace highlight: + id: 34 + foreground: "#0000ff" + background: "#D8D8D8" + style: [ bold ] + Bad brace: + id: 35 + foreground: "#FFFFFF" + background: "#FF0000" + style: [ bold ] + Line number: + id: 33 + foreground: "#808080" + background: "#D8D8D8" + Smart highlight: + background: "#a3a3a3" + Find mark: + background: "#0000ff" + Incremental highlight: + background: "#00ffff" + Tags match highlight: + background: "#00ffff" + Tags attributes: + background: "#ffffff" + Bookmark marker: + foreground: "#CCDB52" + background: "#EF2E2E" +# C++ +Preprocessor: + id: 109 + foreground: "#7f7f9f" + style: [ bold ] +Keyword: + id: 105 + foreground: "#EB009D" + style: [ bold ] +Number: + id: 104 + foreground: "#D012AC" +String: + id: 106 + foreground: "#2a00ff" +Operator: + id: 110 + foreground: "#FF1414" +Verbatim: + id: 113 + foreground: "#646464" +Regexp: + id: 114 + foreground: "#646464" +Global class: + id: 119 + foreground: "#00A700" +Constant: + id: 120 + foreground: "#DA5700" +Namespace: + id: 121 + foreground: "#408080" +Comment: + id: 101 + foreground: "#557f5f" +Comment doc: + id: 103 + foreground: "#3f55bf" +Comment doc keyword: + id: 117 + foreground: "#7f9fbf" + style: [ bold ] +# Python/Ruby +Triple: + id: 126 + foreground: "#646464" +Defname: + id: 129 + foreground: "#3f5fbf" + style: [ bold ] +Decorator: + id: 135 + foreground: "#3f5fbf" + style: [ italic ] +# YAML +Reference: + id: 145 + foreground: "#3f3fbf" +Error: + id: 148 + foreground: "#ff4136" +# AWK/Bash/Diff/Makefile +Backticks: + id: 151 + foreground: "#646464" + style: [ bold ] +Scalar/Array/Diff header: + id: 152 + foreground: "#0000c0" + style: [ italic ] +Recipe env variables: + id: 180 + foreground: "#006600" +Recipe shell functions: + id: 181 + foreground: "#552200" + style: [ bold ] +Recipe Scalar: + id: 182 + foreground: "#408080" + style: [ italic ] +Deleted: + id: 165 + foreground: "#ff4136" +Added: + id: 166 + foreground: "#2ecc40" +# CMake +String L: + id: 153 + foreground: "#2a00ff" + style: [ italic ] +String R: + id: 154 + foreground: "#2a00ff" + style: [ underline ] +# HTML/XML/CSS +Tag Start/End: + id: 155 + foreground: "#3f7f7f" +Attribute: + id: 156 + foreground: "#7f007f" +SGML default: + id: 161 + foreground: "#000000" + background: "#a6caf0" +# Markdown +Strong: + id: 200 + style: [ bold ] +Emphasis: + id: 201 + style: [ italic ] diff --git a/data/styles/mono.yaml b/data/styles/mono.yaml new file mode 100644 index 00000000..8efa9637 --- /dev/null +++ b/data/styles/mono.yaml @@ -0,0 +1,139 @@ +# Copyright (c) 2018 Mikael Konradsson +# MIT licensed +Global: + Default: + id: 32 + foreground: "#474247" + background: "#E0DCE0" + Current line: + background: "#C1BCC2" + Whitespace: + foreground: "#66BFFF" + Selected text: + background: "#FFD24A" + Caret: + foreground: "#FF4050" + Edge: + foreground: "#C1BCC2" + Fold: + foreground: "#C1BCC2" + background: "#C1BCC2" + Indent guideline: + id: 37 + foreground: "#C1BCC2" + background: "#C1BCC2" + Brace highlight: + id: 34 + foreground: "#26C99E" + background: "#E0DCE0" + style: [ bold ] + Bad brace: + id: 35 + foreground: "#FF4050" + background: "#E0DCE0" + style: [ bold ] + Line number: + id: 33 + foreground: "#656066" + background: "#E0DCE0" + Smart highlight: + background: "#66BFFF" + Find mark: + background: "#0000ff" + Incremental highlight: + background: "#00ffff" + Tags match highlight: + background: "#CC78FA" + Tags attributes: + background: "#F553BF" +# C++ +Preprocessor: + id: 109 + foreground: "#656066" + style: [ bold ] +Keyword: + id: 105 + foreground: "#282629" + style: [ bold ] +Number: + id: 104 + foreground: "#474247" +String: + id: 106 + foreground: "#474247" +Operator: + id: 110 + foreground: "#474247" + style: [ bold ] +Verbatim: + id: 113 + foreground: "#F28144" +Regexp: + id: 114 + foreground: "#F28144" +Global class: + id: 119 + foreground: "#474247" +Comment: + id: 101 + foreground: "#A29DA3" +Comment doc: + id: 103 + foreground: "#A29DA3" +Comment doc keyword: + id: 117 + foreground: "#A29DA3" + style: [ bold ] +# Python/Ruby +Triple: + id: 126 + foreground: "#646464" +Defname: + id: 129 + foreground: "#66BFFF" + style: [ bold ] +Decorator: + id: 135 + foreground: "#F28144" + style: [ italic ] +# YAML +Reference: + id: 145 + foreground: "#F28144" +Error: + id: 148 + foreground: "#F03E4D" +# AWK/Bash/Diff/Makefile +Backticks: + id: 151 + foreground: "#CC78FA" + style: [ bold ] +Scalar/Array/Diff header: + id: 152 + foreground: "#F28144" + style: [ italic ] +Deleted: + id: 165 + foreground: "#F03E4D" +Added: + id: 166 + foreground: "#1FC598" +# CMake +String L: + id: 153 + foreground: "#A4CC35" + style: [ italic ] +String R: + id: 154 + foreground: "#A4CC35" + style: [ underline ] +# HTML/XML/CSS +Tag Start/End: + id: 155 + foreground: "#F28144" +Attribute: + id: 156 + foreground: "#26C99E" +SGML default: + id: 161 + foreground: "#282629" diff --git a/data/styles/purpleriot.yaml b/data/styles/purpleriot.yaml new file mode 100644 index 00000000..aa900d6f --- /dev/null +++ b/data/styles/purpleriot.yaml @@ -0,0 +1,141 @@ +# based on Themer default color scheme +# Copyright (c) 2018 Mikael Konradsson +# with tweaks for languages other than C++ by Kacper Kasper +# MIT licensed +Global: + Default: + id: 32 + foreground: "#E0DCE0" + background: "#24003E" + Current line: + background: "#322543" + Whitespace: + foreground: "#66BFFF" + Selected text: + background: "#05000C" + Caret: + foreground: "#FF4050" + Edge: + foreground: "#322543" + Fold: + foreground: "#24003E" + background: "#322543" + Indent guideline: + id: 37 + foreground: "#5F2B48" + background: "#24003E" + Brace highlight: + id: 34 + foreground: "#26C99E" + background: "#24003E" + style: [ bold ] + Bad brace: + id: 35 + foreground: "#FF4050" + background: "#24003E" + style: [ bold ] + Line number: + id: 33 + foreground: "#C498EB" + background: "#24003E" + Smart highlight: + background: "#66BFFF" + Find mark: + background: "#F553BF" + Incremental highlight: + background: "#00ffff" + Tags match highlight: + background: "#CC78FA" + Tags attributes: + background: "#F553BF" +# C++ +Preprocessor: + id: 109 + foreground: "#5F2B48" + style: [ bold ] +Keyword: + id: 105 + foreground: "#FFA40B" + style: [ bold ] +Number: + id: 104 + foreground: "#FD0B10" +String: + id: 106 + foreground: "#C498EB" +Operator: + id: 110 + foreground: "#FD3174" + style: [ bold ] +Verbatim: + id: 113 + foreground: "#5F2B48" +Regexp: + id: 114 + foreground: "#F28144" +Global class: + id: 119 + foreground: "#FFA40B" +Comment: + id: 101 + foreground: "#A29DA3" +Comment doc: + id: 103 + foreground: "#A29DA3" +Comment doc keyword: + id: 117 + foreground: "#A29DA3" + style: [ bold ] +# Python/Ruby +Triple: + id: 126 + foreground: "#646464" +Defname: + id: 129 + foreground: "#66BFFF" + style: [ bold ] +Decorator: + id: 135 + foreground: "#F28144" + style: [ italic ] +# YAML +Reference: + id: 145 + foreground: "#F28144" +Error: + id: 148 + foreground: "#F03E4D" +# AWK/Bash/Diff/Makefile +Backticks: + id: 151 + foreground: "#CC78FA" + style: [ bold ] +Scalar/Array/Diff header: + id: 152 + foreground: "#F28144" + style: [ italic ] +Deleted: + id: 165 + foreground: "#F03E4D" +Added: + id: 166 + foreground: "#1FC598" +# CMake +String L: + id: 153 + foreground: "#A4CC35" + style: [ italic ] +String R: + id: 154 + foreground: "#A4CC35" + style: [ underline ] +# HTML/XML/CSS +Tag Start/End: + id: 155 + foreground: "#F28144" +Attribute: + id: 156 + foreground: "#26C99E" +SGML default: + id: 161 + foreground: "#282629" diff --git a/src/GenioApp.cpp b/src/GenioApp.cpp index b0bb04bc..0f32f61e 100644 --- a/src/GenioApp.cpp +++ b/src/GenioApp.cpp @@ -192,6 +192,10 @@ GenioApp::RefsReceived(BMessage* message) fGenioWindow->PostMessage(message); } +//temp xed //FIXME + +#include "Languages.h" + void GenioApp::ReadyToRun() { @@ -203,6 +207,8 @@ GenioApp::ReadyToRun() LogInfo("Cannot load global settings file"); } + Languages::_LoadLanguages("/boot/data/genio/Genio/data"); + // let's subscribe config changes updates StartWatching(this, MSG_NOTIFY_CONFIGURATION_UPDATED); diff --git a/src/helpers/GenioCommon.cpp b/src/helpers/GenioCommon.cpp index fd2f1ee5..b4f7ffa0 100644 --- a/src/helpers/GenioCommon.cpp +++ b/src/helpers/GenioCommon.cpp @@ -14,6 +14,18 @@ namespace Genio { +std::string +GetFileExtension(const char* fileName) +{ + std::string filename(fileName); + auto pos = filename.find_last_of('.'); + if (pos != std::string::npos) { + return filename.substr(pos + 1); + } + return ""; +} + +//TODO deprecate! std::string const file_type(const std::string& fullpath) { diff --git a/src/helpers/GenioCommon.h b/src/helpers/GenioCommon.h index 852b5dbe..ed0da91a 100644 --- a/src/helpers/GenioCommon.h +++ b/src/helpers/GenioCommon.h @@ -12,6 +12,7 @@ namespace Genio { std::string const file_type(const std::string& filename); + std::string GetFileExtension(const char* fileName); } diff --git a/src/helpers/Languages.cpp b/src/helpers/Languages.cpp new file mode 100644 index 00000000..8df9eab0 --- /dev/null +++ b/src/helpers/Languages.cpp @@ -0,0 +1,323 @@ +/* + * Copyright 2015-2018 Kacper Kasper + * All rights reserved. Distributed under the terms of the MIT license. + */ + +#include "Languages.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "Editor.h" + +//temp //xed //FIXME +#define gAppName "" + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "Languages" + + +std::vector Languages::sLanguages; +std::map Languages::sMenuItems; +std::map Languages::sExtensions; + + +namespace { + +/** + * Executes a specified function for each data directory, going from system to + * user, packaged to non-packaged. The path is available as a parameter to the + * user supplied function. + */ +void +DoInAllDataDirectories(std::function func) { + BPath dataPath; + find_directory(B_SYSTEM_DATA_DIRECTORY, &dataPath); + func(dataPath); + find_directory(B_USER_DATA_DIRECTORY, &dataPath); + func(dataPath); + find_directory(B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, &dataPath); + func(dataPath); + find_directory(B_USER_NONPACKAGED_DATA_DIRECTORY, &dataPath); + func(dataPath); +} + +void +DoInAllLibDirectories(std::function func) { + BPath libPath; + find_directory(B_SYSTEM_LIB_DIRECTORY, &libPath); + func(libPath); + find_directory(B_USER_LIB_DIRECTORY, &libPath); + func(libPath); + find_directory(B_SYSTEM_NONPACKAGED_LIB_DIRECTORY, &libPath); + func(libPath); + find_directory(B_USER_NONPACKAGED_LIB_DIRECTORY, &libPath); + func(libPath); +} + +class LexerLibrary { +public: + LexerLibrary(const char* path) { + fLibrary = load_add_on(path); + if(fLibrary > 0) { + if(get_image_symbol(fLibrary, LEXILLA_CREATELEXER, B_SYMBOL_TYPE_TEXT, + reinterpret_cast(&fCreateLexer)) != B_OK) { + fCreateLexer = nullptr; + } + } + } + + ~LexerLibrary() { + if(fLibrary > 0) { + unload_add_on(fLibrary); + } + fLibrary = 0; + } + + bool IsValid() { + return fLibrary > 0 && fCreateLexer != nullptr; + } + + Scintilla::ILexer5* CreateLexer(const char* name) { + return fCreateLexer(name); + } + +private: + image_id fLibrary; + Lexilla::CreateLexerFn fCreateLexer; +}; + +std::vector> sLexerLibraries; + +} + + +/* static */ bool +Languages::GetLanguageForExtension(const std::string ext, std::string& lang) +{ + lang = "text"; + if(sExtensions.count(ext) > 0) { + lang = sExtensions[ext]; + return true; + } + return false; +} + + +/* static */ void +Languages::SortAlphabetically() +{ + std::sort(sLanguages.begin(), sLanguages.end()); +} + + +/** + * Reads YAML files from all data directories and creates a single style map, + * where repeated keys are overridden (user non-packaged being final). + */ +/* static */ std::map +Languages::ApplyLanguage(Editor* editor, const char* lang) +{ + editor->SendMessage(SCI_FREESUBSTYLES); + std::map styleMapping; + DoInAllDataDirectories([&](const BPath& path) { + try { + auto m = _ApplyLanguage(editor, lang, path); + m.merge(styleMapping); + std::swap(styleMapping, m); + } catch (YAML::BadFile &) {} + }); + return styleMapping; +} + +/** + * Loads YAML file with language specification: + * lexer: string (required) + * properties: (string|string) map -> SCI_SETPROPERTY + * keywords: (index(int)|string) map -> SCI_SETKEYWORDS + * identifiers: (lexem class id(int)|(string array)) map -> SCI_SETIDENTIFIERS + * comments: + * line: string + * block: pair of strings + * styles: (lexem class id(int)|Koder style id(int)) map + * substyles: (lexem class id(int)|(Koder style id(int)) array) map + * + * For substyles, strings in identifiers array are matched with styles in + * substyles array. Array instead of map is used because substyles are allocated + * contiguously. Theoretically there is no limit on how many substyles there + * can be. Substyling of lexem class id must be supported by the lexer. + * + * Substyle ids are created using starting id returned by SCI_ALLOCATESUBSTYLE. + * For example if it returns 128, then 1st id = 128, 2nd = 129, 3rd = 130. + * These are then passed to SCI_SETIDENTIFIERS and merged into regular styles + * map to be handled by the Styler class. + */ +/* static */ std::map +Languages::_ApplyLanguage(Editor* editor, const char* lang, const BPath &path) +{ + // if(sLexerLibraries.empty() == true) + // return {}; + + // TODO: early exit if lexer not changed + + BPath p(path); + p.Append(gAppName); + p.Append("languages"); + p.Append(lang); + const YAML::Node language = YAML::LoadFile(std::string(p.Path()) + ".yaml"); + std::string lexerName = language["lexer"].as(); + Scintilla::ILexer5* lexer; + // sLexerLibraries contains libraries in the following order: + // * system + // * user + // * non-packaged system + // * non-packaged user + // Going in reverse results in correct override hierarchy. + //for(auto it = sLexerLibraries.rbegin(); it != sLexerLibraries.rend(); ++it) { + lexer = CreateLexer(lexerName.c_str()); + if(lexer == nullptr) + return std::map(); + //} + editor->SendMessage(SCI_SETILEXER, 0, reinterpret_cast(lexer)); + + for(const auto& property : language["properties"]) { + auto name = property.first.as(); + auto value = property.second.as(); + editor->SendMessage(SCI_SETPROPERTY, (uptr_t) name.c_str(), (sptr_t) value.c_str()); + } + + for(const auto& keyword : language["keywords"]) { + auto num = keyword.first.as(); + auto words = keyword.second.as(); + editor->SendMessage(SCI_SETKEYWORDS, num, (sptr_t) words.c_str()); + } + + std::unordered_map substyleStartMap; + const auto& identifiers = language["identifiers"]; + if(identifiers && identifiers.IsMap()) { + for(const auto& id : identifiers) { + if(!id.second.IsSequence()) + continue; + + const int substyleId = id.first.as(); + // TODO: allocate only once + const int start = editor->SendMessage(SCI_ALLOCATESUBSTYLES, + substyleId, id.second.size()); + substyleStartMap.emplace(substyleId, start); + int i = 0; + for(const auto& idents : id.second) { + editor->SendMessage(SCI_SETIDENTIFIERS, start + i++, + reinterpret_cast(idents.as().c_str())); + } + } + } + + const YAML::Node comments = language["comments"]; +//xed FIXME +/* + if(comments) { + const YAML::Node line = comments["line"]; + if(line) + editor->SetCommentLineToken(line.as()); + const YAML::Node block = comments["block"]; + if(block && block.IsSequence()) + editor->SetCommentBlockTokens(block[0].as(), + block[1].as()); + }*/ + + std::map styleMap; + const YAML::Node styles = language["styles"]; + if(styles) { + styleMap = styles.as>(); + } + const YAML::Node substyles = language["substyles"]; + if(substyles && substyles.IsMap()) { + for(const auto& id : substyles) { + if(!id.second.IsSequence()) + continue; + + int i = 0; + for(const auto& styleId : id.second) { + const int substyleStart = substyleStartMap[id.first.as()]; + styleMap.emplace(substyleStart + i++, styleId.as()); + } + } + } + return styleMap; +} + + +/* static */ void +Languages::LoadLanguages() +{ + DoInAllDataDirectories([](const BPath& path) { + try { + _LoadLanguages(path); + } catch (YAML::BadFile &) {} + }); + + DoInAllLibDirectories([](const BPath& path) { + BPath p(path); + p.Append(LEXILLA_LIB LEXILLA_EXTENSION); + auto lexilla = std::make_unique(p.Path()); + if(lexilla->IsValid() == true) { + sLexerLibraries.push_back(std::move(lexilla)); + } + }); + + DoInAllLibDirectories([](const BPath& path) { + BPath p(path); + p.Append("lexilla"); + BDirectory lexersDir(p.Path()); + if (lexersDir.InitCheck() != B_OK) + return; + + BEntry lexerEntry; + while(lexersDir.GetNextEntry(&lexerEntry, true) == B_OK) { + if(lexerEntry.IsDirectory()) + continue; + BPath lexerPath; + lexerEntry.GetPath(&lexerPath); + auto lexer = std::make_unique(lexerPath.Path()); + if(lexer->IsValid() == true) { + sLexerLibraries.push_back(std::move(lexer)); + } + } + }); +} + + +/* static */ void +Languages::_LoadLanguages(const BPath& path) +{ + BPath p(path); + p.Append(gAppName); + p.Append("languages"); + const YAML::Node languages = YAML::LoadFile(std::string(p.Path()) + ".yaml"); + for(const auto& language : languages) { + auto name = language.first.as(); + auto menuitem = language.second["name"].as(); + auto extensions = language.second["extensions"].as>(); + for(auto extension : extensions) { + sExtensions[extension] = name; + printf("Extension %s for name %s\n", extension.c_str(), name.c_str()); + } + if(std::find(sLanguages.begin(), sLanguages.end(), name) == sLanguages.end()) + sLanguages.push_back(name); + sMenuItems[name] = menuitem; + } +} diff --git a/src/helpers/Languages.h b/src/helpers/Languages.h new file mode 100644 index 00000000..a7d4e3c4 --- /dev/null +++ b/src/helpers/Languages.h @@ -0,0 +1,38 @@ +/* + * Copyright 2015-2018 Kacper Kasper + * All rights reserved. Distributed under the terms of the MIT license. + */ + +#ifndef LANGUAGES_H +#define LANGUAGES_H + + +#include +#include +#include + + +class BPath; +class Editor; + + +class Languages { +public: + static size_t GetCount() { return sLanguages.size(); } + static std::string GetLanguage(int index) { return sLanguages[index]; } + static std::string GetMenuItemName(std::string lang) { return sMenuItems[lang]; } + static bool GetLanguageForExtension(const std::string ext, std::string& lang); + static void SortAlphabetically(); + static std::map ApplyLanguage(Editor* editor, const char* lang); + static void LoadLanguages(); + +//fixme private: + static void _LoadLanguages(const BPath& path); + static std::map _ApplyLanguage(Editor* editor, const char* lang, const BPath &path); + static std::vector sLanguages; + static std::map sMenuItems; + static std::map sExtensions; +}; + + +#endif // LANGUAGES_H diff --git a/src/helpers/Utils.cpp b/src/helpers/Utils.cpp index 9087140e..869da5d1 100644 --- a/src/helpers/Utils.cpp +++ b/src/helpers/Utils.cpp @@ -19,6 +19,8 @@ #include #include #include +#include + #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "Utilities" @@ -171,8 +173,8 @@ KeyDownMessageFilter::AllowedModifiers() filter_result KeyDownMessageFilter::Filter(BMessage* message, BHandler** target) { - - if(message->what == B_KEY_DOWN) { + + if(message->what == B_KEY_DOWN) { const char* bytes; uint32 modifiers; message->FindString("bytes", &bytes); @@ -199,7 +201,7 @@ find_value(BMessage* message, std::string name, int index) { } -void ProgressNotification(const char* group, const char* title, const char* messageID, +void ProgressNotification(const char* group, const char* title, const char* messageID, const char* content, float progress, bigtime_t timeout) { BNotification notification(B_PROGRESS_NOTIFICATION); @@ -211,7 +213,7 @@ void ProgressNotification(const char* group, const char* title, const char* mess notification.Send(timeout); } -void ErrorNotification(const char* group, const char* title, const char* messageID, +void ErrorNotification(const char* group, const char* title, const char* messageID, const char* content, bigtime_t timeout) { BNotification notification(B_ERROR_NOTIFICATION); @@ -227,23 +229,23 @@ void ErrorNotification(const char* group, const char* title, const char* message std::string sourceExt[] = {".cpp", ".c", ".cc", ".cxx", ".c++"}; //, ".m", ".mm"}; std::string headerExt[] = {".h", ".hh", ".hpp", ".hxx"}; //, ".inc"}; -bool +bool IsCppSourceExtension(std::string extension) { return FIND_IN_ARRAY(sourceExt, extension); } -bool +bool IsCppHeaderExtension(std::string extension) { return FIND_IN_ARRAY(headerExt, extension); } -status_t +status_t FindSourceOrHeader(const entry_ref* editorRef, entry_ref* foundRef) { //TODO this is not language specific! - + status_t status; BEntry entry; if ((status = entry.SetTo(editorRef)) != B_OK) @@ -282,10 +284,37 @@ FindSourceOrHeader(const entry_ref* editorRef, entry_ref* foundRef) return foundFile.Exists(); }); } - + if (!found) return B_ERROR; return foundFile.GetRef(foundRef); } +BPath +GetDataDirectory() +{ + // Default template directory + app_info info; + BPath dataPath; + if (be_app->GetAppInfo(&info) == B_OK) { + // This code should work both for the case where Genio is + // in the "app" subdirectory, like in the repo, + // and when it's in the package. + BPath genioPath(&info.ref); + BPath parentPath; + if (genioPath.GetParent(&parentPath) == B_OK) { + dataPath = parentPath; + dataPath.Append("data"); + // Genio + // data/templates/ + if (!BEntry(dataPath.Path()).IsDirectory()) { + // app/Genio + // data/templates/ + parentPath.GetParent(&dataPath); + dataPath.Append("data"); + } + } + } + return dataPath; +} \ No newline at end of file diff --git a/src/helpers/Utils.h b/src/helpers/Utils.h index 3bc20ef2..e366118f 100644 --- a/src/helpers/Utils.h +++ b/src/helpers/Utils.h @@ -37,9 +37,9 @@ bool IsCppSourceExtension(std::string extension); bool IsCppHeaderExtension(std::string extension); double Round(double value, int precision); -void ProgressNotification(const char* group, const char* title, const char* messageID, +void ProgressNotification(const char* group, const char* title, const char* messageID, const char* content, float progress, bigtime_t timeout = -1); -void ErrorNotification(const char* group, const char* title, const char* messageID, +void ErrorNotification(const char* group, const char* title, const char* messageID, const char* content, bigtime_t timeout = -1); template @@ -155,5 +155,7 @@ class message_property } }; +BPath GetDataDirectory(); + #endif // UTILS_H diff --git a/src/templates/TemplateManager.cpp b/src/templates/TemplateManager.cpp index f1e9dcf3..65efcf53 100644 --- a/src/templates/TemplateManager.cpp +++ b/src/templates/TemplateManager.cpp @@ -16,6 +16,7 @@ #include "GenioNamespace.h" #include "Log.h" #include "TemplateManager.h" +#include "Utils.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "TemplateManager" @@ -109,30 +110,11 @@ TemplateManager::CreateNewFolder(const entry_ref* destination) BString TemplateManager::GetDefaultTemplateDirectory() { + // Default template directory app_info info; - BPath templatePath; - if (be_app->GetAppInfo(&info) == B_OK) { - // This code should work both for the case where Genio is - // in the "app" subdirectory, like in the repo, - // and when it's in the package. - BPath genioPath(&info.ref); - BPath parentPath; - if (genioPath.GetParent(&parentPath) == B_OK) { - templatePath = parentPath; - templatePath.Append("data"); - templatePath.Append(kTemplateDirectory); - // Genio - // data/templates/ - if (!BEntry(templatePath.Path()).IsDirectory()) { - // app/Genio - // data/templates/ - parentPath.GetParent(&templatePath); - templatePath.Append("data"); - templatePath.Append(kTemplateDirectory); - } - } - } + BPath templatePath = GetDataDirectory(); + templatePath.Append(kTemplateDirectory); return templatePath.Path(); } diff --git a/src/ui/Editor.cpp b/src/ui/Editor.cpp index 75a93d53..a6167662 100644 --- a/src/ui/Editor.cpp +++ b/src/ui/Editor.cpp @@ -35,6 +35,7 @@ #include "ProjectFolder.h" #include "ScintillaUtils.h" #include "Utils.h" +#include "Languages.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "Editor" @@ -654,7 +655,8 @@ Editor::LoadFromFile() // Monitor node StartMonitoring(); - fFileType = Genio::file_type(fFileName.String()); + fFileType = ""; + Languages::GetLanguageForExtension(Genio::GetFileExtension(fFileName.String()), fFileType); UpdateStatusBar(); return B_OK; @@ -1322,27 +1324,14 @@ Editor::ContextMenu(BPoint point) void Editor::_ApplyExtensionSettings() { - if (fFileType == "c++") { + if (fFileType != "") { fSyntaxAvailable = true; fFoldingAvailable = true; fBracingAvailable = true; fParsingAvailable = true; - fCommenter = "//"; - SendMessage(SCI_SETILEXER, 0, (sptr_t)CreateLexer("cpp")); - SendMessage(SCI_SETKEYWORDS, 0, (sptr_t)cppKeywords); - SendMessage(SCI_SETKEYWORDS, 1, (sptr_t)haikuClasses); - } else if (fFileType == "rust") { - fSyntaxAvailable = true; - fFoldingAvailable = true; - fBracingAvailable = true; - fCommenter = "//"; - SendMessage(SCI_SETILEXER, 0, (sptr_t)CreateLexer("rust")); - SendMessage(SCI_SETKEYWORDS, 0, (sptr_t)rustKeywords); - } else if (fFileType == "make") { - fSyntaxAvailable = true; - fBracingAvailable = true; - fCommenter = "#"; - SendMessage(SCI_SETILEXER, 0, (sptr_t)CreateLexer("make")); + fCommenter = "//";// FixMe: check _ApplyLanguage for details + + Languages::_ApplyLanguage(this, fFileType.c_str(), "/boot/data/genio/Genio/data"); } } From 1a8f79ced49580e98fdbd29f80865c014c77459d Mon Sep 17 00:00:00 2001 From: Freaxed Date: Thu, 2 Nov 2023 22:37:54 +0100 Subject: [PATCH 02/10] use of the file type identification from Languages --- src/helpers/GenioCommon.cpp | 13 ++----------- src/helpers/GenioCommon.h | 4 ++-- src/helpers/Utils.h | 3 +-- src/lsp-client/LSPEditorWrapper.cpp | 2 +- src/lsp-client/LSPProjectWrapper.cpp | 5 +++-- src/lsp-client/LSPTextDocument.h | 16 ++++++++++++---- src/ui/Editor.cpp | 3 ++- src/ui/Editor.h | 18 ++++++++++-------- src/ui/GenioWindow.cpp | 12 ++++-------- 9 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/helpers/GenioCommon.cpp b/src/helpers/GenioCommon.cpp index b4f7ffa0..b9b97e0b 100644 --- a/src/helpers/GenioCommon.cpp +++ b/src/helpers/GenioCommon.cpp @@ -14,20 +14,11 @@ namespace Genio { -std::string -GetFileExtension(const char* fileName) -{ - std::string filename(fileName); - auto pos = filename.find_last_of('.'); - if (pos != std::string::npos) { - return filename.substr(pos + 1); - } - return ""; -} + //TODO deprecate! std::string const -file_type(const std::string& fullpath) +DEP_file_type(const std::string& fullpath) { BPath path(fullpath.c_str()); diff --git a/src/helpers/GenioCommon.h b/src/helpers/GenioCommon.h index ed0da91a..f271bb9d 100644 --- a/src/helpers/GenioCommon.h +++ b/src/helpers/GenioCommon.h @@ -11,8 +11,8 @@ //TODO: move this function inside other namespace Genio { - std::string const file_type(const std::string& filename); - std::string GetFileExtension(const char* fileName); + std::string const DEP_file_type(const std::string& filename); + } diff --git a/src/helpers/Utils.h b/src/helpers/Utils.h index e366118f..a0edac92 100644 --- a/src/helpers/Utils.h +++ b/src/helpers/Utils.h @@ -155,7 +155,6 @@ class message_property } }; -BPath GetDataDirectory(); - +BPath GetDataDirectory(); #endif // UTILS_H diff --git a/src/lsp-client/LSPEditorWrapper.cpp b/src/lsp-client/LSPEditorWrapper.cpp index 70831c07..ef76e132 100644 --- a/src/lsp-client/LSPEditorWrapper.cpp +++ b/src/lsp-client/LSPEditorWrapper.cpp @@ -27,7 +27,7 @@ LSPEditorWrapper::LSPEditorWrapper(BPath filenamePath, Editor* editor) : - LSPTextDocument(filenamePath), + LSPTextDocument(filenamePath, editor->FileType().c_str()), fEditor(editor), fToolTip(nullptr), fLSPProjectWrapper(nullptr) diff --git a/src/lsp-client/LSPProjectWrapper.cpp b/src/lsp-client/LSPProjectWrapper.cpp index b7a6876e..fe933fe6 100644 --- a/src/lsp-client/LSPProjectWrapper.cpp +++ b/src/lsp-client/LSPProjectWrapper.cpp @@ -29,8 +29,9 @@ LSPProjectWrapper::LSPProjectWrapper(BPath rootPath) bool LSPProjectWrapper::RegisterTextDocument(LSPTextDocument* textDocument) { - std::string fileType = Genio::file_type(textDocument->GetFilenameURI().String()); - if (fileType.compare("c++") != 0 && fileType.compare("make") != 0) + debugger(textDocument->FileType()); + if (textDocument->FileType().Compare("cpp") != 0 && + textDocument->FileType().Compare("make") != 0) return false; if (!fLSPPipeClient) diff --git a/src/lsp-client/LSPTextDocument.h b/src/lsp-client/LSPTextDocument.h index 32980990..9b44fab3 100644 --- a/src/lsp-client/LSPTextDocument.h +++ b/src/lsp-client/LSPTextDocument.h @@ -2,7 +2,7 @@ * Copyright 2023, Andrea Anzani * All rights reserved. Distributed under the terms of the MIT license. */ - + #ifndef LSPTextDocument_H #define LSPTextDocument_H @@ -11,17 +11,25 @@ class LSPTextDocument : public MessageHandler { public: - LSPTextDocument(BPath filePath) { fFilenameURI = BUrl(filePath); fFilenameURI.SetAuthority("") ; fFileStatus = "";} - + LSPTextDocument(BPath filePath, BString fileType) { + fFilenameURI = BUrl(filePath); + fFilenameURI.SetAuthority("") ; + fFileStatus = ""; + fFileType = fileType; + } + const BString GetFilenameURI() { return fFilenameURI.UrlString();} const BString GetFileStatus() { return fFileStatus; } - + void SetFileStatus(BString newStatus) { fFileStatus = newStatus; } + const BString FileType() { return fFileType; } + private: BUrl fFilenameURI; BString fFileStatus; + BString fFileType; }; diff --git a/src/ui/Editor.cpp b/src/ui/Editor.cpp index a6167662..d6a80a05 100644 --- a/src/ui/Editor.cpp +++ b/src/ui/Editor.cpp @@ -656,7 +656,8 @@ Editor::LoadFromFile() StartMonitoring(); fFileType = ""; - Languages::GetLanguageForExtension(Genio::GetFileExtension(fFileName.String()), fFileType); + Languages::GetLanguageForExtension(GetFileExtension(fFileName.String()), fFileType); + debugger("qui!"); UpdateStatusBar(); return B_OK; diff --git a/src/ui/Editor.h b/src/ui/Editor.h index 92be8419..622f91c3 100644 --- a/src/ui/Editor.h +++ b/src/ui/Editor.h @@ -70,7 +70,7 @@ constexpr auto kBraceMatch = 1; constexpr auto kBraceBad = 2; class Editor : public BScintillaView { - + public: Editor(entry_ref* ref, const BMessenger& target); ~Editor(); @@ -153,7 +153,7 @@ class Editor : public BScintillaView { bool LineEndingsVisible(); bool WhiteSpacesVisible(); - + void SetProjectFolder(ProjectFolder*); ProjectFolder* GetProjectFolder() { return fProjectFolder; } void SetZoom(int32 zoom); @@ -165,15 +165,17 @@ class Editor : public BScintillaView { void GoToImplementation(); void SwitchSourceHeader(); void UncommentSelection(); - + void ContextMenu(BPoint point); - + void SetProblems(const BMessage* diagnostics); void GetProblems(BMessage* diagnostics); - + filter_result BeforeKeyDown(BMessage*); filter_result OnArrowKey(int8 ch); + std::string FileType() { return fFileType; } + private: void UpdateStatusBar(); void _ApplyExtensionSettings(); @@ -189,7 +191,7 @@ class Editor : public BScintillaView { void _RedrawNumberMargin(bool forced = false); void _SetFoldMargin(); void _UpdateSavePoint(bool modified); - + template typename T::type Get() { return T::Get(this); } template @@ -213,11 +215,11 @@ class Editor : public BScintillaView { int fCurrentLine; int fCurrentColumn; - + LSPEditorWrapper* fLSPEditorWrapper; ProjectFolder* fProjectFolder; editor::StatusView* fStatusView; - + BMessage fProblems; BLocker fProblemsLock; diff --git a/src/ui/GenioWindow.cpp b/src/ui/GenioWindow.cpp index f5340ed0..a3c9ad80 100644 --- a/src/ui/GenioWindow.cpp +++ b/src/ui/GenioWindow.cpp @@ -7,9 +7,6 @@ #include "GenioWindow.h" #include -#include -#include -#include #include #include @@ -35,7 +32,7 @@ #include "ConfigManager.h" #include "ConfigWindow.h" #include "FSUtils.h" -#include "GenioCommon.h" +#include "Languages.h" #include "GenioNamespace.h" #include "GenioWindowMessages.h" #include "Log.h" @@ -1586,9 +1583,8 @@ GenioWindow::_FileIsSupported(const entry_ref* ref) if (entry.InitCheck() != B_OK || entry.IsDirectory()) return false; - std::string fileType = Genio::file_type(BPath(ref).Path()); - - if (fileType != "") + std::string fileType = ""; + if (Languages::GetLanguageForExtension(GetFileExtension(BPath(ref).Path()), fileType)) return true; BNodeInfo info(&entry); @@ -3825,7 +3821,7 @@ GenioWindow::_UpdateTabChange(Editor* editor, const BString& caller) ActionManager::SetEnabled(MSG_GOTODEFINITION, editor->GetProjectFolder()); ActionManager::SetEnabled(MSG_GOTODECLARATION, editor->GetProjectFolder()); ActionManager::SetEnabled(MSG_GOTOIMPLEMENTATION, editor->GetProjectFolder()); - ActionManager::SetEnabled(MSG_SWITCHSOURCE, (Genio::file_type(editor->Name().String()).compare("c++") == 0)); + ActionManager::SetEnabled(MSG_SWITCHSOURCE, (editor->FileType().compare("cpp") == 0)); ActionManager::SetEnabled(MSG_FIND_NEXT, true); ActionManager::SetEnabled(MSG_FIND_PREVIOUS, true); From cc9aa0544d3c284b038ac4ee399b701d0c7bd967 Mon Sep 17 00:00:00 2001 From: Freaxed Date: Sun, 5 Nov 2023 16:51:54 +0100 Subject: [PATCH 03/10] better integrated with Genio and its functions --- src/GenioApp.cpp | 7 +- src/helpers/Languages.cpp | 159 ++++----------------------- src/helpers/Languages.h | 6 +- src/lsp-client/LSPEditorWrapper.cpp | 2 + src/lsp-client/LSPProjectWrapper.cpp | 1 - src/lsp-client/LSPTextDocument.h | 1 + src/ui/Editor.cpp | 5 +- src/ui/Editor.h | 3 + src/ui/GenioWindow.cpp | 10 +- 9 files changed, 44 insertions(+), 150 deletions(-) diff --git a/src/GenioApp.cpp b/src/GenioApp.cpp index 0f32f61e..86477a4d 100644 --- a/src/GenioApp.cpp +++ b/src/GenioApp.cpp @@ -15,6 +15,7 @@ #include "ConfigManager.h" #include "GenioNamespace.h" +#include "Languages.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "GenioApp" @@ -192,10 +193,6 @@ GenioApp::RefsReceived(BMessage* message) fGenioWindow->PostMessage(message); } -//temp xed //FIXME - -#include "Languages.h" - void GenioApp::ReadyToRun() { @@ -207,7 +204,7 @@ GenioApp::ReadyToRun() LogInfo("Cannot load global settings file"); } - Languages::_LoadLanguages("/boot/data/genio/Genio/data"); + Languages::LoadLanguages(); // let's subscribe config changes updates StartWatching(this, MSG_NOTIFY_CONFIGURATION_UPDATED); diff --git a/src/helpers/Languages.cpp b/src/helpers/Languages.cpp index 8df9eab0..05ebb990 100644 --- a/src/helpers/Languages.cpp +++ b/src/helpers/Languages.cpp @@ -1,4 +1,7 @@ /* + * Copyright 2023, Andrea Anzani + * + * Code derived from Koder: * Copyright 2015-2018 Kacper Kasper * All rights reserved. Distributed under the terms of the MIT license. */ @@ -24,8 +27,7 @@ #include "Editor.h" -//temp //xed //FIXME -#define gAppName "" +#include "Utils.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "Languages" @@ -35,77 +37,6 @@ std::vector Languages::sLanguages; std::map Languages::sMenuItems; std::map Languages::sExtensions; - -namespace { - -/** - * Executes a specified function for each data directory, going from system to - * user, packaged to non-packaged. The path is available as a parameter to the - * user supplied function. - */ -void -DoInAllDataDirectories(std::function func) { - BPath dataPath; - find_directory(B_SYSTEM_DATA_DIRECTORY, &dataPath); - func(dataPath); - find_directory(B_USER_DATA_DIRECTORY, &dataPath); - func(dataPath); - find_directory(B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, &dataPath); - func(dataPath); - find_directory(B_USER_NONPACKAGED_DATA_DIRECTORY, &dataPath); - func(dataPath); -} - -void -DoInAllLibDirectories(std::function func) { - BPath libPath; - find_directory(B_SYSTEM_LIB_DIRECTORY, &libPath); - func(libPath); - find_directory(B_USER_LIB_DIRECTORY, &libPath); - func(libPath); - find_directory(B_SYSTEM_NONPACKAGED_LIB_DIRECTORY, &libPath); - func(libPath); - find_directory(B_USER_NONPACKAGED_LIB_DIRECTORY, &libPath); - func(libPath); -} - -class LexerLibrary { -public: - LexerLibrary(const char* path) { - fLibrary = load_add_on(path); - if(fLibrary > 0) { - if(get_image_symbol(fLibrary, LEXILLA_CREATELEXER, B_SYMBOL_TYPE_TEXT, - reinterpret_cast(&fCreateLexer)) != B_OK) { - fCreateLexer = nullptr; - } - } - } - - ~LexerLibrary() { - if(fLibrary > 0) { - unload_add_on(fLibrary); - } - fLibrary = 0; - } - - bool IsValid() { - return fLibrary > 0 && fCreateLexer != nullptr; - } - - Scintilla::ILexer5* CreateLexer(const char* name) { - return fCreateLexer(name); - } - -private: - image_id fLibrary; - Lexilla::CreateLexerFn fCreateLexer; -}; - -std::vector> sLexerLibraries; - -} - - /* static */ bool Languages::GetLanguageForExtension(const std::string ext, std::string& lang) { @@ -134,13 +65,14 @@ Languages::ApplyLanguage(Editor* editor, const char* lang) { editor->SendMessage(SCI_FREESUBSTYLES); std::map styleMapping; - DoInAllDataDirectories([&](const BPath& path) { - try { - auto m = _ApplyLanguage(editor, lang, path); - m.merge(styleMapping); - std::swap(styleMapping, m); - } catch (YAML::BadFile &) {} - }); + + try { + BPath path = GetDataDirectory(); + auto m = _ApplyLanguage(editor, lang, path); + m.merge(styleMapping); + std::swap(styleMapping, m); + } catch (YAML::BadFile &) {} + return styleMapping; } @@ -169,29 +101,18 @@ Languages::ApplyLanguage(Editor* editor, const char* lang) /* static */ std::map Languages::_ApplyLanguage(Editor* editor, const char* lang, const BPath &path) { - // if(sLexerLibraries.empty() == true) - // return {}; - // TODO: early exit if lexer not changed - BPath p(path); - p.Append(gAppName); + BPath p = GetDataDirectory(); p.Append("languages"); p.Append(lang); const YAML::Node language = YAML::LoadFile(std::string(p.Path()) + ".yaml"); std::string lexerName = language["lexer"].as(); - Scintilla::ILexer5* lexer; - // sLexerLibraries contains libraries in the following order: - // * system - // * user - // * non-packaged system - // * non-packaged user - // Going in reverse results in correct override hierarchy. - //for(auto it = sLexerLibraries.rbegin(); it != sLexerLibraries.rend(); ++it) { - lexer = CreateLexer(lexerName.c_str()); - if(lexer == nullptr) - return std::map(); - //} + Scintilla::ILexer5* lexer = CreateLexer(lexerName.c_str()); + + if(lexer == nullptr) + return std::map(); + editor->SendMessage(SCI_SETILEXER, 0, reinterpret_cast(lexer)); for(const auto& property : language["properties"]) { @@ -227,8 +148,7 @@ Languages::_ApplyLanguage(Editor* editor, const char* lang, const BPath &path) } const YAML::Node comments = language["comments"]; -//xed FIXME -/* + if(comments) { const YAML::Node line = comments["line"]; if(line) @@ -237,7 +157,7 @@ Languages::_ApplyLanguage(Editor* editor, const char* lang, const BPath &path) if(block && block.IsSequence()) editor->SetCommentBlockTokens(block[0].as(), block[1].as()); - }*/ + } std::map styleMap; const YAML::Node styles = language["styles"]; @@ -264,40 +184,10 @@ Languages::_ApplyLanguage(Editor* editor, const char* lang, const BPath &path) /* static */ void Languages::LoadLanguages() { - DoInAllDataDirectories([](const BPath& path) { - try { - _LoadLanguages(path); - } catch (YAML::BadFile &) {} - }); - - DoInAllLibDirectories([](const BPath& path) { - BPath p(path); - p.Append(LEXILLA_LIB LEXILLA_EXTENSION); - auto lexilla = std::make_unique(p.Path()); - if(lexilla->IsValid() == true) { - sLexerLibraries.push_back(std::move(lexilla)); - } - }); - - DoInAllLibDirectories([](const BPath& path) { - BPath p(path); - p.Append("lexilla"); - BDirectory lexersDir(p.Path()); - if (lexersDir.InitCheck() != B_OK) - return; - - BEntry lexerEntry; - while(lexersDir.GetNextEntry(&lexerEntry, true) == B_OK) { - if(lexerEntry.IsDirectory()) - continue; - BPath lexerPath; - lexerEntry.GetPath(&lexerPath); - auto lexer = std::make_unique(lexerPath.Path()); - if(lexer->IsValid() == true) { - sLexerLibraries.push_back(std::move(lexer)); - } - } - }); + try { + BPath path = GetDataDirectory(); + _LoadLanguages(path); + } catch (YAML::BadFile &) {} } @@ -305,7 +195,6 @@ Languages::LoadLanguages() Languages::_LoadLanguages(const BPath& path) { BPath p(path); - p.Append(gAppName); p.Append("languages"); const YAML::Node languages = YAML::LoadFile(std::string(p.Path()) + ".yaml"); for(const auto& language : languages) { diff --git a/src/helpers/Languages.h b/src/helpers/Languages.h index a7d4e3c4..1245b4f1 100644 --- a/src/helpers/Languages.h +++ b/src/helpers/Languages.h @@ -1,8 +1,10 @@ /* + * Copyright 2023, Andrea Anzani + * + * Code derived from Koder: * Copyright 2015-2018 Kacper Kasper * All rights reserved. Distributed under the terms of the MIT license. */ - #ifndef LANGUAGES_H #define LANGUAGES_H @@ -26,7 +28,7 @@ class Languages { static std::map ApplyLanguage(Editor* editor, const char* lang); static void LoadLanguages(); -//fixme private: +private: static void _LoadLanguages(const BPath& path); static std::map _ApplyLanguage(Editor* editor, const char* lang, const BPath &path); static std::vector sLanguages; diff --git a/src/lsp-client/LSPEditorWrapper.cpp b/src/lsp-client/LSPEditorWrapper.cpp index ef76e132..56041e0c 100644 --- a/src/lsp-client/LSPEditorWrapper.cpp +++ b/src/lsp-client/LSPEditorWrapper.cpp @@ -81,6 +81,8 @@ LSPEditorWrapper::SetLSPClient(LSPProjectWrapper* cW) { assert(!fLSPProjectWrapper); assert(fEditor); + SetFileType(fEditor->FileType().c_str()); + if (cW->RegisterTextDocument(this)) { fLSPProjectWrapper = cW; didOpen(); diff --git a/src/lsp-client/LSPProjectWrapper.cpp b/src/lsp-client/LSPProjectWrapper.cpp index fe933fe6..7318e924 100644 --- a/src/lsp-client/LSPProjectWrapper.cpp +++ b/src/lsp-client/LSPProjectWrapper.cpp @@ -29,7 +29,6 @@ LSPProjectWrapper::LSPProjectWrapper(BPath rootPath) bool LSPProjectWrapper::RegisterTextDocument(LSPTextDocument* textDocument) { - debugger(textDocument->FileType()); if (textDocument->FileType().Compare("cpp") != 0 && textDocument->FileType().Compare("make") != 0) return false; diff --git a/src/lsp-client/LSPTextDocument.h b/src/lsp-client/LSPTextDocument.h index 9b44fab3..032ad3fc 100644 --- a/src/lsp-client/LSPTextDocument.h +++ b/src/lsp-client/LSPTextDocument.h @@ -22,6 +22,7 @@ class LSPTextDocument : public MessageHandler { const BString GetFileStatus() { return fFileStatus; } void SetFileStatus(BString newStatus) { fFileStatus = newStatus; } + void SetFileType(BString newType) { fFileType = newType; } const BString FileType() { return fFileType; } diff --git a/src/ui/Editor.cpp b/src/ui/Editor.cpp index d6a80a05..1f84c70d 100644 --- a/src/ui/Editor.cpp +++ b/src/ui/Editor.cpp @@ -657,7 +657,6 @@ Editor::LoadFromFile() fFileType = ""; Languages::GetLanguageForExtension(GetFileExtension(fFileName.String()), fFileType); - debugger("qui!"); UpdateStatusBar(); return B_OK; @@ -1330,9 +1329,9 @@ Editor::_ApplyExtensionSettings() fFoldingAvailable = true; fBracingAvailable = true; fParsingAvailable = true; - fCommenter = "//";// FixMe: check _ApplyLanguage for details + fCommenter = "//"; - Languages::_ApplyLanguage(this, fFileType.c_str(), "/boot/data/genio/Genio/data"); + Languages::ApplyLanguage(this, fFileType.c_str()); } } diff --git a/src/ui/Editor.h b/src/ui/Editor.h index 622f91c3..c6e8ce9b 100644 --- a/src/ui/Editor.h +++ b/src/ui/Editor.h @@ -176,6 +176,9 @@ class Editor : public BScintillaView { std::string FileType() { return fFileType; } + void SetCommentLineToken(std::string commenter){ fCommenter = commenter; } + void SetCommentBlockTokens(std::string startBlock, std::string endBlock){ /*TODO! */} + private: void UpdateStatusBar(); void _ApplyExtensionSettings(); diff --git a/src/ui/GenioWindow.cpp b/src/ui/GenioWindow.cpp index a3c9ad80..a47babc3 100644 --- a/src/ui/GenioWindow.cpp +++ b/src/ui/GenioWindow.cpp @@ -1530,6 +1530,11 @@ GenioWindow::_FileOpen(BMessage* msg) return B_ERROR; } + status = editor->LoadFromFile(); + if (status != B_OK) { + continue; + } + /* here we try to assign the right "LSPClientWrapper" to the Editor.. */ @@ -1544,10 +1549,7 @@ GenioWindow::_FileOpen(BMessage* msg) } } - status = editor->LoadFromFile(); - if (status != B_OK) { - continue; - } + editor->ApplySettings(); From 3709200f79e6d7ef307b277758eed68aadd04ffc Mon Sep 17 00:00:00 2001 From: Freaxed Date: Mon, 6 Nov 2023 11:17:37 +0100 Subject: [PATCH 04/10] added styles, created menu and overall improvements --- Makefile | 1 + src/GenioApp.cpp | 1 + src/config/GMessage.h | 9 +- src/helpers/Styler.cpp | 307 +++++++++++++++++++++++++++++++++++ src/helpers/Styler.h | 46 ++++++ src/ui/Editor.cpp | 12 +- src/ui/GenioWindow.cpp | 30 ++++ src/ui/GenioWindow.h | 6 +- src/ui/GenioWindowMessages.h | 4 +- 9 files changed, 408 insertions(+), 8 deletions(-) create mode 100644 src/helpers/Styler.cpp create mode 100644 src/helpers/Styler.h diff --git a/Makefile b/Makefile index 9d8a50c5..4f42c93c 100644 --- a/Makefile +++ b/Makefile @@ -58,6 +58,7 @@ SRCS += src/helpers/tabview/TabContainerView.cpp SRCS += src/helpers/tabview/TabManager.cpp SRCS += src/helpers/tabview/TabView.cpp SRCS += src/helpers/tabview/Languages.cpp +SRCS += src/helpers/tabview/Styler.cpp SRCS += src/lsp-client/LSPEditorWrapper.cpp SRCS += src/lsp-client/LSPProjectWrapper.cpp SRCS += src/lsp-client/LSPPipeClient.cpp diff --git a/src/GenioApp.cpp b/src/GenioApp.cpp index 86477a4d..49431c6b 100644 --- a/src/GenioApp.cpp +++ b/src/GenioApp.cpp @@ -16,6 +16,7 @@ #include "ConfigManager.h" #include "GenioNamespace.h" #include "Languages.h" +#include "GMessage.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "GenioApp" diff --git a/src/config/GMessage.h b/src/config/GMessage.h index 36f8695c..d7c2f127 100644 --- a/src/config/GMessage.h +++ b/src/config/GMessage.h @@ -162,11 +162,11 @@ class GMessageReturn { } } } - + bool operator !=(const GMessageReturn& n) { return !operator==(n); } - + bool operator ==(GMessageReturn n) { type_code typeLeft; type_code typeRight; @@ -191,7 +191,7 @@ class GMessageReturn { return comparison; } - + void Print() const { fMsg->PrintToStream(); } @@ -200,3 +200,6 @@ class GMessageReturn { const char* fKey; GMessageReturn* fSyncParent; }; + +// Stack Message +#define SMSG(WHAT, LIST...) ((new GMessage({{{ LIST }}}))->what = WHAT) diff --git a/src/helpers/Styler.cpp b/src/helpers/Styler.cpp new file mode 100644 index 00000000..9d12a3b8 --- /dev/null +++ b/src/helpers/Styler.cpp @@ -0,0 +1,307 @@ +/* + * Copyright 2014-2018 Kacper Kasper + * All rights reserved. Distributed under the terms of the MIT license. + */ + +#include "Styler.h" + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include "Editor.h" +#include +#include "Utils.h" + + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "Styler" + + +namespace YAML { + +namespace { + +int +CSSToInt(const std::string cssColor) +{ + if(cssColor[0] != '#' || cssColor.length() != 7) + return -1; + + std::string red = cssColor.substr(1, 2); + std::string green = cssColor.substr(3, 2); + std::string blue = cssColor.substr(5, 2); + + return std::stoi(blue + green + red, nullptr, 16); +} + +} + +template<> +struct convert { + static Node encode(const Styler::Style& rhs) { + return Node(); + } + + static bool decode(const Node& node, Styler::Style& rhs) { + if(!node.IsMap()) { + return false; + } + + if(node["foreground"]) { + rhs.fgColor = CSSToInt(node["foreground"].as()); + } + if(node["background"]) { + rhs.bgColor = CSSToInt(node["background"].as()); + } + if(node["style"] && node["style"].IsSequence()) { + rhs.style = 0; + const auto styles = node["style"].as>(); + for(const auto& style : styles) { + if(style == "bold") + rhs.style |= 1; + else if(style == "italic") + rhs.style |= 2; + else if(style == "underline") + rhs.style |= 4; + } + } + return true; + } +}; + +} + + +std::unordered_map Styler::sStylesMapping; + + +/* static */ void +Styler::ApplyGlobal(Editor* editor, const char* style, const BFont* font) +{ + sStylesMapping.clear(); + +/* static bool alertShown = false; + bool found = false; + BPath dataPath; +*/ + try { + _ApplyGlobal(editor, style, GetDataDirectory(), font); + //found = true; + } catch (YAML::BadFile &) { + }/* + if(found == false && alertShown == false) { + alertShown = true; + OKAlert(B_TRANSLATE("Style files"), B_TRANSLATE("Couldn't find style " + "files. Make sure you have them installed in one of your data " + "directories."), B_WARNING_ALERT); + }*/ +} + + +/* static */ void +Styler::_ApplyGlobal(Editor* editor, const char* style, const BPath &path, const BFont* font) +{ + BPath p(path); + p.Append("styles"); + p.Append(style); + const YAML::Node styles = YAML::LoadFile(std::string(p.Path()) + ".yaml"); + YAML::Node global; + if(styles["Global"]) { + global = styles["Global"]; + } + + int id; + Style s; + if(global["Default"]) { + _GetAttributesFromNode(global["Default"], id, s); + + if(font == nullptr) + font = be_fixed_font; + font_family fontName; + font->GetFamilyAndStyle(&fontName, nullptr); + editor->SendMessage(SCI_STYLESETFONT, 32, (sptr_t) fontName); + editor->SendMessage(SCI_STYLESETSIZE, 32, (sptr_t) font->Size()); + _ApplyAttributes(editor, 32, s); + editor->SendMessage(SCI_STYLECLEARALL, 0, 0); + editor->SendMessage(SCI_STYLESETFONT, 36, (sptr_t) fontName); + editor->SendMessage(SCI_STYLESETSIZE, 36, (sptr_t) (font->Size() / 1.3)); + editor->SendMessage(SCI_SETWHITESPACESIZE, font->Size() / 6, 0); + + // whitespace + editor->SendMessage(SCI_INDICSETSTYLE, 0, INDIC_ROUNDBOX); + editor->SendMessage(SCI_INDICSETFORE, 0, 0x0000FF); + editor->SendMessage(SCI_INDICSETALPHA, 0, 100); + // IME + editor->SendMessage(SCI_INDICSETSTYLE, INDIC_IME, INDIC_FULLBOX); + editor->SendMessage(SCI_INDICSETFORE, INDIC_IME, 0xFF0000); + editor->SendMessage(SCI_INDICSETSTYLE, INDIC_IME+1, INDIC_FULLBOX); + editor->SendMessage(SCI_INDICSETFORE, INDIC_IME+1, 0x0000FF); + } + for(const auto &node : global) { + std::string name = node.first.as(); + _GetAttributesFromNode(node.second, id, s); + if(id != -1) { + _ApplyAttributes(editor, id, s); + sStylesMapping.emplace(id, s); + } else { + if(name == "Current line") { + editor->SendMessage(SCI_SETCARETLINEBACK, s.bgColor, 0); + //editor->SendMessage(SCI_SETCARETLINEBACKALPHA, 128, 0); + } + else if(name == "Whitespace") { + if(s.fgColor != -1) { + editor->SendMessage(SCI_SETWHITESPACEFORE, true, s.fgColor); + } + if(s.bgColor != -1) { + editor->SendMessage(SCI_SETWHITESPACEBACK, true, s.bgColor); + } + } + else if(name == "Selected text") { + if(s.fgColor != -1) { + editor->SendMessage(SCI_SETSELFORE, true, s.fgColor); + } + if(s.bgColor != -1) { + editor->SendMessage(SCI_SETSELBACK, true, s.bgColor); + } + } + else if(name == "Caret") { + editor->SendMessage(SCI_SETCARETFORE, s.fgColor, 0); + } + else if(name == "Edge") { + editor->SendMessage(SCI_SETEDGECOLOUR, s.fgColor, 0); + } + else if(name == "Fold") { + if(s.fgColor != -1) { + editor->SendMessage(SCI_SETFOLDMARGINHICOLOUR, true, s.fgColor); + } + if(s.bgColor != -1) { + editor->SendMessage(SCI_SETFOLDMARGINCOLOUR, true, s.bgColor); + } + } else if(name == "Fold marker") { + std::array markers = { + SC_MARKNUM_FOLDER, + SC_MARKNUM_FOLDEROPEN, + SC_MARKNUM_FOLDERSUB, + SC_MARKNUM_FOLDERTAIL, + SC_MARKNUM_FOLDEREND, + SC_MARKNUM_FOLDEROPENMID, + SC_MARKNUM_FOLDERMIDTAIL + }; + for(auto marker : markers) { + if(s.fgColor != -1) { + editor->SendMessage(SCI_MARKERSETFORE, marker, s.fgColor); + } + if(s.bgColor != -1) { + editor->SendMessage(SCI_MARKERSETBACK, marker, s.bgColor); + } + } + } else if(name == "Bookmark marker") { + if(s.fgColor != -1) { +//fixme xed editor->SendMessage(SCI_MARKERSETFORE, Editor::Marker::BOOKMARK, s.fgColor); + } + if(s.bgColor != -1) { +//fixme xed editor->SendMessage(SCI_MARKERSETBACK, Editor::Marker::BOOKMARK, s.bgColor); + } + } + } + } + for(const auto& style : styles) { + if(style.first.as() == "Global") + continue; + _GetAttributesFromNode(style.second, id, s); + sStylesMapping.emplace(id, s); + } +} + + +/* static */ void +Styler::ApplyLanguage(Editor* editor, const std::map& styleMapping) +{ + for(const auto& mapping : styleMapping) { + int scintillaId = mapping.first; + int styleId = mapping.second; + const auto it = sStylesMapping.find(styleId); + if(it != sStylesMapping.end()) { + Style s = it->second; + _ApplyAttributes(editor, scintillaId, s); + } + } +} + + +/* static */ void +Styler::GetAvailableStyles(std::set &styles) +{ + BPath dataPath; + find_directory(B_SYSTEM_DATA_DIRECTORY, &dataPath); + _GetAvailableStyles(styles, dataPath); + find_directory(B_USER_DATA_DIRECTORY, &dataPath); + _GetAvailableStyles(styles, dataPath); + find_directory(B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, &dataPath); + _GetAvailableStyles(styles, dataPath); + find_directory(B_USER_NONPACKAGED_DATA_DIRECTORY, &dataPath); + _GetAvailableStyles(styles, dataPath); +} + + +/* static */ void +Styler::_GetAvailableStyles(std::set &styles, const BPath &path) +{ + BPath p(path); + p.Append("styles"); + BDirectory directory(p.Path()); + BEntry entry; + char name[B_FILE_NAME_LENGTH]; + while(directory.GetNextEntry(&entry) == B_OK) { + if(entry.IsDirectory()) + continue; + entry.GetName(name); + if(GetFileExtension(name) == "yaml") { + styles.insert(GetFileName(name)); + } + } +} + + +void +Styler::_GetAttributesFromNode(const YAML::Node &node, int& styleId, Styler::Style& style) +{ + styleId = node["id"] ? node["id"].as() : -1; + style = node.as