packages feed

matterhorn 50200.11.0 → 50200.12.0

raw patch · 208 files changed

+18163/−6949 lines, 208 filesdep +commonmarkdep +commonmark-extensionsdep +parsecdep −cheapskatedep ~aspell-pipedep ~brickdep ~mattermost-apiPVP ok

version bump matches the API change (PVP)

Dependencies added: commonmark, commonmark-extensions, parsec

Dependencies removed: cheapskate

Dependency ranges changed: aspell-pipe, brick, mattermost-api, vty

API changes (from Hackage documentation)

- Matterhorn.Draw.RichText: MessageData :: Maybe ServerTime -> Bool -> Bool -> Message -> Maybe Text -> Maybe Message -> Maybe Text -> ThreadState -> Bool -> HighlightSet -> Bool -> Maybe Int -> Text -> Bool -> MessageData
- Matterhorn.Draw.RichText: [mdEditThreshold] :: MessageData -> Maybe ServerTime
- Matterhorn.Draw.RichText: [mdHighlightSet] :: MessageData -> HighlightSet
- Matterhorn.Draw.RichText: [mdIndentBlocks] :: MessageData -> Bool
- Matterhorn.Draw.RichText: [mdMessageWidthLimit] :: MessageData -> Maybe Int
- Matterhorn.Draw.RichText: [mdMessage] :: MessageData -> Message
- Matterhorn.Draw.RichText: [mdMyUsername] :: MessageData -> Text
- Matterhorn.Draw.RichText: [mdParentMessage] :: MessageData -> Maybe Message
- Matterhorn.Draw.RichText: [mdParentUserName] :: MessageData -> Maybe Text
- Matterhorn.Draw.RichText: [mdRenderReplyParent] :: MessageData -> Bool
- Matterhorn.Draw.RichText: [mdShowOlderEdits] :: MessageData -> Bool
- Matterhorn.Draw.RichText: [mdShowReactions] :: MessageData -> Bool
- Matterhorn.Draw.RichText: [mdThreadState] :: MessageData -> ThreadState
- Matterhorn.Draw.RichText: [mdUserName] :: MessageData -> Maybe Text
- Matterhorn.Draw.RichText: [mdWrapNonhighlightedCodeBlocks] :: MessageData -> Bool
- Matterhorn.Draw.RichText: addEllipsis :: Widget a -> Widget a
- Matterhorn.Draw.RichText: data MessageData
- Matterhorn.Draw.RichText: renderElementSeq :: Text -> Seq Element -> Seq (Widget a)
- Matterhorn.Draw.RichText: renderMessage :: MessageData -> Widget Name
- Matterhorn.LastRunState: writeLastRunState :: ChatState -> IO ()
- Matterhorn.State.Channels: clearChannelUnreadStatus :: ChannelId -> MH ()
- Matterhorn.State.Channels: showChannelInSidebar :: ChannelId -> Bool -> MH ()
- Matterhorn.State.Channels: toggleChannelListVisibility :: MH ()
- Matterhorn.State.Channels: updateSidebar :: MH ()
- Matterhorn.State.Channels: updateViewedChan :: Bool -> ChannelId -> MH ()
- Matterhorn.TeamSelect: interactiveTeamSelection :: Vty -> IO Vty -> [Team] -> IO (Maybe Team, Vty)
- Matterhorn.Types: [startupStateChannelZipper] :: StartupStateInfo -> Zipper ChannelListGroup ChannelListEntry
- Matterhorn.Types: [startupStateSpellChecker] :: StartupStateInfo -> Maybe (Aspell, IO ())
- Matterhorn.Types: [startupStateTeam] :: StartupStateInfo -> Team
- Matterhorn.Types: appMode :: ChatState -> Mode
- Matterhorn.Types: cedInputHistory :: Lens' ChatEditState InputHistory
- Matterhorn.Types: channelByName :: Text -> ChatState -> Maybe ClientChannel
- Matterhorn.Types: csChannelListOverlay :: Lens' ChatState (ListOverlayState Channel ChannelSearchScope)
- Matterhorn.Types: csChannelSelectState :: Lens' ChatState ChannelSelectState
- Matterhorn.Types: csChannelTopicDialog :: Lens' ChatState ChannelTopicDialogState
- Matterhorn.Types: csEditState :: Lens' ChatState ChatEditState
- Matterhorn.Types: csFocus :: Lens' ChatState (Zipper ChannelListGroup ChannelListEntry)
- Matterhorn.Types: csMessageSelect :: Lens' ChatState MessageSelectState
- Matterhorn.Types: csMyTeam :: Lens' ChatState Team
- Matterhorn.Types: csNotifyPrefs :: Lens' ChatState (Maybe (Form ChannelNotifyProps MHEvent Name))
- Matterhorn.Types: csPendingChannelChange :: Lens' ChatState (Maybe PendingChannelChange)
- Matterhorn.Types: csPostListOverlay :: Lens' ChatState PostListOverlayState
- Matterhorn.Types: csReactionEmojiListOverlay :: Lens' ChatState (ListOverlayState (Bool, Text) ())
- Matterhorn.Types: csRecentChannel :: Lens' ChatState (Maybe ChannelId)
- Matterhorn.Types: csReturnChannel :: Lens' ChatState (Maybe ChannelId)
- Matterhorn.Types: csShowChannelList :: Lens' ChatState Bool
- Matterhorn.Types: csShowExpandedChannelTopics :: Lens' ChatState Bool
- Matterhorn.Types: csShowMessagePreview :: Lens' ChatState Bool
- Matterhorn.Types: csThemeListOverlay :: Lens' ChatState (ListOverlayState InternalTheme ())
- Matterhorn.Types: csUrlList :: Lens' ChatState (List Name LinkChoice)
- Matterhorn.Types: csUserListOverlay :: Lens' ChatState (ListOverlayState UserInfo UserSearchScope)
- Matterhorn.Types: csViewedMessage :: Lens' ChatState (Maybe (Message, TabbedWindow ViewMessageWindowTab))
- Matterhorn.Types: myTeamId :: ChatState -> TeamId
- Matterhorn.Types.RichText: Bullet :: Char -> ListType
- Matterhorn.Types.RichText: Code :: ElementStyle
- Matterhorn.Types.RichText: Element :: ElementStyle -> ElementData -> Element
- Matterhorn.Types.RichText: Emph :: ElementStyle
- Matterhorn.Types.RichText: Hyperlink :: URL -> ElementStyle -> ElementStyle
- Matterhorn.Types.RichText: Normal :: ElementStyle
- Matterhorn.Types.RichText: Numbered :: NumDecoration -> Int -> ListType
- Matterhorn.Types.RichText: Paren :: NumDecoration
- Matterhorn.Types.RichText: Permalink :: ElementStyle
- Matterhorn.Types.RichText: Strikethrough :: ElementStyle
- Matterhorn.Types.RichText: Strong :: ElementStyle
- Matterhorn.Types.RichText: [eData] :: Element -> ElementData
- Matterhorn.Types.RichText: [eStyle] :: Element -> ElementStyle
- Matterhorn.Types.RichText: data Element
- Matterhorn.Types.RichText: data ElementData
- Matterhorn.Types.RichText: data ElementStyle
- Matterhorn.Types.RichText: data NumDecoration
- Matterhorn.Types.RichText: data RichTextBlock
- Matterhorn.Types.RichText: fromMarkdownBlocks :: Maybe TeamBaseURL -> Blocks -> Seq RichTextBlock
- Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.Element
- Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.ElementData
- Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.ElementStyle
- Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.ListType
- Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.NumDecoration
- Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.Element
- Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.ElementData
- Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.ElementStyle
- Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.ListType
- Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.NumDecoration
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.Element
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.ElementData
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.ElementStyle
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.ListType
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.NumDecoration
- Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.RichTextBlock
- Matterhorn.Types.RichText: setElementStyle :: ElementStyle -> Element -> Element
+ Matterhorn.Constants: editMarking :: Text
+ Matterhorn.Constants: normalChannelSigilChar :: Char
+ Matterhorn.Constants: userSigilChar :: Char
+ Matterhorn.Draw.Messages: MessageData :: Maybe ServerTime -> Bool -> Bool -> Message -> Maybe Text -> Maybe Message -> Maybe Text -> ThreadState -> Bool -> HighlightSet -> Bool -> Maybe Int -> Text -> Bool -> MessageData
+ Matterhorn.Draw.Messages: [mdEditThreshold] :: MessageData -> Maybe ServerTime
+ Matterhorn.Draw.Messages: [mdHighlightSet] :: MessageData -> HighlightSet
+ Matterhorn.Draw.Messages: [mdIndentBlocks] :: MessageData -> Bool
+ Matterhorn.Draw.Messages: [mdMessageWidthLimit] :: MessageData -> Maybe Int
+ Matterhorn.Draw.Messages: [mdMessage] :: MessageData -> Message
+ Matterhorn.Draw.Messages: [mdMyUsername] :: MessageData -> Text
+ Matterhorn.Draw.Messages: [mdParentMessage] :: MessageData -> Maybe Message
+ Matterhorn.Draw.Messages: [mdParentUserName] :: MessageData -> Maybe Text
+ Matterhorn.Draw.Messages: [mdRenderReplyParent] :: MessageData -> Bool
+ Matterhorn.Draw.Messages: [mdShowOlderEdits] :: MessageData -> Bool
+ Matterhorn.Draw.Messages: [mdShowReactions] :: MessageData -> Bool
+ Matterhorn.Draw.Messages: [mdThreadState] :: MessageData -> ThreadState
+ Matterhorn.Draw.Messages: [mdUserName] :: MessageData -> Maybe Text
+ Matterhorn.Draw.Messages: [mdWrapNonhighlightedCodeBlocks] :: MessageData -> Bool
+ Matterhorn.Draw.Messages: addEllipsis :: Widget a -> Widget a
+ Matterhorn.Draw.Messages: data MessageData
+ Matterhorn.Draw.Messages: renderMessage :: MessageData -> Widget Name
+ Matterhorn.Draw.RichText.Flatten: Code :: InlineStyle
+ Matterhorn.Draw.RichText.Flatten: Emph :: InlineStyle
+ Matterhorn.Draw.RichText.Flatten: FChannel :: Text -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FEditSentinel :: Bool -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FEmoji :: Text -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FSpace :: FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FText :: Text -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FUser :: Text -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: FlattenedInline :: FlattenedContent -> [InlineStyle] -> Maybe URL -> FlattenedInline
+ Matterhorn.Draw.RichText.Flatten: NonBreaking :: Seq (Seq FlattenedValue) -> FlattenedValue
+ Matterhorn.Draw.RichText.Flatten: Permalink :: InlineStyle
+ Matterhorn.Draw.RichText.Flatten: SingleInline :: FlattenedInline -> FlattenedValue
+ Matterhorn.Draw.RichText.Flatten: Strikethrough :: InlineStyle
+ Matterhorn.Draw.RichText.Flatten: Strong :: InlineStyle
+ Matterhorn.Draw.RichText.Flatten: [fiStyles] :: FlattenedInline -> [InlineStyle]
+ Matterhorn.Draw.RichText.Flatten: [fiURL] :: FlattenedInline -> Maybe URL
+ Matterhorn.Draw.RichText.Flatten: [fiValue] :: FlattenedInline -> FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: data FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: data FlattenedInline
+ Matterhorn.Draw.RichText.Flatten: data FlattenedValue
+ Matterhorn.Draw.RichText.Flatten: data InlineStyle
+ Matterhorn.Draw.RichText.Flatten: flattenInlineSeq :: HighlightSet -> Inlines -> Seq (Seq FlattenedValue)
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Classes.Eq Matterhorn.Draw.RichText.Flatten.FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Classes.Eq Matterhorn.Draw.RichText.Flatten.InlineStyle
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Show.Show Matterhorn.Draw.RichText.Flatten.FlattenedContent
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Show.Show Matterhorn.Draw.RichText.Flatten.FlattenedInline
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Show.Show Matterhorn.Draw.RichText.Flatten.FlattenedValue
+ Matterhorn.Draw.RichText.Flatten: instance GHC.Show.Show Matterhorn.Draw.RichText.Flatten.InlineStyle
+ Matterhorn.Draw.RichText.Wrap: doLineWrapping :: Int -> Seq FlattenedValue -> Seq WrappedLine
+ Matterhorn.Draw.RichText.Wrap: type WrappedLine = Seq FlattenedValue
+ Matterhorn.Events.Keybindings: MoveCurrentTeamLeftEvent :: KeyEvent
+ Matterhorn.Events.Keybindings: MoveCurrentTeamRightEvent :: KeyEvent
+ Matterhorn.Events.Keybindings: NextTeamEvent :: KeyEvent
+ Matterhorn.Events.Keybindings: PrevTeamEvent :: KeyEvent
+ Matterhorn.Events.Websocket: handleWebsocketActionResponse :: WebsocketActionResponse -> MH ()
+ Matterhorn.Events.Websocket: handleWebsocketEvent :: WebsocketEvent -> MH ()
+ Matterhorn.LastRunState: writeLastRunStates :: ChatState -> IO ()
+ Matterhorn.State.ChannelList: showChannelInSidebar :: ChannelId -> Bool -> MH ()
+ Matterhorn.State.ChannelList: toggleChannelListVisibility :: MH ()
+ Matterhorn.State.ChannelList: updateSidebar :: Maybe TeamId -> MH ()
+ Matterhorn.State.ChannelList: updateWindowTitle :: MH ()
+ Matterhorn.State.Channels: renameChannelUrl :: Text -> MH ()
+ Matterhorn.State.Teams: buildTeamState :: ChatResources -> User -> Team -> IO (TeamState, ClientChannels)
+ Matterhorn.State.Teams: handleJoinTeam :: TeamId -> MH ()
+ Matterhorn.State.Teams: handleLeaveTeam :: TeamId -> MH ()
+ Matterhorn.State.Teams: handleUpdateTeam :: TeamId -> MH ()
+ Matterhorn.State.Teams: moveCurrentTeamLeft :: MH ()
+ Matterhorn.State.Teams: moveCurrentTeamRight :: MH ()
+ Matterhorn.State.Teams: nextTeam :: MH ()
+ Matterhorn.State.Teams: prevTeam :: MH ()
+ Matterhorn.Themes: currentTeamAttr :: AttrName
+ Matterhorn.Types: TeamList :: Name
+ Matterhorn.Types: TeamState :: Zipper ChannelListGroup ChannelListEntry -> Maybe PendingChannelChange -> Maybe ChannelId -> Maybe ChannelId -> ChatEditState -> MessageSelectState -> Team -> ChannelSelectState -> List Name LinkChoice -> Maybe (Message, TabbedWindow ViewMessageWindowTab) -> PostListOverlayState -> ListOverlayState UserInfo UserSearchScope -> ListOverlayState Channel ChannelSearchScope -> Maybe (Form ChannelNotifyProps MHEvent Name) -> ChannelTopicDialogState -> Mode -> ListOverlayState (Bool, Text) () -> ListOverlayState InternalTheme () -> TeamState
+ Matterhorn.Types: [_tsChannelListOverlay] :: TeamState -> ListOverlayState Channel ChannelSearchScope
+ Matterhorn.Types: [_tsChannelSelectState] :: TeamState -> ChannelSelectState
+ Matterhorn.Types: [_tsChannelTopicDialog] :: TeamState -> ChannelTopicDialogState
+ Matterhorn.Types: [_tsEditState] :: TeamState -> ChatEditState
+ Matterhorn.Types: [_tsFocus] :: TeamState -> Zipper ChannelListGroup ChannelListEntry
+ Matterhorn.Types: [_tsMessageSelect] :: TeamState -> MessageSelectState
+ Matterhorn.Types: [_tsMode] :: TeamState -> Mode
+ Matterhorn.Types: [_tsNotifyPrefs] :: TeamState -> Maybe (Form ChannelNotifyProps MHEvent Name)
+ Matterhorn.Types: [_tsPendingChannelChange] :: TeamState -> Maybe PendingChannelChange
+ Matterhorn.Types: [_tsPostListOverlay] :: TeamState -> PostListOverlayState
+ Matterhorn.Types: [_tsReactionEmojiListOverlay] :: TeamState -> ListOverlayState (Bool, Text) ()
+ Matterhorn.Types: [_tsRecentChannel] :: TeamState -> Maybe ChannelId
+ Matterhorn.Types: [_tsReturnChannel] :: TeamState -> Maybe ChannelId
+ Matterhorn.Types: [_tsTeam] :: TeamState -> Team
+ Matterhorn.Types: [_tsThemeListOverlay] :: TeamState -> ListOverlayState InternalTheme ()
+ Matterhorn.Types: [_tsUrlList] :: TeamState -> List Name LinkChoice
+ Matterhorn.Types: [_tsUserListOverlay] :: TeamState -> ListOverlayState UserInfo UserSearchScope
+ Matterhorn.Types: [_tsViewedMessage] :: TeamState -> Maybe (Message, TabbedWindow ViewMessageWindowTab)
+ Matterhorn.Types: [startupStateInitialTeam] :: StartupStateInfo -> TeamId
+ Matterhorn.Types: [startupStateTeams] :: StartupStateInfo -> HashMap TeamId TeamState
+ Matterhorn.Types: applyTeamOrder :: [TeamId] -> MH ()
+ Matterhorn.Types: configAbsPathL :: Lens' Config (Maybe FilePath)
+ Matterhorn.Types: configActivityBellL :: Lens' Config Bool
+ Matterhorn.Types: configActivityNotifyCommandL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configAspellDictionaryL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configChannelListOrientationL :: Lens' Config ChannelListOrientation
+ Matterhorn.Types: configChannelListWidthL :: Lens' Config Int
+ Matterhorn.Types: configCpuUsagePolicyL :: Lens' Config CPUUsagePolicy
+ Matterhorn.Types: configDateFormatL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configDefaultAttachmentPathL :: Lens' Config (Maybe FilePath)
+ Matterhorn.Types: configDirectChannelExpirationDaysL :: Lens' Config Int
+ Matterhorn.Types: configEnableAspellL :: Lens' Config Bool
+ Matterhorn.Types: configHostL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configHyperlinkingModeL :: Lens' Config Bool
+ Matterhorn.Types: configLogMaxBufferSizeL :: Lens' Config Int
+ Matterhorn.Types: configPassL :: Lens' Config (Maybe PasswordSource)
+ Matterhorn.Types: configPortL :: Lens' Config Int
+ Matterhorn.Types: configShowBackgroundL :: Lens' Config BackgroundInfo
+ Matterhorn.Types: configShowChannelListL :: Lens' Config Bool
+ Matterhorn.Types: configShowExpandedChannelTopicsL :: Lens' Config Bool
+ Matterhorn.Types: configShowMessagePreviewL :: Lens' Config Bool
+ Matterhorn.Types: configShowMessageTimestampsL :: Lens' Config Bool
+ Matterhorn.Types: configShowOlderEditsL :: Lens' Config Bool
+ Matterhorn.Types: configShowTypingIndicatorL :: Lens' Config Bool
+ Matterhorn.Types: configSmartBacktickL :: Lens' Config Bool
+ Matterhorn.Types: configSmartEditingL :: Lens' Config Bool
+ Matterhorn.Types: configSyntaxDirsL :: Lens' Config [FilePath]
+ Matterhorn.Types: configTeamL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configThemeCustomizationFileL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configThemeL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configTimeFormatL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configTokenL :: Lens' Config (Maybe TokenSource)
+ Matterhorn.Types: configURLOpenCommandInteractiveL :: Lens' Config Bool
+ Matterhorn.Types: configURLOpenCommandL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configUnsafeUseHTTPL :: Lens' Config Bool
+ Matterhorn.Types: configUrlPathL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configUserKeysL :: Lens' Config KeyConfig
+ Matterhorn.Types: configUserL :: Lens' Config (Maybe Text)
+ Matterhorn.Types: configValidateServerCertificateL :: Lens' Config Bool
+ Matterhorn.Types: csCurrentTeam :: Lens' ChatState TeamState
+ Matterhorn.Types: csCurrentTeamId :: SimpleGetter ChatState TeamId
+ Matterhorn.Types: csInputHistory :: Lens' ChatState InputHistory
+ Matterhorn.Types: csTeam :: TeamId -> Lens' ChatState TeamState
+ Matterhorn.Types: csTeamZipper :: Lens' ChatState (Zipper () TeamId)
+ Matterhorn.Types: csTeams :: Lens' ChatState (HashMap TeamId TeamState)
+ Matterhorn.Types: data TeamState
+ Matterhorn.Types: emptyHSet :: HighlightSet
+ Matterhorn.Types: mhHandleEventLensed' :: Lens' ChatState b -> (b -> EventM Name b) -> MH ()
+ Matterhorn.Types: mkTeamZipper :: HashMap TeamId TeamState -> Zipper () TeamId
+ Matterhorn.Types: mkTeamZipperFromIds :: [TeamId] -> Zipper () TeamId
+ Matterhorn.Types: moveLeft :: Eq a => a -> [a] -> [a]
+ Matterhorn.Types: moveRight :: Eq a => a -> [a] -> [a]
+ Matterhorn.Types: newTeamState :: Team -> Zipper ChannelListGroup ChannelListEntry -> Maybe (Aspell, IO ()) -> TeamState
+ Matterhorn.Types: nonDMChannelListGroupUnread :: ChannelListGroup -> Int
+ Matterhorn.Types: refreshTeamZipper :: MH ()
+ Matterhorn.Types: sortTeams :: [Team] -> [Team]
+ Matterhorn.Types: teamZipperIds :: Zipper () TeamId -> [TeamId]
+ Matterhorn.Types: tsChannelListOverlay :: Lens' TeamState (ListOverlayState Channel ChannelSearchScope)
+ Matterhorn.Types: tsChannelSelectState :: Lens' TeamState ChannelSelectState
+ Matterhorn.Types: tsChannelTopicDialog :: Lens' TeamState ChannelTopicDialogState
+ Matterhorn.Types: tsEditState :: Lens' TeamState ChatEditState
+ Matterhorn.Types: tsFocus :: Lens' TeamState (Zipper ChannelListGroup ChannelListEntry)
+ Matterhorn.Types: tsMessageSelect :: Lens' TeamState MessageSelectState
+ Matterhorn.Types: tsMode :: Lens' TeamState Mode
+ Matterhorn.Types: tsNotifyPrefs :: Lens' TeamState (Maybe (Form ChannelNotifyProps MHEvent Name))
+ Matterhorn.Types: tsPendingChannelChange :: Lens' TeamState (Maybe PendingChannelChange)
+ Matterhorn.Types: tsPostListOverlay :: Lens' TeamState PostListOverlayState
+ Matterhorn.Types: tsReactionEmojiListOverlay :: Lens' TeamState (ListOverlayState (Bool, Text) ())
+ Matterhorn.Types: tsRecentChannel :: Lens' TeamState (Maybe ChannelId)
+ Matterhorn.Types: tsReturnChannel :: Lens' TeamState (Maybe ChannelId)
+ Matterhorn.Types: tsTeam :: Lens' TeamState Team
+ Matterhorn.Types: tsThemeListOverlay :: Lens' TeamState (ListOverlayState InternalTheme ())
+ Matterhorn.Types: tsUrlList :: Lens' TeamState (List Name LinkChoice)
+ Matterhorn.Types: tsUserListOverlay :: Lens' TeamState (ListOverlayState UserInfo UserSearchScope)
+ Matterhorn.Types: tsViewedMessage :: Lens' TeamState (Maybe (Message, TabbedWindow ViewMessageWindowTab))
+ Matterhorn.Types: userPrefTeamOrder :: Lens' UserPreferences (Maybe [TeamId])
+ Matterhorn.Types.Channels: [_cdTeamId] :: ChannelInfo -> Maybe TeamId
+ Matterhorn.Types.Channels: allTeamIds :: ClientChannels -> [TeamId]
+ Matterhorn.Types.Channels: cdTeamId :: Lens' ChannelInfo (Maybe TeamId)
+ Matterhorn.Types.Channels: instance GHC.Base.Monoid (Matterhorn.Types.Channels.AllMyChannels Matterhorn.Types.Channels.ClientChannel)
+ Matterhorn.Types.Channels: instance GHC.Base.Semigroup (Matterhorn.Types.Channels.AllMyChannels Matterhorn.Types.Channels.ClientChannel)
+ Matterhorn.Types.KeyEvents: MoveCurrentTeamLeftEvent :: KeyEvent
+ Matterhorn.Types.KeyEvents: MoveCurrentTeamRightEvent :: KeyEvent
+ Matterhorn.Types.KeyEvents: NextTeamEvent :: KeyEvent
+ Matterhorn.Types.KeyEvents: PrevTeamEvent :: KeyEvent
+ Matterhorn.Types.RichText: Blocks :: Seq Block -> Blocks
+ Matterhorn.Types.RichText: BulletList :: !Char -> ListType
+ Matterhorn.Types.RichText: Decimal :: EnumeratorType
+ Matterhorn.Types.RichText: ECode :: Inlines -> Inline
+ Matterhorn.Types.RichText: EEmph :: Inlines -> Inline
+ Matterhorn.Types.RichText: EStrikethrough :: Inlines -> Inline
+ Matterhorn.Types.RichText: EStrong :: Inlines -> Inline
+ Matterhorn.Types.RichText: Inlines :: Seq Inline -> Inlines
+ Matterhorn.Types.RichText: LooseList :: ListSpacing
+ Matterhorn.Types.RichText: LowerAlpha :: EnumeratorType
+ Matterhorn.Types.RichText: LowerRoman :: EnumeratorType
+ Matterhorn.Types.RichText: OneParen :: DelimiterType
+ Matterhorn.Types.RichText: OrderedList :: !Int -> !EnumeratorType -> !DelimiterType -> ListType
+ Matterhorn.Types.RichText: TightList :: ListSpacing
+ Matterhorn.Types.RichText: TwoParens :: DelimiterType
+ Matterhorn.Types.RichText: UpperAlpha :: EnumeratorType
+ Matterhorn.Types.RichText: UpperRoman :: EnumeratorType
+ Matterhorn.Types.RichText: data Block
+ Matterhorn.Types.RichText: data DelimiterType
+ Matterhorn.Types.RichText: data EnumeratorType
+ Matterhorn.Types.RichText: data Inline
+ Matterhorn.Types.RichText: data ListSpacing
+ Matterhorn.Types.RichText: instance Commonmark.Extensions.Strikethrough.HasStrikethrough Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance Commonmark.Types.HasAttributes Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance Commonmark.Types.HasAttributes Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance Commonmark.Types.IsBlock Matterhorn.Types.RichText.Inlines Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance Commonmark.Types.IsInline Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance Commonmark.Types.Rangeable Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance Commonmark.Types.Rangeable Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance GHC.Base.Monoid Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance GHC.Base.Monoid Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance GHC.Base.Semigroup Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance GHC.Base.Semigroup Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.Inline
+ Matterhorn.Types.RichText: instance GHC.Classes.Eq Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.Inline
+ Matterhorn.Types.RichText: instance GHC.Classes.Ord Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.Block
+ Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.Blocks
+ Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.Inline
+ Matterhorn.Types.RichText: instance GHC.Show.Show Matterhorn.Types.RichText.Inlines
+ Matterhorn.Types.RichText: newtype Blocks
+ Matterhorn.Types.RichText: newtype Inlines
+ Matterhorn.Types.RichText: sameBlockType :: Block -> Block -> Bool
+ Matterhorn.Types.RichText: unBlocks :: Blocks -> Seq Block
+ Matterhorn.Types.RichText: unInlines :: Inlines -> Seq Inline
- Matterhorn.Draw.RichText: findVerbatimChunk :: Seq RichTextBlock -> Maybe Text
+ Matterhorn.Draw.RichText: findVerbatimChunk :: Blocks -> Maybe Text
- Matterhorn.Draw.RichText: renderRichText :: Text -> HighlightSet -> Maybe Int -> Bool -> Seq RichTextBlock -> Widget a
+ Matterhorn.Draw.RichText: renderRichText :: Text -> HighlightSet -> Maybe Int -> Bool -> Blocks -> Widget a
- Matterhorn.Prelude: (&) :: () => a -> (a -> b) -> b
+ Matterhorn.Prelude: (&) :: a -> (a -> b) -> b
- Matterhorn.Prelude: (^.) :: () => s -> Getting a s a -> a
+ Matterhorn.Prelude: (^.) :: s -> Getting a s a -> a
- Matterhorn.Prelude: catMaybes :: () => [Maybe a] -> [a]
+ Matterhorn.Prelude: catMaybes :: [Maybe a] -> [a]
- Matterhorn.Prelude: fromMaybe :: () => a -> Maybe a -> a
+ Matterhorn.Prelude: fromMaybe :: a -> Maybe a -> a
- Matterhorn.Prelude: intercalate :: () => [a] -> [[a]] -> [a]
+ Matterhorn.Prelude: intercalate :: [a] -> [[a]] -> [a]
- Matterhorn.Prelude: isJust :: () => Maybe a -> Bool
+ Matterhorn.Prelude: isJust :: Maybe a -> Bool
- Matterhorn.Prelude: isNothing :: () => Maybe a -> Bool
+ Matterhorn.Prelude: isNothing :: Maybe a -> Bool
- Matterhorn.Prelude: listToMaybe :: () => [a] -> Maybe a
+ Matterhorn.Prelude: listToMaybe :: [a] -> Maybe a
- Matterhorn.Prelude: maybeToList :: () => Maybe a -> [a]
+ Matterhorn.Prelude: maybeToList :: Maybe a -> [a]
- Matterhorn.State.Common: installMessagesFromPosts :: Posts -> MH Messages
+ Matterhorn.State.Common: installMessagesFromPosts :: Maybe TeamId -> Posts -> MH Messages
- Matterhorn.State.Common: updatePostMap :: Posts -> MH ()
+ Matterhorn.State.Common: updatePostMap :: Maybe TeamId -> Posts -> MH ()
- Matterhorn.State.Editing: handleInputSubmission :: ChannelId -> Text -> MH ()
+ Matterhorn.State.Editing: handleInputSubmission :: TeamId -> ChannelId -> Text -> MH ()
- Matterhorn.Types: AttachmentFileBrowser :: Name
+ Matterhorn.Types: AttachmentFileBrowser :: TeamId -> Name
- Matterhorn.Types: AttachmentList :: Name
+ Matterhorn.Types: AttachmentList :: TeamId -> Name
- Matterhorn.Types: ChangeByChannelId :: ChannelId -> Maybe (MH ()) -> PendingChannelChange
+ Matterhorn.Types: ChangeByChannelId :: TeamId -> ChannelId -> Maybe (MH ()) -> PendingChannelChange
- Matterhorn.Types: ChannelList :: Name
+ Matterhorn.Types: ChannelList :: TeamId -> Name
- Matterhorn.Types: ChannelMentionsField :: Name
+ Matterhorn.Types: ChannelMentionsField :: TeamId -> Name
- Matterhorn.Types: ChannelSelectInput :: Name
+ Matterhorn.Types: ChannelSelectInput :: TeamId -> Name
- Matterhorn.Types: ChannelSelectString :: Name
+ Matterhorn.Types: ChannelSelectString :: TeamId -> Name
- Matterhorn.Types: ChannelSidebar :: Name
+ Matterhorn.Types: ChannelSidebar :: TeamId -> Name
- Matterhorn.Types: ChannelTopicCancelButton :: Name
+ Matterhorn.Types: ChannelTopicCancelButton :: TeamId -> Name
- Matterhorn.Types: ChannelTopicEditor :: Name
+ Matterhorn.Types: ChannelTopicEditor :: TeamId -> Name
- Matterhorn.Types: ChannelTopicEditorPreview :: Name
+ Matterhorn.Types: ChannelTopicEditorPreview :: TeamId -> Name
- Matterhorn.Types: ChannelTopicSaveButton :: Name
+ Matterhorn.Types: ChannelTopicSaveButton :: TeamId -> Name
- Matterhorn.Types: CompletionAlternatives :: Name
+ Matterhorn.Types: CompletionAlternatives :: TeamId -> Name
- Matterhorn.Types: CompletionList :: Name
+ Matterhorn.Types: CompletionList :: TeamId -> Name
- Matterhorn.Types: DesktopNotificationsField :: WithDefault NotifyOption -> Name
+ Matterhorn.Types: DesktopNotificationsField :: TeamId -> WithDefault NotifyOption -> Name
- Matterhorn.Types: JoinChannelList :: Name
+ Matterhorn.Types: JoinChannelList :: TeamId -> Name
- Matterhorn.Types: JoinChannelListSearchInput :: Name
+ Matterhorn.Types: JoinChannelListSearchInput :: TeamId -> Name
- Matterhorn.Types: MessageInput :: Name
+ Matterhorn.Types: MessageInput :: TeamId -> Name
- Matterhorn.Types: MessagePreviewViewport :: Name
+ Matterhorn.Types: MessagePreviewViewport :: TeamId -> Name
- Matterhorn.Types: MessageReactionsArea :: Name
+ Matterhorn.Types: MessageReactionsArea :: TeamId -> Name
- Matterhorn.Types: MuteToggleField :: Name
+ Matterhorn.Types: MuteToggleField :: TeamId -> Name
- Matterhorn.Types: PushNotificationsField :: WithDefault NotifyOption -> Name
+ Matterhorn.Types: PushNotificationsField :: TeamId -> WithDefault NotifyOption -> Name
- Matterhorn.Types: ReactionEmojiList :: Name
+ Matterhorn.Types: ReactionEmojiList :: TeamId -> Name
- Matterhorn.Types: ReactionEmojiListInput :: Name
+ Matterhorn.Types: ReactionEmojiListInput :: TeamId -> Name
- Matterhorn.Types: StartupStateInfo :: ChatResources -> Zipper ChannelListGroup ChannelListEntry -> User -> Team -> TimeZoneSeries -> InputHistory -> Maybe (Aspell, IO ()) -> StartupStateInfo
+ Matterhorn.Types: StartupStateInfo :: ChatResources -> User -> HashMap TeamId TeamState -> TimeZoneSeries -> InputHistory -> TeamId -> StartupStateInfo
- Matterhorn.Types: TabbedWindowTabBar :: Name
+ Matterhorn.Types: TabbedWindowTabBar :: TeamId -> Name
- Matterhorn.Types: ThemeListSearchInput :: Name
+ Matterhorn.Types: ThemeListSearchInput :: TeamId -> Name
- Matterhorn.Types: ThemeListSearchResults :: Name
+ Matterhorn.Types: ThemeListSearchResults :: TeamId -> Name
- Matterhorn.Types: UrlList :: Name
+ Matterhorn.Types: UrlList :: TeamId -> Name
- Matterhorn.Types: UserListSearchInput :: Name
+ Matterhorn.Types: UserListSearchInput :: TeamId -> Name
- Matterhorn.Types: UserListSearchResults :: Name
+ Matterhorn.Types: UserListSearchResults :: TeamId -> Name
- Matterhorn.Types: UserPreferences :: Bool -> Seq FlaggedPost -> HashMap ChannelId Bool -> HashMap UserId Bool -> Maybe TeammateNameDisplayMode -> UserPreferences
+ Matterhorn.Types: UserPreferences :: Bool -> Seq FlaggedPost -> HashMap ChannelId Bool -> HashMap UserId Bool -> Maybe TeammateNameDisplayMode -> Maybe [TeamId] -> UserPreferences
- Matterhorn.Types: ViewMessageArea :: Name
+ Matterhorn.Types: ViewMessageArea :: TeamId -> Name
- Matterhorn.Types: ViewMessageReactionsArea :: Name
+ Matterhorn.Types: ViewMessageReactionsArea :: TeamId -> Name
- Matterhorn.Types: csCurrentChannelId :: SimpleGetter ChatState ChannelId
+ Matterhorn.Types: csCurrentChannelId :: TeamId -> SimpleGetter ChatState ChannelId
- Matterhorn.Types: emptyChannelSelectState :: ChannelSelectState
+ Matterhorn.Types: emptyChannelSelectState :: TeamId -> ChannelSelectState
- Matterhorn.Types: emptyEditState :: InputHistory -> Maybe (Aspell, IO ()) -> IO ChatEditState
+ Matterhorn.Types: emptyEditState :: TeamId -> ChatEditState
- Matterhorn.Types: getServerBaseUrl :: MH TeamBaseURL
+ Matterhorn.Types: getServerBaseUrl :: TeamId -> MH TeamBaseURL
- Matterhorn.Types: listOverlayEnterHandler :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (a_a1cHC -> MH Bool)
+ Matterhorn.Types: listOverlayEnterHandler :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (a_a102Y -> MH Bool)
- Matterhorn.Types: listOverlayFetchResults :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (b_a1cHD -> Session -> Text -> IO (Vector a_a1cHC))
+ Matterhorn.Types: listOverlayFetchResults :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (b_a102Z -> Session -> Text -> IO (Vector a_a102Y))
- Matterhorn.Types: listOverlayNewList :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (Vector a_a1cHC -> List Name a_a1cHC)
+ Matterhorn.Types: listOverlayNewList :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (Vector a_a102Y -> List Name a_a102Y)
- Matterhorn.Types: listOverlayRecordCount :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (Maybe Int)
+ Matterhorn.Types: listOverlayRecordCount :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (Maybe Int)
- Matterhorn.Types: listOverlayReturnMode :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) Mode
+ Matterhorn.Types: listOverlayReturnMode :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) Mode
- Matterhorn.Types: listOverlaySearchInput :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (Editor Text Name)
+ Matterhorn.Types: listOverlaySearchInput :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (Editor Text Name)
- Matterhorn.Types: listOverlaySearchResults :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) (List Name a_a1cHC)
+ Matterhorn.Types: listOverlaySearchResults :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) (List Name a_a102Y)
- Matterhorn.Types: listOverlaySearchScope :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) b_a1cHD
+ Matterhorn.Types: listOverlaySearchScope :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) b_a102Z
- Matterhorn.Types: listOverlaySearching :: forall a_a1cHC b_a1cHD. Lens' (ListOverlayState a_a1cHC b_a1cHD) Bool
+ Matterhorn.Types: listOverlaySearching :: forall a_a102Y b_a102Z. Lens' (ListOverlayState a_a102Y b_a102Z) Bool
- Matterhorn.Types: mkChannelZipperList :: UTCTime -> Config -> Maybe ClientConfig -> UserPreferences -> ClientChannels -> Users -> [(ChannelListGroup, [ChannelListEntry])]
+ Matterhorn.Types: mkChannelZipperList :: UTCTime -> Config -> TeamId -> Maybe ClientConfig -> UserPreferences -> ClientChannels -> Users -> [(ChannelListGroup, [ChannelListEntry])]
- Matterhorn.Types: newChannelTopicDialog :: Text -> ChannelTopicDialogState
+ Matterhorn.Types: newChannelTopicDialog :: TeamId -> Text -> ChannelTopicDialogState
- Matterhorn.Types: newState :: StartupStateInfo -> IO ChatState
+ Matterhorn.Types: newState :: StartupStateInfo -> ChatState
- Matterhorn.Types: serverBaseUrl :: ChatState -> TeamBaseURL
+ Matterhorn.Types: serverBaseUrl :: ChatState -> TeamId -> TeamBaseURL
- Matterhorn.Types.Channels: ChannelInfo :: ChannelId -> Maybe ServerTime -> NewMessageIndicator -> Maybe ServerTime -> Int -> ServerTime -> Text -> Text -> Text -> Text -> Type -> ChannelNotifyProps -> TypingUsers -> Maybe UserId -> Maybe UTCTime -> ChannelInfo
+ Matterhorn.Types.Channels: ChannelInfo :: ChannelId -> Maybe TeamId -> Maybe ServerTime -> NewMessageIndicator -> Maybe ServerTime -> Int -> ServerTime -> Text -> Text -> Text -> Text -> Type -> ChannelNotifyProps -> TypingUsers -> Maybe UserId -> Maybe UTCTime -> ChannelInfo
- Matterhorn.Types.Channels: getChannelNameSet :: ClientChannels -> Set Text
+ Matterhorn.Types.Channels: getChannelNameSet :: TeamId -> ClientChannels -> Set Text
- Matterhorn.Types.Messages: LinkChoice :: ServerTime -> UserRef -> Maybe (Seq Element) -> LinkTarget -> LinkChoice
+ Matterhorn.Types.Messages: LinkChoice :: ServerTime -> UserRef -> Maybe Inlines -> LinkTarget -> LinkChoice
- Matterhorn.Types.Messages: Message :: Seq RichTextBlock -> Text -> UserRef -> ServerTime -> MessageType -> Bool -> Bool -> Seq Attachment -> ReplyState -> Maybe MessageId -> Map Text (Set UserId) -> Maybe Post -> Bool -> Bool -> Maybe ChannelId -> Message
+ Matterhorn.Types.Messages: Message :: Blocks -> Text -> UserRef -> ServerTime -> MessageType -> Bool -> Bool -> Seq Attachment -> ReplyState -> Maybe MessageId -> Map Text (Set UserId) -> Maybe Post -> Bool -> Bool -> Maybe ChannelId -> Message
- Matterhorn.Types.Messages: [_mText] :: Message -> Seq RichTextBlock
+ Matterhorn.Types.Messages: [_mText] :: Message -> Blocks
- Matterhorn.Types.Messages: linkLabel :: Lens' LinkChoice (Maybe (Seq Element))
+ Matterhorn.Types.Messages: linkLabel :: Lens' LinkChoice (Maybe Inlines)
- Matterhorn.Types.Messages: mText :: Lens' Message (Seq RichTextBlock)
+ Matterhorn.Types.Messages: mText :: Lens' Message Blocks
- Matterhorn.Types.Posts: cpText :: Lens' ClientPost (Seq RichTextBlock)
+ Matterhorn.Types.Posts: cpText :: Lens' ClientPost Blocks
- Matterhorn.Types.Posts: toClientPost :: TeamBaseURL -> Post -> Maybe PostId -> ClientPost
+ Matterhorn.Types.Posts: toClientPost :: Maybe TeamBaseURL -> Post -> Maybe PostId -> ClientPost
- Matterhorn.Types.RichText: Blockquote :: Seq RichTextBlock -> RichTextBlock
+ Matterhorn.Types.RichText: Blockquote :: Blocks -> Block
- Matterhorn.Types.RichText: CodeBlock :: CodeBlockInfo -> Text -> RichTextBlock
+ Matterhorn.Types.RichText: CodeBlock :: CodeBlockInfo -> Text -> Block
- Matterhorn.Types.RichText: EChannel :: Text -> ElementData
+ Matterhorn.Types.RichText: EChannel :: Text -> Inline
- Matterhorn.Types.RichText: EEditSentinel :: Bool -> ElementData
+ Matterhorn.Types.RichText: EEditSentinel :: Bool -> Inline
- Matterhorn.Types.RichText: EEmoji :: Text -> ElementData
+ Matterhorn.Types.RichText: EEmoji :: Text -> Inline
- Matterhorn.Types.RichText: EHyperlink :: URL -> Maybe (Seq Element) -> ElementData
+ Matterhorn.Types.RichText: EHyperlink :: URL -> Inlines -> Inline
- Matterhorn.Types.RichText: EImage :: URL -> Maybe (Seq Element) -> ElementData
+ Matterhorn.Types.RichText: EImage :: URL -> Inlines -> Inline
- Matterhorn.Types.RichText: ELineBreak :: ElementData
+ Matterhorn.Types.RichText: ELineBreak :: Inline
- Matterhorn.Types.RichText: ENonBreaking :: Seq Element -> ElementData
+ Matterhorn.Types.RichText: ENonBreaking :: Inlines -> Inline
- Matterhorn.Types.RichText: EPermalink :: TeamURLName -> PostId -> Maybe (Seq Element) -> ElementData
+ Matterhorn.Types.RichText: EPermalink :: TeamURLName -> PostId -> Maybe Inlines -> Inline
- Matterhorn.Types.RichText: ERawHtml :: Text -> ElementData
+ Matterhorn.Types.RichText: ERawHtml :: Text -> Inline
- Matterhorn.Types.RichText: ESoftBreak :: ElementData
+ Matterhorn.Types.RichText: ESoftBreak :: Inline
- Matterhorn.Types.RichText: ESpace :: ElementData
+ Matterhorn.Types.RichText: ESpace :: Inline
- Matterhorn.Types.RichText: EText :: Text -> ElementData
+ Matterhorn.Types.RichText: EText :: Text -> Inline
- Matterhorn.Types.RichText: EUser :: Text -> ElementData
+ Matterhorn.Types.RichText: EUser :: Text -> Inline
- Matterhorn.Types.RichText: HRule :: RichTextBlock
+ Matterhorn.Types.RichText: HRule :: Block
- Matterhorn.Types.RichText: HTMLBlock :: Text -> RichTextBlock
+ Matterhorn.Types.RichText: HTMLBlock :: Text -> Block
- Matterhorn.Types.RichText: Header :: Int -> Seq Element -> RichTextBlock
+ Matterhorn.Types.RichText: Header :: Int -> Inlines -> Block
- Matterhorn.Types.RichText: List :: Bool -> ListType -> Seq (Seq RichTextBlock) -> RichTextBlock
+ Matterhorn.Types.RichText: List :: ListType -> ListSpacing -> Seq Blocks -> Block
- Matterhorn.Types.RichText: Para :: Seq Element -> RichTextBlock
+ Matterhorn.Types.RichText: Para :: Inlines -> Block
- Matterhorn.Types.RichText: Period :: NumDecoration
+ Matterhorn.Types.RichText: Period :: DelimiterType
- Matterhorn.Types.RichText: blockGetURLs :: RichTextBlock -> [(Either (TeamURLName, PostId) URL, Maybe (Seq Element))]
+ Matterhorn.Types.RichText: blockGetURLs :: Block -> [(Either (TeamURLName, PostId) URL, Maybe Inlines)]
- Matterhorn.Types.RichText: findUsernames :: Seq RichTextBlock -> Set Text
+ Matterhorn.Types.RichText: findUsernames :: Blocks -> Set Text
- Matterhorn.Types.RichText: findVerbatimChunk :: Seq RichTextBlock -> Maybe Text
+ Matterhorn.Types.RichText: findVerbatimChunk :: Blocks -> Maybe Text
- Matterhorn.Types.RichText: parseMarkdown :: Maybe TeamBaseURL -> Text -> Seq RichTextBlock
+ Matterhorn.Types.RichText: parseMarkdown :: Maybe TeamBaseURL -> Text -> Blocks
- Matterhorn.Windows.ViewMessage: viewMessageWindowTemplate :: TabbedWindowTemplate ViewMessageWindowTab
+ Matterhorn.Windows.ViewMessage: viewMessageWindowTemplate :: TeamId -> TabbedWindowTemplate ViewMessageWindowTab

Files

CHANGELOG.md view
@@ -1,4 +1,54 @@ +50200.12.0+==========++New features:+ * Matterhorn now supports multiple teams! This includes a number of UI+   changes:+   * Matterhorn no longer prompts for a team on startup.+   * If the configuration file sets `team`, Matterhorn will attempt to+     honor that by selecting that as the active team on startup.+     If the configuration does not specify the `team` setting, the+     initially-selected team is chosen as the first team after sorting+     the team list alphabetically.+   * The window title now reflects the sum of all unread channels in all+     teams, rather than the number of unread channels in the current+     team.+   * If the user is a member of more than one team, the list of teams+     will be displayed at the top of the window with the active team+     highlighted. Each team with unread channels will display the count+     of unread channels next to the team name and teams with unread+     channels will be highlighted. This change comes with a new theme+     attribute, `currentTeam`, to style the selected team in the list.+   * The current team selection can be changed with new keybindings:+     * `next-team` (default binding: `C-Right`)+     * `prev-team` (default binding: `C-Left`)+   * The team list can be reordered manually. In the official web+     client, the team list can be reordered by dragging and dropping+     the team icons; in Matterhorn, this can be done by using two new+     commands, `/move-team-left` and `/move-team-right`, respectively.+     New keybindings to do the same thing were also added:+     * `move-current-team-left` (unbound by default)+     * `move-current-team-right` (unbound by default)+ * The new `/rename-channel-url` command renames the current channel's+   URL name. This differs from the server command `/rename`, which+   renames the current channel's display name. Renaming the URL name+   with this command is equivalent to changing the value of the "URL"+   field in the "Rename Channel" dialog box in the official web client.+   (thanks to Ajay Eeralla for this work)++Other improvements:+ * The channel list now takes up the full window height. Previously+   the message editor and input preview were displayed across the entire+   screen; now those areas stop at the channel list, so the channel list+   gets a few more rows of space to display channels.+ * Matterhorn now parses all incoming Markdown text with the Haskell+   `commonmark` library. Migrating to `commonmark` improved our support+   for many Markdown extensions and improved how Matterhorn handles some+   Markdown syntax.+ * The syntax highlighting XML files in `syntax/` were updated from+   version 0.10.0.3 of the `skylighting` package.+ 50200.11.0 ========== @@ -60,7 +110,7 @@      (`~`)    * Channel mute status (`(m)`)    * Unread status and visual style- * When composing replies, Mattehorn now displays the threat root+ * When composing replies, Mattehorn now displays the thread root    message of the thread being replied to, rather than the message    the user selected for reply (#670). This is intended to be less    surprising than the old behavior since showing the root post in the
README.md view
@@ -49,6 +49,7 @@ # Features  * Channel creation, deletion, and membership management commands+* Support for multiple teams * Optimized channel-switching modes: `M-a`, `M-s`, and `C-g` * Message posting, editing, replying, and deletion * Markdown rendering
docs/commands.md view
@@ -25,6 +25,8 @@ | `/log-stop` | Stop logging | | `/members` | Show the current channel's members | | `/message-preview` | Toggle preview of the current message |+| `/move-team-left` | Move the currently-selected team to the left in the team list |+| `/move-team-right` | Move the currently-selected team to the right in the team list | | `/msg` | Search for a user to enter a private chat | | `/msg <@user>` | Chat with the specified user | | `/msg <@user> <message or command>` | Go to a user's channel and send the specified message or command |@@ -33,6 +35,7 @@ | `/quit` | Exit Matterhorn | | `/reconnect` | Force a reconnection attempt to the server | | `/remove-user <@user>` | Remove a user from the current channel |+| `/rename-channel-url <channel name>` | Rename the current channel's URL name | | `/right` | Focus on the next channel | | `/search <terms>` | Search for posts with given terms | | `/sh` | List the available shell scripts |
docs/keybindings.md view
@@ -24,6 +24,10 @@ | `M-p` | `toggle-message-preview` | Toggle message preview | | `F2` | `toggle-channel-list-visibility` | Toggle channel list visibility | | `F3` | `toggle-expanded-channel-topics` | Toggle display of expanded channel topics |+| `C-Right` | `next-team` | Switch to the next available team |+| `C-Left` | `prev-team` | Switch to the previous available team |+| (unbound) | `move-current-team-left` | Move the current team to the left in the team list |+| (unbound) | `move-current-team-right` | Move the current team to the right in the team list | | `M-k` | `invoke-editor` | Invoke `$EDITOR` to edit the current message | | `C-g` | `enter-fast-select` | Enter fast channel selection mode | | `C-q` | `quit` | Quit |@@ -37,7 +41,7 @@ | `C-p` | `focus-prev-channel` | Change to the previous channel in the channel list | | `M-a` | `focus-next-unread` | Change to the next channel with unread messages or return to the channel marked '~' | | `C-x` | `show-attachment-list` | Show the attachment list |-| `(unbound)` | focus-next-unread-user-or-channel | Change to the next channel with unread messages preferring direct messages |+| (unbound) | `focus-next-unread-user-or-channel` | Change to the next channel with unread messages preferring direct messages | | `M-s` | `focus-last-channel` | Change to the most recently-focused channel | | `Enter` | (non-customizable key) | Send the current message | | `C-o` | `enter-url-open` | Select and open a URL posted to the current channel |
matterhorn.cabal view
@@ -1,5 +1,5 @@ name:                matterhorn-version:             50200.11.0+version:             50200.12.0 synopsis:            Terminal client for the Mattermost chat system description:         This is a terminal client for the Mattermost chat                      system. Please see the README for a list of@@ -63,6 +63,8 @@                        Matterhorn.Draw.PostListOverlay                        Matterhorn.Draw.ReactionEmojiListOverlay                        Matterhorn.Draw.RichText+                       Matterhorn.Draw.RichText.Wrap+                       Matterhorn.Draw.RichText.Flatten                        Matterhorn.Draw.ShowHelp                        Matterhorn.Draw.TabbedWindow                        Matterhorn.Draw.ThemeListOverlay@@ -88,6 +90,7 @@                        Matterhorn.Events.ThemeListOverlay                        Matterhorn.Events.UrlSelect                        Matterhorn.Events.UserListOverlay+                       Matterhorn.Events.Websocket                        Matterhorn.FilePaths                        Matterhorn.HelpTopics                        Matterhorn.IOUtil@@ -101,6 +104,7 @@                        Matterhorn.State.Async                        Matterhorn.State.Attachments                        Matterhorn.State.Autocomplete+                       Matterhorn.State.ChannelList                        Matterhorn.State.ChannelListOverlay                        Matterhorn.State.ChannelSelect                        Matterhorn.State.Channels@@ -121,11 +125,11 @@                        Matterhorn.State.Setup                        Matterhorn.State.Setup.Threads                        Matterhorn.State.Setup.Threads.Logging+                       Matterhorn.State.Teams                        Matterhorn.State.ThemeListOverlay                        Matterhorn.State.UrlSelect                        Matterhorn.State.UserListOverlay                        Matterhorn.State.Users-                       Matterhorn.TeamSelect                        Matterhorn.Themes                        Matterhorn.TimeUtils                        Matterhorn.Types@@ -150,7 +154,7 @@     ghc-options: -fhide-source-paths    build-depends:       base                 >=4.8      && <5-                     , mattermost-api       == 50200.9.0+                     , mattermost-api       == 50200.10.0                      , base-compat          >= 0.9     && < 0.12                      , unordered-containers >= 0.2     && < 0.3                      , containers           >= 0.5.7   && < 0.7@@ -164,9 +168,9 @@                      , config-ini           >= 0.2.2.0 && < 0.3                      , process              >= 1.4     && < 1.7                      , microlens-platform   >= 0.3     && < 0.5-                     , brick                >= 0.57    && < 0.58+                     , brick                >= 0.59    && < 0.60                      , brick-skylighting    >= 0.2     && < 0.4-                     , vty                  >= 5.31    && < 5.32+                     , vty                  >= 5.32    && < 5.33                      , word-wrap            >= 0.4.0   && < 0.5                      , transformers         >= 0.4     && < 0.6                      , text-zipper          >= 0.10    && < 0.11@@ -177,13 +181,15 @@                      , vector               < 0.13                      , strict               >= 0.3     && < 0.4                      , hashable             >= 1.2     && < 1.4-                     , cheapskate           >= 0.1     && < 0.2+                     , commonmark           >= 0.1.1.3 && < 0.2+                     , commonmark-extensions >= 0.2.0.4 && < 0.3+                     , parsec               >= 3.1     && < 3.2                      , utf8-string          >= 1.0     && < 1.1                      , temporary            >= 1.2     && < 1.4                      , gitrev               >= 1.3     && < 1.4                      , Hclip                >= 3.0     && < 3.1                      , mtl                  >= 2.2     && < 2.3-                     , aspell-pipe          >= 0.4     && < 0.5+                     , aspell-pipe          >= 0.6     && < 0.7                      , stm-delay            >= 0.1     && < 0.2                      , unix                 >= 2.7.1.0 && < 2.7.3.0                      , skylighting-core     >= 0.8     && < 0.9@@ -212,7 +218,7 @@ test-suite test_messages   type:               exitcode-stdio-1.0   main-is:            test_messages.hs-  other-modules:      Cheapskate_QCA+  other-modules:      RichText_QCA                     , Message_QCA   default-language:   Haskell2010   default-extensions: OverloadedStrings@@ -229,7 +235,7 @@                     , tasty-hunit          >= 0.9     && < 0.12                     , tasty-quickcheck     >= 0.8     && < 0.12                     , bytestring-                    , cheapskate+                    , commonmark                     , containers                     , matterhorn                     , mattermost-api
src/Matterhorn/App.hs view
@@ -9,6 +9,7 @@  import           Brick import           Control.Monad.Trans.Except ( runExceptT )+import qualified Data.HashMap.Strict as HM import qualified Graphics.Vty as Vty import           Text.Aspell ( stopAspell ) import           GHC.Conc (getNumProcessors, setNumCapabilities)@@ -31,7 +32,7 @@ app :: App ChatState MHEvent Name app = App   { appDraw         = draw-  , appChooseCursor = \s cs -> case appMode s of+  , appChooseCursor = \s cs -> case s^.csCurrentTeam.tsMode of       Main                          -> showFirstCursor s cs       ChannelSelect                 -> showFirstCursor s cs       UserListOverlay               -> showFirstCursor s cs@@ -39,7 +40,8 @@       ChannelListOverlay            -> showFirstCursor s cs       ManageAttachmentsBrowseFiles  -> showFirstCursor s cs       ThemeListOverlay              -> showFirstCursor s cs-      ChannelTopicWindow            -> showCursorNamed ChannelTopicEditor cs+      ChannelTopicWindow            -> let tId = s^.csCurrentTeamId+                                       in showCursorNamed (ChannelTopicEditor tId) cs       LeaveChannelConfirm           -> Nothing       DeleteChannelConfirm          -> Nothing       MessageSelect                 -> Nothing@@ -87,9 +89,10 @@     (st, vty) <- setupState mkVty (optLogLocation opts) config     finalSt <- customMain vty mkVty (Just $ st^.csResources.crEventQueue) app st -    case finalSt^.csEditState.cedSpellChecker of-        Nothing -> return ()-        Just (s, _) -> stopAspell s+    forM_ (HM.elems $ finalSt^.csTeams) $ \ts ->+        case ts^.tsEditState.cedSpellChecker of+            Nothing -> return ()+            Just (s, _) -> stopAspell s      return finalSt @@ -99,11 +102,11 @@   logIfError (mmCloseSession $ getResourceSession $ finalSt^.csResources)       "Error in closing session" -  logIfError (writeHistory (finalSt^.csEditState.cedInputHistory))+  logIfError (writeHistory (finalSt^.csInputHistory))       "Error in writing history" -  logIfError (writeLastRunState finalSt)-      "Error in writing last run state"+  logIfError (writeLastRunStates finalSt)+      "Error in writing last run states"    shutdownLogManager $ finalSt^.csResources.crLogManager 
src/Matterhorn/Command.hs view
@@ -27,6 +27,7 @@ import           Matterhorn.Scripts import           Matterhorn.State.Help import           Matterhorn.State.Editing+import           Matterhorn.State.ChannelList import           Matterhorn.State.Channels import           Matterhorn.State.ChannelTopicWindow import           Matterhorn.State.ChannelSelect@@ -38,6 +39,7 @@ import           Matterhorn.State.Messages import           Matterhorn.State.NotifyPrefs import           Matterhorn.State.Common ( postInfoMessage )+import           Matterhorn.State.Teams import           Matterhorn.State.Users import           Matterhorn.Themes ( attrForUsername ) import           Matterhorn.Types@@ -97,58 +99,59 @@   [ Cmd "quit" "Exit Matterhorn" NoArg $ \ () -> requestQuit    , Cmd "right" "Focus on the next channel" NoArg $ \ () ->-      nextChannel+        nextChannel    , Cmd "left" "Focus on the previous channel" NoArg $ \ () ->-      prevChannel+        prevChannel    , Cmd "create-channel" "Create a new public channel"     (LineArg "channel name") $ \ name ->-      createOrdinaryChannel True name+        createOrdinaryChannel True name    , Cmd "create-private-channel" "Create a new private channel"     (LineArg "channel name") $ \ name ->-      createOrdinaryChannel False name+        createOrdinaryChannel False name    , Cmd "delete-channel" "Delete the current channel"     NoArg $ \ () ->-      beginCurrentChannelDeleteConfirm+        beginCurrentChannelDeleteConfirm    , Cmd "hide" "Hide the current DM or group channel from the channel list"     NoArg $ \ () -> do-      hideDMChannel =<< use csCurrentChannelId+        tId <- use csCurrentTeamId+        hideDMChannel =<< use (csCurrentChannelId tId)    , Cmd "reconnect" "Force a reconnection attempt to the server"     NoArg $ \ () ->-      connectWebsockets+        connectWebsockets    , Cmd "members" "Show the current channel's members"     NoArg $ \ () ->-      enterChannelMembersUserList+        enterChannelMembersUserList    , Cmd "leave" "Leave a normal channel or hide a DM channel" NoArg $ \ () ->-      startLeaveCurrentChannel+        startLeaveCurrentChannel    , Cmd "join" "Find a channel to join" NoArg $ \ () ->-      enterChannelListOverlayMode+        enterChannelListOverlayMode    , Cmd "join" "Join the specified channel" (ChannelArg NoArg) $ \(n, ()) ->-      joinChannelByName n+        joinChannelByName n    , Cmd "theme" "List the available themes" NoArg $ \ () ->-      enterThemeListMode+        enterThemeListMode    , Cmd "theme" "Set the color theme"     (TokenArg "theme" NoArg) $ \ (themeName, ()) ->-      setTheme themeName+        setTheme themeName    , Cmd "topic" "Set the current channel's topic (header) interactively"     NoArg $ \ () ->-      openChannelTopicWindow+        openChannelTopicWindow    , Cmd "topic" "Set the current channel's topic (header)"     (LineArg "topic") $ \ p ->-      if not (T.null p) then setChannelTopic p else return ()+        if not (T.null p) then setChannelTopic p else return ()    , Cmd "add-user" "Search for a user to add to the current channel"     NoArg $ \ () ->@@ -170,8 +173,9 @@     (UserArg $ LineArg "message or command") $ \ (name, msg) -> do         withFetchedUserMaybe (UserFetchByUsername name) $ \foundUser -> do             case foundUser of-                Just user -> createOrFocusDMChannel user $ Just $ \cId ->-                    handleInputSubmission cId msg+                Just user -> createOrFocusDMChannel user $ Just $ \cId -> do+                    tId <- use csCurrentTeamId+                    handleInputSubmission tId cId msg                 Nothing -> mhError $ NoSuchUser name    , Cmd "log-start" "Begin logging debug information to the specified path"@@ -240,28 +244,38 @@               Just topic -> showHelpScreen topic    , Cmd "sh" "List the available shell scripts" NoArg $ \ () ->-      listScripts+        listScripts    , Cmd "group-msg" "Create a group chat"-    (LineArg (userSigil <> "user [" <> userSigil <> "user ...]")) createGroupChannel+    (LineArg (userSigil <> "user [" <> userSigil <> "user ...]"))+        createGroupChannel    , Cmd "sh" "Run a prewritten shell script"     (TokenArg "script" (LineArg "message")) $ \ (script, text) -> do-        cId <- use csCurrentChannelId+        tId <- use csCurrentTeamId+        cId <- use (csCurrentChannelId tId)         findAndRunScript cId script text    , Cmd "flags" "Open a window of your flagged posts" NoArg $ \ () ->-      enterFlaggedPostListMode+        enterFlaggedPostListMode    , Cmd "pinned-posts" "Open a window of this channel's pinned posts" NoArg $ \ () ->-      enterPinnedPostListMode+        enterPinnedPostListMode    , Cmd "search" "Search for posts with given terms" (LineArg "terms") $-      enterSearchResultPostListMode+        enterSearchResultPostListMode    , Cmd "notify-prefs" "Edit the current channel's notification preferences" NoArg $ \_ ->-          enterEditNotifyPrefsMode+        enterEditNotifyPrefsMode +  , Cmd "rename-channel-url" "Rename the current channel's URL name" (TokenArg "channel name" NoArg) $ \ (name, _) ->+        renameChannelUrl name++  , Cmd "move-team-left" "Move the currently-selected team to the left in the team list" NoArg $ \_ ->+        moveCurrentTeamLeft++  , Cmd "move-team-right" "Move the currently-selected team to the right in the team list" NoArg $ \_ ->+        moveCurrentTeamRight   ]  displayUsernameAttribute :: Text -> MH ()@@ -273,10 +287,10 @@  execMMCommand :: Text -> Text -> MH () execMMCommand name rest = do-  cId      <- use csCurrentChannelId+  tId      <- use csCurrentTeamId+  cId      <- use (csCurrentChannelId tId)   session  <- getSession-  em       <- use (csEditState.cedEditMode)-  tId      <- gets myTeamId+  em       <- use (csCurrentTeam.tsEditState.cedEditMode)   let mc = MM.MinCommand              { MM.minComChannelId = cId              , MM.minComCommand   = "/" <> name <> " " <> rest@@ -335,4 +349,4 @@ toggleMessagePreview :: MH () toggleMessagePreview = do     mh invalidateCache-    csShowMessagePreview %= not+    csResources.crConfiguration.configShowMessagePreviewL %= not
src/Matterhorn/Constants.hs view
@@ -4,14 +4,19 @@   , numScrollbackPosts   , previewMaxHeight   , normalChannelSigil+  , normalChannelSigilChar   , userSigil+  , userSigilChar+  , editMarking   ) where  import Prelude () import Matterhorn.Prelude +import qualified Data.Text as T + -- | The number of rows to consider a "page" when scrolling pageAmount :: Int pageAmount = 15@@ -29,7 +34,16 @@  -- Sigils normalChannelSigil :: Text-normalChannelSigil = "~"+normalChannelSigil = T.singleton normalChannelSigilChar +normalChannelSigilChar :: Char+normalChannelSigilChar = '~'+ userSigil :: Text-userSigil = "@"+userSigil = T.singleton userSigilChar++userSigilChar :: Char+userSigilChar = '@'++editMarking :: Text+editMarking = "(edited)"
src/Matterhorn/Draw.hs view
@@ -27,7 +27,7 @@  draw :: ChatState -> [Widget Name] draw st =-    case appMode st of+    case st^.csCurrentTeam.tsMode of         Main                         -> mainLayers         UrlSelect                    -> mainLayers         ChannelSelect                -> mainLayers@@ -49,4 +49,4 @@     where         mainLayers = drawMain True st         mainLayersMonochrome = drawMain False st-        messageViewWindow = st^.csViewedMessage.singular _Just._2+        messageViewWindow = st^.csCurrentTeam.tsViewedMessage.singular _Just._2
src/Matterhorn/Draw/Autocomplete.hs view
@@ -24,7 +24,7 @@  autocompleteLayer :: ChatState -> Widget Name autocompleteLayer st =-    case st^.csEditState.cedAutocomplete of+    case st^.csCurrentTeam.tsEditState.cedAutocomplete of         Nothing ->             emptyWidget         Just ac ->@@ -64,7 +64,7 @@        else Widget Greedy Greedy $ do            ctx <- getContext            let rowOffset = ctx^.availHeightL - 3 - editorOffset - visibleHeight-               editorOffset = if st^.csEditState.cedEphemeral.eesMultiline+               editorOffset = if st^.csCurrentTeam.tsEditState.cedEphemeral.eesMultiline                               then multilineHeightLimit                               else 0            render $ translateBy (Location (0, rowOffset)) $
src/Matterhorn/Draw/ChannelList.hs view
@@ -66,21 +66,22 @@         selfHeader = hCenter $                      colorUsername myUsername_ myUsername_                          (T.singleton statusSigil <> " " <> userSigil <> myUsername_)-        teamNameStr = sanitizeUserText $ MM.teamDisplayName $ st^.csMyTeam+        teamNameStr = T.strip $ sanitizeUserText $ MM.teamDisplayName $ st^.csCurrentTeam.tsTeam         statusSigil = maybe ' ' userSigilFromInfo me         me = userById (myUserId st) st         unreadCountHeader = hCenter $ txt $ "Unread: " <> (T.pack $ show unreadCount)-        unreadCount = sum $ (channelListGroupUnread . fst) <$> Z.toList (st^.csFocus)+        unreadCount = sum $ (channelListGroupUnread . fst) <$> Z.toList (st^.csCurrentTeam.tsFocus)  renderChannelList :: ChatState -> Widget Name renderChannelList st =-    viewport ChannelList Vertical body+    viewport (ChannelList tId) Vertical body     where         myUsername_ = myUsername st         renderEntry s e = renderChannelListEntry myUsername_ $ mkChannelEntryData s e-        body = case appMode st of+        tId = st^.csCurrentTeamId+        body = case st^.csCurrentTeam.tsMode of             ChannelSelect ->-                let zipper = st^.csChannelSelectState.channelSelectMatches+                let zipper = st^.csCurrentTeam.tsChannelSelectState.channelSelectMatches                     matches = if Z.isEmpty zipper                               then [hCenter $ txt "No matches"]                               else (renderChannelListGroup st@@ -90,10 +91,10 @@                    renderChannelListHeader st :                    matches             _ ->-                cached ChannelSidebar $+                cached (ChannelSidebar tId) $                 vBox $                 renderChannelListHeader st :-                (renderChannelListGroup st renderEntry <$> Z.toList (st^.csFocus))+                (renderChannelListGroup st renderEntry <$> Z.toList (st^.csCurrentTeam.tsFocus))  renderChannelListGroupHeading :: ChannelListGroup -> Widget Name renderChannelListGroupHeading g =
src/Matterhorn/Draw/ChannelListOverlay.hs view
@@ -21,7 +21,7 @@  drawChannelListOverlay :: ChatState -> Widget Name drawChannelListOverlay st =-    let overlay = drawListOverlay (st^.csChannelListOverlay) channelSearchScopeHeader+    let overlay = drawListOverlay (st^.csCurrentTeam.tsChannelListOverlay) channelSearchScopeHeader                                   channelSearchScopeNoResults channelSearchScopePrompt                                   renderChannel                                   Nothing
src/Matterhorn/Draw/ChannelTopicWindow.hs view
@@ -32,23 +32,24 @@            withFocusRing foc (renderEditor drawTopicEditorTxt) ed          , hBorderWithLabel (withDefAttr clientEmphAttr $ txt "Preview")          , vLimit previewHeight $-           viewport ChannelTopicEditorPreview Vertical $+           viewport (ChannelTopicEditorPreview tId) Vertical $            renderText' (Just baseUrl) "" hSet topicTxtWithCursor          , hBorder          , hBox [ padRight Max $                   padLeft (Pad 1) $-                  drawButton foc ChannelTopicSaveButton "Save"+                  drawButton foc (ChannelTopicSaveButton tId) "Save"                 , padRight (Pad 1) $-                  drawButton foc ChannelTopicCancelButton "Cancel"+                  drawButton foc (ChannelTopicCancelButton tId) "Cancel"                 ]          ]     where-        baseUrl = serverBaseUrl st+        baseUrl = serverBaseUrl st tId+        tId = st^.csCurrentTeamId         editorHeight = 5         previewHeight = 5         maxWindowWidth = 70-        foc = st^.csChannelTopicDialog.channelTopicDialogFocus-        ed = st^.csChannelTopicDialog.channelTopicDialogEditor+        foc = st^.csCurrentTeam.tsChannelTopicDialog.channelTopicDialogFocus+        ed = st^.csCurrentTeam.tsChannelTopicDialog.channelTopicDialogEditor         hSet = getHighlightSet st         topicTxtWithCursor = T.unlines $                              getEditContents $
src/Matterhorn/Draw/Main.hs view
@@ -12,6 +12,7 @@ import           Brick.Widgets.Edit ( editContentsL, renderEditor, getEditContents ) import           Control.Arrow ( (>>>) ) import           Data.Char ( isSpace, isPunctuation )+import qualified Data.Foldable as F import           Data.List ( intersperse ) import qualified Data.Map as M import qualified Data.Sequence as Seq@@ -24,7 +25,8 @@ import           Lens.Micro.Platform ( (.~), (^?!), to, view, folding )  import           Network.Mattermost.Types ( ChannelId, Type(Direct, Private, Group)-                                          , ServerTime(..), UserId+                                          , ServerTime(..), UserId, TeamId, teamDisplayName+                                          , teamId                                           )  @@ -41,8 +43,11 @@ import           Matterhorn.Themes import           Matterhorn.TimeUtils ( justAfter, justBefore ) import           Matterhorn.Types+import           Matterhorn.Types.Common ( sanitizeUserText )+import           Matterhorn.Types.DirectionalSeq ( emptyDirSeq ) import           Matterhorn.Types.RichText ( parseMarkdown, TeamBaseURL ) import           Matterhorn.Types.KeyEvents+import qualified Matterhorn.Zipper as Z   previewFromInput :: TeamBaseURL -> Maybe MessageType -> UserId -> Text -> Maybe Message@@ -93,14 +98,14 @@ drawEditorContents :: ChatState -> HighlightSet -> [Text] -> Widget Name drawEditorContents st hs =     let noHighlight = txt . T.unlines-    in case st^.csEditState.cedSpellChecker of+    in case st^.csCurrentTeam.tsEditState.cedSpellChecker of         Nothing -> noHighlight         Just _ ->-            case S.null (st^.csEditState.cedMisspellings) of+            case S.null (st^.csCurrentTeam.tsEditState.cedMisspellings) of                 True -> noHighlight                 False -> doHighlightMisspellings                            hs-                           (st^.csEditState.cedMisspellings)+                           (st^.csCurrentTeam.tsEditState.cedMisspellings)  -- | This function takes a set of misspellings from the spell -- checker, the editor lines, and builds a rendering of the text with@@ -224,24 +229,25 @@  renderUserCommandBox :: ChatState -> HighlightSet -> Widget Name renderUserCommandBox st hs =-    let prompt = txt $ case st^.csEditState.cedEditMode of+    let prompt = txt $ case st^.csCurrentTeam.tsEditState.cedEditMode of             Replying _ _ -> "reply> "             Editing _ _  ->  "edit> "             NewPost      ->      "> "-        inputBox = renderEditor (drawEditorContents st hs) True (st^.csEditState.cedEditor)-        curContents = getEditContents $ st^.csEditState.cedEditor+        tId = st^.csCurrentTeamId+        inputBox = renderEditor (drawEditorContents st hs) True (st^.csCurrentTeam.tsEditState.cedEditor)+        curContents = getEditContents $ st^.csCurrentTeam.tsEditState.cedEditor         multilineContent = length curContents > 1         multilineHints =             hBox [ borderElem bsHorizontal                  , str $ "[" <> (show $ (+1) $ fst $ cursorPosition $-                                        st^.csEditState.cedEditor.editContentsL) <>+                                        st^.csCurrentTeam.tsEditState.cedEditor.editContentsL) <>                          "/" <> (show $ length curContents) <> "]"                  , hBorderWithLabel $ withDefAttr clientEmphAttr $                    txt $ "In multi-line mode. Press " <> multiLineToggleKey <>                          " to finish."                  ] -        replyDisplay = case st^.csEditState.cedEditMode of+        replyDisplay = case st^.csCurrentTeam.tsEditState.cedEditMode of             Replying msg _ ->                 let msgWithoutParent = msg & mInReplyToMsg .~ NotAReply                 in hBox [ replyArrow@@ -266,7 +272,7 @@          multiLineToggleKey = ppBinding $ getFirstDefaultBinding ToggleMultiLineEvent -        commandBox = case st^.csEditState.cedEphemeral.eesMultiline of+        commandBox = case st^.csCurrentTeam.tsEditState.cedEphemeral.eesMultiline of             False ->                 let linesStr = "line" <> if numLines == 1 then "" else "s"                     numLines = length curContents@@ -277,7 +283,7 @@                                          "; Enter: send, " <> T.unpack multiLineToggleKey <>                                          ": edit, Backspace: cancel] "                                  , txt $ head curContents-                                 , showCursor MessageInput (Location (0,0)) $ str " "+                                 , showCursor (MessageInput tId) (Location (0,0)) $ str " "                                  ]                             else [inputBox]             True -> vLimit multilineHeightLimit inputBox <=> multilineHints@@ -310,7 +316,7 @@             _ -> ""         maybeTopic = if T.null topicStr                      then ""-                     else " - " <> if st^.csShowExpandedChannelTopics+                     else " - " <> if st^.csResources.crConfiguration.configShowExpandedChannelTopicsL                                    then topicStr                                    else firstTopicLine         channelNameString = case chnType of@@ -326,7 +332,8 @@                 channelNamePair         channelNamePair = chanName <> " - " <> (chan^.ccInfo.cdDisplayName)         chanName = mkChannelName st (chan^.ccInfo)-        baseUrl = serverBaseUrl st+        tId = st^.csCurrentTeamId+        baseUrl = serverBaseUrl st tId      in renderText' (Just baseUrl) (myUsername st)          hs@@ -336,7 +343,7 @@ renderCurrentChannelDisplay st hs = header <=> hBorder <=> messages     where     header =-        if st^.csShowChannelList+        if st^.csResources.crConfiguration.configShowChannelListL         then channelHeader         else headerWithStatus @@ -366,7 +373,7 @@                 headerWidget = Widget Fixed Fixed $ return channelHeaderResult                 borderWidget = vLimit maxHeight vBorder -            render $ if appMode st == ChannelSelect+            render $ if st^.csCurrentTeam.tsMode == ChannelSelect                         then headerWidget                         else hBox $ case st^.csChannelListOrientation of                             ChannelListLeft ->@@ -387,11 +394,11 @@      messages = padTop Max chatText -    chatText = case appMode st of+    chatText = case st^.csCurrentTeam.tsMode of         MessageSelect ->-            renderMessagesWithSelect (st^.csMessageSelect) channelMessages+            renderMessagesWithSelect (st^.csCurrentTeam.tsMessageSelect) channelMessages         MessageSelectDeleteConfirm ->-            renderMessagesWithSelect (st^.csMessageSelect) channelMessages+            renderMessagesWithSelect (st^.csCurrentTeam.tsMessageSelect) channelMessages         _ ->             cached (ChannelMessages cId) $             renderLastMessages st hs editCutoff $@@ -422,15 +429,51 @@      cutoff = getNewMessageCutoff cId st     editCutoff = getEditedMessageCutoff cId st+    messageListing = getMessageListing cId st     channelMessages =-        insertTransitions (getMessageListing cId st)-                          cutoff-                          (getDateFormat st)-                          (st ^. timeZone)+        -- If the channel is empty, add an informative message to the+        -- message listing to make it explicit that this channel does+        -- not yet have any messages.+        if F.null messageListing+        then addMessage (emptyChannelFillerMessage st cId) emptyDirSeq+        else insertTransitions messageListing+                               cutoff+                               (getDateFormat st)+                               (st ^. timeZone) -    cId = st^.csCurrentChannelId+    tId = st^.csCurrentTeamId+    cId = st^.(csCurrentChannelId tId)     chan = st^.csCurrentChannel +-- | Construct a single message to be displayed in the specified channel+-- when it does not yet have any user messages posted to it.+emptyChannelFillerMessage :: ChatState -> ChannelId -> Message+emptyChannelFillerMessage st cId =+    newMessageOfType msg (C Informative) ts+    where+        -- This is a bogus timestamp, but its value does not matter+        -- because it is only used to create a message that will be+        -- shown in a channel with no date transitions (which would+        -- otherwise include this bogus date) or other messages (which+        -- would make for a broken message sorting).+        ts = ServerTime $ UTCTime (toEnum 0) 0+        Just chan = findChannelById cId (st^.csChannels)+        chanName = mkChannelName st (chan^.ccInfo)+        msg = case chan^.ccInfo.cdType of+            Direct ->+                let u = chan^.ccInfo.cdDMUserId >>= flip userById st+                in case u of+                    Nothing -> userMsg Nothing+                    Just _ -> userMsg (Just chanName)+            Group ->+                groupMsg (chan^.ccInfo.cdDisplayName)+            _ ->+                chanMsg chanName+        userMsg (Just cn) = "You have not yet sent any direct messages to " <> cn <> "."+        userMsg Nothing   = "You have not yet sent any direct messages to this user."+        groupMsg us = "There are not yet any direct messages in the group " <> us <> "."+        chanMsg cn = "There are not yet any messages in the " <> cn <> " channel."+ getMessageListing :: ChannelId -> ChatState -> Messages getMessageListing cId st =     st ^?! csChannels.folding (findChannelById cId) . ccContents . cdMessages . to (filterMessages isShown)@@ -456,7 +499,7 @@  renderChannelSelectPrompt :: ChatState -> Widget Name renderChannelSelectPrompt st =-    let e = st^.csChannelSelectState.channelSelectInput+    let e = st^.csCurrentTeam.tsChannelSelectState.channelSelectInput     in withDefAttr channelSelectPromptAttr $        (txt "Switch to channel [use ^ and $ to anchor]: ") <+>        (renderEditor (txt . T.concat) True e)@@ -470,6 +513,35 @@            , joinBorders $ mainInterface st            ] +teamList :: ChatState -> Widget Name+teamList st =+    let curTid = st^.csCurrentTeamId+        z = st^.csTeamZipper+        teams = (\tId -> st^.csTeam(tId)) <$> (concat $ snd <$> Z.toList z)+        entries = mkEntry <$> teams+        mkEntry ts =+            let tId = teamId $ _tsTeam ts+                unread = uCount > 0+                uCount = unreadCount tId+            in (if tId == curTid+                   then visible . withDefAttr currentTeamAttr+                   else if unread+                        then withDefAttr unreadChannelAttr+                        else id) $+               txt $+               (T.strip $ sanitizeUserText $ teamDisplayName $ _tsTeam ts)+        unreadCount tId = sum $ fmap (nonDMChannelListGroupUnread . fst) $+                          Z.toList $ st^.csTeam(tId).tsFocus+    in if length teams == 1+       then emptyWidget+       else vBox [ hBox [ padRight (Pad 1) $ txt "Teams:"+                        , vLimit 1 $ viewport TeamList Horizontal $+                          hBox $+                          intersperse (txt " ") entries+                        ]+                 , hBorder+                 ]+ connectionLayer :: ChatState -> Widget Name connectionLayer st =     case st^.csConnectionStatus of@@ -504,7 +576,7 @@                 hasVerb = isJust (findVerbatimChunk (postMsg^.mText))                 -- make sure these keybinding pieces are up-to-date!                 ev e =-                  let keyconf = st^.csResources.crConfiguration.to configUserKeys+                  let keyconf = st^.csResources.crConfiguration.configUserKeysL                       KeyHandlerMap keymap = messageSelectKeybindings keyconf                   in T.intercalate ","                        [ ppBinding (eventToBinding k)@@ -575,21 +647,22 @@                     , hBorder                     ] -maybePreviewViewport :: Widget Name -> Widget Name-maybePreviewViewport w =+maybePreviewViewport :: TeamId -> Widget Name -> Widget Name+maybePreviewViewport tId w =     Widget Greedy Fixed $ do         result <- render w         case (Vty.imageHeight $ result^.imageL) > previewMaxHeight of             False -> return result             True ->-                render $ vLimit previewMaxHeight $ viewport MessagePreviewViewport Vertical $+                render $ vLimit previewMaxHeight $ viewport (MessagePreviewViewport tId) Vertical $                          (Widget Fixed Fixed $ return result)  inputPreview :: ChatState -> HighlightSet -> Widget Name-inputPreview st hs | not $ st^.csShowMessagePreview = emptyWidget+inputPreview st hs | not $ st^.csResources.crConfiguration.configShowMessagePreviewL = emptyWidget                    | otherwise = thePreview     where     uId = myUserId st+    tId = st^.csCurrentTeamId     -- Insert a cursor sentinel into the input text just before     -- rendering the preview. We use the inserted sentinel (which is     -- not rendered) to get brick to ensure that the line the cursor is@@ -600,12 +673,12 @@     -- end of whatever line the user is editing, that is very unlikely     -- to be a problem.     curContents = getText $ (gotoEOL >>> insertChar cursorSentinel) $-                  st^.csEditState.cedEditor.editContentsL+                  st^.csCurrentTeam.tsEditState.cedEditor.editContentsL     curStr = T.intercalate "\n" curContents-    overrideTy = case st^.csEditState.cedEditMode of+    overrideTy = case st^.csCurrentTeam.tsEditState.cedEditMode of         Editing _ ty -> Just ty         _ -> Nothing-    baseUrl = serverBaseUrl st+    baseUrl = serverBaseUrl st tId     previewMsg = previewFromInput baseUrl overrideTy uId curStr     thePreview = let noPreview = str "(No preview)"                      msgPreview = case previewMsg of@@ -629,12 +702,12 @@                                   , mdMyUsername        = myUsername st                                   , mdWrapNonhighlightedCodeBlocks = True                                   }-                 in (maybePreviewViewport msgPreview) <=>+                 in (maybePreviewViewport tId msgPreview) <=>                     hBorderWithLabel (withDefAttr clientEmphAttr $ str "[Preview ↑]")  userInputArea :: ChatState -> HighlightSet -> Widget Name userInputArea st hs =-    case appMode st of+    case st^.csCurrentTeam.tsMode of         ChannelSelect -> renderChannelSelectPrompt st         UrlSelect     -> hCenter $ hBox [ txt "Press "                                         , withDefAttr clientEmphAttr $ txt "Enter"@@ -651,13 +724,13 @@  mainInterface :: ChatState -> Widget Name mainInterface st =-    vBox [ body-         , bottomBorder-         , inputPreview st hs-         , userInputArea st hs+    vBox [ teamList st+         , body          ]     where-    body = if st^.csShowChannelList || appMode st == ChannelSelect+    showChannelList = st^.csResources.crConfiguration.configShowChannelListL ||+                      st^.csCurrentTeam.tsMode == ChannelSelect+    body = if showChannelList            then case st^.csChannelListOrientation of                ChannelListLeft ->                    hBox [channelList, vBorder, mainDisplay]@@ -667,11 +740,17 @@     channelList = hLimit channelListWidth (renderChannelList st)     hs = getHighlightSet st     channelListWidth = configChannelListWidth $ st^.csResources.crConfiguration-    mainDisplay = case appMode st of+    mainDisplay =+        vBox [ channelContents+             , bottomBorder+             , inputPreview st hs+             , userInputArea st hs+             ]+    channelContents = case st^.csCurrentTeam.tsMode of         UrlSelect -> renderUrlList st         _         -> maybeSubdue $ renderCurrentChannelDisplay st hs -    bottomBorder = case appMode st of+    bottomBorder = case st^.csCurrentTeam.tsMode of         MessageSelect -> messageSelectBottomBar st         _ -> maybeSubdue $ hBox              [ showAttachmentCount@@ -681,7 +760,7 @@              ]      showAttachmentCount =-        let count = length $ listElements $ st^.csEditState.cedAttachmentList+        let count = length $ listElements $ st^.csCurrentTeam.tsEditState.cedAttachmentList         in if count == 0            then emptyWidget            else hBox [ borderElem bsHorizontal@@ -709,7 +788,7 @@                  Just Nothing -> hLimit 2 hBorder <+> txt "*"                  Nothing -> emptyWidget -    maybeSubdue = if appMode st == ChannelSelect+    maybeSubdue = if st^.csCurrentTeam.tsMode == ChannelSelect                   then forceAttr ""                   else id 
src/Matterhorn/Draw/ManageAttachments.hs view
@@ -23,7 +23,7 @@ drawManageAttachments st =     topLayer     where-        topLayer = case appMode st of+        topLayer = case st^.csCurrentTeam.tsMode of             ManageAttachments -> drawAttachmentList st             ManageAttachmentsBrowseFiles -> drawFileBrowser st             _ -> error "BUG: drawManageAttachments called in invalid mode"@@ -39,7 +39,7 @@        vLimit 15 $        joinBorders $        borderWithLabel (withDefAttr clientEmphAttr $ txt "Attachments") $-       vBox [ renderList renderAttachmentItem True (st^.csEditState.cedAttachmentList)+       vBox [ renderList renderAttachmentItem True (st^.csCurrentTeam.tsEditState.cedAttachmentList)             , hBorder             , hCenter $ withDefAttr clientMessageAttr $                         txt $ addBinding <> ":add " <>@@ -61,4 +61,4 @@     -- invariant: cedFileBrowser is not Nothing if appMode is     -- ManageAttachmentsBrowseFiles, and that is the only way to reach     -- this code, ergo the fromJust.-    FB.renderFileBrowser True $ fromJust (st^.csEditState.cedFileBrowser)+    FB.renderFileBrowser True $ fromJust (st^.csCurrentTeam.tsEditState.cedFileBrowser)
src/Matterhorn/Draw/Messages.hs view
@@ -1,9 +1,14 @@+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} module Matterhorn.Draw.Messages-  ( nameForUserRef+  ( MessageData(..)+  , renderMessage+  , nameForUserRef   , renderSingleMessage   , unsafeRenderMessageSelection   , renderLastMessages+  , addEllipsis   ) where @@ -11,8 +16,18 @@ import           Brick.Widgets.Border import           Control.Monad.Trans.Reader ( withReaderT ) import qualified Data.Foldable as F-import qualified Graphics.Vty as Vty+import qualified Data.Map.Strict as Map+import qualified Data.Sequence as S+import           Data.Sequence ( ViewL(..)+                               , ViewR(..)+                               , (|>)+                               , viewl+                               , viewr)+import qualified Data.Set as Set+import qualified Data.Text as T+import qualified Graphics.Vty as V import           Lens.Micro.Platform ( (.~), to )+import           Network.Mattermost.Lenses ( postEditAtL, postCreateAtL ) import           Network.Mattermost.Types ( ServerTime(..), userUsername ) import           Prelude () import           Matterhorn.Prelude@@ -21,6 +36,7 @@ import           Matterhorn.Draw.RichText import           Matterhorn.Themes import           Matterhorn.Types+import           Matterhorn.Types.RichText import           Matterhorn.Types.DirectionalSeq  maxMessageHeight :: Int@@ -124,23 +140,23 @@         upperHeight = targetHeight `div` 2         lowerHeight = targetHeight - upperHeight -        lowerRender img (m, tState) = render1HLimit doMsgRender Vty.vertJoin targetHeight img tState m-        upperRender img (m, tState) = render1HLimit doMsgRender (flip Vty.vertJoin) targetHeight img tState m+        lowerRender img (m, tState) = render1HLimit doMsgRender V.vertJoin targetHeight img tState m+        upperRender img (m, tState) = render1HLimit doMsgRender (flip V.vertJoin) targetHeight img tState m -    lowerHalf <- foldM lowerRender Vty.emptyImage after-    upperHalf <- foldM upperRender Vty.emptyImage before+    lowerHalf <- foldM lowerRender V.emptyImage after+    upperHalf <- foldM upperRender V.emptyImage before -    let curHeight = Vty.imageHeight $ curMsgResult^.imageL-        uncropped = upperHalf Vty.<-> curMsgResult^.imageL Vty.<-> lowerHalf-        img = if | Vty.imageHeight lowerHalf < (lowerHeight - curHeight) ->-                     Vty.cropTop targetHeight uncropped-                 | Vty.imageHeight upperHalf < upperHeight ->-                     Vty.cropBottom targetHeight uncropped+    let curHeight = V.imageHeight $ curMsgResult^.imageL+        uncropped = upperHalf V.<-> curMsgResult^.imageL V.<-> lowerHalf+        img = if | V.imageHeight lowerHalf < (lowerHeight - curHeight) ->+                     V.cropTop targetHeight uncropped+                 | V.imageHeight upperHalf < upperHeight ->+                     V.cropBottom targetHeight uncropped                  | otherwise ->-                     Vty.cropTop upperHeight upperHalf Vty.<-> curMsgResult^.imageL Vty.<->+                     V.cropTop upperHeight upperHalf V.<-> curMsgResult^.imageL V.<->                         (if curHeight < lowerHeight-                          then Vty.cropBottom (lowerHeight - curHeight) lowerHalf-                          else Vty.cropBottom lowerHeight lowerHalf)+                          then V.cropBottom (lowerHeight - curHeight) lowerHalf+                          else V.cropBottom lowerHeight lowerHalf)     return $ emptyResult & imageL .~ img  renderLastMessages :: ChatState@@ -159,51 +175,253 @@              isBelow m transition = m^.mDate > transition^.mDate -            go :: Vty.Image -> DirectionalSeq Retrograde (Message, ThreadState) -> RenderM Name Vty.Image+            go :: V.Image -> DirectionalSeq Retrograde (Message, ThreadState) -> RenderM Name V.Image             go img ms | messagesLength ms == 0 = return img             go img ms = do                 let Just (m, threadState) = messagesHead ms                     newMessagesAbove = maybe False (isBelow m) newMessageTransition-                newImg <- render1HLimit doMsgRender (flip Vty.vertJoin) targetHeight img threadState m+                newImg <- render1HLimit doMsgRender (flip V.vertJoin) targetHeight img threadState m                 -- If the new message fills the window, check whether                 -- there is still a "New Messages" transition that is                 -- not displayed. If there is, then we need to replace                 -- the top line of the new image with a "New Messages"                 -- indicator.-                if Vty.imageHeight newImg >= targetHeight && newMessagesAbove+                if V.imageHeight newImg >= targetHeight && newMessagesAbove                 then do                     transitionResult <- render $ withDefAttr newMessageTransitionAttr $                                                  hBorderWithLabel (txt "New Messages ↑")-                    let newImg2 = Vty.vertJoin (transitionResult^.imageL)-                                               (Vty.cropTop (targetHeight - 1) newImg)+                    let newImg2 = V.vertJoin (transitionResult^.imageL)+                                               (V.cropTop (targetHeight - 1) newImg)                     return newImg2                 else go newImg $ messagesDrop 1 ms -        img <- go Vty.emptyImage msgs-        return $ emptyResult & imageL .~ (Vty.cropTop targetHeight img)+        img <- go V.emptyImage msgs+        return $ emptyResult & imageL .~ (V.cropTop targetHeight img)  relaxHeight :: Context -> Context relaxHeight c = c & availHeightL .~ (max maxMessageHeight (c^.availHeightL))  render1HLimit :: (Message -> ThreadState -> Widget Name)-              -> (Vty.Image -> Vty.Image -> Vty.Image)+              -> (V.Image -> V.Image -> V.Image)               -> Int-              -> Vty.Image+              -> V.Image               -> ThreadState               -> Message-              -> RenderM Name Vty.Image+              -> RenderM Name V.Image render1HLimit doMsgRender fjoin lim img threadState msg-  | Vty.imageHeight img >= lim = return img+  | V.imageHeight img >= lim = return img   | otherwise = fjoin img <$> render1 doMsgRender threadState msg  render1 :: (Message -> ThreadState -> Widget Name)         -> ThreadState         -> Message-        -> RenderM Name Vty.Image+        -> RenderM Name V.Image render1 doMsgRender threadState msg = case msg^.mDeleted of-    True -> return Vty.emptyImage+    True -> return V.emptyImage     False -> do         r <- withReaderT relaxHeight $              render $ padRight Max $              doMsgRender msg threadState         return $ r^.imageL++-- | A bundled structure that includes all the information necessary+-- to render a given message+data MessageData =+    MessageData { mdEditThreshold :: Maybe ServerTime+                -- ^ If specified, any messages edited before this point+                -- in time are not indicated as edited.+                , mdShowOlderEdits :: Bool+                -- ^ Indicates whether "edited" markers should be shown+                -- for old messages (i.e., ignore the mdEditThreshold+                -- value).+                , mdShowReactions :: Bool+                -- ^ Whether to render reactions.+                , mdMessage :: Message+                -- ^ The message to render.+                , mdUserName :: Maybe Text+                -- ^ The username of the message's author, if any. This+                -- is passed here rather than obtaining from the message+                -- because we need to do lookups in the ChatState to+                -- compute this, and we don't pass the ChatState into+                -- renderMessage.+                , mdParentMessage :: Maybe Message+                -- ^ The parent message of this message, if any.+                , mdParentUserName :: Maybe Text+                -- ^ The author of the parent message, if any.+                , mdThreadState :: ThreadState+                -- ^ The thread state of this message.+                , mdRenderReplyParent :: Bool+                -- ^ Whether to render the parent message.+                , mdHighlightSet :: HighlightSet+                -- ^ The highlight set to use to highlight usernames,+                -- channel names, etc.+                , mdIndentBlocks :: Bool+                -- ^ Whether to indent the message underneath the+                -- author's name (True) or just display it to the right+                -- of the author's name (False).+                , mdMessageWidthLimit :: Maybe Int+                -- ^ A width override to use to wrap non-code blocks+                -- and code blocks without syntax highlighting. If+                -- unspecified, all blocks in the message will be+                -- wrapped and truncated at the width specified by the+                -- rendering context. If specified, all non-code blocks+                -- will be wrapped at this width and highlighted code+                -- blocks will be rendered using the context's width.+                , mdMyUsername :: Text+                -- ^ The username of the user running Matterhorn.+                , mdWrapNonhighlightedCodeBlocks :: Bool+                -- ^ Whether to wrap text in non-highlighted code+                -- blocks.+                }++-- | renderMessage performs markdown rendering of the specified message.+renderMessage :: MessageData -> Widget Name+renderMessage md@MessageData { mdMessage = msg, .. } =+    let msgUsr = case mdUserName of+          Just u -> if omittedUsernameType (msg^.mType) then Nothing else Just u+          Nothing -> Nothing+        botElem = if isBotMessage msg then txt "[BOT]" else emptyWidget+        nameElems = case msgUsr of+          Just un+            | isEmote msg ->+                [ withDefAttr pinnedMessageIndicatorAttr $ txt $ if msg^.mPinned then "[PIN]" else ""+                , txt $ (if msg^.mFlagged then "[!] " else "") <> "*"+                , colorUsername mdMyUsername un un+                , botElem+                , txt " "+                ]+            | otherwise ->+                [ withDefAttr pinnedMessageIndicatorAttr $ txt $ if msg^.mPinned then "[PIN] " else ""+                , colorUsername mdMyUsername un un+                , botElem+                , txt $ (if msg^.mFlagged then "[!]" else "") <> ": "+                ]+          Nothing -> []++        -- Use the editing threshold to determine whether to append an+        -- editing indication to this message.+        maybeAugment bs = case msg^.mOriginalPost of+            Nothing -> bs+            Just p ->+                if p^.postEditAtL > p^.postCreateAtL+                then case mdEditThreshold of+                    Just cutoff | p^.postEditAtL >= cutoff ->+                        addEditSentinel (EEditSentinel True) bs+                    _ -> if mdShowOlderEdits+                         then addEditSentinel (EEditSentinel False) bs+                         else bs+                else bs++        augmentedText = unBlocks $ maybeAugment $ msg^.mText+        msgWidget =+            vBox $ (layout mdHighlightSet mdMessageWidthLimit nameElems augmentedText . viewl) augmentedText :+                   catMaybes [msgAtch, msgReac]+        replyIndent = Widget Fixed Fixed $ do+            ctx <- getContext+            -- NB: The amount subtracted here must be the total padding+            -- added below (pad 1 + vBorder)+            w <- render $ hLimit (ctx^.availWidthL - 2) msgWidget+            render $ vLimit (V.imageHeight $ w^.imageL) $+                padRight (Pad 1) vBorder <+> (Widget Fixed Fixed $ return w)+        msgAtch = if S.null (msg^.mAttachments)+          then Nothing+          else Just $ withDefAttr clientMessageAttr $ vBox+                 [ txt ("  [attached: `" <> a^.attachmentName <> "`]")+                 | a <- toList (msg^.mAttachments)+                 ]+        msgReac = if Map.null (msg^.mReactions) || (not mdShowReactions)+          then Nothing+          else let renderR e us =+                       let n = Set.size us+                       in if | n == 1    -> " [" <> e <> "]"+                             | n > 1     -> " [" <> e <> " " <> T.pack (show n) <> "]"+                             | otherwise -> ""+                   reactionMsg = Map.foldMapWithKey renderR (msg^.mReactions)+               in Just $ withDefAttr emojiAttr $ txt ("   " <> reactionMsg)+        withParent p =+            case mdThreadState of+                NoThread -> msgWidget+                InThreadShowParent -> p <=> replyIndent+                InThread -> replyIndent+    in if not mdRenderReplyParent+       then msgWidget+       else case msg^.mInReplyToMsg of+          NotAReply -> msgWidget+          InReplyTo _ ->+              case mdParentMessage of+                  Nothing -> withParent (str "[loading...]")+                  Just pm ->+                      let parentMsg = renderMessage md+                            { mdShowOlderEdits    = False+                            , mdMessage           = pm+                            , mdUserName          = mdParentUserName+                            , mdParentMessage     = Nothing+                            , mdRenderReplyParent = False+                            , mdIndentBlocks      = False+                            }+                      in withParent (addEllipsis $ forceAttr replyParentAttr parentMsg)++    where+        layout :: HighlightSet -> Maybe Int -> [Widget Name] -> Seq Block+               -> ViewL Block -> Widget Name+        layout hs w nameElems bs xs | length xs > 1     = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs (Blockquote {} :< _) = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs (CodeBlock {} :< _)  = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs (HTMLBlock {} :< _)  = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs (List {} :< _)       = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs (Para inlns :< _)+            | F.any breakCheck (unInlines inlns)      = multiLnLayout hs w nameElems bs+        layout hs w nameElems bs _                    = nameNextToMessage hs w nameElems bs++        multiLnLayout hs w nameElems bs =+            if mdIndentBlocks+               then vBox [ hBox nameElems+                         , hBox [txt "  ", renderRichText mdMyUsername hs ((subtract 2) <$> w)+                                                 mdWrapNonhighlightedCodeBlocks (Blocks bs)]+                         ]+               else nameNextToMessage hs w nameElems bs++        nameNextToMessage hs w nameElems bs =+            Widget Fixed Fixed $ do+                nameResult <- render $ hBox nameElems+                let newW = subtract (V.imageWidth (nameResult^.imageL)) <$> w+                render $ hBox [ raw (nameResult^.imageL)+                              , renderRichText mdMyUsername hs newW mdWrapNonhighlightedCodeBlocks (Blocks bs)+                              ]++        breakCheck i = i `elem` [ELineBreak, ESoftBreak]++-- Add the edit sentinel to the end of the last block in the sequence.+-- If the last block is a paragraph, append it to that paragraph.+-- Otherwise, append a new block so it appears beneath the last+-- block-level element.+addEditSentinel :: Inline -> Blocks -> Blocks+addEditSentinel d (Blocks bs) =+    case viewr bs of+        EmptyR -> Blocks bs+        (rest :> b) -> Blocks rest <> appendEditSentinel d b++appendEditSentinel :: Inline -> Block -> Blocks+appendEditSentinel sentinel b =+    let s = Para (Inlines $ S.singleton sentinel)+    in Blocks $ case b of+        Para is -> S.singleton $ Para (Inlines $ unInlines is |> ESpace |> sentinel)+        _ -> S.fromList [b, s]++omittedUsernameType :: MessageType -> Bool+omittedUsernameType = \case+    CP Join -> True+    CP Leave -> True+    CP TopicChange -> True+    _ -> False++addEllipsis :: Widget a -> Widget a+addEllipsis w = Widget (hSize w) (vSize w) $ do+    ctx <- getContext+    let aw = ctx^.availWidthL+    result <- render w+    let withEllipsis = (hLimit (aw - 3) $ vLimit 1 $ (Widget Fixed Fixed $ return result)) <+>+                       str "..."+    if (V.imageHeight (result^.imageL) > 1) || (V.imageWidth (result^.imageL) == aw) then+        render withEllipsis else+        return result
src/Matterhorn/Draw/NotifyPrefs.hs view
@@ -19,7 +19,7 @@  drawNotifyPrefs :: ChatState -> Widget Name drawNotifyPrefs st =-    let Just form = st^.csNotifyPrefs+    let Just form = st^.csCurrentTeam.tsNotifyPrefs         label = forceAttr clientEmphAttr $ str "Notification Preferences"         formKeys = withDefAttr clientEmphAttr <$> txt <$> ["Tab", "BackTab"]         bindings = vBox $ hCenter <$> [ renderKeybindingHelp "Save" [FormSubmitEvent] <+> txt "  " <+>
src/Matterhorn/Draw/PostListOverlay.hs view
@@ -54,7 +54,7 @@             else " (" <> (T.pack . show . length) messages <> "): " <> terms          messages = insertDateMarkers-                     (filterMessages knownChannel $ st^.csPostListOverlay.postListPosts)+                     (filterMessages knownChannel $ st^.csCurrentTeam.tsPostListOverlay.postListPosts)                      (getDateFormat st)                      (st^.timeZone) @@ -100,7 +100,7 @@         -- The full message list, rendered with the current selection         renderedMessageList =           let (s, (before, after)) = splitDirSeqOn matchesMessage messagesWithStates-              matchesMessage (m, _) = m^.mMessageId == (MessagePostId <$> st^.csPostListOverlay.postListSelected)+              matchesMessage (m, _) = m^.mMessageId == (MessagePostId <$> st^.csCurrentTeam.tsPostListOverlay.postListSelected)               messagesWithStates = (, InThreadShowParent) <$> messages           in case s of             Nothing ->
src/Matterhorn/Draw/ReactionEmojiListOverlay.hs view
@@ -17,7 +17,7 @@  drawReactionEmojiListOverlay :: ChatState -> Widget Name drawReactionEmojiListOverlay st =-    let overlay = drawListOverlay (st^.csReactionEmojiListOverlay)+    let overlay = drawListOverlay (st^.csCurrentTeam.tsReactionEmojiListOverlay)                                   (const $ txt "Search Emoji")                                   (const $ txt "No matching emoji found.")                                   (const $ txt "Search emoji:")
src/Matterhorn/Draw/RichText.hs view
@@ -1,17 +1,11 @@-{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE ParallelListComp #-}-{-# LANGUAGE RecordWildCards #-} module Matterhorn.Draw.RichText-  ( MessageData(..)-  , renderRichText-  , renderMessage+  ( renderRichText   , renderText   , renderText'-  , renderElementSeq   , cursorSentinel-  , addEllipsis   , findVerbatimChunk   ) where@@ -20,286 +14,67 @@ import           Matterhorn.Prelude  import           Brick ( (<+>), Widget, hLimit, imageL-                       , raw, render, Size(..), Widget(..)+                       , render, Size(..), Widget(..)                        ) import qualified Brick as B import qualified Brick.Widgets.Border as B import qualified Brick.Widgets.Skylighting as BS import           Control.Monad.Reader import qualified Data.Foldable as F-import qualified Data.Map.Strict as Map-import qualified Data.Sequence as Seq+import qualified Data.Sequence as S import           Data.Sequence ( ViewL(..)-                               , ViewR(..)                                , (<|)-                               , (|>)                                , viewl-                               , viewr)-import qualified Data.Sequence as S-import qualified Data.Set as Set+                               ) import qualified Data.Text as T import qualified Graphics.Vty as V import qualified Skylighting.Core as Sky -import           Network.Mattermost.Lenses ( postEditAtL, postCreateAtL )-import           Network.Mattermost.Types ( ServerTime(..), PostId )--import           Matterhorn.Constants ( normalChannelSigil, userSigil )+import           Matterhorn.Constants ( normalChannelSigil, userSigil, editMarking )+import           Matterhorn.Draw.RichText.Flatten+import           Matterhorn.Draw.RichText.Wrap import           Matterhorn.Themes-import           Matterhorn.Types ( Name, HighlightSet(..) )-import           Matterhorn.Types.Messages-import           Matterhorn.Types.Posts+import           Matterhorn.Types ( HighlightSet(..), emptyHSet ) import           Matterhorn.Types.RichText  -emptyHSet :: HighlightSet-emptyHSet = HighlightSet Set.empty Set.empty mempty--omittedUsernameType :: MessageType -> Bool-omittedUsernameType = \case-  CP Join -> True-  CP Leave -> True-  CP TopicChange -> True-  _ -> False---- Add the edit sentinel to the end of the last block in the sequence.--- If the last block is a paragraph, append it to that paragraph.--- Otherwise, append a new block so it appears beneath the last--- block-level element.-addEditSentinel :: ElementData -> Seq RichTextBlock -> Seq RichTextBlock-addEditSentinel d bs =-    case viewr bs of-        EmptyR -> bs-        (rest :> b) -> rest <> appendEditSentinel d b--appendEditSentinel :: ElementData -> RichTextBlock -> Seq RichTextBlock-appendEditSentinel sentinel b =-    let s = Para (S.singleton m)-        m = Element Normal sentinel-    in case b of-        Para is -> S.singleton $ Para (is |> Element Normal ESpace |> m)-        _ -> S.fromList [b, s]---- | A bundled structure that includes all the information necessary--- to render a given message-data MessageData =-    MessageData { mdEditThreshold :: Maybe ServerTime-                -- ^ If specified, any messages edited before this point-                -- in time are not indicated as edited.-                , mdShowOlderEdits :: Bool-                -- ^ Indicates whether "edited" markers should be shown-                -- for old messages (i.e., ignore the mdEditThreshold-                -- value).-                , mdShowReactions :: Bool-                -- ^ Whether to render reactions.-                , mdMessage :: Message-                -- ^ The message to render.-                , mdUserName :: Maybe Text-                -- ^ The username of the message's author, if any. This-                -- is passed here rather than obtaining from the message-                -- because we need to do lookups in the ChatState to-                -- compute this, and we don't pass the ChatState into-                -- renderMessage.-                , mdParentMessage :: Maybe Message-                -- ^ The parent message of this message, if any.-                , mdParentUserName :: Maybe Text-                -- ^ The author of the parent message, if any.-                , mdThreadState :: ThreadState-                -- ^ The thread state of this message.-                , mdRenderReplyParent :: Bool-                -- ^ Whether to render the parent message.-                , mdHighlightSet :: HighlightSet-                -- ^ The highlight set to use to highlight usernames,-                -- channel names, etc.-                , mdIndentBlocks :: Bool-                -- ^ Whether to indent the message underneath the-                -- author's name (True) or just display it to the right-                -- of the author's name (False).-                , mdMessageWidthLimit :: Maybe Int-                -- ^ A width override to use to wrap non-code blocks-                -- and code blocks without syntax highlighting. If-                -- unspecified, all blocks in the message will be-                -- wrapped and truncated at the width specified by the-                -- rendering context. If specified, all non-code blocks-                -- will be wrapped at this width and highlighted code-                -- blocks will be rendered using the context's width.-                , mdMyUsername :: Text-                -- ^ The username of the user running Matterhorn.-                , mdWrapNonhighlightedCodeBlocks :: Bool-                -- ^ Whether to wrap text in non-highlighted code-                -- blocks.-                }---- | renderMessage performs markdown rendering of the specified message.-renderMessage :: MessageData -> Widget Name-renderMessage md@MessageData { mdMessage = msg, .. } =-    let msgUsr = case mdUserName of-          Just u -> if omittedUsernameType (msg^.mType) then Nothing else Just u-          Nothing -> Nothing-        botElem = if isBotMessage msg then B.txt "[BOT]" else B.emptyWidget-        nameElems = case msgUsr of-          Just un-            | isEmote msg ->-                [ B.withDefAttr pinnedMessageIndicatorAttr $ B.txt $ if msg^.mPinned then "[PIN]" else ""-                , B.txt $ (if msg^.mFlagged then "[!] " else "") <> "*"-                , colorUsername mdMyUsername un un-                , botElem-                , B.txt " "-                ]-            | otherwise ->-                [ B.withDefAttr pinnedMessageIndicatorAttr $ B.txt $ if msg^.mPinned then "[PIN] " else ""-                , colorUsername mdMyUsername un un-                , botElem-                , B.txt $ (if msg^.mFlagged then "[!]" else "") <> ": "-                ]-          Nothing -> []--        -- Use the editing threshold to determine whether to append an-        -- editing indication to this message.-        maybeAugment bs = case msg^.mOriginalPost of-            Nothing -> bs-            Just p ->-                if p^.postEditAtL > p^.postCreateAtL-                then case mdEditThreshold of-                    Just cutoff | p^.postEditAtL >= cutoff ->-                        addEditSentinel (EEditSentinel True) bs-                    _ -> if mdShowOlderEdits-                         then addEditSentinel (EEditSentinel False) bs-                         else bs-                else bs--        augmentedText = maybeAugment $ msg^.mText-        msgWidget =-            vBox $ (layout mdHighlightSet mdMessageWidthLimit nameElems augmentedText . viewl) augmentedText :-                   catMaybes [msgAtch, msgReac]-        replyIndent = B.Widget B.Fixed B.Fixed $ do-            ctx <- B.getContext-            -- NB: The amount subtracted here must be the total padding-            -- added below (pad 1 + vBorder)-            w <- B.render $ B.hLimit (ctx^.B.availWidthL - 2) msgWidget-            B.render $ B.vLimit (V.imageHeight $ w^.B.imageL) $-                B.padRight (B.Pad 1) B.vBorder B.<+> (B.Widget B.Fixed B.Fixed $ return w)-        msgAtch = if Seq.null (msg^.mAttachments)-          then Nothing-          else Just $ B.withDefAttr clientMessageAttr $ vBox-                 [ B.txt ("  [attached: `" <> a^.attachmentName <> "`]")-                 | a <- toList (msg^.mAttachments)-                 ]-        msgReac = if Map.null (msg^.mReactions) || (not mdShowReactions)-          then Nothing-          else let renderR e us =-                       let n = Set.size us-                       in if | n == 1    -> " [" <> e <> "]"-                             | n > 1     -> " [" <> e <> " " <> T.pack (show n) <> "]"-                             | otherwise -> ""-                   reactionMsg = Map.foldMapWithKey renderR (msg^.mReactions)-               in Just $ B.withDefAttr emojiAttr $ B.txt ("   " <> reactionMsg)-        withParent p =-            case mdThreadState of-                NoThread -> msgWidget-                InThreadShowParent -> p B.<=> replyIndent-                InThread -> replyIndent-    in if not mdRenderReplyParent-       then msgWidget-       else case msg^.mInReplyToMsg of-          NotAReply -> msgWidget-          InReplyTo _ ->-              case mdParentMessage of-                  Nothing -> withParent (B.str "[loading...]")-                  Just pm ->-                      let parentMsg = renderMessage md-                            { mdShowOlderEdits    = False-                            , mdMessage           = pm-                            , mdUserName          = mdParentUserName-                            , mdParentMessage     = Nothing-                            , mdRenderReplyParent = False-                            , mdIndentBlocks      = False-                            }-                      in withParent (addEllipsis $ B.forceAttr replyParentAttr parentMsg)--    where-        layout :: HighlightSet -> Maybe Int -> [Widget Name] -> Seq RichTextBlock-               -> ViewL RichTextBlock -> Widget Name-        layout hs w nameElems bs xs | length xs > 1     = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs (Blockquote {} :< _) = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs (CodeBlock {} :< _)  = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs (HTMLBlock {} :< _)  = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs (List {} :< _)       = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs (Para inlns :< _)-            | F.any breakCheck inlns                    = multiLnLayout hs w nameElems bs-        layout hs w nameElems bs _                      = nameNextToMessage hs w nameElems bs--        multiLnLayout hs w nameElems bs =-            if mdIndentBlocks-               then vBox [ hBox nameElems-                         , hBox [B.txt "  ", renderRichText mdMyUsername hs ((subtract 2) <$> w) mdWrapNonhighlightedCodeBlocks bs]-                         ]-               else nameNextToMessage hs w nameElems bs--        nameNextToMessage hs w nameElems bs =-            Widget Fixed Fixed $ do-                nameResult <- render $ hBox nameElems-                let newW = subtract (V.imageWidth (nameResult^.imageL)) <$> w-                render $ hBox [raw (nameResult^.imageL), renderRichText mdMyUsername hs newW mdWrapNonhighlightedCodeBlocks bs]--        breakCheck e = eData e `elem` [ELineBreak, ESoftBreak]--addEllipsis :: Widget a -> Widget a-addEllipsis w = B.Widget (B.hSize w) (B.vSize w) $ do-    ctx <- B.getContext-    let aw = ctx^.B.availWidthL-    result <- B.render w-    let withEllipsis = (B.hLimit (aw - 3) $ B.vLimit 1 $ (B.Widget B.Fixed B.Fixed $ return result)) <+>-                       B.str "..."-    if (V.imageHeight (result^.B.imageL) > 1) || (V.imageWidth (result^.B.imageL) == aw) then-        B.render withEllipsis else-        return result- -- Cursor sentinel for tracking the user's cursor position in previews. cursorSentinel :: Char cursorSentinel = '‸'  -- Render markdown with username highlighting-renderRichText :: Text -> HighlightSet -> Maybe Int -> Bool -> Seq RichTextBlock -> Widget a-renderRichText curUser hSet w wrap bs =+renderRichText :: Text -> HighlightSet -> Maybe Int -> Bool -> Blocks -> Widget a+renderRichText curUser hSet w doWrap (Blocks bs) =     runReader (do-              blocks <- mapM blockToWidget (addBlankLines bs)+              blocks <- mapM renderBlock (addBlankLines bs)               return $ B.vBox $ toList blocks)               (DrawCfg { drawCurUser = curUser                        , drawHighlightSet = hSet                        , drawLineWidth = w-                       , drawDoLineWrapping = wrap+                       , drawDoLineWrapping = doWrap                        })  -- Add blank lines only between adjacent elements of the same type, to -- save space-addBlankLines :: Seq RichTextBlock -> Seq RichTextBlock+addBlankLines :: Seq Block -> Seq Block addBlankLines = go' . viewl   where go' EmptyL = S.empty         go' (x :< xs) = go x (viewl xs)-        go a@Para {} (b@Para {} :< rs) =-             a <| blank <| go b (viewl rs)-        go a@Header {} (b@Header {} :< rs) =-             a <| blank <| go b (viewl rs)-        go a@Blockquote {} (b@Blockquote {} :< rs) =-             a <| blank <| go b (viewl rs)-        go a@List {} (b@List {} :< rs) =-             a <| blank <| go b (viewl rs)-        go a@CodeBlock {} (b@CodeBlock {} :< rs) =-             a <| blank <| go b (viewl rs)-        go a@HTMLBlock {} (b@HTMLBlock {} :< rs) =-             a <| blank <| go b (viewl rs)-        go x (y :< rs) = x <| go y (viewl rs)-        go x (EmptyL) = S.singleton x-        blank = Para (S.singleton (Element Normal ESpace))+        go a (b :< rs)+            | sameBlockType a b = a <| blank <| go b (viewl rs)+            | otherwise         = a <| go b (viewl rs)+        go x EmptyL = S.singleton x+        blank = Para (Inlines $ S.singleton ESpace) --- Render text to markdown without username highlighting or permalink detection+-- Render text to markdown without username highlighting or permalink+-- detection renderText :: Text -> Widget a renderText txt = renderText' Nothing "" emptyHSet txt  renderText' :: Maybe TeamBaseURL -> Text -> HighlightSet -> Text -> Widget a-renderText' baseUrl curUser hSet t = renderRichText curUser hSet Nothing True rtBs-  where rtBs = parseMarkdown baseUrl t+renderText' baseUrl curUser hSet t =+    renderRichText curUser hSet Nothing True $+        parseMarkdown baseUrl t  vBox :: F.Foldable f => f (Widget a) -> Widget a vBox = B.vBox . toList@@ -323,38 +98,38 @@             , drawDoLineWrapping :: Bool             } -blockToWidget :: RichTextBlock -> M (Widget a)-blockToWidget (Para is) =-    toElementChunk is-blockToWidget (Header n is) = do+renderBlock :: Block -> M (Widget a)+renderBlock (Para is) =+    renderInlines is+renderBlock (Header n is) = do     headerTxt <- withReader (\c -> c { drawLineWidth = subtract 1 <$> drawLineWidth c }) $-                 toElementChunk is+                 renderInlines is     return $ B.withDefAttr clientHeaderAttr $         hBox [ B.padRight (B.Pad 1) $ header n              , headerTxt              ]-blockToWidget (Blockquote is) = do+renderBlock (Blockquote bs) = do     w <- asks drawLineWidth-    bs <- mapM blockToWidget is-    return $ maybeHLimit w $ addQuoting $ vBox bs-blockToWidget (List _ l bs) = do+    bws <- mapM renderBlock (unBlocks bs)+    return $ maybeHLimit w $ addQuoting $ vBox bws+renderBlock (List ty spacing bs) = do     w <- asks drawLineWidth-    lst <- blocksToList l bs+    lst <- renderList ty spacing bs     return $ maybeHLimit w lst-blockToWidget (CodeBlock ci tx) = do+renderBlock (CodeBlock ci tx) = do     hSet <- asks drawHighlightSet -    let f = maybe rawCodeBlockToWidget-                  (codeBlockToWidget (hSyntaxMap hSet))+    let f = maybe renderRawCodeBlock+                  (renderCodeBlock (hSyntaxMap hSet))                   mSyntax         mSyntax = do             lang <- codeBlockLanguage ci             Sky.lookupSyntax lang (hSyntaxMap hSet)     f tx-blockToWidget (HTMLBlock t) = do+renderBlock (HTMLBlock t) = do     w <- asks drawLineWidth     return $ maybeHLimit w $ textWithCursor t-blockToWidget (HRule) = do+renderBlock (HRule) = do     w <- asks drawLineWidth     return $ maybeHLimit w $ B.vLimit 1 (B.fill '*') @@ -374,30 +149,30 @@                           , B.Widget B.Fixed B.Fixed $ return childResult                           ] -codeBlockToWidget :: Sky.SyntaxMap -> Sky.Syntax -> Text -> M (Widget a)-codeBlockToWidget syntaxMap syntax tx = do+renderCodeBlock :: Sky.SyntaxMap -> Sky.Syntax -> Text -> M (Widget a)+renderCodeBlock syntaxMap syntax tx = do     let result = Sky.tokenize cfg syntax tx         cfg = Sky.TokenizerConfig syntaxMap False     case result of-        Left _ -> rawCodeBlockToWidget tx+        Left _ -> renderRawCodeBlock tx         Right tokLines -> do             let padding = B.padLeftRight 1 (B.vLimit (length tokLines) B.vBorder)             return $ (B.txt $ "[" <> Sky.sName syntax <> "]") B.<=>                      (padding <+> BS.renderRawSource textWithCursor tokLines) -rawCodeBlockToWidget :: Text -> M (Widget a)-rawCodeBlockToWidget tx = do-    wrap <- asks drawDoLineWrapping+renderRawCodeBlock :: Text -> M (Widget a)+renderRawCodeBlock tx = do+    doWrap <- asks drawDoLineWrapping -    let hPolicy = if wrap then Greedy else Fixed+    let hPolicy = if doWrap then Greedy else Fixed     return $ B.withDefAttr codeAttr $         Widget hPolicy Fixed $ do             c <- B.getContext             let theLines = expandEmpty <$> T.lines tx                 expandEmpty "" = " "                 expandEmpty s  = s-                wrapFunc = if wrap then wrappedTextWithCursor-                                   else textWithCursor+                wrapFunc = if doWrap then wrappedTextWithCursor+                                     else textWithCursor             renderedText <- render (B.hLimit (c^.B.availWidthL - 3) $ B.vBox $                                     wrapFunc <$> theLines) @@ -406,8 +181,8 @@              render $ padding <+> (Widget Fixed Fixed $ return renderedText) -toElementChunk :: Seq Element -> M (Widget a)-toElementChunk es = do+renderInlines :: Inlines -> M (Widget a)+renderInlines es = do     w <- asks drawLineWidth     hSet <- asks drawHighlightSet     curUser <- asks drawCurUser@@ -415,172 +190,68 @@     return $ B.Widget B.Fixed B.Fixed $ do         ctx <- B.getContext         let width = fromMaybe (ctx^.B.availWidthL) w-            ws    = fmap (renderElementSeq curUser) (wrapLine width hSet es)-        B.render (vBox (fmap hBox ws))+            ws    = fmap (renderWrappedLine curUser) $+                    mconcat $+                    (doLineWrapping width <$> (F.toList $ flattenInlineSeq hSet es))+        B.render (vBox ws) -blocksToList :: ListType -> Seq (Seq RichTextBlock) -> M (Widget a)-blocksToList lt bs = do-    let is = case lt of-          Bullet _ -> repeat ("• ")-          Numbered Period s ->+renderList :: ListType -> ListSpacing -> Seq Blocks -> M (Widget a)+renderList ty _spacing bs = do+    let is = case ty of+          BulletList _ -> repeat ("• ")+          OrderedList s _ Period ->             [ T.pack (show (n :: Int)) <> ". " | n <- [s..] ]-          Numbered Paren s ->+          OrderedList s _ OneParen ->             [ T.pack (show (n :: Int)) <> ") " | n <- [s..] ]+          OrderedList s _ TwoParens ->+            [ T.pack (show (n :: Int)) <> ")) " | n <- [s..] ] -    results <- forM (zip is $ F.toList bs) $ \(i, b) -> do-        blocks <- mapM blockToWidget b+    results <- forM (zip is $ unBlocks <$> (F.toList bs)) $ \(i, b) -> do+        blocks <- mapM renderBlock b         return $ B.txt i <+> vBox blocks      return $ vBox results -data SplitState = SplitState-  { splitChunks  :: Seq (Seq Element)-  , splitCurrCol :: Int-  }--wrapLine :: Int -> HighlightSet -> Seq Element -> Seq (Seq Element)-wrapLine maxCols hSet = splitChunks . go (SplitState (S.singleton S.empty) 0)-  where go st (viewl-> e :< es) = go st' es-          where-              HighlightSet { hUserSet = uSet, hChannelSet = cSet } = hSet--              -- Right before we check the width of the token, we see-              -- if the token is a user or channel reference. If so, we-              -- check if it is valid. If it is valid, we leave it in-              -- place; otherwise we translate it into an ordinary text-              -- element so that it does not render highlighted as a-              -- valid user or channel reference.-              newElement = e { eData = newEData }-              newEData = case eData e of-                  EUser u ->-                      if u `Set.member` uSet-                      then EUser u-                      else EText $ userSigil <> u-                  EChannel c ->-                      if c `Set.member` cSet-                      then EChannel c-                      else EText $ normalChannelSigil <> c-                  d -> d--              addHyperlink url el = setElementStyle (Hyperlink url (eStyle el)) el--              linkOpenBracket = Element Normal (EText "<")-              linkCloseBracket = Element Normal (EText ">")-              addOpenBracket l =-                  case Seq.viewl l of-                      EmptyL -> l-                      h :< t ->-                          let h' = Element Normal-                                           (ENonBreaking $ Seq.fromList [linkOpenBracket, h])-                          in h' <| t-              addCloseBracket l =-                  case Seq.viewr l of-                      EmptyR -> l-                      h :> t ->-                          let t' = Element Normal-                                           (ENonBreaking $ Seq.fromList [t, linkCloseBracket])-                          in h |> t'-              decorateLinkLabel = addOpenBracket .  addCloseBracket--              st' =-                  case newEData of-                      EHyperlink url (Just labelEs) ->-                          go st $ addHyperlink url <$> decorateLinkLabel labelEs-                      EHyperlink url Nothing ->-                          go st $ addHyperlink url <$> decorateLinkLabel (Seq.fromList [Element Normal $ EText $ unURL url])-                      EPermalink _tName _pId (Just labelEs) ->-                          go st $ setElementStyle Permalink <$> decorateLinkLabel labelEs-                      EImage url (Just labelEs) ->-                          go st $ addHyperlink url <$> decorateLinkLabel labelEs-                      _ ->-                          if | newEData == ESoftBreak || newEData == ELineBreak ->-                                 st { splitChunks = splitChunks st |> S.empty-                                    , splitCurrCol = 0-                                    }-                             | available >= eWidth ->-                                 st { splitChunks  = addElement newElement (splitChunks st)-                                    , splitCurrCol = splitCurrCol st + eWidth-                                    }-                             | newEData == ESpace ->-                                 st { splitChunks = splitChunks st |> S.empty-                                    , splitCurrCol = 0-                                    }-                             | otherwise ->-                                 st { splitChunks  = splitChunks st |> S.singleton newElement-                                    , splitCurrCol = eWidth-                                    }-              available = maxCols - splitCurrCol st-              eWidth = elementWidth newElement-              addElement x (viewr-> ls :> l) = ( ls |> (l |> x))-              addElement _ _ = error "[unreachable]"-        go st _                 = st--renderElementSeq :: Text -> Seq Element -> Seq (Widget a)-renderElementSeq curUser es = renderElement curUser <$> es+renderWrappedLine :: Text -> WrappedLine -> Widget a+renderWrappedLine curUser l = hBox $ F.toList $ renderFlattenedValue curUser <$> l -renderElement :: Text -> Element -> Widget a-renderElement curUser e = addStyle sty widget+renderFlattenedValue :: Text -> FlattenedValue -> Widget a+renderFlattenedValue curUser (NonBreaking rs) =+    let renderLine = hBox . F.toList . fmap (renderFlattenedValue curUser)+    in vBox (F.toList $ renderLine <$> F.toList rs)+renderFlattenedValue curUser (SingleInline fi) = addHyperlink $ addStyles widget     where-        sty = eStyle e-        dat = eData e-        addStyle s = case s of-                Normal                  -> id-                Emph                    -> B.withDefAttr clientEmphAttr-                Strikethrough           -> B.withDefAttr strikeThroughAttr-                Strong                  -> B.withDefAttr clientStrongAttr-                Code                    -> B.withDefAttr codeAttr-                Permalink               -> B.withDefAttr permalinkAttr-                Hyperlink (URL url) innerSty ->-                    B.hyperlink url . B.withDefAttr urlAttr .  addStyle innerSty-        rawText = B.txt . removeCursor-        widget = case dat of-            -- Cursor sentinels get parsed as individual text nodes by-            -- Cheapskate, meaning that we get a text node with exactly-            -- one character in it. That's why we compare accordingly-            -- above. In addition, since that character has no width, we-            -- have to replace it with something that has a size (such-            -- as a space) to get Brick's visibility logic to scroll the-            -- viewport to get it into view.-            EText t                      -> if t == T.singleton (cursorSentinel)-                                            then B.visible $ B.txt " "-                                            else textWithCursor t--            ESpace                       -> B.txt " "-            EPermalink _ pId mLabel      -> drawPermalink curUser pId mLabel-            ENonBreaking es              -> hBox $ renderElement curUser <$> es-            ERawHtml t                   -> textWithCursor t-            EEditSentinel recent         -> let attr = if recent-                                                       then editedRecentlyMarkingAttr-                                                       else editedMarkingAttr-                                            in B.withDefAttr attr $ B.txt editMarking-            EUser u                      -> colorUsername curUser u $ userSigil <> u-            EChannel c                   -> B.withDefAttr channelNameAttr $-                                            B.txt $ normalChannelSigil <> c-            EHyperlink (URL url) Nothing -> rawText url-            EImage (URL url) Nothing     -> rawText url-            EEmoji em                    -> B.withDefAttr emojiAttr $-                                            B.txt $ ":" <> em <> ":"--            -- Hyperlink and image nodes with labels should not appear-            -- at this point because line-wrapping should break them up-            -- into normal text node sequences with hyperlink styles-            -- attached.-            EHyperlink {}                -> rawText "(Report renderElement bug #1)"-            EImage {}                    -> rawText "(Report renderElement bug #2)"+        val = fiValue fi+        mUrl = fiURL fi+        styles = fiStyles fi -            -- Line breaks should never need to get rendered since the-            -- line-wrapping algorithm removes them.-            ESoftBreak                   -> B.emptyWidget-            ELineBreak                   -> B.emptyWidget+        addStyles w = foldr addStyle w styles+        addStyle s =+            B.withDefAttr $ case s of+                Strong        -> clientStrongAttr+                Code          -> codeAttr+                Permalink     -> permalinkAttr+                Strikethrough -> strikeThroughAttr+                Emph          -> clientEmphAttr -drawPermalink :: Text -> PostId -> Maybe (Seq Element) -> Widget a-drawPermalink _ _ Nothing =-    B.txt permalinkPlaceholder-drawPermalink curUser _ (Just label) =-    hBox $ F.toList $ B.txt "<" <| (renderElementSeq curUser label |> B.txt ">")+        addHyperlink = case mUrl of+            Nothing -> id+            Just u -> B.withDefAttr urlAttr . B.hyperlink (unURL u) -permalinkPlaceholder :: Text-permalinkPlaceholder = "<post link>"+        widget = case val of+            FSpace               -> B.txt " "+            FUser u              -> colorUsername curUser u $ userSigil <> u+            FChannel c           -> B.withDefAttr channelNameAttr $+                                    B.txt $ normalChannelSigil <> c+            FEmoji em            -> B.withDefAttr emojiAttr $+                                    B.txt $ ":" <> em <> ":"+            FText t              -> if t == T.singleton (cursorSentinel)+                                    then B.visible $ B.txt " "+                                    else textWithCursor t+            FEditSentinel recent -> let attr = if recent+                                               then editedRecentlyMarkingAttr+                                               else editedMarkingAttr+                                    in B.withDefAttr attr $ B.txt editMarking  textWithCursor :: Text -> Widget a textWithCursor t@@ -594,26 +265,3 @@  removeCursor :: Text -> Text removeCursor = T.filter (/= cursorSentinel)--editMarking :: Text-editMarking = "(edited)"--elementWidth :: Element -> Int-elementWidth e =-    case eData e of-        ENonBreaking es              -> sum $ elementWidth <$> es-        EText t                      -> B.textWidth t-        ERawHtml t                   -> B.textWidth t-        EUser t                      -> T.length userSigil + B.textWidth t-        EChannel t                   -> T.length normalChannelSigil + B.textWidth t-        EEditSentinel _              -> B.textWidth editMarking-        EImage (URL url) Nothing     -> B.textWidth url-        EImage _ (Just is)           -> sum $ elementWidth <$> is-        EHyperlink (URL url) Nothing -> B.textWidth url-        EHyperlink _ (Just is)       -> sum $ elementWidth <$> is-        EEmoji t                     -> B.textWidth t + 2-        EPermalink _ _ Nothing       -> T.length permalinkPlaceholder-        EPermalink _ _ (Just label)  -> 2 + (sum $ elementWidth <$> label)-        ESpace                       -> 1-        ELineBreak                   -> 0-        ESoftBreak                   -> 0
+ src/Matterhorn/Draw/RichText/Flatten.hs view
@@ -0,0 +1,302 @@+-- | This module implements a "flattening" pass over RichText 'Inline'+-- values. This means that a tree structure such as+--+-- @+--   EStrong+--     [ EStrikethrough+--       [ EText "inside"+--       ]+--     , EText "outside"+--     ]+-- @+--+-- will be converted into a "flat" representation without a tree+-- structure so that the style information encoded in the tree is+-- available at each node:+--+-- @+--   [+--     [ SingleInline (FlattenedInline (FText "inside") [Strong, Strikethrough] Nothing+--     , SingleInline (FlattenedInline (FText "outside") [Strong] Nothing+--     ]+--   ]+-- @+--+-- The outer sequence is a sequence of lines (since inline lists can+-- introduce line breaks). Each inner sequence is a single line.+-- Each 'SingleInline' can be rendered as-is; if a 'NonBreaking' is+-- encountered, that group of inlines should be treated as a unit for+-- the purposes of line-wrapping (to happen in the Wrap module). The+-- above representation example shows how the tree path including the+-- 'EStrong' and 'EStrikethrough' nodes is flattened into a list of+-- styles to accompany each inline value. This makes it trivial to carry+-- that style information along with each node during line-wrapping+-- rather than needing to deal with the tree structure.+module Matterhorn.Draw.RichText.Flatten+  ( FlattenedContent(..)+  , FlattenedInline(..)+  , InlineStyle(..)+  , FlattenedValue(..)+  , flattenInlineSeq+  )+where++import           Prelude ()+import           Matterhorn.Prelude++import           Control.Monad.Reader+import           Control.Monad.State+import           Data.List ( nub )+import qualified Data.Sequence as Seq+import           Data.Sequence ( ViewL(..)+                               , ViewR(..)+                               , (<|)+                               , (|>)+                               )+import qualified Data.Set as Set+import qualified Data.Text as T++import           Matterhorn.Constants ( normalChannelSigil, userSigil )+import           Matterhorn.Types ( HighlightSet(..) )+import           Matterhorn.Types.RichText+++-- | A piece of text in a sequence of flattened RichText elements. This+-- type represents the lowest-level kind of data that we can get from a+-- rich text document.+data FlattenedContent =+    FText Text+    -- ^ Some text+    | FSpace+    -- ^ A space+    | FUser Text+    -- ^ A user reference+    | FChannel Text+    -- ^ A channel reference+    | FEmoji Text+    -- ^ An emoji+    | FEditSentinel Bool+    -- ^ An "edited" marking+    deriving (Eq, Show)++-- | A flattened inline value.+data FlattenedInline =+    FlattenedInline { fiValue :: FlattenedContent+                    -- ^ The content of the value.+                    , fiStyles :: [InlineStyle]+                    -- ^ The styles that should be applied to this+                    -- value.+                    , fiURL :: Maybe URL+                    -- ^ If present, the URL to which we should+                    -- hyperlink this value.+                    }+                    deriving (Show)++-- | A flattened value.+data FlattenedValue =+    SingleInline FlattenedInline+    -- ^ A single flattened value+    | NonBreaking (Seq (Seq FlattenedValue))+    -- ^ A sequence of flattened values that MUST be kept together and+    -- never broken up by line-wrapping+    deriving (Show)++-- | The visual styles of inline values.+data InlineStyle =+    Strong+    | Emph+    | Strikethrough+    | Code+    | Permalink+    deriving (Eq, Show)++type FlattenM a = ReaderT FlattenEnv (State FlattenState) a++-- | The flatten monad state+data FlattenState =+    FlattenState { fsCompletedLines :: Seq (Seq FlattenedValue)+                 -- ^ The lines that we have accumulated so far in the+                 -- flattening process+                 , fsCurLine :: Seq FlattenedValue+                 -- ^ The current line we are accumulating in the+                 -- flattening process+                 }++-- | The flatten monad environment+data FlattenEnv =+    FlattenEnv { flattenStyles :: [InlineStyle]+               -- ^ The styles that should apply to the current value+               -- being flattened+               , flattenURL :: Maybe URL+               -- ^ The hyperlink URL, if any, that should be applied to+               -- the current value being flattened+               , flattenHighlightSet :: HighlightSet+               -- ^ The highlight set to use to check for valid user or+               -- channel references+               }++-- | Given a sequence of inlines, flatten it into a list of lines of+-- flattened values.+--+-- The flattening process also validates user and channel references+-- against a 'HighlightSet'. For example, if an 'EUser' node is found,+-- its username argument is looked up in the 'HighlightSet'. If the+-- username is found, the 'EUser' node is preserved as an 'FUser' node.+-- Otherwise it is rewritten as an 'FText' node so that the username+-- does not get highlighted. Channel references ('EChannel') are handled+-- similarly.+flattenInlineSeq :: HighlightSet -> Inlines -> Seq (Seq FlattenedValue)+flattenInlineSeq hs is =+    flattenInlineSeq' initialEnv is+    where+        initialEnv = FlattenEnv { flattenStyles = []+                                , flattenURL = Nothing+                                , flattenHighlightSet = hs+                                }++flattenInlineSeq' :: FlattenEnv -> Inlines -> Seq (Seq FlattenedValue)+flattenInlineSeq' env is =+    fsCompletedLines $ execState stBody initialState+    where+        initialState = FlattenState mempty mempty+        stBody = runReaderT body env+        body = do+            mapM_ flatten $ unInlines is+            pushFLine++withInlineStyle :: InlineStyle -> FlattenM () -> FlattenM ()+withInlineStyle s =+    withReaderT (\e -> e { flattenStyles = nub (s : flattenStyles e) })++withHyperlink :: URL -> FlattenM () -> FlattenM ()+withHyperlink u = withReaderT (\e -> e { flattenURL = Just u })++-- | Push a FlattenedContent value onto the current line.+pushFC :: FlattenedContent -> FlattenM ()+pushFC v = do+    env <- ask+    let styles = flattenStyles env+        mUrl = flattenURL env+        fi = FlattenedInline { fiValue = v+                             , fiStyles = styles+                             , fiURL = mUrl+                             }+    pushFV $ SingleInline fi++-- | Push a FlattenedValue onto the current line.+pushFV :: FlattenedValue -> FlattenM ()+pushFV fv = lift $ modify $ \s -> s { fsCurLine = appendFV fv (fsCurLine s) }++-- | Append the value to the sequence.+--+-- If the both the value to append AND the sequence's last value are+-- both text nodes, AND if those nodes both have the same style and URL+-- metadata, then merge them into one text node. This keeps adjacent+-- non-whitespace text together as one logical token (e.g. "(foo" rather+-- than "(" followed by "foo") to avoid undesirable line break points in+-- the wrapping process.+appendFV :: FlattenedValue -> Seq FlattenedValue -> Seq FlattenedValue+appendFV v line =+    case (Seq.viewr line, v) of+        (h :> SingleInline a, SingleInline b) ->+            case (fiValue a, fiValue b) of+                (FText aT, FText bT) ->+                    if fiStyles a == fiStyles b && fiURL a == fiURL b+                    then h |> SingleInline (FlattenedInline (FText $ aT <> bT)+                                                            (fiStyles a)+                                                            (fiURL a))+                    else line |> v+                _ -> line |> v+        _ -> line |> v++-- | Push the current line onto the finished lines list and start a new+-- line.+pushFLine :: FlattenM ()+pushFLine =+    lift $ modify $ \s -> s { fsCompletedLines = fsCompletedLines s |> fsCurLine s+                            , fsCurLine = mempty+                            }++isKnownUser :: T.Text -> FlattenM Bool+isKnownUser u = do+    hSet <- asks flattenHighlightSet+    let uSet = hUserSet hSet+    return $ u `Set.member` uSet++isKnownChannel :: T.Text -> FlattenM Bool+isKnownChannel c = do+    hSet <- asks flattenHighlightSet+    let cSet = hChannelSet hSet+    return $ c `Set.member` cSet++flatten :: Inline -> FlattenM ()+flatten i =+    case i of+        EUser u -> do+            known <- isKnownUser u+            if known then pushFC (FUser u)+                     else pushFC (FText $ userSigil <> u)+        EChannel c -> do+            known <- isKnownChannel c+            if known then pushFC (FChannel c)+                     else pushFC (FText $ normalChannelSigil <> c)++        ENonBreaking is -> do+            env <- ask+            pushFV $ (NonBreaking $ flattenInlineSeq' env is)++        ESoftBreak                  -> pushFLine+        ELineBreak                  -> pushFLine++        EText t                     -> pushFC $ FText t+        ESpace                      -> pushFC FSpace+        ERawHtml h                  -> pushFC $ FText h+        EEmoji e                    -> pushFC $ FEmoji e+        EEditSentinel r             -> pushFC $ FEditSentinel r++        EEmph es                    -> withInlineStyle Emph $ mapM_ flatten $ unInlines es+        EStrikethrough es           -> withInlineStyle Strikethrough $ mapM_ flatten $ unInlines es+        EStrong es                  -> withInlineStyle Strong $ mapM_ flatten $ unInlines es+        ECode es                    -> withInlineStyle Code $ mapM_ flatten $ unInlines es++        EPermalink _ _ mLabel ->+            let label' = fromMaybe (Inlines $ Seq.fromList [EText "post", ESpace, EText "link"])+                                   mLabel+            in withInlineStyle Permalink $ mapM_ flatten $ unInlines $ decorateLinkLabel label'++        EHyperlink u label@(Inlines ls) ->+            let label' = if Seq.null ls+                         then Inlines $ Seq.singleton $ EText $ unURL u+                         else label+            in withHyperlink u $ mapM_ flatten $ unInlines $ decorateLinkLabel label'++        EImage u label@(Inlines ls) ->+            let label' = if Seq.null ls+                         then Inlines $ Seq.singleton $ EText $ unURL u+                         else label+            in withHyperlink u $ mapM_ flatten $ unInlines $ decorateLinkLabel label'++linkOpenBracket :: Inline+linkOpenBracket = EText "<"++linkCloseBracket :: Inline+linkCloseBracket = EText ">"++addOpenBracket :: Inlines -> Inlines+addOpenBracket (Inlines l) =+    case Seq.viewl l of+        EmptyL -> Inlines l+        h :< t ->+            let h' = ENonBreaking $ Inlines $ Seq.fromList [linkOpenBracket, h]+            in Inlines $ h' <| t++addCloseBracket :: Inlines -> Inlines+addCloseBracket (Inlines l) =+    case Seq.viewr l of+        EmptyR -> Inlines l+        h :> t ->+            let t' = ENonBreaking $ Inlines $ Seq.fromList [t, linkCloseBracket]+            in Inlines $ h |> t'++decorateLinkLabel :: Inlines -> Inlines+decorateLinkLabel = addOpenBracket .  addCloseBracket
+ src/Matterhorn/Draw/RichText/Wrap.hs view
@@ -0,0 +1,116 @@+-- | This module performs line-wrapping of sequences of flattend inline+-- values produced by 'flattenInlineSeq'.+--+-- This process works by maintaining a 'WrapState' in the 'WrapM'+-- monad, where inline values are pushed onto the current line, and+-- line breaks are introduced as inlines exceed the available width.+-- The most important caveat of this module is that wrapping depends+-- on knowing the width of each 'FlattenedValue', which is provided+-- by the 'fvWidth' function. But 'fvWidth' must return values that+-- are consistent with the how the inlines actually get rendered by+-- 'renderFlattenedValue'. This is because there are visual aspects to+-- how some inlines get rendered that are implicit, such as user or+-- channel sigils that get added at drawing time, that have an impact on+-- their visible width.+module Matterhorn.Draw.RichText.Wrap+  ( WrappedLine+  , doLineWrapping+  )+where++import           Prelude ()+import           Matterhorn.Prelude++import qualified Brick as B+import           Control.Monad.State+import qualified Data.Sequence as Seq+import           Data.Sequence ( ViewL(..)+                               , (|>)+                               )+import qualified Data.Text as T++import           Matterhorn.Constants ( normalChannelSigil, userSigil )+import           Matterhorn.Draw.RichText.Flatten+import           Matterhorn.Constants ( editMarking )+++type WrappedLine = Seq FlattenedValue++data WrapState =+    WrapState { wrapCompletedLines :: Seq WrappedLine+              -- ^ The completed lines so far+              , wrapCurLine :: WrappedLine+              -- ^ The current line we are accumulating+              , wrapCurCol :: Int+              -- ^ The width of wrapCurLine, in columns+              , wrapWidth :: Int+              -- ^ The maximum allowable width+              }++type WrapM a = State WrapState a++-- | Push a flattened value onto the current line if possible, or add a+-- line break and add the inline value to a new line if it would cause+-- the current line width to exceed the maximum.+pushValue :: FlattenedValue -> WrapM ()+pushValue i = do+    let iw = fvWidth i+        pushThisInline =+            modify $ \st -> st { wrapCurLine = wrapCurLine st |> i+                               , wrapCurCol = wrapCurCol st + iw+                               }+    maxWidth <- gets wrapWidth+    curWidth <- gets wrapCurCol+    let remaining = maxWidth - curWidth++    when (iw > remaining) pushLine++    pushThisInline++-- | Insert a new line break by moving the current accumulating line+-- onto the completed lines list and resetting it to empty.+pushLine :: WrapM ()+pushLine = do+    let trimLeadingWhitespace s =+            case Seq.viewl s of+                SingleInline i :< t | fiValue i == FSpace -> trimLeadingWhitespace t+                _ -> s++    modify $ \st ->+        st { wrapCurLine = mempty+           , wrapCompletedLines = wrapCompletedLines st |> trimLeadingWhitespace (wrapCurLine st)+           , wrapCurCol = 0+           }++-- | Given a maximum width and an inline sequence, produce a sequence of+-- lines wrapped at the specified column. This only returns lines longer+-- than the maximum width when those lines have a single inline value+-- that cannot be broken down further (such as a long URL).+doLineWrapping :: Int -> Seq FlattenedValue -> Seq WrappedLine+doLineWrapping maxCols i =+    result+    where+        result = wrapCompletedLines $ execState (mapM_ pushValue i >> pushLine) initialState+        initialState = WrapState { wrapCurLine = mempty+                                 , wrapCompletedLines = mempty+                                 , wrapCurCol = 0+                                 , wrapWidth = maxCols+                                 }++-- The widths returned by this function must match the content widths+-- rendered by renderFlattenedValue.+fvWidth :: FlattenedValue -> Int+fvWidth (SingleInline fi) = fiWidth fi+fvWidth (NonBreaking rs) = sum $ (sum . fmap fvWidth) <$> rs++-- The widths returned by this function must match the content widths+-- rendered by renderFlattenedValue.+fiWidth :: FlattenedInline -> Int+fiWidth fi =+    case fiValue fi of+        FText t                      -> B.textWidth t+        FSpace                       -> 1+        FUser t                      -> T.length userSigil + B.textWidth t+        FChannel t                   -> T.length normalChannelSigil + B.textWidth t+        FEmoji t                     -> B.textWidth t + 2+        FEditSentinel _              -> B.textWidth editMarking
src/Matterhorn/Draw/ShowHelp.hs view
@@ -443,14 +443,14 @@     [ ("Global Keybindings", globalKeyHandlers)     , ("Help Page", helpKeyHandlers)     , ("Main Interface", mainKeyHandlers)-    , ("Text Editing", editingKeyHandlers (csEditState.cedEditor))+    , ("Text Editing", editingKeyHandlers (csCurrentTeam.tsEditState.cedEditor))     , ("Channel Select Mode", channelSelectKeyHandlers)     , ("Message Select Mode", messageSelectKeyHandlers)     , ("User Listings", userListOverlayKeyHandlers)     , ("URL Select Mode", urlSelectKeyHandlers)     , ("Theme List Window", themeListOverlayKeyHandlers)     , ("Channel Search Window", channelListOverlayKeyHandlers)-    , ("Message Viewer: Common", tabbedWindowKeyHandlers (csViewedMessage.singular _Just._2))+    , ("Message Viewer: Common", tabbedWindowKeyHandlers (csCurrentTeam.tsViewedMessage.singular _Just._2))     , ("Message Viewer: Message tab", viewMessageKeyHandlers)     , ("Message Viewer: Reactions tab", viewMessageReactionsKeyHandlers)     , ("Attachment List", attachmentListKeyHandlers)@@ -502,7 +502,7 @@     in (label, rendering)  mkKeybindEventSectionHelp :: KeyConfig-                          -> ((Either Text Text, Text, [Text]) -> a)+                          -> ((TextHunk, Text, [TextHunk]) -> a)                           -> ([a] -> a)                           -> (Text -> a)                           -> (Text, [KeyEventHandler])@@ -511,53 +511,59 @@   vertCat $ (mkHeading sectionName) :             (mkKeybindHelpFunc <$> (mkKeybindEventHelp kc <$> kbs)) -keybindEventHelpWidget :: (Either Text Text, Text, [Text]) -> Widget Name+data TextHunk = Verbatim Text+              | Comment Text++keybindEventHelpWidget :: (TextHunk, Text, [TextHunk]) -> Widget Name keybindEventHelpWidget (evName, desc, evs) =-    let evText = T.intercalate ", " evs+    let evText = T.intercalate ", " (getText <$> evs)+        getText (Comment s) = s+        getText (Verbatim s) = s         label = case evName of-            Left s -> txt $ "; " <> s-            Right s -> emph $ txt s+            Comment s -> txt $ "; " <> s+            Verbatim s -> emph $ txt s     in padBottom (Pad 1) $        vBox [ txtWrap ("; " <> desc)             , label <+> txt (" = " <> evText)             ] -keybindEventHelpMarkdown :: (Either Text Text, Text, [Text]) -> Text+keybindEventHelpMarkdown :: (TextHunk, Text, [TextHunk]) -> Text keybindEventHelpMarkdown (evName, desc, evs) =     let quote s = "`" <> s <> "`"+        format (Comment s) = s+        format (Verbatim s) = quote s         name = case evName of-            Left s -> s-            Right s -> quote s-    in "| " <> (T.intercalate ", " $ quote <$> evs) <>+            Comment s -> s+            Verbatim s -> quote s+    in "| " <> (T.intercalate ", " $ format <$> evs) <>        " | " <> name <>        " | " <> desc <>        " |" -keybindEventHelpText :: Int -> Int -> (Either Text Text, Text, [Text]) -> Text+keybindEventHelpText :: Int -> Int -> (TextHunk, Text, [TextHunk]) -> Text keybindEventHelpText width eventNameWidth (evName, desc, evs) =-    let name = case evName of-            Left s -> s-            Right s -> s-    in padTo width (T.intercalate ", " evs) <> " " <>-       padTo eventNameWidth name <> " " <>+    let getText (Comment s) = s+        getText (Verbatim s) = s+    in padTo width (T.intercalate ", " $ getText <$> evs) <> " " <>+       padTo eventNameWidth (getText evName) <> " " <>        desc -mkKeybindEventHelp :: KeyConfig -> KeyEventHandler -> (Either Text Text, Text, [Text])+mkKeybindEventHelp :: KeyConfig -> KeyEventHandler -> (TextHunk, Text, [TextHunk]) mkKeybindEventHelp kc h =   let trig = kehEventTrigger h-      unbound = ["(unbound)"]+      unbound = [Comment "(unbound)"]       (label, evText) = case trig of-          Static key -> (Left "(non-customizable key)", [ppBinding $ eventToBinding key])+          Static key -> (Comment "(non-customizable key)", [Verbatim $ ppBinding $ eventToBinding key])           ByEvent ev -> case M.lookup ev kc of               Nothing ->                   let name = keyEventName ev                   in if not (null (defaultBindings ev))-                     then (Right name, ppBinding <$> defaultBindings ev)-                     else (Left name, unbound)-              Just Unbound -> (Right $ keyEventName ev, unbound)-              Just (BindingList bs) -> (Right $ keyEventName ev,+                     then (Verbatim name, Verbatim <$> ppBinding <$> defaultBindings ev)+                     else (Verbatim name, unbound)+              Just Unbound -> (Verbatim $ keyEventName ev, unbound)+              Just (BindingList bs) -> (Verbatim $ keyEventName ev,                                         if not (null bs)-                                        then ppBinding <$> bs+                                        then Verbatim <$> ppBinding <$> bs                                         else unbound                                         )   in (label, ehDescription $ kehHandler h, evText)
src/Matterhorn/Draw/TabbedWindow.hs view
@@ -12,6 +12,8 @@ import           Data.List ( intersperse ) import qualified Graphics.Vty as Vty +import           Network.Mattermost.Types ( TeamId )+ import           Matterhorn.Draw.Util ( renderKeybindingHelp ) import           Matterhorn.Types import           Matterhorn.Themes@@ -26,12 +28,13 @@     let cur = getCurrentTabbedWindowEntry w         tabBody = tweRender cur (twValue w) cs         title = forceAttr clientEmphAttr $ twtTitle (twTemplate w) (tweValue cur)+        tId = cs^.csCurrentTeamId     in centerLayer $        vLimit (twWindowHeight w) $        hLimit (twWindowWidth w) $        joinBorders $        borderWithLabel title $-       (tabBar w <=> tabBody <=> hBorder <=> hCenter keybindingHelp)+       (tabBar tId w <=> tabBody <=> hBorder <=> hCenter keybindingHelp)  -- | Keybinding help to show at the bottom of a tabbed window. keybindingHelp :: Widget Name@@ -43,9 +46,10 @@  -- | The scrollable tab bar to show at the top of a tabbed window. tabBar :: (Eq a, Show a)-       => TabbedWindow a+       => TeamId+       -> TabbedWindow a        -> Widget Name-tabBar w =+tabBar tId w =     let cur = getCurrentTabbedWindowEntry w         entries = twtEntries (twTemplate w)         renderEntry e =@@ -74,4 +78,4 @@             render $ hBox $ (intersperse divider $ renderEntry <$> entries) <>                             [divider, padTop (Pad 1) $ hLimit width hBorder]         divider = vLimit 1 vBorder <=> joinableBorder (Edges True False False False)-    in vLimit 2 $ viewport TabbedWindowTabBar Horizontal contents+    in vLimit 2 $ viewport (TabbedWindowTabBar tId) Horizontal contents
src/Matterhorn/Draw/ThemeListOverlay.hs view
@@ -23,7 +23,7 @@  drawThemeListOverlay :: ChatState -> Widget Name drawThemeListOverlay st =-    let overlay = drawListOverlay (st^.csThemeListOverlay)+    let overlay = drawListOverlay (st^.csCurrentTeam.tsThemeListOverlay)                                   (const $ txt "Themes")                                   (const $ txt "No matching themes found.")                                   (const $ txt "Search built-in themes:")
src/Matterhorn/Draw/URLList.hs view
@@ -9,6 +9,7 @@ import           Brick import           Brick.Widgets.Border ( hBorder ) import           Brick.Widgets.List ( renderList )+import qualified Data.Sequence as Seq import qualified Data.Foldable as F import           Lens.Micro.Platform ( to ) @@ -19,7 +20,7 @@ import           Matterhorn.Draw.RichText import           Matterhorn.Themes import           Matterhorn.Types-import           Matterhorn.Types.RichText ( unURL, TeamURLName(..) )+import           Matterhorn.Types.RichText   renderUrlList :: ChatState -> Widget Name@@ -35,10 +36,12 @@                      then str "No URLs found in this channel."                      else renderList renderItem True urls -        urls = st^.csUrlList+        urls = st^.csCurrentTeam.tsUrlList          me = myUsername st +        hSet = getHighlightSet st+         renderItem sel link =           let time = link^.linkTime           in attr sel $ vLimit 2 $@@ -47,7 +50,11 @@                     in colorUsername me u u                   , case link^.linkLabel of                       Nothing -> emptyWidget-                      Just label -> txt ": " <+> hBox (F.toList $ renderElementSeq me label)+                      Just label ->+                          case Seq.null (unInlines label) of+                              True -> emptyWidget+                              False -> txt ": " <+> renderRichText me hSet Nothing False+                                                    (Blocks $ Seq.singleton $ Para label)                   , fill ' '                   , renderDate st $ withServerTime time                   , str " "
src/Matterhorn/Draw/UserListOverlay.hs view
@@ -22,7 +22,7 @@  drawUserListOverlay :: ChatState -> Widget Name drawUserListOverlay st =-    let overlay = drawListOverlay (st^.csUserListOverlay) userSearchScopeHeader+    let overlay = drawListOverlay (st^.csCurrentTeam.tsUserListOverlay) userSearchScopeHeader                                   userSearchScopeNoResults userSearchScopePrompt                                   (renderUser (myUsername st))                                   Nothing
src/Matterhorn/Draw/Util.hs view
@@ -18,7 +18,6 @@ import           Data.List ( intersperse ) import qualified Data.Set as Set import qualified Data.Text as T-import           Lens.Micro.Platform ( to ) import           Network.Mattermost.Types  import           Matterhorn.Constants ( userSigil, normalChannelSigil )@@ -40,11 +39,11 @@  getTimeFormat :: ChatState -> Text getTimeFormat st =-    maybe defaultTimeFormat id (st^.csResources.crConfiguration.to configTimeFormat)+    maybe defaultTimeFormat id (st^.csResources.crConfiguration.configTimeFormatL)  getDateFormat :: ChatState -> Text getDateFormat st =-    maybe defaultDateFormat id (st^.csResources.crConfiguration.to configDateFormat)+    maybe defaultDateFormat id (st^.csResources.crConfiguration.configDateFormatL)  renderTime :: ChatState -> UTCTime -> Widget Name renderTime st = renderUTCTime (getTimeFormat st) (st^.timeZone)
src/Matterhorn/Events.hs view
@@ -9,30 +9,22 @@ import           Matterhorn.Prelude  import           Brick-import qualified Data.Sequence as Seq-import qualified Data.Set as Set import qualified Data.Text as T import qualified Graphics.Vty as Vty-import           Lens.Micro.Platform ( (.=), preuse, _2, singular, _Just )+import           Lens.Micro.Platform ( (.=), _2, singular, _Just )  import qualified Network.Mattermost.Endpoints as MM import           Network.Mattermost.Exceptions ( mattermostErrorMessage )-import           Network.Mattermost.Lenses-import           Network.Mattermost.Types-import           Network.Mattermost.WebSocket  import           Matterhorn.Connection import           Matterhorn.Constants ( userSigil, normalChannelSigil ) import           Matterhorn.HelpTopics+import           Matterhorn.State.ChannelList import           Matterhorn.State.Channels import           Matterhorn.State.Common-import           Matterhorn.State.Flagging import           Matterhorn.State.Help import           Matterhorn.State.Messages-import           Matterhorn.State.Reactions-import           Matterhorn.State.Users import           Matterhorn.Types-import           Matterhorn.Types.Common  import           Matterhorn.Events.ChannelSelect import           Matterhorn.Events.ChannelTopicWindow@@ -51,6 +43,7 @@ import           Matterhorn.Events.TabbedWindow import           Matterhorn.Events.ManageAttachments import           Matterhorn.Events.EditNotifyPrefs+import           Matterhorn.Events.Websocket   onEvent :: ChatState -> BrickEvent Name MHEvent -> EventM Name (Next ChatState)@@ -102,9 +95,9 @@ onAppEvent (BGBusy n) =     csWorkerIsBusy .= Just n onAppEvent (WSEvent we) =-    handleWSEvent we+    handleWebsocketEvent we onAppEvent (WSActionResponse r) =-    handleWSActionResponse r+    handleWebsocketActionResponse r onAppEvent (RespEvent f) = f onAppEvent (WebsocketParseError e) = do     let msg = "A websocket message could not be parsed:\n  " <>@@ -185,26 +178,31 @@  handleGlobalEvent :: Vty.Event -> MH () handleGlobalEvent e = do-    mode <- gets appMode+    mode <- use (csCurrentTeam.tsMode)+    globalHandlerByMode mode e++globalHandlerByMode :: Mode -> Vty.Event -> MH ()+globalHandlerByMode mode =     case mode of-        Main                       -> onEventMain e-        ShowHelp _ _               -> void $ onEventShowHelp e-        ChannelSelect              -> void $ onEventChannelSelect e-        UrlSelect                  -> void $ onEventUrlSelect e-        LeaveChannelConfirm        -> onEventLeaveChannelConfirm e-        MessageSelect              -> onEventMessageSelect e-        MessageSelectDeleteConfirm -> onEventMessageSelectDeleteConfirm e-        DeleteChannelConfirm       -> onEventDeleteChannelConfirm e-        ThemeListOverlay           -> onEventThemeListOverlay e-        PostListOverlay _          -> onEventPostListOverlay e-        UserListOverlay            -> onEventUserListOverlay e-        ChannelListOverlay         -> onEventChannelListOverlay e-        ReactionEmojiListOverlay   -> onEventReactionEmojiListOverlay e-        ViewMessage                -> void $ handleTabbedWindowEvent (csViewedMessage.singular _Just._2) e-        ManageAttachments          -> onEventManageAttachments e-        ManageAttachmentsBrowseFiles -> onEventManageAttachments e-        EditNotifyPrefs            -> void $ onEventEditNotifyPrefs e-        ChannelTopicWindow         -> onEventChannelTopicWindow e+        Main                       -> onEventMain+        ShowHelp _ _               -> void . onEventShowHelp+        ChannelSelect              -> void . onEventChannelSelect+        UrlSelect                  -> void . onEventUrlSelect+        LeaveChannelConfirm        -> onEventLeaveChannelConfirm+        MessageSelect              -> onEventMessageSelect+        MessageSelectDeleteConfirm -> onEventMessageSelectDeleteConfirm+        DeleteChannelConfirm       -> onEventDeleteChannelConfirm+        ThemeListOverlay           -> onEventThemeListOverlay+        PostListOverlay _          -> onEventPostListOverlay+        UserListOverlay            -> onEventUserListOverlay+        ChannelListOverlay         -> onEventChannelListOverlay+        ReactionEmojiListOverlay   -> onEventReactionEmojiListOverlay+        ViewMessage                -> void . handleTabbedWindowEvent+                                             (csCurrentTeam.tsViewedMessage.singular _Just._2)+        ManageAttachments          -> onEventManageAttachments+        ManageAttachmentsBrowseFiles -> onEventManageAttachments+        EditNotifyPrefs            -> void . onEventEditNotifyPrefs+        ChannelTopicWindow         -> onEventChannelTopicWindow  globalKeybindings :: KeyConfig -> KeyHandlerMap globalKeybindings = mkKeybindings globalKeyHandlers@@ -216,164 +214,6 @@         (showHelpScreen mainHelpTopic)     ] -handleWSActionResponse :: WebsocketActionResponse -> MH ()-handleWSActionResponse r =-    case warStatus r of-        WebsocketActionStatusOK -> return ()--handleWSEvent :: WebsocketEvent -> MH ()-handleWSEvent we = do-    myId <- gets myUserId-    myTId <- gets myTeamId-    case weEvent we of-        WMPosted-            | Just p <- wepPost (weData we) ->-                when (wepTeamId (weData we) == Just myTId ||-                      wepTeamId (weData we) == Nothing) $ do-                    let wasMentioned = maybe False (Set.member myId) $ wepMentions (weData we)-                    addNewPostedMessage $ RecentPost p wasMentioned-                    cId <- use csCurrentChannelId-                    when (postChannelId p /= cId) $-                        showChannelInSidebar (p^.postChannelIdL) False-            | otherwise -> return ()--        WMPostEdited-            | Just p <- wepPost (weData we) -> do-                editMessage p-                cId <- use csCurrentChannelId-                when (postChannelId p == cId) (updateViewed False)-                when (postChannelId p /= cId) $-                    showChannelInSidebar (p^.postChannelIdL) False-            | otherwise -> return ()--        WMPostDeleted-            | Just p <- wepPost (weData we) -> do-                deleteMessage p-                cId <- use csCurrentChannelId-                when (postChannelId p == cId) (updateViewed False)-                when (postChannelId p /= cId) $-                    showChannelInSidebar (p^.postChannelIdL) False-            | otherwise -> return ()--        WMStatusChange-            | Just status <- wepStatus (weData we)-            , Just uId <- wepUserId (weData we) ->-                setUserStatus uId status-            | otherwise -> return ()--        WMUserAdded-            | Just cId <- webChannelId (weBroadcast we) ->-                when (wepUserId (weData we) == Just myId &&-                      wepTeamId (weData we) == Just myTId) $-                    handleChannelInvite cId-            | otherwise -> return ()--        WMNewUser-            | Just uId <- wepUserId $ weData we ->-                handleNewUsers (Seq.singleton uId) (return ())-            | otherwise -> return ()--        WMUserRemoved-            | Just cId <- wepChannelId (weData we) ->-                when (webUserId (weBroadcast we) == Just myId) $-                    removeChannelFromState cId-            | otherwise -> return ()--        WMTyping-            | Just uId <- wepUserId $ weData we-            , Just cId <- webChannelId (weBroadcast we) -> handleTypingUser uId cId-            | otherwise -> return ()--        WMChannelDeleted-            | Just cId <- wepChannelId (weData we) ->-                when (webTeamId (weBroadcast we) == Just myTId) $-                    removeChannelFromState cId-            | otherwise -> return ()--        WMDirectAdded-            | Just cId <- webChannelId (weBroadcast we) -> handleChannelInvite cId-            | otherwise -> return ()--        -- An 'ephemeral message' is just Mattermost's version of our-        -- 'client message'. This can be a little bit wacky, e.g.-        -- if the user types '/shortcuts' in the browser, we'll get-        -- an ephemeral message even in MatterHorn with the browser-        -- shortcuts, but it's probably a good idea to handle these-        -- messages anyway.-        WMEphemeralMessage-            | Just p <- wepPost $ weData we -> postInfoMessage (sanitizeUserText $ p^.postMessageL)-            | otherwise -> return ()--        WMPreferenceChanged-            | Just prefs <- wepPreferences (weData we) ->-                mapM_ applyPreferenceChange prefs-            | otherwise -> return ()--        WMPreferenceDeleted-            | Just pref <- wepPreferences (weData we)-            , Just fps <- mapM preferenceToFlaggedPost pref ->-              forM_ fps $ \f ->-                  updateMessageFlag (flaggedPostId f) False-            | otherwise -> return ()--        WMReactionAdded-            | Just r <- wepReaction (weData we)-            , Just cId <- webChannelId (weBroadcast we) -> addReactions cId [r]-            | otherwise -> return ()--        WMReactionRemoved-            | Just r <- wepReaction (weData we)-            , Just cId <- webChannelId (weBroadcast we) -> removeReaction r cId-            | otherwise -> return ()--        WMChannelViewed-            | Just cId <- wepChannelId $ weData we -> refreshChannelById cId-            | otherwise -> return ()--        WMChannelUpdated-            | Just cId <- webChannelId $ weBroadcast we -> do-                mChan <- preuse (csChannel(cId))-                when (isJust mChan) $ do-                    refreshChannelById cId-                    updateSidebar-            | otherwise -> return ()--        WMGroupAdded-            | Just cId <- webChannelId (weBroadcast we) -> handleChannelInvite cId-            | otherwise -> return ()--        WMChannelMemberUpdated-            | Just channelMember <- wepChannelMember $ weData we ->-                  when (channelMemberUserId channelMember == myId) $-                      updateChannelNotifyProps-                      (channelMemberChannelId channelMember)-                      (channelMemberNotifyProps channelMember)-            | otherwise -> return ()--        -- We are pretty sure we should do something about these:-        WMAddedToTeam -> return ()--        -- We aren't sure whether there is anything we should do about-        -- these yet:-        WMUpdateTeam -> return ()-        WMTeamDeleted -> return ()-        WMUserUpdated -> return ()-        WMLeaveTeam -> return ()--        -- We deliberately ignore these events:-        WMChannelCreated -> return ()-        WMEmojiAdded -> return ()-        WMWebRTC -> return ()-        WMHello -> return ()-        WMAuthenticationChallenge -> return ()-        WMUserRoleUpdated -> return ()-        WMPluginStatusesChanged -> return ()-        WMPluginEnabled -> return ()-        WMPluginDisabled -> return ()-        WMUnknownEvent {} ->-            mhLog LogWebsocket $ T.pack $-                "Websocket event not handled due to unknown event type: " <> show we- -- | Refresh client-accessible server configuration information. This -- is usually triggered when a reconnect event for the WebSocket to the -- server occurs.@@ -384,4 +224,4 @@         cfg <- MM.mmGetClientConfiguration (Just "old") session         return $ Just $ do             csClientConfig .= Just cfg-            updateSidebar+            updateSidebar Nothing
src/Matterhorn/Events/ChannelListOverlay.hs view
@@ -18,7 +18,7 @@  onEventChannelListOverlay :: Vty.Event -> MH () onEventChannelListOverlay =-    void . onEventListOverlay csChannelListOverlay channelListOverlayKeybindings+    void . onEventListOverlay (csCurrentTeam.tsChannelListOverlay) channelListOverlayKeybindings  -- | The keybindings we want to use while viewing a channel list overlay channelListOverlayKeybindings :: KeyConfig -> KeyHandlerMap@@ -26,10 +26,10 @@  channelListOverlayKeyHandlers :: [KeyEventHandler] channelListOverlayKeyHandlers =-    [ mkKb CancelEvent "Close the channel search list" (exitListOverlay csChannelListOverlay)+    [ mkKb CancelEvent "Close the channel search list" (exitListOverlay (csCurrentTeam.tsChannelListOverlay))     , mkKb SearchSelectUpEvent "Select the previous channel" channelListSelectUp     , mkKb SearchSelectDownEvent "Select the next channel" channelListSelectDown     , mkKb PageDownEvent "Page down in the channel list" channelListPageDown     , mkKb PageUpEvent "Page up in the channel list" channelListPageUp-    , mkKb ActivateListItemEvent "Join the selected channel" (listOverlayActivateCurrent csChannelListOverlay)+    , mkKb ActivateListItemEvent "Join the selected channel" (listOverlayActivateCurrent (csCurrentTeam.tsChannelListOverlay))     ]
src/Matterhorn/Events/ChannelSelect.hs view
@@ -17,9 +17,9 @@ onEventChannelSelect :: Vty.Event -> MH Bool onEventChannelSelect =   handleKeyboardEvent channelSelectKeybindings $ \e -> do-      handled <- handleKeyboardEvent (editingKeybindings (csChannelSelectState.channelSelectInput)) (const $ return ()) e+      handled <- handleKeyboardEvent (editingKeybindings (csCurrentTeam.tsChannelSelectState.channelSelectInput)) (const $ return ()) e       when (not handled) $-          mhHandleEventLensed (csChannelSelectState.channelSelectInput) handleEditorEvent e+          mhHandleEventLensed (csCurrentTeam.tsChannelSelectState.channelSelectInput) handleEditorEvent e        updateChannelSelectMatches @@ -30,7 +30,7 @@ channelSelectKeyHandlers =     [ staticKb "Switch to selected channel"          (Vty.EvKey Vty.KEnter []) $ do-             matches <- use (csChannelSelectState.channelSelectMatches)+             matches <- use (csCurrentTeam.tsChannelSelectState.channelSelectMatches)              case Z.focus matches of                  Nothing -> return ()                  Just match -> do
src/Matterhorn/Events/ChannelTopicWindow.hs view
@@ -18,31 +18,31 @@  onEventChannelTopicWindow :: Vty.Event -> MH () onEventChannelTopicWindow (Vty.EvKey (Vty.KChar '\t') []) =-    csChannelTopicDialog.channelTopicDialogFocus %= focusNext+    csCurrentTeam.tsChannelTopicDialog.channelTopicDialogFocus %= focusNext onEventChannelTopicWindow (Vty.EvKey Vty.KBackTab []) =-    csChannelTopicDialog.channelTopicDialogFocus %= focusPrev+    csCurrentTeam.tsChannelTopicDialog.channelTopicDialogFocus %= focusPrev onEventChannelTopicWindow e@(Vty.EvKey Vty.KEnter []) = do-    f <- use (csChannelTopicDialog.channelTopicDialogFocus)+    f <- use (csCurrentTeam.tsChannelTopicDialog.channelTopicDialogFocus)     case focusGetCurrent f of-        Just ChannelTopicSaveButton -> do-            ed <- use (csChannelTopicDialog.channelTopicDialogEditor)+        Just (ChannelTopicSaveButton {}) -> do+            ed <- use (csCurrentTeam.tsChannelTopicDialog.channelTopicDialogEditor)             let topic = T.unlines $ getEditContents ed             setChannelTopic topic             setMode Main-        Just ChannelTopicEditor ->-            mhHandleEventLensed (csChannelTopicDialog.channelTopicDialogEditor)+        Just (ChannelTopicEditor {}) ->+            mhHandleEventLensed (csCurrentTeam.tsChannelTopicDialog.channelTopicDialogEditor)                                 handleEditorEvent e-        Just ChannelTopicCancelButton ->+        Just (ChannelTopicCancelButton {}) ->             setMode Main         _ ->             setMode Main onEventChannelTopicWindow (Vty.EvKey Vty.KEsc []) = do     setMode Main onEventChannelTopicWindow e = do-    f <- use (csChannelTopicDialog.channelTopicDialogFocus)+    f <- use (csCurrentTeam.tsChannelTopicDialog.channelTopicDialogFocus)     case focusGetCurrent f of-        Just ChannelTopicEditor ->-            mhHandleEventLensed (csChannelTopicDialog.channelTopicDialogEditor)+        Just (ChannelTopicEditor {}) ->+            mhHandleEventLensed (csCurrentTeam.tsChannelTopicDialog.channelTopicDialogEditor)                                 handleEditorEvent e         _ ->             return ()
src/Matterhorn/Events/EditNotifyPrefs.hs view
@@ -25,9 +25,9 @@ onEventEditNotifyPrefs :: V.Event -> MH Bool onEventEditNotifyPrefs =     let fallback e = do-            form <- use (csNotifyPrefs.singular _Just)+            form <- use (csCurrentTeam.tsNotifyPrefs.singular _Just)             updatedForm <- mh $ handleFormEvent (VtyEvent e) form-            csNotifyPrefs .= Just updatedForm+            csCurrentTeam.tsNotifyPrefs .= Just updatedForm     in handleKeyboardEvent editNotifyPrefsKeybindings fallback  editNotifyPrefsKeybindings :: KeyConfig -> KeyHandlerMap@@ -38,8 +38,8 @@     [ mkKb CancelEvent "Close channel notification preferences" exitEditNotifyPrefsMode     , mkKb FormSubmitEvent "Save channel notification preferences" $ do         st <- use id-        let form = fromJust $ st^.csNotifyPrefs-            cId = st^.csCurrentChannelId+        let form = fromJust $ st^.csCurrentTeam.tsNotifyPrefs+            cId = st^.csCurrentChannelId(st^.csCurrentTeamId)          doAsyncChannelMM Preempt cId           (\s _ -> MM.mmUpdateChannelNotifications cId (myUserId st) (formState form) s)
src/Matterhorn/Events/Keybindings.hs view
@@ -226,6 +226,10 @@         EditorEndEvent                -> [ kb Vty.KEnd ]         EditorYankEvent               -> [ ctrl (key 'y') ]         FormSubmitEvent               -> [ kb Vty.KEnter ]+        NextTeamEvent                 -> [ ctrl (kb Vty.KRight) ]+        PrevTeamEvent                 -> [ ctrl (kb Vty.KLeft) ]+        MoveCurrentTeamLeftEvent      -> [ ]+        MoveCurrentTeamRightEvent     -> [ ]  -- | Given a configuration, we want to check it for internal consistency -- (i.e. that a given keybinding isn't associated with multiple events
src/Matterhorn/Events/Main.hs view
@@ -11,10 +11,12 @@ import           Matterhorn.Events.Keybindings import           Matterhorn.State.Attachments import           Matterhorn.State.ChannelSelect+import           Matterhorn.State.ChannelList import           Matterhorn.State.Channels import           Matterhorn.State.Editing import           Matterhorn.State.MessageSelect import           Matterhorn.State.PostListOverlay ( enterFlaggedPostListMode )+import           Matterhorn.State.Teams import           Matterhorn.State.UrlSelect import           Matterhorn.Types @@ -50,6 +52,18 @@     , mkKb ToggleExpandedChannelTopicsEvent "Toggle display of expanded channel topics"         toggleExpandedChannelTopics +    , mkKb NextTeamEvent "Switch to the next available team"+        nextTeam++    , mkKb PrevTeamEvent "Switch to the previous available team"+        prevTeam++    , mkKb MoveCurrentTeamLeftEvent "Move the current team to the left in the team list"+        moveCurrentTeamLeft++    , mkKb MoveCurrentTeamRightEvent "Move the current team to the right in the team list"+        moveCurrentTeamRight+     , mkKb         InvokeEditorEvent         "Invoke `$EDITOR` to edit the current message"@@ -78,9 +92,9 @@         "Scroll up in the channel input history" $ do              -- Up in multiline mode does the usual thing; otherwise we              -- navigate the history.-             isMultiline <- use (csEditState.cedEphemeral.eesMultiline)+             isMultiline <- use (csCurrentTeam.tsEditState.cedEphemeral.eesMultiline)              case isMultiline of-                 True -> mhHandleEventLensed (csEditState.cedEditor) handleEditorEvent+                 True -> mhHandleEventLensed (csCurrentTeam.tsEditState.cedEditor) handleEditorEvent                                            (Vty.EvKey Vty.KUp [])                  False -> channelHistoryBackward @@ -89,9 +103,9 @@         "Scroll down in the channel input history" $ do              -- Down in multiline mode does the usual thing; otherwise              -- we navigate the history.-             isMultiline <- use (csEditState.cedEphemeral.eesMultiline)+             isMultiline <- use (csCurrentTeam.tsEditState.cedEphemeral.eesMultiline)              case isMultiline of-                 True -> mhHandleEventLensed (csEditState.cedEditor) handleEditorEvent+                 True -> mhHandleEventLensed (csCurrentTeam.tsEditState.cedEditor) handleEditorEvent                                            (Vty.EvKey Vty.KDown [])                  False -> channelHistoryForward @@ -123,22 +137,24 @@      , staticKb "Send the current message"          (Vty.EvKey Vty.KEnter []) $ do-             isMultiline <- use (csEditState.cedEphemeral.eesMultiline)+             isMultiline <- use (csCurrentTeam.tsEditState.cedEphemeral.eesMultiline)              case isMultiline of                  -- Normally, this event causes the current message to                  -- be sent. But in multiline mode we want to insert a                  -- newline instead.                  True -> handleEditingInput (Vty.EvKey Vty.KEnter [])                  False -> do-                     cId <- use csCurrentChannelId+                     tId <- use csCurrentTeamId+                     cId <- use (csCurrentChannelId tId)                      content <- getEditorContent-                     handleInputSubmission cId content+                     handleInputSubmission tId cId content      , mkKb EnterOpenURLModeEvent "Select and open a URL posted to the current channel"            startUrlSelect -    , mkKb ClearUnreadEvent "Clear the current channel's unread / edited indicators" $-           clearChannelUnreadStatus =<< use csCurrentChannelId+    , mkKb ClearUnreadEvent "Clear the current channel's unread / edited indicators" $ do+           tId <- use csCurrentTeamId+           clearChannelUnreadStatus =<< use (csCurrentChannelId tId)      , mkKb ToggleMultiLineEvent "Toggle multi-line message compose mode"            toggleMultilineEditing
src/Matterhorn/Events/ManageAttachments.hs view
@@ -30,7 +30,7 @@  onEventManageAttachments :: V.Event -> MH () onEventManageAttachments e = do-    mode <- gets appMode+    mode <- use (csCurrentTeam.tsMode)     case mode of         ManageAttachments -> void $ onEventAttachmentList e         ManageAttachmentsBrowseFiles -> onEventBrowseFile e@@ -39,7 +39,7 @@ onEventAttachmentList :: V.Event -> MH Bool onEventAttachmentList =     handleKeyboardEvent attachmentListKeybindings $-        mhHandleEventLensed (csEditState.cedAttachmentList) L.handleListEvent+        mhHandleEventLensed (csCurrentTeam.tsEditState.cedAttachmentList) L.handleListEvent  attachmentListKeybindings :: KeyConfig -> KeyHandlerMap attachmentListKeybindings = mkKeybindings attachmentListKeyHandlers@@ -49,9 +49,9 @@     [ mkKb CancelEvent "Close attachment list"           (setMode Main)     , mkKb SelectUpEvent "Move cursor up" $-          mhHandleEventLensed (csEditState.cedAttachmentList) L.handleListEvent (V.EvKey V.KUp [])+          mhHandleEventLensed (csCurrentTeam.tsEditState.cedAttachmentList) L.handleListEvent (V.EvKey V.KUp [])     , mkKb SelectDownEvent "Move cursor down" $-          mhHandleEventLensed (csEditState.cedAttachmentList) L.handleListEvent (V.EvKey V.KDown [])+          mhHandleEventLensed (csCurrentTeam.tsEditState.cedAttachmentList) L.handleListEvent (V.EvKey V.KDown [])     , mkKb AttachmentListAddEvent "Add a new attachment to the attachment list"           showAttachmentFileBrowser     , mkKb AttachmentOpenEvent "Open the selected attachment using the URL open command"@@ -68,12 +68,12 @@     [ mkKb CancelEvent "Cancel attachment file browse"       cancelAttachmentBrowse     , mkKb AttachmentOpenEvent "Open the selected file using the URL open command"-          openSelectedBrowserEntry+      openSelectedBrowserEntry     ]  withFileBrowser :: ((FB.FileBrowser Name) -> MH ()) -> MH () withFileBrowser f = do-    use (csEditState.cedFileBrowser) >>= \case+    use (csCurrentTeam.tsEditState.cedFileBrowser) >>= \case         Nothing -> do             -- The widget has not been created yet.  This should             -- normally not occur, because the ManageAttachments@@ -82,14 +82,15 @@             -- This could therefore be implemented as an `error "BUG:             -- ..."` handler, but the more benign approach is to             -- simply create an available FileBrowser at this stage.-            new_b <- liftIO $ FB.newFileBrowser FB.selectNonDirectories AttachmentFileBrowser Nothing-            csEditState.cedFileBrowser ?= new_b+            tId <- use csCurrentTeamId+            new_b <- liftIO $ FB.newFileBrowser FB.selectNonDirectories (AttachmentFileBrowser tId) Nothing+            csCurrentTeam.tsEditState.cedFileBrowser ?= new_b             f new_b         Just b -> f b  openSelectedAttachment :: MH () openSelectedAttachment = do-    cur <- use (csEditState.cedAttachmentList.to L.listSelectedElement)+    cur <- use (csCurrentTeam.tsEditState.cedAttachmentList.to L.listSelectedElement)     case cur of         Nothing -> return ()         Just (_, entry) -> void $ openFilePath (FB.fileInfoFilePath $@@ -119,7 +120,7 @@  cancelAttachmentBrowse :: MH () cancelAttachmentBrowse = do-    es <- use (csEditState.cedAttachmentList.L.listElementsL)+    es <- use (csCurrentTeam.tsEditState.cedAttachmentList.L.listElementsL)     case length es of         0 -> setMode Main         _ -> setMode ManageAttachments@@ -127,14 +128,14 @@ handleFileBrowserEvent :: V.Event -> MH () handleFileBrowserEvent e = do   let fbHandle ev = sequence . (fmap (FB.handleFileBrowserEvent ev))-  mhHandleEventLensed (csEditState.cedFileBrowser) fbHandle e+  mhHandleEventLensed (csCurrentTeam.tsEditState.cedFileBrowser) fbHandle e    withFileBrowser $ \b -> do     -- TODO: Check file browser exception state     let entries = FB.fileBrowserSelection b     forM_ entries $ \entry -> do         -- Is the entry already present? If so, ignore the selection.-        es <- use (csEditState.cedAttachmentList.L.listElementsL)+        es <- use (csCurrentTeam.tsEditState.cedAttachmentList.L.listElementsL)         let matches = (== (FB.fileInfoFilePath entry)) .                       FB.fileInfoFilePath .                       attachmentDataFileInfo@@ -151,23 +152,23 @@                         let a = AttachmentData { attachmentDataFileInfo = entry                                                , attachmentDataBytes = bytes                                                }-                        oldIdx <- use (csEditState.cedAttachmentList.L.listSelectedL)+                        oldIdx <- use (csCurrentTeam.tsEditState.cedAttachmentList.L.listSelectedL)                         let newIdx = if Vector.null es                                      then Just 0                                      else oldIdx-                        csEditState.cedAttachmentList %= L.listReplace (Vector.snoc es a) newIdx+                        csCurrentTeam.tsEditState.cedAttachmentList %= L.listReplace (Vector.snoc es a) newIdx      when (not $ null entries) $ setMode Main  deleteSelectedAttachment :: MH () deleteSelectedAttachment = do-    es <- use (csEditState.cedAttachmentList.L.listElementsL)-    mSel <- use (csEditState.cedAttachmentList.to L.listSelectedElement)+    es <- use (csCurrentTeam.tsEditState.cedAttachmentList.L.listElementsL)+    mSel <- use (csCurrentTeam.tsEditState.cedAttachmentList.to L.listSelectedElement)     case mSel of         Nothing ->             return ()         Just (pos, _) -> do-            oldIdx <- use (csEditState.cedAttachmentList.L.listSelectedL)+            oldIdx <- use (csCurrentTeam.tsEditState.cedAttachmentList.L.listSelectedL)             let idx = if Vector.length es == 1                       then Nothing                       else case oldIdx of@@ -175,7 +176,7 @@                           Just old -> if pos >= old                                       then Just $ pos - 1                                       else Just pos-            csEditState.cedAttachmentList %= L.listReplace (deleteAt pos es) idx+            csCurrentTeam.tsEditState.cedAttachmentList %= L.listReplace (deleteAt pos es) idx  deleteAt :: Int -> Vector.Vector a -> Vector.Vector a deleteAt p as | p < 0 || p >= length as = as
src/Matterhorn/Events/ReactionEmojiListOverlay.hs view
@@ -18,7 +18,8 @@  onEventReactionEmojiListOverlay :: Vty.Event -> MH () onEventReactionEmojiListOverlay =-    void . onEventListOverlay csReactionEmojiListOverlay reactionEmojiListOverlayKeybindings+    void . onEventListOverlay (csCurrentTeam.tsReactionEmojiListOverlay)+           reactionEmojiListOverlayKeybindings  -- | The keybindings we want to use while viewing an emoji list overlay reactionEmojiListOverlayKeybindings :: KeyConfig -> KeyHandlerMap@@ -26,10 +27,16 @@  reactionEmojiListOverlayKeyHandlers :: [KeyEventHandler] reactionEmojiListOverlayKeyHandlers =-    [ mkKb CancelEvent "Close the emoji search window" (exitListOverlay csReactionEmojiListOverlay)-    , mkKb SearchSelectUpEvent "Select the previous emoji" reactionEmojiListSelectUp-    , mkKb SearchSelectDownEvent "Select the next emoji" reactionEmojiListSelectDown-    , mkKb PageDownEvent "Page down in the emoji list" reactionEmojiListPageDown-    , mkKb PageUpEvent "Page up in the emoji list" reactionEmojiListPageUp-    , mkKb ActivateListItemEvent "Post the selected emoji reaction" (listOverlayActivateCurrent csReactionEmojiListOverlay)+    [ mkKb CancelEvent "Close the emoji search window"+      (exitListOverlay (csCurrentTeam.tsReactionEmojiListOverlay))+    , mkKb SearchSelectUpEvent "Select the previous emoji"+      reactionEmojiListSelectUp+    , mkKb SearchSelectDownEvent "Select the next emoji"+      reactionEmojiListSelectDown+    , mkKb PageDownEvent "Page down in the emoji list"+      reactionEmojiListPageDown+    , mkKb PageUpEvent "Page up in the emoji list"+      reactionEmojiListPageUp+    , mkKb ActivateListItemEvent "Post the selected emoji reaction"+      (listOverlayActivateCurrent (csCurrentTeam.tsReactionEmojiListOverlay))     ]
src/Matterhorn/Events/ShowHelp.hs view
@@ -40,5 +40,5 @@  popMode :: MH () popMode = do-    ShowHelp _ prevMode <- gets appMode+    ShowHelp _ prevMode <- use (csCurrentTeam.tsMode)     setMode prevMode
src/Matterhorn/Events/ThemeListOverlay.hs view
@@ -13,7 +13,8 @@  onEventThemeListOverlay :: Vty.Event -> MH () onEventThemeListOverlay =-    void . onEventListOverlay csThemeListOverlay themeListOverlayKeybindings+    void . onEventListOverlay (csCurrentTeam.tsThemeListOverlay)+        themeListOverlayKeybindings  -- | The keybindings we want to use while viewing a user list overlay themeListOverlayKeybindings :: KeyConfig -> KeyHandlerMap@@ -21,10 +22,16 @@  themeListOverlayKeyHandlers :: [KeyEventHandler] themeListOverlayKeyHandlers =-    [ mkKb CancelEvent "Close the theme list" (exitListOverlay csThemeListOverlay)-    , mkKb SearchSelectUpEvent "Select the previous theme" themeListSelectUp-    , mkKb SearchSelectDownEvent "Select the next theme" themeListSelectDown-    , mkKb PageDownEvent "Page down in the theme list" themeListPageDown-    , mkKb PageUpEvent "Page up in the theme list" themeListPageUp-    , mkKb ActivateListItemEvent "Switch to the selected color theme" (listOverlayActivateCurrent csThemeListOverlay)+    [ mkKb CancelEvent "Close the theme list"+      (exitListOverlay (csCurrentTeam.tsThemeListOverlay))+    , mkKb SearchSelectUpEvent "Select the previous theme"+      themeListSelectUp+    , mkKb SearchSelectDownEvent "Select the next theme"+      themeListSelectDown+    , mkKb PageDownEvent "Page down in the theme list"+      themeListPageDown+    , mkKb PageUpEvent "Page up in the theme list"+      themeListPageUp+    , mkKb ActivateListItemEvent "Switch to the selected color theme"+      (listOverlayActivateCurrent (csCurrentTeam.tsThemeListOverlay))     ]
src/Matterhorn/Events/UrlSelect.hs view
@@ -14,7 +14,7 @@ onEventUrlSelect :: Vty.Event -> MH Bool onEventUrlSelect =   handleKeyboardEvent urlSelectKeybindings $ \ ev ->-    mhHandleEventLensed csUrlList handleListEvent ev+    mhHandleEventLensed (csCurrentTeam.tsUrlList) handleListEvent ev  urlSelectKeybindings :: KeyConfig -> KeyHandlerMap urlSelectKeybindings = mkKeybindings urlSelectKeyHandlers@@ -28,10 +28,10 @@     , mkKb CancelEvent "Cancel URL selection" stopUrlSelect      , mkKb SelectUpEvent "Move cursor up" $-        mhHandleEventLensed csUrlList handleListEvent (Vty.EvKey Vty.KUp [])+        mhHandleEventLensed (csCurrentTeam.tsUrlList) handleListEvent (Vty.EvKey Vty.KUp [])      , mkKb SelectDownEvent "Move cursor down" $-        mhHandleEventLensed csUrlList handleListEvent (Vty.EvKey Vty.KDown [])+        mhHandleEventLensed (csCurrentTeam.tsUrlList) handleListEvent (Vty.EvKey Vty.KDown [])      , staticKb "Cancel URL selection"          (Vty.EvKey (Vty.KChar 'q') []) $ stopUrlSelect
src/Matterhorn/Events/UserListOverlay.hs view
@@ -13,7 +13,7 @@  onEventUserListOverlay :: Vty.Event -> MH () onEventUserListOverlay =-    void . onEventListOverlay csUserListOverlay userListOverlayKeybindings+    void . onEventListOverlay (csCurrentTeam.tsUserListOverlay) userListOverlayKeybindings  -- | The keybindings we want to use while viewing a user list overlay userListOverlayKeybindings :: KeyConfig -> KeyHandlerMap@@ -21,10 +21,10 @@  userListOverlayKeyHandlers :: [KeyEventHandler] userListOverlayKeyHandlers =-    [ mkKb CancelEvent "Close the user search list" (exitListOverlay csUserListOverlay)+    [ mkKb CancelEvent "Close the user search list" (exitListOverlay (csCurrentTeam.tsUserListOverlay))     , mkKb SearchSelectUpEvent "Select the previous user" userListSelectUp     , mkKb SearchSelectDownEvent "Select the next user" userListSelectDown     , mkKb PageDownEvent "Page down in the user list" userListPageDown     , mkKb PageUpEvent "Page up in the user list" userListPageUp-    , mkKb ActivateListItemEvent "Interact with the selected user" (listOverlayActivateCurrent csUserListOverlay)+    , mkKb ActivateListItemEvent "Interact with the selected user" (listOverlayActivateCurrent (csCurrentTeam.tsUserListOverlay))     ]
+ src/Matterhorn/Events/Websocket.hs view
@@ -0,0 +1,236 @@+module Matterhorn.Events.Websocket+  ( handleWebsocketEvent+  , handleWebsocketActionResponse+  )+where++import           Prelude ()+import           Matterhorn.Prelude++import qualified Data.HashMap.Strict as HM+import qualified Data.Sequence as Seq+import qualified Data.Set as Set+import qualified Data.Text as T+import           Lens.Micro.Platform ( preuse )++import           Network.Mattermost.Lenses+import           Network.Mattermost.Types+import           Network.Mattermost.WebSocket++import           Matterhorn.State.ChannelList+import           Matterhorn.State.Channels+import           Matterhorn.State.Common+import           Matterhorn.State.Flagging+import           Matterhorn.State.Messages+import           Matterhorn.State.Reactions+import           Matterhorn.State.Teams+import           Matterhorn.State.Users+import           Matterhorn.Types+import           Matterhorn.Types.Common+++foreachTeam :: (TeamId -> MH ()) -> MH ()+foreachTeam act = do+    ts <- use csTeams+    let myTIds = HM.keys ts+    mapM_ act myTIds++handleWebsocketEvent :: WebsocketEvent -> MH ()+handleWebsocketEvent we = do+    myId <- gets myUserId+    ts <- use csTeams+    let memberOf tId = HM.member tId ts++        -- The team ID is one of the teams we're in, or the team ID is+        -- absent, which typically indicates a DM channel event since DM+        -- channels are not associated with teams.+        inMyTeamOrDM (Just i) = memberOf i+        inMyTeamOrDM Nothing = True++        -- The team ID is one of the teams we're in. A missing team ID+        -- yields False.+        inMyTeam (Just i) = memberOf i+        inMyTeam Nothing = False++    case weEvent we of+        WMPosted+            | Just p <- wepPost (weData we) ->+                when (inMyTeamOrDM (wepTeamId (weData we))) $ do+                    let wasMentioned = maybe False (Set.member myId) $ wepMentions (weData we)+                    addNewPostedMessage $ RecentPost p wasMentioned+                    tId <- use csCurrentTeamId+                    cId <- use (csCurrentChannelId tId)+                    when (postChannelId p /= cId) $+                        showChannelInSidebar (p^.postChannelIdL) False+            | otherwise -> return ()++        WMPostEdited+            | Just p <- wepPost (weData we) -> do+                editMessage p++                currTid <- use csCurrentTeamId+                foreachTeam $ \tId -> do+                    cId <- use (csCurrentChannelId tId)+                    when (postChannelId p == cId && tId == currTid) $+                        updateViewed False+                    when (postChannelId p /= cId) $+                        showChannelInSidebar (p^.postChannelIdL) False+            | otherwise -> return ()++        WMPostDeleted+            | Just p <- wepPost (weData we) -> do+                deleteMessage p++                currTid <- use csCurrentTeamId+                foreachTeam $ \tId -> do+                    cId <- use (csCurrentChannelId tId)+                    when (postChannelId p == cId && tId == currTid) $+                        updateViewed False+                    when (postChannelId p /= cId) $+                        showChannelInSidebar (p^.postChannelIdL) False+            | otherwise -> return ()++        WMStatusChange+            | Just status <- wepStatus (weData we)+            , Just uId <- wepUserId (weData we) ->+                setUserStatus uId status+            | otherwise -> return ()++        -- Despite this event's name, it means "a user was added to a+        -- channel". The event that occurs when a new user is added to+        -- the server, see WMNewUser.+        WMUserAdded+            | Just cId <- webChannelId (weBroadcast we) ->+                when (wepUserId (weData we) == Just myId &&+                      inMyTeam (wepTeamId (weData we))) $+                    handleChannelInvite cId+            | otherwise -> return ()++        WMNewUser+            | Just uId <- wepUserId $ weData we ->+                handleNewUsers (Seq.singleton uId) (return ())+            | otherwise -> return ()++        WMUserRemoved+            | Just cId <- wepChannelId (weData we) ->+                when (webUserId (weBroadcast we) == Just myId) $+                    removeChannelFromState cId+            | otherwise -> return ()++        WMTyping+            | Just uId <- wepUserId $ weData we+            , Just cId <- webChannelId (weBroadcast we) -> handleTypingUser uId cId+            | otherwise -> return ()++        WMChannelDeleted+            | Just cId <- wepChannelId (weData we) ->+                when (inMyTeamOrDM (webTeamId (weBroadcast we))) $+                    removeChannelFromState cId+            | otherwise -> return ()++        WMDirectAdded+            | Just cId <- webChannelId (weBroadcast we) -> handleChannelInvite cId+            | otherwise -> return ()++        -- An 'ephemeral message' is just Mattermost's version of our+        -- 'client message'. This can be a little bit wacky, e.g.+        -- if the user types '/shortcuts' in the browser, we'll get+        -- an ephemeral message even in MatterHorn with the browser+        -- shortcuts, but it's probably a good idea to handle these+        -- messages anyway.+        WMEphemeralMessage+            | Just p <- wepPost $ weData we -> postInfoMessage (sanitizeUserText $ p^.postMessageL)+            | otherwise -> return ()++        WMPreferenceChanged+            | Just prefs <- wepPreferences (weData we) ->+                mapM_ applyPreferenceChange prefs+            | otherwise -> return ()++        WMPreferenceDeleted+            | Just pref <- wepPreferences (weData we)+            , Just fps <- mapM preferenceToFlaggedPost pref ->+              forM_ fps $ \f ->+                  updateMessageFlag (flaggedPostId f) False+            | otherwise -> return ()++        WMReactionAdded+            | Just r <- wepReaction (weData we)+            , Just cId <- webChannelId (weBroadcast we) -> addReactions cId [r]+            | otherwise -> return ()++        WMReactionRemoved+            | Just r <- wepReaction (weData we)+            , Just cId <- webChannelId (weBroadcast we) -> removeReaction r cId+            | otherwise -> return ()++        WMChannelViewed+            | Just cId <- wepChannelId $ weData we -> refreshChannelById cId+            | otherwise -> return ()++        WMChannelUpdated+            | Just cId <- webChannelId $ weBroadcast we -> do+                mChan <- preuse (csChannel(cId))+                case mChan of+                    Just chan -> do+                        refreshChannelById cId+                        updateSidebar (chan^.ccInfo.cdTeamId)+                    Nothing -> return ()+            | otherwise -> return ()++        WMGroupAdded+            | Just cId <- webChannelId (weBroadcast we) -> handleChannelInvite cId+            | otherwise -> return ()++        WMChannelMemberUpdated+            | Just channelMember <- wepChannelMember $ weData we ->+                  when (channelMemberUserId channelMember == myId) $+                      updateChannelNotifyProps+                      (channelMemberChannelId channelMember)+                      (channelMemberNotifyProps channelMember)+            | otherwise -> return ()++        WMAddedToTeam+            | Just tId <- wepTeamId $ weData we+            , Just uId <- wepUserId $ weData we -> do+                when (uId == myId && not (memberOf tId)) $ do+                    handleJoinTeam tId+            | otherwise -> return ()++        WMUpdateTeam+            | Just tId <- webTeamId $ weBroadcast we -> do+                when (memberOf tId) $ do+                    handleUpdateTeam tId+            | otherwise -> return ()++        WMLeaveTeam+            | Just tId <- wepTeamId $ weData we+            , Just uId <- wepUserId $ weData we -> do+                when (uId == myId && memberOf tId) $ do+                    handleLeaveTeam tId+            | otherwise -> return ()++        WMTeamDeleted -> do+            mhLog LogGeneral $ T.pack $+                "WMTeamDeleted event: " <> show we++        WMUserUpdated -> return ()++        -- We deliberately ignore these events:+        WMChannelCreated -> return ()+        WMEmojiAdded -> return ()+        WMWebRTC -> return ()+        WMHello -> return ()+        WMAuthenticationChallenge -> return ()+        WMUserRoleUpdated -> return ()+        WMPluginStatusesChanged -> return ()+        WMPluginEnabled -> return ()+        WMPluginDisabled -> return ()+        WMUnknownEvent {} ->+            mhLog LogWebsocket $ T.pack $+                "Websocket event not handled due to unknown event type: " <> show we++handleWebsocketActionResponse :: WebsocketActionResponse -> MH ()+handleWebsocketActionResponse r =+    case warStatus r of+        WebsocketActionStatusOK -> return ()
src/Matterhorn/LastRunState.hs view
@@ -5,7 +5,7 @@   , lrsPort   , lrsUserId   , lrsSelectedChannelId-  , writeLastRunState+  , writeLastRunStates   , readLastRunState   , isValidLastRunState   )@@ -18,6 +18,7 @@ import qualified Data.Aeson as A import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as LBS+import qualified Data.HashMap.Strict as HM import           Lens.Micro.Platform ( makeLenses ) import           System.Directory ( createDirectoryIfMissing ) import           System.FilePath ( dropFileName )@@ -63,7 +64,7 @@   { _lrsHost              = cs^.csResources.crConn.cdHostnameL   , _lrsPort              = cs^.csResources.crConn.cdPortL   , _lrsUserId            = myUserId cs-  , _lrsSelectedChannelId = cs^.csCurrentChannelId+  , _lrsSelectedChannelId = cs^.csCurrentChannelId(cs^.csCurrentTeamId)   }  lastRunStateFileMode :: P.FileMode@@ -71,16 +72,20 @@  -- | Writes the run state to a file. The file is specific to the current team. -- | Writes only if the current channel is an ordrinary or a private channel.-writeLastRunState :: ChatState -> IO ()-writeLastRunState cs =-  when (cs^.csCurrentChannel.ccInfo.cdType `elem` [Ordinary, Private]) $ do-    let runState = toLastRunState cs-        tId      = myTeamId cs+writeLastRunStates :: ChatState -> IO ()+writeLastRunStates cs =+    forM_ (HM.keys $ cs^.csTeams) $ \tId ->+        writeLastRunState cs tId -    lastRunStateFile <- lastRunStateFilePath $ unId $ toId tId-    createDirectoryIfMissing True $ dropFileName lastRunStateFile-    BS.writeFile lastRunStateFile $ LBS.toStrict $ A.encode runState-    P.setFileMode lastRunStateFile lastRunStateFileMode+writeLastRunState :: ChatState -> TeamId -> IO ()+writeLastRunState cs tId = do+    when (cs^.csCurrentChannel.ccInfo.cdType `elem` [Ordinary, Private]) $ do+        let runState = toLastRunState cs++        lastRunStateFile <- lastRunStateFilePath $ unId $ toId tId+        createDirectoryIfMissing True $ dropFileName lastRunStateFile+        BS.writeFile lastRunStateFile $ LBS.toStrict $ A.encode runState+        P.setFileMode lastRunStateFile lastRunStateFileMode  -- | Reads the last run state from a file given the current team ID. readLastRunState :: TeamId -> IO (Either String LastRunState)
src/Matterhorn/Scripts.hs view
@@ -47,8 +47,11 @@     ExitSuccess -> do         case null $ programStderr po of             True -> Just $ do-                mode <- use (csEditState.cedEditMode)-                sendMessage cId mode (T.pack $ programStdout po) []+                withChannel cId $ \chan -> do+                    mode <- case chan^.ccInfo.cdTeamId of+                        Nothing -> use (csCurrentTeam.tsEditState.cedEditMode)+                        Just tId -> use (csTeam(tId).tsEditState.cedEditMode)+                    sendMessage cId mode (T.pack $ programStdout po) []             False -> Nothing     ExitFailure _ -> Nothing 
src/Matterhorn/State/Attachments.hs view
@@ -34,20 +34,23 @@  showAttachmentList :: MH () showAttachmentList = do-    lst <- use (csEditState.cedAttachmentList)+    lst <- use (csCurrentTeam.tsEditState.cedAttachmentList)     case length (L.listElements lst) of         0 -> showAttachmentFileBrowser         _ -> setMode ManageAttachments  resetAttachmentList :: MH () resetAttachmentList = do-    csEditState.cedAttachmentList .= L.list AttachmentList mempty 1-    mh $ vScrollToBeginning $ viewportScroll AttachmentList+    tId <- use csCurrentTeamId+    let listName = AttachmentList tId+    csCurrentTeam.tsEditState.cedAttachmentList .= L.list listName mempty 1+    mh $ vScrollToBeginning $ viewportScroll listName  showAttachmentFileBrowser :: MH () showAttachmentFileBrowser = do     config <- use (csResources.crConfiguration)+    tId <- use csCurrentTeamId     filePath <- liftIO $ defaultAttachmentsPath config-    browser <- liftIO $ Just <$> FB.newFileBrowser FB.selectNonDirectories AttachmentFileBrowser filePath-    csEditState.cedFileBrowser .= browser+    browser <- liftIO $ Just <$> FB.newFileBrowser FB.selectNonDirectories (AttachmentFileBrowser tId) filePath+    csCurrentTeam.tsEditState.cedFileBrowser .= browser     setMode ManageAttachmentsBrowseFiles
src/Matterhorn/State/Autocomplete.hs view
@@ -22,7 +22,7 @@ import           Lens.Micro.Platform ( (%=), (.=), (.~), _Just, preuse ) import qualified Skylighting.Types as Sky -import           Network.Mattermost.Types (userId, channelId, Command(..))+import           Network.Mattermost.Types (userId, channelId, Command(..), TeamId) import qualified Network.Mattermost.Endpoints as MM  import           Matterhorn.Constants ( userSigil, normalChannelSigil )@@ -61,7 +61,7 @@     case result of         Nothing -> resetAutocomplete         Just (ty, runUpdater, searchString) -> do-            prevResult <- use (csEditState.cedAutocomplete)+            prevResult <- use (csCurrentTeam.tsEditState.cedAutocomplete)             -- We should update the completion state if EITHER:             --             -- 1) The type changed@@ -74,13 +74,13 @@                                 (maybe True ((== ty) . _acType) prevResult)) ||                                (maybe False ((/= ty) . _acType) prevResult)             when shouldUpdate $ do-                csEditState.cedAutocompletePending .= Just searchString+                csCurrentTeam.tsEditState.cedAutocompletePending .= Just searchString                 runUpdater ty ctx searchString  getCompleterForInput :: AutocompleteContext                      -> MH (Maybe (AutocompletionType, AutocompletionType -> AutocompleteContext -> Text -> MH (), Text)) getCompleterForInput ctx = do-    z <- use (csEditState.cedEditor.editContentsL)+    z <- use (csCurrentTeam.tsEditState.cedEditor.editContentsL)      let col = snd $ Z.cursorPosition z         curLine = Z.currentLine z@@ -105,21 +105,23 @@ doEmojiAutoCompletion ty ctx searchString = do     session <- getSession     em <- use (csResources.crEmoji)-    withCachedAutocompleteResults ctx ty searchString $+    tId <- use csCurrentTeamId+    withCachedAutocompleteResults tId ctx ty searchString $         doAsyncWith Preempt $ do             results <- getMatchingEmoji session em searchString             let alts = EmojiCompletion <$> results-            return $ Just $ setCompletionAlternatives ctx searchString alts ty+            return $ Just $ setCompletionAlternatives tId ctx searchString alts ty  doSyntaxAutoCompletion :: AutocompletionType -> AutocompleteContext -> Text -> MH () doSyntaxAutoCompletion ty ctx searchString = do     mapping <- use (csResources.crSyntaxMap)+    tId <- use csCurrentTeamId     let allNames = Sky.sShortname <$> M.elems mapping         (prefixed, notPrefixed) = partition isPrefixed $ filter match allNames         match = (((T.toLower searchString) `T.isInfixOf`) . T.toLower)         isPrefixed = (((T.toLower searchString) `T.isPrefixOf`) . T.toLower)         alts = SyntaxCompletion <$> (sort prefixed <> sort notPrefixed)-    setCompletionAlternatives ctx searchString alts ty+    setCompletionAlternatives tId ctx searchString alts ty  -- | This list of server commands should be hidden because they make -- assumptions about a web-based client or otherwise just don't make@@ -165,10 +167,10 @@ doCommandAutoCompletion :: AutocompletionType -> AutocompleteContext -> Text -> MH () doCommandAutoCompletion ty ctx searchString = do     session <- getSession-    myTid <- gets myTeamId+    myTid <- use csCurrentTeamId -    mCache <- preuse (csEditState.cedAutocomplete._Just.acCachedResponses)-    mActiveTy <- preuse (csEditState.cedAutocomplete._Just.acType)+    mCache <- preuse (csTeam(myTid).tsEditState.cedAutocomplete._Just.acCachedResponses)+    mActiveTy <- preuse (csTeam(myTid).tsEditState.cedAutocomplete._Just.acType)      -- Command completion works a little differently than the other     -- modes. To do command autocompletion, we want to query the server@@ -222,19 +224,19 @@                  return $ Just $ do                     -- Store the complete list of alterantives in the cache-                    setCompletionAlternatives ctx serverResponseKey alts ty+                    setCompletionAlternatives myTid ctx serverResponseKey alts ty                      -- Also store the list of alternatives specific to                     -- this search string                     let newAlts = sortBy (compareCommandAlts searchString) $                                   filter matches alts-                    setCompletionAlternatives ctx searchString newAlts ty+                    setCompletionAlternatives myTid ctx searchString newAlts ty         else case entry of            Just alts | mActiveTy == Just ACCommands ->                let newAlts = sortBy (compareCommandAlts searchString) $                              filter matches alts-               in setCompletionAlternatives ctx searchString newAlts ty+               in setCompletionAlternatives myTid ctx searchString newAlts ty            _ -> return ()  compareCommandAlts :: Text -> AutocompleteAlternative -> AutocompleteAlternative -> Ordering@@ -252,13 +254,13 @@ doUserAutoCompletion :: AutocompletionType -> AutocompleteContext -> Text -> MH () doUserAutoCompletion ty ctx searchString = do     session <- getSession-    myTid <- gets myTeamId+    tId <- use csCurrentTeamId     myUid <- gets myUserId-    cId <- use csCurrentChannelId+    cId <- use (csCurrentChannelId(tId)) -    withCachedAutocompleteResults ctx ty searchString $+    withCachedAutocompleteResults tId ctx ty searchString $         doAsyncWith Preempt $ do-            ac <- MM.mmAutocompleteUsers (Just myTid) (Just cId) searchString session+            ac <- MM.mmAutocompleteUsers (Just tId) (Just cId) searchString session              let active = Seq.filter (\u -> userId u /= myUid && (not $ userDeleted u))                 alts = F.toList $@@ -273,22 +275,22 @@                          , (T.toLower searchString) `T.isPrefixOf` specialMentionName m                          ] -            return $ Just $ setCompletionAlternatives ctx searchString (alts <> extras) ty+            return $ Just $ setCompletionAlternatives tId ctx searchString (alts <> extras) ty  doChannelAutoCompletion :: AutocompletionType -> AutocompleteContext -> Text -> MH () doChannelAutoCompletion ty ctx searchString = do     session <- getSession-    tId <- gets myTeamId+    tId <- use csCurrentTeamId     cs <- use csChannels -    withCachedAutocompleteResults ctx ty searchString $ do+    withCachedAutocompleteResults tId ctx ty searchString $ do         doAsyncWith Preempt $ do             results <- MM.mmAutocompleteChannels tId searchString session             let alts = F.toList $ (ChannelCompletion True <$> inChannels) <>                                   (ChannelCompletion False <$> notInChannels)                 (inChannels, notInChannels) = Seq.partition isMember results                 isMember c = isJust $ findChannelById (channelId c) cs-            return $ Just $ setCompletionAlternatives ctx searchString alts ty+            return $ Just $ setCompletionAlternatives tId ctx searchString alts ty  -- Utility functions @@ -296,7 +298,8 @@ -- a given search string. If the cache contains no such entry (keyed -- on search string), run the specified action, which is assumed to be -- responsible for fetching the completion results from the server.-withCachedAutocompleteResults :: AutocompleteContext+withCachedAutocompleteResults :: TeamId+                              -> AutocompleteContext                               -- ^ The autocomplete context                               -> AutocompletionType                               -- ^ The type of autocompletion we're@@ -307,26 +310,27 @@                               -> MH ()                               -- ^ The action to execute on a cache miss                               -> MH ()-withCachedAutocompleteResults ctx ty searchString act = do-    mCache <- preuse (csEditState.cedAutocomplete._Just.acCachedResponses)-    mActiveTy <- preuse (csEditState.cedAutocomplete._Just.acType)+withCachedAutocompleteResults tId ctx ty searchString act = do+    mCache <- preuse (csTeam(tId).tsEditState.cedAutocomplete._Just.acCachedResponses)+    mActiveTy <- preuse (csTeam(tId).tsEditState.cedAutocomplete._Just.acType)      case Just ty == mActiveTy of         True ->             -- Does the cache have results for this search string? If             -- so, use them; otherwise invoke the specified action.             case HM.lookup searchString =<< mCache of-                Just alts -> setCompletionAlternatives ctx searchString alts ty+                Just alts -> setCompletionAlternatives tId ctx searchString alts ty                 Nothing -> act         False -> act -setCompletionAlternatives :: AutocompleteContext+setCompletionAlternatives :: TeamId+                          -> AutocompleteContext                           -> Text                           -> [AutocompleteAlternative]                           -> AutocompletionType                           -> MH ()-setCompletionAlternatives ctx searchString alts ty = do-    let list = L.list CompletionList (V.fromList $ F.toList alts) 1+setCompletionAlternatives tId ctx searchString alts ty = do+    let list = L.list (CompletionList tId) (V.fromList $ F.toList alts) 1         state = AutocompleteState { _acPreviousSearchString = searchString                                   , _acCompletionList =                                       list & L.listSelectedL .~ Nothing@@ -334,13 +338,13 @@                                   , _acType = ty                                   } -    pending <- use (csEditState.cedAutocompletePending)+    pending <- use (csTeam(tId).tsEditState.cedAutocompletePending)     case pending of         Just val | val == searchString -> do              -- If there is already state, update it, but also cache the             -- search results.-            csEditState.cedAutocomplete %= \prev ->+            csTeam(tId).tsEditState.cedAutocomplete %= \prev ->                 let newState = case prev of                         Nothing ->                             state@@ -349,7 +353,7 @@                                 HM.insert searchString alts (oldState^.acCachedResponses)                 in Just newState -            mh $ vScrollToBeginning $ viewportScroll CompletionList+            mh $ vScrollToBeginning $ viewportScroll $ CompletionList tId              when (autocompleteFirstMatch ctx) $                 tabComplete Forwards
+ src/Matterhorn/State/ChannelList.hs view
@@ -0,0 +1,164 @@+module Matterhorn.State.ChannelList+  ( updateSidebar+  , updateWindowTitle+  , toggleChannelListVisibility+  , showChannelInSidebar+  )+where++import           Prelude ()+import           Matterhorn.Prelude++import           Brick.Main ( getVtyHandle, invalidateCache, invalidateCacheEntry )+import qualified Data.HashMap.Strict as HM+import qualified Data.Sequence as Seq+import           Data.Time.Clock ( getCurrentTime )+import qualified Graphics.Vty as Vty+import           Lens.Micro.Platform++import           Network.Mattermost.Types+import           Network.Mattermost.Lenses+import qualified Network.Mattermost.Endpoints as MM++import {-# SOURCE #-} Matterhorn.State.Messages ( fetchVisibleIfNeeded )+import           Matterhorn.Types+import           Matterhorn.State.Async+import qualified Matterhorn.Zipper as Z+++-- | Update the sidebar for the specified team state only, or all team+-- states if not given a specific team ID.+--+-- In either case, schedule user status fetches for all users mentioned+-- in the current team's sidebar. (This should be safe because all+-- sidebars should contain the same user list.)+updateSidebar :: Maybe TeamId -> MH ()+updateSidebar mTid = do+    case mTid of+        Nothing -> do+            ts <- use csTeams+            forM_ (HM.keys ts) updateTeamSidebar+        Just tId -> do+            updateTeamSidebar tId++    -- Schedule the current team's sidebar for user status updates at+    -- the end of this MH action. This is okay because all team sidebars+    -- should include the same set of DM channels.+    z <- use (csCurrentTeam.tsFocus)+    myId <- gets myUserId+    scheduleUserStatusFetches $ myId : userIdsFromZipper z++    updateWindowTitle++updateWindowTitle :: MH ()+updateWindowTitle = do+    -- Update the window title based on the unread status of the+    -- channels in all teams.+    ts <- use csTeams+    unreadCounts <- forM (HM.keys ts) $ \tId -> do+        z <- use (csTeam(tId).tsFocus)+        return $ sum $ (channelListGroupUnread . fst) <$> Z.toList z++    let title = "matterhorn" <> if unread > 0 then "(" <> show unread <> ")" else ""+        unread = sum unreadCounts++    vty <- mh getVtyHandle+    liftIO $ Vty.setWindowTitle vty title++updateTeamSidebar :: TeamId -> MH ()+updateTeamSidebar tId = do+    -- Invalidate the cached sidebar rendering since we are about to+    -- change the underlying state+    mh $ invalidateCacheEntry $ ChannelSidebar tId++    -- Get the currently-focused channel ID so we can compare after the+    -- zipper is rebuilt+    cconfig <- use csClientConfig+    oldCid <- use (csCurrentChannelId tId)++    -- Update the zipper+    cs <- use csChannels+    us <- getUsers+    prefs <- use (csResources.crUserPreferences)+    now <- liftIO getCurrentTime+    config <- use (csResources.crConfiguration)++    let zl = mkChannelZipperList now config tId cconfig prefs cs us+    csTeam(tId).tsFocus %= Z.updateList zl++    -- If the zipper rebuild caused the current channel to change, such+    -- as when the previously-focused channel was removed, we need to+    -- call fetchVisibleIfNeeded on the newly-focused channel to ensure+    -- that it gets loaded.+    newCid <- use (csCurrentChannelId tId)+    when (newCid /= oldCid) $+        fetchVisibleIfNeeded++toggleChannelListVisibility :: MH ()+toggleChannelListVisibility = do+    mh invalidateCache+    csResources.crConfiguration.configShowChannelListL %= not++showChannelInSidebar :: ChannelId -> Bool -> MH ()+showChannelInSidebar cId setPending = do+    mChan <- preuse $ csChannel cId+    me <- gets myUser+    prefs <- use (csResources.crUserPreferences)+    session <- getSession++    case mChan of+        Nothing ->+          -- The requested channel doesn't actually exist yet, so no+          -- action can be taken.  It's likely that this is a+          -- pendingChannel situation and not all of the operations to+          -- locally define the channel have completed, in which case+          -- this code will be re-entered later and the mChan will be+          -- known.+          return ()+        Just ch -> do++            -- Able to successfully switch to a known channel.  This+            -- should clear any pending channel intention.  If the+            -- intention was for this channel, then: done.  If the+            -- intention was for a different channel, reaching this+            -- point means that the pending is still outstanding but+            -- that the user identified a new channel which *was*+            -- displayable, and the UI should always prefer to SATISFY+            -- the user's latest request over any pending/background+            -- task.+            csCurrentTeam.tsPendingChannelChange .= Nothing++            now <- liftIO getCurrentTime+            csChannel(cId).ccInfo.cdSidebarShowOverride .= Just now+            updateSidebar (ch^.ccInfo.cdTeamId)++            curTid <- use csCurrentTeamId+            let tId = fromMaybe curTid (ch^.ccInfo.cdTeamId)++            case ch^.ccInfo.cdType of+                Direct -> do+                    let Just uId = ch^.ccInfo.cdDMUserId+                    case dmChannelShowPreference prefs uId of+                        Just False -> do+                            let pref = showDirectChannelPref (me^.userIdL) uId True+                            when setPending $+                                csCurrentTeam.tsPendingChannelChange .=+                                    Just (ChangeByChannelId tId (ch^.ccInfo.cdChannelId) Nothing)+                            doAsyncWith Preempt $ do+                                MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session+                                return Nothing+                        _ -> return ()++                Group ->+                    case groupChannelShowPreference prefs cId of+                        Just False -> do+                            let pref = showGroupChannelPref cId (me^.userIdL)+                            when setPending $+                                csCurrentTeam.tsPendingChannelChange .=+                                    Just (ChangeByChannelId tId (ch^.ccInfo.cdChannelId) Nothing)+                            doAsyncWith Preempt $ do+                                MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session+                                return Nothing+                        _ -> return ()++                _ -> return ()
src/Matterhorn/State/ChannelListOverlay.hs view
@@ -27,9 +27,9 @@  enterChannelListOverlayMode :: MH () enterChannelListOverlayMode = do-    myTId <- gets myTeamId+    myTId <- use csCurrentTeamId     myChannels <- use (csChannels.to (filteredChannelIds (const True)))-    enterListOverlayMode csChannelListOverlay ChannelListOverlay+    enterListOverlayMode (csTeam(myTId).tsChannelListOverlay) ChannelListOverlay         AllChannels enterHandler (fetchResults myTId myChannels)  enterHandler :: Channel -> MH Bool@@ -75,7 +75,7 @@ -- cursor, and then check to see whether the modification warrants a -- prefetch of more search results. channelListMove :: (L.List Name Channel -> L.List Name Channel) -> MH ()-channelListMove = listOverlayMove csChannelListOverlay+channelListMove = listOverlayMove (csCurrentTeam.tsChannelListOverlay)  -- | The number of channels in a "page" for cursor movement purposes. channelListPageSize :: Int
src/Matterhorn/State/ChannelSelect.hs view
@@ -24,14 +24,15 @@ beginChannelSelect :: MH () beginChannelSelect = do     setMode ChannelSelect-    csChannelSelectState .= emptyChannelSelectState+    tId <- use csCurrentTeamId+    csCurrentTeam.tsChannelSelectState .= emptyChannelSelectState tId     updateChannelSelectMatches      -- Preserve the current channel selection when initializing channel     -- selection mode-    zipper <- use csFocus+    zipper <- use (csCurrentTeam.tsFocus)     let isCurrentFocus m = Just (matchEntry m) == Z.focus zipper-    csChannelSelectState.channelSelectMatches %= Z.findRight isCurrentFocus+    csCurrentTeam.tsChannelSelectState.channelSelectMatches %= Z.findRight isCurrentFocus  -- Select the next match in channel selection mode. channelSelectNext :: MH ()@@ -45,7 +46,7 @@ updateChannelSelectMatches = do     st <- use id -    input <- use (csChannelSelectState.channelSelectInput)+    input <- use (csCurrentTeam.tsChannelSelectState.channelSelectInput)     cconfig <- use csClientConfig     prefs <- use (csResources.crUserPreferences) @@ -82,7 +83,8 @@         preserveFocus Nothing _ = False         preserveFocus (Just m) m2 = matchEntry m == matchEntry m2 -    csChannelSelectState.channelSelectMatches %= (Z.updateListBy preserveFocus $ Z.toList $ Z.maybeMapZipper matches (st^.csFocus))+    csCurrentTeam.tsChannelSelectState.channelSelectMatches %=+        (Z.updateListBy preserveFocus $ Z.toList $ Z.maybeMapZipper matches (st^.csCurrentTeam.tsFocus))  applySelectPattern :: ChannelSelectPattern -> ChannelListEntry -> Text -> Maybe ChannelSelectMatch applySelectPattern CSPAny entry chanName = do@@ -152,4 +154,4 @@ updateSelectedMatch :: (Z.Zipper ChannelListGroup ChannelSelectMatch -> Z.Zipper ChannelListGroup ChannelSelectMatch)                     -> MH () updateSelectedMatch nextItem =-    csChannelSelectState.channelSelectMatches %= nextItem+    csCurrentTeam.tsChannelSelectState.channelSelectMatches %= nextItem
src/Matterhorn/State/ChannelTopicWindow.hs view
@@ -3,6 +3,9 @@   ) where +import           Prelude ()+import           Matterhorn.Prelude+ import           Lens.Micro.Platform ( (.=) )  import           Matterhorn.Types@@ -12,5 +15,6 @@ openChannelTopicWindow :: MH () openChannelTopicWindow = do     t <- getCurrentChannelTopic-    csChannelTopicDialog .= newChannelTopicDialog t+    tId <- use csCurrentTeamId+    csCurrentTeam.tsChannelTopicDialog .= newChannelTopicDialog tId t     setMode ChannelTopicWindow
src/Matterhorn/State/Channels.hs view
@@ -1,9 +1,7 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} module Matterhorn.State.Channels-  ( updateSidebar-  , updateViewed-  , updateViewedChan+  ( updateViewed   , refreshChannel   , refreshChannelsAndUsers   , setFocus@@ -16,7 +14,6 @@   , nextUnreadChannel   , nextUnreadUserOrChannel   , createOrFocusDMChannel-  , clearChannelUnreadStatus   , prevChannel   , nextChannel   , recentChannel@@ -46,17 +43,16 @@   , setChannelTopic   , getCurrentChannelTopic   , beginCurrentChannelDeleteConfirm-  , toggleChannelListVisibility   , toggleExpandedChannelTopics-  , showChannelInSidebar   , updateChannelNotifyProps+  , renameChannelUrl   ) where  import           Prelude () import           Matterhorn.Prelude -import           Brick.Main ( getVtyHandle, viewportScroll, vScrollToBeginning+import           Brick.Main ( viewportScroll, vScrollToBeginning                             , invalidateCache, invalidateCacheEntry ) import           Brick.Widgets.Edit ( applyEdit, getEditContents, editContentsL ) import           Control.Concurrent.Async ( runConcurrently, Concurrently(..) )@@ -71,7 +67,6 @@ import qualified Data.Text as T import           Data.Text.Zipper ( textZipper, clearZipper, insertMany, gotoEOL ) import           Data.Time.Clock ( getCurrentTime )-import qualified Graphics.Vty as Vty import           Lens.Micro.Platform  import qualified Network.Mattermost.Endpoints as MM@@ -82,6 +77,7 @@ import           Matterhorn.InputHistory import           Matterhorn.State.Common import {-# SOURCE #-} Matterhorn.State.Messages ( fetchVisibleIfNeeded )+import           Matterhorn.State.ChannelList import           Matterhorn.State.Users import           Matterhorn.State.Flagging import           Matterhorn.Types@@ -90,53 +86,11 @@ import qualified Matterhorn.Zipper as Z  -updateSidebar :: MH ()-updateSidebar = do-    -- Invalidate the cached sidebar rendering since we are about to-    -- change the underlying state-    mh $ invalidateCacheEntry ChannelSidebar--    -- Get the currently-focused channel ID so we can compare after the-    -- zipper is rebuilt-    cconfig <- use csClientConfig-    oldCid <- use csCurrentChannelId--    -- Update the zipper-    cs <- use csChannels-    us <- getUsers-    prefs <- use (csResources.crUserPreferences)-    now <- liftIO getCurrentTime-    config <- use (csResources.crConfiguration)--    let zl = mkChannelZipperList now config cconfig prefs cs us-    csFocus %= Z.updateList zl--    -- Schedule the current sidebar for user status updates at the end-    -- of this MH action.-    newZ <- use csFocus-    myId <- gets myUserId-    scheduleUserStatusFetches $ myId : userIdsFromZipper newZ--    -- Update the window title based on the unread status of the-    -- channels.-    let unread = sum $ (channelListGroupUnread . fst) <$> zl-        title = "matterhorn" <> if unread > 0 then "(" <> show unread <> ")" else ""--    vty <- mh getVtyHandle-    liftIO $ Vty.setWindowTitle vty title--    -- If the zipper rebuild caused the current channel to change, such-    -- as when the previously-focused channel was removed, we need to-    -- call fetchVisibleIfNeeded on the newly-focused channel to ensure-    -- that it gets loaded.-    newCid <- use csCurrentChannelId-    when (newCid /= oldCid) $-        fetchVisibleIfNeeded- updateViewed :: Bool -> MH () updateViewed updatePrev = do     csCurrentChannel.ccInfo.cdMentionCount .= 0-    updateViewedChan updatePrev =<< use csCurrentChannelId+    tId <- use csCurrentTeamId+    updateViewedChan updatePrev =<< use (csCurrentChannelId tId)  -- | When a new channel has been selected for viewing, this will -- notify the server of the change, and also update the local channel@@ -149,15 +103,19 @@ -- of the specified channel, False should be provided. updateViewedChan :: Bool -> ChannelId -> MH () updateViewedChan updatePrev cId = use csConnectionStatus >>= \case+    -- Only do this if we're connected to avoid triggering noisy+    -- exceptions.     Connected -> do-        -- Only do this if we're connected to avoid triggering noisy-        -- exceptions.-        pId <- if updatePrev-               then use csRecentChannel-               else return Nothing-        doAsyncChannelMM Preempt cId-          (\s c -> MM.mmViewChannel UserMe c pId s)-          (\c () -> Just $ setLastViewedFor pId c)+        withChannel cId $ \chan -> do+            pId <- if updatePrev+                   then do+                       case chan^.ccInfo.cdTeamId of+                           Just tId -> use (csTeam(tId).tsRecentChannel)+                           Nothing -> use (csCurrentTeam.tsRecentChannel)+                   else return Nothing+            doAsyncChannelMM Preempt cId+              (\s c -> MM.mmViewChannel UserMe c pId s)+              (\c () -> Just $ setLastViewedFor pId c)     Disconnected ->         -- Cannot update server; make no local updates to avoid getting         -- out of sync with the server. Assumes that this is a temporary@@ -167,19 +125,17 @@         -- this state is irrelevant.         return () -toggleChannelListVisibility :: MH ()-toggleChannelListVisibility = do-    mh invalidateCache-    csShowChannelList %= not- toggleExpandedChannelTopics :: MH () toggleExpandedChannelTopics = do     mh invalidateCache-    csShowExpandedChannelTopics %= not+    csResources.crConfiguration.configShowExpandedChannelTopicsL %= not  -- | If the current channel is a DM channel with a single user or a -- group of users, hide it from the sidebar and adjust the server-side--- preference to hide it persistently.+-- preference to hide it persistently. Note that this does not actually+-- hide the channel in our UI; we hide it in response to the preference+-- change websocket event triggered by this function's API interaction+-- with the server. -- -- If the current channel is any other kind of channel, complain with a -- usage error.@@ -261,14 +217,17 @@ refreshChannelsAndUsers :: MH () refreshChannelsAndUsers = do     session <- getSession-    myTId <- gets myTeamId     me <- gets myUser     knownUsers <- gets allUserIds+    ts <- use csTeams     doAsyncWith Preempt $ do-      (chans, datas) <- runConcurrently $ (,)-                       <$> Concurrently (MM.mmGetChannelsForUser UserMe myTId session)-                       <*> Concurrently (MM.mmGetChannelMembersForUser UserMe myTId session)+      pairs <- forM (HM.keys ts) $ \tId -> do+          runConcurrently $ (,)+              <$> Concurrently (MM.mmGetChannelsForUser UserMe tId session)+              <*> Concurrently (MM.mmGetChannelMembersForUser UserMe tId session) +      let (chans, datas) = (mconcat $ fst <$> pairs, mconcat $ snd <$> pairs)+       -- Collect all user IDs associated with DM channels so we can       -- bulk-fetch their user records.       let dmUsers = catMaybes $ flip map (F.toList chans) $ \chan ->@@ -288,7 +247,7 @@           handleNewUsers (Seq.fromList uIdsToFetch) $ do               -- Then refresh all loaded channels               forM_ chansWithData $ uncurry (refreshChannel SidebarUpdateDeferred)-              updateSidebar+              updateSidebar Nothing  -- | Refresh information about a specific channel.  The channel -- metadata is refreshed, and if this is a loaded channel, the@@ -305,14 +264,16 @@ -- immediate setting is passed here. refreshChannel :: SidebarUpdate -> Channel -> ChannelMember -> MH () refreshChannel upd chan member = do-    let cId = getId chan-    myTId <- gets myTeamId-    let ourTeam = channelTeamId chan == Nothing ||-                  Just myTId == channelTeamId chan+    ts <- use csTeams+    let ourTeams = HM.keys ts+        isOurTeam = case channelTeamId chan of+            Nothing -> True+            Just tId -> tId `elem` ourTeams -    case not ourTeam of-        True -> return ()-        False -> do+    case isOurTeam of+        False -> return ()+        True -> do+            let cId = getId chan             -- If this channel is unknown, register it first.             mChan <- preuse (csChannel(cId))             when (isNothing mChan) $@@ -402,7 +363,7 @@                     -- switch to this channel when doing a sidebar                     -- update, since that's the only case where it's                     -- possible to do so.-                    updateSidebar+                    updateSidebar (cChannel^.ccInfo.cdTeamId)                      -- Finally, set our focus to the newly created                     -- channel if the caller requested a change of@@ -431,10 +392,11 @@ -- specified channel. checkPendingChannelChange :: ChannelId -> MH (Maybe (Maybe (MH ()))) checkPendingChannelChange cId = do-    ch <- use csPendingChannelChange+    ch <- use (csCurrentTeam.tsPendingChannelChange)+    curTid <- use csCurrentTeamId     return $ case ch of-        Just (ChangeByChannelId i act) ->-            if i == cId then Just act else Nothing+        Just (ChangeByChannelId tId i act) ->+            if i == cId && curTid == tId then Just act else Nothing         _ -> Nothing  -- | Check to see whether the specified channel has been queued up to@@ -448,7 +410,7 @@ -- specified channel. checkPendingChannelChangeByUserId :: UserId -> MH Bool checkPendingChannelChangeByUserId uId = do-    ch <- use csPendingChannelChange+    ch <- use (csCurrentTeam.tsPendingChannelChange)     return $ case ch of         Just (ChangeByUserId i) ->             i == uId@@ -461,94 +423,37 @@ updateChannelInfo cid new member = do     mh $ invalidateCacheEntry $ ChannelMessages cid     csChannel(cid).ccInfo %= channelInfoFromChannelWithData new member-    updateSidebar+    withChannel cid $ \chan ->+        updateSidebar (chan^.ccInfo.cdTeamId)  setFocus :: ChannelId -> MH () setFocus cId = do     showChannelInSidebar cId True     setFocusWith True (Z.findRight ((== cId) . channelListEntryChannelId)) (return ()) -showChannelInSidebar :: ChannelId -> Bool -> MH ()-showChannelInSidebar cId setPending = do-    mChan <- preuse $ csChannel cId-    me <- gets myUser-    prefs <- use (csResources.crUserPreferences)-    session <- getSession--    case mChan of-        Nothing ->-          -- The requested channel doesn't actually exist yet, so no-          -- action can be taken.  It's likely that this is a-          -- pendingChannel situation and not all of the operations to-          -- locally define the channel have completed, in which case-          -- this code will be re-entered later and the mChan will be-          -- known.-          return ()-        Just ch -> do--            -- Able to successfully switch to a known channel.  This-            -- should clear any pending channel intention.  If the-            -- intention was for this channel, then: done.  If the-            -- intention was for a different channel, reaching this-            -- point means that the pending is still outstanding but-            -- that the user identified a new channel which *was*-            -- displayable, and the UI should always prefer to SATISFY-            -- the user's latest request over any pending/background-            -- task.-            csPendingChannelChange .= Nothing--            now <- liftIO getCurrentTime-            csChannel(cId).ccInfo.cdSidebarShowOverride .= Just now-            updateSidebar--            case ch^.ccInfo.cdType of-                Direct -> do-                    let Just uId = ch^.ccInfo.cdDMUserId-                    case dmChannelShowPreference prefs uId of-                        Just False -> do-                            let pref = showDirectChannelPref (me^.userIdL) uId True-                            when setPending $-                                csPendingChannelChange .= Just (ChangeByChannelId (ch^.ccInfo.cdChannelId) Nothing)-                            doAsyncWith Preempt $ do-                                MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session-                                return Nothing-                        _ -> return ()--                Group ->-                    case groupChannelShowPreference prefs cId of-                        Just False -> do-                            let pref = showGroupChannelPref cId (me^.userIdL)-                            when setPending $-                                csPendingChannelChange .= Just (ChangeByChannelId (ch^.ccInfo.cdChannelId) Nothing)-                            doAsyncWith Preempt $ do-                                MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session-                                return Nothing-                        _ -> return ()--                _ -> return ()- setFocusWith :: Bool              -> (Zipper ChannelListGroup ChannelListEntry              -> Zipper ChannelListGroup ChannelListEntry)              -> MH ()              -> MH () setFocusWith updatePrev f onNoChange = do-    oldZipper <- use csFocus+    tId <- use csCurrentTeamId+    oldZipper <- use (csCurrentTeam.tsFocus)     let newZipper = f oldZipper         newFocus = Z.focus newZipper         oldFocus = Z.focus oldZipper      -- If we aren't changing anything, skip all the book-keeping because-    -- we'll end up clobbering things like csRecentChannel.+    -- we'll end up clobbering things like tsRecentChannel.     if newFocus /= oldFocus        then do-          mh $ invalidateCacheEntry ChannelSidebar+          mh $ invalidateCacheEntry $ ChannelSidebar tId           resetAutocomplete           preChangeChannelCommon-          csFocus .= newZipper+          csCurrentTeam.tsFocus .= newZipper            now <- liftIO getCurrentTime-          newCid <- use csCurrentChannelId+          newCid <- use (csCurrentChannelId tId)           csChannel(newCid).ccInfo.cdSidebarShowOverride .= Just now            updateViewed updatePrev@@ -564,90 +469,70 @@  loadLastEdit :: MH () loadLastEdit = do-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)      oldEphemeral <- preuse (csChannel(cId).ccEditState)     case oldEphemeral of         Nothing -> return ()-        Just e -> csEditState.cedEphemeral .= e+        Just e -> csCurrentTeam.tsEditState.cedEphemeral .= e      loadLastChannelInput  loadLastChannelInput :: MH () loadLastChannelInput = do-    cId <- use csCurrentChannelId-    inputHistoryPos <- use (csEditState.cedEphemeral.eesInputHistoryPosition)+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    inputHistoryPos <- use (csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition)     case inputHistoryPos of         Just i -> loadHistoryEntryToEditor cId i         Nothing -> do-            (lastEdit, lastEditMode) <- use (csEditState.cedEphemeral.eesLastInput)-            csEditState.cedEditor %= (applyEdit $ insertMany lastEdit . clearZipper)-            csEditState.cedEditMode .= lastEditMode+            (lastEdit, lastEditMode) <- use (csCurrentTeam.tsEditState.cedEphemeral.eesLastInput)+            csCurrentTeam.tsEditState.cedEditor %= (applyEdit $ insertMany lastEdit . clearZipper)+            csCurrentTeam.tsEditState.cedEditMode .= lastEditMode  updateChannelListScroll :: MH () updateChannelListScroll = do-    mh $ vScrollToBeginning (viewportScroll ChannelList)+    tId <- use csCurrentTeamId+    mh $ vScrollToBeginning (viewportScroll $ ChannelList tId)  preChangeChannelCommon :: MH () preChangeChannelCommon = do-    cId <- use csCurrentChannelId-    csRecentChannel .= Just cId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    csCurrentTeam.tsRecentChannel .= Just cId     saveCurrentEdit  resetEditorState :: MH () resetEditorState = do-    csEditState.cedEditMode .= NewPost+    csCurrentTeam.tsEditState.cedEditMode .= NewPost     clearEditor  clearEditor :: MH ()-clearEditor = csEditState.cedEditor %= applyEdit clearZipper+clearEditor = csCurrentTeam.tsEditState.cedEditor %= applyEdit clearZipper  saveCurrentEdit :: MH () saveCurrentEdit = do     saveCurrentChannelInput -    oldEphemeral <- use (csEditState.cedEphemeral)-    cId <- use csCurrentChannelId+    oldEphemeral <- use (csCurrentTeam.tsEditState.cedEphemeral)+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     csChannel(cId).ccEditState .= oldEphemeral  saveCurrentChannelInput :: MH () saveCurrentChannelInput = do-    cmdLine <- use (csEditState.cedEditor)-    mode <- use (csEditState.cedEditMode)+    cmdLine <- use (csCurrentTeam.tsEditState.cedEditor)+    mode <- use (csCurrentTeam.tsEditState.cedEditMode)      -- Only save the editor contents if the user is not navigating the     -- history.-    inputHistoryPos <- use (csEditState.cedEphemeral.eesInputHistoryPosition)+    inputHistoryPos <- use (csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition)      when (isNothing inputHistoryPos) $-        csEditState.cedEphemeral.eesLastInput .=+        csCurrentTeam.tsEditState.cedEphemeral.eesLastInput .=            (T.intercalate "\n" $ getEditContents $ cmdLine, mode) -hideGroupChannelPref :: ChannelId -> UserId -> Preference-hideGroupChannelPref cId uId =-    Preference { preferenceCategory = PreferenceCategoryGroupChannelShow-               , preferenceValue = PreferenceValue "false"-               , preferenceName = PreferenceName $ idString cId-               , preferenceUserId = uId-               }--showGroupChannelPref :: ChannelId -> UserId -> Preference-showGroupChannelPref cId uId =-    Preference { preferenceCategory = PreferenceCategoryGroupChannelShow-               , preferenceValue = PreferenceValue "true"-               , preferenceName = PreferenceName $ idString cId-               , preferenceUserId = uId-               }--showDirectChannelPref :: UserId -> UserId -> Bool -> Preference-showDirectChannelPref myId otherId s =-    Preference { preferenceCategory = PreferenceCategoryDirectChannelShow-               , preferenceValue = if s then PreferenceValue "true"-                                        else PreferenceValue "false"-               , preferenceName = PreferenceName $ idString otherId-               , preferenceUserId = myId-               }- applyPreferenceChange :: Preference -> MH () applyPreferenceChange pref = do     -- always update our user preferences accordingly@@ -661,8 +546,11 @@       | Just f <- preferenceToFlaggedPost pref -> do           updateMessageFlag (flaggedPostId f) (flaggedPostStatus f) +      | Just tIds <- preferenceToTeamOrder pref ->+          applyTeamOrder tIds+       | Just d <- preferenceToDirectChannelShowStatus pref -> do-          updateSidebar+          updateSidebar Nothing            cs <- use csChannels @@ -683,7 +571,7 @@                   csChannel(cId).ccInfo.cdSidebarShowOverride .= Nothing        | Just g <- preferenceToGroupChannelPreference pref -> do-          updateSidebar+          updateSidebar Nothing            -- We need to check on whether this preference was to show a           -- channel and, if so, whether it was the one we attempted to@@ -716,16 +604,27 @@ removeChannelFromState cId = do     withChannel cId $ \ chan -> do         when (chan^.ccInfo.cdType /= Direct) $ do-            origFocus <- use csCurrentChannelId-            when (origFocus == cId) nextChannelSkipPrevView+            case chan^.ccInfo.cdTeamId of+                Nothing -> return ()+                Just tId -> do+                    origFocus <- use (csCurrentChannelId tId)+                    when (origFocus == cId) nextChannelSkipPrevView+             -- Update input history-            csEditState.cedInputHistory         %= removeChannelHistory cId+            csInputHistory %= removeChannelHistory cId             -- Update msgMap-            csChannels                          %= removeChannel cId-            -- Remove from focus zipper-            csFocus %= Z.filterZipper ((/= cId) . channelListEntryChannelId)-            updateSidebar+            csChannels %= removeChannel cId +            case chan^.ccInfo.cdTeamId of+                Nothing -> do+                    ts <- use csTeams+                    forM_ (HM.keys ts) $ \tId ->+                        csTeam(tId).tsFocus %= Z.filterZipper ((/= cId) . channelListEntryChannelId)+                Just tId -> do+                    csTeam(tId).tsFocus %= Z.filterZipper ((/= cId) . channelListEntryChannelId)++            updateSidebar $ chan^.ccInfo.cdTeamId+ nextChannel :: MH () nextChannel = do     resetReturnChannel@@ -743,26 +642,27 @@  recentChannel :: MH () recentChannel = do-  recent <- use csRecentChannel+  recent <- use (csCurrentTeam.tsRecentChannel)   case recent of     Nothing  -> return ()     Just cId -> do-        ret <- use csReturnChannel+        ret <- use (csCurrentTeam.tsReturnChannel)         when (ret == Just cId) resetReturnChannel         setFocus cId  resetReturnChannel :: MH () resetReturnChannel = do-  val <- use csReturnChannel+  val <- use (csCurrentTeam.tsReturnChannel)   case val of       Nothing -> return ()       Just _ -> do-          mh $ invalidateCacheEntry ChannelSidebar-          csReturnChannel .= Nothing+          tId <- use csCurrentTeamId+          mh $ invalidateCacheEntry $ ChannelSidebar tId+          csCurrentTeam.tsReturnChannel .= Nothing  gotoReturnChannel :: MH () gotoReturnChannel = do-  ret <- use csReturnChannel+  ret <- use (csCurrentTeam.tsReturnChannel)   case ret of     Nothing  -> return ()     Just cId -> do@@ -771,12 +671,13 @@  setReturnChannel :: MH () setReturnChannel = do-  ret <- use csReturnChannel+  ret <- use (csCurrentTeam.tsReturnChannel)   case ret of     Nothing  -> do-        cId <- use csCurrentChannelId-        csReturnChannel .= Just cId-        mh $ invalidateCacheEntry ChannelSidebar+        tId <- use csCurrentTeamId+        cId <- use (csCurrentChannelId tId)+        csCurrentTeam.tsReturnChannel .= Just cId+        mh $ invalidateCacheEntry $ ChannelSidebar tId     Just _ -> return ()  nextUnreadChannel :: MH ()@@ -854,21 +755,23 @@     -- for the next candidate channel.     Z.findRight (\e ->                 let cId = channelListEntryChannelId e-                in hasUnread st cId && (cId /= st^.csCurrentChannelId))+                in hasUnread st cId && (cId /= st^.csCurrentChannelId(st^.csCurrentTeamId)))  getNextUnreadUserOrChannel :: ChatState                            -> Zipper a ChannelListEntry                            -> Zipper a ChannelListEntry getNextUnreadUserOrChannel st z =     -- Find the next unread channel, prefering direct messages-    let cur = st^.csCurrentChannelId+    let cur = st^.csCurrentChannelId(st^.csCurrentTeamId)         matches e = entryIsDMEntry e && isFresh (channelListEntryChannelId e)         isFresh c = hasUnread st c && (c /= cur)     in fromMaybe (Z.findRight (isFresh . channelListEntryChannelId) z)                  (Z.maybeFindRight matches z)  leaveCurrentChannel :: MH ()-leaveCurrentChannel = use csCurrentChannelId >>= leaveChannel+leaveCurrentChannel = do+    tId <- use csCurrentTeamId+    use (csCurrentChannelId tId) >>= leaveChannel  createGroupChannel :: Text -> MH () createGroupChannel usernameList = do@@ -893,7 +796,9 @@                           -- we can just switch to it.                           setFocus (channelId chan)                       Nothing -> do-                          csPendingChannelChange .= (Just $ ChangeByChannelId (channelId chan) Nothing)+                          tId <- use csCurrentTeamId+                          csCurrentTeam.tsPendingChannelChange .=+                              (Just $ ChangeByChannelId tId (channelId chan) Nothing)                           let pref = showGroupChannelPref (channelId chan) (me^.userIdL)                           doAsyncWith Normal $ do                             MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session@@ -910,46 +815,48 @@ channelHistoryForward = do     resetAutocomplete -    cId <- use csCurrentChannelId-    inputHistoryPos <- use (csEditState.cedEphemeral.eesInputHistoryPosition)+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    inputHistoryPos <- use (csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition)     case inputHistoryPos of         Just i           | i == 0 -> do             -- Transition out of history navigation-            csEditState.cedEphemeral.eesInputHistoryPosition .= Nothing+            csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition .= Nothing             loadLastChannelInput           | otherwise -> do             let newI = i - 1             loadHistoryEntryToEditor cId newI-            csEditState.cedEphemeral.eesInputHistoryPosition .= (Just newI)+            csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition .= (Just newI)         _ -> return ()  loadHistoryEntryToEditor :: ChannelId -> Int -> MH () loadHistoryEntryToEditor cId idx = do-    inputHistory <- use (csEditState.cedInputHistory)+    inputHistory <- use csInputHistory     case getHistoryEntry cId idx inputHistory of         Nothing -> return ()         Just entry -> do             let eLines = T.lines entry                 mv = if length eLines == 1 then gotoEOL else id-            csEditState.cedEditor.editContentsL .= (mv $ textZipper eLines Nothing)+            csCurrentTeam.tsEditState.cedEditor.editContentsL .= (mv $ textZipper eLines Nothing)  channelHistoryBackward :: MH () channelHistoryBackward = do     resetAutocomplete -    cId <- use csCurrentChannelId-    inputHistoryPos <- use (csEditState.cedEphemeral.eesInputHistoryPosition)+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    inputHistoryPos <- use (csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition)     saveCurrentChannelInput      let newI = maybe 0 (+ 1) inputHistoryPos     loadHistoryEntryToEditor cId newI-    csEditState.cedEphemeral.eesInputHistoryPosition .= (Just newI)+    csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition .= (Just newI)  createOrdinaryChannel :: Bool -> Text -> MH () createOrdinaryChannel public name = do     session <- getSession-    myTId <- gets myTeamId+    myTId <- use csCurrentTeamId     doAsyncWith Preempt $ do         -- create a new chat channel         let slug = T.map (\ c -> if isAlphaNum c then c else '-') (T.toLower name)@@ -986,7 +893,8 @@  addUserToCurrentChannel :: UserInfo -> MH () addUserToCurrentChannel u = do-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     session <- getSession     let channelMember = MinChannelMember (u^.uiId) cId     doAsyncWith Normal $ do@@ -996,7 +904,8 @@ removeUserFromCurrentChannel :: Text -> MH () removeUserFromCurrentChannel uname =     withFetchedUser (UserFetchByUsername uname) $ \u -> do-        cId <- use csCurrentChannelId+        tId <- use csCurrentTeamId+        cId <- use (csCurrentChannelId tId)         session <- getSession         doAsyncWith Normal $ do             tryMM (void $ MM.mmRemoveUserFromChannel cId (UserById $ u^.uiId) session)@@ -1013,22 +922,23 @@ deleteCurrentChannel :: MH () deleteCurrentChannel = do     setMode Main-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     leaveChannelIfPossible cId True  isCurrentChannel :: ChatState -> ChannelId -> Bool-isCurrentChannel st cId = st^.csCurrentChannelId == cId+isCurrentChannel st cId = st^.csCurrentChannelId(st^.csCurrentTeamId) == cId  isRecentChannel :: ChatState -> ChannelId -> Bool-isRecentChannel st cId = st^.csRecentChannel == Just cId+isRecentChannel st cId = st^.csCurrentTeam.tsRecentChannel == Just cId  isReturnChannel :: ChatState -> ChannelId -> Bool-isReturnChannel st cId = st^.csReturnChannel == Just cId+isReturnChannel st cId = st^.csCurrentTeam.tsReturnChannel == Just cId  joinChannelByName :: Text -> MH () joinChannelByName rawName = do     session <- getSession-    tId <- gets myTeamId+    tId <- use csCurrentTeamId     doAsyncWith Preempt $ do         result <- try $ MM.mmGetChannelByName tId (trimChannelSigil rawName) session         return $ Just $ case result of@@ -1050,8 +960,9 @@             fromMaybe (return ()) act         Nothing -> do             myId <- gets myUserId+            tId <- use csCurrentTeamId             let member = MinChannelMember myId chanId-            csPendingChannelChange .= (Just $ ChangeByChannelId chanId act)+            csCurrentTeam.tsPendingChannelChange .= (Just $ ChangeByChannelId tId chanId act)             doAsyncChannelMM Preempt chanId (\ s c -> MM.mmAddUser c member s) (const $ return act)  createOrFocusDMChannel :: UserInfo -> Maybe (ChannelId -> MH ()) -> MH ()@@ -1067,7 +978,7 @@             -- We have a user of that name but no channel. Time to make one!             myId <- gets myUserId             session <- getSession-            csPendingChannelChange .= (Just $ ChangeByUserId $ user^.uiId)+            csCurrentTeam.tsPendingChannelChange .= (Just $ ChangeByUserId $ user^.uiId)             doAsyncWith Normal $ do                 -- create a new channel                 chan <- MM.mmCreateDirectMessageChannel (user^.uiId, myId) session@@ -1108,12 +1019,27 @@  setChannelTopic :: Text -> MH () setChannelTopic msg = do-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     let patch = defaultChannelPatch { channelPatchHeader = Just msg }     doAsyncChannelMM Preempt cId         (\s _ -> MM.mmPatchChannel cId patch s)         (\_ _ -> Nothing) +-- | This renames the current channel's url name. It makes a request+-- to the server to change the name, but does not actually change the+-- name in Matterhorn yet; that is handled by a websocket event handled+-- asynchronously.+renameChannelUrl :: Text -> MH ()+renameChannelUrl name = do+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    s <- getSession+    let patch = defaultChannelPatch { channelPatchName = Just name }+    doAsyncWith Normal $ do+        _ <- MM.mmPatchChannel cId patch s+        return Nothing+ getCurrentChannelTopic :: MH Text getCurrentChannelTopic = do     ch <- use csCurrentChannel@@ -1121,7 +1047,8 @@  beginCurrentChannelDeleteConfirm :: MH () beginCurrentChannelDeleteConfirm = do-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     withChannel cId $ \chan -> do         let chType = chan^.ccInfo.cdType         if chType /= Direct@@ -1130,5 +1057,11 @@  updateChannelNotifyProps :: ChannelId -> ChannelNotifyProps -> MH () updateChannelNotifyProps cId notifyProps = do-    mh $ invalidateCacheEntry ChannelSidebar-    csChannel(cId).ccInfo.cdNotifyProps .= notifyProps+    withChannel cId $ \chan -> do+        case chan^.ccInfo.cdTeamId of+            Nothing -> do+                ts <- use csTeams+                forM_ (HM.keys ts) (mh . invalidateCacheEntry . ChannelSidebar)+            Just tId -> mh $ invalidateCacheEntry $ ChannelSidebar tId++        csChannel(cId).ccInfo.cdNotifyProps .= notifyProps
src/Matterhorn/State/Common.hs view
@@ -67,19 +67,21 @@ -- This also sets the mFlagged field of each message based on whether -- its post ID is a flagged post according to crFlaggedPosts at the time -- of this call.-installMessagesFromPosts :: Posts -> MH Messages-installMessagesFromPosts postCollection = do+installMessagesFromPosts :: Maybe TeamId -> Posts -> MH Messages+installMessagesFromPosts mTId postCollection = do   flags <- use (csResources.crFlaggedPosts)    -- Add all posts in this collection to the global post cache-  updatePostMap postCollection+  updatePostMap mTId postCollection -  baseUrl <- getServerBaseUrl+  mBaseUrl <- case mTId of+      Nothing -> return Nothing+      Just tId -> Just <$> getServerBaseUrl tId    -- Build the ordered list of posts. Note that postsOrder lists the   -- posts most recent first, but we want most recent last.   let postsInOrder = findPost <$> (Seq.reverse $ postsOrder postCollection)-      mkClientPost p = toClientPost baseUrl p (postId <$> parent p)+      mkClientPost p = toClientPost mBaseUrl p (postId <$> parent p)       clientPosts = mkClientPost <$> postsInOrder        addNext cp (msgs, us) =@@ -102,18 +104,21 @@             Just post -> post  -- Add all posts in this collection to the global post cache-updatePostMap :: Posts -> MH ()-updatePostMap postCollection = do+updatePostMap :: Maybe TeamId -> Posts -> MH ()+updatePostMap mTId postCollection = do   -- Build a map from post ID to Matterhorn message, then add the new   -- messages to the global post map. We use the "postsPosts" field for   -- this because that might contain more messages than the "postsOrder"   -- list, since the former can contain other messages in threads that   -- the server sent us, even if those messages are not part of the   -- ordered post listing of "postsOrder."-  baseUrl <- getServerBaseUrl+  mBaseUrl <- case mTId of+      Nothing -> return Nothing+      Just tId -> Just <$> getServerBaseUrl tId+   let postMap = HM.fromList           [ ( pId-            , fst $ clientPostToMessage (toClientPost baseUrl x Nothing)+            , fst $ clientPostToMessage (toClientPost mBaseUrl x Nothing)             )           | (pId, x) <- HM.toList (postCollection^.postsPostsL)           ]@@ -122,13 +127,15 @@ -- | Add a 'ClientMessage' to the current channel's message list addClientMessage :: ClientMessage -> MH () addClientMessage msg = do-  cid <- use csCurrentChannelId+  tId <- use csCurrentTeamId+  cid <- use (csCurrentChannelId(tId))   uuid <- generateUUID   let addCMsg = ccContents.cdMessages %~           (addMessage $ clientMessageToMessage msg & mMessageId .~ Just (MessageUUID uuid))   csChannels %= modifyChannelById cid addCMsg+   mh $ invalidateCacheEntry $ ChannelMessages cid-  mh $ invalidateCacheEntry ChannelSidebar+  mh $ invalidateCacheEntry $ ChannelSidebar tId    let msgTy = case msg^.cmType of         Error -> LogError@@ -152,7 +159,7 @@ postErrorMessageIO err st = do   msg <- newClientMessage Error err   uuid <- generateUUID_IO-  let cId = st ^. csCurrentChannelId+  let cId = st ^. csCurrentChannelId (st^.csCurrentTeamId)       addEMsg = ccContents.cdMessages %~           (addMessage $ clientMessageToMessage msg & mMessageId .~ Just (MessageUUID uuid))   return $ st & csChannels %~ modifyChannelById cId addEMsg
src/Matterhorn/State/Editing.hs view
@@ -49,7 +49,7 @@ import qualified System.Process as Sys import           Text.Aspell ( AspellResponse(..), mistakeWord, askAspell ) -import           Network.Mattermost.Types ( Post(..), ChannelId )+import           Network.Mattermost.Types ( Post(..), ChannelId, TeamId )  import           Matterhorn.Config import {-# SOURCE #-} Matterhorn.Command ( dispatchCommand )@@ -66,20 +66,20 @@ startMultilineEditing :: MH () startMultilineEditing = do     mh invalidateCache-    csEditState.cedEphemeral.eesMultiline .= True+    csCurrentTeam.tsEditState.cedEphemeral.eesMultiline .= True  toggleMultilineEditing :: MH () toggleMultilineEditing = do     mh invalidateCache-    csEditState.cedEphemeral.eesMultiline %= not+    csCurrentTeam.tsEditState.cedEphemeral.eesMultiline %= not      -- If multiline is now disabled and there is more than one line in     -- the editor, that means we're showing the multiline message status     -- (see Draw.Main.renderUserCommandBox.commandBox) so we want to be     -- sure no autocomplete UI is present in case the cursor was left on     -- a word that would otherwise show completion alternatives.-    multiline <- use (csEditState.cedEphemeral.eesMultiline)-    numLines <- use (csEditState.cedEditor.to getEditContents.to length)+    multiline <- use (csCurrentTeam.tsEditState.cedEphemeral.eesMultiline)+    numLines <- use (csCurrentTeam.tsEditState.cedEditor.to getEditContents.to length)     when (not multiline && numLines > 1) resetAutocomplete  invokeExternalEditor :: MH ()@@ -96,7 +96,7 @@       Sys.withSystemTempFile "matterhorn_editor.md" $ \tmpFileName tmpFileHandle -> do         -- Write the current message to the temp file         Sys.hPutStr tmpFileHandle $ T.unpack $ T.intercalate "\n" $-            getEditContents $ st^.csEditState.cedEditor+            getEditContents $ st^.csCurrentTeam.tsEditState.cedEditor         Sys.hClose tmpFileHandle          -- Run the editor@@ -112,26 +112,26 @@                         postErrorMessageIO "Failed to decode file contents as UTF-8" st                     Right t -> do                         let tmpLines = T.lines $ sanitizeUserText' t-                        return $ st & csEditState.cedEditor.editContentsL .~ (Z.textZipper tmpLines Nothing)+                        return $ st & csCurrentTeam.tsEditState.cedEditor.editContentsL .~ (Z.textZipper tmpLines Nothing)             Sys.ExitFailure _ -> return st  handlePaste :: BS.ByteString -> MH () handlePaste bytes = do   let pasteStr = T.pack (UTF8.toString bytes)-  csEditState.cedEditor %= applyEdit (Z.insertMany (sanitizeUserText' pasteStr))-  contents <- use (csEditState.cedEditor.to getEditContents)+  csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.insertMany (sanitizeUserText' pasteStr))+  contents <- use (csCurrentTeam.tsEditState.cedEditor.to getEditContents)   case length contents > 1 of       True -> startMultilineEditing       False -> return ()  editingPermitted :: ChatState -> Bool editingPermitted st =-    (length (getEditContents $ st^.csEditState.cedEditor) == 1) ||-    st^.csEditState.cedEphemeral.eesMultiline+    (length (getEditContents $ st^.csCurrentTeam.tsEditState.cedEditor) == 1) ||+    st^.csCurrentTeam.tsEditState.cedEphemeral.eesMultiline  messageEditingKeybindings :: KeyConfig -> KeyHandlerMap messageEditingKeybindings kc =-    let KeyHandlerMap m = editingKeybindings (csEditState.cedEditor) kc+    let KeyHandlerMap m = editingKeybindings (csCurrentTeam.tsEditState.cedEditor) kc     in KeyHandlerMap $ M.map withUserTypingAction m  withUserTypingAction :: KeyHandler -> KeyHandler@@ -167,7 +167,7 @@     "Kill the line to the right of the current position and copy it" $ do       z <- use (editor.editContentsL)       let restOfLine = Z.currentLine (Z.killToBOL z)-      csEditState.cedYankBuffer .= restOfLine+      csCurrentTeam.tsEditState.cedYankBuffer .= restOfLine       editor %= applyEdit Z.killToEOL   , mkKb EditorNextCharEvent     "Move one character to the right"@@ -195,13 +195,13 @@     editor %= applyEdit gotoEnd   , mkKb EditorYankEvent     "Paste the current buffer contents at the cursor" $ do-      buf <- use (csEditState.cedYankBuffer)+      buf <- use (csCurrentTeam.tsEditState.cedYankBuffer)       editor %= applyEdit (Z.insertMany buf)   ]  getEditorContent :: MH Text getEditorContent = do-    cmdLine <- use (csEditState.cedEditor)+    cmdLine <- use (csCurrentTeam.tsEditState.cedEditor)     let (line:rest) = getEditContents cmdLine     return $ T.intercalate "\n" $ line : rest @@ -216,21 +216,22 @@ -- *source* of the text, so it also takes care of clearing the editor, -- resetting the edit mode, updating the input history for the specified -- channel, etc.-handleInputSubmission :: ChannelId -> Text -> MH ()-handleInputSubmission cId content = do+handleInputSubmission :: TeamId -> ChannelId -> Text -> MH ()+handleInputSubmission tId cId content = do     -- We clean up before dispatching the command or sending the message     -- since otherwise the command could change the state and then doing     -- cleanup afterwards could clean up the wrong things.-    csEditState.cedEditor %= applyEdit Z.clearZipper-    csEditState.cedInputHistory %= addHistoryEntry content cId-    csEditState.cedEphemeral.eesInputHistoryPosition .= Nothing+    csTeam(tId).tsEditState.cedEditor %= applyEdit Z.clearZipper+    csTeam(tId).tsEditState.cedEphemeral.eesInputHistoryPosition .= Nothing +    csInputHistory %= addHistoryEntry content cId+     case T.uncons content of       Just ('/', cmd) ->           dispatchCommand cmd       _ -> do-          attachments <- use (csEditState.cedAttachmentList.L.listElementsL)-          mode <- use (csEditState.cedEditMode)+          attachments <- use (csTeam(tId).tsEditState.cedAttachmentList.L.listElementsL)+          mode <- use (csTeam(tId).tsEditState.cedEditMode)           sendMessage cId mode content $ F.toList attachments      -- Reset the autocomplete UI@@ -241,7 +242,7 @@      -- Reset the edit mode *after* handling the input so that the input     -- handler can tell whether we're editing, replying, etc.-    csEditState.cedEditMode .= NewPost+    csTeam(tId).tsEditState.cedEditMode .= NewPost  closingPunctuationMarks :: String closingPunctuationMarks = ".,'\";:)]!?"@@ -262,18 +263,18 @@     -- Record the input line count before handling the editing event     -- so we can tell whether the editing event changes the line count     -- later.-    beforeLineCount <- use (csEditState.cedEditor.to getEditContents.to length)+    beforeLineCount <- use (csCurrentTeam.tsEditState.cedEditor.to getEditContents.to length) -    smartBacktick <- use (csResources.crConfiguration.to configSmartBacktick)+    smartBacktick <- use (csResources.crConfiguration.configSmartBacktickL)     let smartChars = "*`_"     st <- use id-    csEditState.cedEphemeral.eesInputHistoryPosition .= Nothing+    csCurrentTeam.tsEditState.cedEphemeral.eesInputHistoryPosition .= Nothing -    smartEditing <- use (csResources.crConfiguration.to configSmartEditing)-    justCompleted <- use (csEditState.cedJustCompleted)+    smartEditing <- use (csResources.crConfiguration.configSmartEditingL)+    justCompleted <- use (csCurrentTeam.tsEditState.cedJustCompleted)      conf <- use (csResources.crConfiguration)-    let keyMap = editingKeybindings (csEditState.cedEditor) (configUserKeys conf)+    let keyMap = editingKeybindings (csCurrentTeam.tsEditState.cedEditor) (configUserKeys conf)     case lookupKeybinding e keyMap of       Just kb | editingPermitted st -> (ehAction $ kehHandler $ khHandler kb)       _ -> do@@ -281,52 +282,52 @@           -- Not editing; backspace here means cancel multi-line message           -- composition           EvKey KBS [] | (not $ editingPermitted st) ->-            csEditState.cedEditor %= applyEdit Z.clearZipper+            csCurrentTeam.tsEditState.cedEditor %= applyEdit Z.clearZipper            -- Backspace in editing mode with smart pair insertion means           -- smart pair removal when possible           EvKey KBS [] | editingPermitted st && smartBacktick ->-              let backspace = csEditState.cedEditor %= applyEdit Z.deletePrevChar-              in case cursorAtOneOf smartChars (st^.csEditState.cedEditor) of+              let backspace = csCurrentTeam.tsEditState.cedEditor %= applyEdit Z.deletePrevChar+              in case cursorAtOneOf smartChars (st^.csCurrentTeam.tsEditState.cedEditor) of                   Nothing -> backspace                   Just ch ->                       -- Smart char removal:-                      if | (cursorAtChar ch $ applyEdit Z.moveLeft $ st^.csEditState.cedEditor) &&-                           (cursorIsAtEnd $ applyEdit Z.moveRight $ st^.csEditState.cedEditor) ->-                             csEditState.cedEditor %= applyEdit (Z.deleteChar >>> Z.deletePrevChar)+                      if | (cursorAtChar ch $ applyEdit Z.moveLeft $ st^.csCurrentTeam.tsEditState.cedEditor) &&+                           (cursorIsAtEnd $ applyEdit Z.moveRight $ st^.csCurrentTeam.tsEditState.cedEditor) ->+                             csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.deleteChar >>> Z.deletePrevChar)                          | otherwise -> backspace            EvKey (KChar ch) []             | editingPermitted st && smartBacktick && ch `elem` smartChars ->               -- Smart char insertion:               let doInsertChar = do-                    csEditState.cedEditor %= applyEdit (Z.insertChar ch)+                    csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.insertChar ch)                     sendUserTypingAction-                  curLine = Z.currentLine $ st^.csEditState.cedEditor.editContentsL+                  curLine = Z.currentLine $ st^.csCurrentTeam.tsEditState.cedEditor.editContentsL               -- First case: if the cursor is at the end of the current               -- line and it contains "``" and the user entered a third               -- "`", enable multi-line mode since they're likely typing               -- a code block.-              in if | (cursorIsAtEnd $ st^.csEditState.cedEditor) &&+              in if | (cursorIsAtEnd $ st^.csCurrentTeam.tsEditState.cedEditor) &&                          curLine == "``" &&                          ch == '`' -> do-                        csEditState.cedEditor %= applyEdit (Z.insertMany (T.singleton ch))-                        csEditState.cedEphemeral.eesMultiline .= True+                        csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.insertMany (T.singleton ch))+                        csCurrentTeam.tsEditState.cedEphemeral.eesMultiline .= True                     -- Second case: user entered some smart character                     -- (don't care which) on an empty line or at the end                     -- of the line after whitespace, so enter a pair of                     -- the smart chars and put the cursor between them.-                    | (editorEmpty $ st^.csEditState.cedEditor) ||-                         ((cursorAtChar ' ' (applyEdit Z.moveLeft $ st^.csEditState.cedEditor)) &&-                          (cursorIsAtEnd $ st^.csEditState.cedEditor)) ->-                        csEditState.cedEditor %= applyEdit (Z.insertMany (T.pack $ ch:ch:[]) >>> Z.moveLeft)+                    | (editorEmpty $ st^.csCurrentTeam.tsEditState.cedEditor) ||+                         ((cursorAtChar ' ' (applyEdit Z.moveLeft $ st^.csCurrentTeam.tsEditState.cedEditor)) &&+                          (cursorIsAtEnd $ st^.csCurrentTeam.tsEditState.cedEditor)) ->+                        csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.insertMany (T.pack $ ch:ch:[]) >>> Z.moveLeft)                     -- Third case: the cursor is already on a smart                     -- character and that character is the last one                     -- on the line, so instead of inserting a new                     -- character, just move past it.-                    | (cursorAtChar ch $ st^.csEditState.cedEditor) &&-                      (cursorIsAtEnd $ applyEdit Z.moveRight $ st^.csEditState.cedEditor) ->-                        csEditState.cedEditor %= applyEdit Z.moveRight+                    | (cursorAtChar ch $ st^.csCurrentTeam.tsEditState.cedEditor) &&+                      (cursorIsAtEnd $ applyEdit Z.moveRight $ st^.csCurrentTeam.tsEditState.cedEditor) ->+                        csCurrentTeam.tsEditState.cedEditor %= applyEdit Z.moveRight                     -- Fall-through case: just insert one of the chars                     -- without doing anything smart.                     | otherwise -> doInsertChar@@ -336,12 +337,12 @@               -- there is a trailing space that we want to remove if the               -- next input character is punctuation.               when (smartEditing && justCompleted && isSmartClosingPunctuation e) $-                  csEditState.cedEditor %= applyEdit Z.deletePrevChar+                  csCurrentTeam.tsEditState.cedEditor %= applyEdit Z.deletePrevChar -              csEditState.cedEditor %= applyEdit (Z.insertMany (sanitizeUserText' $ T.singleton ch))+              csCurrentTeam.tsEditState.cedEditor %= applyEdit (Z.insertMany (sanitizeUserText' $ T.singleton ch))               sendUserTypingAction           _ | editingPermitted st -> do-              mhHandleEventLensed (csEditState.cedEditor) handleEditorEvent e+              mhHandleEventLensed (csCurrentTeam.tsEditState.cedEditor) handleEditorEvent e               sendUserTypingAction             | otherwise -> return () @@ -349,23 +350,24 @@                                   , autocompleteFirstMatch = False                                   }     checkForAutocompletion ctx-    liftIO $ resetSpellCheckTimer $ st^.csEditState+    liftIO $ resetSpellCheckTimer $ st^.csCurrentTeam.tsEditState      -- If the preview is enabled and multi-line editing is enabled and     -- the line count changed, we need to invalidate the rendering cache     -- entry for the channel messages because we want to redraw them to     -- fit in the space just changed by the size of the preview area.-    afterLineCount <- use (csEditState.cedEditor.to getEditContents.to length)-    isMultiline <- use (csEditState.cedEphemeral.eesMultiline)-    isPreviewing <- use csShowMessagePreview+    afterLineCount <- use (csCurrentTeam.tsEditState.cedEditor.to getEditContents.to length)+    isMultiline <- use (csCurrentTeam.tsEditState.cedEphemeral.eesMultiline)+    isPreviewing <- use (csResources.crConfiguration.configShowMessagePreviewL)     when (beforeLineCount /= afterLineCount && isMultiline && isPreviewing) $ do-        cId <- use csCurrentChannelId+        tId <- use csCurrentTeamId+        cId <- use (csCurrentChannelId tId)         mh $ invalidateCacheEntry $ ChannelMessages cId      -- Reset the recent autocompletion flag to stop smart punctuation     -- handling.     when justCompleted $-        csEditState.cedJustCompleted .= False+        csCurrentTeam.tsEditState.cedJustCompleted .= False  -- | Send the user_typing action to the server asynchronously, over the -- connected websocket. If the websocket is not connected, drop the@@ -376,12 +378,13 @@   when (configShowTypingIndicator (st^.csResources.crConfiguration)) $     case st^.csConnectionStatus of       Connected -> do-        let pId = case st^.csEditState.cedEditMode of+        let pId = case st^.csCurrentTeam.tsEditState.cedEditMode of                     Replying _ post -> Just $ postId post                     _               -> Nothing+        tId <- use csCurrentTeamId         liftIO $ do           now <- getCurrentTime-          let action = UserTyping now (st^.csCurrentChannelId) pId+          let action = UserTyping now (st^.csCurrentChannelId(tId)) pId           STM.atomically $ STM.writeTChan (st^.csResources.crWebsocketActionChan) action       Disconnected -> return () @@ -390,11 +393,12 @@ requestSpellCheck :: MH () requestSpellCheck = do     st <- use id-    case st^.csEditState.cedSpellChecker of+    case st^.csCurrentTeam.tsEditState.cedSpellChecker of         Nothing -> return ()         Just (checker, _) -> do             -- Get the editor contents.-            contents <- getEditContents <$> use (csEditState.cedEditor)+            tId <- use csCurrentTeamId+            contents <- getEditContents <$> use (csTeam(tId).tsEditState.cedEditor)             doAsyncWith Preempt $ do                 -- For each line in the editor, submit an aspell request.                 let query = concat <$> mapM (askAspell checker) contents@@ -403,7 +407,7 @@                         let getMistakes AllCorrect = []                             getMistakes (Mistakes ms) = mistakeWord <$> ms                             allMistakes = S.fromList $ concat $ getMistakes <$> responses-                        csEditState.cedMisspellings .= allMistakes+                        csTeam(tId).tsEditState.cedMisspellings .= allMistakes                  tryMM query (return . Just . postMistakes) @@ -452,19 +456,20 @@  cancelAutocompleteOrReplyOrEdit :: MH () cancelAutocompleteOrReplyOrEdit = do-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     mh $ invalidateCacheEntry $ ChannelMessages cId-    ac <- use (csEditState.cedAutocomplete)+    ac <- use (csCurrentTeam.tsEditState.cedAutocomplete)     case ac of         Just _ -> do             resetAutocomplete         Nothing -> do-            mode <- use (csEditState.cedEditMode)+            mode <- use (csCurrentTeam.tsEditState.cedEditMode)             case mode of                 NewPost -> return ()                 _ -> do-                    csEditState.cedEditMode .= NewPost-                    csEditState.cedEditor %= applyEdit Z.clearZipper+                    csCurrentTeam.tsEditState.cedEditMode .= NewPost+                    csCurrentTeam.tsEditState.cedEditor %= applyEdit Z.clearZipper                     resetAttachmentList  replyToLatestMessage :: MH ()@@ -474,9 +479,10 @@     Just msg | isReplyable msg ->         do rootMsg <- getReplyRootMessage msg            setMode Main-           cId <- use csCurrentChannelId+           tId <- use csCurrentTeamId+           cId <- use (csCurrentChannelId tId)            mh $ invalidateCacheEntry $ ChannelMessages cId-           csEditState.cedEditMode .= Replying rootMsg (fromJust $ rootMsg^.mOriginalPost)+           csCurrentTeam.tsEditState.cedEditMode .= Replying rootMsg (fromJust $ rootMsg^.mOriginalPost)     _ -> return ()  data Direction = Forwards | Backwards@@ -496,9 +502,9 @@                        (L.listSelected list == Nothing && len > 0)                     then L.listMoveTo (len - 1) list                     else L.listMoveBy (-1) list-    csEditState.cedAutocomplete._Just.acCompletionList %= transform+    csCurrentTeam.tsEditState.cedAutocomplete._Just.acCompletionList %= transform -    mac <- use (csEditState.cedAutocomplete)+    mac <- use (csCurrentTeam.tsEditState.cedAutocomplete)     case mac of         Nothing -> do             let ctx = AutocompleteContext { autocompleteManual = True@@ -514,10 +520,10 @@                             if maybe True isSpace (Z.currentChar z)                             then z                             else Z.moveWordRight z-                    csEditState.cedEditor %=+                    csCurrentTeam.tsEditState.cedEditor %=                         applyEdit (Z.insertChar ' ' . Z.insertMany replacement . Z.deletePrevWord .                                    maybeEndOfWord)-                    csEditState.cedJustCompleted .= True+                    csCurrentTeam.tsEditState.cedJustCompleted .= True                      -- If there was only one completion alternative,                     -- hide the autocomplete listing now that we've
src/Matterhorn/State/Flagging.hs view
@@ -9,6 +9,7 @@  import           Data.Function ( on ) import qualified Data.Set as Set+import qualified Data.HashMap.Strict as HM import           Lens.Micro.Platform  import           Network.Mattermost.Types@@ -38,29 +39,42 @@   msgMb <- use (csPostMap.at(pId))   case msgMb of     Just msg-      | Just cId <- msg^.mChannelId -> do+      | Just cId <- msg^.mChannelId -> withChannel cId $ \chan -> do       let isTargetMessage m = m^.mMessageId == Just (MessagePostId pId)       csChannel(cId).ccContents.cdMessages.traversed.filtered isTargetMessage.mFlagged .= f       csPostMap.ix(pId).mFlagged .= f-      -- We also want to update the post overlay if this happens while-      -- we're we're observing it-      mode <- gets appMode-      case mode of-        PostListOverlay PostListFlagged-          | f ->-              csPostListOverlay.postListPosts %=-                addMessage (msg & mFlagged .~ True)-          -- deleting here is tricky, because it means that we need to-          -- move the focus somewhere: we'll try moving it _up_ unless-          -- we can't, in which case we'll try moving it down.-          | otherwise -> do-              selId <- use (csPostListOverlay.postListSelected)-              posts <- use (csPostListOverlay.postListPosts)-              let nextId = case getNextPostId selId posts of-                    Nothing -> getPrevPostId selId posts-                    Just x  -> Just x-              csPostListOverlay.postListSelected .= nextId-              csPostListOverlay.postListPosts %=-                filterMessages (((/=) `on` _mMessageId) msg)-        _ -> return ()++      let mTId = chan^.ccInfo.cdTeamId+          updatePostOverlay :: TeamId -> MH ()+          updatePostOverlay tId = do+              -- We also want to update the post overlay if this happens+              -- while we're we're observing it+              mode <- use (csTeam tId.tsMode)+              case mode of+                PostListOverlay PostListFlagged+                  | f ->+                      csTeam tId.tsPostListOverlay.postListPosts %=+                        addMessage (msg & mFlagged .~ True)++                  -- deleting here is tricky, because it means that we+                  -- need to move the focus somewhere: we'll try moving+                  -- it _up_ unless we can't, in which case we'll try+                  -- moving it down.+                  | otherwise -> do+                      selId <- use (csTeam tId.tsPostListOverlay.postListSelected)+                      posts <- use (csTeam tId.tsPostListOverlay.postListPosts)+                      let nextId = case getNextPostId selId posts of+                            Nothing -> getPrevPostId selId posts+                            Just x  -> Just x+                      csTeam tId.tsPostListOverlay.postListSelected .= nextId+                      csTeam tId.tsPostListOverlay.postListPosts %=+                        filterMessages (((/=) `on` _mMessageId) msg)+                _ -> return ()++      case mTId of+          Nothing -> do+              ts <- use csTeams+              forM_ (HM.keys ts) updatePostOverlay+          Just tId -> updatePostOverlay tId+     _ -> return ()
src/Matterhorn/State/Help.hs view
@@ -13,7 +13,7 @@  showHelpScreen :: HelpTopic -> MH () showHelpScreen topic = do-    curMode <- gets appMode+    curMode <- use (csCurrentTeam.tsMode)     case curMode of         ShowHelp {} -> return ()         _ -> do
src/Matterhorn/State/MessageSelect.hs view
@@ -54,9 +54,9 @@  getSelectedMessage :: ChatState -> Maybe Message getSelectedMessage st-    | not (appMode st `elem` messageSelectCompatibleModes) = Nothing+    | not (st^.csCurrentTeam.tsMode `elem` messageSelectCompatibleModes) = Nothing     | otherwise = do-        selMsgId <- selectMessageId $ st^.csMessageSelect+        selMsgId <- selectMessageId $ st^.csCurrentTeam.tsMessageSelect         let chanMsgs = st ^. csCurrentChannel . ccContents . cdMessages         findMessage selMsgId chanMsgs @@ -74,7 +74,7 @@      when (isJust recentMsg) $ do         setMode MessageSelect-        csMessageSelect .= MessageSelectState (recentMsg >>= _mMessageId)+        csCurrentTeam.tsMessageSelect .= MessageSelectState (recentMsg >>= _mMessageId)  -- | Tell the server that the message we currently have selected -- should have its flagged state toggled.@@ -111,14 +111,16 @@   selected <- use (to getSelectedMessage)   case selected of     Just msg-      | isGap msg -> do cId <- use csCurrentChannelId+      | isGap msg -> do tId <- use csCurrentTeamId+                        cId <- use (csCurrentChannelId tId)                         asyncFetchMessagesForGap cId msg     _        -> return ()  viewMessage :: Message -> MH () viewMessage m = do-    let w = tabbedWindow VMTabMessage viewMessageWindowTemplate MessageSelect (78, 25)-    csViewedMessage .= Just (m, w)+    tId <- use csCurrentTeamId+    let w = tabbedWindow VMTabMessage (viewMessageWindowTemplate tId) MessageSelect (78, 25)+    csCurrentTeam.tsViewedMessage .= Just (m, w)     runTabShowHandlerFor (twValue w) w     setMode ViewMessage @@ -168,23 +170,23 @@  messageSelectUp :: MH () messageSelectUp = do-    mode <- gets appMode-    selected <- use (csMessageSelect.to selectMessageId)+    mode <- use (csCurrentTeam.tsMode)+    selected <- use (csCurrentTeam.tsMessageSelect.to selectMessageId)     case selected of         Just _ | mode == MessageSelect -> do             chanMsgs <- use (csCurrentChannel.ccContents.cdMessages)             let nextMsgId = getPrevMessageId selected chanMsgs-            csMessageSelect .= MessageSelectState (nextMsgId <|> selected)+            csCurrentTeam.tsMessageSelect .= MessageSelectState (nextMsgId <|> selected)         _ -> return ()  messageSelectDown :: MH () messageSelectDown = do-    selected <- use (csMessageSelect.to selectMessageId)+    selected <- use (csCurrentTeam.tsMessageSelect.to selectMessageId)     case selected of         Just _ -> whenMode MessageSelect $ do             chanMsgs <- use (csCurrentChannel.ccContents.cdMessages)             let nextMsgId = getNextMessageId selected chanMsgs-            csMessageSelect .= MessageSelectState (nextMsgId <|> selected)+            csCurrentTeam.tsMessageSelect .= MessageSelectState (nextMsgId <|> selected)         _ -> return ()  messageSelectDownBy :: Int -> MH ()@@ -201,25 +203,25 @@  messageSelectFirst :: MH () messageSelectFirst = do-    selected <- use (csMessageSelect.to selectMessageId)+    selected <- use (csCurrentTeam.tsMessageSelect.to selectMessageId)     case selected of         Just _ -> whenMode MessageSelect $ do             chanMsgs <- use (csCurrentChannel.ccContents.cdMessages)             case getEarliestSelectableMessage chanMsgs of               Just firstMsg ->-                csMessageSelect .= MessageSelectState (firstMsg^.mMessageId <|> selected)+                csCurrentTeam.tsMessageSelect .= MessageSelectState (firstMsg^.mMessageId <|> selected)               Nothing -> mhLog LogError "No first message found from current message?!"         _ -> return ()  messageSelectLast :: MH () messageSelectLast = do-    selected <- use (csMessageSelect.to selectMessageId)+    selected <- use (csCurrentTeam.tsMessageSelect.to selectMessageId)     case selected of         Just _ -> whenMode MessageSelect $ do             chanMsgs <- use (csCurrentChannel.ccContents.cdMessages)             case getLatestSelectableMessage chanMsgs of               Just lastSelMsg ->-                csMessageSelect .= MessageSelectState (lastSelMsg^.mMessageId <|> selected)+                csCurrentTeam.tsMessageSelect .= MessageSelectState (lastSelMsg^.mMessageId <|> selected)               Nothing -> mhLog LogError "No last message found from current message?!"         _ -> return () @@ -227,7 +229,8 @@ deleteSelectedMessage = do     selectedMessage <- use (to getSelectedMessage)     st <- use id-    cId <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     case selectedMessage of         Just msg | isMine st msg && isDeletable msg ->             case msg^.mOriginalPost of@@ -235,7 +238,7 @@                   doAsyncChannelMM Preempt cId                       (\s _ -> MM.mmDeletePost (postId p) s)                       (\_ _ -> Just $ do-                          csEditState.cedEditMode .= NewPost+                          csCurrentTeam.tsEditState.cedEditMode .= NewPost                           setMode Main)               Nothing -> return ()         _ -> return ()@@ -248,7 +251,7 @@             rootMsg <- getReplyRootMessage msg             let Just p = rootMsg^.mOriginalPost             setMode Main-            csEditState.cedEditMode .= Replying rootMsg p+            csCurrentTeam.tsEditState.cedEditMode .= Replying rootMsg p         _ -> return ()  beginEditMessage :: MH ()@@ -259,7 +262,7 @@         Just msg | isMine st msg && isEditable msg -> do             let Just p = msg^.mOriginalPost             setMode Main-            csEditState.cedEditMode .= Editing p (msg^.mType)+            csCurrentTeam.tsEditState.cedEditMode .= Editing p (msg^.mType)             -- If the post that we're editing is an emote, we need             -- to strip the formatting because that's only there to             -- indicate that the post is an emote. This is annoying and@@ -271,7 +274,7 @@             let toEdit = if isEmote msg                          then removeEmoteFormatting sanitized                          else sanitized-            csEditState.cedEditor %= applyEdit (insertMany toEdit . clearZipper)+            csCurrentTeam.tsEditState.cedEditor %= applyEdit (insertMany toEdit . clearZipper)         _ -> return ()  -- | Tell the server that we have flagged or unflagged a message.
src/Matterhorn/State/Messages.hs view
@@ -151,22 +151,27 @@ editMessage :: Post -> MH () editMessage new = do     myId <- gets myUserId-    baseUrl <- getServerBaseUrl-    let isEditedMessage m = m^.mMessageId == Just (MessagePostId $ new^.postIdL)-        (msg, mentionedUsers) = clientPostToMessage (toClientPost baseUrl new (new^.postRootIdL))-        chan = csChannel (new^.postChannelIdL)-    chan . ccContents . cdMessages . traversed . filtered isEditedMessage .= msg-    mh $ invalidateCacheEntry (ChannelMessages $ new^.postChannelIdL)+    withChannel (new^.postChannelIdL) $ \chan -> do+        let mTId = chan^.ccInfo.cdTeamId+        mBaseUrl <- case mTId of+            Nothing -> return Nothing+            Just tId -> Just <$> getServerBaseUrl tId -    fetchMentionedUsers mentionedUsers+        let (msg, mentionedUsers) = clientPostToMessage (toClientPost mBaseUrl new (new^.postRootIdL))+            isEditedMessage m = m^.mMessageId == Just (MessagePostId $ new^.postIdL) -    when (postUserId new /= Just myId) $-        chan %= adjustEditedThreshold new+        csChannel (new^.postChannelIdL) . ccContents . cdMessages . traversed . filtered isEditedMessage .= msg+        mh $ invalidateCacheEntry (ChannelMessages $ new^.postChannelIdL) -    csPostMap.ix(postId new) .= msg-    asyncFetchReactionsForPost (postChannelId new) new-    asyncFetchAttachments new+        fetchMentionedUsers mentionedUsers +        when (postUserId new /= Just myId) $+            csChannel (new^.postChannelIdL) %= adjustEditedThreshold new++        csPostMap.ix(postId new) .= msg+        asyncFetchReactionsForPost (postChannelId new) new+        asyncFetchAttachments new+ deleteMessage :: Post -> MH () deleteMessage new = do     let isDeletedMessage m = m^.mMessageId == Just (MessagePostId $ new^.postIdL) ||@@ -210,6 +215,7 @@     -- case the new block should be surrounded by UnknownGaps.     withChannelOrDefault cId NoAction $ \chan -> do         let pIdList = toList (posts^.postsOrderL)+            mTId = chan^.ccInfo.cdTeamId             -- the first and list PostId in the batch to be added             earliestPId = last pIdList             latestPId = head pIdList@@ -300,7 +306,7 @@         -- usernames in the text of the messages which we need to use to         -- submit a single batch request for user metadata so we don't         -- submit one request per mention.-        void $ installMessagesFromPosts posts+        void $ installMessagesFromPosts mTId posts          -- Add all the new *unique* posts into the existing channel         -- corpus, generating needed fetches of data associated with@@ -338,82 +344,88 @@           csChannels %= modifyChannelById cId             (ccContents.cdMessages .~ resultMessages) -          -- Determine if the current selected message was one of the-          -- removed messages.+          let processTeam tId = do+                -- Determine if the current selected message was one of the+                -- removed messages.+                selMsgId <- use (csTeam(tId).tsMessageSelect.to selectMessageId)+                let rmvdSel = do+                      i <- selMsgId -- :: Maybe MessageId+                      findMessage i removedMessages+                    rmvdSelType = _mType <$> rmvdSel -          selMsgId <- use (csMessageSelect.to selectMessageId)-          let rmvdSel = do-                i <- selMsgId -- :: Maybe MessageId-                findMessage i removedMessages-              rmvdSelType = _mType <$> rmvdSel+                case rmvdSel of+                  Nothing -> return ()+                  Just rm ->+                    if isGap rm+                    then return ()  -- handled during gap insertion below+                    else do+                      -- Replaced a selected message that wasn't a gap.+                      -- This is unlikely, but may occur if the previously+                      -- selected message was just deleted by another user+                      -- and is in the fetched region.  The choices here are+                      -- to move the selection, or cancel the selection.+                      -- Both will be unpleasant surprises for the user, but+                      -- cancelling the selection is probably the better+                      -- choice than allowing the user to perform select+                      -- actions on a message that isn't the one they just+                      -- selected.+                      setMode Main+                      csTeam(tId).tsMessageSelect .= MessageSelectState Nothing -          case rmvdSel of-            Nothing -> return ()-            Just rm ->-              if isGap rm-              then return ()  -- handled during gap insertion below-              else do-                -- Replaced a selected message that wasn't a gap.-                -- This is unlikely, but may occur if the previously-                -- selected message was just deleted by another user-                -- and is in the fetched region.  The choices here are-                -- to move the selection, or cancel the selection.-                -- Both will be unpleasant surprises for the user, but-                -- cancelling the selection is probably the better-                -- choice than allowing the user to perform select-                -- actions on a message that isn't the one they just-                -- selected.-                setMode Main-                csMessageSelect .= MessageSelectState Nothing+                -- Add a gap at each end of the newly fetched data, unless:+                --   1. there is an overlap+                --   2. there is no more in the indicated direction+                --      a. indicated by adding messages later than any currently+                --         held messages (see note above re 'addingAtEnd').+                --      b. the amount returned was less than the amount requested -          -- Add a gap at each end of the newly fetched data, unless:-          --   1. there is an overlap-          --   2. there is no more in the indicated direction-          --      a. indicated by adding messages later than any currently-          --         held messages (see note above re 'addingAtEnd').-          --      b. the amount returned was less than the amount requested+                if reAddGapBefore+                  then+                    -- No more gaps.  If the selected gap was removed, move+                    -- select to first (earliest) message)+                    case rmvdSelType of+                      Just (C UnknownGapBefore) ->+                        csTeam(tId).tsMessageSelect .= MessageSelectState (pure $ MessagePostId earliestPId)+                      _ -> return ()+                  else do+                    -- add a gap at the start of the newly fetched block and+                    -- make that the active selection if this fetch removed+                    -- the previously selected gap in this direction.+                    gapMsg <- newGapMessage (justBefore earliestDate) True+                    csChannels %= modifyChannelById cId+                      (ccContents.cdMessages %~ addMessage gapMsg)+                    -- Move selection from old gap to new gap+                    case rmvdSelType of+                      Just (C UnknownGapBefore) -> do+                        csTeam(tId).tsMessageSelect .= MessageSelectState (gapMsg^.mMessageId)+                      _ -> return () -          if reAddGapBefore-            then-              -- No more gaps.  If the selected gap was removed, move-              -- select to first (earliest) message)-              case rmvdSelType of-                Just (C UnknownGapBefore) ->-                  csMessageSelect .= MessageSelectState (pure $ MessagePostId earliestPId)-                _ -> return ()-            else do-              -- add a gap at the start of the newly fetched block and-              -- make that the active selection if this fetch removed-              -- the previously selected gap in this direction.-              gapMsg <- newGapMessage (justBefore earliestDate) True-              csChannels %= modifyChannelById cId-                (ccContents.cdMessages %~ addMessage gapMsg)-              -- Move selection from old gap to new gap-              case rmvdSelType of-                Just (C UnknownGapBefore) -> do-                  csMessageSelect .= MessageSelectState (gapMsg^.mMessageId)-                _ -> return ()+                if reAddGapAfter+                  then+                    -- No more gaps.  If the selected gap was removed, move+                    -- select to last (latest) message.+                    case rmvdSelType of+                      Just (C UnknownGapAfter) ->+                        csTeam(tId).tsMessageSelect .= MessageSelectState (pure $ MessagePostId latestPId)+                      _ -> return ()+                  else do+                    -- add a gap at the end of the newly fetched block and+                    -- make that the active selection if this fetch removed+                    -- the previously selected gap in this direction.+                    gapMsg <- newGapMessage (justAfter latestDate) False+                    csChannels %= modifyChannelById cId+                      (ccContents.cdMessages %~ addMessage gapMsg)+                    -- Move selection from old gap to new gap+                    case rmvdSelType of+                      Just (C UnknownGapAfter) ->+                        csTeam(tId).tsMessageSelect .= MessageSelectState (gapMsg^.mMessageId)+                      _ -> return () -          if reAddGapAfter-            then-              -- No more gaps.  If the selected gap was removed, move-              -- select to last (latest) message.-              case rmvdSelType of-                Just (C UnknownGapAfter) ->-                  csMessageSelect .= MessageSelectState (pure $ MessagePostId latestPId)-                _ -> return ()-            else do-              -- add a gap at the end of the newly fetched block and-              -- make that the active selection if this fetch removed-              -- the previously selected gap in this direction.-              gapMsg <- newGapMessage (justAfter latestDate) False-              csChannels %= modifyChannelById cId-                (ccContents.cdMessages %~ addMessage gapMsg)-              -- Move selection from old gap to new gap-              case rmvdSelType of-                Just (C UnknownGapAfter) ->-                  csMessageSelect .= MessageSelectState (gapMsg^.mMessageId)-                _ -> return ()+          case mTId of+              Nothing -> do+                  ts <- use csTeams+                  forM_ (HM.keys ts) processTeam+              Just tId -> processTeam tId          -- Now initiate fetches for use information for any         -- as-yet-unknown users related to this new set of messages@@ -498,9 +510,13 @@                             postProcessMessageAdd              return NoAction-        Just _ -> do-            baseUrl <- getServerBaseUrl-            let cp = toClientPost baseUrl new (new^.postRootIdL)+        Just ch -> do+            let mTId = ch^.ccInfo.cdTeamId+            mBaseUrl <- case mTId of+                Nothing -> return Nothing+                Just tId -> Just <$> getServerBaseUrl tId++            let cp = toClientPost mBaseUrl new (new^.postRootIdL)                 fromMe = (cp^.cpUser == (Just $ myUserId st)) &&                          (isNothing $ cp^.cpUserOverride)                 userPrefs = st^.csResources.crUserPreferences@@ -521,7 +537,8 @@                             when (isNothing authorResult) $                                 handleNewUsers (Seq.singleton authorId) (return ()) -                    currCId <- use csCurrentChannelId+                    curTId <- use csCurrentTeamId+                    currCId <- use (csCurrentChannelId curTId)                     flags <- use (csResources.crFlaggedPosts)                     let (msg', mentionedUsers) = clientPostToMessage cp                                  & _1.mFlagged .~ ((cp^.cpPostId) `Set.member` flags)@@ -560,7 +577,7 @@                                 Nothing -> do                                     doAsyncChannelMM Preempt cId                                         (\s _ -> MM.mmGetThread parentId s)-                                        (\_ p -> Just $ updatePostMap p)+                                        (\_ p -> Just $ updatePostMap mTId p)                                 _ -> return ()                         _ -> return () @@ -568,7 +585,8 @@                  postedChanMessage =                   withChannelOrDefault (postChannelId new) NoAction $ \chan -> do-                      currCId <- use csCurrentChannelId+                      currTid <- use csCurrentTeamId+                      currCId <- use (csCurrentChannelId currTid)                        let notifyPref = notifyPreference (myUser st) chan                           curChannelAction = if postChannelId new == currCId@@ -627,7 +645,7 @@  maybeRingBell :: MH () maybeRingBell = do-    doBell <- use (csResources.crConfiguration.to configActivityBell)+    doBell <- use (csResources.crConfiguration.configActivityBellL)     when doBell $ do         vty <- mh getVtyHandle         liftIO $ ringTerminalBell $ outputIface vty@@ -651,7 +669,7 @@ runNotifyCommand post mentioned = do     outputChan <- use (csResources.crSubprocessLog)     st <- use id-    notifyCommand <- use (csResources.crConfiguration.to configActivityNotifyCommand)+    notifyCommand <- use (csResources.crConfiguration.configActivityNotifyCommandL)     case notifyCommand of         Nothing -> return ()         Just cmd ->@@ -704,7 +722,8 @@ -- channels and empty channels. asyncFetchMoreMessages :: MH () asyncFetchMoreMessages = do-    cId  <- use csCurrentChannelId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)     withChannel cId $ \chan ->         let offset = max 0 $ length (chan^.ccContents.cdMessages) - 2             page = offset `div` pageAmount@@ -829,7 +848,8 @@ fetchVisibleIfNeeded = do     sts <- use csConnectionStatus     when (sts == Connected) $ do-        cId <- use csCurrentChannelId+        tId <- use csCurrentTeamId+        cId <- use (csCurrentChannelId tId)         withChannel cId $ \chan ->             let msgs = chan^.ccContents.cdMessages.to reverseMessages                 (numRemaining, gapInDisplayable, _, rel'pId, overlap) =@@ -904,7 +924,7 @@                   Just _ -> do                       setFocus cId                       setMode MessageSelect-                      csMessageSelect .= MessageSelectState (msg^.mMessageId)+                      csCurrentTeam.tsMessageSelect .= MessageSelectState (msg^.mMessageId)           Nothing ->             error "INTERNAL: selected Post ID not associated with a channel"       Nothing -> do
src/Matterhorn/State/NotifyPrefs.hs view
@@ -10,6 +10,7 @@ import Matterhorn.Prelude  import Network.Mattermost.Types ( ChannelNotifyProps+                                , TeamId                                 , User(..)                                 , UserNotifyProps(..)                                 , Type(..)@@ -61,14 +62,14 @@                                   ]     in radioField l (defaultField : nonDefault) -notifyPrefsForm :: UserNotifyProps -> ChannelNotifyProps -> Form ChannelNotifyProps e Name-notifyPrefsForm globalDefaults =-    newForm [ checkboxField muteLens MuteToggleField "Mute channel"-            , (padTop $ Pad 1) @@= checkboxField channelMentionLens ChannelMentionsField "Ignore channel mentions"+notifyPrefsForm :: TeamId -> UserNotifyProps -> ChannelNotifyProps -> Form ChannelNotifyProps e Name+notifyPrefsForm tId globalDefaults =+    newForm [ checkboxField muteLens (MuteToggleField tId) "Mute channel"+            , (padTop $ Pad 1) @@= checkboxField channelMentionLens (ChannelMentionsField tId) "Ignore channel mentions"             , radioStyle "Desktop notifications" @@=-                mkNotifyButtons DesktopNotificationsField channelNotifyPropsDesktopL (userNotifyPropsDesktop globalDefaults)+                mkNotifyButtons (DesktopNotificationsField tId) channelNotifyPropsDesktopL (userNotifyPropsDesktop globalDefaults)             , radioStyle "Push notifications" @@=-                mkNotifyButtons PushNotificationsField channelNotifyPropsPushL (userNotifyPropsPush globalDefaults)+                mkNotifyButtons (PushNotificationsField tId) channelNotifyPropsPushL (userNotifyPropsPush globalDefaults)             ]     where radioStyle label = (padTop $ Pad 1 ) . (str label <=>) . (padLeft $ Pad 1) @@ -80,7 +81,8 @@       _ -> do         let props = chanInfo^.cdNotifyProps         user <- use csMe-        csNotifyPrefs .= (Just (notifyPrefsForm (userNotifyProps user) props))+        tId <- use csCurrentTeamId+        csCurrentTeam.tsNotifyPrefs .= (Just (notifyPrefsForm tId (userNotifyProps user) props))         setMode EditNotifyPrefs  exitEditNotifyPrefsMode :: MH ()
src/Matterhorn/State/PostListOverlay.hs view
@@ -33,11 +33,11 @@ -- with a specified list of messages. enterPostListMode ::  PostListContents -> Messages -> MH () enterPostListMode contents msgs = do-  csPostListOverlay.postListPosts .= msgs+  csCurrentTeam.tsPostListOverlay.postListPosts .= msgs   let mlatest = getLatestPostMsg msgs       pId = mlatest >>= messagePostId       cId = mlatest >>= \m -> m^.mChannelId-  csPostListOverlay.postListSelected .= pId+  csCurrentTeam.tsPostListOverlay.postListSelected .= pId   setMode $ PostListOverlay contents   case (pId, cId) of     (Just p, Just c) -> asyncFetchMessagesSurrounding c p@@ -46,18 +46,18 @@ -- | Clear out the state of a PostListOverlay exitPostListMode :: MH () exitPostListMode = do-  csPostListOverlay.postListPosts .= emptyDirSeq-  csPostListOverlay.postListSelected .= Nothing+  csCurrentTeam.tsPostListOverlay.postListPosts .= emptyDirSeq+  csCurrentTeam.tsPostListOverlay.postListSelected .= Nothing   setMode Main  -createPostList :: PostListContents -> (Session -> IO Posts) -> MH ()-createPostList contentsType fetchOp = do+createPostList :: TeamId -> PostListContents -> (Session -> IO Posts) -> MH ()+createPostList tId contentsType fetchOp = do   session <- getSession   doAsyncWith Preempt $ do     posts <- fetchOp session     return $ Just $ do-      messages <- installMessagesFromPosts posts+      messages <- installMessagesFromPosts (Just tId) posts       -- n.b. do not use addNewPostedMessage because these messages       -- are not new, and so no notifications or channel highlighting       -- or other post-processing should be performed.@@ -71,15 +71,18 @@  -- | Create a PostListOverlay with flagged messages from the server. enterFlaggedPostListMode :: MH ()-enterFlaggedPostListMode = createPostList PostListFlagged $-                           mmGetListOfFlaggedPosts UserMe defaultFlaggedPostsQuery+enterFlaggedPostListMode = do+    tId <- use csCurrentTeamId+    createPostList tId PostListFlagged $+        mmGetListOfFlaggedPosts UserMe defaultFlaggedPostsQuery  -- | Create a PostListOverlay with pinned messages from the server for -- the current channel. enterPinnedPostListMode :: MH () enterPinnedPostListMode = do-    cId <- use csCurrentChannelId-    createPostList (PostListPinned cId) $ mmGetChannelPinnedPosts cId+    tId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId tId)+    createPostList tId (PostListPinned cId) $ mmGetChannelPinnedPosts cId  -- | Create a PostListOverlay with post search result messages from the -- server.@@ -88,8 +91,8 @@   | T.null (T.strip terms) = postInfoMessage "Search command requires at least one search term."   | otherwise = do       enterPostListMode (PostListSearch terms True) noMessages-      tId <- gets myTeamId-      createPostList (PostListSearch terms False) $+      tId <- use csCurrentTeamId+      createPostList tId (PostListSearch terms False) $         mmSearchForTeamPosts tId (SearchPosts terms False)  @@ -97,14 +100,14 @@ -- to finding a chronologically /newer/ message. postListSelectUp :: MH () postListSelectUp = do-  selId <- use (csPostListOverlay.postListSelected)-  posts <- use (csPostListOverlay.postListPosts)+  selId <- use (csCurrentTeam.tsPostListOverlay.postListSelected)+  posts <- use (csCurrentTeam.tsPostListOverlay.postListPosts)   let nextMsg = getNextMessage (MessagePostId <$> selId) posts   case nextMsg of     Nothing -> return ()     Just m -> do       let pId = m^.mMessageId >>= messageIdPostId-      csPostListOverlay.postListSelected .= pId+      csCurrentTeam.tsPostListOverlay.postListSelected .= pId       case (m^.mChannelId, pId) of         (Just c, Just p) -> asyncFetchMessagesSurrounding c p         o -> mhLog LogError@@ -115,14 +118,14 @@ -- to finding a chronologically /old/ message. postListSelectDown :: MH () postListSelectDown = do-  selId <- use (csPostListOverlay.postListSelected)-  posts <- use (csPostListOverlay.postListPosts)+  selId <- use (csCurrentTeam.tsPostListOverlay.postListSelected)+  posts <- use (csCurrentTeam.tsPostListOverlay.postListPosts)   let prevMsg = getPrevMessage (MessagePostId <$> selId) posts   case prevMsg of     Nothing -> return ()     Just m -> do       let pId = m^.mMessageId >>= messageIdPostId-      csPostListOverlay.postListSelected .= pId+      csCurrentTeam.tsPostListOverlay.postListSelected .= pId       case (m^.mChannelId, pId) of         (Just c, Just p) -> asyncFetchMessagesSurrounding c p         o -> mhLog LogError@@ -132,7 +135,7 @@ -- | Unflag the post currently selected in the PostListOverlay, if any postListUnflagSelected :: MH () postListUnflagSelected = do-  msgId <- use (csPostListOverlay.postListSelected)+  msgId <- use (csCurrentTeam.tsPostListOverlay.postListSelected)   case msgId of     Nothing  -> return ()     Just pId -> flagMessage pId False@@ -142,7 +145,7 @@ -- display and changes to MessageSelectState. postListJumpToCurrent :: MH () postListJumpToCurrent = do-  msgId <- use (csPostListOverlay.postListSelected)+  msgId <- use (csCurrentTeam.tsPostListOverlay.postListSelected)   case msgId of     Nothing  -> return ()     Just pId -> jumpToPost pId
src/Matterhorn/State/ReactionEmojiListOverlay.hs view
@@ -37,9 +37,10 @@     case selectedMessage of         Nothing -> return ()         Just msg -> do+            tId <- use csCurrentTeamId             em <- use (csResources.crEmoji)             myId <- gets myUserId-            enterListOverlayMode csReactionEmojiListOverlay ReactionEmojiListOverlay+            enterListOverlayMode (csTeam(tId).tsReactionEmojiListOverlay) ReactionEmojiListOverlay                 () enterHandler (fetchResults myId msg em)  enterHandler :: (Bool, T.Text) -> MH Bool@@ -118,7 +119,7 @@ -- cursor, and then check to see whether the modification warrants a -- prefetch of more search results. reactionEmojiListMove :: (L.List Name (Bool, T.Text) -> L.List Name (Bool, T.Text)) -> MH ()-reactionEmojiListMove = listOverlayMove csReactionEmojiListOverlay+reactionEmojiListMove = listOverlayMove (csCurrentTeam.tsReactionEmojiListOverlay)  -- | The number of emoji in a "page" for cursor movement purposes. reactionEmojiListPageSize :: Int
src/Matterhorn/State/Setup.hs view
@@ -10,8 +10,9 @@ import           Brick.BChan ( newBChan ) import           Brick.Themes ( themeToAttrMap, loadCustomizations ) import qualified Control.Concurrent.STM as STM+import qualified Data.Foldable as F+import qualified Data.HashMap.Strict as HM import           Data.Maybe ( fromJust )-import qualified Data.Sequence as Seq import qualified Data.Text as T import           Data.Time.Clock ( getCurrentTime ) import qualified Graphics.Vty as Vty@@ -24,19 +25,16 @@  import           Matterhorn.Config import           Matterhorn.InputHistory-import           Matterhorn.LastRunState import           Matterhorn.Login import           Matterhorn.State.Flagging-import           Matterhorn.State.Messages ( fetchVisibleIfNeeded )+import           Matterhorn.State.Teams ( buildTeamState ) import           Matterhorn.State.Setup.Threads-import           Matterhorn.TeamSelect import           Matterhorn.Themes import           Matterhorn.TimeUtils ( lookupLocalTimeZone ) import           Matterhorn.Types import           Matterhorn.Types.Common import           Matterhorn.Emoji import           Matterhorn.FilePaths ( userEmojiJsonPath, bundledEmojiJsonPath )-import qualified Matterhorn.Zipper as Z   incompleteCredentials :: Config -> ConnectionInfo@@ -103,25 +101,15 @@           -- with setup.           return (sess, user, cd, mbTeam) -  teams <- mmGetUsersTeams UserMe session-  when (Seq.null teams) $ do+  teams <- F.toList <$> mmGetUsersTeams UserMe session+  when (null teams) $ do       putStrLn "Error: your account is not a member of any teams"       exitFailure -  (myTeam, teamSelVty) <- do-      let foundTeam = do-             tName <- mbTeam <|> configTeam config-             let matchingTeam = listToMaybe $ filter matches $ toList teams-                 matches t = (sanitizeUserText $ teamName t) == tName-             matchingTeam--      case foundTeam of-          Just t -> return (t, loginVty)-          Nothing -> do-              (mTeam, vty) <- interactiveTeamSelection loginVty mkVty $ toList teams-              case mTeam of-                  Nothing -> shutdown vty-                  Just team -> return (team, vty)+  let initialTeamId = fromMaybe (teamId $ head $ sortTeams teams) $ do+          tName <- mbTeam <|> configTeam config+          let matchingTeam = listToMaybe $ filter (matchesTeam tName) teams+          teamId <$> matchingTeam    userStatusChan <- STM.newTChanIO   slc <- STM.newTChanIO@@ -151,7 +139,7 @@                  result <- loadCustomizations absPath baseTheme                  case result of                      Left e -> do-                         Vty.shutdown teamSelVty+                         Vty.shutdown loginVty                          putStrLn $ "Error loading theme customization from " <> show absPath <> ": " <> e                          exitFailure                      Right t -> return t@@ -181,43 +169,23 @@                          , _crEmoji               = emoji                          } -  st <- initializeState cr myTeam me+  st <- initializeState cr initialTeamId teams me -  return (st, teamSelVty)+  return (st, loginVty) -initializeState :: ChatResources -> Team -> User -> IO ChatState-initializeState cr myTeam me = do+matchesTeam :: T.Text -> Team -> Bool+matchesTeam tName t =+    let normalizeUserText = normalize . sanitizeUserText+        normalize = T.strip . T.toLower+        urlName = normalizeUserText $ teamName t+        displayName = normalizeUserText $ teamDisplayName t+    in normalize tName `elem` [displayName, urlName]++initializeState :: ChatResources -> TeamId -> [Team] -> User -> IO ChatState+initializeState cr initialTeamId teams me = do   let session = getResourceSession cr       requestChan = cr^.crRequestQueue-      myTId = getId myTeam -  -- Create a predicate to find the last selected channel by reading the-  -- run state file. If unable to read or decode or validate the file, this-  -- predicate is just `isTownSquare`.-  isLastSelectedChannel <- do-    result <- readLastRunState $ teamId myTeam-    case result of-      Right lrs | isValidLastRunState cr me lrs -> return $ \c ->-           channelId c == lrs^.lrsSelectedChannelId-      _ -> return isTownSquare--  -- Get all channels, but filter down to just the one we want to start-  -- in. We get all, rather than requesting by name or ID, because-  -- we don't know whether the server will give us a last-viewed preference.-  -- We first try to find a channel matching with the last selected channel ID,-  -- failing which we look for the Town Square channel by name.-  userChans <- mmGetChannelsForUser UserMe myTId session-  let lastSelectedChans = Seq.filter isLastSelectedChannel userChans-      chans = if Seq.null lastSelectedChans-                then Seq.filter isTownSquare userChans-                else lastSelectedChans--  -- Since the only channel we are dealing with is by construction the-  -- last channel, we don't have to consider other cases here:-  chanPairs <- forM (toList chans) $ \c -> do-      cChannel <- makeClientChannel (userId me) c-      return (getId c, cChannel)-   tz <- lookupLocalTimeZone   hist <- do       result <- readHistory@@ -247,35 +215,26 @@   --  * Subprocess logger   startSubprocessLoggerThread (cr^.crSubprocessLog) requestChan -  --  * Spell checker and spell check timer, if configured-  spResult <- maybeStartSpellChecker (cr^.crConfiguration) (cr^.crEventQueue)-   -- End thread startup ---------------------------------------------- -  now <- getCurrentTime-  let chanIds = mkChannelZipperList now (cr^.crConfiguration) Nothing (cr^.crUserPreferences) clientChans noUsers-      chanZip = Z.fromList chanIds-      clientChans = foldr (uncurry addChannel) noChannels chanPairs-      startupState =+  -- For each team, build a team state and load the last-run state.+  (teamStates, chanLists) <- unzip <$> mapM (buildTeamState cr me) teams++  let startupState =           StartupStateInfo { startupStateResources      = cr-                           , startupStateChannelZipper  = chanZip                            , startupStateConnectedUser  = me-                           , startupStateTeam           = myTeam                            , startupStateTimeZone       = tz                            , startupStateInitialHistory = hist-                           , startupStateSpellChecker   = spResult+                           , startupStateInitialTeam    = initialTeamId+                           , startupStateTeams          = teamMap                            }--  initialState <- newState startupState-  let st = initialState & csChannels .~ clientChans+      clientChans = mconcat chanLists+      st = newState startupState & csChannels .~ clientChans+      teamMap = HM.fromList $ (\ts -> (teamId $ _tsTeam ts, ts)) <$> F.toList teamStates    loadFlaggedMessages (cr^.crUserPreferences.userPrefFlaggedPostList) st    -- Trigger an initial websocket refresh   writeBChan (cr^.crEventQueue) RefreshWebsocketEvent--  -- Refresh initial channel(s)-  writeBChan (cr^.crEventQueue) $ RespEvent $ do-      fetchVisibleIfNeeded    return st
+ src/Matterhorn/State/Teams.hs view
@@ -0,0 +1,217 @@+module Matterhorn.State.Teams+  ( nextTeam+  , prevTeam+  , handleJoinTeam+  , handleLeaveTeam+  , handleUpdateTeam+  , buildTeamState+  , moveCurrentTeamLeft+  , moveCurrentTeamRight+  )+where++import           Prelude ()+import           Matterhorn.Prelude++import           Brick.Main ( invalidateCache )+import qualified Data.Sequence as Seq+import qualified Data.Text as T+import           Data.Time.Clock ( getCurrentTime )+import qualified Data.HashMap.Strict as HM+import           Lens.Micro.Platform ( (%=), (.=), at )++import           Network.Mattermost.Lenses ( userIdL )+import           Network.Mattermost.Types ( TeamId, Team, User, userId+                                          , getId, channelId, teamId, UserParam(..)+                                          , teamOrderPref+                                          )+import qualified Network.Mattermost.Endpoints as MM++import           Matterhorn.Types+import           Matterhorn.LastRunState+import           Matterhorn.State.Async+import           Matterhorn.State.ChannelList+import           Matterhorn.State.Channels+import           Matterhorn.State.Messages+import           Matterhorn.State.Setup.Threads ( maybeStartSpellChecker )+import qualified Matterhorn.Zipper as Z+++-- | Move right in the channel list to select the next team.+nextTeam :: MH ()+nextTeam = setTeamFocusWith Z.right++-- | Move left in the channel list to select the previous team.+prevTeam :: MH ()+prevTeam = setTeamFocusWith Z.left++-- | Change the selected team with the specified team zipper+-- transformation. This function also takes care of book-keeping+-- necessary during team switching.+setTeamFocusWith :: (Z.Zipper () TeamId -> Z.Zipper () TeamId) -> MH ()+setTeamFocusWith f = do+    csTeamZipper %= f+    postChangeTeamCommon++-- | Book-keeping common to all team selection changes.+postChangeTeamCommon :: MH ()+postChangeTeamCommon = do+    updateViewed False+    fetchVisibleIfNeeded++-- | Fetch the specified team and add it to the application state.+--+-- This is called in response to a server event indicating that the+-- current user was added to the team.+handleJoinTeam :: TeamId -> MH ()+handleJoinTeam tId = do+    session <- getSession+    cr <- use csResources+    me <- use csMe++    mhLog LogGeneral $ T.pack $ "Joining team " <> show tId+    doAsyncWith Normal $ do+        t <- MM.mmGetTeam tId session+        (ts, chans) <- buildTeamState cr me t+        return $ Just $ do+            curTs <- use csTeams+            let myTIds = HM.keys curTs+            when (not $ tId `elem` myTIds) $ do+                addTeamState ts chans+                updateSidebar $ Just tId+                updateWindowTitle+                refreshTeamZipper++-- | Remove the specified team to the application state.+--+-- This is called in response to a server event indicating that the+-- current user was removed from the team.+handleLeaveTeam :: TeamId -> MH ()+handleLeaveTeam tId =+    doAsyncWith Normal $ return $ Just $ do+        mhLog LogGeneral $ T.pack $ "Leaving team " <> show tId+        removeTeam tId+        updateWindowTitle+        -- Invalidating the cache here expunges any cached message+        -- renderings from the team we are leaving.+        mh invalidateCache++-- | Fetch the specified team's metadata and update it in the+-- application state.+--+-- This is called in response to a server event indicating that the+-- specified team was updated in some way.+handleUpdateTeam :: TeamId -> MH ()+handleUpdateTeam tId = do+    session <- getSession+    mhLog LogGeneral $ T.pack $ "Updating team " <> show tId+    doAsyncWith Normal $ do+        t <- MM.mmGetTeam tId session+        return $ Just $ do+            updateTeam t+            -- Invalidate the cache since we happen to know that the+            -- team name is in the cached sidebar.+            mh invalidateCache++-- | Set the team zipper ordering with the specified transformation,+-- which is expected to be either 'moveLeft' or 'moveRight'.+setTeamOrderWith :: (TeamId -> [TeamId] -> [TeamId]) -> MH ()+setTeamOrderWith sortFunc = do+    session <- getSession+    me <- use csMe++    tId <- use csCurrentTeamId+    z <- use csTeamZipper+    let tIds = teamZipperIds z+        newList = sortFunc tId tIds++    doAsyncWith Normal $ do+        let pref = teamOrderPref (me^.userIdL) newList+        MM.mmSaveUsersPreferences UserMe (Seq.singleton pref) session+        return Nothing++-- | Move the selected team left in the team list.+moveCurrentTeamLeft :: MH ()+moveCurrentTeamLeft = setTeamOrderWith moveLeft++-- | Move the selected team right in the team list.+moveCurrentTeamRight :: MH ()+moveCurrentTeamRight = setTeamOrderWith moveRight++-- | Build a new 'TeamState' for the specified team.+--+-- This function starts a new spell checker thread for the team's+-- message editor, loads the last-run state for the team (to ensure that+-- the initially-selected channel is honored), and fetches the channel+-- metadata for the team.+--+-- This returns the resulting team state as well as the channels+-- associated with the team. The caller is responsible for adding the+-- channels and the team state to the application state.+buildTeamState :: ChatResources -> User -> Team -> IO (TeamState, ClientChannels)+buildTeamState cr me team = do+    let tId = teamId team+        session = getResourceSession cr++    -- Create a predicate to find the last selected channel by reading+    -- the run state file. If unable to read or decode or validate the+    -- file, this predicate is just `isTownSquare`.+    isLastSelectedChannel <- do+        result <- readLastRunState tId+        case result of+            Right lrs | isValidLastRunState cr me lrs -> return $ \c ->+                 channelId c == lrs^.lrsSelectedChannelId+            _ -> return isTownSquare++    -- Get all channels, but filter down to just the one we want+    -- to start in. We get all, rather than requesting by name or+    -- ID, because we don't know whether the server will give us a+    -- last-viewed preference. We first try to find a channel matching+    -- with the last selected channel ID, failing which we look for the+    -- Town Square channel by name.+    userChans <- MM.mmGetChannelsForUser UserMe tId session+    let lastSelectedChans = Seq.filter isLastSelectedChannel userChans+        chans = if Seq.null lastSelectedChans+                  then Seq.filter isTownSquare userChans+                  else lastSelectedChans++    -- Since the only channel we are dealing with is by construction the+    -- last channel, we don't have to consider other cases here:+    chanPairs <- forM (toList chans) $ \c -> do+        cChannel <- makeClientChannel (userId me) c+        return (getId c, cChannel)++    -- Start the spell checker and spell check timer, if configured+    spResult <- maybeStartSpellChecker (cr^.crConfiguration) (cr^.crEventQueue)++    now <- getCurrentTime+    let chanIds = mkChannelZipperList now (cr^.crConfiguration) tId+                                          Nothing (cr^.crUserPreferences)+                                          clientChans noUsers+        chanZip = Z.fromList chanIds+        clientChans = foldr (uncurry addChannel) noChannels chanPairs++    return (newTeamState team chanZip spResult, clientChans)++-- | Add a new 'TeamState' and corresponding channels to the application+-- state.+addTeamState :: TeamState -> ClientChannels -> MH ()+addTeamState ts chans = do+    let tId = teamId $ _tsTeam ts+    csTeams.at tId .= Just ts+    csChannels %= (chans <>)++-- | Update the specified team metadata in the application state (only+-- if we are already a member of that team).+updateTeam :: Team -> MH ()+updateTeam t = do+    let tId = teamId t+    ts <- use csTeams+    when (tId `elem` HM.keys ts) $ do+        csTeam(tId).tsTeam .= t++-- | Remove the specified team from the application state.+removeTeam :: TeamId -> MH ()+removeTeam tId = do+    csTeams.at tId .= Nothing+    setTeamFocusWith $ Z.filterZipper (/= tId)
src/Matterhorn/State/ThemeListOverlay.hs view
@@ -31,7 +31,8 @@ -- request to gather the first search results. enterThemeListMode :: MH () enterThemeListMode =-    enterListOverlayMode csThemeListOverlay ThemeListOverlay () setInternalTheme getThemesMatching+    enterListOverlayMode (csCurrentTeam.tsThemeListOverlay)+        ThemeListOverlay () setInternalTheme getThemesMatching  -- | Move the selection up in the user list overlay by one user. themeListSelectUp :: MH ()@@ -55,7 +56,7 @@ -- cursor, and then check to see whether the modification warrants a -- prefetch of more search results. themeListMove :: (L.List Name InternalTheme -> L.List Name InternalTheme) -> MH ()-themeListMove = listOverlayMove csThemeListOverlay+themeListMove = listOverlayMove (csCurrentTeam.tsThemeListOverlay)  -- | The number of users in a "page" for cursor movement purposes. themeListPageSize :: Int
src/Matterhorn/State/UrlSelect.hs view
@@ -22,15 +22,16 @@ startUrlSelect :: MH () startUrlSelect = do     urls <- use (csCurrentChannel.to findUrls.to V.fromList)+    tId <- use csCurrentTeamId     setMode UrlSelect-    csUrlList .= (listMoveTo (length urls - 1) $ list UrlList urls 2)+    csCurrentTeam.tsUrlList .= (listMoveTo (length urls - 1) $ list (UrlList tId) urls 2)  stopUrlSelect :: MH () stopUrlSelect = setMode Main  openSelectedURL :: MH () openSelectedURL = whenMode UrlSelect $ do-    selected <- use (csUrlList.to listSelectedElement)+    selected <- use (csCurrentTeam.tsUrlList.to listSelectedElement)     case selected of         Nothing -> setMode Main         Just (_, link) -> do
src/Matterhorn/State/UserListOverlay.hs view
@@ -34,15 +34,15 @@ -- current channel. enterChannelMembersUserList :: MH () enterChannelMembersUserList = do-    cId <- use csCurrentChannelId+    myTId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId myTId)     myId <- gets myUserId-    myTId <- gets myTeamId     session <- getSession      doAsyncWith Preempt $ do         stats <- MM.mmGetChannelStatistics cId session         return $ Just $ do-            enterUserListMode (ChannelMembers cId myTId) (Just $ channelStatsMemberCount stats)+            enterUserListMode myTId (ChannelMembers cId myTId) (Just $ channelStatsMemberCount stats)               (\u -> case u^.uiId /= myId of                 True -> createOrFocusDMChannel u Nothing >> return True                 False -> return False@@ -53,10 +53,10 @@ -- channel. enterChannelInviteUserList :: MH () enterChannelInviteUserList = do-    cId <- use csCurrentChannelId+    myTId <- use csCurrentTeamId+    cId <- use (csCurrentChannelId myTId)     myId <- gets myUserId-    myTId <- gets myTeamId-    enterUserListMode (ChannelNonMembers cId myTId) Nothing+    enterUserListMode myTId (ChannelNonMembers cId myTId) Nothing       (\u -> case u^.uiId /= myId of         True -> addUserToCurrentChannel u >> return True         False -> return False@@ -67,12 +67,12 @@ enterDMSearchUserList :: MH () enterDMSearchUserList = do     myId <- gets myUserId-    myTId <- gets myTeamId+    myTId <- use csCurrentTeamId     config <- use csClientConfig     let restrictTeam = case MM.clientConfigRestrictDirectMessage <$> config of             Just MM.RestrictTeam -> Just myTId             _ -> Nothing-    enterUserListMode (AllUsers restrictTeam) Nothing+    enterUserListMode myTId (AllUsers restrictTeam) Nothing       (\u -> case u^.uiId /= myId of         True -> createOrFocusDMChannel u Nothing >> return True         False -> return False@@ -80,10 +80,10 @@  -- | Show the user list overlay with the given search scope, and issue a -- request to gather the first search results.-enterUserListMode :: UserSearchScope -> Maybe Int -> (UserInfo -> MH Bool) -> MH ()-enterUserListMode scope resultCount enterHandler = do-    csUserListOverlay.listOverlayRecordCount .= resultCount-    enterListOverlayMode csUserListOverlay UserListOverlay scope enterHandler getUserSearchResults+enterUserListMode :: TeamId -> UserSearchScope -> Maybe Int -> (UserInfo -> MH Bool) -> MH ()+enterUserListMode tId scope resultCount enterHandler = do+    csTeam(tId).tsUserListOverlay.listOverlayRecordCount .= resultCount+    enterListOverlayMode (csTeam(tId).tsUserListOverlay) UserListOverlay scope enterHandler getUserSearchResults  userInfoFromPair :: User -> Text -> UserInfo userInfoFromPair u status =@@ -111,7 +111,7 @@ -- cursor, and then check to see whether the modification warrants a -- prefetch of more search results. userListMove :: (L.List Name UserInfo -> L.List Name UserInfo) -> MH ()-userListMove = listOverlayMove csUserListOverlay+userListMove = listOverlayMove (csCurrentTeam.tsUserListOverlay)  -- | The number of users in a "page" for cursor movement purposes. userListPageSize :: Int
− src/Matterhorn/TeamSelect.hs
@@ -1,90 +0,0 @@-module Matterhorn.TeamSelect-  ( interactiveTeamSelection-  )-where--import           Prelude ()-import           Matterhorn.Prelude--import           Brick-import           Brick.Widgets.Border-import           Brick.Widgets.Center-import           Brick.Widgets.List-import qualified Data.Function as F-import           Data.List ( sortBy )-import qualified Data.Vector as V-import           Graphics.Vty hiding (mkVty)-import qualified Data.Text as T--import           Network.Mattermost.Types--import           Matterhorn.Draw.RichText-import           Matterhorn.Types.Common---data State =-    State { appList :: List () Team-          , appCancelled :: Bool-          }--interactiveTeamSelection :: Vty -> IO Vty -> [Team] -> IO (Maybe Team, Vty)-interactiveTeamSelection vty mkVty teams = do-    let state = State { appList = list () (V.fromList sortedTeams) 1-                      , appCancelled = False-                      }-        sortedTeams = sortBy (compare `F.on` teamName) teams--    (finalSt, finalVty) <- customMainWithVty vty mkVty Nothing app state--    let result = if appCancelled finalSt-                 then Nothing-                 else snd <$> listSelectedElement (appList finalSt)--    return (result, finalVty)--app :: App State e ()-app = App-  { appDraw         = teamSelectDraw-  , appChooseCursor = neverShowCursor-  , appHandleEvent  = onEvent-  , appStartEvent   = return-  , appAttrMap      = const colorTheme-  }--colorTheme :: AttrMap-colorTheme = attrMap defAttr-  [ (listSelectedFocusedAttr, black `on` yellow)-  ]--teamSelectDraw :: State -> [Widget ()]-teamSelectDraw st =-    [ teamSelect st-    ]--teamSelect :: State -> Widget ()-teamSelect st =-    center $ hLimit 50 $ vLimit 15 $-    vBox [ hCenter $ txt "Welcome to Mattermost. Please select a team:"-         , txt " "-         , border theList-         , txt " "-         , renderText "Press Enter to select a team and connect or Esc to exit."-         ]-    where-    theList = renderList renderTeamItem True (appList st)--renderTeamItem :: Bool -> Team -> Widget ()-renderTeamItem _ t =-    padRight Max $ txt $ (sanitizeUserText $ teamName t) <>-        if not $ T.null (sanitizeUserText $ teamDisplayName t)-        then " (" <> (sanitizeUserText $ teamDisplayName t) <> ")"-        else ""--onEvent :: State -> BrickEvent () e -> EventM () (Next State)-onEvent st (VtyEvent (EvKey KEsc [])) = do-    halt $ st { appCancelled = True }-onEvent st (VtyEvent (EvKey KEnter [])) = halt st-onEvent st (VtyEvent e) = do-    list' <- handleListEvent e (appList st)-    continue $ st { appList = list' }-onEvent st _ = continue st
src/Matterhorn/Themes.hs view
@@ -16,6 +16,7 @@   , unreadChannelAttr   , unreadGroupMarkerAttr   , mentionsChannelAttr+  , currentTeamAttr   , urlAttr   , codeAttr   , emailAttr@@ -161,6 +162,9 @@ mentionsChannelAttr :: AttrName mentionsChannelAttr = "channelWithMentions" +currentTeamAttr :: AttrName+currentTeamAttr = "currentTeam"+ tabSelectedAttr :: AttrName tabSelectedAttr = "tabSelected" @@ -309,6 +313,7 @@        , (editedRecentlyMarkingAttr,        black `on` yellow)        , (tabSelectedAttr,                  black `on` yellow)        , (focusedFormInputAttr,             black `on` yellow)+       , (currentTeamAttr,                  black `on` yellow)        , (FB.fileBrowserCurrentDirectoryAttr, white `on` blue)        , (FB.fileBrowserSelectionInfoAttr,  white `on` blue)        , (FB.fileBrowserDirectoryAttr,      fg blue)@@ -369,6 +374,7 @@      , (editedRecentlyMarkingAttr,        black `on` yellow)      , (tabSelectedAttr,                  black `on` yellow)      , (focusedFormInputAttr,             black `on` yellow)+     , (currentTeamAttr,                  black `on` yellow)      , (FB.fileBrowserCurrentDirectoryAttr, white `on` blue)      , (FB.fileBrowserSelectionInfoAttr,  white `on` blue)      , (FB.fileBrowserDirectoryAttr,      fg blue)@@ -802,6 +808,9 @@       )     , ( currentUserAttr       , "Attribute for the username of the user running Matterhorn"+      )+    , ( currentTeamAttr+      , "The currently-selected team"       )     ] <> [ (usernameAttr i, T.pack $ "Username color " <> show i)          | i <- [0..usernameColorHashBuckets-1]
src/Matterhorn/Types.hs view
@@ -51,7 +51,47 @@   , ChannelTopicDialogState(..)   , channelTopicDialogEditor   , channelTopicDialogFocus+   , Config(..)+  , configUserL+  , configHostL+  , configTeamL+  , configPortL+  , configUrlPathL+  , configPassL+  , configTokenL+  , configTimeFormatL+  , configDateFormatL+  , configThemeL+  , configThemeCustomizationFileL+  , configSmartBacktickL+  , configSmartEditingL+  , configURLOpenCommandL+  , configURLOpenCommandInteractiveL+  , configActivityNotifyCommandL+  , configActivityBellL+  , configShowMessageTimestampsL+  , configShowBackgroundL+  , configShowMessagePreviewL+  , configShowChannelListL+  , configShowExpandedChannelTopicsL+  , configEnableAspellL+  , configAspellDictionaryL+  , configUnsafeUseHTTPL+  , configValidateServerCertificateL+  , configChannelListWidthL+  , configLogMaxBufferSizeL+  , configShowOlderEditsL+  , configShowTypingIndicatorL+  , configAbsPathL+  , configUserKeysL+  , configHyperlinkingModeL+  , configSyntaxDirsL+  , configDirectChannelExpirationDaysL+  , configCpuUsagePolicyL+  , configDefaultAttachmentPathL+  , configChannelListOrientationL+   , HelpScreen(..)   , PasswordSource(..)   , TokenSource(..)@@ -68,9 +108,14 @@    , attrNameToConfig +  , sortTeams+  , mkTeamZipper+  , mkTeamZipperFromIds+  , teamZipperIds   , mkChannelZipperList   , ChannelListGroup(..)   , channelListGroupUnread+  , nonDMChannelListGroupUnread    , trimChannelSigil @@ -79,44 +124,51 @@   , channelSelectInput   , emptyChannelSelectState +  , TeamState(..)+  , tsFocus+  , tsMode+  , tsPendingChannelChange+  , tsRecentChannel+  , tsReturnChannel+  , tsEditState+  , tsMessageSelect+  , tsTeam+  , tsChannelSelectState+  , tsUrlList+  , tsViewedMessage+  , tsPostListOverlay+  , tsUserListOverlay+  , tsChannelListOverlay+  , tsNotifyPrefs+  , tsChannelTopicDialog+  , tsReactionEmojiListOverlay+  , tsThemeListOverlay+   , ChatState   , newState-  , csChannelTopicDialog+  , newTeamState++  , csTeamZipper+  , csCurrentTeam+  , csTeams+  , csTeam   , csChannelListOrientation   , csResources-  , csFocus   , csCurrentChannel   , csCurrentChannelId-  , csUrlList-  , csShowMessagePreview-  , csShowChannelList-  , csShowExpandedChannelTopics+  , csCurrentTeamId   , csPostMap-  , csRecentChannel-  , csReturnChannel-  , csThemeListOverlay-  , csPostListOverlay-  , csUserListOverlay-  , csChannelListOverlay-  , csReactionEmojiListOverlay-  , csMyTeam-  , csMessageSelect   , csConnectionStatus   , csWorkerIsBusy   , csChannel   , csChannels-  , csChannelSelectState-  , csEditState   , csClientConfig-  , csPendingChannelChange-  , csViewedMessage-  , csNotifyPrefs+  , csInputHistory   , csMe   , timeZone   , whenMode   , setMode   , setMode'-  , appMode    , ChatEditState   , emptyEditState@@ -128,7 +180,6 @@   , cedEditMode   , cedEphemeral   , cedEditor-  , cedInputHistory   , cedAutocomplete   , cedAutocompletePending   , cedJustCompleted@@ -188,12 +239,16 @@    , specialUserMentions +  , applyTeamOrder+  , refreshTeamZipper+   , UserPreferences(UserPreferences)   , userPrefShowJoinLeave   , userPrefFlaggedPostList   , userPrefGroupChannelPrefs   , userPrefDirectChannelPrefs   , userPrefTeammateNameDisplayMode+  , userPrefTeamOrder   , dmChannelShowPreference   , groupChannelShowPreference @@ -217,6 +272,7 @@   , generateUUID_IO   , mhSuspendAndResume   , mhHandleEventLensed+  , mhHandleEventLensed'   , St.gets   , mhError @@ -254,13 +310,11 @@   , myUser   , myUsername   , myUserId-  , myTeamId   , usernameForUserId   , userByUsername   , userByNickname   , channelIdByChannelName   , channelIdByUsername-  , channelByName   , userById   , allUserIds   , addNewUser@@ -276,7 +330,11 @@   , UserSet   , ChannelSet   , getHighlightSet+  , emptyHSet +  , moveLeft+  , moveRight+   , module Matterhorn.Types.Channels   , module Matterhorn.Types.Messages   , module Matterhorn.Types.Posts@@ -309,6 +367,7 @@ import qualified Data.Set as Set import qualified Data.ByteString as BS import qualified Data.Foldable as F+import           Data.Function ( on ) import qualified Data.Kind as K import           Data.Ord ( comparing ) import qualified Data.HashMap.Strict as HM@@ -378,6 +437,11 @@ channelListGroupUnread (ChannelGroupPrivateChannels n) = n channelListGroupUnread (ChannelGroupDirectMessages n)  = n +nonDMChannelListGroupUnread :: ChannelListGroup -> Int+nonDMChannelListGroupUnread (ChannelGroupPublicChannels n)  = n+nonDMChannelListGroupUnread (ChannelGroupPrivateChannels n) = n+nonDMChannelListGroupUnread (ChannelGroupDirectMessages _)  = 0+ -- | The type of channel list entries. data ChannelListEntry =     CLChannel ChannelId@@ -502,11 +566,12 @@     deriving (Eq, Show)  data UserPreferences =-    UserPreferences { _userPrefShowJoinLeave     :: Bool-                    , _userPrefFlaggedPostList   :: Seq FlaggedPost+    UserPreferences { _userPrefShowJoinLeave :: Bool+                    , _userPrefFlaggedPostList :: Seq FlaggedPost                     , _userPrefGroupChannelPrefs :: HashMap ChannelId Bool                     , _userPrefDirectChannelPrefs :: HashMap UserId Bool                     , _userPrefTeammateNameDisplayMode :: Maybe TeammateNameDisplayMode+                    , _userPrefTeamOrder :: Maybe [TeamId]                     }  hasUnread :: ChatState -> ChannelId -> Bool@@ -524,23 +589,25 @@  mkChannelZipperList :: UTCTime                     -> Config+                    -> TeamId                     -> Maybe ClientConfig                     -> UserPreferences                     -> ClientChannels                     -> Users                     -> [(ChannelListGroup, [ChannelListEntry])]-mkChannelZipperList now config cconfig prefs cs us =-    [ let (unread, entries) = getChannelEntriesInOrder cs Ordinary+mkChannelZipperList now config tId cconfig prefs cs us =+    [ let (unread, entries) = getChannelEntriesInOrder tId cs Ordinary       in (ChannelGroupPublicChannels unread, entries)-    , let (unread, entries) = getChannelEntriesInOrder cs Private+    , let (unread, entries) = getChannelEntriesInOrder tId cs Private       in (ChannelGroupPrivateChannels unread, entries)     , let (unread, entries) = getDMChannelEntriesInOrder now config cconfig prefs us cs       in (ChannelGroupDirectMessages unread, entries)     ] -getChannelEntriesInOrder :: ClientChannels -> Type -> (Int, [ChannelListEntry])-getChannelEntriesInOrder cs ty =-    let matches (_, info) = info^.ccInfo.cdType == ty+getChannelEntriesInOrder :: TeamId -> ClientChannels -> Type -> (Int, [ChannelListEntry])+getChannelEntriesInOrder tId cs ty =+    let matches (_, info) = info^.ccInfo.cdType == ty &&+                            info^.ccInfo.cdTeamId == Just tId         pairs = filteredChannels matches cs         unread = length $ filter (== True) $ (hasUnread' . snd) <$> pairs         entries = fmap (CLChannel . fst) $@@ -593,6 +660,7 @@                          -> [(Bool, T.Text, ChannelListEntry)] getGroupDMChannelEntries now config prefs cs =     let matches (_, info) = info^.ccInfo.cdType == Group &&+                            info^.ccInfo.cdTeamId == Nothing &&                             groupChannelShouldAppear now config prefs info     in fmap (\(cId, ch) -> (hasUnread' ch, ch^.ccInfo.cdDisplayName, CLGroupDM cId)) $        filteredChannels matches cs@@ -668,43 +736,44 @@ -- parts of the interface. data Name =     ChannelMessages ChannelId-    | MessageInput-    | ChannelList+    | MessageInput TeamId+    | ChannelList TeamId     | HelpViewport     | HelpText     | ScriptHelpText     | ThemeHelpText     | SyntaxHighlightHelpText     | KeybindingHelpText-    | ChannelSelectString-    | CompletionAlternatives-    | CompletionList-    | JoinChannelList-    | UrlList-    | MessagePreviewViewport-    | ThemeListSearchInput-    | UserListSearchInput-    | JoinChannelListSearchInput-    | UserListSearchResults-    | ThemeListSearchResults-    | ViewMessageArea-    | ViewMessageReactionsArea-    | ChannelSidebar-    | ChannelSelectInput-    | AttachmentList-    | AttachmentFileBrowser-    | MessageReactionsArea-    | ReactionEmojiList-    | ReactionEmojiListInput-    | TabbedWindowTabBar-    | MuteToggleField-    | ChannelMentionsField-    | DesktopNotificationsField (WithDefault NotifyOption)-    | PushNotificationsField (WithDefault NotifyOption)-    | ChannelTopicEditor-    | ChannelTopicSaveButton-    | ChannelTopicCancelButton-    | ChannelTopicEditorPreview+    | ChannelSelectString TeamId+    | CompletionAlternatives TeamId+    | CompletionList TeamId+    | JoinChannelList TeamId+    | UrlList TeamId+    | MessagePreviewViewport TeamId+    | ThemeListSearchInput TeamId+    | UserListSearchInput TeamId+    | JoinChannelListSearchInput TeamId+    | UserListSearchResults TeamId+    | ThemeListSearchResults TeamId+    | ViewMessageArea TeamId+    | ViewMessageReactionsArea TeamId+    | ChannelSidebar TeamId+    | ChannelSelectInput TeamId+    | AttachmentList TeamId+    | AttachmentFileBrowser TeamId+    | MessageReactionsArea TeamId+    | ReactionEmojiList TeamId+    | ReactionEmojiListInput TeamId+    | TabbedWindowTabBar TeamId+    | MuteToggleField TeamId+    | ChannelMentionsField TeamId+    | DesktopNotificationsField TeamId (WithDefault NotifyOption)+    | PushNotificationsField TeamId (WithDefault NotifyOption)+    | ChannelTopicEditor TeamId+    | ChannelTopicSaveButton TeamId+    | ChannelTopicCancelButton TeamId+    | ChannelTopicEditorPreview TeamId+    | TeamList     deriving (Eq, Show, Ord)  -- | The sum type of exceptions we expect to encounter on authentication@@ -796,6 +865,7 @@                     , _userPrefGroupChannelPrefs = mempty                     , _userPrefDirectChannelPrefs = mempty                     , _userPrefTeammateNameDisplayMode = Nothing+                    , _userPrefTeamOrder = Nothing                     }  setUserPreferences :: Seq Preference -> UserPreferences -> UserPreferences@@ -819,6 +889,9 @@                     (groupChannelShow gp)                     (_userPrefGroupChannelPrefs u)                 }+            | Just tIds <- preferenceToTeamOrder p =+              u { _userPrefTeamOrder = Just tIds+                }             | preferenceName p == PreferenceName "join_leave" =               u { _userPrefShowJoinLeave =                   preferenceValue p /= PreferenceValue "false" }@@ -1010,13 +1083,6 @@     ChatEditState { _cedEditor :: Editor Text Name                   , _cedEditMode :: EditMode                   , _cedEphemeral :: EphemeralEditState-                  , _cedInputHistory :: InputHistory-                  -- ^ The map of per-channel input history for the-                  -- application. We don't distribute the per-channel-                  -- history into the per-channel states (like we do-                  -- for other per-channel state) since keeping it-                  -- under the InputHistory banner lets us use a nicer-                  -- startup/shutdown disk file management API.                   , _cedYankBuffer :: Text                   , _cedSpellChecker :: Maybe (Aspell, IO ())                   , _cedMisspellings :: Set Text@@ -1055,21 +1121,20 @@  -- | We can initialize a new 'ChatEditState' value with just an edit -- history, which we save locally.-emptyEditState :: InputHistory -> Maybe (Aspell, IO ()) -> IO ChatEditState-emptyEditState hist sp =-    return ChatEditState { _cedEditor               = editor MessageInput Nothing ""-                         , _cedEphemeral            = defaultEphemeralEditState-                         , _cedInputHistory         = hist-                         , _cedEditMode             = NewPost-                         , _cedYankBuffer           = ""-                         , _cedSpellChecker         = sp-                         , _cedMisspellings         = mempty-                         , _cedAutocomplete         = Nothing-                         , _cedAutocompletePending  = Nothing-                         , _cedAttachmentList       = list AttachmentList mempty 1-                         , _cedFileBrowser          = Nothing-                         , _cedJustCompleted        = False-                         }+emptyEditState :: TeamId -> ChatEditState+emptyEditState tId =+    ChatEditState { _cedEditor               = editor (MessageInput tId) Nothing ""+                  , _cedEphemeral            = defaultEphemeralEditState+                  , _cedEditMode             = NewPost+                  , _cedYankBuffer           = ""+                  , _cedSpellChecker         = Nothing+                  , _cedMisspellings         = mempty+                  , _cedAutocomplete         = Nothing+                  , _cedAutocompletePending  = Nothing+                  , _cedAttachmentList       = list (AttachmentList tId) mempty 1+                  , _cedFileBrowser          = Nothing+                  , _cedJustCompleted        = False+                  }  -- | A 'RequestChan' is a queue of operations we have to perform in the -- background to avoid blocking on the main loop@@ -1303,21 +1368,20 @@     -- ^ Show the channel list to the right of the message area.     deriving (Eq, Show) --- | This is the giant bundle of fields that represents the current--- state of our application at any given time.+-- | This type represents the current state of our application at any+-- given time. data ChatState =     ChatState { _csResources :: ChatResources               -- ^ Global application-wide resources that don't change               -- much.-              , _csFocus :: Z.Zipper ChannelListGroup ChannelListEntry-              -- ^ The channel sidebar zipper that tracks which channel-              -- is selected.+              , _csTeams :: HashMap TeamId TeamState+              -- ^ The state for each team that we are in.+              , _csTeamZipper :: Z.Zipper () TeamId+              -- ^ The list of teams we can cycle through.               , _csChannelListOrientation :: ChannelListOrientation               -- ^ The orientation of the channel list.               , _csMe :: User               -- ^ The authenticated user.-              , _csMyTeam :: Team-              -- ^ The active team of the authenticated user.               , _csChannels :: ClientChannels               -- ^ The channels that we are showing, including their               -- message lists.@@ -1329,56 +1393,59 @@               -- ^ All of the users we know about.               , _timeZone :: TimeZoneSeries               -- ^ The client time zone.-              , _csEditState :: ChatEditState-              -- ^ The state of the input box used for composing and-              -- editing messages and commands.-              , _csMode :: Mode-              -- ^ The current application mode. This is used to-              -- dispatch to different rendering and event handling-              -- routines.-              , _csShowMessagePreview :: Bool-              -- ^ Whether to show the message preview area.-              , _csShowChannelList :: Bool-              -- ^ Whether to show the channel list.-              , _csShowExpandedChannelTopics :: Bool-              -- ^ Whether to show expanded channel topics.-              , _csChannelSelectState :: ChannelSelectState-              -- ^ The state of the user's input and selection for-              -- channel selection mode.-              , _csRecentChannel :: Maybe ChannelId-              -- ^ The most recently-selected channel, if any.-              , _csReturnChannel :: Maybe ChannelId-              -- ^ The channel to return to after visiting one or more-              -- unread channels.-              , _csUrlList :: List Name LinkChoice-              -- ^ The URL list used to show URLs drawn from messages in-              -- a channel.               , _csConnectionStatus :: ConnectionStatus               -- ^ Our view of the connection status.               , _csWorkerIsBusy :: Maybe (Maybe Int)               -- ^ Whether the async worker thread is busy, and its               -- queue length if so.-              , _csMessageSelect :: MessageSelectState-              -- ^ The state of message selection mode.-              , _csThemeListOverlay :: ListOverlayState InternalTheme ()-              -- ^ The state of the theme list overlay.-              , _csPostListOverlay :: PostListOverlayState-              -- ^ The state of the post list overlay.-              , _csUserListOverlay :: ListOverlayState UserInfo UserSearchScope-              -- ^ The state of the user list overlay.-              , _csChannelListOverlay :: ListOverlayState Channel ChannelSearchScope-              -- ^ The state of the user list overlay.-              , _csReactionEmojiListOverlay :: ListOverlayState (Bool, T.Text) ()-              -- ^ The state of the reaction emoji list overlay.               , _csClientConfig :: Maybe ClientConfig               -- ^ The Mattermost client configuration, as we understand it.-              , _csPendingChannelChange :: Maybe PendingChannelChange+              , _csInputHistory :: InputHistory+              -- ^ The map of per-channel input history for the+              -- application. We don't distribute the per-channel+              -- history into the per-channel states (like we do+              -- for other per-channel state) since keeping it+              -- under the InputHistory banner lets us use a nicer+              -- startup/shutdown disk file management API.+              }++-- | All application state specific to a team, along with state specific+-- to our user interface's presentation of that team. We include the+-- UI state relevant to the team so that we can easily switch which+-- team the UI is presenting without having to reinitialize the UI from+-- the new team. This allows the user to be engaged in just about any+-- application activity while viewing a team, switch to another team,+-- and return to the original team and resume what they were doing, all+-- without us doing any work.+data TeamState =+    TeamState { _tsFocus :: Z.Zipper ChannelListGroup ChannelListEntry+              -- ^ The channel sidebar zipper that tracks which channel+              -- is selected.+              , _tsPendingChannelChange :: Maybe PendingChannelChange               -- ^ A pending channel change that we need to apply once               -- the channel in question is available. We set this up               -- when we need to change to a channel in the sidebar, but               -- it isn't even there yet because we haven't loaded its               -- metadata.-              , _csViewedMessage :: Maybe (Message, TabbedWindow ViewMessageWindowTab)+              , _tsRecentChannel :: Maybe ChannelId+              -- ^ The most recently-selected channel, if any.+              , _tsReturnChannel :: Maybe ChannelId+              -- ^ The channel to return to after visiting one or more+              -- unread channels.+              , _tsEditState :: ChatEditState+              -- ^ The state of the input box used for composing and+              -- editing messages and commands.+              , _tsMessageSelect :: MessageSelectState+              -- ^ The state of message selection mode.+              , _tsTeam :: Team+              -- ^ The team data.+              , _tsChannelSelectState :: ChannelSelectState+              -- ^ The state of the user's input and selection for+              -- channel selection mode.+              , _tsUrlList :: List Name LinkChoice+              -- ^ The URL list used to show URLs drawn from messages in+              -- a channel.+              , _tsViewedMessage :: Maybe (Message, TabbedWindow ViewMessageWindowTab)               -- ^ Set when the ViewMessage mode is active. The message               -- being viewed. Note that this stores a message, not               -- a message ID. That's because not all messages have@@ -1388,14 +1455,28 @@               -- consult the chat state for the latest *version* of any               -- message with an ID here, to be sure that the latest               -- version is used (e.g. if it gets edited, etc.).-              , _csNotifyPrefs :: Maybe (Form ChannelNotifyProps MHEvent Name)+              , _tsPostListOverlay :: PostListOverlayState+              -- ^ The state of the post list overlay.+              , _tsUserListOverlay :: ListOverlayState UserInfo UserSearchScope+              -- ^ The state of the user list overlay.+              , _tsChannelListOverlay :: ListOverlayState Channel ChannelSearchScope+              -- ^ The state of the user list overlay.+              , _tsNotifyPrefs :: Maybe (Form ChannelNotifyProps MHEvent Name)               -- ^ A form for editing the notification preferences for               -- the current channel. This is set when entering               -- EditNotifyPrefs mode and updated when the user               -- changes the form state.-              , _csChannelTopicDialog :: ChannelTopicDialogState+              , _tsChannelTopicDialog :: ChannelTopicDialogState               -- ^ The state for the interactive channel topic editor               -- window.+              , _tsMode :: Mode+              -- ^ The current application mode when viewing this team.+              -- This is used to dispatch to different rendering and+              -- event handling routines.+              , _tsReactionEmojiListOverlay :: ListOverlayState (Bool, T.Text) ()+              -- ^ The state of the reaction emoji list overlay.+              , _tsThemeListOverlay :: ListOverlayState InternalTheme ()+              -- ^ The state of the theme list overlay.               }  -- | Handles for the View Message window's tabs.@@ -1407,19 +1488,18 @@     deriving (Eq, Show)  data PendingChannelChange =-    ChangeByChannelId ChannelId (Maybe (MH ()))+    ChangeByChannelId TeamId ChannelId (Maybe (MH ()))     | ChangeByUserId UserId  -- | Startup state information that is constructed prior to building a -- ChatState. data StartupStateInfo =     StartupStateInfo { startupStateResources      :: ChatResources-                     , startupStateChannelZipper  :: Z.Zipper ChannelListGroup ChannelListEntry                      , startupStateConnectedUser  :: User-                     , startupStateTeam           :: Team+                     , startupStateTeams          :: HM.HashMap TeamId TeamState                      , startupStateTimeZone       :: TimeZoneSeries                      , startupStateInitialHistory :: InputHistory-                     , startupStateSpellChecker   :: Maybe (Aspell, IO ())+                     , startupStateInitialTeam    :: TeamId                      }  -- | The state of the channel topic editor window.@@ -1430,58 +1510,61 @@                             -- ^ The window focus state (editor/buttons)                             } -newState :: StartupStateInfo -> IO ChatState-newState (StartupStateInfo {..}) = do-    editState <- emptyEditState startupStateInitialHistory startupStateSpellChecker-    let config = _crConfiguration startupStateResources-    return ChatState { _csResources                   = startupStateResources-                     , _csFocus                       = startupStateChannelZipper-                     , _csChannelListOrientation      = configChannelListOrientation config-                     , _csMe                          = startupStateConnectedUser-                     , _csMyTeam                      = startupStateTeam-                     , _csChannels                    = noChannels-                     , _csPostMap                     = HM.empty-                     , _csUsers                       = noUsers-                     , _timeZone                      = startupStateTimeZone-                     , _csEditState                   = editState-                     , _csMode                        = Main-                     , _csShowMessagePreview          = configShowMessagePreview config-                     , _csShowChannelList             = configShowChannelList config-                     , _csShowExpandedChannelTopics   = configShowExpandedChannelTopics config-                     , _csChannelSelectState          = emptyChannelSelectState-                     , _csRecentChannel               = Nothing-                     , _csReturnChannel               = Nothing-                     , _csUrlList                     = list UrlList mempty 2-                     , _csConnectionStatus            = Connected-                     , _csWorkerIsBusy                = Nothing-                     , _csMessageSelect               = MessageSelectState Nothing-                     , _csThemeListOverlay            = nullThemeListOverlayState-                     , _csPostListOverlay             = PostListOverlayState emptyDirSeq Nothing-                     , _csUserListOverlay             = nullUserListOverlayState-                     , _csChannelListOverlay          = nullChannelListOverlayState-                     , _csReactionEmojiListOverlay    = nullEmojiListOverlayState-                     , _csClientConfig                = Nothing-                     , _csPendingChannelChange        = Nothing-                     , _csViewedMessage               = Nothing-                     , _csNotifyPrefs                 = Nothing-                     , _csChannelTopicDialog          = newChannelTopicDialog ""-                     }+sortTeams :: [Team] -> [Team]+sortTeams = sortBy (compare `on` (T.strip . sanitizeUserText . teamName)) +mkTeamZipper :: HM.HashMap TeamId TeamState -> Z.Zipper () TeamId+mkTeamZipper m =+    let sortedTeams = sortTeams $ _tsTeam <$> HM.elems m+    in mkTeamZipperFromIds $ teamId <$> sortedTeams++mkTeamZipperFromIds :: [TeamId] -> Z.Zipper () TeamId+mkTeamZipperFromIds tIds = Z.fromList [((), tIds)]++teamZipperIds :: Z.Zipper () TeamId -> [TeamId]+teamZipperIds = concat . fmap snd . Z.toList++newTeamState :: Team+             -> Z.Zipper ChannelListGroup ChannelListEntry+             -> Maybe (Aspell, IO ())+             -> TeamState+newTeamState team chanList spellChecker =+    let tId = teamId team+    in TeamState { _tsMode                     = Main+                 , _tsFocus                    = chanList+                 , _tsEditState                = (emptyEditState tId) { _cedSpellChecker = spellChecker }+                 , _tsTeam                     = team+                 , _tsUrlList                  = list (UrlList tId) mempty 2+                 , _tsPostListOverlay          = PostListOverlayState emptyDirSeq Nothing+                 , _tsUserListOverlay          = nullUserListOverlayState tId+                 , _tsChannelListOverlay       = nullChannelListOverlayState tId+                 , _tsChannelSelectState       = emptyChannelSelectState tId+                 , _tsChannelTopicDialog       = newChannelTopicDialog tId ""+                 , _tsMessageSelect            = MessageSelectState Nothing+                 , _tsNotifyPrefs              = Nothing+                 , _tsPendingChannelChange     = Nothing+                 , _tsRecentChannel            = Nothing+                 , _tsReturnChannel            = Nothing+                 , _tsViewedMessage            = Nothing+                 , _tsThemeListOverlay         = nullThemeListOverlayState tId+                 , _tsReactionEmojiListOverlay = nullEmojiListOverlayState tId+                 }+ -- | Make a new channel topic editor window state.-newChannelTopicDialog :: T.Text -> ChannelTopicDialogState-newChannelTopicDialog t =-    ChannelTopicDialogState { _channelTopicDialogEditor = editor ChannelTopicEditor Nothing t-                            , _channelTopicDialogFocus = focusRing [ ChannelTopicEditor-                                                                   , ChannelTopicSaveButton-                                                                   , ChannelTopicCancelButton+newChannelTopicDialog :: TeamId -> T.Text -> ChannelTopicDialogState+newChannelTopicDialog tId t =+    ChannelTopicDialogState { _channelTopicDialogEditor = editor (ChannelTopicEditor tId) Nothing t+                            , _channelTopicDialogFocus = focusRing [ ChannelTopicEditor tId+                                                                   , ChannelTopicSaveButton tId+                                                                   , ChannelTopicCancelButton tId                                                                    ]                             } -nullChannelListOverlayState :: ListOverlayState Channel ChannelSearchScope-nullChannelListOverlayState =-    let newList rs = list JoinChannelList rs 2+nullChannelListOverlayState :: TeamId -> ListOverlayState Channel ChannelSearchScope+nullChannelListOverlayState tId =+    let newList rs = list (JoinChannelList tId) rs 2     in ListOverlayState { _listOverlaySearchResults  = newList mempty-                        , _listOverlaySearchInput    = editor JoinChannelListSearchInput (Just 1) ""+                        , _listOverlaySearchInput    = editor (JoinChannelListSearchInput tId) (Just 1) ""                         , _listOverlaySearchScope    = AllChannels                         , _listOverlaySearching      = False                         , _listOverlayEnterHandler   = const $ return False@@ -1491,11 +1574,11 @@                         , _listOverlayReturnMode     = Main                         } -nullThemeListOverlayState :: ListOverlayState InternalTheme ()-nullThemeListOverlayState =-    let newList rs = list ThemeListSearchResults rs 3+nullThemeListOverlayState :: TeamId -> ListOverlayState InternalTheme ()+nullThemeListOverlayState tId =+    let newList rs = list (ThemeListSearchResults tId) rs 3     in ListOverlayState { _listOverlaySearchResults  = newList mempty-                        , _listOverlaySearchInput    = editor ThemeListSearchInput (Just 1) ""+                        , _listOverlaySearchInput    = editor (ThemeListSearchInput tId) (Just 1) ""                         , _listOverlaySearchScope    = ()                         , _listOverlaySearching      = False                         , _listOverlayEnterHandler   = const $ return False@@ -1505,11 +1588,11 @@                         , _listOverlayReturnMode     = Main                         } -nullUserListOverlayState :: ListOverlayState UserInfo UserSearchScope-nullUserListOverlayState =-    let newList rs = list UserListSearchResults rs 1+nullUserListOverlayState :: TeamId -> ListOverlayState UserInfo UserSearchScope+nullUserListOverlayState tId =+    let newList rs = list (UserListSearchResults tId) rs 1     in ListOverlayState { _listOverlaySearchResults  = newList mempty-                        , _listOverlaySearchInput    = editor UserListSearchInput (Just 1) ""+                        , _listOverlaySearchInput    = editor (UserListSearchInput tId) (Just 1) ""                         , _listOverlaySearchScope    = AllUsers Nothing                         , _listOverlaySearching      = False                         , _listOverlayEnterHandler   = const $ return False@@ -1519,11 +1602,11 @@                         , _listOverlayReturnMode     = Main                         } -nullEmojiListOverlayState :: ListOverlayState (Bool, T.Text) ()-nullEmojiListOverlayState =-    let newList rs = list ReactionEmojiList rs 1+nullEmojiListOverlayState :: TeamId -> ListOverlayState (Bool, T.Text) ()+nullEmojiListOverlayState tId =+    let newList rs = list (ReactionEmojiList tId) rs 1     in ListOverlayState { _listOverlaySearchResults  = newList mempty-                        , _listOverlaySearchInput    = editor ReactionEmojiListInput (Just 1) ""+                        , _listOverlaySearchInput    = editor (ReactionEmojiListInput tId) (Just 1) ""                         , _listOverlaySearchScope    = ()                         , _listOverlaySearching      = False                         , _listOverlayEnterHandler   = const $ return False@@ -1533,26 +1616,15 @@                         , _listOverlayReturnMode     = MessageSelect                         } -getServerBaseUrl :: MH TeamBaseURL-getServerBaseUrl = do-    st <- use id-    return $ serverBaseUrl st--serverBaseUrl :: ChatState -> TeamBaseURL-serverBaseUrl st =-    let baseUrl = connectionDataURL $ _crConn $ _csResources st-        tName = teamName $ _csMyTeam st-    in TeamBaseURL (TeamURLName $ sanitizeUserText tName) baseUrl- -- | The state of channel selection mode. data ChannelSelectState =     ChannelSelectState { _channelSelectInput :: Editor Text Name                        , _channelSelectMatches :: Z.Zipper ChannelListGroup ChannelSelectMatch                        } -emptyChannelSelectState :: ChannelSelectState-emptyChannelSelectState =-    ChannelSelectState { _channelSelectInput = editor ChannelSelectInput (Just 1) ""+emptyChannelSelectState :: TeamId -> ChannelSelectState+emptyChannelSelectState tId =+    ChannelSelectState { _channelSelectInput = editor (ChannelSelectInput tId) (Just 1) ""                        , _channelSelectMatches = Z.fromList []                        } @@ -1732,6 +1804,13 @@     n <- R.lift $ St.lift $ f event (st ^. ln)     St.put (s { mhCurrentState = st & ln .~ n }) +mhHandleEventLensed' :: Lens' ChatState b -> (b -> EventM Name b) -> MH ()+mhHandleEventLensed' ln f = MH $ do+    s <- St.get+    let st = mhCurrentState s+    n <- R.lift $ St.lift $ f (st ^. ln)+    St.put (s { mhCurrentState = st & ln .~ n })+ mhSuspendAndResume :: (ChatState -> IO ChatState) -> MH () mhSuspendAndResume mote = MH $ do     s <- St.get@@ -1846,6 +1925,7 @@  makeLenses ''ChatResources makeLenses ''ChatState+makeLenses ''TeamState makeLenses ''ChatEditState makeLenses ''AutocompleteState makeLenses ''PostListOverlayState@@ -1854,7 +1934,60 @@ makeLenses ''UserPreferences makeLenses ''ConnectionInfo makeLenses ''ChannelTopicDialogState+Brick.suffixLenses ''Config +applyTeamOrderPref :: Maybe [TeamId] -> ChatState -> ChatState+applyTeamOrderPref Nothing st = st+applyTeamOrderPref (Just prefTIds) st =+    let teams = _csTeams st+        ourTids = HM.keys teams+        tIds = filter (`elem` ourTids) prefTIds+        curTId = st^.csCurrentTeamId+        unmentioned = filter (not . wasMentioned) $ HM.elems teams+        wasMentioned ts = (teamId $ _tsTeam ts) `elem` tIds+        zipperTids = tIds <> (teamId <$> sortTeams (_tsTeam <$> unmentioned))+    in st { _csTeamZipper = (Z.findRight (== curTId) $ mkTeamZipperFromIds zipperTids)+          }++refreshTeamZipper :: MH ()+refreshTeamZipper = do+    tidOrder <- use (csResources.crUserPreferences.userPrefTeamOrder)+    St.modify (applyTeamOrderPref tidOrder)++applyTeamOrder :: [TeamId] -> MH ()+applyTeamOrder tIds = St.modify (applyTeamOrderPref $ Just tIds)++newState :: StartupStateInfo -> ChatState+newState (StartupStateInfo {..}) =+    let config = _crConfiguration startupStateResources+    in applyTeamOrderPref (_userPrefTeamOrder $ _crUserPreferences startupStateResources) $+       ChatState { _csResources                   = startupStateResources+                 , _csTeamZipper                  = Z.findRight (== startupStateInitialTeam) $+                                                    mkTeamZipper startupStateTeams+                 , _csTeams                       = startupStateTeams+                 , _csChannelListOrientation      = configChannelListOrientation config+                 , _csMe                          = startupStateConnectedUser+                 , _csChannels                    = noChannels+                 , _csPostMap                     = HM.empty+                 , _csUsers                       = noUsers+                 , _timeZone                      = startupStateTimeZone+                 , _csConnectionStatus            = Connected+                 , _csWorkerIsBusy                = Nothing+                 , _csClientConfig                = Nothing+                 , _csInputHistory                = startupStateInitialHistory+                 }++getServerBaseUrl :: TeamId -> MH TeamBaseURL+getServerBaseUrl tId = do+    st <- use id+    return $ serverBaseUrl st tId++serverBaseUrl :: ChatState -> TeamId -> TeamBaseURL+serverBaseUrl st tId =+    let baseUrl = connectionDataURL $ _crConn $ _csResources st+        tName = teamName $ st^.csTeam(tId).tsTeam+    in TeamBaseURL (TeamURLName $ sanitizeUserText tName) baseUrl+ getSession :: MH Session getSession = use (csResources.crSession) @@ -1863,19 +1996,16 @@  whenMode :: Mode -> MH () -> MH () whenMode m act = do-    curMode <- use csMode+    curMode <- use (csCurrentTeam.tsMode)     when (curMode == m) act  setMode :: Mode -> MH () setMode m = do-    csMode .= m+    csCurrentTeam.tsMode .= m     mh invalidateCache  setMode' :: Mode -> ChatState -> ChatState-setMode' m = csMode .~ m--appMode :: ChatState -> Mode-appMode = _csMode+setMode' m = csCurrentTeam.tsMode .~ m  resetSpellCheckTimer :: ChatEditState -> IO () resetSpellCheckTimer s =@@ -1884,9 +2014,24 @@         Just (_, reset) -> reset  -- ** Utility Lenses-csCurrentChannelId :: SimpleGetter ChatState ChannelId-csCurrentChannelId = csFocus.to Z.unsafeFocus.to channelListEntryChannelId+csCurrentChannelId :: TeamId -> SimpleGetter ChatState ChannelId+csCurrentChannelId tId =+    csTeam(tId).tsFocus.to Z.unsafeFocus.to channelListEntryChannelId +csCurrentTeamId :: SimpleGetter ChatState TeamId+csCurrentTeamId =+    csTeamZipper.to Z.unsafeFocus++csCurrentTeam :: Lens' ChatState TeamState+csCurrentTeam =+    lens (\st   -> st^.csTeam(st^.csCurrentTeamId))+         (\st t -> st & csTeam(st^.csCurrentTeamId) .~ t)++csTeam :: TeamId -> Lens' ChatState TeamState+csTeam tId =+    lens (\ st -> st ^. csTeams . at tId ^?! _Just)+         (\ st t -> st & csTeams . at tId .~ Just t)+ channelListEntryChannelId :: ChannelListEntry -> ChannelId channelListEntryChannelId (CLChannel cId) = cId channelListEntryChannelId (CLUserDM cId _) = cId@@ -1907,8 +2052,8 @@  csCurrentChannel :: Lens' ChatState ClientChannel csCurrentChannel =-    lens (\ st -> findChannelById (st^.csCurrentChannelId) (st^.csChannels) ^?! _Just)-         (\ st n -> st & csChannels %~ addChannel (st^.csCurrentChannelId) n)+    lens (\ st -> findChannelById (st^.csCurrentChannelId(st^.csCurrentTeamId)) (st^.csChannels) ^?! _Just)+         (\ st n -> st & csChannels %~ addChannel (st^.csCurrentChannelId(st^.csCurrentTeamId)) n)  csChannel :: ChannelId -> Traversal' ChatState ClientChannel csChannel cId =@@ -1982,7 +2127,9 @@ setUserStatus :: UserId -> Text -> MH () setUserStatus uId t = do     csUsers %= modifyUserById uId (uiStatus .~ statusFromText t)-    mh $ invalidateCacheEntry ChannelSidebar+    cs <- use csChannels+    forM_ (allTeamIds cs) $ \tId ->+        mh $ invalidateCacheEntry $ ChannelSidebar tId  usernameForUserId :: UserId -> ChatState -> Maybe Text usernameForUserId uId st = _uiName <$> findUserById uId (st^.csUsers)@@ -2001,7 +2148,8 @@  channelIdByChannelName :: Text -> ChatState -> Maybe ChannelId channelIdByChannelName name st =-    let matches (_, cc) = cc^.ccInfo.cdName == (trimChannelSigil name)+    let matches (_, cc) = cc^.ccInfo.cdName == (trimChannelSigil name) &&+                          cc^.ccInfo.cdTeamId == (Just $ st^.csCurrentTeamId)     in listToMaybe $ fst <$> filteredChannels matches (st^.csChannels)  channelIdByUsername :: Text -> ChatState -> Maybe ChannelId@@ -2013,11 +2161,6 @@ useNickname st =     useNickname' (st^.csClientConfig) (st^.csResources.crUserPreferences) -channelByName :: Text -> ChatState -> Maybe ClientChannel-channelByName n st = do-    cId <- channelIdByChannelName n st-    findChannelById cId (st^.csChannels)- trimChannelSigil :: Text -> Text trimChannelSigil n     | normalChannelSigil `T.isPrefixOf` n = T.tail n@@ -2038,8 +2181,8 @@  resetAutocomplete :: MH () resetAutocomplete = do-    csEditState.cedAutocomplete .= Nothing-    csEditState.cedAutocompletePending .= Nothing+    csCurrentTeam.tsEditState.cedAutocomplete .= Nothing+    csCurrentTeam.tsEditState.cedAutocompletePending .= Nothing   -- * Slash Commands@@ -2090,9 +2233,6 @@ myUserId :: ChatState -> UserId myUserId st = myUser st ^. userIdL -myTeamId :: ChatState -> TeamId-myTeamId st = st ^. csMyTeam . teamIdL- myUser :: ChatState -> User myUser st = st^.csMe @@ -2131,12 +2271,16 @@                  , hSyntaxMap  :: SyntaxMap                  } +emptyHSet :: HighlightSet+emptyHSet = HighlightSet Set.empty Set.empty mempty+ getHighlightSet :: ChatState -> HighlightSet getHighlightSet st =-    HighlightSet { hUserSet = addSpecialUserMentions $ getUsernameSet $ st^.csUsers-                 , hChannelSet = getChannelNameSet $ st^.csChannels-                 , hSyntaxMap = st^.csResources.crSyntaxMap-                 }+    let tId = st^.csCurrentTeamId+    in HighlightSet { hUserSet = addSpecialUserMentions $ getUsernameSet $ st^.csUsers+                    , hChannelSet = getChannelNameSet tId $ st^.csChannels+                    , hSyntaxMap = st^.csResources.crSyntaxMap+                    }  attrNameToConfig :: Brick.AttrName -> Text attrNameToConfig = T.pack . intercalate "." . Brick.attrNameComponents@@ -2163,3 +2307,22 @@     mh $ invalidateCacheEntry (ChannelMessages cId)     csChannel(cId) %= (clearNewMessageIndicator .                        clearEditedThreshold)++moveLeft :: (Eq a) => a -> [a] -> [a]+moveLeft v as =+    case elemIndex v as of+        Nothing -> as+        Just 0 -> as+        Just i ->+            let (h, t) = splitAt i as+            in init h <> [v, last h] <> tail t++moveRight :: (Eq a) => a -> [a] -> [a]+moveRight v as =+    case elemIndex v as of+        Nothing -> as+        Just i+            | i == length as - 1 -> as+            | otherwise ->+                let (h, t) = splitAt i as+                in h <> [head (tail t), v] <> (tail (tail t))
src/Matterhorn/Types/Channels.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE FlexibleInstances #-}  module Matterhorn.Types.Channels   ( ClientChannel(..)@@ -20,7 +21,7 @@   , cdViewed, cdNewMessageIndicator, cdEditedMessageThreshold, cdUpdated   , cdName, cdDisplayName, cdHeader, cdPurpose, cdType   , cdMentionCount, cdTypingUsers, cdDMUserId, cdChannelId-  , cdSidebarShowOverride, cdNotifyProps+  , cdSidebarShowOverride, cdNotifyProps, cdTeamId   -- * Lenses created for accessing ChannelContents fields   , cdMessages, cdFetchPending   -- * Creating ClientChannel objects@@ -28,6 +29,7 @@   -- * Managing ClientChannel collections   , noChannels, addChannel, removeChannel, findChannelById, modifyChannelById   , channelByIdL, maybeChannelByIdL+  , allTeamIds   , filteredChannelIds   , filteredChannels   -- * Creating ChannelInfo objects@@ -77,6 +79,7 @@                                           , NotifyOption(..)                                           , WithDefault(..)                                           , ServerTime+                                          , TeamId                                           , emptyChannelNotifyProps                                           ) @@ -141,6 +144,7 @@ initialChannelInfo myId chan =     let updated  = chan ^. channelLastPostAtL     in ChannelInfo { _cdChannelId              = chan^.channelIdL+                   , _cdTeamId                 = chan^.channelTeamIdL                    , _cdViewed                 = Nothing                    , _cdNewMessageIndicator    = Hide                    , _cdEditedMessageThreshold = Nothing@@ -205,6 +209,8 @@ data ChannelInfo = ChannelInfo   { _cdChannelId        :: ChannelId     -- ^ The channel's ID+  , _cdTeamId           :: Maybe TeamId+    -- ^ The channel's team ID   , _cdViewed           :: Maybe ServerTime     -- ^ The last time we looked at a channel   , _cdNewMessageIndicator :: NewMessageIndicator@@ -281,8 +287,8 @@ -- | Define a binary kinded type to allow derivation of functor. data AllMyChannels a =     AllChannels { _chanMap :: HashMap ChannelId a+                , _channelNameSet :: HashMap TeamId (S.Set Text)                 , _userChannelMap :: HashMap UserId ChannelId-                , _channelNameSet :: S.Set Text                 }                 deriving (Functor, Foldable, Traversable) @@ -292,19 +298,23 @@  makeLenses ''AllMyChannels -getChannelNameSet :: ClientChannels -> S.Set Text-getChannelNameSet = _channelNameSet+getChannelNameSet :: TeamId -> ClientChannels -> S.Set Text+getChannelNameSet tId cs = case cs^.channelNameSet.at tId of+    Nothing -> mempty+    Just s -> s  -- | Initial collection of Channels with no members noChannels :: ClientChannels-noChannels = AllChannels HM.empty HM.empty mempty+noChannels = AllChannels HM.empty HM.empty HM.empty  -- | Add a channel to the existing collection. addChannel :: ChannelId -> ClientChannel -> ClientChannels -> ClientChannels addChannel cId cinfo =     (chanMap %~ HM.insert cId cinfo) .     (if cinfo^.ccInfo.cdType `notElem` [Direct, Group]-     then channelNameSet %~ S.insert (cinfo^.ccInfo.cdName)+     then case cinfo^.ccInfo.cdTeamId of+         Nothing -> id+         Just tId -> channelNameSet %~ HM.insertWith S.union tId (S.singleton $ cinfo^.ccInfo.cdName)      else id) .     (case cinfo^.ccInfo.cdDMUserId of          Nothing -> id@@ -317,11 +327,21 @@     let mChan = findChannelById cId cs         removeChannelName = case mChan of             Nothing -> id-            Just ch -> channelNameSet %~ S.delete (ch^.ccInfo.cdName)+            Just ch -> case ch^.ccInfo.cdTeamId of+                Nothing -> id+                Just tId -> channelNameSet %~ HM.adjust (S.delete (ch^.ccInfo.cdName)) tId     in cs & chanMap %~ HM.delete cId           & removeChannelName           & userChannelMap %~ HM.filter (/= cId) +instance Semigroup (AllMyChannels ClientChannel) where+    a <> b =+        let pairs = HM.toList $ _chanMap a+        in foldr (uncurry addChannel) b pairs++instance Monoid (AllMyChannels ClientChannel) where+    mempty = noChannels+ getDmChannelFor :: UserId -> ClientChannels -> Maybe ChannelId getDmChannelFor uId cs = cs^.userChannelMap.at uId @@ -351,6 +371,10 @@ -- ChannelId values for which the filter matched. filteredChannelIds :: (ClientChannel -> Bool) -> ClientChannels -> [ChannelId] filteredChannelIds f cc = fst <$> filter (f . snd) (HM.toList (cc^.chanMap))++-- | Get all the team IDs in the channel collection.+allTeamIds :: ClientChannels -> [TeamId]+allTeamIds cc = HM.keys $ cc^.channelNameSet  -- | Filter the ClientChannel collection, keeping only those for which -- the provided filter test function returns True.
src/Matterhorn/Types/Common.hs view
@@ -10,6 +10,7 @@ import Matterhorn.Prelude  import qualified Data.Text as T+import Data.Char ( isPrint )  import Network.Mattermost.Types ( UserText, unsafeUserText, UserId(..), Id(..) ) @@ -18,9 +19,9 @@  sanitizeUserText' :: T.Text -> T.Text sanitizeUserText' =+    T.filter (\c -> isPrint c || c == '\n') . -- remove non-printable     T.replace "\ESC" "<ESC>" .-    T.replace "\t" " " .-    T.filter (\c -> c >= ' ' || c == '\n')  -- remove non-printable+    T.replace "\t" " "  -- | Extract the corresponding other user from a direct channel name. -- Returns Nothing if the string is not a direct channel name or if it
src/Matterhorn/Types/KeyEvents.hs view
@@ -125,6 +125,12 @@    -- Form submission   | FormSubmitEvent++  -- Team switching+  | NextTeamEvent+  | PrevTeamEvent+  | MoveCurrentTeamLeftEvent+  | MoveCurrentTeamRightEvent     deriving (Eq, Show, Ord, Enum)  allEvents :: [KeyEvent]@@ -198,6 +204,11 @@   , SearchSelectUpEvent   , SearchSelectDownEvent +  , NextTeamEvent+  , PrevTeamEvent+  , MoveCurrentTeamLeftEvent+  , MoveCurrentTeamRightEvent+   , FlagMessageEvent   , PinMessageEvent   , ViewMessageEvent@@ -388,6 +399,11 @@   EditorHomeEvent             -> "editor-home"   EditorEndEvent              -> "editor-end"   EditorYankEvent             -> "editor-yank"++  NextTeamEvent               -> "next-team"+  PrevTeamEvent               -> "prev-team"+  MoveCurrentTeamLeftEvent    -> "move-current-team-left"+  MoveCurrentTeamRightEvent   -> "move-current-team-right"    EnterFlaggedPostsEvent    -> "show-flagged-posts"   ToggleChannelListVisibleEvent -> "toggle-channel-list-visibility"
src/Matterhorn/Types/Messages.hs view
@@ -124,11 +124,7 @@  import           Matterhorn.Types.DirectionalSeq import           Matterhorn.Types.Posts-import           Matterhorn.Types.RichText ( RichTextBlock(..), Element(..)-                                , ElementData(..), findUsernames, blockGetURLs-                                , ElementStyle(..), URL(..), parseMarkdown-                                , TeamURLName-                                )+import           Matterhorn.Types.RichText   -- | The state of a message's thread context.@@ -157,7 +153,7 @@ -- | A 'Message' is any message we might want to render, either from --   Mattermost itself or from a client-internal source. data Message = Message-  { _mText          :: Seq RichTextBlock+  { _mText          :: Blocks   , _mMarkdownSource :: Text   , _mUser          :: UserRef   , _mDate          :: ServerTime@@ -294,7 +290,7 @@ data LinkChoice =     LinkChoice { _linkTime   :: ServerTime                , _linkUser   :: UserRef-               , _linkLabel  :: Maybe (Seq Element)+               , _linkLabel  :: Maybe Inlines                , _linkTarget :: LinkTarget                } deriving (Eq, Show) @@ -734,7 +730,7 @@       mkTarget (Right url) = LinkURL url       mkTarget (Left (tName, pId)) = LinkPermalink tName pId       mkEntry (val, text) = LinkChoice (msg^.mDate) uRef text (mkTarget val)-      msgUrls = mkEntry <$> (Seq.fromList $ mconcat $ blockGetURLs <$> (toList $ msg^.mText))+      msgUrls = mkEntry <$> (Seq.fromList $ mconcat $ blockGetURLs <$> (F.toList $ unBlocks $ msg^.mText))       attachmentURLs = (\ a ->                           LinkChoice                             (msg^.mDate)@@ -743,8 +739,8 @@                             (LinkFileId $ a^.attachmentFileId))                        <$> (msg^.mAttachments)       attachmentLabel a =-          Seq.fromList [ Element Normal $ EText "attachment"-                       , Element Normal ESpace-                       , Element Code $ EText $ a^.attachmentName-                       ]+          Inlines $ Seq.fromList [ EText "attachment"+                                 , ESpace+                                 , ECode $ Inlines $ Seq.singleton $ EText $ a^.attachmentName+                                 ]   in msgUrls <> attachmentURLs
src/Matterhorn/Types/Posts.hs view
@@ -59,7 +59,7 @@ import           Network.Mattermost.Types  import           Matterhorn.Types.Common-import           Matterhorn.Types.RichText ( RichTextBlock(Blockquote), parseMarkdown+import           Matterhorn.Types.RichText ( Blocks(..), Block(Blockquote), parseMarkdown                                            , TeamBaseURL                                            ) @@ -112,7 +112,7 @@ --   the Mattermost 'Post' type, with unnecessary information --   removed and some preprocessing done. data ClientPost = ClientPost-  { _cpText          :: Seq RichTextBlock+  { _cpText          :: Blocks   , _cpMarkdownSource :: Text   , _cpUser          :: Maybe UserId   , _cpUserOverride  :: Maybe Text@@ -193,10 +193,10 @@  -- | Convert a Mattermost 'Post' to a 'ClientPost', passing in a --   'ParentId' if it has a known one.-toClientPost :: TeamBaseURL -> Post -> Maybe PostId -> ClientPost+toClientPost :: Maybe TeamBaseURL -> Post -> Maybe PostId -> ClientPost toClientPost baseUrl p parentId =   let src = unEmote (postClientPostType p) $ sanitizeUserText $ postMessage p-  in ClientPost { _cpText          = parseMarkdown (Just baseUrl) src <> getAttachmentText p+  in ClientPost { _cpText          = parseMarkdown baseUrl src <> getAttachmentText p                 , _cpMarkdownSource = src                 , _cpUser          = postUserId p                 , _cpUserOverride  = p^.postPropsL.postPropsOverrideUsernameL@@ -216,12 +216,12 @@  -- | Right now, instead of treating 'attachment' properties specially, we're --   just going to roll them directly into the message text-getAttachmentText :: Post -> Seq RichTextBlock+getAttachmentText :: Post -> Blocks getAttachmentText p =   case p^.postPropsL.postPropsAttachmentsL of-    Nothing -> Seq.empty+    Nothing -> mempty     Just attachments ->-      fmap (Blockquote . render) attachments+      Blocks $ fmap (Blockquote . render) attachments   where render att = parseMarkdown Nothing (att^.ppaTextL) <>                      parseMarkdown Nothing (att^.ppaFallbackL) 
src/Matterhorn/Types/RichText.hs view
@@ -1,18 +1,29 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-} -- | This module provides a set of data types to represent message text.--- The types here are based loosely on the @cheapskate@ package's types--- but provide higher-level support for the kinds of things we find in--- Mattermost messages such as user and channel references.+-- The inline and block types in this module are designed to represent+-- most of what is found in Markdown documents (particularly the+-- Commonmark specification) in addition to other things we find in+-- Mattermost messages, such as username or channel references. -- -- To parse a Markdown document, use 'parseMarkdown'. To actually render -- text in this representation, see the module 'Draw.RichText'. module Matterhorn.Types.RichText-  ( RichTextBlock(..)-  , ListType(..)+  ( Blocks(..)+  , unBlocks++  , Block(..)+  , sameBlockType   , CodeBlockInfo(..)-  , NumDecoration(..)-  , Element(..)-  , ElementData(..)-  , ElementStyle(..)+  , Inline(..)+  , Inlines(..)+  , unInlines++  , C.ListType(..)+  , C.ListSpacing(..)+  , C.EnumeratorType(..)+  , C.DelimiterType(..)+   , TeamBaseURL(..)   , TeamURLName(..) @@ -20,32 +31,33 @@   , unURL    , parseMarkdown-  , setElementStyle    , findUsernames   , blockGetURLs   , findVerbatimChunk--  -- Exposed for testing only:-  , fromMarkdownBlocks   ) where  import           Prelude () import           Matterhorn.Prelude -import qualified Cheapskate as C-import           Data.Char ( isAlphaNum, isAlpha )+import qualified Commonmark as C+import qualified Commonmark.Extensions as C+import qualified Commonmark.Inlines as C+import qualified Commonmark.TokParsers as C+import           Control.Monad.Identity import qualified Data.Foldable as F+import           Data.List ( intersperse ) import           Data.Monoid (First(..)) import qualified Data.Set as S import qualified Data.Sequence as Seq-import           Data.Sequence ( (<|), ViewL((:<)) )+import           Data.Sequence ( (<|), viewl, viewr, ViewL((:<)), ViewR((:>)) ) import qualified Data.Text as T+import qualified Text.Parsec as P  import           Network.Mattermost.Types ( PostId(..), Id(..), ServerBaseURL(..) ) -import           Matterhorn.Constants ( userSigil, normalChannelSigil )+import           Matterhorn.Constants ( userSigilChar, normalChannelSigilChar )  -- | A team name found in a Mattermost post URL data TeamURLName = TeamURLName Text@@ -55,15 +67,28 @@ data TeamBaseURL = TeamBaseURL TeamURLName ServerBaseURL                  deriving (Eq, Show) +-- | A sequence of rich text blocks.+newtype Blocks = Blocks (Seq Block)+            deriving (Semigroup, Monoid, Show)++unBlocks :: Blocks -> Seq Block+unBlocks (Blocks bs) = bs++singleB :: Block -> Blocks+singleB = Blocks . Seq.singleton+ -- | A block in a rich text document.-data RichTextBlock =-    Para (Seq Element)+--+-- NOTE: update 'sameBlockType' when constructors are added to this+-- type.+data Block =+    Para Inlines     -- ^ A paragraph.-    | Header Int (Seq Element)+    | Header Int Inlines     -- ^ A section header with specified depth and contents.-    | Blockquote (Seq RichTextBlock)+    | Blockquote Blocks     -- ^ A blockquote.-    | List Bool ListType (Seq (Seq RichTextBlock))+    | List C.ListType C.ListSpacing (Seq Blocks)     -- ^ An itemized list.     | CodeBlock CodeBlockInfo Text     -- ^ A code block.@@ -73,14 +98,15 @@     -- ^ A horizontal rule.     deriving (Show) --- | The type of itemized list items.-data ListType =-    Bullet Char-    -- ^ Decorate the items with bullet using the specified character.-    | Numbered NumDecoration Int-    -- ^ Number the items starting at the specified number; use the-    -- indicated decoration following the number.-    deriving (Eq, Show, Ord)+-- | Returns whether two blocks have the same type.+sameBlockType :: Block -> Block -> Bool+sameBlockType (Para {})       (Para {})       = True+sameBlockType (Header {})     (Header {})     = True+sameBlockType (Blockquote {}) (Blockquote {}) = True+sameBlockType (List {})       (List {})       = True+sameBlockType (CodeBlock {})  (CodeBlock {})  = True+sameBlockType (HTMLBlock {})  (HTMLBlock {})  = True+sameBlockType _               _               = False  -- | Information about a code block. data CodeBlockInfo =@@ -96,25 +122,6 @@                   }                   deriving (Eq, Show, Ord) --- | Ways to decorate numbered itemized list items. The decoration--- follows the list item number.-data NumDecoration =-    Paren-    | Period-    deriving (Eq, Show, Ord)---- | A single logical inline element in a rich text block.-data Element =-    Element { eStyle :: ElementStyle-            -- ^ The element's visual style.-            , eData :: ElementData-            -- ^ The element's data.-            }-            deriving (Show, Eq, Ord)--setElementStyle :: ElementStyle -> Element -> Element-setElementStyle s e = e { eStyle = s }- -- | A URL. newtype URL = URL Text             deriving (Eq, Show, Ord)@@ -122,9 +129,18 @@ unURL :: URL -> Text unURL (URL url) = url --- | The kinds of data that can appear in rich text elements.-data ElementData =+-- | The kinds of inline values that can appear in rich text blocks.+data Inline =     EText Text+    -- ^ Plain text that SHOULD be a contiguous sequence of+    -- non-whitespace characters.+    | EEmph Inlines+    -- ^ Emphasized (usually italicized) content.+    | EStrikethrough Inlines+    -- ^ Strikethrough content.+    | EStrong Inlines+    -- ^ Boldface content.+    | ECode Inlines     -- ^ A sequence of non-whitespace characters.     | ESpace     -- ^ A single space.@@ -147,261 +163,197 @@     | EChannel Text     -- ^ A channel reference. The text here includes only the channel     -- name, not the sigil.-    | EHyperlink URL (Maybe (Seq Element))+    | EHyperlink URL Inlines     -- ^ A hyperlink to the specified URL. Optionally provides an     -- element sequence indicating the URL's text label; if absent, the     -- label is understood to be the URL itself.-    | EImage URL (Maybe (Seq Element))+    | EImage URL Inlines     -- ^ An image at the specified URL. Optionally provides an element     -- sequence indicating the image's "alt" text label; if absent, the     -- label is understood to be the URL itself.     | EEmoji Text     -- ^ An emoji reference. The text here includes only the text     -- portion, not the colons, e.g. "foo" instead of ":foo:".-    | ENonBreaking (Seq Element)+    | ENonBreaking Inlines     -- ^ A sequence of elements that must never be separated during line     -- wrapping.-    | EPermalink TeamURLName PostId (Maybe (Seq Element))+    | EPermalink TeamURLName PostId (Maybe Inlines)     -- ^ A permalink to the specified team (name) and post ID with an     -- optional label.     deriving (Show, Eq, Ord) --- | Element visual styles.-data ElementStyle =-    Normal-    -- ^ Normal text-    | Emph-    -- ^ Emphasized text-    | Strikethrough-    -- ^ Strikethrough text-    | Strong-    -- ^ Bold text-    | Code-    -- ^ Inline code segment or code block-    | Hyperlink URL ElementStyle-    -- ^ A terminal hyperlink to the specified URL, composed with-    -- another element style-    | Permalink-    -- ^ A post permalink-    deriving (Eq, Show, Ord)+-- | A sequence of inline values.+newtype Inlines = Inlines (Seq Inline)+                deriving (Monoid, Ord, Eq, Show) -parseMarkdown :: Maybe TeamBaseURL -> T.Text -> Seq RichTextBlock-parseMarkdown baseUrl t =-    fromMarkdownBlocks baseUrl bs where C.Doc _ bs = C.markdown C.def t+unInlines :: Inlines -> Seq Inline+unInlines (Inlines is) = is --- | Convert a sequence of markdown (Cheapskate) blocks into rich text--- blocks.-fromMarkdownBlocks :: Maybe TeamBaseURL -> C.Blocks -> Seq RichTextBlock-fromMarkdownBlocks baseUrl = fmap (fromMarkdownBlock baseUrl)+singleI :: Inline -> Inlines+singleI = Inlines . Seq.singleton --- | Convert a single markdown block into a single rich text block.-fromMarkdownBlock :: Maybe TeamBaseURL -> C.Block -> RichTextBlock-fromMarkdownBlock baseUrl (C.Para is) =-    Para $ fromMarkdownInlines baseUrl is-fromMarkdownBlock baseUrl (C.Header level is) =-    Header level $ fromMarkdownInlines baseUrl is-fromMarkdownBlock baseUrl (C.Blockquote bs) =-    Blockquote $ fromMarkdownBlock baseUrl <$> bs-fromMarkdownBlock baseUrl (C.List f ty bss) =-    List f (fromMarkdownListType ty) $ fmap (fromMarkdownBlock baseUrl) <$> Seq.fromList bss-fromMarkdownBlock _ (C.CodeBlock attr body) =-    CodeBlock (fromMarkdownCodeAttr attr) body-fromMarkdownBlock _ (C.HtmlBlock body) =-    HTMLBlock body-fromMarkdownBlock _ C.HRule =-    HRule+instance Semigroup Inlines where+    (Inlines l) <> (Inlines r) =+        Inlines $ case (viewr l, viewl r) of+            (lInit :> lLast, rHead :< rTail) ->+                case (lLast, rHead) of+                    (EText a, EText b) ->+                        lInit <> ((EText $ a <> b) <| rTail)+                    (ECode a, ECode b) ->+                        lInit <> ((ECode $ a <> b) <| rTail)+                    (EEmph a, EEmph b) ->+                        lInit <> ((EEmph $ a <> b) <| rTail)+                    (EStrikethrough a, EStrikethrough b) ->+                        lInit <> ((EStrikethrough $ a <> b) <| rTail)+                    (EStrong a, EStrong b) ->+                        lInit <> ((EStrong $ a <> b) <| rTail)+                    (_, _) ->+                        l <> r+            (_, _) -> l <> r -fromMarkdownCodeAttr :: C.CodeAttr -> CodeBlockInfo-fromMarkdownCodeAttr (C.CodeAttr lang info) =-    let strippedLang = T.strip lang-        strippedInfo = T.strip info-        maybeText t = if T.null t then Nothing else Just t-    in CodeBlockInfo (maybeText strippedLang)-                     (maybeText strippedInfo)+-- A dummy instance just to satisfy commonmark; we don't use this.+instance C.Rangeable Inlines where+    ranged _ = id -fromMarkdownListType :: C.ListType -> ListType-fromMarkdownListType (C.Bullet c) =-    Bullet c-fromMarkdownListType (C.Numbered wrap i) =-    let dec = case wrap of-                  C.PeriodFollowing -> Period-                  C.ParenFollowing -> Paren-    in Numbered dec i+-- A dummy instance just to satisfy commonmark; we don't use this.+instance C.HasAttributes Inlines where+    addAttributes _ = id --- | Remove hyperlinks from an inline sequence. This should only be used--- for sequences that are themselves used as labels for hyperlinks; this--- prevents them from embedding their own hyperlinks, which is nonsense.------ Any hyperlinks found in the sequence will be replaced with a text--- represent of their URL (if they have no label) or the label itself--- otherwise.-removeHyperlinks :: Seq C.Inline -> Seq C.Inline-removeHyperlinks is =-    case Seq.viewl is of-        h :< t ->-            case h of-                C.Link label theUrl _ ->-                    if Seq.null label-                    then C.Str theUrl <| removeHyperlinks t-                    else removeHyperlinks label <> removeHyperlinks t-                _ -> h <| removeHyperlinks t-        Seq.EmptyL -> mempty+instance C.IsInline Inlines where+    lineBreak = singleI ELineBreak+    softBreak = singleI ESoftBreak+    str t = Inlines $ Seq.fromList $+            filter (/= (EText "")) $+            intersperse ESpace $ EText <$> T.splitOn " " t+    entity = singleI . EText+    escapedChar = singleI . EText . T.singleton+    emph = singleI . EEmph+    strong = singleI . EStrong+    link url _title desc = singleI $ EHyperlink (URL url) desc+    image url _title desc = singleI $ EImage (URL url) desc+    code t = singleI $ ECode $ C.str t+    rawInline _ = singleI . ERawHtml --- | Convert a sequence of Markdown inline values to a sequence of--- Elements.------ This conversion converts sequences of Markdown AST fragments into--- RichText elements. In particular, this function may determine that--- some sequences of Markdown text fragments belong together, such as--- the sequence @["@", "joe", "-", "user"]@, which should be treated as--- a single "@joe-user" token due to username character validation. When--- appropriate, this function does such consolidation when converting to--- RichText elements.------ This function is also partially responsible for paving the way for--- line-wrapping later on when RichText is rendered. This means that,--- when possible, the elements produced by this function need to be as--- small as possible, without losing structure information. An example--- of this is Markdown inline code fragments, such as "`this is code`".--- This function will convert that one Markdown inline code fragment--- into a sequence of five RichText elements, each with a "Code" style--- assigned: @[EText "this", ESpace, EText "is", ESpace, EText "code"]@.--- This "flattening" of the original Markdown structure makes it much--- easier to do line-wrapping without losing style information because--- it is possible to gather up tokens that do not exceed line widths--- without losing style information. This is key to rendering the text--- with the right terminal attributes.+instance C.HasStrikethrough Inlines where+    strikethrough = singleI . EStrikethrough++-- Syntax extension for parsing ~channel references.+channelSpec :: (Monad m) => C.SyntaxSpec m Inlines Blocks+channelSpec =+    mempty { C.syntaxInlineParsers = [C.withAttributes parseChannel]+           }++parseChannel :: (Monad m) => C.InlineParser m Inlines+parseChannel = P.try $ do+    void $ C.symbol normalChannelSigilChar+    let chunk = C.satisfyWord (const True) <|> C.symbol '_' <|> C.symbol '-'+    cts <- P.many1 chunk+    return $ singleI $ EChannel $ C.untokenize cts++-- Syntax extension for parsing @username references.+usernameSpec :: (Monad m) => C.SyntaxSpec m Inlines Blocks+usernameSpec =+    mempty { C.syntaxInlineParsers = [C.withAttributes parseUsername]+           }++parseUsername :: (Monad m) => C.InlineParser m Inlines+parseUsername = P.try $ do+    void $ C.symbol userSigilChar+    let chunk = C.satisfyWord (const True) <|> C.symbol '_' <|> C.symbol '-'+        [period] = C.tokenize "" "."+    uts <- intersperse period <$> P.sepBy1 chunk (C.symbol '.')+    return $ singleI $ EUser $ C.untokenize uts++-- Syntax extension for parsing :emoji: references. ----- However, there are a couple of cases where such flattening does *not*--- happen: hyperlinks and images. In these cases we do not flatten the--- (arbitrary) text label structure of links and images because we need--- to be able to recover those labels to gather up URLs to show to the--- user in the URL list. So we leave the complete text structure of--- those labels behind in the 'EHyperlink' and 'EImage' constructors as--- sequences of Elements. This means that logic in 'Draw.RichText' that--- does line-wrapping will have to explicitly break up link and image--- labels across line breaks.-fromMarkdownInlines :: Maybe TeamBaseURL -> Seq C.Inline -> Seq Element-fromMarkdownInlines baseUrl inlines =-    let go sty is = case Seq.viewl is of-          C.Str "~" :< xs ->-              case Seq.viewl xs of-                  C.Str "~" :< xs2 ->-                      case takeUntilStrikethroughEnd xs2 of-                          Nothing -> Element sty (EText "~") <|-                                     go sty xs-                          Just (strikethroughInlines, rest) ->-                              go Strikethrough strikethroughInlines <>-                              go sty rest-                  _ ->-                      let (cFrags, rest) = Seq.spanl isNameFragment xs-                          cn = T.concat (unsafeGetStr <$> F.toList cFrags)-                      in if not (T.null cn)-                         then Element sty (EChannel cn) <| go sty rest-                         else Element sty (EText normalChannelSigil) <| go sty xs-          C.Str ":" :< xs ->-              let validEmojiFragment (C.Str f) =-                      f `elem` ["_", "-"] || T.all isAlphaNum f-                  validEmojiFragment _ = False-                  (emojiFrags, rest) = Seq.spanl validEmojiFragment xs-                  em = T.concat $ unsafeGetStr <$> F.toList emojiFrags-              in case Seq.viewl rest of-                  C.Str ":" :< rest2 ->-                      Element Normal (EEmoji em) <| go sty rest2-                  _ ->-                      Element sty (EText ":") <| go sty xs-          C.Str t :< xs | userSigil `T.isPrefixOf` t ->-              let (uFrags, rest) = Seq.spanl isNameFragment xs-                  t' = T.concat $ t : (unsafeGetStr <$> F.toList uFrags)-                  u = T.drop 1 t'-              in Element sty (EUser u) <| go sty rest-          C.Str t :< xs ->-              -- When we encounter a string node, we go ahead and-              -- process the rest of the nodes in the sequence. If the-              -- new sequence starts with *another* string node with-              -- the same style, we merge them. We do this because-              -- Cheapskate will parse things like punctuation as-              -- individual string nodes, but we want to keep those-              -- together with any text is adjacent to them to avoid-              -- e.g. breaking up quotes from quoted text when doing-              -- line-wrapping. It's important to make sure we only do-              -- this for adjacent string (i.e. not whitespace) nodes-              -- and that we make sure we only merge when they have the-              -- same style.-              let rest = go sty xs-                  e = Element sty (EText t)-              in case Seq.viewl rest of-                  Element sty2 (EText t2) :< tail_ | sty2 == sty ->-                      (Element sty (EText (t <> t2))) <| tail_-                  _ ->-                      e <| rest-          C.Space :< xs ->-              Element sty ESpace <| go sty xs-          C.SoftBreak :< xs ->-              Element sty ESoftBreak <| go sty xs-          C.LineBreak :< xs ->-              Element sty ELineBreak <| go sty xs-          C.Link label theUrl _ :< xs ->-              let mLabel = if Seq.null label-                           then Nothing-                           else case F.toList label of-                               [C.Str u] | u == theUrl -> Nothing-                               _ -> Just $ fromMarkdownInlines baseUrl $ removeHyperlinks label-                  rest = go sty xs-                  this = case flip getPermalink theUrl =<< baseUrl of-                      Nothing ->-                          let url = URL theUrl-                          in Element (Hyperlink url sty) $ EHyperlink url mLabel-                      Just (tName, pId) ->-                          Element Permalink $ EPermalink tName pId mLabel-              in this <| rest-          C.Image altIs theUrl _ :< xs ->-              let mLabel = if Seq.null altIs-                           then Nothing-                           else Just $ fromMarkdownInlines baseUrl altIs-                  url = URL theUrl-              in (Element (Hyperlink url sty) $ EImage url mLabel) <| go sty xs-          C.RawHtml t :< xs ->-              Element sty (ERawHtml t) <| go sty xs-          C.Code t :< xs ->-              -- We turn a single code string into individual Elements-              -- so we can perform line-wrapping on the inline code-              -- text.-              let ts = [ Element Code frag-                       | wd <- T.split (== ' ') t-                       , frag <- case wd of-                           "" -> [ESpace]-                           _  -> [ESpace, EText wd]-                       ]-                  ts' = case ts of-                    (Element _ ESpace:rs) -> rs-                    _                     -> ts-              in Seq.fromList ts' <> go sty xs-          C.Emph as :< xs ->-              go Emph as <> go sty xs-          C.Strong as :< xs ->-              go Strong as <> go sty xs-          C.Entity t :< xs ->-              Element sty (EText t) <| go sty xs-          Seq.EmptyL -> mempty+-- NOTE: the commonmark-extensions package also provides a syntax+-- extension for exactly this. Why don't we use it? I'm glad you asked.+-- We don't use it because that extension actually checks to see whether+-- emoji are valid by looking in a database (provided by the 'emojis'+-- package). While that's actually a great feature, it is problematic+-- when that package's emoji database does not exactly match the one+-- that the Mattermost server uses. As a result, Matterhorn may think+-- that some valid emoji (according to the server) is invalid (according+-- to the 'emojis' package). Instead of using that extension, we made+-- our own that does *not* validate the emoji references at parse time.+-- We just parse them and keep them around, and then validate them at+-- *render* time. That way we can allow anything to parse, but change+-- how we render valid and invalid emoji based on a copy of the server's+-- emoji database that we bundle with Matterhorn.+emojiSpec :: (Monad m) => C.SyntaxSpec m Inlines Blocks+emojiSpec =+    mempty { C.syntaxInlineParsers = [C.withAttributes parseEmoji]+           } -    in go Normal inlines+parseEmoji :: (Monad m) => C.InlineParser m Inlines+parseEmoji = P.try $ do+    void $ C.symbol ':'+    ts <- P.many1 $ C.satisfyWord (const True)+               <|> C.symbol '_'+               <|> C.symbol '+'+               <|> C.symbol '-'+    void $ C.symbol ':'+    let kw = C.untokenize ts+    return $ singleI $ EEmoji kw -takeUntilStrikethroughEnd :: Seq C.Inline -> Maybe (Seq C.Inline, Seq C.Inline)-takeUntilStrikethroughEnd is =-    let go pos s = case Seq.viewl s of-            C.Str "~" :< rest ->-                case Seq.viewl rest of-                    C.Str "~" :< _ ->-                        Just pos-                    _ -> go (pos + 1) rest-            _ :< rest -> go (pos + 1) rest-            Seq.EmptyL -> Nothing-    in do-        pos <- go 0 is-        let (h, t) = Seq.splitAt pos is-        return (h, Seq.drop 2 t)+-- A dummy instance just to satisfy commonmark; we don't use this.+instance C.HasAttributes Blocks where+    addAttributes _ = id +-- A dummy instance just to satisfy commonmark; we don't use this.+instance C.Rangeable Blocks where+    ranged _ = id++instance C.IsBlock Inlines Blocks where+    paragraph = singleB . Para+    plain = singleB . Para+    thematicBreak = singleB HRule+    blockQuote = singleB . Blockquote+    codeBlock infoTxt content = singleB $ CodeBlock (parseCodeBlockInfo infoTxt) content+    heading level i = singleB $ Header level i+    rawBlock _format content = singleB $ CodeBlock (parseCodeBlockInfo "") content+    list ty spacing bs = singleB $ List ty spacing $ Seq.fromList bs+    referenceLinkDefinition _label (_dest, _title) = mempty++parseCodeBlockInfo :: Text -> CodeBlockInfo+parseCodeBlockInfo t = CodeBlockInfo lang info+    where+        ws = T.words t+        (lang, info) = case ws of+            [l, i] -> (Just l, Just i)+            [l]    -> (Just l, Nothing)+            _      -> (Nothing, Nothing)++-- | Parse markdown input text to RichText.+--+-- Note that this always returns a block sequence even if the input+-- cannot be parsed. It isn't yet clear just how permissive the+-- commonmark parser is, but so far we have not encountered any issues.+-- If the input document is so broken that commonmark cannot parse it,+-- we return an empty block sequence.+parseMarkdown :: Maybe TeamBaseURL+              -- ^ If provided, perform post link detection whenever a+              -- hyperlink is parsed by checking to see if the post link+              -- is a post in this Mattermost team+              -> T.Text+              -- ^ The markdown input text to parse+              -> Blocks+parseMarkdown mBaseUrl t =+    let customSyntax = mconcat $ markdownExtensions <> [C.defaultSyntaxSpec]+        markdownExtensions =+            [ C.autolinkSpec+            , C.strikethroughSpec+            , usernameSpec+            , channelSpec+            , emojiSpec+            ]++    in case runIdentity $ C.commonmarkWith customSyntax "-" t of+        Left _ -> mempty+        Right bs -> case mBaseUrl of+            Nothing -> bs+            Just baseUrl -> rewriteBlocksPermalinks baseUrl bs+ -- | If the specified URL matches the active server base URL and team -- and refers to a post, extract the team name and post ID values and -- return them.@@ -419,20 +371,68 @@                then Just (tName, PI $ Id pIdStr)                else Nothing +-- | Locate post hyperlinks in the block sequence and rewrite them as+-- post permalinks.+rewriteBlocksPermalinks :: TeamBaseURL -> Blocks -> Blocks+rewriteBlocksPermalinks u (Blocks bs) = Blocks $ rewriteBlockPermalinks u <$> bs -unsafeGetStr :: C.Inline -> Text-unsafeGetStr (C.Str t) = t-unsafeGetStr _ = error "BUG: unsafeGetStr called on non-Str Inline"+-- | Locate post hyperlinks in the block and rewrite them as post+-- permalinks.+rewriteBlockPermalinks :: TeamBaseURL -> Block -> Block+rewriteBlockPermalinks u (Para s) = Para $ rewriteInlinePermalinks u s+rewriteBlockPermalinks u (Header i s) = Header i $ rewriteInlinePermalinks u s+rewriteBlockPermalinks u (Blockquote bs) = Blockquote $ rewriteBlocksPermalinks u bs+rewriteBlockPermalinks u (List ty spacing bss) = List ty spacing $ rewriteBlocksPermalinks u <$> bss+rewriteBlockPermalinks _ b@(CodeBlock {}) = b+rewriteBlockPermalinks _ b@(HTMLBlock {}) = b+rewriteBlockPermalinks _ b@HRule = b --- | Obtain all username references in a sequence of rich text blocks.-findUsernames :: Seq RichTextBlock -> S.Set T.Text-findUsernames = S.unions . F.toList . fmap blockFindUsernames+-- | Locate post hyperlinks in the inline sequence and rewrite them as+-- post permalinks.+rewriteInlinePermalinks :: TeamBaseURL -> Inlines -> Inlines+rewriteInlinePermalinks u (Inlines is) = Inlines $ rewriteInlinePermalink u <$> is -blockFindUsernames :: RichTextBlock -> S.Set T.Text+-- | Locate post hyperlinks in the inline value and rewrite them as post+-- permalinks.+rewriteInlinePermalink :: TeamBaseURL -> Inline -> Inline+rewriteInlinePermalink u i@(EHyperlink url label) =+    case getPermalink u (unURL url) of+        Nothing -> i+        Just (tName, pId) ->+            -- Get rid of permalink labels if they just match the URL,+            -- because that's how Commonmark-extensions parses them. We+            -- would rather only preserve the label if it differs from+            -- the URL.+            let newLabel = if label == Inlines (Seq.fromList [EText $ unURL url])+                           then Nothing+                           else Just label+            in EPermalink tName pId newLabel+rewriteInlinePermalink u (EEmph s) = EEmph $ rewriteInlinePermalinks u s+rewriteInlinePermalink u (ECode s) = ECode $ rewriteInlinePermalinks u s+rewriteInlinePermalink u (EStrikethrough s) = EStrikethrough $ rewriteInlinePermalinks u s+rewriteInlinePermalink u (EStrong s) = EStrong $ rewriteInlinePermalinks u s+rewriteInlinePermalink u (ENonBreaking s) = ENonBreaking $ rewriteInlinePermalinks u s+rewriteInlinePermalink _ i@(EText {}) = i+rewriteInlinePermalink _ i@ESpace = i+rewriteInlinePermalink _ i@ESoftBreak = i+rewriteInlinePermalink _ i@ELineBreak = i+rewriteInlinePermalink _ i@(EEditSentinel {}) = i+rewriteInlinePermalink _ i@(ERawHtml {}) = i+rewriteInlinePermalink _ i@(EEmoji {}) = i+rewriteInlinePermalink _ i@(EUser {}) = i+rewriteInlinePermalink _ i@(EChannel {}) = i+rewriteInlinePermalink _ i@(EImage {}) = i+rewriteInlinePermalink _ i@(EPermalink {}) = i++-- | Obtain all username references in a rich text document.+findUsernames :: Blocks -> S.Set T.Text+findUsernames (Blocks bs) = S.unions $ F.toList $ fmap blockFindUsernames bs++blockFindUsernames :: Block -> S.Set T.Text blockFindUsernames (Para is) =-    elementFindUsernames $ F.toList is+    inlineFindUsernames $ F.toList $ unInlines is blockFindUsernames (Header _ is) =-    elementFindUsernames $ F.toList is+    inlineFindUsernames $ F.toList $ unInlines is blockFindUsernames (Blockquote bs) =     findUsernames bs blockFindUsernames (List _ _ bs) =@@ -440,47 +440,39 @@ blockFindUsernames _ =     mempty -elementFindUsernames :: [Element] -> S.Set T.Text-elementFindUsernames [] = mempty-elementFindUsernames (e : es) =-    case eData e of-        EUser u -> S.insert u $ elementFindUsernames es-        _ -> elementFindUsernames es+inlineFindUsernames :: [Inline] -> S.Set T.Text+inlineFindUsernames [] = mempty+inlineFindUsernames (i : is) =+    case i of+        EUser u -> S.insert u $ inlineFindUsernames is+        _ -> inlineFindUsernames is  -- | Obtain all URLs (and optional labels) in a rich text block.-blockGetURLs :: RichTextBlock -> [(Either (TeamURLName, PostId) URL, Maybe (Seq Element))]+blockGetURLs :: Block -> [(Either (TeamURLName, PostId) URL, Maybe Inlines)] blockGetURLs (Para is) =-    catMaybes $ elementGetURL <$> toList is+    catMaybes $ elementGetURL <$> (toList $ unInlines is) blockGetURLs (Header _ is) =-    catMaybes $ elementGetURL <$> toList is+    catMaybes $ elementGetURL <$> (toList $ unInlines is) blockGetURLs (Blockquote bs) =-    mconcat $ blockGetURLs <$> toList bs+    mconcat $ blockGetURLs <$> toList (unBlocks bs) blockGetURLs (List _ _ bss) =     mconcat $ mconcat $-    (fmap blockGetURLs . F.toList) <$> F.toList bss+    (fmap blockGetURLs . F.toList . unBlocks) <$> F.toList bss blockGetURLs _ =     mempty -elementGetURL :: Element -> Maybe (Either (TeamURLName, PostId) URL, Maybe (Seq Element))-elementGetURL (Element _ (EHyperlink url label)) =-    Just (Right url, label)-elementGetURL (Element _ (EImage url label)) =-    Just (Right url, label)-elementGetURL (Element _ (EPermalink tName pId label)) =+elementGetURL :: Inline -> Maybe (Either (TeamURLName, PostId) URL, Maybe Inlines)+elementGetURL (EHyperlink url label) =+    Just (Right url, Just label)+elementGetURL (EImage url label) =+    Just (Right url, Just label)+elementGetURL (EPermalink tName pId label) =     Just (Left (tName, pId), label) elementGetURL _ =     Nothing  -- | Find the first code block in a sequence of rich text blocks.-findVerbatimChunk :: Seq RichTextBlock -> Maybe Text-findVerbatimChunk = getFirst . F.foldMap go+findVerbatimChunk :: Blocks -> Maybe Text+findVerbatimChunk (Blocks bs) = getFirst $ F.foldMap go bs   where go (CodeBlock _ t) = First (Just t)         go _               = First Nothing--isValidNameChar :: Char -> Bool-isValidNameChar c = isAlpha c || c == '_' || c == '.' || c == '-'--isNameFragment :: C.Inline -> Bool-isNameFragment (C.Str t) =-    not (T.null t) && isValidNameChar (T.head t)-isNameFragment _ = False
src/Matterhorn/Windows/ViewMessage.hs view
@@ -21,39 +21,41 @@ import qualified Graphics.Vty as Vty import           Lens.Micro.Platform ( to ) +import           Network.Mattermost.Types ( TeamId )+ import           Matterhorn.Constants import           Matterhorn.Events.Keybindings import           Matterhorn.Themes import           Matterhorn.Types import           Matterhorn.Draw.RichText-import           Matterhorn.Draw.Messages ( nameForUserRef )+import           Matterhorn.Draw.Messages ( renderMessage, MessageData(..), nameForUserRef )  -- | The template for "View Message" windows triggered by message -- selection mode.-viewMessageWindowTemplate :: TabbedWindowTemplate ViewMessageWindowTab-viewMessageWindowTemplate =-    TabbedWindowTemplate { twtEntries = [ messageEntry-                                        , reactionsEntry+viewMessageWindowTemplate :: TeamId -> TabbedWindowTemplate ViewMessageWindowTab+viewMessageWindowTemplate tId =+    TabbedWindowTemplate { twtEntries = [ messageEntry tId+                                        , reactionsEntry tId                                         ]                          , twtTitle = const $ txt "View Message"                          } -messageEntry :: TabbedWindowEntry ViewMessageWindowTab-messageEntry =+messageEntry :: TeamId -> TabbedWindowEntry ViewMessageWindowTab+messageEntry tId =     TabbedWindowEntry { tweValue = VMTabMessage                       , tweRender = renderTab                       , tweHandleEvent = handleEvent                       , tweTitle = tabTitle-                      , tweShowHandler = onShow+                      , tweShowHandler = onShow tId                       } -reactionsEntry :: TabbedWindowEntry ViewMessageWindowTab-reactionsEntry =+reactionsEntry :: TeamId -> TabbedWindowEntry ViewMessageWindowTab+reactionsEntry tId =     TabbedWindowEntry { tweValue = VMTabReactions                       , tweRender = renderTab                       , tweHandleEvent = handleEvent                       , tweTitle = tabTitle-                      , tweShowHandler = onShow+                      , tweShowHandler = onShow tId                       }  tabTitle :: ViewMessageWindowTab -> Bool -> T.Text@@ -65,9 +67,9 @@ -- window used the same handle for the viewport and we don't want that -- old state affecting this window. This also means that switching tabs -- in an existing window resets this state, too.-onShow :: ViewMessageWindowTab -> MH ()-onShow VMTabMessage = resetVp ViewMessageArea-onShow VMTabReactions = resetVp ViewMessageArea+onShow :: TeamId -> ViewMessageWindowTab -> MH ()+onShow tId VMTabMessage = resetVp $ ViewMessageArea tId+onShow tId VMTabReactions = resetVp $ ViewMessageArea tId  resetVp :: Name -> MH () resetVp n = do@@ -78,7 +80,7 @@  renderTab :: ViewMessageWindowTab -> ChatState -> Widget Name renderTab tab cs =-    let latestMessage = case cs^.csViewedMessage of+    let latestMessage = case cs^.csCurrentTeam.tsViewedMessage of           Nothing -> error "BUG: no message to show, please report!"           Just (m, _) -> getLatestMessage cs m     in case tab of@@ -98,8 +100,9 @@     void . handleKeyboardEvent viewMessageReactionsKeybindings (const $ return ())  reactionsText :: ChatState -> Message -> Widget Name-reactionsText st m = viewport ViewMessageReactionsArea Vertical body+reactionsText st m = viewport (ViewMessageReactionsArea tId) Vertical body     where+        tId = st^.csCurrentTeamId         body = case null reacList of             True -> txt "This message has no reactions."             False -> vBox $ mkEntry <$> reacList@@ -125,6 +128,7 @@ viewMessageBox st msg =     let maybeWarn = if not (msg^.mDeleted) then id else warn         warn w = vBox [w, hBorder, deleteWarning]+        tId = st^.csCurrentTeamId         deleteWarning = withDefAttr errorMessageAttr $                         txtWrap $ "Alert: this message has been deleted and " <>                                   "will no longer be accessible once this window " <>@@ -153,43 +157,53 @@      in Widget Greedy Greedy $ do         ctx <- getContext-        render $ maybeWarn $ viewport ViewMessageArea Both $ mkBody (ctx^.availWidthL)+        render $ maybeWarn $ viewport (ViewMessageArea tId) Both $ mkBody (ctx^.availWidthL)  viewMessageKeybindings :: KeyConfig -> KeyHandlerMap viewMessageKeybindings = mkKeybindings viewMessageKeyHandlers  viewMessageKeyHandlers :: [KeyEventHandler] viewMessageKeyHandlers =-    let vs = viewportScroll ViewMessageArea-    in [ mkKb PageUpEvent "Page up" $-           mh $ vScrollBy vs (-1 * pageAmount)+    let vs = viewportScroll . ViewMessageArea+    in [ mkKb PageUpEvent "Page up" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) (-1 * pageAmount) -       , mkKb PageDownEvent "Page down" $-           mh $ vScrollBy vs pageAmount+       , mkKb PageDownEvent "Page down" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) pageAmount -       , mkKb PageLeftEvent "Page left" $-           mh $ hScrollBy vs (-2 * pageAmount)+       , mkKb PageLeftEvent "Page left" $ do+           tId <- use csCurrentTeamId+           mh $ hScrollBy (vs tId) (-2 * pageAmount) -       , mkKb PageRightEvent "Page right" $-           mh $ hScrollBy vs (2 * pageAmount)+       , mkKb PageRightEvent "Page right" $ do+           tId <- use csCurrentTeamId+           mh $ hScrollBy (vs tId) (2 * pageAmount) -       , mkKb ScrollUpEvent "Scroll up" $-           mh $ vScrollBy vs (-1)+       , mkKb ScrollUpEvent "Scroll up" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) (-1) -       , mkKb ScrollDownEvent "Scroll down" $-           mh $ vScrollBy vs 1+       , mkKb ScrollDownEvent "Scroll down" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) 1 -       , mkKb ScrollLeftEvent "Scroll left" $-           mh $ hScrollBy vs (-1)+       , mkKb ScrollLeftEvent "Scroll left" $ do+           tId <- use csCurrentTeamId+           mh $ hScrollBy (vs tId) (-1) -       , mkKb ScrollRightEvent "Scroll right" $-           mh $ hScrollBy vs 1+       , mkKb ScrollRightEvent "Scroll right" $ do+           tId <- use csCurrentTeamId+           mh $ hScrollBy (vs tId) 1 -       , mkKb ScrollBottomEvent "Scroll to the end of the message" $-           mh $ vScrollToEnd vs+       , mkKb ScrollBottomEvent "Scroll to the end of the message" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollToEnd (vs tId) -       , mkKb ScrollTopEvent "Scroll to the beginning of the message" $-           mh $ vScrollToBeginning vs+       , mkKb ScrollTopEvent "Scroll to the beginning of the message" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollToBeginning (vs tId)        ]  viewMessageReactionsKeybindings :: KeyConfig -> KeyHandlerMap@@ -197,22 +211,28 @@  viewMessageReactionsKeyHandlers :: [KeyEventHandler] viewMessageReactionsKeyHandlers =-    let vs = viewportScroll ViewMessageReactionsArea-    in [ mkKb PageUpEvent "Page up" $-           mh $ vScrollBy vs (-1 * pageAmount)+    let vs = viewportScroll . ViewMessageReactionsArea+    in [ mkKb PageUpEvent "Page up" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) (-1 * pageAmount) -       , mkKb PageDownEvent "Page down" $-           mh $ vScrollBy vs pageAmount+       , mkKb PageDownEvent "Page down" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) pageAmount -       , mkKb ScrollUpEvent "Scroll up" $-           mh $ vScrollBy vs (-1)+       , mkKb ScrollUpEvent "Scroll up" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) (-1) -       , mkKb ScrollDownEvent "Scroll down" $-           mh $ vScrollBy vs 1+       , mkKb ScrollDownEvent "Scroll down" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollBy (vs tId) 1 -       , mkKb ScrollBottomEvent "Scroll to the end of the reactions list" $-           mh $ vScrollToEnd vs+       , mkKb ScrollBottomEvent "Scroll to the end of the reactions list" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollToEnd (vs tId) -       , mkKb ScrollTopEvent "Scroll to the beginning of the reactions list" $-           mh $ vScrollToBeginning vs+       , mkKb ScrollTopEvent "Scroll to the beginning of the reactions list" $ do+           tId <- use csCurrentTeamId+           mh $ vScrollToBeginning (vs tId)        ]
syntax/abc.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd"> <!-- Andrea Primiani - primiani at dag dot it  	version1.10 - 12 december 2005 -->-<language name="ABC" version="5" kateversion="2.4" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">+<language name="ABC" version="6" kateversion="2.4" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">     <highlighting>         <contexts>            <context name="Normal" attribute="Normal Text" lineEndContext="#stay">@@ -38,7 +38,10 @@ <!-- returns to Normal context at the end of line -->	    	   <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" /> 	   <context name="Lyrics" attribute="Lyrics" lineEndContext="#pop" />-	   <context name="Comment" attribute="Comment" lineEndContext="#pop" />+	   <context name="Comment" attribute="Comment" lineEndContext="#pop">+	    <IncludeRules context="##Alerts" />+	    <IncludeRules context="##Modelines" />+	   </context> <!-- returns to Normal context after the end of bar symbols or at EOL --> 	   <context name="Bar" attribute="Bar" lineEndContext="#pop" > 	   	<DetectChar attribute="Normal Text" context="#pop" char="&quot;" />@@ -79,8 +82,9 @@  </highlighting>   <general>     <comments>-      <comment name="singleLine" start="%" />+      <comment name="singleLine" start="%" position="afterwhitespace" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs off; -->
syntax/actionscript.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="ActionScript 2.0" version="3" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">+<language name="ActionScript 2.0" version="6" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">   <highlighting>          <list name="properties">@@ -247,6 +247,8 @@       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">         <!-- Comment next line if you don't use Javadoc tool -->         <IncludeRules context="##Javadoc"/>+        <WordDetect attribute="Keyword" context="Imports" String="package" />+        <WordDetect attribute="Keyword" context="ImportsPrefix" String="import" lookAhead="true" />         <keyword attribute="Properties" context="#stay" String="properties"/>         <keyword attribute="Global Functions" context="#stay" String="global_functions"/>         <keyword attribute="Classes" context="#stay" String="classes"/>@@ -266,12 +268,14 @@         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>         <RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />  -        <RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />-        <RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" />          <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />-        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" /> -        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>+        <DetectChar attribute="Symbol" context="Member" char="." />+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>       </context>+      <context name="ImportsPrefix" attribute="Keyword" lineEndContext="#pop">+        <RegExpr attribute="Keyword" context="#pop!StaticImports" String="import\s+static\b" />+        <WordDetect attribute="Keyword" context="#pop!Imports" String="import" />+      </context>       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">           <AnyChar String="fF" attribute="Float" context="#pop"/>       </context>@@ -293,15 +297,16 @@       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">           <RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />       </context>-      <context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">-        <RegExpr attribute="StaticImports" context="#pop" String="\s*.*$" />-      </context>-      <context attribute="Normal Text" lineEndContext="#pop" name="Imports">-        <RegExpr attribute="Imports" context="#pop" String="\s*.*$" />+      <context attribute="StaticImports" lineEndContext="#pop" name="StaticImports"/>+      <context attribute="Imports" lineEndContext="#pop" name="Imports"/>+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>     </contexts>     <itemDatas>@@ -329,8 +334,9 @@   <general>     <comments>       <comment name="singleLine" start="//"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="1"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/ada.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language name="Ada"-          version="3"+          version="4"           kateversion="5.0"           section="Sources"           extensions="*.adb;*.ads;*.ada;*.a"@@ -175,7 +175,10 @@       <context attribute="String" lineEndContext="#pop" name="String">         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Comment"/>+      <context attribute="Comment" lineEndContext="#pop" name="Comment">+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal" />@@ -193,7 +196,7 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="--" />+      <comment name="singleLine" start="--" position="afterwhitespace" />     </comments>     <keywords casesensitive="0" />   </general>
syntax/agda.xml view
@@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"[   <!ENTITY charsdelim "_;.&#34;(){}@">-  <!ENTITY wordsep "(?=([&charsdelim;]|\s|$))">+  <!ENTITY wordsep "(?=[&charsdelim;]|\s|$)"> ]>-<language name="Agda" version="6" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">+<language name="Agda" version="7" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">   <highlighting>     <list name="reserved keywords">       <item>abstract</item>@@ -56,14 +56,14 @@       <context attribute="Normal" lineEndContext="#stay" name="code">         <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}" />         <keyword attribute="Keyword" context="#stay" String="reserved keywords" />-        <RegExpr attribute="Type"    context="#stay" String="(Prop[₀-₉]+|Prop[0-9]*|Set[₀-₉]+|Set[0-9]*)&wordsep;" />-        <RegExpr attribute="Special" context="#stay" String="(-&gt;|→|∀|λ|:|=|\|)&wordsep;" />-        <RegExpr attribute="Float"   context="#stay" String="\d+\.\d+&wordsep;" />+        <RegExpr attribute="Type"    context="#stay" String="(?:Prop[₀-₉]+|Prop[0-9]*|Set[₀-₉]+|Set[0-9]*)&wordsep;" />+        <RegExpr attribute="Special" context="#stay" String="(?:\-&gt;|→|∀|λ|:|=|\|)&wordsep;" />+        <RegExpr attribute="Float"   context="#stay" String="\d+(?:(?:\.\d+)?[eE][+-]?\d+|\.\d+)&wordsep;" />         <RegExpr attribute="Decimal" context="#stay" String="[0-9]+&wordsep;" />         <DetectChar attribute="Char"   context="char"   char="'" />         <DetectChar attribute="String" context="string" char="&quot;" />         <Detect2Chars attribute="Comment" context="comment"  char="-"  char1="-" />-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" />         <Detect2Chars attribute="Hole"    context="hole"     char="{" char1="!" />         <!-- delimiters which cannot be part of an identifier, or              backslash which starts a lambda expression -->@@ -73,11 +73,16 @@              cases are already taken care off above) -->         <RegExpr attribute="Normal" context="#stay" String="[^&charsdelim;\s]+" />       </context>-      <context attribute="Comment" lineEndContext="#pop" name="comment" />-      <context attribute="Comment" lineEndContext="#stay" name="comments">-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" /> <!-- for nested comments -->-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+      <context attribute="Comment" lineEndContext="#pop" name="comment">+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>+      <context attribute="Comment" lineEndContext="#stay" name="comments" noIndentationBasedFolding="1">+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" /> <!-- for nested comments -->+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="CommentBlock" />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>       <context attribute="Hole" lineEndContext="#stay" name="hole">         <Detect2Chars attribute="Hole" context="#pop" char="!" char1="}" />       </context>@@ -107,11 +112,12 @@   <general>     <folding indentationsensitive="1"/>     <comments>-      <comment name="singleLine" start="--" />-      <comment name="multiLine" start="{-" end="-}" />+      <comment name="singleLine" start="--" position="afterwhitespace" />+      <comment name="multiLine" start="{-" end="-}" region="CommentBlock" />     </comments>     <keywords casesensitive="1"               weakDeliminator=":!+,-&lt;=&gt;%&amp;*/?[]^|~\\"               additionalDeliminator="&charsdelim;" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/apache.xml view
@@ -13,7 +13,7 @@ -->  <language name="Apache Configuration" section="Configuration"-          version="3" kateversion="5.0"+          version="4" kateversion="5.0"           extensions="httpd.conf;httpd2.conf;apache.conf;apache2.conf;.htaccess*;.htpasswd*"           mimetype=""           author="Jan Janssen (medhefgo@googlemail.com)" license="LGPL">@@ -585,6 +585,7 @@  <context name="Comment" attribute="Comment" lineEndContext="#pop">   <DetectSpaces />   <IncludeRules context="##Alerts" />+  <IncludeRules context="##Modelines" />   <DetectIdentifier />  </context> @@ -631,3 +632,4 @@ </general>  </language>+<!-- kate: replace-tabs on; tab-width 1; indent-width 1; -->
syntax/asn1.xml view
@@ -13,7 +13,7 @@          You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php -->-<language name="ASN.1" section="Markup" version="3" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">+<language name="ASN.1" section="Markup" version="4" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">   <highlighting>     <list name="keywords">       <item>DEFINITIONS</item>@@ -54,6 +54,8 @@       </context>              <context attribute="Comment" lineEndContext="#pop" name="Comment">+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>     </contexts>     @@ -64,6 +66,11 @@       <itemData name="Data Type"   defStyleNum="dsDataType"/>     </itemDatas>   </highlighting>+  <general>+    <comments>+      <comment name="singleLine" start="--"/>+    </comments>+  </general> </language> <!-- // kate: space-indent on; indent-width 2; replace-tabs on;
syntax/asp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE  language SYSTEM "language.dtd">-<language name="ASP" version="4" kateversion="5.0" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">+<language name="ASP" version="6" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">     <highlighting>         <list name="control structures">             <item>select</item>@@ -231,15 +231,18 @@         </list>             <contexts>             <context name="nosource" attribute="Normal Text" lineEndContext="#stay">-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />+                <IncludeRules context="find-aspsource" />                 <RegExpr attribute="HTML Tag" context="aspsource" String="&lt;\s*script\s*language=&quot;VBScript&quot;[^&gt;]*&gt;" insensitive="true" />-                <RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(\s|&gt;)" insensitive="true" />+                <RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(?:\s|&gt;|$)" insensitive="true" />                 <RegExpr attribute="HTML Tag" context="htmltag" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />-                <StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" />+                <StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" beginRegion="HTMLComment" />             </context> +            <context name="find-aspsource" attribute="Normal Text" lineEndContext="#stay">+                <Detect2Chars attribute="ASP Source" context="aspsource" char="&lt;" char1="%" beginRegion="ASPSource" />+            </context>             <context name="aspsource" attribute="ASP Text" lineEndContext="#stay">-                <StringDetect attribute="Keyword" context="#pop" String="%&gt;" />+                <Detect2Chars attribute="ASP Source" context="#pop" char="%" char1="&gt;" endRegion="ASPSource" />                 <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />                 <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />                 <DetectChar attribute="String" context="doublequotestring" char="&quot;" />@@ -252,45 +255,49 @@                 <Int attribute="Decimal" context="#stay" />                 <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" /> -                <RegExpr attribute="Control Structures" context="#stay" String="\belseif\b" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\belse\b" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bif\b" insensitive="true" beginRegion="iffi1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bend if\b" insensitive="true" endRegion="iffi1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="elseif" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="else" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="if" insensitive="true" beginRegion="iffi1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="end if" insensitive="true" endRegion="iffi1"/> -                <RegExpr attribute="Keyword" context="#stay" String="\bexit function\b" insensitive="true" />-                <RegExpr attribute="Keyword" context="#stay" String="\bfunction\b" insensitive="true" beginRegion="funendfun1"/>-                <RegExpr attribute="Keyword" context="#stay" String="\bend function\b" insensitive="true" endRegion="funendfun1"/>+                <WordDetect attribute="Keyword" context="#stay" String="exit function" insensitive="true" />+                <WordDetect attribute="Keyword" context="#stay" String="function" insensitive="true" beginRegion="funendfun1"/>+                <WordDetect attribute="Keyword" context="#stay" String="end function" insensitive="true" endRegion="funendfun1"/> -                <RegExpr attribute="Keyword" context="#stay" String="\bexit sub\b" insensitive="true" />-                <RegExpr attribute="Keyword" context="#stay" String="\bsub\b" insensitive="true" beginRegion="subendsub1"/>-                <RegExpr attribute="Keyword" context="#stay" String="\bend sub\b" insensitive="true" endRegion="subendsub1"/>+                <WordDetect attribute="Keyword" context="#stay" String="exit sub" insensitive="true" />+                <WordDetect attribute="Keyword" context="#stay" String="sub" insensitive="true" beginRegion="subendsub1"/>+                <WordDetect attribute="Keyword" context="#stay" String="end sub" insensitive="true" endRegion="subendsub1"/> -                <RegExpr attribute="Keyword" context="#stay" String="\bclass\b" insensitive="true" beginRegion="classendclass1"/>-                <RegExpr attribute="Keyword" context="#stay" String="\bend class\b" insensitive="true" endRegion="classendclass1"/>+                <WordDetect attribute="Keyword" context="#stay" String="class" insensitive="true" beginRegion="classendclass1"/>+                <WordDetect attribute="Keyword" context="#stay" String="end class" insensitive="true" endRegion="classendclass1"/> -                <RegExpr attribute="Control Structures" context="#stay" String="\bexit do\b" insensitive="true" />-                <RegExpr attribute="Control Structures" context="#stay" String="\bdo(\s+(while))?\b" insensitive="true" beginRegion="doloop1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bloop\b" insensitive="true" endRegion="doloop1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="exit do" insensitive="true" />+                <RegExpr attribute="Control Structures" context="#stay" String="\bdo(?:\s+while)?\b" insensitive="true" beginRegion="doloop1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="loop" insensitive="true" endRegion="doloop1"/> -                <RegExpr attribute="Control Structures" context="#stay" String="\bexit while\b" insensitive="true" />-                <RegExpr attribute="Control Structures" context="#stay" String="\bwhile\b" insensitive="true" beginRegion="whilewend1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bwend\b" insensitive="true" endRegion="whilewend1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="exit while" insensitive="true" />+                <WordDetect attribute="Control Structures" context="#stay" String="while" insensitive="true" beginRegion="whilewend1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="wend" insensitive="true" endRegion="whilewend1"/> -                <RegExpr attribute="Control Structures" context="#stay" String="\bexit for\b" insensitive="true" />-                <RegExpr attribute="Control Structures" context="#stay" String="\bfor\b" insensitive="true" beginRegion="fornext1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bnext\b" insensitive="true" endRegion="fornext1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="exit for" insensitive="true" />+                <WordDetect attribute="Control Structures" context="#stay" String="for" insensitive="true" beginRegion="fornext1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="next" insensitive="true" endRegion="fornext1"/> -                <RegExpr attribute="Control Structures" context="#stay" String="\bselect case\b" insensitive="true" beginRegion="selcase1"/>-                <RegExpr attribute="Control Structures" context="#stay" String="\bend select\b" insensitive="true" endRegion="selcase1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="select case" insensitive="true" beginRegion="selcase1"/>+                <WordDetect attribute="Control Structures" context="#stay" String="end select" insensitive="true" endRegion="selcase1"/>                  <keyword attribute="Keyword" context="#stay" String="keywords" />                 <keyword attribute="Control Structures" context="#stay" String="control structures" />                 <keyword attribute="Function" context="#stay" String="functions" />             </context>             <context name="asp_onelinecomment" attribute="Comment" lineEndContext="#pop">-                <StringDetect attribute="Keyword" context="#pop#pop" String="%&gt;" />+                <DetectSpaces />+                <Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />+                <IncludeRules context="##Alerts" />+                <IncludeRules context="##Modelines" />             </context>             <context name="doublequotestring" attribute="String" lineEndContext="#stay">+                <DetectSpaces />                 <Detect2Chars attribute="Escape Code" context="#stay" char="&quot;" char1="&quot;" />                 <RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}" />                 <RegExpr attribute="Escape Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />@@ -301,43 +308,44 @@                 <DetectChar attribute="String" context="#pop" char="'" />             </context>             <context name="htmltag" attribute="Identifier" lineEndContext="#stay">+                <DetectSpaces />                 <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />                 <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <RegExpr attribute="Identifier" context="identifiers" String="\s*=\s*"/>+                <IncludeRules context="find-aspsource" />+                <DetectChar attribute="Identifier" context="identifiers" char="="/>             </context>             <context name="htmlcomment" attribute="HTML Comment" lineEndContext="#stay">-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />-                <RegExpr attribute="Normal Text" context="identifiers" String="\s*=\s*"/>+                <DetectSpaces />+                <IncludeRules context="find-aspsource" />+                <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTMLComment" />+                <DetectChar attribute="Normal Text" context="identifiers" char="="/>+                <IncludeRules context="##Alerts" />+                <IncludeRules context="##Modelines" />             </context>             <context name="identifiers" attribute="Identifier" lineEndContext="#stay">+                <DetectSpaces />                 <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />                 <DetectChar attribute="Types" context="types1" char="'" />                 <DetectChar attribute="Types" context="types2" char="&quot;" />             </context>              <context name="types1" attribute="Types" lineEndContext="#stay">-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />+                <IncludeRules context="find-aspsource" />                 <DetectChar attribute="Types" context="#pop#pop" char="'" />             </context>              <context name="types2" attribute="Types" lineEndContext="#stay">-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />+                <IncludeRules context="find-aspsource" />                 <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />             </context>              <context name="scripts" attribute="Normal Text" lineEndContext="#stay">                 <Detect2Chars attribute="Comment" context="scripts_onelinecomment" char="/" char1="/" />-                <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" />+                <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="ScriptComment" />                 <keyword attribute="Control Structures" context="#stay" String="control structures" />                 <keyword attribute="Keyword" context="#stay" String="keywords" />                 <keyword attribute="Function" context="#stay" String="functions" />-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%"/>+                <IncludeRules context="find-aspsource" />                 <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />                  <DetectChar attribute="String" context="doublequotestring" char="&quot;" />@@ -351,39 +359,44 @@                 <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />             </context>             <context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">+                <DetectSpaces />                 <RegExpr attribute="HTML Tag" context="#pop#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />+                <IncludeRules context="##Alerts" />             </context>             <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">-                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />+                <DetectSpaces />+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="ScriptComment" />+                <IncludeRules context="##Alerts" />             </context>          </contexts>         <itemDatas>             <itemData name="Normal Text" defStyleNum="dsNormal" />-            <itemData name="ASP Text" defStyleNum="dsNormal" />-            <itemData name="Keyword" defStyleNum="dsKeyword" />-            <itemData name="Function" defStyleNum="dsFunction" />-            <itemData name="Decimal" defStyleNum="dsDecVal" />-            <itemData name="Octal" defStyleNum="dsBaseN" />-            <itemData name="Hex" defStyleNum="dsBaseN" />-            <itemData name="Float" defStyleNum="dsFloat" />+            <itemData name="ASP Text" defStyleNum="dsNormal" spellChecking="false" />+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false" />+            <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />+            <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />+            <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />+            <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />             <itemData name="String" defStyleNum="dsString" />             <itemData name="Comment" defStyleNum="dsComment" />-            <itemData name="Control Structures" defStyleNum="dsControlFlow" bold="0" />-            <itemData name="Escape Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />-            <itemData name="Other" defStyleNum="dsOthers" />+            <itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false" />+            <itemData name="Escape Code" defStyleNum="dsSpecialChar" spellChecking="false" />+            <itemData name="Other" defStyleNum="dsOthers" spellChecking="false" />+            <itemData name="ASP Source" defStyleNum="dsDataType" bold="1" spellChecking="false" /> -            <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />+            <itemData name="HTML Tag" defStyleNum="dsKeyword" spellChecking="false" />             <itemData name="HTML Comment" defStyleNum="dsComment" />-            <itemData name="Identifier" defStyleNum="dsOthers" />-            <itemData name="Types" defStyleNum="dsDataType" />+            <itemData name="Identifier" defStyleNum="dsOthers" spellChecking="false" />+            <itemData name="Types" defStyleNum="dsString" />         </itemDatas>     </highlighting>     <general>         <comments>             <comment name="singleLine" start="'" />-            <comment name="multiLine" start="/*" end="*/" />         </comments>         <keywords casesensitive="0" weakDeliminator=""/>     </general> </language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
syntax/ats.xml view
@@ -1,165 +1,165 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-<!-- Regular expresion constants: -->-<!ENTITY LETTER "A-Za-z\0300-\0326\0330-\0366\0370-\0377">          <!-- Latin-1 letters. -->+<!-- Regular expression constants: -->+<!ENTITY LETTER "A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff">                <!-- Latin-1 letters. --> <!ENTITY IDENT  "[&LETTER;_][&LETTER;0-9_']*">                      <!-- ATS identifiers. --> <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- ATS character code escapes. --> <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. --> ]>-<language name="ATS" version="0.01" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">+<language name="ATS" version="2" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">   <highlighting>     <list name="keywords">-      <item> abstype </item>-      <item> abst0ype </item>-      <item> absprop </item>-      <item> absview </item>-      <item> absvtype </item>-      <item> absviewtype </item>-      <item> absvt0ype </item>-      <item> absviewt0ype </item>-      <item> and </item>-      <item> as </item>-      <item> assume </item>-      <item> begin </item>-      <item> break </item>-      <item> case </item>-      <item> continue </item>-      <item> classdec </item>-      <item> datasort </item>-      <item> datatype </item>-      <item> dataprop </item>-      <item> dataview </item>-      <item> datavtype </item>-      <item> dataviewtype </item>-      <item> do </item>-      <item> dynload </item>-      <item> else </item>-      <item> end </item>-      <item> exception </item>-      <item> extern </item>-      <item> extype </item>-      <item> extval </item>-      <item> if </item>-      <item> in </item>-      <item> infix </item>-      <item> infixl </item>-      <item> infixr </item>-      <item> prefix </item>-      <item> postfix </item>-      <item> let </item>-      <item> local </item>-      <item> macdef </item>-      <item> macrodef </item>-      <item> nonfix </item>-      <item> overload </item>-      <item> of </item>-      <item> op </item>-      <item> rec </item>-      <item> scase </item>-      <item> sif </item>-      <item> sortdef </item>-      <item> sta </item>-      <item> stacst </item>-      <item> stadef </item>-      <item> stavar </item>-      <item> staload </item>-      <item> symelim </item>-      <item> symintr </item>-      <item> then </item>-      <item> try </item>-      <item> tkindef </item>-      <item> type </item>-      <item> typedef </item>-      <item> propdef </item>-      <item> viewdef </item>-      <item> vtypedef </item>-      <item> viewtypedef </item>-      <item> val </item>-      <item> prval </item>-      <item> var </item>-      <item> prvar </item>-      <item> when </item>-      <item> where </item>-      <item> for </item>-      <item> while </item>-      <item> with </item>-      <item> withtype </item>-      <item> withprop </item>-      <item> withview </item>-      <item> withvtype </item>-      <item> withviewtype </item>+      <item>abstype</item>+      <item>abst0ype</item>+      <item>absprop</item>+      <item>absview</item>+      <item>absvtype</item>+      <item>absviewtype</item>+      <item>absvt0ype</item>+      <item>absviewt0ype</item>+      <item>and</item>+      <item>as</item>+      <item>assume</item>+      <item>begin</item>+      <item>break</item>+      <item>case</item>+      <item>continue</item>+      <item>classdec</item>+      <item>datasort</item>+      <item>datatype</item>+      <item>dataprop</item>+      <item>dataview</item>+      <item>datavtype</item>+      <item>dataviewtype</item>+      <item>do</item>+      <item>dynload</item>+      <item>else</item>+      <item>end</item>+      <item>exception</item>+      <item>extern</item>+      <item>extype</item>+      <item>extval</item>+      <item>if</item>+      <item>in</item>+      <item>infix</item>+      <item>infixl</item>+      <item>infixr</item>+      <item>prefix</item>+      <item>postfix</item>+      <item>let</item>+      <item>local</item>+      <item>macdef</item>+      <item>macrodef</item>+      <item>nonfix</item>+      <item>overload</item>+      <item>of</item>+      <item>op</item>+      <item>rec</item>+      <item>scase</item>+      <item>sif</item>+      <item>sortdef</item>+      <item>sta</item>+      <item>stacst</item>+      <item>stadef</item>+      <item>stavar</item>+      <item>staload</item>+      <item>symelim</item>+      <item>symintr</item>+      <item>then</item>+      <item>try</item>+      <item>tkindef</item>+      <item>type</item>+      <item>typedef</item>+      <item>propdef</item>+      <item>viewdef</item>+      <item>vtypedef</item>+      <item>viewtypedef</item>+      <item>val</item>+      <item>prval</item>+      <item>var</item>+      <item>prvar</item>+      <item>when</item>+      <item>where</item>+      <item>for</item>+      <item>while</item>+      <item>with</item>+      <item>withtype</item>+      <item>withprop</item>+      <item>withview</item>+      <item>withvtype</item>+      <item>withviewtype</item>     </list>     <list name="special keywords">-      <item> $arrpsz </item>-      <item> $arrptrsize </item>-      <item> $delay </item>-      <item> $ldelay </item>-      <item> $effmask </item>-      <item> $effmask_ntm </item>-      <item> $effmask_exn </item>-      <item> $effmask_ref </item>-      <item> $effmask_wrt </item>-      <item> $effmask_all </item>-      <item> $extern </item>-      <item> $extkind </item>-      <item> $extype </item>-      <item> $extype_struct </item>-      <item> $extval </item>-      <item> $lst </item>-      <item> $lst_t </item>-      <item> $lst_vt </item>-      <item> $list </item>-      <item> $list_t </item>-      <item> $list_vt </item>-      <item> $rec </item>-      <item> $rec_t </item>-      <item> $rec_vt </item>-      <item> $record </item>-      <item> $record_t </item>-      <item> $record_vt </item>-      <item> $tup </item>-      <item> $tup_t </item>-      <item> $tup_vt </item>-      <item> $tuple </item>-      <item> $tuple_t </item>-      <item> $tuple_vt </item>-      <item> $raise </item>-      <item> $showtype </item>-      <item> $myfilename </item>-      <item> $mylocation </item>-      <item> $myfunction </item>-      <item> #assert </item>-      <item> #define </item>-      <item> #elif </item>-      <item> #elifdef </item>-      <item> #elifndef </item>-      <item> #else </item>-      <item> #endif </item>-      <item> #error </item>-      <item> #if </item>-      <item> #ifdef </item>-      <item> #ifndef </item>-      <item> #include </item>-      <item> #print </item>-      <item> #then </item>-      <item> #undef </item>+      <item>$arrpsz</item>+      <item>$arrptrsize</item>+      <item>$delay</item>+      <item>$ldelay</item>+      <item>$effmask</item>+      <item>$effmask_ntm</item>+      <item>$effmask_exn</item>+      <item>$effmask_ref</item>+      <item>$effmask_wrt</item>+      <item>$effmask_all</item>+      <item>$extern</item>+      <item>$extkind</item>+      <item>$extype</item>+      <item>$extype_struct</item>+      <item>$extval</item>+      <item>$lst</item>+      <item>$lst_t</item>+      <item>$lst_vt</item>+      <item>$list</item>+      <item>$list_t</item>+      <item>$list_vt</item>+      <item>$rec</item>+      <item>$rec_t</item>+      <item>$rec_vt</item>+      <item>$record</item>+      <item>$record_t</item>+      <item>$record_vt</item>+      <item>$tup</item>+      <item>$tup_t</item>+      <item>$tup_vt</item>+      <item>$tuple</item>+      <item>$tuple_t</item>+      <item>$tuple_vt</item>+      <item>$raise</item>+      <item>$showtype</item>+      <item>$myfilename</item>+      <item>$mylocation</item>+      <item>$myfunction</item>+      <item>#assert</item>+      <item>#define</item>+      <item>#elif</item>+      <item>#elifdef</item>+      <item>#elifndef</item>+      <item>#else</item>+      <item>#endif</item>+      <item>#error</item>+      <item>#if</item>+      <item>#ifdef</item>+      <item>#ifndef</item>+      <item>#include</item>+      <item>#print</item>+      <item>#then</item>+      <item>#undef</item>     </list>     <list name="function keywords">-      <item> fn </item>-      <item> fnx </item>-      <item> fun </item>-      <item> prfn </item>-      <item> prfun </item>-      <item> praxi </item>-      <item> castfn </item>-      <item> implmnt </item>-      <item> implement </item>-      <item> primplmnt </item>-      <item> primplement </item>-      <item> lam </item>-      <item> llam </item>-      <item> fix </item>+      <item>fn</item>+      <item>fnx</item>+      <item>fun</item>+      <item>prfn</item>+      <item>prfun</item>+      <item>praxi</item>+      <item>castfn</item>+      <item>implmnt</item>+      <item>implement</item>+      <item>primplmnt</item>+      <item>primplement</item>+      <item>lam</item>+      <item>llam</item>+      <item>fix</item>     </list>     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">@@ -190,28 +190,27 @@         <!-- Support for nested comments -->         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="Multiline C-style Comment">         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment"/>--      <context attribute="String" lineEndContext="#stay" name="String Context">-        <DetectChar attribute="String" context="#pop" char="&quot;" />-        <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;" />-        <!-- An underscore at the end of a line in a string indicates  -->-        <!-- that the string will continue on the next line.           -->-        <RegExpr attribute="Escaped characters" context="#stay" String="\\$" />+      <context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment">+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Termination Metrics" lineEndContext="#stay" name="Termination Metrics Context">         <Detect2Chars attribute="Termination Metrics" context="#pop" char="&gt;" char1="." />       </context> -      <context attribute="Normal text" lineEndContext="#stay" name="Function Keyword Context">-        <DetectChar attribute="Normal text" context="#pop" char="=" />-	<DetectChar attribute="Universal" context="Universal Context" char="{" />-	<DetectChar attribute="Existential" context="Existential Context" char="[" />+      <context attribute="Normal Text" lineEndContext="#stay" name="Function Keyword Context">+        <DetectChar attribute="Normal Text" context="#pop" char="=" />+        <DetectChar attribute="Universal" context="Universal Context" char="{" />+        <DetectChar attribute="Existential" context="Existential Context" char="[" />         <IncludeRules context="Normal"/>       </context> @@ -236,8 +235,6 @@       <itemData name="Decimal"  defStyleNum="dsDecVal"/>       <itemData name="Hexadecimal"  defStyleNum="dsBaseN"/>       <itemData name="Float"  defStyleNum="dsFloat"/>-      <itemData name="Character"  defStyleNum="dsChar"/>-      <itemData name="String"  defStyleNum="dsString"/>       <itemData name="Comment"  defStyleNum="dsComment"/>       <itemData name="Constructor" defStyleNum="dsDataType"/>     </itemDatas>@@ -247,9 +244,7 @@     <keywords casesensitive="1" />     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="(*" end="*)" />-      <comment name="multiLine" start="/*" end="*/" />-      <comment name="multiLine" start="////" end="" />+      <comment name="multiLine" start="(*" end="*)" region="comment" />     </comments>   </general> </language>
syntax/awk.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="AWK" version="3" kateversion="5.0" section="Scripts"+<language name="AWK" version="4" kateversion="5.0" section="Scripts"   extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"   license="LGPL"> <!-- patched by igli#kate@irc:chat.freenode.net -->@@ -134,128 +134,129 @@       <item>xdigit</item>     </list> -<contexts>-<!-- START CONTEXTS -->-<context name="Pattern" attribute="Normal" lineEndContext="#stay">-	<DetectSpaces />-	<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />-	<DetectChar char="}" attribute="Error" context="#stay"/>-	<DetectChar char="/" attribute="Regex Op" firstNonSpace="true" context="Regex"/>-	<IncludeRules context="base" />-	<keyword String="special" attribute="Special" context="#stay"/>-</context>+    <contexts>+      <!-- START CONTEXTS -->+      <context name="Pattern" attribute="Normal" lineEndContext="#stay">+        <DetectSpaces />+        <DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />+        <DetectChar char="}" attribute="Error" context="#stay"/>+        <DetectChar char="/" attribute="Regex Op" firstNonSpace="true" context="Regex"/>+        <IncludeRules context="base" />+        <keyword String="special" attribute="Special" context="#stay"/>+      </context> -<context name="Block" attribute="Normal" lineEndContext="#stay">-	<DetectSpaces />-	<DetectChar char="}" attribute="Symbol" context="#pop" endRegion="block" />-	<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />-	<IncludeRules context="base" />-	<keyword String="special" attribute="Error" context="#stay"/>-</context>+      <context name="Block" attribute="Normal" lineEndContext="#stay">+        <DetectSpaces />+        <DetectChar char="}" attribute="Symbol" context="#pop" endRegion="block" />+        <DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />+        <IncludeRules context="base" />+        <keyword String="special" attribute="Error" context="#stay"/>+      </context> -<context name="base" attribute="Normal" lineEndContext="#stay">-	<DetectChar char=")" attribute="Symbol" context="#stay"/>-	<DetectChar char="(" attribute="Symbol" context="Match"/>-	<AnyChar String="=~" attribute="Operator" context="Match"/>-	<DetectChar char="," attribute="Separator Symbol" context="ArgSep"/>-	<DetectChar char="&quot;" attribute="String" context="String"/>-	<DetectChar char="#" attribute="Comment" context="Comment"/>-	<AnyChar String="@!%&amp;*+-/:&lt;&gt;?^|" attribute="Operator" context="#stay"/>-	<keyword String="controlflow" attribute="ControlFlow" context="#stay"/>-	<keyword String="keywords" attribute="Keyword" context="#stay"/>-	<keyword String="builtins" attribute="Builtin" context="#stay"/>-	<keyword String="functions" attribute="Function" context="#stay"/>-	<Float attribute="Float"   context="#stay"/>-	<Int   attribute="Decimal" context="#stay"/>-	<RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>-	<DetectChar char=";" attribute="Separator Symbol" context="#stay"/>-</context>+      <context name="base" attribute="Normal" lineEndContext="#stay">+        <DetectChar char=")" attribute="Symbol" context="#stay"/>+        <DetectChar char="(" attribute="Symbol" context="Match"/>+        <AnyChar String="=~" attribute="Operator" context="Match"/>+        <DetectChar char="," attribute="Separator Symbol" context="ArgSep"/>+        <DetectChar char="&quot;" attribute="String" context="String"/>+        <DetectChar char="#" attribute="Comment" context="Comment"/>+        <AnyChar String="@!%&amp;*+-/:&lt;&gt;?^|" attribute="Operator" context="#stay"/>+        <keyword String="controlflow" attribute="ControlFlow" context="#stay"/>+        <keyword String="keywords" attribute="Keyword" context="#stay"/>+        <keyword String="builtins" attribute="Builtin" context="#stay"/>+        <keyword String="functions" attribute="Function" context="#stay"/>+        <Float attribute="Float"   context="#stay"/>+        <Int   attribute="Decimal" context="#stay"/>+        <RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>+        <DetectChar char=";" attribute="Separator Symbol" context="#stay"/>+      </context> -<context name="ArgSep" attribute="Normal" lineEndContext="#stay"-   fallthrough="true" fallthroughContext="#pop">-	<IncludeRules context="Match" />-</context>+      <context name="ArgSep" attribute="Normal" lineEndContext="#stay"+        fallthrough="true" fallthroughContext="#pop">+        <IncludeRules context="Match" />+      </context> -<context name="String" attribute="String" lineEndContext="#stay">-	<DetectChar char="&quot;" attribute="String" context="#pop"/>-	<DetectChar char="\" context="Escape" attribute="Escape"/>-</context>+      <context name="String" attribute="String" lineEndContext="#stay">+        <DetectChar char="&quot;" attribute="String" context="#pop"/>+        <DetectChar char="\" context="Escape" attribute="Escape"/>+      </context> -<context name="Comment" attribute="Comment" lineEndContext="#pop">-	<IncludeRules context="##Alerts"/>-</context>+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context> -<context name="Escape" attribute="Error" lineEndContext="#pop">-	<RegExpr String="[\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>-	<RegExpr String="." attribute="Error" context="#pop"/>-</context>+      <context name="Escape" attribute="Error" lineEndContext="#pop">+        <RegExpr String="[\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>+        <RegExpr String="." attribute="Error" context="#pop"/>+      </context> -<context name="Match" attribute="Normal" lineEndContext="#pop"-   fallthrough="true" fallthroughContext="#pop">-	<DetectSpaces />-	<DetectChar char="/" attribute="Regex Op" context="#pop!Regex"/>-</context>+      <context name="Match" attribute="Normal" lineEndContext="#pop"+        fallthrough="true" fallthroughContext="#pop">+        <DetectSpaces />+        <DetectChar char="/" attribute="Regex Op" context="#pop!Regex"/>+      </context> -<context name="Regex" attribute="Regex" lineEndContext="#pop">-	<IncludeRules context="regex"/>-	<DetectChar char="/" context="#pop" attribute="Regex Op"/>-</context>+      <context name="Regex" attribute="Regex" lineEndContext="#pop">+        <IncludeRules context="regex"/>+        <DetectChar char="/" context="#pop" attribute="Regex Op"/>+      </context> -<context name="regex" attribute="Normal" lineEndContext="#stay">-	<Detect2Chars char="[" char1="^" context="RegexChar" attribute="Regex Op"/>-	<DetectChar char="[" context="RegexChar" attribute="Regex Op"/>-	<AnyChar String="^$.+?*()|" context="#stay" attribute="Regex Op"/>-	<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>-</context>+      <context name="regex" attribute="Normal" lineEndContext="#stay">+        <Detect2Chars char="[" char1="^" context="RegexChar" attribute="Regex Op"/>+        <DetectChar char="[" context="RegexChar" attribute="Regex Op"/>+        <AnyChar String="^$.+?*()|" context="#stay" attribute="Regex Op"/>+        <DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>+      </context> -<context name="Regex Escape" attribute="Normal" lineEndContext="#pop">-	<RegExpr String="[&lt;&gt;sSwW`'[\]{}^$.+?*()|/\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>-	<RegExpr String="." attribute="Regex" context="#pop"/>-</context>+      <context name="Regex Escape" attribute="Normal" lineEndContext="#pop">+        <RegExpr String="[&lt;&gt;sSwW`'[\]{}^$.+?*()|/\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>+        <RegExpr String="." attribute="Regex" context="#pop"/>+      </context> -<context name="RegexChar" attribute="Regex" lineEndContext="#pop"-   fallthrough="true" fallthroughContext="InChar">-	<AnyChar String="-]" context="InChar" attribute="Regex"/>-</context>+      <context name="RegexChar" attribute="Regex" lineEndContext="#pop"+        fallthrough="true" fallthroughContext="InChar">+        <AnyChar String="-]" context="InChar" attribute="Regex"/>+      </context> -<context name="InChar" attribute="Regex" lineEndContext="#pop#pop">-	<Detect2Chars char="-" char1="]" context="InCharEnd" attribute="Regex" lookAhead="true"/>-	<DetectChar char="-" context="#stay" attribute="Regex Op"/>-	<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>-	<DetectChar char="[" context="CharClassSelect" attribute="Regex" lookAhead="true"/>-	<DetectChar char="]" context="#pop#pop" attribute="Regex Op"/>-</context>+      <context name="InChar" attribute="Regex" lineEndContext="#pop#pop">+        <Detect2Chars char="-" char1="]" context="InCharEnd" attribute="Regex" lookAhead="true"/>+        <DetectChar char="-" context="#stay" attribute="Regex Op"/>+        <DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>+        <DetectChar char="[" context="CharClassSelect" attribute="Regex" lookAhead="true"/>+        <DetectChar char="]" context="#pop#pop" attribute="Regex Op"/>+      </context> -<context name="InCharEnd" attribute="Regex Op" lineEndContext="#stay">-	<DetectChar char="-" context="#stay" attribute="Regex"/>-	<DetectChar char="]" context="#pop#pop#pop" attribute="Regex Op"/>-</context>+      <context name="InCharEnd" attribute="Regex Op" lineEndContext="#stay">+        <DetectChar char="-" context="#stay" attribute="Regex"/>+        <DetectChar char="]" context="#pop#pop#pop" attribute="Regex Op"/>+      </context> -<context name="CharClassSelect" attribute="Custom" lineEndContext="#pop#pop#pop#pop">-	<Detect2Chars char="[" char1=":" context="#pop!CharClass" attribute="CharClass"/>-	<Detect2Chars char="[" char1="." context="#pop!CollatingSymbols" attribute="CharClass"/>-	<Detect2Chars char="[" char1="=" context="#pop!EquivalenceClass" attribute="CharClass"/>-	<DetectChar char="[" context="#pop" attribute="Regex"/>-</context>+      <context name="CharClassSelect" attribute="Custom" lineEndContext="#pop#pop#pop#pop">+        <Detect2Chars char="[" char1=":" context="#pop!CharClass" attribute="CharClass"/>+        <Detect2Chars char="[" char1="." context="#pop!CollatingSymbols" attribute="CharClass"/>+        <Detect2Chars char="[" char1="=" context="#pop!EquivalenceClass" attribute="CharClass"/>+        <DetectChar char="[" context="#pop" attribute="Regex"/>+      </context> -<context name="CharClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">-	<keyword String="charclass" attribute="CharClass" context="#stay"/>-	<Detect2Chars char=":" char1="]" attribute="CharClass" context="#pop"/>-	<DetectChar char="]" attribute="Error" context="#pop"/>-</context>+      <context name="CharClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">+        <keyword String="charclass" attribute="CharClass" context="#stay"/>+        <Detect2Chars char=":" char1="]" attribute="CharClass" context="#pop"/>+        <DetectChar char="]" attribute="Error" context="#pop"/>+      </context> -<context name="CollatingSymbols" attribute="Custom" lineEndContext="#pop#pop#pop#pop">-	<Detect2Chars char="." char1="]" attribute="CharClass" context="#pop"/>-	<DetectChar char="]" attribute="Error" context="#pop"/>-</context>+      <context name="CollatingSymbols" attribute="Custom" lineEndContext="#pop#pop#pop#pop">+        <Detect2Chars char="." char1="]" attribute="CharClass" context="#pop"/>+        <DetectChar char="]" attribute="Error" context="#pop"/>+      </context> -<context name="EquivalenceClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">-	<Detect2Chars char="=" char1="]" attribute="CharClass" context="#pop"/>-	<DetectChar char="]" attribute="Error" context="#pop"/>-</context>+      <context name="EquivalenceClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">+        <Detect2Chars char="=" char1="]" attribute="CharClass" context="#pop"/>+        <DetectChar char="]" attribute="Error" context="#pop"/>+      </context> -<!-- END OF CONTEXTS -->-</contexts>+      <!-- END OF CONTEXTS -->+  </contexts>     <itemDatas>       <itemData name="Normal"   defStyleNum="dsNormal"/>       <itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="false"/>@@ -286,3 +287,4 @@     <keywords casesensitive="1" weakDeliminator="@"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/bash.xml view
@@ -7,8 +7,9 @@         <!ENTITY eos      "(?=($|\s))">                 <!-- eol or space following -->         <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->+        <!ENTITY charbeforecomment "[\s;]">             <!-- character before a comment # --> ]>-<language name="Bash" version="9" kateversion="5.0" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">+<language name="Bash" version="11" kateversion="5.0" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">  <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)     Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)@@ -473,6 +474,9 @@       <!-- FindMost tries to interpret anything except commands -->       <context attribute="Normal Text" lineEndContext="#stay" name="FindMost">         <IncludeRules context="FindComments" />+        <IncludeRules context="FindMostWithoutComments" />+      </context>+      <context attribute="Normal Text" lineEndContext="#stay" name="FindMostWithoutComments">         <IncludeRules context="FindStrings" />         <IncludeRules context="FindSubstitutions" />         <IncludeRules context="FindOthers" />@@ -482,8 +486,14 @@       <!-- FindComments consumes shell comments till EOL -->       <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">         <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>-        <RegExpr attribute="Normal Text" context="Comment" String="\s*[\s;](?=#)" />+        <RegExpr attribute="Comment" context="Comment" String="(?&lt;=&charbeforecomment;)#" />       </context>+      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsInCommand">+        <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>+        <!-- NOTE: If a rule already matches a character of &charbeforecomment;+             (for example, in an escaped character), the comment will not be highlighted. -->+        <RegExpr attribute="Normal Text" context="Comment" String="&charbeforecomment;(?=#)" />+      </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment">         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />@@ -492,7 +502,7 @@       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->       <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen">         <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/>-        <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" />+        <RegExpr attribute="Normal Text" context="CommentParen" String="&charbeforecomment;(?=#)" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="CommentParen">         <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />@@ -502,7 +512,7 @@       <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->       <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq">         <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/>-        <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" />+        <RegExpr attribute="Normal Text" context="CommentBackq" String="&charbeforecomment;(?=#)" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">         <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />@@ -553,7 +563,8 @@         <!-- handle here document -->         <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />         <!-- handle process subst -->-        <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="(" />         <!-- handle redirection -->         <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />         <!-- handle &, &&, | and || -->@@ -567,13 +578,27 @@         <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'&quot;]|$))" />         <RegExpr attribute="OtherCommand" context="CommandArgs" String="/&pathpart;*(?=([\s);$`'&quot;]|$))" />         <!-- This list is not complete. ie, ":" is missing but as it is in bash completition. -->-        <RegExpr attribute="OtherCommand" context="CommandArgs" String="&pathpart;*" />+        <RegExpr attribute="OtherCommand" context="CommandArgsNormal" String="&pathpart;*" />       </context>        <!-- CommandArgs matches the items after a command -->       <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs">-        <LineContinue />+        <!-- In command arguments, do not allow comments after escaped characters.+             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->+        <!-- FindComments -->+        <RegExpr attribute="Control" context="#pop!Comment" String=";;?(?=#)" />+        <IncludeRules context="FindCommentsInCommand" />+        <IncludeRules context="FindMostWithoutComments" />+        <IncludeRules context="DefaultCommandArgs" />+      </context>+      <!-- CommandArgs but with normal comments -->+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgsNormal">         <IncludeRules context="FindMost" />+        <IncludeRules context="DefaultCommandArgs" />+      </context>++      <context attribute="Normal Text" lineEndContext="#pop" name="DefaultCommandArgs">+        <LineContinue />         <RegExpr attribute="Keyword" context="#stay" String="\\$" />         <!-- handle keywords -->         <RegExpr attribute="Option" context="#stay" String="\.(?=\s)" />@@ -582,10 +607,11 @@         <!-- handle here document -->         <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />         <!-- handle process subst -->-        <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="(" />         <!-- handle redirection -->         <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />-        <!-- handle &, &&, | and || -->+        <!-- handle &, &&, |, ||, ; and ;; -->         <RegExpr attribute="Control" context="#pop" String="([|&amp;;])\1?" />         <RegExpr attribute="Normal Text" context="#stay" String="[a-zA-Z_]+-[A-Za-z0-9_-]*" />         <RegExpr attribute="Option" context="#stay" String="-?-[a-zA-Z_][A-Za-z0-9_-]*" />
syntax/boo.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language> <!-- Based on Python syntax highlighting v1.99 by Primoz Anzur, Paul Giannaros, Michael Bueker, Per Wigren --> <!-- Also based on boo.lang from gtksourceview -->-<language name="Boo" version="3" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">+<language name="Boo" version="6" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL"> 	<highlighting> 		<list name="namespace"> 			<item>import</item>@@ -163,13 +163,15 @@ 				<RegExpr attribute="Hex" String="0[Xx][0-9a-fA-F]+" context="#stay"/> 				<RegExpr attribute="Octal" String="0[1-9][0-9]*" context="#stay"/> -				<RegExpr attribute="Raw String" String="[rR]'''" context="Raw Tripple A-string"/>-				<RegExpr attribute="Raw String" String="[rR]&quot;&quot;&quot;" context="Raw Tripple Q-string"/>+				<StringDetect attribute="Raw String" String="r'''" context="Raw Tripple A-string" insensitive="1"/>+				<StringDetect attribute="Raw String" String="r&quot;&quot;&quot;" context="Raw Tripple Q-string" insensitive="1"/> -				<RegExpr attribute="Raw String" String="[rR]'" context="Raw A-string"/>-				<RegExpr attribute="Raw String" String="[rR]&quot;" context="Raw Q-string"/>+				<Detect2Chars attribute="Raw String" char="r" char1="'" context="Raw A-string"/>+				<Detect2Chars attribute="Raw String" char="R" char1="'" context="Raw A-string"/>+				<Detect2Chars attribute="Raw String" char="r" char1="&quot;" context="Raw Q-string"/>+				<Detect2Chars attribute="Raw String" char="R" char1="&quot;" context="Raw Q-string"/> -				<RegExpr attribute="Comment" String="#.*$" context="#stay"/>+				<DetectChar attribute="Comment" char="#" context="Comment"/> 				<RegExpr attribute="Comment" String="^\s*u?'''" context="Tripple A-comment" beginRegion="Tripple A-region"/> 				<RegExpr attribute="Comment" String="^\s*u?&quot;&quot;&quot;" context="Tripple Q-comment" beginRegion="Tripple Q-region"/> 				<Detect2Chars attribute="Comment" char="/" char1="/" context="Comment SlashSlash"/>@@ -185,7 +187,7 @@ 				<StringDetect attribute="Operator" String="[|" context="Quasi-Quotation" beginRegion="qq"/> 				<StringDetect attribute="Operator" String="|]" context="#pop" endRegion="qq"/> -				<RegExpr attribute="Operator" String="[+*/%\|=;\!&lt;&gt;!^&amp;~-]" context="#stay"/>+				<AnyChar attribute="Operator" String="+*/%|=;!&lt;&gt;!^&amp;~-" context="#stay"/> 				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/> 			</context> @@ -199,11 +201,13 @@  			<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>+				<IncludeRules context="##Alerts"/> 			</context>  			<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<HlCChar attribute="Comment" context="#stay"/> 				<RegExpr attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>+				<IncludeRules context="##Alerts"/> 			</context>  			<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">@@ -236,6 +240,8 @@  			<context name="Comment SlashSlash" attribute="Comment" lineEndContext="#pop" > 				<LineContinue attribute="Comment" context="#stay"/>+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/> 			</context>  			<context name="Single A-string" attribute="String" lineEndContext="#stay">@@ -265,6 +271,11 @@ 				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/> 				<DetectChar attribute="Raw String" char="&quot;" context="#pop"/> 			</context>++			<context name="Comment" attribute="Comment" lineEndContext="#pop">+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/>+			</context> 		</contexts>  @@ -293,8 +304,8 @@ 	<general> 		<folding indentationsensitive="1" /> 		<emptyLines>-			<emptyLine regexpr="\s+" casesensitive="false"/>-			<emptyLine regexpr="\s*#.*$" casesensitive="false"/>+			<emptyLine regexpr="\s+"/>+			<emptyLine regexpr="\s*#.*$"/> 		</emptyLines> 		<comments> 			<comment name="singleLine" start="#" position="afterwhitespace"/>@@ -302,3 +313,4 @@ 		<keywords casesensitive="1" /> 	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/c.xml view
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-    <!ENTITY int "(?:[0-9](?:'?[0-9]+)*)">-    <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]+)*)">+    <!ENTITY int "(?:[0-9]++)">+    <!ENTITY hex_int "(?:[0-9A-Fa-f]++)">     <!ENTITY exp_float "(?:[eE][+-]?&int;)">     <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)"> @@ -10,7 +10,7 @@     <!ENTITY pphash "&ispphash;\s*"> ]> <language name="C" section="Sources"-          version="7" kateversion="5.0"+          version="11" kateversion="5.0"           indenter="cstyle"           extensions="*.c;*.C;*.h"           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"@@ -119,10 +119,8 @@     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">         <DetectSpaces />-	<RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />+        <RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />         <RegExpr context="AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />         <keyword attribute="Control Flow" context="#stay" String="controlflow"/>         <keyword attribute="Keyword" context="#stay" String="keywords"/>         <keyword attribute="Data Type" context="#stay" String="types"/>@@ -137,9 +135,7 @@          <HlCChar attribute="Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>       </context> @@ -149,17 +145,32 @@         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context> +      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />+      </context>++      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />+      </context>+       <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">       </context>        <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">         <LineContinue attribute="Comment" context="#stay"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Error" lineEndContext="#pop" name="AfterHash">@@ -187,27 +198,19 @@        <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">         <LineContinue attribute="Preprocessor" context="#stay"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/" />+        <IncludeRules context="FindComments" />       </context>        <context attribute="Preprocessor" lineEndContext="#pop" name="Define">         <LineContinue attribute="Preprocessor" context="#stay"/>       </context> -      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />-      </context>-       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >         <DetectSpaces />         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />         <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if)" firstNonSpace="true" />         <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />@@ -218,24 +221,22 @@         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />         <RegExpr attribute="Comment" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />       </context>        <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">-        <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|&int;(?:&exp_float;|\.&int;?&exp_float;?)|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))" />+        <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />         <IncludeRules context="Integer" />       </context>        <context name="Integer" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">         <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />-        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]+)*" />-        <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]+)+" />-        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9](?:'?[0-9]+)*" />-        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']+" />+        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01]++" />+        <RegExpr attribute="Octal" context="IntSuffix" String="0[0-7]++" />+        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9][0-9]*+" />+        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />       </context>        <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">@@ -280,8 +281,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" additionalDeliminator="'&quot;" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/clojure.xml view
@@ -22,7 +22,7 @@  * Boston, MA  02110-1301, USA.                                       *  **********************************************************************  -->-<language version="10" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">+<language version="12" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">   <highlighting>     <list name="definitions">       <item>def</item>@@ -741,13 +741,14 @@         <DetectChar attribute="Brackets1" context="Level1" char="("/>       </context>       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">-            <StringDetect attribute="Float" context="#pop" String="M" insensitive="false"/>+        <StringDetect attribute="Float" context="#pop" String="M" insensitive="false"/>       </context>       <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">-            <StringDetect attribute="Decimal" context="#pop" String="N" insensitive="false"/>+        <StringDetect attribute="Decimal" context="#pop" String="N" insensitive="false"/>       </context>       <context name="Comment" attribute="Comment" lineEndContext="#pop">-        <RegExpr String="(FIXME|TODO):?" attribute="Alert" context="#stay"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context name="function_decl_documentable" attribute="Function" lineEndContext="#stay">         <RegExpr attribute="Function" context="#pop!DocumentationPossible" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*!\?']*\s*"/>@@ -859,19 +860,18 @@       <itemData name="Regexpr" defStyleNum="dsSpecialString"/>       <itemData name="Comment" defStyleNum="dsComment"/>       <itemData name="Documentation" defStyleNum="dsDocumentation"/>-      <itemData name="Alert" defStyleNum="dsAlert" spellChecking="false"/>       <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>       <itemData name="Readermacro" defStyleNum="dsPreprocessor"/>       <itemData name="BracketsSet" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00"/>       <itemData name="BracketsMeta" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>-      <itemData name="BracketsMap" defStyleNum="dsNormal" color="#206620" selColor="#219921"/>+      <itemData name="BracketsMap" defStyleNum="dsNormal" color="#33ab33" selColor="#219921"/>       <itemData name="BracketsSquare" defStyleNum="dsNormal" color="#3333ff" selColor="#3333aa"/>       <itemData name="Brackets1" defStyleNum="dsNormal" color="#ff0000" selColor="#ffaa00" bold="0" italic="0"/>       <itemData name="Brackets2" defStyleNum="dsNormal" color="#ff8800" selColor="#ffff00" bold="0" italic="0"/>       <itemData name="Brackets3" defStyleNum="dsNormal" color="#888800" selColor="#888888" bold="0" italic="0"/>-      <itemData name="Brackets4" defStyleNum="dsNormal" color="#008800" selColor="#000000" bold="0" italic="0"/>-      <itemData name="Brackets5" defStyleNum="dsNormal" color="#000088" selColor="#000000" bold="0" italic="0"/>-      <itemData name="Brackets6" defStyleNum="dsNormal" color="#880088" selColor="#000000" bold="0" italic="0"/>+      <itemData name="Brackets4" defStyleNum="dsNormal" color="#008800" bold="0" italic="0"/>+      <itemData name="Brackets5" defStyleNum="dsNormal" color="#3689e6" bold="0" italic="0"/>+      <itemData name="Brackets6" defStyleNum="dsNormal" color="#a100a1" bold="0" italic="0"/>     </itemDatas>   </highlighting>   <general>@@ -881,3 +881,4 @@     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/cmake.xml view
@@ -4,35 +4,20 @@   <!ENTITY id_re "[_A-Za-z][\-_0-9A-Za-z]*"> ]> <!---  This file is part of KDE's kate project.+    This file is part of KDE's kate project. -  Copyright 2004 Alexander Neundorf (neundorf@kde.org)-  Copyright 2005 Dominik Haumann (dhdev@gmx.de)-  Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net)-  Copyright 2013-2015,2017-2019 Alex Turbov (i.zaufi@gmail.com)+    SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>+    SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>+    SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>+    SPDX-FileCopyrightText: 2013-2015, 2017-2020 Alex Turbov <i.zaufi@gmail.com> - **********************************************************************- * This library is free software; you can redistribute it and/or      *- * modify it under the terms of the GNU Lesser General Public         *- * License as published by the Free Software Foundation; either       *- * version 2 of the License, or (at your option) any later version.   *- *                                                                    *- * This library is distributed in the hope that it will be useful,    *- * but WITHOUT ANY WARRANTY; without even the implied warranty of     *- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *- * Lesser General Public License for more details.                    *- *                                                                    *- * You should have received a copy of the GNU Lesser General Public   *- * License along with this library; if not, write to the              *- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *- * Boston, MA  02110-1301, USA.                                       *- **********************************************************************+    SPDX-License-Identifier: LGPL-2.0-or-later  -->  <language     name="CMake"-    version="19"-    kateversion="2.4"+    version="25"+    kateversion="5.0"     section="Other"     extensions="CMakeLists.txt;*.cmake;*.cmake.in"     style="CMake"@@ -45,6 +30,7 @@     <list name="commands">         <item>break</item>         <item>cmake_host_system_information</item>+        <item>cmake_language</item>         <item>cmake_minimum_required</item>         <item>cmake_parse_arguments</item>         <item>cmake_policy</item>@@ -185,6 +171,11 @@       <item>TOTAL_PHYSICAL_MEMORY</item>       <item>TOTAL_VIRTUAL_MEMORY</item>     </list>+    <list name="cmake_language_nargs">+      <item>CALL</item>+      <item>CODE</item>+      <item>EVAL</item>+    </list>     <list name="cmake_minimum_required_nargs">       <item>FATAL_ERROR</item>       <item>VERSION</item>@@ -218,6 +209,7 @@     </list>     <list name="elseif_nargs">       <item>AND</item>+      <item>COMMAND</item>       <item>DEFINED</item>       <item>EQUAL</item>       <item>EXISTS</item>@@ -250,6 +242,8 @@     <list name="execute_process_nargs">       <item>COMMAND</item>       <item>COMMAND_ECHO</item>+      <item>ECHO_ERROR_VARIABLE</item>+      <item>ECHO_OUTPUT_VARIABLE</item>       <item>ENCODING</item>       <item>ERROR_FILE</item>       <item>ERROR_QUIET</item>@@ -275,8 +269,12 @@       <item>UTF8</item>     </list>     <list name="file_nargs">+      <item>@ONLY</item>       <item>APPEND</item>+      <item>ARCHIVE_CREATE</item>+      <item>ARCHIVE_EXTRACT</item>       <item>CONDITION</item>+      <item>CONFIGURE</item>       <item>CONFIGURE_DEPENDS</item>       <item>CONTENT</item>       <item>COPY</item>@@ -285,13 +283,16 @@       <item>DIRECTORY_PERMISSIONS</item>       <item>DOWNLOAD</item>       <item>ENCODING</item>+      <item>ESCAPE_QUOTES</item>       <item>EXCLUDE</item>       <item>EXPECTED_HASH</item>       <item>EXPECTED_MD5</item>+      <item>FILES</item>       <item>FILES_MATCHING</item>       <item>FILE_PERMISSIONS</item>       <item>FOLLOW_SYMLINKS</item>       <item>FOLLOW_SYMLINK_CHAIN</item>+      <item>FORMAT</item>       <item>GENERATE</item>       <item>GET_RUNTIME_DEPENDENCIES</item>       <item>GLOB</item>@@ -309,13 +310,16 @@       <item>LIMIT_INPUT</item>       <item>LIMIT_OUTPUT</item>       <item>LIST_DIRECTORIES</item>+      <item>LIST_ONLY</item>       <item>LOCK</item>       <item>LOG</item>       <item>MAKE_DIRECTORY</item>       <item>MD5</item>+      <item>MTIME</item>       <item>NETRC</item>       <item>NETRC_FILE</item>       <item>NEWLINE_CONSUME</item>+      <item>NEWLINE_STYLE</item>       <item>NO_HEX_CONVERSION</item>       <item>NO_SOURCE_PERMISSIONS</item>       <item>OFFSET</item>@@ -353,19 +357,28 @@       <item>TOUCH_NOCREATE</item>       <item>TO_CMAKE_PATH</item>       <item>TO_NATIVE_PATH</item>+      <item>TYPE</item>       <item>UPLOAD</item>       <item>USERPWD</item>       <item>USE_SOURCE_PERMISSIONS</item>       <item>UTC</item>+      <item>VERBOSE</item>       <item>WRITE</item>     </list>     <list name="file_sargs">+      <item>7zip</item>+      <item>BZip2</item>+      <item>CRLF</item>+      <item>DOS</item>       <item>FILE</item>       <item>FUNCTION</item>       <item>GROUP_EXECUTE</item>       <item>GROUP_READ</item>       <item>GROUP_WRITE</item>+      <item>GZip</item>       <item>IGNORED</item>+      <item>LF</item>+      <item>None</item>       <item>OPTIONAL</item>       <item>OWNER_EXECUTE</item>       <item>OWNER_READ</item>@@ -374,14 +387,23 @@       <item>REQUIRED</item>       <item>SETGID</item>       <item>SETUID</item>+      <item>UNIX</item>       <item>UTF-16BE</item>       <item>UTF-16LE</item>       <item>UTF-32B</item>       <item>UTF-32LE</item>       <item>UTF-8</item>+      <item>WIN32</item>       <item>WORLD_EXECUTE</item>       <item>WORLD_READ</item>       <item>WORLD_WRITE</item>+      <item>XZ</item>+      <item>Zstd</item>+      <item>gnutar</item>+      <item>pax</item>+      <item>paxr</item>+      <item>raw</item>+      <item>zip</item>     </list>     <list name="find_file_nargs">       <item>CMAKE_FIND_ROOT_PATH_BOTH</item>@@ -398,6 +420,7 @@       <item>ONLY_CMAKE_FIND_ROOT_PATH</item>       <item>PATHS</item>       <item>PATH_SUFFIXES</item>+      <item>REQUIRED</item>     </list>     <list name="find_library_nargs">       <item>CMAKE_FIND_ROOT_PATH_BOTH</item>@@ -415,6 +438,7 @@       <item>ONLY_CMAKE_FIND_ROOT_PATH</item>       <item>PATHS</item>       <item>PATH_SUFFIXES</item>+      <item>REQUIRED</item>     </list>     <list name="find_package_nargs">       <item>CMAKE_FIND_ROOT_PATH_BOTH</item>@@ -458,6 +482,7 @@       <item>ONLY_CMAKE_FIND_ROOT_PATH</item>       <item>PATHS</item>       <item>PATH_SUFFIXES</item>+      <item>REQUIRED</item>     </list>     <list name="find_program_nargs">       <item>CMAKE_FIND_ROOT_PATH_BOTH</item>@@ -475,12 +500,14 @@       <item>ONLY_CMAKE_FIND_ROOT_PATH</item>       <item>PATHS</item>       <item>PATH_SUFFIXES</item>+      <item>REQUIRED</item>     </list>     <list name="foreach_nargs">       <item>IN</item>       <item>ITEMS</item>       <item>LISTS</item>       <item>RANGE</item>+      <item>ZIP_LISTS</item>     </list>     <list name="get_cmake_property_sargs">       <item>CACHE_VARIABLES</item>@@ -520,11 +547,13 @@       <item>SET</item>       <item>SOURCE</item>       <item>TARGET</item>+      <item>TARGET_DIRECTORY</item>       <item>TEST</item>       <item>VARIABLE</item>     </list>     <list name="if_nargs">       <item>AND</item>+      <item>COMMAND</item>       <item>DEFINED</item>       <item>EQUAL</item>       <item>EXISTS</item>@@ -600,6 +629,7 @@       <item>DESCENDING</item>       <item>FILE_BASENAME</item>       <item>INSENSITIVE</item>+      <item>NATURAL</item>       <item>SENSITIVE</item>       <item>STRING</item>     </list>@@ -617,6 +647,9 @@     </list>     <list name="message_nargs">       <item>AUTHOR_WARNING</item>+      <item>CHECK_FAIL</item>+      <item>CHECK_PASS</item>+      <item>CHECK_START</item>       <item>DEBUG</item>       <item>DEPRECATION</item>       <item>FATAL_ERROR</item>@@ -645,6 +678,7 @@       <item>PROPERTY</item>       <item>SOURCE</item>       <item>TARGET</item>+      <item>TARGET_DIRECTORY</item>       <item>TEST</item>       <item>VARIABLE</item>     </list>@@ -675,6 +709,7 @@       <item>GENEX_STRIP</item>       <item>GREATER</item>       <item>GREATER_EQUAL</item>+      <item>HEX</item>       <item>JOIN</item>       <item>LENGTH</item>       <item>LESS</item>@@ -718,6 +753,7 @@     </list>     <list name="while_nargs">       <item>AND</item>+      <item>COMMAND</item>       <item>DEFINED</item>       <item>EQUAL</item>       <item>EXISTS</item>@@ -862,6 +898,10 @@       <item>NAMESPACE</item>       <item>TARGETS</item>     </list>+    <list name="get_source_file_property_nargs">+      <item>DIRECTORY</item>+      <item>TARGET_DIRECTORY</item>+    </list>     <list name="include_directories_nargs">       <item>AFTER</item>       <item>BEFORE</item>@@ -964,7 +1004,9 @@       <item>Swift</item>     </list>     <list name="set_source_files_properties_nargs">+      <item>DIRECTORY</item>       <item>PROPERTIES</item>+      <item>TARGET_DIRECTORY</item>     </list>     <list name="set_target_properties_nargs">       <item>PROPERTIES</item>@@ -996,6 +1038,11 @@       <item>c_std_90</item>       <item>c_std_99</item>       <item>c_variadic_macros</item>+      <item>cuda_std_03</item>+      <item>cuda_std_11</item>+      <item>cuda_std_14</item>+      <item>cuda_std_17</item>+      <item>cuda_std_20</item>       <item>cxx_aggregate_default_initializers</item>       <item>cxx_alias_templates</item>       <item>cxx_alignas</item>@@ -1208,13 +1255,20 @@       <item>INCLUDE_LABEL</item>       <item>PARALLEL_LEVEL</item>       <item>QUIET</item>+      <item>REPEAT</item>       <item>RETURN_VALUE</item>       <item>SCHEDULE_RANDOM</item>       <item>START</item>+      <item>STOP_ON_FAILURE</item>       <item>STOP_TIME</item>       <item>STRIDE</item>       <item>TEST_LOAD</item>     </list>+    <list name="ctest_test_sargs">+      <item>AFTER_TIMEOUT</item>+      <item>UNTIL_FAIL</item>+      <item>UNTIL_PASS</item>+    </list>     <list name="ctest_update_nargs">       <item>QUIET</item>       <item>RETURN_VALUE</item>@@ -1229,10 +1283,14 @@     <list name="variables">       <item>ANDROID</item>       <item>APPLE</item>+      <item>ARGC</item>+      <item>ARGN</item>+      <item>ARGV</item>       <item>BORLAND</item>       <item>BUILD_SHARED_LIBS</item>       <item>BUILD_TESTING</item>       <item>CMAKE_ABSOLUTE_DESTINATION_FILES</item>+      <item>CMAKE_AIX_EXPORT_ALL_SYMBOLS</item>       <item>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</item>       <item>CMAKE_ANDROID_API</item>       <item>CMAKE_ANDROID_API_MIN</item>@@ -1303,14 +1361,24 @@       <item>CMAKE_CONFIGURATION_TYPES</item>       <item>CMAKE_CROSSCOMPILING</item>       <item>CMAKE_CROSSCOMPILING_EMULATOR</item>+      <item>CMAKE_CROSS_CONFIGS</item>+      <item>CMAKE_CTEST_ARGUMENTS</item>       <item>CMAKE_CTEST_COMMAND</item>+      <item>CMAKE_CUDA_ARCHITECTURES</item>+      <item>CMAKE_CUDA_COMPILE_FEATURES</item>       <item>CMAKE_CUDA_EXTENSIONS</item>+      <item>CMAKE_CUDA_HOST_COMPILER</item>       <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>+      <item>CMAKE_CUDA_RUNTIME_LIBRARY</item>       <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item>       <item>CMAKE_CUDA_STANDARD</item>       <item>CMAKE_CUDA_STANDARD_REQUIRED</item>       <item>CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES</item>       <item>CMAKE_CURRENT_BINARY_DIR</item>+      <item>CMAKE_CURRENT_FUNCTION</item>+      <item>CMAKE_CURRENT_FUNCTION_LIST_DIR</item>+      <item>CMAKE_CURRENT_FUNCTION_LIST_FILE</item>+      <item>CMAKE_CURRENT_FUNCTION_LIST_LINE</item>       <item>CMAKE_CURRENT_LIST_DIR</item>       <item>CMAKE_CURRENT_LIST_FILE</item>       <item>CMAKE_CURRENT_LIST_LINE</item>@@ -1325,9 +1393,13 @@       <item>CMAKE_C_STANDARD_REQUIRED</item>       <item>CMAKE_DEBUG_POSTFIX</item>       <item>CMAKE_DEBUG_TARGET_PROPERTIES</item>+      <item>CMAKE_DEFAULT_BUILD_TYPE</item>+      <item>CMAKE_DEFAULT_CONFIGS</item>       <item>CMAKE_DEPENDS_IN_PROJECT_ONLY</item>       <item>CMAKE_DIRECTORY_LABELS</item>+      <item>CMAKE_DISABLE_PRECOMPILE_HEADERS</item>       <item>CMAKE_DL_LIBS</item>+      <item>CMAKE_DOTNET_TARGET_FRAMEWORK</item>       <item>CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION</item>       <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item>       <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item>@@ -1349,6 +1421,7 @@       <item>CMAKE_EXTRA_INCLUDE_FILES</item>       <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item>       <item>CMAKE_FIND_APPBUNDLE</item>+      <item>CMAKE_FIND_DEBUG_MODE</item>       <item>CMAKE_FIND_FRAMEWORK</item>       <item>CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS</item>       <item>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</item>@@ -1383,8 +1456,10 @@       <item>CMAKE_Fortran_MODDIR_FLAG</item>       <item>CMAKE_Fortran_MODOUT_FLAG</item>       <item>CMAKE_Fortran_MODULE_DIRECTORY</item>+      <item>CMAKE_Fortran_PREPROCESS</item>       <item>CMAKE_GENERATOR</item>       <item>CMAKE_GENERATOR_INSTANCE</item>+      <item>CMAKE_GENERATOR_NO_COMPILER_ENV</item>       <item>CMAKE_GENERATOR_PLATFORM</item>       <item>CMAKE_GENERATOR_TOOLSET</item>       <item>CMAKE_GLOBAL_AUTOGEN_TARGET</item>@@ -1393,7 +1468,6 @@       <item>CMAKE_GLOBAL_AUTORCC_TARGET_NAME</item>       <item>CMAKE_GNUtoMS</item>       <item>CMAKE_HAS_ANSI_STRING_STREAM</item>-      <item>CMAKE_HOME_DIRECTORY</item>       <item>CMAKE_HOST_APPLE</item>       <item>CMAKE_HOST_SOLARIS</item>       <item>CMAKE_HOST_SYSTEM</item>@@ -1462,7 +1536,6 @@       <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS</item>       <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP</item>       <item>CMAKE_INSTALL_UCRT_LIBRARIES</item>-      <item>CMAKE_INTERNAL_PLATFORM_ABI</item>       <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item>       <item>CMAKE_IOS_INSTALL_COMBINED</item>       <item>CMAKE_JOB_POOLS</item>@@ -1489,7 +1562,10 @@       <item>CMAKE_MAKE_PROGRAM</item>       <item>CMAKE_MATCH_COUNT</item>       <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>+      <item>CMAKE_MESSAGE_CONTEXT</item>+      <item>CMAKE_MESSAGE_CONTEXT_SHOW</item>       <item>CMAKE_MESSAGE_INDENT</item>+      <item>CMAKE_MESSAGE_LOG_LEVEL</item>       <item>CMAKE_MFC_FLAG</item>       <item>CMAKE_MINIMUM_REQUIRED_VERSION</item>       <item>CMAKE_MINOR_VERSION</item>@@ -1501,7 +1577,6 @@       <item>CMAKE_NETRC</item>       <item>CMAKE_NETRC_FILE</item>       <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item>-      <item>CMAKE_NOT_USING_CONFIG_FLAGS</item>       <item>CMAKE_NO_ANSI_FOR_SCOPE</item>       <item>CMAKE_NO_ANSI_STREAM_HEADERS</item>       <item>CMAKE_NO_ANSI_STRING_STREAM</item>@@ -1514,6 +1589,7 @@       <item>CMAKE_OSX_SYSROOT</item>       <item>CMAKE_PARENT_LIST_FILE</item>       <item>CMAKE_PATCH_VERSION</item>+      <item>CMAKE_PCH_WARN_INVALID</item>       <item>CMAKE_PDB_OUTPUT_DIRECTORY</item>       <item>CMAKE_POSITION_INDEPENDENT_CODE</item>       <item>CMAKE_PREFIX_PATH</item>@@ -1558,8 +1634,6 @@       <item>CMAKE_STATIC_LINKER_FLAGS_INIT</item>       <item>CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS</item>       <item>CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE</item>-      <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item>-      <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item>       <item>CMAKE_SUPPRESS_REGENERATION</item>       <item>CMAKE_SWIG_FLAGS</item>       <item>CMAKE_SWIG_OUTDIR</item>@@ -1600,7 +1674,6 @@       <item>CMAKE_VS_GLOBALS</item>       <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item>       <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item>-      <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>       <item>CMAKE_VS_JUST_MY_CODE_DEBUGGING</item>       <item>CMAKE_VS_MSBUILD_COMMAND</item>       <item>CMAKE_VS_NsightTegra_VERSION</item>@@ -1629,6 +1702,7 @@       <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>+      <item>CMAKE_XCODE_SCHEME_ENVIRONMENT</item>       <item>CMAKE_XCODE_SCHEME_GUARD_MALLOC</item>       <item>CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item>       <item>CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES</item>@@ -1638,10 +1712,12 @@       <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP</item>       <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>       <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>+      <item>CMAKE_XCODE_SCHEME_WORKING_DIRECTORY</item>       <item>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</item>       <item>CPACK_ABSOLUTE_DESTINATION_FILES</item>       <item>CPACK_ARCHIVE_COMPONENT_INSTALL</item>       <item>CPACK_ARCHIVE_FILE_NAME</item>+      <item>CPACK_ARCHIVE_THREADS</item>       <item>CPACK_BUILD_SOURCE_DIRS</item>       <item>CPACK_BUNDLE_APPLE_CERT_APP</item>       <item>CPACK_BUNDLE_APPLE_CODESIGN_FILES</item>@@ -1706,9 +1782,9 @@       <item>CPACK_DMG_SLA_LANGUAGES</item>       <item>CPACK_DMG_VOLUME_NAME</item>       <item>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>-      <item>CPACK_EXT_ENABLE_STAGING</item>-      <item>CPACK_EXT_PACKAGE_SCRIPT</item>-      <item>CPACK_EXT_REQUESTED_VERSIONS</item>+      <item>CPACK_EXTERNAL_ENABLE_STAGING</item>+      <item>CPACK_EXTERNAL_PACKAGE_SCRIPT</item>+      <item>CPACK_EXTERNAL_REQUESTED_VERSIONS</item>       <item>CPACK_GENERATOR</item>       <item>CPACK_IFW_ADMIN_TARGET_DIRECTORY</item>       <item>CPACK_IFW_BINARYCREATOR_EXECUTABLE</item>@@ -1752,7 +1828,6 @@       <item>CPACK_INSTALL_CMAKE_PROJECTS</item>       <item>CPACK_INSTALL_COMMANDS</item>       <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>-      <item>CPACK_INSTALL_SCRIPT</item>       <item>CPACK_INSTALL_SCRIPTS</item>       <item>CPACK_MONOLITHIC_INSTALL</item>       <item>CPACK_NSIS_COMPRESSOR</item>@@ -1765,19 +1840,26 @@       <item>CPACK_NSIS_EXTRA_INSTALL_COMMANDS</item>       <item>CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS</item>       <item>CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS</item>+      <item>CPACK_NSIS_FINISH_TITLE</item>+      <item>CPACK_NSIS_FINISH_TITLE_3LINES</item>       <item>CPACK_NSIS_HELP_LINK</item>       <item>CPACK_NSIS_INSTALLED_ICON_NAME</item>       <item>CPACK_NSIS_INSTALLER_MUI_ICON_CODE</item>       <item>CPACK_NSIS_INSTALL_ROOT</item>+      <item>CPACK_NSIS_MANIFEST_DPI_AWARE</item>       <item>CPACK_NSIS_MENU_LINKS</item>       <item>CPACK_NSIS_MODIFY_PATH</item>       <item>CPACK_NSIS_MUI_FINISHPAGE_RUN</item>+      <item>CPACK_NSIS_MUI_HEADERIMAGE</item>       <item>CPACK_NSIS_MUI_ICON</item>       <item>CPACK_NSIS_MUI_UNIICON</item>       <item>CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP</item>       <item>CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP</item>       <item>CPACK_NSIS_PACKAGE_NAME</item>+      <item>CPACK_NSIS_UNINSTALL_NAME</item>       <item>CPACK_NSIS_URL_INFO_ABOUT</item>+      <item>CPACK_NSIS_WELCOME_TITLE</item>+      <item>CPACK_NSIS_WELCOME_TITLE_3LINES</item>       <item>CPACK_NUGET_COMPONENT_INSTALL</item>       <item>CPACK_NUGET_PACKAGE_AUTHORS</item>       <item>CPACK_NUGET_PACKAGE_COPYRIGHT</item>@@ -1794,10 +1876,8 @@       <item>CPACK_NUGET_PACKAGE_TAGS</item>       <item>CPACK_NUGET_PACKAGE_TITLE</item>       <item>CPACK_NUGET_PACKAGE_VERSION</item>-      <item>CPACK_OSX_PACKAGE_VERSION</item>       <item>CPACK_OUTPUT_CONFIG_FILE</item>       <item>CPACK_PACKAGE_CHECKSUM</item>-      <item>CPACK_PACKAGE_CONTACT</item>       <item>CPACK_PACKAGE_DESCRIPTION</item>       <item>CPACK_PACKAGE_DESCRIPTION_FILE</item>       <item>CPACK_PACKAGE_DESCRIPTION_SUMMARY</item>@@ -1809,7 +1889,6 @@       <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item>       <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item>       <item>CPACK_PACKAGE_NAME</item>-      <item>CPACK_PACKAGE_RELOCATABLE</item>       <item>CPACK_PACKAGE_VENDOR</item>       <item>CPACK_PACKAGE_VERSION</item>       <item>CPACK_PACKAGE_VERSION_MAJOR</item>@@ -1818,6 +1897,16 @@       <item>CPACK_PACKAGING_INSTALL_PREFIX</item>       <item>CPACK_PKGBUILD_IDENTITY_NAME</item>       <item>CPACK_PKGBUILD_KEYCHAIN_PATH</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_SCALING</item>+      <item>CPACK_PRODUCTBUILD_BACKGROUND_UTI</item>       <item>CPACK_PRODUCTBUILD_IDENTITY_NAME</item>       <item>CPACK_PRODUCTBUILD_KEYCHAIN_PATH</item>       <item>CPACK_PRODUCTBUILD_RESOURCES_DIR</item>@@ -1875,8 +1964,10 @@       <item>CPACK_RPM_PACKAGE_VENDOR</item>       <item>CPACK_RPM_PACKAGE_VERSION</item>       <item>CPACK_RPM_POST_INSTALL_SCRIPT_FILE</item>+      <item>CPACK_RPM_POST_TRANS_SCRIPT_FILE</item>       <item>CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE</item>       <item>CPACK_RPM_PRE_INSTALL_SCRIPT_FILE</item>+      <item>CPACK_RPM_PRE_TRANS_SCRIPT_FILE</item>       <item>CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE</item>       <item>CPACK_RPM_RELOCATION_PATHS</item>       <item>CPACK_RPM_SOURCE_PKG_BUILD_PARAMS</item>@@ -1972,6 +2063,8 @@       <item>CTEST_P4_COMMAND</item>       <item>CTEST_P4_OPTIONS</item>       <item>CTEST_P4_UPDATE_OPTIONS</item>+      <item>CTEST_RESOURCE_SPEC_FILE</item>+      <item>CTEST_RUN_CURRENT_SCRIPT</item>       <item>CTEST_SCP_COMMAND</item>       <item>CTEST_SITE</item>       <item>CTEST_SOURCE_DIRECTORY</item>@@ -2069,12 +2162,28 @@       <item>XCODE_VERSION</item>     </list> +    <list name="deprecated-or-internal-variables">+      <item>CMAKE_HOME_DIRECTORY</item>+      <item>CMAKE_INTERNAL_PLATFORM_ABI</item>+      <item>CMAKE_NOT_USING_CONFIG_FLAGS</item>+      <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item>+      <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item>+      <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>+      <item>CPACK_INSTALL_PREFIX</item>+      <item>CPACK_INSTALL_SCRIPT</item>+      <item>CPACK_PACKAGE_CONTACT</item>+      <item>CPACK_PACKAGE_RELOCATABLE</item>+      <item>CPACK_TEMPORARY_DIRECTORY</item>+      <item>CPACK_TOPLEVEL_DIRECTORY</item>+    </list>+     <list name="environment-variables">       <item>CC</item>       <item>CFLAGS</item>       <item>CMAKE_APPBUNDLE_PATH</item>       <item>CMAKE_BUILD_PARALLEL_LEVEL</item>       <item>CMAKE_CONFIG_TYPE</item>+      <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>       <item>CMAKE_FRAMEWORK_PATH</item>       <item>CMAKE_GENERATOR</item>       <item>CMAKE_GENERATOR_INSTANCE</item>@@ -2114,6 +2223,7 @@       <item>AUTOMOC_SOURCE_GROUP</item>       <item>AUTOMOC_TARGETS_FOLDER</item>       <item>AUTORCC_SOURCE_GROUP</item>+      <item>CMAKE_CUDA_KNOWN_FEATURES</item>       <item>CMAKE_CXX_KNOWN_FEATURES</item>       <item>CMAKE_C_KNOWN_FEATURES</item>       <item>CMAKE_ROLE</item>@@ -2183,6 +2293,7 @@     </list>     <list name="target-properties">       <item>ADDITIONAL_CLEAN_FILES</item>+      <item>AIX_EXPORT_ALL_SYMBOLS</item>       <item>ALIASED_TARGET</item>       <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item>       <item>ANDROID_API</item>@@ -2239,9 +2350,11 @@       <item>COMPILE_PDB_NAME</item>       <item>COMPILE_PDB_OUTPUT_DIRECTORY</item>       <item>CROSSCOMPILING_EMULATOR</item>+      <item>CUDA_ARCHITECTURES</item>       <item>CUDA_EXTENSIONS</item>       <item>CUDA_PTX_COMPILATION</item>       <item>CUDA_RESOLVE_DEVICE_SYMBOLS</item>+      <item>CUDA_RUNTIME_LIBRARY</item>       <item>CUDA_SEPARABLE_COMPILATION</item>       <item>CUDA_STANDARD</item>       <item>CUDA_STANDARD_REQUIRED</item>@@ -2254,7 +2367,9 @@       <item>DEFINE_SYMBOL</item>       <item>DEPLOYMENT_ADDITIONAL_FILES</item>       <item>DEPLOYMENT_REMOTE_DIRECTORY</item>+      <item>DEPRECATION</item>       <item>DISABLE_PRECOMPILE_HEADERS</item>+      <item>DOTNET_TARGET_FRAMEWORK</item>       <item>DOTNET_TARGET_FRAMEWORK_VERSION</item>       <item>ENABLE_EXPORTS</item>       <item>EXCLUDE_FROM_ALL</item>@@ -2267,6 +2382,7 @@       <item>FRAMEWORK_VERSION</item>       <item>Fortran_FORMAT</item>       <item>Fortran_MODULE_DIRECTORY</item>+      <item>Fortran_PREPROCESS</item>       <item>GENERATOR_FILE_NAME</item>       <item>GNUtoMS</item>       <item>HAS_CXX</item>@@ -2325,6 +2441,8 @@       <item>LINK_SEARCH_START_STATIC</item>       <item>LINK_WHAT_YOU_USE</item>       <item>LOCATION</item>+      <item>MACHO_COMPATIBILITY_VERSION</item>+      <item>MACHO_CURRENT_VERSION</item>       <item>MACOSX_BUNDLE</item>       <item>MACOSX_BUNDLE_INFO_PLIST</item>       <item>MACOSX_FRAMEWORK_INFO_PLIST</item>@@ -2335,7 +2453,10 @@       <item>NO_SONAME</item>       <item>NO_SYSTEM_FROM_IMPORTED</item>       <item>OSX_ARCHITECTURES</item>+      <item>OSX_COMPATIBILITY_VERSION</item>+      <item>OSX_CURRENT_VERSION</item>       <item>OUTPUT_NAME</item>+      <item>PCH_WARN_INVALID</item>       <item>PDB_NAME</item>       <item>PDB_OUTPUT_DIRECTORY</item>       <item>POSITION_INDEPENDENT_CODE</item>@@ -2366,6 +2487,7 @@       <item>UNITY_BUILD_BATCH_SIZE</item>       <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item>       <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>+      <item>UNITY_BUILD_MODE</item>       <item>VERSION</item>       <item>VISIBILITY_INLINES_HIDDEN</item>       <item>VS_CONFIGURATION_TYPE</item>@@ -2374,6 +2496,7 @@       <item>VS_DEBUGGER_ENVIRONMENT</item>       <item>VS_DEBUGGER_WORKING_DIRECTORY</item>       <item>VS_DESKTOP_EXTENSIONS_VERSION</item>+      <item>VS_DOTNET_DOCUMENTATION_FILE</item>       <item>VS_DOTNET_REFERENCES</item>       <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item>       <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item>@@ -2388,12 +2511,14 @@       <item>VS_MOBILE_EXTENSIONS_VERSION</item>       <item>VS_NO_SOLUTION_DEPLOY</item>       <item>VS_PACKAGE_REFERENCES</item>+      <item>VS_PLATFORM_TOOLSET</item>       <item>VS_PROJECT_IMPORT</item>       <item>VS_SCC_AUXPATH</item>       <item>VS_SCC_LOCALPATH</item>       <item>VS_SCC_PROJECTNAME</item>       <item>VS_SCC_PROVIDER</item>       <item>VS_SDK_REFERENCES</item>+      <item>VS_SOLUTION_DEPLOY</item>       <item>VS_USER_PROPS</item>       <item>VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item>       <item>VS_WINRT_COMPONENT</item>@@ -2423,6 +2548,7 @@       <item>XCODE_SCHEME_THREAD_SANITIZER_STOP</item>       <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>       <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>+      <item>XCODE_SCHEME_WORKING_DIRECTORY</item>       <item>XCODE_SCHEME_ZOMBIE_OBJECTS</item>       <item>XCTEST</item>     </list>@@ -2435,6 +2561,7 @@       <item>COMPILE_OPTIONS</item>       <item>EXTERNAL_OBJECT</item>       <item>Fortran_FORMAT</item>+      <item>Fortran_PREPROCESS</item>       <item>GENERATED</item>       <item>HEADER_FILE_ONLY</item>       <item>INCLUDE_DIRECTORIES</item>@@ -2459,6 +2586,7 @@       <item>VS_DEPLOYMENT_LOCATION</item>       <item>VS_INCLUDE_IN_VSIX</item>       <item>VS_RESOURCE_GENERATOR</item>+      <item>VS_SETTINGS</item>       <item>VS_SHADER_DISABLE_OPTIMIZATIONS</item>       <item>VS_SHADER_ENABLE_DEBUG</item>       <item>VS_SHADER_ENTRYPOINT</item>@@ -2548,6 +2676,10 @@       <item>COMPILE_FEATURES</item>       <item>COMPILE_LANG_AND_ID</item>       <item>COMPILE_LANGUAGE</item>+      <item>LINK_LANG_AND_ID</item>+      <item>LINK_LANGUAGE</item>+      <item>DEVICE_LINK</item>+      <item>HOST_LINK</item>       <item>ANGLE-R</item>       <item>COMMA</item>       <item>SEMICOLON</item>@@ -2599,6 +2731,7 @@         <DetectSpaces/>         <WordDetect String="break" insensitive="true" attribute="Command" context="break_ctx" />         <WordDetect String="cmake_host_system_information" insensitive="true" attribute="Command" context="cmake_host_system_information_ctx" />+        <WordDetect String="cmake_language" insensitive="true" attribute="Command" context="cmake_language_ctx" />         <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx" />         <WordDetect String="cmake_parse_arguments" insensitive="true" attribute="Command" context="cmake_parse_arguments_ctx" />         <WordDetect String="cmake_policy" insensitive="true" attribute="Command" context="cmake_policy_ctx" />@@ -2606,11 +2739,11 @@         <WordDetect String="continue" insensitive="true" attribute="Command" context="continue_ctx" />         <WordDetect String="elseif" insensitive="true" attribute="Command" context="elseif_ctx" />         <WordDetect String="else" insensitive="true" attribute="Command" context="else_ctx" />-        <WordDetect String="endforeach" insensitive="true" attribute="Command" context="endforeach_ctx" />-        <WordDetect String="endfunction" insensitive="true" attribute="Command" context="endfunction_ctx" />-        <WordDetect String="endif" insensitive="true" attribute="Command" context="endif_ctx" />-        <WordDetect String="endmacro" insensitive="true" attribute="Command" context="endmacro_ctx" />-        <WordDetect String="endwhile" insensitive="true" attribute="Command" context="endwhile_ctx" />+        <WordDetect String="endforeach" insensitive="true" attribute="Command" context="endforeach_ctx" endRegion="foreach" />+        <WordDetect String="endfunction" insensitive="true" attribute="Command" context="endfunction_ctx" endRegion="function" />+        <WordDetect String="endif" insensitive="true" attribute="Command" context="endif_ctx" endRegion="if" />+        <WordDetect String="endmacro" insensitive="true" attribute="Command" context="endmacro_ctx" endRegion="macro" />+        <WordDetect String="endwhile" insensitive="true" attribute="Command" context="endwhile_ctx" endRegion="while" />         <WordDetect String="execute_process" insensitive="true" attribute="Command" context="execute_process_ctx" />         <WordDetect String="file" insensitive="true" attribute="Command" context="file_ctx" />         <WordDetect String="find_file" insensitive="true" attribute="Command" context="find_file_ctx" />@@ -2618,17 +2751,17 @@         <WordDetect String="find_package" insensitive="true" attribute="Command" context="find_package_ctx" />         <WordDetect String="find_path" insensitive="true" attribute="Command" context="find_path_ctx" />         <WordDetect String="find_program" insensitive="true" attribute="Command" context="find_program_ctx" />-        <WordDetect String="foreach" insensitive="true" attribute="Command" context="foreach_ctx" />-        <WordDetect String="function" insensitive="true" attribute="Command" context="function_ctx" />+        <WordDetect String="foreach" insensitive="true" attribute="Command" context="foreach_ctx" beginRegion="foreach" />+        <WordDetect String="function" insensitive="true" attribute="Command" context="function_ctx" beginRegion="function" />         <WordDetect String="get_cmake_property" insensitive="true" attribute="Command" context="get_cmake_property_ctx" />         <WordDetect String="get_directory_property" insensitive="true" attribute="Command" context="get_directory_property_ctx" />         <WordDetect String="get_filename_component" insensitive="true" attribute="Command" context="get_filename_component_ctx" />         <WordDetect String="get_property" insensitive="true" attribute="Command" context="get_property_ctx" />-        <WordDetect String="if" insensitive="true" attribute="Command" context="if_ctx" />+        <WordDetect String="if" insensitive="true" attribute="Command" context="if_ctx" beginRegion="if" />         <WordDetect String="include" insensitive="true" attribute="Command" context="include_ctx" />         <WordDetect String="include_guard" insensitive="true" attribute="Command" context="include_guard_ctx" />         <WordDetect String="list" insensitive="true" attribute="Command" context="list_ctx" />-        <WordDetect String="macro" insensitive="true" attribute="Command" context="macro_ctx" />+        <WordDetect String="macro" insensitive="true" attribute="Command" context="macro_ctx" beginRegion="macro" />         <WordDetect String="mark_as_advanced" insensitive="true" attribute="Command" context="mark_as_advanced_ctx" />         <WordDetect String="math" insensitive="true" attribute="Command" context="math_ctx" />         <WordDetect String="message" insensitive="true" attribute="Command" context="message_ctx" />@@ -2642,7 +2775,7 @@         <WordDetect String="string" insensitive="true" attribute="Command" context="string_ctx" />         <WordDetect String="unset" insensitive="true" attribute="Command" context="unset_ctx" />         <WordDetect String="variable_watch" insensitive="true" attribute="Command" context="variable_watch_ctx" />-        <WordDetect String="while" insensitive="true" attribute="Command" context="while_ctx" />+        <WordDetect String="while" insensitive="true" attribute="Command" context="while_ctx" beginRegion="while" />         <WordDetect String="add_compile_definitions" insensitive="true" attribute="Command" context="add_compile_definitions_ctx" />         <WordDetect String="add_compile_options" insensitive="true" attribute="Command" context="add_compile_options_ctx" />         <WordDetect String="add_custom_command" insensitive="true" attribute="Command" context="add_custom_command_ctx" />@@ -2704,9 +2837,7 @@         <WordDetect String="ctest_test" insensitive="true" attribute="Command" context="ctest_test_ctx" />         <WordDetect String="ctest_update" insensitive="true" attribute="Command" context="ctest_update_ctx" />         <WordDetect String="ctest_upload" insensitive="true" attribute="Command" context="ctest_upload_ctx" />-        <RegExpr attribute="Region Marker" context="RST Documentation" String="^#\[(=*)\[\.rst:" column="0" />-        <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" />-        <DetectChar attribute="Comment" context="Comment" char="#" />+        <DetectChar attribute="Comment" context="Match Comments and Docs" char="#" lookAhead="true" />         <DetectIdentifier attribute="User Function/Macro" context="User Function" />         <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" />         <!-- Include keywords matching for language autocompleter work -->@@ -2728,6 +2859,14 @@         <keyword attribute="Special Args" context="#stay" String="cmake_host_system_information_sargs" />         <IncludeRules context="User Function Args" />       </context>+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx">+        <DetectChar attribute="Normal Text" context="cmake_language_ctx_op" char="(" />+      </context>+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx_op">+        <IncludeRules context="EndCmdPop2" />+        <keyword attribute="Named Args" context="#stay" String="cmake_language_nargs" />+        <IncludeRules context="User Function Args" />+      </context>       <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx">         <DetectChar attribute="Normal Text" context="cmake_minimum_required_ctx_op" char="(" />       </context>@@ -3309,6 +3448,7 @@       </context>       <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx_op">         <IncludeRules context="EndCmdPop2" />+        <keyword attribute="Named Args" context="#stay" String="get_source_file_property_nargs" />         <keyword attribute="Property" context="#stay" String="source-properties" />         <IncludeRules context="Detect More source-properties" />         <IncludeRules context="User Function Args" />@@ -3625,6 +3765,7 @@       <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx_op">         <IncludeRules context="EndCmdPop2" />         <keyword attribute="Named Args" context="#stay" String="ctest_test_nargs" />+        <keyword attribute="Special Args" context="#stay" String="ctest_test_sargs" />         <IncludeRules context="User Function Args" />       </context>       <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx">@@ -3661,6 +3802,7 @@         <RegExpr attribute="Property" context="#stay" String="\b&id_re;_OUTPUT_NAME\b" />         <RegExpr attribute="Property" context="#stay" String="\b&id_re;_POSTFIX\b" />         <RegExpr attribute="Property" context="#stay" String="\bEXCLUDE_FROM_DEFAULT_BUILD_&id_re;\b" />+        <RegExpr attribute="Property" context="#stay" String="\bFRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_IMPLIB_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LIBNAME_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_DEPENDENT_LIBRARIES_&id_re;\b" />@@ -3695,6 +3837,7 @@         <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCE_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCEPROP_&id_re;_TAG_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_&id_re;\b" />+        <RegExpr attribute="Property" context="#stay" String="\bVS_SOURCE_SETTINGS_&id_re;\b" />         <RegExpr attribute="Property" context="#stay" String="\bXCODE_ATTRIBUTE_&id_re;\b" />       </context> @@ -3721,16 +3864,17 @@       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables">+        <RegExpr attribute="Internal Name" context="#stay" String="\b_&id_re;\b" />+        <keyword attribute="CMake Internal Variable" context="#stay" String="deprecated-or-internal-variables" insensitive="false" />         <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" />         <IncludeRules context="Detect More Builtin Variables" />-        <!-- JGM: next line is needed because we don't really handle-             \b at the beginning of a regex, and we don't want to-             capture part of FOO_BAR as an "Internal Name" -->-        <RegExpr attribute="Normal Text" context="#stay" String="&id_re;\b" />-        <RegExpr attribute="Internal Name" context="#stay" String="\b_&id_re;\b" />       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ABI\b" />+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ARCHITECTURE_ID\b" />+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_VERSION_INTERNAL\b" />+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_PLATFORM_ID\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_BINARY_DIR\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_SOURCE_DIR\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION\b" />@@ -3759,7 +3903,10 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARY_DIRS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_COUNT\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_STRING\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_KEYWORDS_MISSING_VALUES\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_UNPARSED_ARGUMENTS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_MODULE_NAME\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bARGV[0-9]+\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_POSTFIX\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX\b" />@@ -3769,7 +3916,6 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_FINISH\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CLANG_TIDY\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER\b" />-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ABI\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_AR\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ID\b" />@@ -3811,7 +3957,6 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINK_EXECUTABLE\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_OUTPUT_EXTENSION\b" />-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_PLATFORM_ID\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_ID\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_VERSION\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIZEOF_DATA_PTR\b" />@@ -3825,6 +3970,7 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_DISABLE_FIND_PACKAGE_&id_re;\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;_INIT\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MAP_IMPORTED_CONFIG_&id_re;\b" />@@ -3872,6 +4018,7 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SOURCE\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DMG_&id_re;_FILE_NAME\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NSIS_&id_re;_INSTALL_DIRECTORY\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_AUTHORS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT\b" />@@ -3889,6 +4036,8 @@         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_TITLE\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_VERSION\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_POSTFLIGHT_&id_re;_SCRIPT\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_PREFLIGHT_&id_re;_SCRIPT\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS\b" />         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_GROUP\b" />@@ -3930,25 +4079,21 @@        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">         <RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}" />-        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$ENV\{\s*[\w-]+\s*\}" lookAhead="true" />+        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$?ENV\{" />         <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />         <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" />       </context>        <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">-        <DetectIdentifier />-        <DetectChar attribute="Environment Variable Substitution" context="EnvVarSubstVar" char="{" />-        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />-      </context>--      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubstVar">         <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />         <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_DIR\b" />         <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_ROOT\b" />         <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;\b" />         <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;FLAGS\b" />+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LAUNCHER\b" />         <DetectIdentifier />-        <DetectChar attribute="Environment Variable Substitution" context="#pop#pop" char="}" />+        <IncludeRules context="Detect Variable Substitutions" />+        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />       </context>        <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">@@ -3959,6 +4104,7 @@       </context>        <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst">+        <IncludeRules context="Detect Builtin Variables" />         <DetectChar attribute="@Variable Substitution" context="VarSubst@" char="@" />       </context> @@ -3971,11 +4117,13 @@       <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args">         <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="(" />         <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />-        <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$n\\]" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />         <DetectChar attribute="Strings" context="String" char="&quot;" />-        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" />-        <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" />-        <DetectChar attribute="Comment" context="Comment" char="#" />+        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" beginRegion="BracketedString" />+        <DetectChar attribute="Comment" context="Match Comments" char="#" lookAhead="true" />         <IncludeRules context="Detect Builtin Variables" />         <IncludeRules context="Detect Variable Substitutions" />         <IncludeRules context="Detect Special Values" />@@ -3984,41 +4132,62 @@       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">-        <RegExpr attribute="True Special Arg" context="#stay" String="\b(TRUE|ON)\b" />-        <RegExpr attribute="False Special Arg" context="#stay" String="\b(FALSE|OFF|(&id_re;-)?NOTFOUND)\b" />+        <WordDetect attribute="True Special Arg" context="#stay" String="TRUE" />+        <WordDetect attribute="True Special Arg" context="#stay" String="ON" />+        <WordDetect attribute="False Special Arg" context="#stay" String="FALSE" />+        <WordDetect attribute="False Special Arg" context="#stay" String="OFF" />+        <RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&id_re;-)?NOTFOUND\b" />         <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9]\b" />       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets">-        <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(::&id_re;)*\b" />+        <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(?:\:\:&id_re;)*\b" />       </context> +      <context attribute="Comment" lineEndContext="#pop" name="Match Comments">+        <RegExpr attribute="Comment" context="#pop!Bracketed Comment" String="#\[(=*)\[" beginRegion="BracketedComment" />+        <DetectChar attribute="Comment" context="#pop!Comment" char="#" />+      </context>++      <context attribute="Comment" lineEndContext="#pop" name="Match Comments and Docs">+        <RegExpr attribute="Region Marker" context="#pop!RST Documentation" String="^#\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation" />+        <IncludeRules context="Match Comments" />+      </context>+       <context attribute="Comment" lineEndContext="#pop" name="Comment">         <LineContinue attribute="Comment" context="#pop" />+        <DetectSpaces />         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">-        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" />+        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation" />         <IncludeRules context="##reStructuredText" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true">-        <RegExpr attribute="Comment" context="#pop" String=".*\]%1\]" dynamic="true" />+        <LineContinue attribute="Comment" context="#stay" />+        <DetectSpaces />+        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment" />         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />       </context>        <context attribute="Strings" lineEndContext="#stay" name="String">         <RegExpr attribute="Strings" context="#pop" String="&quot;(?=[ );]|$)" />-        <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$nrt\\]" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="r" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="t" />+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />         <IncludeRules context="Detect Variable Substitutions" />         <IncludeRules context="Detect Generator Expressions" />       </context>        <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true">-        <RegExpr attribute="Strings" context="#pop" String="\]%1\]" dynamic="true" />+        <StringDetect attribute="Strings" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedString" />       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions">@@ -4047,9 +4216,10 @@       <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" />       <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" />       <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />-      <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" />+      <itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false" />       <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />-      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />+      <itemData name="CMake Internal Variable" defStyleNum="dsVariable" spellChecking="false" />+      <itemData name="Internal Name" defStyleNum="dsVariable" spellChecking="false" />       <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />       <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />       <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />@@ -4065,11 +4235,12 @@    <general>     <comments>-      <comment name="singleLine" start="#" />+      <comment name="singleLine" start="#" position="afterwhitespace" />+      <comment name="multiLine" start="#[[" end="]]" region="BracketedComment"/>     </comments>     <keywords casesensitive="1" />   </general> </language> -<!-- kate: indent-width 2; tab-width 2; -->+<!-- kate: replace-tabs on; indent-width 2; tab-width 2; --> 
syntax/coffee.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd">  <language name="CoffeeScript"-          version="10"+          version="13"           kateversion="5.0"           section="Scripts"           extensions="Cakefile;*.coffee;*.coco;*.cson"@@ -155,9 +155,9 @@         <keyword attribute="Browser Globals" context="#stay" String="browser_globals"/>         <keyword attribute="Node.js Globals" context="#stay" String="nodejs_globals"/>         <!-- Member accessors. -->-        <RegExpr attribute="Accessor" context="#stay" String="(@[_$a-zA-Z][$\w]*|\bthis)\b" insensitive="false"/>+        <RegExpr attribute="Accessor" context="#stay" String="(?:@[_$a-zA-Z][$\w]*|\bthis)\b" insensitive="false"/>         <!-- Function definitions. Matches an optional argument list followed by a function arrow (normal or fat). -->-        <RegExpr attribute="Function" context="#stay" String="(\((\'[^']*'|&quot;[^&quot;]*&quot;|[^()])*\))?\s*(-|=)&gt;" insensitive="true"/>+        <RegExpr attribute="Function" context="#stay" String="(?:\((?:\'[^']*'|&quot;[^&quot;]*&quot;|[^()])*\))?\s*(?:\-|=)&gt;" insensitive="true"/>         <!-- Generic identifiers. -->         <RegExpr attribute="Identifier" context="#stay" String="[_$a-z][$\w]*\b" insensitive="true"/>         <!-- Strings. -->@@ -173,7 +173,7 @@         <DetectChar attribute="Comment" context="Comment" char="#"/>         <!-- Regular expressions. -->         <StringDetect attribute="Regex" context="Multiline Regex" String="///" beginRegion="Multiline Regex"/>-        <RegExpr attribute="Regex" context="#stay" String="/([^/\\\r\n]|\\.)*/[mig]{0,3}"/>+        <RegExpr attribute="Regex" context="#stay" String="/(?:[^/\\\r\n]|\\.)*/[mig]{0,3}"/>         <!-- Member objects. -->         <DetectChar attribute="Symbol" context="Member Object" char="."/>         <!-- Operators and other non-alphanumeric symbols. -->@@ -197,10 +197,12 @@       <!-- Comments. -->       <context name="Comment" attribute="Comment" lineEndContext="#pop">         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="1">         <StringDetect attribute="Comment" context="#pop" String="###" endRegion="Comment"/>         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <!-- Single-line strings. -->       <context name="String" attribute="String" lineEndContext="#stay">@@ -225,7 +227,7 @@       <!-- Escaped characters. -->       <context name="Escape" attribute="String" lineEndContext="#stay">         <!-- Hexadecimal, unicode & reserved character escape sequences. -->-        <RegExpr attribute="Escape" context="#stay" String="\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[\\0bfnrtv&quot;&apos;])"/>+        <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[\\0bfnrtv&quot;&apos;])"/>         <!-- Invalid escapes. Octal escape sequences are not allowed. -->         <RegExpr attribute="Error" context="#stay" String="\\[ux1-7]"/>         <!-- Make any character literal. -->@@ -238,58 +240,72 @@       </context>        <!-- Embedded Javascript (one backtick). -->+       <context name="Javascript" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <DetectChar attribute="Javascript" context="#pop" char="`" endRegion="Javascript"/>         <!-- NOTE: This hides errors where a backtick is embedded in a JS string or a comment. -->         <IncludeRules context="Overwrite Javascript"/>         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>       </context>+       <!-- Allow template strings in JavaScript embedded code (with one backtick). -->-      <context name="Overwrite Javascript" attribute="Javascript" lineEndContext="#stay" noIndentationBasedFolding="1">+      <context name="Overwrite Javascript" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <!-- JavaScript Template. -->-        <Detect2Chars attribute="JavaScript Template" context="Javascript Template" char="\" char1="`"/>-        <RegExpr attribute="Error" context="#stay" String="String\.raw(?=`)"/>-        <StringDetect attribute="JavaScript Template" context="Javascript RawTemplate" String="String.raw\`"/>+        <Detect2Chars attribute="JavaScript Template" context="Javascript Template" char="\" char1="`" beginRegion="Template"/>+        <RegExpr context="Javascript StartRawTemplate" String="\b(String)\s*(\.)\s*(raw)\s*\\`" lookAhead="true"/>+        <!-- Tagged Template Literals -->+        <RegExpr attribute="JavaScript Function Name" context="#stay" String="[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*(?=\s*\\`)" />+        <RegExpr attribute="Error" context="#stay" String="\bString\s*\.\s*raw(?=\s*`)" />+        <RegExpr attribute="Normal" context="#stay" String="[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*(?=\s*`)" />         <!-- Contexts of javascript.xml. -->-        <DetectChar context="JavaScript Object" char="{" beginRegion="Brace" />+        <DetectChar attribute="Normal" context="JavaScript Object" char="{" beginRegion="Brace" />       </context>       <context name="JavaScript Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <DetectChar context="#pop" char="`" lookAhead="true"/>-        <DetectChar context="#pop" char="}" endRegion="Brace"/>+        <DetectChar attribute="Normal" context="#pop" char="}" endRegion="Brace"/>         <IncludeRules context="Overwrite Javascript"/>         <IncludeRules context="Object##JavaScript"/>       </context>+       <context name="Javascript Template" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">         <RegExpr attribute="Escape" context="#stay" String="\\\\\\`"/>-        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`" endRegion="Template"/> <!-- End template. -->         <DetectChar context="#pop" char="`" lookAhead="true"/>         <Detect2Chars attribute="JavaScript Substitution" context="Javascript Substitution" char="$" char1="{"/>         <IncludeRules context="Template##JavaScript"/>         <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>       </context>-      <context name="Javascript RawTemplate" attribute="JavaScript Template" lineEndContext="#stay">-        <Detect2Chars attribute="JavaScript Template" context="#stay" char="\" char1="\"/>-        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->-        <DetectChar context="#pop" char="`" lookAhead="true"/>-        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>-      </context>       <context name="Javascript Substitution" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <DetectChar attribute="Javascript" context="#pop" char="`" lookAhead="true"/>-        <DetectChar context="#pop" attribute="JavaScript Substitution" char="}"/>+        <DetectChar attribute="JavaScript Substitution" context="#pop" char="}"/>         <IncludeRules context="Overwrite Javascript"/>         <IncludeRules context="Substitution##JavaScript"/>       </context> +      <context name="Javascript StartRawTemplate" attribute="JavaScript Template" lineEndContext="#pop" noIndentationBasedFolding="1">+        <DetectSpaces />+        <Detect2Chars attribute="JavaScript Template" context="#pop!Javascript RawTemplate" char="\" char1="`" beginRegion="Template"/>+        <StringDetect attribute="JavaScript Built-in Objects" context="#stay" String="%1" dynamic="true"/>+        <DetectChar attribute="JavaScript Symbol" context="#stay" char="2" dynamic="true"/>+        <StringDetect attribute="JavaScript Function Name" context="#stay" String="%3" dynamic="true"/>+      </context>+      <context name="Javascript RawTemplate" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">+        <Detect2Chars attribute="JavaScript Template" context="#stay" char="\" char1="\"/>+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`" endRegion="Template"/> <!-- End template. -->+        <DetectChar context="#pop" char="`" lookAhead="true"/>+        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>+      </context>+       <!-- Embedded Javascript (triple backticks). -->       <context name="Javascript Triple Backticks" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <StringDetect attribute="Javascript" context="#pop" String="```" endRegion="Javascript TB"/>-        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>+        <DetectChar attribute="Normal" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>       </context>       <context name="JavaScript-TB Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">         <StringDetect attribute="Javascript" context="#pop" String="```" lookAhead="true"/>-        <DetectChar context="#pop" char="}" endRegion="Brace"/>-        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>+        <DetectChar attribute="Normal" context="#pop" char="}" endRegion="Brace"/>+        <DetectChar attribute="Normal" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>         <IncludeRules context="Object##JavaScript"/>       </context>     </contexts>@@ -323,13 +339,16 @@        <itemData name="JavaScript Template" defStyleNum="dsVerbatimString"/>       <itemData name="JavaScript Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>+      <itemData name="JavaScript Function Name" defStyleNum="dsFunction" spellChecking="false"/>+      <itemData name="JavaScript Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />+      <itemData name="JavaScript Symbol" defStyleNum="dsOperator" spellChecking="false" />     </itemDatas>   </highlighting>   <!-- Global settings. -->   <general>     <folding indentationsensitive="1"/>     <comments>-      <comment name="singleLine" start="#"/>+      <comment name="singleLine" start="#" position="afterwhitespace"/>       <comment name="multiLine" start="###" end="###" region="Comment"/>     </comments>     <keywords casesensitive="1" additionalDeliminator="#'`"/>@@ -338,3 +357,4 @@     </emptyLines>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/coldfusion.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="ColdFusion" version="3" kateversion="2.2" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">+<language name="ColdFusion" version="4" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">  	<highlighting> @@ -510,111 +510,109 @@ 		<contexts>  			<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">-				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />-				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" />-				<RegExpr attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;[cC][fF][sS][cC][rR][iI][pP][tT]" />-				<RegExpr attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;[sS][cC][rR][iI][pP][tT]" />-				<RegExpr attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;[sS][tT][yY][lL][eE]" />+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />+				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" beginRegion="HTML Comment" />+				<StringDetect attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;cfscript" insensitive="true" beginRegion="CF Script" />+				<StringDetect attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;script" insensitive="true" beginRegion="Script" />+				<StringDetect attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;style" insensitive="true" beginRegion="Style" /> 				<DetectChar attribute="HTML Entities" context="ctxHTML Entities" char="&amp;" />-				<RegExpr attribute="Custom Tags" context="ctxCustom Tag" String="&lt;\/?[cC][fF]_" />-				<RegExpr attribute="CFX Tags" context="ctxCFX Tag" String="&lt;\/?[cC][fF][xX]_" />-				<RegExpr attribute="CF Tags" context="ctxCF Tag" String="&lt;\/?[cC][fF]" />-				<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?([tT][aAhHbBfFrRdD])|([cC][aA][pP][tT])" />-				<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?[aA] " />-				<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?[iI][mM][gG] " />+				<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;cf_" insensitive="true" />+				<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;/cf_" insensitive="true" />+				<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;cfx_" insensitive="true" />+				<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;/cfx_" insensitive="true" />+				<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;cf" insensitive="true" />+				<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;/cf" insensitive="true" />+				<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?(?:[tT][aAhHbBfFrRdD])|(?:[cC][aA][pP][tT])" />+				<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?a(?=[&gt;\s]|$)" insensitive="true" />+				<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?img(?=[&gt;\s]|$)" insensitive="true" />+				<StringDetect attribute="Anchor Tags" context="#stay" String="&lt;a/&gt;" insensitive="true" />+				<StringDetect attribute="Image Tags" context="#stay" String="&lt;img/&gt;" insensitive="true" /> 				<RegExpr attribute="Tags" context="ctxTag" String="&lt;!?\/?[a-zA-Z0-9_]+" /> 			</context>  +			<context name="Tag Content" attribute="Normal Text" lineEndContext="#stay">+				<RegExpr attribute="Tag Attributes" context="#stay" String="(?:\s|^)[A-Za-z_:*][\w.:_-]*(?=\s*\=)" />+				<DetectChar attribute="Normal Text" context="#stay" char="=" />+				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />+				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />+			</context>  			<context name="ctxCFSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay"> 				<DetectChar attribute="Script Tags" context="ctxCFSCRIPT Block" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay"> 				<DetectChar attribute="Script Tags" context="ctxSCRIPT Block" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxSTYLE Tag" attribute="Style Tags" lineEndContext="#stay"> 				<DetectChar attribute="Style Tags" context="ctxSTYLE Block" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>    			<context name="ctxTag" attribute="Tags" lineEndContext="#stay"> 				<DetectChar attribute="Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxTable Tag" attribute="Table Tags" lineEndContext="#stay"> 				<DetectChar attribute="Table Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxAnchor Tag" attribute="Anchor Tags" lineEndContext="#stay"> 				<DetectChar attribute="Anchor Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxImage Tag" attribute="Image Tags" lineEndContext="#stay"> 				<DetectChar attribute="Image Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxCF Tag" attribute="CF Tags" lineEndContext="#stay"> 				<DetectChar attribute="CF Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxCustom Tag" attribute="Custom Tags" lineEndContext="#stay"> 				<DetectChar attribute="Custom Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>  			<context name="ctxCFX Tag" attribute="CFX Tags" lineEndContext="#stay"> 				<DetectChar attribute="CFX Tags" context="#pop" char="&gt;" />-				<DetectChar attribute="Normal Text" context="#stay" char="=" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<IncludeRules context="Tag Content" /> 			</context>    			<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">-				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />-				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />+				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTML Comment" />+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context>  			<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">-				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" />+				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" endRegion="CF Comment" />+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context>  			<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">-        		<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" />+				<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" endRegion="CComment" />+				<IncludeRules context="##Alerts" /> 			</context> -			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop" />+			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop">+				<IncludeRules context="##Alerts" />+			</context>  			<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop"> 				<DetectChar attribute="HTML Entities" context="#pop" char=";" />@@ -623,49 +621,49 @@   			<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" /> 				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />-				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />+				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />+				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" /> 				<Int attribute="Script Numbers" context="#stay" /> 				<Float attribute="Script Numbers" context="#stay" />-				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />+				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" /> 				<AnyChar attribute="Brackets" context="#stay" String="{}" />  				<keyword attribute="Script Keywords" context="#stay" String="CFSCRIPT Keywords" /> 				<keyword attribute="Script Functions" context="#stay" String="CFSCRIPT Functions" />-				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[cC][fF][sS][cC][rR][iI][pP][tT]&gt;" />+				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/cfscript&gt;" insensitive="true" endRegion="CF Script" /> 			</context>    			<context name="ctxSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" /> 				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />-				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />+				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />+				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" /> 				<Int attribute="Script Numbers" context="#stay" /> 				<Float attribute="Script Numbers" context="#stay" />-				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />+				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" /> 				<AnyChar attribute="Brackets" context="#stay" String="{}" />  				<keyword attribute="Script Keywords" context="#stay" String="Script Keywords" /> 				<keyword attribute="Script Objects" context="#stay" String="Script Objects" /> 				<keyword attribute="Script Functions" context="#stay" String="Script Methods" />-				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[sS][cC][rR][iI][pP][tT]&gt;" />+				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/script&gt;" insensitive="true" endRegion="Script" /> 			</context>    			<context name="ctxSTYLE Block" attribute="Style Selectors" lineEndContext="#stay">-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" /> 				<DetectChar attribute="Brackets" context="ctxStyle Properties" char="{" />-				<RegExpr attribute="Style Tags" context="#pop#pop" String="&lt;/[sS][tT][yY][lL][eE]&gt;" />+				<StringDetect attribute="Style Tags" context="#pop#pop" String="&lt;/style&gt;" insensitive="true" endRegion="Style" /> 			</context>  			<context name="ctxStyle Properties" attribute="Style Properties" lineEndContext="#stay"> 				<DetectChar attribute="Brackets" context="#pop" char="}" />-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" /> 				<DetectChar attribute="Normal Text" context="ctxStyle Values" char=":" /> 			</context> @@ -674,41 +672,42 @@ 				<DetectChar attribute="Normal Text" context="#stay" char="," /> 				<Int attribute="Numbers" context="#stay" /> 				<Float attribute="Numbers" context="#stay" />-				<RegExpr attribute="Numbers" context="#stay" String="#([0-9a-fA-F]{3})|([0-9a-fA-F]{6})" />-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />+				<RegExpr attribute="Numbers" context="#stay" String="#(?:[0-9a-fA-F]{3})|(?:[0-9a-fA-F]{6})" />+				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />+				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" /> 			</context>  		</contexts>  		<itemDatas> -			<itemData name="Normal Text" defStyleNum="dsNormal" />-			<itemData name="Tags" defStyleNum="dsNormal"				color="#000080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Table Tags" defStyleNum="dsNormal"			color="#008080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Script Tags" defStyleNum="dsNormal"			color="#800000" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Image Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Style Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Anchor Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Attribute Values" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="HTML Comment" defStyleNum="dsComment"		color="#008000" selColor="#999999" bold="0" italic="0" />-			<itemData name="CF Comment" defStyleNum="dsComment"			color="#ff9900" selColor="#999999" bold="0" italic="0" />-			<itemData name="Script Comment" defStyleNum="dsComment"		color="#ff9900" selColor="#999999" bold="0" italic="0" />-			<itemData name="CF Tags" defStyleNum="dsNormal"				color="#800000" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Custom Tags" defStyleNum="dsNormal"			color="#cc6666" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="CFX Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Numbers" defStyleNum="dsNormal"				color="#0000ff" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="HTML Entities" defStyleNum="dsNormal"		color="#000000" selColor="#ffffff" bold="1" italic="0" />-			<itemData name="Style Selectors" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Style Properties" defStyleNum="dsNormal"	color="#000080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Style Values" defStyleNum="dsNormal"		color="#ff0000" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Brackets" defStyleNum="dsNormal"			color="#000080" selColor="#ffffff" bold="1" italic="0" />-			<itemData name="Script Numbers" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Script Strings" defStyleNum="dsNormal"		color="#008080" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Script Operators" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />-			<itemData name="Script Keywords" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />-			<itemData name="Script Functions" defStyleNum="dsFunction"	bold="1" />-			<itemData name="Script Objects" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />+			<itemData name="Normal Text"      defStyleNum="dsNormal" />+			<itemData name="Tags"             defStyleNum="dsKeyword" spellChecking="false"/> <!-- #000080 -->+			<itemData name="Table Tags"       defStyleNum="dsVariable" bold="1" spellChecking="false" /> <!-- #008080 -->+			<itemData name="Script Tags"      defStyleNum="dsWarning" bold="1" spellChecking="false" /> <!-- #800000 -->+			<itemData name="Image Tags"       defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->+			<itemData name="Style Tags"       defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->+			<itemData name="Anchor Tags"      defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #008000 -->+			<itemData name="Tag Attributes"   defStyleNum="dsOthers" spellChecking="false"/>+			<itemData name="Attribute Values" defStyleNum="dsString" /> <!-- #0000ff -->+			<itemData name="HTML Comment"     defStyleNum="dsComment" /> <!-- #008000 -->+			<itemData name="CF Comment"       defStyleNum="dsComment" /> <!-- #ff9900 -->+			<itemData name="Script Comment"   defStyleNum="dsComment" /> <!-- #ff9900 -->+			<itemData name="CF Tags"          defStyleNum="dsFunction" bold="1" spellChecking="false" /> <!-- #800000 -->+			<itemData name="Custom Tags"      defStyleNum="dsDataType" bold="1" spellChecking="false" /> <!-- #cc6666 -->+			<itemData name="CFX Tags"         defStyleNum="dsOthers" bold="1" spellChecking="false" /> <!-- #008000 -->+			<itemData name="Numbers"          defStyleNum="dsDecVal" spellChecking="false" /> <!-- #0000ff -->+			<itemData name="HTML Entities"    defStyleNum="dsInformation" spellChecking="false" /> <!-- #000000 -->+			<itemData name="Style Selectors"  defStyleNum="dsChar" /> <!-- #ff00ff -->+			<itemData name="Style Properties" defStyleNum="dsAttribute" /> <!-- #000080 -->+			<itemData name="Style Values"     defStyleNum="dsVerbatimString" /> <!-- #ff0000 -->+			<itemData name="Brackets"         defStyleNum="dsKeyword" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Script Numbers"   defStyleNum="dsDecVal" spellChecking="false" /> <!-- #ff00ff -->+			<itemData name="Script Strings"   defStyleNum="dsString" /> <!-- #008080 -->+			<itemData name="Script Operators" defStyleNum="dsKeyword" spellChecking="false" /> <!-- #0000ff -->+			<itemData name="Script Keywords"  defStyleNum="dsControlFlow" spellChecking="false" /> <!-- #0000cc -->+			<itemData name="Script Functions" defStyleNum="dsFunction" bold="1" spellChecking="false" />+			<itemData name="Script Objects"   defStyleNum="dsExtension" spellChecking="false" /> <!-- #0000cc -->  		</itemDatas> @@ -718,9 +717,7 @@  		<comments> -			<comment name="multiLine" start="&lt;!--" end="--&gt;" />-			<comment name="multiLine" start="/*" end="*/" />-			<comment name="singleLine" start="//" />+			<comment name="multiLine" start="&lt;!---" end="---&gt;" region="CF Comment" />  		</comments> @@ -729,3 +726,4 @@ 	</general>  </language>+<!-- kate: replace-tabs off; -->
syntax/commonlisp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language version="6" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">+<language version="8" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">   <highlighting>     <list name="symbols">       <item>&lt;</item>@@ -1114,8 +1114,8 @@       <context name="Normal" attribute="Normal" lineEndContext="#stay">         <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>         <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>-        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="region"/>+        <DetectChar attribute="Comment" context="Comment" char=";"/>+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="BlockComment"/>         <DetectChar attribute="Brackets" context="#stay" char="("/>         <DetectChar attribute="Brackets" context="#stay" char=")"/>         <keyword attribute="Keyword" context="#stay" String="keywords"/>@@ -1125,13 +1125,16 @@         <keyword attribute="Definition" context="function_decl" String="definitions"/>         <RegExpr attribute="Char" context="#stay" String="#\\."/>         <DetectChar attribute="String" context="String" char="&quot;"/>+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="t"/>+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="f"/>         <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>-        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>         <Float attribute="Float" context="#stay"/>         <Int attribute="Decimal" context="#stay"/>       </context>       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="region"/>+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="BlockComment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context name="function_decl" attribute="Function" lineEndContext="#stay">         <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />@@ -1147,6 +1150,10 @@         <HlCStringChar attribute="String Char" context="#stay"/>         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>     </contexts>     <itemDatas>       <itemData name="Normal"      defStyleNum="dsNormal"/>@@ -1171,7 +1178,8 @@     <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>     <comments>       <comment name="singleLine" start=";;" />-      <comment name="multiLine" start="#|" end="|#" />+      <comment name="multiLine" start="#|" end="|#" region="BlockComment" />     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/cs.xml view
@@ -1,5 +1,5 @@ <!DOCTYPE language SYSTEM "language.dtd">-<language name="C#" version="5" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">+<language name="C#" version="8" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">   <highlighting>     <list name="keywords">       <item>abstract</item>@@ -100,9 +100,8 @@         <Int attribute="Decimal" context="Int Suffixes"/>         <HlCChar attribute="Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>         <RegExpr attribute="Keyword" context="#stay" String="\bpartial(?=\s+(class|struct|interface|void))"/>@@ -110,11 +109,11 @@         <RegExpr attribute="Keyword" context="#stay" String="\byield(?=\s+(return|break))"/>         <RegExpr attribute="Keyword" context="#stay" String="\b(set|get)(?=\s*[;{])"/>         <RegExpr attribute="Keyword" context="#stay" String="\bglobal(?=\s*::\s*\w+)"/>-        <RegExpr attribute="Decimal" context="#stay" String="#region.*$" beginRegion="Region1"/>-        <RegExpr attribute="Decimal" context="#stay" String="#endregion.*$" endRegion="Region1"/>+        <StringDetect attribute="Decimal" context="Decimal" String="#region" beginRegion="Region1"/>+        <StringDetect attribute="Decimal" context="Decimal" String="#endregion" endRegion="Region1"/>         <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />-        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>+        <DetectChar attribute="Symbol" context="Member" char="."/>+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>       </context>       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">           <AnyChar String="fF" attribute="Float" context="#pop"/>@@ -137,10 +136,21 @@       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">         <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="BlockComment" />+      </context>+      <context attribute="Decimal" lineEndContext="#pop" name="Decimal"/>     </contexts>     <itemDatas>       <itemData name="Normal Text"  defStyleNum="dsNormal"/>@@ -161,8 +171,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="BlockComment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/css.xml view
@@ -38,7 +38,7 @@  --> -<language name="CSS" version="9" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">+<language name="CSS" version="10" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">     <!-- https://www.w3.org/Style/CSS/current-work -->      <highlighting>@@ -1585,6 +1585,7 @@                 <DetectSpaces />                 <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />                 <IncludeRules context="##Alerts" />+                <IncludeRules context="##Modelines" />                 <DetectIdentifier />             </context> @@ -1731,8 +1732,9 @@     <general>         <keywords casesensitive="0" weakDeliminator="-%@" />         <comments>-            <comment name="multiLine" start="/*" end="*/" />+            <comment name="multiLine" start="/*" end="*/" region="comment" />         </comments>     </general>  </language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
syntax/curry.xml view
@@ -30,7 +30,7 @@   <!-- dashes introducing a currydoc comment -->   <!ENTITY currydoc    "---" > ]>-<language name="Curry" version="1" kateversion="5.0"+<language name="Curry" version="2" kateversion="5.0"           section="Sources" extensions="*.curry" mimetype="text/x-curry"           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"           indenter="haskell">@@ -229,13 +229,18 @@     <!-- Multiline comment -->     <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" >       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Multiline Comment" />+      <IncludeRules context="##Alerts" />+      <IncludeRules context="##Modelines" />     </context>      <!-- Currydoc -->     <context name="Currydoc" attribute="Currydoc" lineEndContext="#pop" />      <!-- Single line comment -->-    <context name="Comment" attribute="Comment" lineEndContext="#pop" />+    <context name="Comment" attribute="Comment" lineEndContext="#pop">+      <IncludeRules context="##Alerts" />+      <IncludeRules context="##Modelines" />+    </context>      <!-- Import section -->     <context name="Import" attribute="Normal" lineEndContext="#pop" >@@ -356,9 +361,10 @@   <general>     <folding indentationsensitive="1"/>     <comments>-      <comment name="singleLine" start="--" />+      <comment name="singleLine" start="--" position="afterwhitespace" />       <comment name="multiLine" start="{-" end="-}" region="Multiline Comment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/d.xml view
@@ -99,7 +99,7 @@    ======================================================================== --> -<language name="D" version="5" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">+<language name="D" version="7" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">   <highlighting>     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->     <list name="userkeywords">@@ -737,17 +737,20 @@       <context name="CommentLine" attribute="Comment" lineEndContext="#pop">         <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context name="CommentBlock" attribute="Comment" lineEndContext="#stay">         <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context name="CommentNested" attribute="Comment" lineEndContext="#stay">         <DetectSpaces />-       <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>-       <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>-       <IncludeRules context="##Alerts" />+        <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>+        <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>              @@ -864,14 +867,14 @@              <!-- keywords -->       <itemData name="Statement"      defStyleNum="dsKeyword"/>-      <itemData name="Expression"     defStyleNum="dsKeyword"  color="#000080"/>-      <itemData name="Declarator"     defStyleNum="dsKeyword"  color="#800000"/>-      <itemData name="Template"       defStyleNum="dsKeyword"  color="#008000"/>+      <itemData name="Expression"     defStyleNum="dsAttribute"  bold="1"/> <!-- #000080 -->+      <itemData name="Declarator"     defStyleNum="dsWarning"    bold="1"/> <!-- #800000 -->+      <itemData name="Template"       defStyleNum="dsOthers"     bold="1"/> <!-- #008000 -->       -      <itemData name="Attribute"      defStyleNum="dsKeyword"  color="#800080"/>-      <itemData name="Deprecated"     defStyleNum="dsKeyword"  color="#800080" strikeOut="true"/>+      <itemData name="Attribute"      defStyleNum="dsFunction"   bold="1"/> <!-- #800080 -->+      <itemData name="Deprecated"     defStyleNum="dsFunction"   bold="1" strikeOut="true"/> <!-- #800080 -->       -      <itemData name="Property"       defStyleNum="dsDataType" color="#000080"/>+      <itemData name="Property"       defStyleNum="dsDataType"   bold="1"/> <!-- #000080 -->              <itemData name="Type"           defStyleNum="dsDataType"/>       <itemData name="LibrarySymbols" defStyleNum="dsBuiltIn" italic="1"/>@@ -879,20 +882,20 @@       <itemData name="UserKeywords"   defStyleNum="dsDataType" italic="1"/>        <!-- module, import -->-      <itemData name="Module"         defStyleNum="dsKeyword"  color="#008000"/>-      <itemData name="Module Name"    defStyleNum="dsNormal"   color="#008000"/>+      <itemData name="Module"         defStyleNum="dsPreprocessor" bold="1"/> <!-- #008000 -->+      <itemData name="Module Name"    defStyleNum="dsImport"/> <!-- #008000 -->        <!-- pragma, special tokens -->-      <itemData name="SpecialTokens"  defStyleNum="dsNormal"   color="#00aa00"/>-      <itemData name="Pragma"         defStyleNum="dsKeyword"  color="#00aa00"/>+      <itemData name="SpecialTokens"  defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->+      <itemData name="Pragma"         defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->        <!-- version, extern -->-      <itemData name="Version"        defStyleNum="dsKeyword"  color="#808000"/>-      <itemData name="Version Type"   defStyleNum="dsNormal"   bold="1"/>-      <itemData name="Linkage"        defStyleNum="dsKeyword"  color="#808000"/>-      <itemData name="Linkage Type"   defStyleNum="dsNormal"   bold="1"/>+      <itemData name="Version"        defStyleNum="dsDecVal"/> <!-- #808000 -->+      <itemData name="Version Type"   defStyleNum="dsNormal"      bold="1"/>+      <itemData name="Linkage"        defStyleNum="dsInformation" bold="1"/> <!-- #808000 -->+      <itemData name="Linkage Type"   defStyleNum="dsNormal"      bold="1"/> -      <itemData name="Tests"        defStyleNum="dsKeyword"    color="#ff00ff"/>+      <itemData name="Tests"        defStyleNum="dsFunction"      bold="1"/> <!-- #ff00ff -->        <itemData name="Comment"        defStyleNum="dsComment"/>       <itemData name="Region Marker"  defStyleNum="dsRegionMarker" />@@ -917,10 +920,10 @@       <itemData name="Delimited String Delimiter" defStyleNum="dsKeyword"/>              <!-- Ddoc specific -->-      <itemData name="Macros"      defStyleNum="dsOthers" color="#bf5fbf" selColor="#ffffff" bold="1" italic="0" />-      <itemData name="Macro Text"  defStyleNum="dsNormal" color="#bf7fff" selColor="#ffffff" bold="0" italic="0" />-      <itemData name="Ddoc"        defStyleNum="dsComment" color="#7f7fff" />-      <itemData name="DdocSection" defStyleNum="dsKeyword" color="#7f7fff" bold="1" />+      <itemData name="Macros"      defStyleNum="dsSpecialChar" bold="1" italic="0" /> <!-- #bf5fbf -->+      <itemData name="Macro Text"  defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #bf7fff -->+      <itemData name="Ddoc"        defStyleNum="dsDocumentation" /> <!-- #7f7fff -->+      <itemData name="DdocSection" defStyleNum="dsAnnotation" bold="1" /> <!-- #7f7fff -->       <itemData name="DdocCode"    defStyleNum="dsNormal" italic="1" />     </itemDatas>   </highlighting>@@ -932,3 +935,4 @@     <keywords casesensitive="true"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/diff.xml view
@@ -2,9 +2,6 @@ <!DOCTYPE language SYSTEM "language.dtd" [   <!ENTITY file  "(====|\*\*\*|\-\-\-|diff|Only in .*:).*$">-  <!ENTITY chunk "(\@\@|\d).*$">-  <!ENTITY csep  "(\+\+\+|\-\-\-).*$">-  <!ENTITY index  "Index:.*"> ]> <!--     2006-08-02: 1.10 Matthew Woehlke <mw_triad@sourceforge.net>@@ -15,81 +12,88 @@     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>      Fixed folding. -->-<language name="Diff" version="5" kateversion="5.0" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">+<language name="Diff" version="6" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">    <highlighting>      <contexts> -      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">-        <RegExpr attribute="Header" context="Chunk" String="&chunk;" beginRegion="chunk" column="0"/>+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal" fallthroughContext="AttrNormal">+        <Detect2Chars attribute="Header" context="AttrHeader_Chunk" char="@" char1="@" beginRegion="chunk" column="0"/>+        <AnyChar attribute="Header" context="AttrHeader_Chunk" String="0123456789" beginRegion="chunk" column="0"/>         <RegExpr attribute="Header" context="RChunk" String="\*+$" beginRegion="chunk" column="0"/>         <RegExpr attribute="File" context="#stay" String="Only in .*:.*$" column="0"/>-        <RegExpr attribute="File" context="RFile" String="diff.*$" beginRegion="chunk" column="0"/>-        <RegExpr attribute="File" context="#stay" String="====.*$" column="0"/>-        <RegExpr attribute="File" context="File" String="(\*\*\*|\-\-\-).*$" beginRegion="chunk" column="0"/>+        <StringDetect attribute="File" context="AttrFile_RFile" String="diff" beginRegion="chunk" column="0"/>+        <StringDetect attribute="File" context="AttrFile" String="====" column="0"/>+        <StringDetect attribute="File" context="AttrFile_File" String="***" beginRegion="chunk" column="0"/>+        <StringDetect attribute="File" context="AttrFile_File" String="---" beginRegion="chunk" column="0"/>         <IncludeRules context="FindDiff"/>         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="FindDiff">-        <RegExpr attribute="File" context="#stay" String="\-\-\-.*$" column="0"/>-        <RegExpr attribute="Header" context="#stay" String="&csep;" column="0"/>+        <StringDetect attribute="File" context="AttrFile" String="---" column="0"/>+        <StringDetect attribute="Header" context="AttrHeader" String="+++" column="0"/>         <AnyChar attribute="Added line" context="Added" String="+&gt;" column="0"/>         <AnyChar attribute="Removed line" context="Removed" String="-&lt;" column="0"/>       </context>        <!-- block contexts -->-      <context attribute="Normal Text" lineEndContext="#stay" name="File">+      <context attribute="Normal Text" lineEndContext="#stay" name="File" fallthroughContext="AttrNormal">         <IncludeRules context="FindDiff"/>-        <RegExpr attribute="Header" context="ChunkInFile" String="&chunk;" beginRegion="chunk" column="0"/>+        <Detect2Chars attribute="Header" context="AttrHeader_ChunkInFile" char="@" char1="@" beginRegion="chunk" column="0"/>+        <AnyChar attribute="Header" context="AttrHeader_ChunkInFile" String="0123456789" beginRegion="chunk" column="0"/>         <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>         <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" column="0"/>         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="Chunk">+      <context attribute="Normal Text" lineEndContext="#stay" name="Chunk" fallthroughContext="AttrNormal">         <IncludeRules context="FindDiff"/>-        <RegExpr attribute="Header" context="#pop" String="&chunk;" endRegion="chunk" lookAhead="true" column="0"/>+        <Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>+        <AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="ChunkInFile">+      <context attribute="Normal Text" lineEndContext="#stay" name="ChunkInFile" fallthroughContext="AttrNormal">         <IncludeRules context="FindDiff"/>-        <RegExpr attribute="Header" context="#pop" String="&chunk;" endRegion="chunk" lookAhead="true" column="0"/>-        <RegExpr attribute="Normal Text" context="#pop" String="&index;" endRegion="chunk" column="0"/>+        <Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>+        <AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>+        <StringDetect attribute="Normal Text" context="#pop!AttrNormal" String="Index:" endRegion="chunk" column="0"/>         <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>       </context>        <!-- block contexts (diff -r) -->-      <context attribute="Normal Text" lineEndContext="#stay" name="RFile">+      <context attribute="Normal Text" lineEndContext="#stay" name="RFile" fallthroughContext="AttrNormal">         <RegExpr attribute="File" context="#pop" String="(diff|Only in .*:).*$" endRegion="chunk" lookAhead="true" column="0"/>         <RegExpr attribute="Header" context="#stay" String="&file;" column="0"/>         <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>         <IncludeRules context="File"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="RChunk">+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunk" fallthroughContext="AttrNormal">         <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>         <RegExpr attribute="Header" context="RChunkNew" String="\-\-\- .* \-\-\-\-$" column="0"/>         <IncludeRules context="Chunk"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile">+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile" fallthroughContext="AttrNormal">         <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>         <RegExpr attribute="Header" context="RChunkInFileNew" String="\-\-\- .* \-\-\-\-$" column="0"/>         <IncludeRules context="ChunkInFile"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkNew">-        <RegExpr attribute="Header" context="#pop#pop" String="&chunk;" lookAhead="true" column="0"/>+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkNew" fallthroughContext="AttrNormal">+        <Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>+        <AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>         <DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>         <IncludeRules context="FindDiff"/>       </context> -      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew">-        <RegExpr attribute="Header" context="#pop#pop" String="&chunk;" lookAhead="true" column="0"/>+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew" fallthroughContext="AttrNormal">+        <Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>+        <AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>         <RegExpr attribute="File" context="#pop#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>         <DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>         <IncludeRules context="FindDiff"/>@@ -101,6 +105,13 @@       <context attribute="Changed line (old)" lineEndContext="#pop" name="ChangedOld"/>       <context attribute="Changed line (new)" lineEndContext="#pop" name="ChangedNew"/> +      <context attribute="Normal Text" lineEndContext="#pop" name="AttrNormal"/>+      <context attribute="File" lineEndContext="#pop" name="AttrFile"/>+      <context attribute="File" lineEndContext="#pop!File" name="AttrFile_File"/>+      <context attribute="File" lineEndContext="#pop!RFile" name="AttrFile_RFile"/>+      <context attribute="Header" lineEndContext="#pop" name="AttrHeader"/>+      <context attribute="Header" lineEndContext="#pop!Chunk" name="AttrHeader_Chunk"/>+      <context attribute="Header" lineEndContext="#pop!ChunkInFile" name="AttrHeader_ChunkInFile"/>     </contexts>      <itemDatas>
syntax/djangotemplate.xml view
@@ -4,7 +4,7 @@ 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*"> 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]>-<language name="Django HTML Template" version="4" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">+<language name="Django HTML Template" version="5" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">  <!--     Based off of the katepart html syntax highlighting by Wilbert Berendsen.@@ -59,6 +59,9 @@    <context name="Template Comment" attribute="Template Comment" lineEndContext="#stay">     <RegExpr attribute="Template Comment" context="#pop" String="\{%\s*endcomment\s*%\}" endRegion="templatecomment" />+    <DetectSpaces />+    <IncludeRules context="##Alerts" />+    <IncludeRules context="##Modelines" />   </context>    <context name="Template Var" attribute="Template Var" lineEndContext="#stay">@@ -171,6 +174,7 @@     <DetectSpaces/>     <IncludeRules context="##Alerts" />     <IncludeRules context="FindTemplate" />+    <IncludeRules context="##Modelines" />     <DetectIdentifier/>     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />@@ -328,3 +332,4 @@   </comments> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/dot.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->-<language name="dot" version="3" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">+<language name="dot" version="4" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">    <highlighting> @@ -133,12 +133,16 @@       </context>        <context attribute="Comment" lineEndContext="#pop" name="CommentSL">+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <context attribute="Comment" lineEndContext="#stay" name="CommentML">         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>      </contexts>@@ -162,7 +166,7 @@      <comments>       <comment name="singleLine" start="//"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>      <keywords casesensitive="1"/>@@ -170,3 +174,4 @@   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/doxygen.xml view
@@ -2,9 +2,11 @@ <!DOCTYPE language SYSTEM "language.dtd" [     <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->+    <!ENTITY sl_word ".*?(?=&wordsep;)">+    <!ENTITY ml_word ".*?(?=&wordsep;|\*/)"> ]> <language name="Doxygen"-          version="6"+          version="7"           kateversion="5.0"           section="Markup"           extensions="*.dox;*.doxygen"@@ -42,10 +44,6 @@       <item>\endrtfonly</item>       <item>@endrtfonly</item>       <item>\endsecreflist</item>    <item>@endsecreflist</item>       <item>\endxmlonly</item>       <item>@endxmlonly</item>-      <item>\f[</item>               <item>@f[</item>-      <item>\f]</item>               <item>@f]</item>-      <item>\f$</item>               <item>@f$</item>-      <!-- TODO Add @f{environment}{ and @f} -->       <item>\hideinitializer</item>  <item>@hideinitializer</item>       <item>\htmlonly</item>         <item>@htmlonly</item>       <!-- TODO @internal is a candidate to be handled separately, cuz may introduce folding region -->@@ -84,21 +82,6 @@       <item>\test</item>             <item>@test</item>       <item>\version</item>          <item>@version</item>       <item>\xmlonly</item>          <item>@xmlonly</item>-      <!-- TODO Introduce separate context for @~ ? -->-      <item>\#</item>                <item>@#</item>-      <item>\$</item>                <item>@$</item>-      <item>\%</item>                <item>@%</item>-      <item>\&amp;</item>            <item>@&amp;</item>-      <item>\&gt;</item>             <item>@&gt;</item>-      <item>\&lt;</item>             <item>@&lt;</item>-      <item>\&quot;</item>           <item>@&quot;</item>-      <item>\::</item>               <item>@::</item>-      <item>\@</item>                <item>@@</item>-      <item>\\</item>                <item>@\</item>-      <item>\~</item>                <item>@~</item>-      <item>\.</item>                <item>@.</item>-      <item>\--</item>               <item>@--</item>-      <item>\---</item>              <item>@---</item>     </list>      <list name="TagWord">@@ -202,6 +185,12 @@       <item>\var</item>              <item>@var</item>       <item>\vhdlflow</item>         <item>@vhdlflow</item>     </list>+    <list name="TagEnd">+      <item>\endcode</item>          <item>@endcode</item>+      <item>\endverbatim</item>      <item>@endverbatim</item>+      <item>\endmsc</item>           <item>@endmsc</item>+      <item>\enddot</item>           <item>@enddot</item>+    </list>     <list name="Note">       <item>\note</item>             <item>@note</item>     </list>@@ -231,8 +220,8 @@       TODO Not all commands are handled properly nowadays :( Need few more contexts...     -->       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">-        <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))&lt;?" />-        <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment" />+        <RegExpr attribute="Comment" context="LineComment" String="//(?:!|(?:/(?=[^/]|$)))&lt;?" />+        <RegExpr attribute="Comment" context="BlockComment" String="/\*(?:\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment" />         <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup" />         <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$"   endRegion="MemberGroup" />         <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup" />@@ -242,38 +231,21 @@         <LineContinue attribute="Comment" context="#stay" />         <DetectSpaces />         <IncludeRules context="##Alerts" />-        <IncludeRules context="SL_DetectEnv" />-        <keyword attribute="Tags" context="#stay" String="TagOnly" />-        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />-        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />-        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />-        <keyword attribute="Tags" context="SL_TagString" String="TagString" />-        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\][^@\\ \t]+" />         <DetectIdentifier />-        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />-        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />+        <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />+        <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />+        <DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="BlockComment">         <DetectSpaces />-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />         <IncludeRules context="##Alerts" />-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" beginRegion="Group" />-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" endRegion="Group" />-        <IncludeRules context="SL_DetectEnv" />-        <keyword attribute="Tags" context="#stay" String="TagOnly" />-        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />-        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />-        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />-        <keyword attribute="Tags" context="ML_TagString" String="TagString" />-        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\]([^@\\ \t\*]|\*(?!/))+" />         <DetectIdentifier />-        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />+        <DetectChar attribute="Comment" context="ML_StartTag" char="\" lookAhead="true" />+        <DetectChar attribute="Comment" context="ML_StartTag" char="@" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />+        <DetectChar attribute="Comment" context="ML_StartHTMLTag" char="&lt;" lookAhead="true" />+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />       </context>        <!-- NOTE: all contexts beginning with ML_ are for multiline comments@@ -284,123 +256,254 @@                  much more complex and very hard to understand! (But use IncludeRules where the rules don't                  refer to another SL_*/ML_* context, to help maintainability.)       -->+      <context attribute="Comment" lineEndContext="#pop" name="ML_StartTag">+        <keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />+        <keyword attribute="Tags" context="#pop!ML_TagParam" String="TagParam" />+        <keyword attribute="Tags" context="#pop!ML_TagWordWord" String="TagWordWord" />+        <keyword attribute="Tags" context="#pop!ML_TagString" String="TagString" />+        <keyword attribute="Tags" context="#pop!ML_TagWordString" String="TagWordString" />+        <WordDetect attribute="Tags" context="#pop!ML_Code" String="\code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Code" String="@code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Formula" String="\f[" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Formula" String="@f[" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Msc" String="\msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Msc" String="@msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Dot" String="\dot" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!ML_Dot" String="@dot" beginRegion="VerbatimBlock" />+        <IncludeRules context="Inc_OtherTag" />+      </context>+      <context attribute="Comment" lineEndContext="#pop" name="ML_StartHTMLTag">+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />+        <RegExpr attribute="HTML Tag" context="#pop!ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />+        <StringDetect attribute="HTML Comment" context="#pop!ML_htmlcomment" String="&lt;!--" />+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />+      </context>+       <!-- tag contexts -->       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />-        <IncludeRules context="SL_TagWord" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />+        <keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />+        <IncludeRules context="ML_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />         <DetectSpaces />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in]" />+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[out]" />+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in,out]" />+        <IncludeRules context="ML_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />         <DetectSpaces />-        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />-      </context>-      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->-      <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord">-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true" />-        <IncludeRules context="SL_Tag2ndWord" />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />+        <RegExpr attribute="Word" context="#pop!ML_TagWord" String="&ml_word;" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="ML_TagString">         <DetectSpaces />-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />         <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <RegExpr attribute="Description" context="#stay" String="." />+        <RegExpr attribute="Description" context="#stay" String="[&lt;*]?[^&lt;*\s]+" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />-        <IncludeRules context="SL_TagWordString" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />+        <IncludeRules context="ML_Inc_Word" />       </context> +      <context name="ML_Inc_Word" attribute="Word" lineEndContext="#pop">+        <RegExpr attribute="Word" context="#pop" String="&ml_word;" />+      </context>++       <!-- html contexts -->       <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />-        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" />+        <DetectSpaces />+        <DetectChar attribute="Identifier" context="ML_identifiers" char="=" />       </context>       <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <IncludeRules context="##Alerts" />+        <DetectIdentifier />         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />       </context>       <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <DetectChar attribute="Types" context="ML_types1" char="'" />         <DetectChar attribute="Types" context="ML_types2" char="&quot;" />       </context>       <context name="ML_types1" attribute="Types" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="#pop#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <DetectChar attribute="Types" context="#pop#pop" char="'" />       </context>       <context name="ML_types2" attribute="Types" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="#pop#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />       </context> +      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop!ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <Detect2Chars attribute="Comment" context="ML_VerbatimPrefix" char="*" char1="*" lookAhead="true" />+        <DetectChar attribute="Comment" context="#pop" char="*" />+      </context>+      <context name="ML_VerbatimPrefix" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="*" />+      </context>++      <context name="ML_End_BlockComment" attribute="Comment" lineEndContext="#stay">+        <Detect2Chars attribute="Error" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment"/>+      </context>++      <context name="ML_Code" attribute="Code" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />+      </context>++      <context name="ML_Verbatim" attribute="Verbatim" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />+      </context>++      <context name="ML_Formula" attribute="Formulas" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->+      </context>++      <context name="ML_FormulaShort" attribute="Formulas" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->+      </context>++      <context name="ML_FormulaEnv" attribute="Word" lineEndContext="ML_FindNextLine">+        <DetectChar attribute="Tags" context="#pop!ML_FormulaEnvStart" char="}" />+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+      </context>++      <context name="ML_FormulaEnvStart" attribute="Formulas" lineEndContext="ML_FindNextLine" fallthroughContext="#pop!ML_FormulaEnvFormula">+        <DetectSpaces attribute="Comment" />+        <DetectChar attribute="Tags" context="#pop!ML_FormulaEnvFormula" char="{" />+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+      </context>++      <context name="ML_FormulaEnvFormula" attribute="Formulas" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->+      </context>++      <context name="ML_Msc" attribute="Message Sequence Chart" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />+      </context>++      <context name="ML_Dot" attribute="Dot Graph" lineEndContext="ML_FindNextLine">+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />+      </context>+       <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartTag">+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />+        <keyword attribute="Tags" context="#pop!SL_TagParam" String="TagParam" />+        <keyword attribute="Tags" context="#pop!SL_TagWordWord" String="TagWordWord" />+        <keyword attribute="Tags" context="#pop!SL_TagString" String="TagString" />+        <keyword attribute="Tags" context="#pop!SL_TagWordString" String="TagWordString" />+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="\code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="@code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="\f[" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="@f[" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="\msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="@msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="\dot" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="@dot" beginRegion="VerbatimBlock" />+        <IncludeRules context="Inc_OtherTag" />+      </context>+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />+        <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />+        <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="&lt;!--" />+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />+      </context>+       <!-- tag contexts -->       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">         <DetectSpaces />-        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />+        <IncludeRules context="SL_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">         <DetectSpaces />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in]" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[out]" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in,out]" />+        <IncludeRules context="SL_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">         <DetectSpaces />-        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />-      </context>-      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->-      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">-        <DetectSpaces />-        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <RegExpr attribute="Word" context="#pop!SL_TagWord" String="&sl_word;" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">         <DetectSpaces />         <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />         <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <RegExpr attribute="Description" context="#stay" String="." />+        <RegExpr attribute="Description" context="#stay" String="&lt;?[^&lt;\s]+" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">         <DetectSpaces />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <IncludeRules context="SL_Inc_Word" />       </context>+      <context name="SL_Inc_Word" attribute="Word" lineEndContext="#pop">+        <RegExpr attribute="Word" context="#pop" String="&sl_word;" />+      </context>        <!-- html contexts -->       <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />-        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" />+        <DetectSpaces />+        <DetectChar attribute="Identifier" context="SL_identifiers" char="=" />       </context>       <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <DetectIdentifier />         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />       </context>       <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />+        <DetectSpaces />         <DetectChar attribute="Types" context="SL_types1" char="'" />         <DetectChar attribute="Types" context="SL_types2" char="&quot;" />       </context>@@ -411,52 +514,90 @@         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />       </context> -      <context attribute="Comment" name="SL_DetectEnv" lineEndContext="#pop">-        <RegExpr attribute="Tags" context="Code" String="[@\\]code\b" beginRegion="Code" />-        <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim\b" beginRegion="Verbatim" />-        <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" />-        <RegExpr attribute="Tags" context="Msc" String="[@\\]msc\b" beginRegion="Msc" />-        <RegExpr attribute="Tags" context="Dot" String="[@\\]dot\b" beginRegion="Dot" />-        <keyword attribute="Note" context="#stay" String="Note" />-        <keyword attribute="Warning" context="#stay" String="Warning" />-        <keyword attribute="Attention" context="#stay" String="Attention" />-        <keyword attribute="Todo" context="#stay" String="Todo" />-        <RegExpr attribute="Entities" context="#stay" String="&amp;[A-Za-z]+&#59;" />+      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">+        <DetectSpaces />+        <StringDetect attribute="Comment" context="#pop" String="///" />+        <StringDetect attribute="Comment" context="#pop" String="//!" />+        <RegExpr attribute="Comment" context="#pop#pop#pop" String="." lookAhead="true" endRegion="VerbatimBlock" />       </context> -      <context attribute="Comment" name="SL_DetectComment" lineEndContext="#pop">-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />-        <DetectChar attribute="Comment" context="#stay" char="*" />-        <StringDetect attribute="Comment" context="#stay" String="///" />+      <context name="SL_Code" attribute="Code" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />       </context> -      <context attribute="Code" lineEndContext="#stay" name="Code">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode\b" endRegion="Code" />+      <context name="SL_Verbatim" attribute="Verbatim" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />       </context> -      <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim\b" endRegion="Verbatim" />+      <context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->       </context> -      <context attribute="Formulas" lineEndContext="#stay" name="Formula">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" />+      <context name="SL_FormulaShort" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />         <!-- TODO: How to force LaTeX math context here?? -->         <!-- <IncludeRules context="##LaTeX" /> -->       </context> -      <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc\b" endRegion="Msc" />+      <context name="SL_FormulaEnv" attribute="Word" lineEndContext="SL_FindNextLine">+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />       </context> -      <context attribute="Dot Graph" lineEndContext="#stay" name="Dot">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot\b" endRegion="Dot" />+      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthroughContext="#pop!SL_FormulaEnvFormula">+        <DetectSpaces attribute="Comment" />+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />       </context> +      <context name="SL_FormulaEnvFormula" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->+      </context>++      <context name="SL_Msc" attribute="Message Sequence Chart" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />+      </context>++      <context name="SL_Dot" attribute="Dot Graph" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />+      </context>++      <context name="Entities" attribute="Word" lineEndContext="#stay">+        <RegExpr attribute="Entities" context="#pop" String="&amp;[A-Za-z]+&#59;" />+        <DetectChar attribute="Comment" context="#pop" char="&amp;" />+      </context>++      <context name="Inc_OtherTag" attribute="Comment" lineEndContext="#pop">+        <keyword attribute="Note" context="#pop" String="Note" />+        <keyword attribute="Warning" context="#pop" String="Warning" />+        <keyword attribute="Attention" context="#pop" String="Attention" />+        <keyword attribute="Todo" context="#pop" String="Todo" />+        <keyword attribute="Tags" context="#pop" String="TagOnly" />+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="{" beginRegion="Group" />+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="}" endRegion="Group" />+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="\" char1="~" />+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />+        <keyword attribute="Error" context="#pop" String="TagEnd" />+        <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />+        <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />+        <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />+        <DetectChar attribute="Comment" context="#pop" char="\" />+        <DetectChar attribute="Comment" context="#pop" char="@" />+      </context>++      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectIdentifier />+      </context>+   </contexts>     <itemDatas>       <itemData name="Normal Text"  defStyleNum="dsNormal" />@@ -480,10 +621,11 @@       <itemData name="Warning"      defStyleNum="dsWarning" bold="1" italic="0" />       <itemData name="Attention"    defStyleNum="dsAnnotation" bold="1" italic="0" />       <itemData name="Todo"         defStyleNum="dsAnnotation" bold="1" italic="0" />+      <itemData name="Error"        defStyleNum="dsError" />     </itemDatas>   </highlighting>   <general>-    <keywords casesensitive="1" weakDeliminator="\$~" />+    <keywords casesensitive="1" weakDeliminator="\$" />   </general> </language> <!-- kate: indent-width 2; -->
syntax/doxygenlua.xml view
@@ -2,20 +2,22 @@ <!DOCTYPE language SYSTEM "language.dtd" [     <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->+    <!ENTITY sl_word ".*?(?=&wordsep;)"> ]> <!-- sed -E '-  s/<Detect2Chars(.*)char="\*" char1="\/"(.*)/<StringDetect\1String="]%1]" dynamic="true"\2/-  s/ (name="ML_|name="BlockComment")/ dynamic="true" \1/+  /LineContinue/d+  /name="(ML_|BlockComment")/,/<\/context>/d+  /\/\/\/| ml_word /d+  s#//!#\x2d-!# ' doxygen.xml > doxygenlua.xml  + edit - <language> - "Normal Text" context-- grep '\\\*' doxygenlua.xml --> <language name="DoxygenLua"-          version="6"+          version="8"           kateversion="5.0"           section="Markup"           extensions=""@@ -52,10 +54,6 @@       <item>\endrtfonly</item>       <item>@endrtfonly</item>       <item>\endsecreflist</item>    <item>@endsecreflist</item>       <item>\endxmlonly</item>       <item>@endxmlonly</item>-      <item>\f[</item>               <item>@f[</item>-      <item>\f]</item>               <item>@f]</item>-      <item>\f$</item>               <item>@f$</item>-      <!-- TODO Add @f{environment}{ and @f} -->       <item>\hideinitializer</item>  <item>@hideinitializer</item>       <item>\htmlonly</item>         <item>@htmlonly</item>       <!-- TODO @internal is a candidate to be handled separately, cuz may introduce folding region -->@@ -94,21 +92,6 @@       <item>\test</item>             <item>@test</item>       <item>\version</item>          <item>@version</item>       <item>\xmlonly</item>          <item>@xmlonly</item>-      <!-- TODO Introduce separate context for @~ ? -->-      <item>\#</item>                <item>@#</item>-      <item>\$</item>                <item>@$</item>-      <item>\%</item>                <item>@%</item>-      <item>\&amp;</item>            <item>@&amp;</item>-      <item>\&gt;</item>             <item>@&gt;</item>-      <item>\&lt;</item>             <item>@&lt;</item>-      <item>\&quot;</item>           <item>@&quot;</item>-      <item>\::</item>               <item>@::</item>-      <item>\@</item>                <item>@@</item>-      <item>\\</item>                <item>@\</item>-      <item>\~</item>                <item>@~</item>-      <item>\.</item>                <item>@.</item>-      <item>\--</item>               <item>@--</item>-      <item>\---</item>              <item>@---</item>     </list>      <list name="TagWord">@@ -212,6 +195,12 @@       <item>\var</item>              <item>@var</item>       <item>\vhdlflow</item>         <item>@vhdlflow</item>     </list>+    <list name="TagEnd">+      <item>\endcode</item>          <item>@endcode</item>+      <item>\endverbatim</item>      <item>@endverbatim</item>+      <item>\endmsc</item>           <item>@endmsc</item>+      <item>\enddot</item>           <item>@enddot</item>+    </list>     <list name="Note">       <item>\note</item>             <item>@note</item>     </list>@@ -241,174 +230,98 @@       TODO Not all commands are handled properly nowadays :( Need few more contexts...     -->       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">+        <StringDetect attribute="Comment" context="LineComment" String="--!" />+        <StringDetect attribute="Comment" context="LineComment" String="---" />         <RegExpr attribute="Region" context="#stay" String="--\s*@\{\s*$" beginRegion="MemberGroup" />-        <RegExpr attribute="Region" context="#stay" String="--\s*@\}\s*$" endRegion="MemberGroup" />-        <RegExpr attribute="Comment" context="BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" dynamic="true" />-        <Detect2Chars attribute="Comment" context="LineComment" char="-" char1="-" />+        <RegExpr attribute="Region" context="#stay" String="--\s*@\}\s*$"   endRegion="MemberGroup" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="LineComment">-        <LineContinue attribute="Comment" context="#stay" />         <DetectSpaces />         <IncludeRules context="##Alerts" />-        <IncludeRules context="SL_DetectEnv" />-        <keyword attribute="Tags" context="#stay" String="TagOnly" />-        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />-        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />-        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />-        <keyword attribute="Tags" context="SL_TagString" String="TagString" />-        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\][^@\\ \t]+" />         <DetectIdentifier />-        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />-        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-      </context>-      <context attribute="Comment" lineEndContext="#stay" dynamic="true" name="BlockComment">-        <DetectSpaces />-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />-        <IncludeRules context="##Alerts" />-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" beginRegion="Group" />-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" endRegion="Group" />-        <IncludeRules context="SL_DetectEnv" />-        <keyword attribute="Tags" context="#stay" String="TagOnly" />-        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />-        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />-        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />-        <keyword attribute="Tags" context="ML_TagString" String="TagString" />-        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\]([^@\\ \t])+" />-        <DetectIdentifier />-        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />-      </context>--      <!-- NOTE: all contexts beginning with ML_ are for multiline comments-                 The following contexts contain a Detect2Chars that looks for a */ sequence-                 to end multiline comments. Singleline comments do not have this limitation --                 that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed.-                 <IncludeRules context="acontext"> could be used instead but it would make context switching-                 much more complex and very hard to understand! (But use IncludeRules where the rules don't-                 refer to another SL_*/ML_* context, to help maintainability.)-      -->-      <!-- tag contexts -->-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWord">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <IncludeRules context="SL_TagWord" />-      </context>-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagParam">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <DetectSpaces />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />-      </context>-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWordWord">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <DetectSpaces />-        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />-      </context>-      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->-      <context attribute="Comment" lineEndContext="#pop#pop" dynamic="true" name="ML_Tag2ndWord">-        <StringDetect attribute="Comment" context="#pop#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <IncludeRules context="SL_Tag2ndWord" />-      </context>-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagString">-        <DetectSpaces />-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <RegExpr attribute="Description" context="#stay" String="." />-      </context>-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWordString">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <IncludeRules context="SL_TagWordString" />+        <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />+        <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />+        <DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />       </context> -      <!-- html contexts -->-      <context dynamic="true" name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />-        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />-        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" />-      </context>-      <context dynamic="true" name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <IncludeRules context="##Alerts" />-        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />-      </context>-      <context dynamic="true" name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />-        <DetectChar attribute="Types" context="ML_types1" char="'" />-        <DetectChar attribute="Types" context="ML_types2" char="&quot;" />-      </context>-      <context dynamic="true" name="ML_types1" attribute="Types" lineEndContext="#stay">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <DetectChar attribute="Types" context="#pop#pop" char="'" />+      <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartTag">+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />+        <keyword attribute="Tags" context="#pop!SL_TagParam" String="TagParam" />+        <keyword attribute="Tags" context="#pop!SL_TagWordWord" String="TagWordWord" />+        <keyword attribute="Tags" context="#pop!SL_TagString" String="TagString" />+        <keyword attribute="Tags" context="#pop!SL_TagWordString" String="TagWordString" />+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="\code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="@code" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="\f[" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="@f[" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="\msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="@msc" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="\dot" beginRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="@dot" beginRegion="VerbatimBlock" />+        <IncludeRules context="Inc_OtherTag" />       </context>-      <context dynamic="true" name="ML_types2" attribute="Types" lineEndContext="#stay">-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />-        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />+        <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />+        <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="&lt;!--" />+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />       </context> -      <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->       <!-- tag contexts -->       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">         <DetectSpaces />-        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />+        <IncludeRules context="SL_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">         <DetectSpaces />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in]" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[out]" />+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in,out]" />+        <IncludeRules context="SL_Inc_Word" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">         <DetectSpaces />-        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />-      </context>-      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->-      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">-        <DetectSpaces />-        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <RegExpr attribute="Word" context="#pop!SL_TagWord" String="&sl_word;" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">         <DetectSpaces />         <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />         <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />-        <RegExpr attribute="Description" context="#stay" String="." />+        <RegExpr attribute="Description" context="#stay" String="&lt;?[^&lt;\s]+" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">         <DetectSpaces />-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />-        <RegExpr attribute="Word" context="#stay" String="\S" />+        <IncludeRules context="SL_Inc_Word" />       </context>+      <context name="SL_Inc_Word" attribute="Word" lineEndContext="#pop">+        <RegExpr attribute="Word" context="#pop" String="&sl_word;" />+      </context>        <!-- html contexts -->       <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />-        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" />+        <DetectSpaces />+        <DetectChar attribute="Identifier" context="SL_identifiers" char="=" />       </context>       <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <DetectIdentifier />         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />       </context>       <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />+        <DetectSpaces />         <DetectChar attribute="Types" context="SL_types1" char="'" />         <DetectChar attribute="Types" context="SL_types2" char="&quot;" />       </context>@@ -419,59 +332,96 @@         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />       </context> -      <context attribute="Comment" name="SL_DetectEnv" lineEndContext="#pop">-        <RegExpr attribute="Tags" context="Code" String="[@\\]code\b" beginRegion="Code" />-        <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim\b" beginRegion="Verbatim" />-        <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" />-        <RegExpr attribute="Tags" context="Msc" String="[@\\]msc\b" beginRegion="Msc" />-        <RegExpr attribute="Tags" context="Dot" String="[@\\]dot\b" beginRegion="Dot" />-        <keyword attribute="Note" context="#stay" String="Note" />-        <keyword attribute="Warning" context="#stay" String="Warning" />-        <keyword attribute="Attention" context="#stay" String="Attention" />-        <keyword attribute="Todo" context="#stay" String="Todo" />-        <RegExpr attribute="Entities" context="#stay" String="&amp;[A-Za-z]+&#59;" />+      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">+        <DetectSpaces />+        <StringDetect attribute="Comment" context="#pop" String="--!" />+        <RegExpr attribute="Comment" context="#pop#pop#pop" String="." lookAhead="true" endRegion="VerbatimBlock" />       </context> -      <context attribute="Comment" name="SL_DetectComment" lineEndContext="#pop">-        <StringDetect attribute="Comment" context="#pop#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />-        <DetectChar attribute="Comment" context="#stay" char="*" />-        <StringDetect attribute="Comment" context="#stay" String="///" />+      <context name="SL_Code" attribute="Code" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />       </context> -      <context attribute="Code" lineEndContext="#stay" name="Code">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode\b" endRegion="Code" />+      <context name="SL_Verbatim" attribute="Verbatim" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />       </context> -      <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim\b" endRegion="Verbatim" />+      <context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->       </context> -      <context attribute="Formulas" lineEndContext="#stay" name="Formula">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" />+      <context name="SL_FormulaShort" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />         <!-- TODO: How to force LaTeX math context here?? -->         <!-- <IncludeRules context="##LaTeX" /> -->       </context> -      <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc\b" endRegion="Msc" />+      <context name="SL_FormulaEnv" attribute="Word" lineEndContext="SL_FindNextLine">+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />       </context> -      <context attribute="Dot Graph" lineEndContext="#stay" name="Dot">-        <IncludeRules context="SL_DetectComment" />-        <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot\b" endRegion="Dot" />+      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthroughContext="#pop!SL_FormulaEnvFormula">+        <DetectSpaces attribute="Comment" />+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />       </context> +      <context name="SL_FormulaEnvFormula" attribute="Formulas" lineEndContext="SL_FindNextLine">+        <StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />+        <StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />+        <!-- TODO: How to force LaTeX math context here?? -->+        <!-- <IncludeRules context="##LaTeX" /> -->+      </context>++      <context name="SL_Msc" attribute="Message Sequence Chart" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />+      </context>++      <context name="SL_Dot" attribute="Dot Graph" lineEndContext="SL_FindNextLine">+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />+      </context>++      <context name="Entities" attribute="Word" lineEndContext="#stay">+        <RegExpr attribute="Entities" context="#pop" String="&amp;[A-Za-z]+&#59;" />+        <DetectChar attribute="Comment" context="#pop" char="&amp;" />+      </context>++      <context name="Inc_OtherTag" attribute="Comment" lineEndContext="#pop">+        <keyword attribute="Note" context="#pop" String="Note" />+        <keyword attribute="Warning" context="#pop" String="Warning" />+        <keyword attribute="Attention" context="#pop" String="Attention" />+        <keyword attribute="Todo" context="#pop" String="Todo" />+        <keyword attribute="Tags" context="#pop" String="TagOnly" />+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="{" beginRegion="Group" />+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="}" endRegion="Group" />+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="\" char1="~" />+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />+        <keyword attribute="Error" context="#pop" String="TagEnd" />+        <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />+        <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />+        <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />+        <DetectChar attribute="Comment" context="#pop" char="\" />+        <DetectChar attribute="Comment" context="#pop" char="@" />+      </context>++      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectIdentifier />+      </context>+   </contexts>     <itemDatas>       <itemData name="Normal Text"  defStyleNum="dsNormal" />       <itemData name="Tags"         defStyleNum="dsAnnotation" bold="1" />       <itemData name="Custom Tags"  defStyleNum="dsAnnotation" />       <itemData name="Word"         defStyleNum="dsCommentVar" bold="1" italic="0" />-      <itemData name="HTML Tag"     defStyleNum="dsKeyword" color="#000000" bold="1" italic="0" />+      <itemData name="HTML Tag"     defStyleNum="dsKeyword" bold="1" italic="0" />       <itemData name="Entities"     defStyleNum="dsOthers" color="#4086C0" bold="1" italic="1" />       <itemData name="Description"  defStyleNum="dsDocumentation" />       <itemData name="Comment"      defStyleNum="dsComment" />@@ -488,10 +438,11 @@       <itemData name="Warning"      defStyleNum="dsWarning" bold="1" italic="0" />       <itemData name="Attention"    defStyleNum="dsAnnotation" bold="1" italic="0" />       <itemData name="Todo"         defStyleNum="dsAnnotation" bold="1" italic="0" />+      <itemData name="Error"        defStyleNum="dsError" />     </itemDatas>   </highlighting>   <general>-    <keywords casesensitive="1" weakDeliminator="\$~" />+    <keywords casesensitive="1" weakDeliminator="\$" />   </general> </language> <!-- kate: indent-width 2; -->
syntax/dtd.xml view
@@ -3,7 +3,7 @@   <!ENTITY nmtoken "[\-\w\d\.:_]+">   <!ENTITY entref  "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);"> ]>-<language name="DTD" version="2" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">+<language name="DTD" version="3" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">   <highlighting>      <list name="Category">@@ -46,6 +46,7 @@         <DetectSpaces />         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> @@ -101,10 +102,9 @@    <general>     <comments>-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />     </comments>   </general>  </language>-<!-- kate: indent-width 2; indent-mode normal; tab-indents on; -->-+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/eiffel.xml view
@@ -10,7 +10,7 @@  Author of version 1.02: Sebastian Vuorinen -->-<language name="Eiffel" version="2" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">+<language name="Eiffel" version="3" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license=""> 	<highlighting> 		<list name="keywords"> 			<item>agent</item>@@ -97,7 +97,11 @@ 				<DetectChar attribute = "String" char = "&quot;" context="#pop" /> 			</context> -			<context name = "Documentation" attribute="Comment" lineEndContext="#pop" />+			<context name = "Documentation" attribute="Comment" lineEndContext="#pop">+				<DetectSpaces />+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" />+			</context> 		</contexts>  		<itemDatas>@@ -118,8 +122,9 @@  	<general> 		<comments>-			<comment name="singleLine" start="--" />+			<comment name="singleLine" start="--" position="afterwhitespace" /> 		</comments> 		<keywords casesensitive="1" /> 	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/elixir.xml view
@@ -30,7 +30,7 @@           name="Elixir"           section="Sources"           style="elixir"-          version="5">+          version="6">   <highlighting>     <list name="control-flow">       <item>catch</item>@@ -180,6 +180,9 @@         <RegExpr String="\w(?!\w)" attribute="Substitution" context="#pop"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="General Comment">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="MarkdownCode" lineEndContext="#stay" name="Markdown Code">         <RegExpr String="^\s*\`\`\`\s*$" attribute="MarkdownCode" context="#pop"/>@@ -223,3 +226,4 @@     <keywords casesensitive="1" weakDeliminator="!?"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/elm.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Elm" version="2" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">+<language name="Elm" version="4" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">   <highlighting>     <list name="declarations">       <item>type</item>@@ -38,9 +38,9 @@     </list>     <contexts>       <context attribute="Normal" lineEndContext="#stay" name="code">-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />         <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />-        <StringDetect attribute="Comment" context="documentation" String="{-|" />+        <StringDetect attribute="Comment" context="documentation" String="{-|" beginRegion="Documentation" />          <keyword attribute="Keyword"          context="#stay" String="declarations" />         <keyword attribute="Keyword"          context="#stay" String="letExpressions" />@@ -56,7 +56,7 @@         <RegExpr attribute="Name"         context="#stay" String="(\b[a-z]\w*|\b_\b)" />         <RegExpr attribute="Operator"         context="#stay" String="(-&gt;|::|\/\/|\.\.|&amp;&amp;|\|\||\+\+|\|&gt;|&lt;\||&gt;&gt;|&lt;&lt;|==|\/=|&lt;=|&gt;=)" />         <RegExpr attribute="Operator"         context="#stay" String="[+-\/*%=&gt;&lt;^\|!]" />-        <RegExpr attribute="Operator"         context="#stay" String="[@\#$&amp;~?]" />+        <AnyChar attribute="Operator"         context="#stay" String="@#$&amp;~?" />          <RegExpr attribute="Type"             context="#stay" String="\b[A-Z][\w]*" /> @@ -69,10 +69,16 @@         <RegExpr attribute="String"     context="multilineString" String="&quot;&quot;&quot;"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="comment">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="comments">-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="String" lineEndContext="#stay" name="string">         <RegExpr attribute="String" context="#stay" String="\\." />@@ -108,7 +114,7 @@       </context>       <context attribute="Comment" lineEndContext="#stay" name="documentation">         <WordDetect attribute="Comment" context="#stay" String="@docs" />-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Documentation" />       </context>     </contexts> @@ -135,9 +141,10 @@   <general>     <folding indentationsensitive="1"/>     <comments>-      <comment name="singleLine" start="--" />-      <comment name="multiLine" start="{-" end="-}" />+      <comment name="singleLine" start="--" position="afterwhitespace" />+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />     </comments>     <keywords casesensitive="1" /> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/erlang.xml view
@@ -36,7 +36,7 @@                                    - fixed highlighting problem when '@' at end of atom/variable --> -<language name="Erlang" version="3" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">+<language name="Erlang" version="4" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">   <highlighting>     <list name="keywords">       <!-- ====== s3.8 p 24 of erlang spec ===== -->@@ -213,13 +213,14 @@        <!-- finish off the atom in quoted string (allow for escaped single quotes -->       <context name="stringquote" attribute="String" lineEndContext="#pop">-        <RegExpr attribute="String" context="#pop" String="(?:\\&quot;|[^&quot;])*&quot;" />+        <RegExpr attribute="String" context="#pop" String="(?:(?:\\&quot;)?[^&quot;]*)*&quot;" />       </context>              <!-- finish off the comment (allows for alerts) -->       <context name="comment" attribute="Comment" lineEndContext="#pop">         <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> 
syntax/fasm.xml view
@@ -1,897 +1,1750 @@ <?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE language SYSTEM "language.dtd">-<!---"Intel x86 (FASM)" is based on ver. 1.3 of "Intel x86 (NASM)" by Nicola Gigante and Bogdan Drozdowski--Known issues:-* Does not include all 64-bit registers and instructions-* "near" and "far" as in "jmp near MyLabel" is unhandeled.-* Confuses and,or,not,xor,shl instructions,with operators with same name, e.g. "2 shl 4"-* May confuse ah,bh,ch,dh with hexadecimal numbers.--Notes:-* "used" and "defined" are treated opperators and are not highlighted.--->--<language name="Intel x86 (FASM)" section="Assembler" version="2" kateversion="5.0" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">-  <highlighting>-    <list name="registers">-      <!-- General purpose registers -->-      <item>rax</item>-      <item>eax</item>-      <item>ax</item>-      <item>ah</item>-      <item>al</item>-      <item>rbx</item>-      <item>ebx</item>-      <item>bx</item>-      <item>bh</item>-      <item>bl</item>-      <item>rcx</item>-      <item>ecx</item>-      <item>cx</item>-      <item>ch</item>-      <item>cl</item>-      <item>rdx</item>-      <item>edx</item>-      <item>dx</item>-      <item>dh</item>-      <item>dl</item>-      <item>rbp</item>-      <item>ebp</item>-      <item>bp</item>-      <item>rsi</item>-      <item>esi</item>-      <item>si</item>-      <item>rdi</item>-      <item>edi</item>-      <item>di</item>-      <item>rsp</item>-      <item>esp</item>-      <item>sp</item>-      <item>r8</item>-      <item>r9</item>-      <item>r10</item>-      <item>r11</item>-      <item>r12</item>-      <item>r13</item>-      <item>r14</item>-      <item>r15</item>-      <!-- Segmentation registers -->-      <item>cs</item>-      <item>ds</item>-      <item>es</item>-      <item>fs</item>-      <item>gs</item>-      <item>ss</item>-      <!-- Control registers -->-      <item>cr0</item>-      <!--<item>cr1</item>-->-      <item>cr2</item>-      <item>cr3</item>-      <item>cr4</item>-      <!-- Debug registers -->-      <item>dr0</item>-      <item>dr1</item>-      <item>dr2</item>-      <item>dr3</item>-      <item>dr6</item>-      <item>dr7</item>-      <!-- x87 FPU Registers -->-      <item>st</item>-      <!-- MMX registers -->-      <item>mm0</item>-      <item>mm1</item>-      <item>mm2</item>-      <item>mm3</item>-      <item>mm4</item>-      <item>mm5</item>-      <item>mm6</item>-      <item>mm7</item>-      <!-- XMM registers -->-      <item>xmm0</item>-      <item>xmm1</item>-      <item>xmm2</item>-      <item>xmm3</item>-      <item>xmm4</item>-      <item>xmm5</item>-      <item>xmm6</item>-      <item>xmm7</item>-    </list>-    <list name="instructions">-      <item>aaa</item>-      <item>aad</item>-      <item>aam</item>-      <item>aas</item>-      <item>adc</item>-      <item>add</item>-      <item>addpd</item>-      <item>addps</item>-      <item>addsd</item>-      <item>addss</item>-      <item>addsubpd</item>-      <item>addsubps</item>-      <item>and</item>-      <item>andnpd</item>-      <item>andnps</item>-      <item>andpd</item>-      <item>andps</item>-      <item>arpl</item>-      <item>bound</item>-      <item>bsf</item>-      <item>bsr</item>-      <item>bswap</item>-      <item>bt</item>-      <item>btc</item>-      <item>btr</item>-      <item>bts</item>-      <item>call</item>-      <item>cbw</item>-      <item>cwde</item>-      <item>cwd</item>-      <item>cdq</item>-      <item>cdqe</item>-      <item>cqo</item>-      <item>clc</item>-      <item>cld</item>-      <item>clgi</item>-      <item>cli</item>-      <item>clts</item>-      <item>clflush</item>-      <item>cmc</item>-      <item>cmova</item>-      <item>cmovae</item>-      <item>cmovb</item>-      <item>cmovbe</item>-      <item>cmovc</item>-      <item>cmove</item>-      <item>cmovg</item>-      <item>cmovge</item>-      <item>cmovl</item>-      <item>cmovle</item>-      <item>cmovna</item>-      <item>cmovnae</item>-      <item>cmovnb</item>-      <item>cmovnbe</item>-      <item>cmovnc</item>-      <item>cmovne</item>-      <item>cmovng</item>-      <item>cmovnge</item>-      <item>cmovnl</item>-      <item>cmovnle</item>-      <item>cmovno</item>-      <item>cmovnp</item>-      <item>cmovns</item>-      <item>cmovnz</item>-      <item>cmovo</item>-      <item>cmovp</item>-      <item>cmovpe</item>-      <item>cmovpo</item>-      <item>cmovs</item>-      <item>cmovz</item>-      <item>cmp</item>-      <item>cmpeqpd</item>-      <item>cmpeqps</item>-      <item>cmpeqsd</item>-      <item>cmpeqss</item>-      <item>cmplepd</item>-      <item>cmpleps</item>-      <item>cmplesd</item>-      <item>cmpless</item>-      <item>cmpltpd</item>-      <item>cmpltps</item>-      <item>cmpltsd</item>-      <item>cmpltss</item>-      <item>cmpneqpd</item>-      <item>cmpneqps</item>-      <item>cmpneqsd</item>-      <item>cmpneqss</item>-      <item>cmpnlepd</item>-      <item>cmpnleps</item>-      <item>cmpnlesd</item>-      <item>cmpnless</item>-      <item>cmpnltpd</item>-      <item>cmpnltps</item>-      <item>cmpnltsd</item>-      <item>cmpnltss</item>-      <item>cmpordpd</item>-      <item>cmpordps</item>-      <item>cmpordsd</item>-      <item>cmpordss</item>-      <item>cmppd</item>-      <item>cmpps</item>-      <item>cmps</item>-      <item>cmpsb</item>-      <item>cmpsd</item>-      <item>cmpss</item>-      <item>cmpsw</item>-      <item>cmpunordpd</item>-      <item>cmpunordps</item>-      <item>cmpunordsd</item>-      <item>cmpunordss</item>-      <item>cmpxchg</item>-      <item>cmpxchg486</item>-      <item>cmpxchg8b</item>-      <item>cmpxchg16b</item>-      <item>comisd</item>-      <item>comiss</item>-      <item>cpuid</item>-      <item>cvtdq2pd</item>-      <item>cvtdq2ps</item>-      <item>cvtpd2dq</item>-      <item>cvtpd2pi</item>-      <item>cvtpd2ps</item>-      <item>cvtpi2pd</item>-      <item>cvtpi2ps</item>-      <item>cvtps2dq</item>-      <item>cvtps2pd</item>-      <item>cvtps2pi</item>-      <item>cvtsd2si</item>-      <item>cvtsd2ss</item>-      <item>cvtsi2sd</item>-      <item>cvtsi2ss</item>-      <item>cvtss2sd</item>-      <item>cvtss2si</item>-      <item>cvttpd2dq</item>-      <item>cvttpd2pi</item>-      <item>cvttps2dq</item>-      <item>cvttps2pi</item>-      <item>cvttsd2si</item>-      <item>cvttss2si</item>-      <item>daa</item>-      <item>das</item>-      <item>dec</item>-      <item>div</item>-      <item>divpd</item>-      <item>divps</item>-      <item>divsd</item>-      <item>divss</item>-      <item>emms</item>-      <item>enter</item>-      <item>f2xm1</item>-      <item>fabs</item>-      <item>fadd</item>-      <item>faddp</item>-      <item>fbld</item>-      <item>fbstp</item>-      <item>fchs</item>-      <item>fclex</item>-      <item>fnclex</item>-      <item>fcmovb</item>-      <item>fcmovbe</item>-      <item>fcmove</item>-      <item>fcmovnb</item>-      <item>fcmovnbe</item>-      <item>fcmovne</item>-      <item>fcmovnu</item>-      <item>fcmovu</item>-      <item>fcom</item>-      <item>fcomp</item>-      <item>fcompp</item>-      <item>fcomi</item>-      <item>fcomip</item>-      <item>fcos</item>-      <item>fdecstp</item>-      <item>fdisi</item>-      <item>feni</item>-      <item>fdiv</item>-      <item>fdivr</item>-      <item>fdivp</item>-      <item>fdivrp</item>-      <item>femms</item>-      <item>ffree</item>-      <item>ffreep</item>-      <item>fiadd</item>-      <item>ficom</item>-      <item>ficomp</item>-      <item>fidiv</item>-      <item>fidivr</item>-      <item>fild</item>-      <item>fimul</item>-      <item>fincstp</item>-      <item>finit</item>-      <item>fist</item>-      <item>fistp</item>-      <item>fisttp</item>-      <item>fisub</item>-      <item>fisubr</item>-      <item>fld</item>-      <item>fld1</item>-      <item>fldl2e</item>-      <item>fldl2t</item>-      <item>fldlg2</item>-      <item>fldln2</item>-      <item>fldcw</item>-      <item>fldenv</item>-      <item>fldpi</item>-      <item>fldz</item>-      <item>fmul</item>-      <item>fmulp</item>-      <item>fndisi</item>-      <item>fneni</item>-      <item>fninit</item>-      <item>fnop</item>-      <item>fnsave</item>-      <item>fnstcw</item>-      <item>fnstenv</item>-      <item>fnstsw</item>-      <item>fnwait</item>-      <item>fpatan</item>-      <item>fptan</item>-      <item>fprem</item>-      <item>fprem1</item>-      <item>frndint</item>-      <item>frstor</item>-      <item>fsave</item>-      <item>fscale</item>-      <item>fsetpm</item>-      <item>fsin</item>-      <item>fsincos</item>-      <item>fsqrt</item>-      <item>fst</item>-      <item>fstp</item>-      <item>fstcw</item>-      <item>fstenv</item>-      <item>fstsw</item>-      <item>fsub</item>-      <item>fsubr</item>-      <item>fsubp</item>-      <item>fsubrp</item>-      <item>ftst</item>-      <item>fucom</item>-      <item>fucomp</item>-      <item>fucompp</item>-      <item>fucomi</item>-      <item>fucomip</item>-      <item>fwait</item>-      <item>fxam</item>-      <item>fxch</item>-      <item>fxrstor</item>-      <item>fxsave</item>-      <item>fxtract</item>-      <item>fyl2x</item>-      <item>fyl2xp1</item>-      <item>haddpd</item>-      <item>haddps</item>-      <item>hlt</item>-      <item>hsubpd</item>-      <item>hsubps</item>-      <item>ibts</item>-      <item>idiv</item>-      <item>imul</item>-      <item>in</item>-      <item>inc</item>-      <item>ins</item>-      <item>insb</item>-      <item>insd</item>-      <item>insw</item>-      <item>int</item>-      <item>int1</item>-      <item>int3</item>-      <item>into</item>-      <item>invd</item>-      <item>invlpg</item>-      <item>invlpga</item>-      <item>iret</item>-      <item>iretd</item>-      <item>iretq</item>-      <item>iretw</item>-      <item>ja</item>-      <item>jae</item>-      <item>jb</item>-      <item>jbe</item>-      <item>jc</item>-      <item>je</item>-      <item>jg</item>-      <item>jge</item>-      <item>jl</item>-      <item>jle</item>-      <item>jna</item>-      <item>jnae</item>-      <item>jnb</item>-      <item>jnbe</item>-      <item>jnc</item>-      <item>jne</item>-      <item>jng</item>-      <item>jnge</item>-      <item>jnl</item>-      <item>jnle</item>-      <item>jno</item>-      <item>jnp</item>-      <item>jns</item>-      <item>jnz</item>-      <item>jo</item>-      <item>jp</item>-      <item>jpe</item>-      <item>jpo</item>-      <item>js</item>-      <item>jz</item>-      <item>jcxz</item>-      <item>jecxz</item>-      <item>jrcxz</item>-      <item>jmp</item>-      <item>lahf</item>-      <item>lar</item>-      <item>lddqu</item>-      <item>ldmxcsr</item>-      <item>lds</item>-      <item>les</item>-      <item>lea</item>-      <item>leave</item>-      <item>lfence</item>-      <item>lfs</item>-      <item>lgdt</item>-      <item>lgs</item>-      <item>lidt</item>-      <item>lldt</item>-      <item>lmsw</item>-      <item>loadall</item>-      <item>loadall286</item>-      <item>lods</item>-      <item>lodsb</item>-      <item>lodsd</item>-      <item>lodsq</item>-      <item>lodsw</item>-      <item>loop</item>-      <item>loope</item>-      <item>loopne</item>-      <item>loopnz</item>-      <item>loopz</item>-      <item>lsl</item>-      <item>lss</item>-      <item>ltr</item>-      <item>maskmovdqu</item>-      <item>maskmovq</item>-      <item>maxpd</item>-      <item>maxps</item>-      <item>maxsd</item>-      <item>maxss</item>-      <item>mfence</item>-      <item>minpd</item>-      <item>minps</item>-      <item>minsd</item>-      <item>minss</item>-      <item>monitor</item>-      <item>mov</item>-      <item>movapd</item>-      <item>movaps</item>-      <item>movd</item>-      <item>movddup</item>-      <item>movdq2q</item>-      <item>movdqa</item>-      <item>movdqu</item>-      <item>movhlps</item>-      <item>movhpd</item>-      <item>movhps</item>-      <item>movlhps</item>-      <item>movlpd</item>-      <item>movlps</item>-      <item>movmskpd</item>-      <item>movmskps</item>-      <item>movntdq</item>-      <item>movnti</item>-      <item>movntpd</item>-      <item>movntps</item>-      <item>movntq</item>-      <item>movq</item>-      <item>movq2dq</item>-      <item>movs</item>-      <item>movsb</item>-      <item>movsd</item>-      <item>movshdup</item>-      <item>movsldup</item>-      <item>movsq</item>-      <item>movss</item>-      <item>movsx</item>-      <item>movsxd</item>-      <item>movsw</item>-      <item>movupd</item>-      <item>movups</item>-      <item>movzx</item>-      <item>mul</item>-      <item>mulpd</item>-      <item>mulps</item>-      <item>mulsd</item>-      <item>mulss</item>-      <item>mwait</item>-      <item>neg</item>-      <item>nop</item>-      <item>not</item>-      <item>or</item>-      <item>orpd</item>-      <item>orps</item>-      <item>out</item>-      <item>outs</item>-      <item>outsb</item>-      <item>outsw</item>-      <item>outsd</item>-      <item>packssdw</item>-      <item>packsswb</item>-      <item>packuswb</item>-      <item>paddb</item>-      <item>paddd</item>-      <item>paddq</item>-      <item>paddsb</item>-      <item>paddsw</item>-      <item>paddusb</item>-      <item>paddusw</item>-      <item>paddw</item>-      <item>pand</item>-      <item>pandn</item>-      <item>pause</item>-      <item>pavgb</item>-      <item>pavgusb</item>-      <item>pavgw</item>-      <item>pcmpeqb</item>-      <item>pcmpeqw</item>-      <item>pcmpeqd</item>-      <item>pcmpgtb</item>-      <item>pcmpgtw</item>-      <item>pcmpgtd</item>-      <item>pdistib</item>-      <item>pextrw</item>-      <item>pf2id</item>-      <item>pf2iw</item>-      <item>pfacc</item>-      <item>pfadd</item>-      <item>pfcmpeq</item>-      <item>pfcmpge</item>-      <item>pfcmpgt</item>-      <item>pfmax</item>-      <item>pfmin</item>-      <item>pfmul</item>-      <item>pfnacc</item>-      <item>pfpnacc</item>-      <item>pfrcp</item>-      <item>pfrcpit1</item>-      <item>pfrcpit2</item>-      <item>pfrsqit1</item>-      <item>pfrsqrt</item>-      <item>pfsub</item>-      <item>pfsubr</item>-      <item>pi2fd</item>-      <item>pi2fw</item>-      <item>pinsrw</item>-      <item>pmachriw</item>-      <item>pmaddwd</item>-      <item>pmagw</item>-      <item>pmaxsw</item>-      <item>pmaxub</item>-      <item>pminsw</item>-      <item>pminub</item>-      <item>pmovmskb</item>-      <item>pmulhrw</item>-      <item>pmulhuw</item>-      <item>pmulhw</item>-      <item>pmullw</item>-      <item>pmuludq</item>-      <item>pmvgezb</item>-      <item>pmvlzb</item>-      <item>pmvnzb</item>-      <item>pmvzb</item>-      <item>pop</item>-      <item>popa</item>-      <item>popaw</item>-      <item>popad</item>-      <item>popf</item>-      <item>popfw</item>-      <item>popfd</item>-      <item>popfq</item>-      <item>por</item>-      <item>prefetch</item>-      <item>prefetchnta</item>-      <item>prefetcht0</item>-      <item>prefetcht1</item>-      <item>prefetcht2</item>-      <item>prefetchw</item>-      <item>psadbw</item>-      <item>pshufd</item>-      <item>pshufhw</item>-      <item>pshuflw</item>-      <item>pshufw</item>-      <item>pslld</item>-      <item>pslldq</item>-      <item>psllq</item>-      <item>psllw</item>-      <item>psrad</item>-      <item>psraw</item>-      <item>psrld</item>-      <item>psrldq</item>-      <item>psrlq</item>-      <item>psrlw</item>-      <item>psubb</item>-      <item>psubd</item>-      <item>psubq</item>-      <item>psubsb</item>-      <item>psubsiw</item>-      <item>psubsw</item>-      <item>psubusb</item>-      <item>psubusw</item>-      <item>psubw</item>-      <item>pswapd</item>-      <item>punpckhbw</item>-      <item>punpckhdq</item>-      <item>punpckhqdq</item>-      <item>punpckhwd</item>-      <item>punpcklbw</item>-      <item>punpckldq</item>-      <item>punpcklqdq</item>-      <item>punpcklwd</item>-      <item>push</item>-      <item>pusha</item>-      <item>pushad</item>-      <item>pushaw</item>-      <item>pushf</item>-      <item>pushfd</item>-      <item>pushfq</item>-      <item>pushfw</item>-      <item>pxor</item>-      <item>rcl</item>-      <item>rcr</item>-      <item>rcpps</item>-      <item>rcpss</item>-      <item>rdmsr</item>-      <item>rdpmc</item>-      <item>rdshr</item>-      <item>rdtsc</item>-      <item>rdtscp</item>-      <item>ret</item>-      <item>retf</item>-      <item>retn</item>-      <item>rol</item>-      <item>ror</item>-      <item>rsdc</item>-      <item>rsldt</item>-      <item>rsm</item>-      <item>rsqrtps</item>-      <item>rsqrtss</item>-      <item>rsts</item>-      <item>sahf</item>-      <item>sal</item>-      <item>sar</item>-      <item>salc</item>-      <item>sbb</item>-      <item>scas</item>-      <item>scasb</item>-      <item>scasd</item>-      <item>scasq</item>-      <item>scasw</item>-      <item>seta</item>-      <item>setae</item>-      <item>setb</item>-      <item>setbe</item>-      <item>setc</item>-      <item>sete</item>-      <item>setg</item>-      <item>setge</item>-      <item>setl</item>-      <item>setle</item>-      <item>setna</item>-      <item>setnae</item>-      <item>setnb</item>-      <item>setnbe</item>-      <item>setnc</item>-      <item>setne</item>-      <item>setng</item>-      <item>setnge</item>-      <item>setnl</item>-      <item>setnle</item>-      <item>setno</item>-      <item>setnp</item>-      <item>setns</item>-      <item>setnz</item>-      <item>seto</item>-      <item>setp</item>-      <item>setpe</item>-      <item>setpo</item>-      <item>sets</item>-      <item>setz</item>-      <item>sfence</item>-      <item>sgdt</item>-      <item>shl</item>-      <item>shld</item>-      <item>shr</item>-      <item>shrd</item>-      <item>shufpd</item>-      <item>shufps</item>-      <item>sidt</item>-      <item>skinit</item>-      <item>sldt</item>-      <item>smi</item>-      <item>smint</item>-      <item>smintold</item>-      <item>smsw</item>-      <item>sqrtpd</item>-      <item>sqrtps</item>-      <item>sqrtsd</item>-      <item>sqrtss</item>-      <item>stc</item>-      <item>std</item>-      <item>stgi</item>-      <item>sti</item>-      <item>stmxcsr</item>-      <item>stos</item>-      <item>stosb</item>-      <item>stosd</item>-      <item>stosq</item>-      <item>stosw</item>-      <item>str</item>-      <item>sub</item>-      <item>subpd</item>-      <item>subps</item>-      <item>subsd</item>-      <item>subss</item>-      <item>svdc</item>-      <item>svldt</item>-      <item>svts</item>-      <item>swapgs</item>-      <item>syscall</item>-      <item>sysenter</item>-      <item>sysexit</item>-      <item>sysret</item>-      <item>test</item>-      <item>ucomisd</item>-      <item>ucomiss</item>-      <item>ud0</item>-      <item>ud1</item>-      <item>ud2</item>-      <item>umov</item>-      <item>unpckhpd</item>-      <item>unpckhps</item>-      <item>unpcklpd</item>-      <item>unpcklps</item>-      <item>verr</item>-      <item>verw</item>-      <item>vmload</item>-      <item>vmmcall</item>-      <item>vmrun</item>-      <item>vmsave</item>-      <item>wait</item>-      <item>wbinvd</item>-      <item>wrmsr</item>-      <item>wrshr</item>-      <item>xadd</item>-      <item>xbts</item>-      <item>xchg</item>-      <item>xlat</item>-      <item>xlatb</item>-      <item>xor</item>-      <item>xorpd</item>-      <item>xorps</item>-    </list>--    <list name="Data">-      <!-- Initialized data (1.2.2)-->-      <item>db</item>-      <item>dw</item>-      <item>du</item>-      <item>dd</item>-      <item>dp</item>-      <item>df</item>-      <item>dq</item>-      <item>dt</item>-      <!-- Uninitialized data (1.2.2)-->-      <item>rb</item>-      <item>rw</item>-      <item>rd</item>-      <item>rp</item>-      <item>rf</item>-      <item>rq</item>-      <item>rt</item>-      <!-- binary file include (1.2.2)-->-      <item>file</item>-      <!-- operand size from (1.2.1)-->-      <item>byte</item>-      <item>word</item>-      <item>dword</item>-      <item>pword</item>-      <item>qword</item>-      <item>tbyte</item>-      <item>tword</item>-      <item>dqword</item>-      <item>ptr</item>-    </list>--    <list name="Preprocessor Keywords"> <!-- Contains keywords for macros, structures, etc... -->-      <item>append</item>-      <item>at</item>   <!-- As in "virtual at"-->-      <item>break</item>-      <item>common</item>-      <item>display</item>-      <item>else</item>-      <item>end</item> <!-- As in "end if"-->-      <item>equ</item>-      <item>fix</item>-      <item>foward</item>-      <item>if</item>-      <item>irp</item>-      <item>irps</item>-      <item>label</item>-      <item>local</item>-      <item>match</item>-      <item>macro</item>-      <item>purge</item>-      <item>repeat</item>-      <item>rept</item>-      <item>reverse</item>-      <item>restore</item>-      <item>struc</item>-      <item>times</item>-      <item>while</item>-      <item>virtual</item>-    </list>--    <list name="Instruction-like Keywords"> <!-- Contains instruction-like keywords -->-      <item>align</item>-      <item>entry</item>-      <item>extrn</item>-      <item>format</item>-      <item>include</item>-      <item>invoke</item>-      <item>data</item>-      <item>load</item>-      <item>from</item>-      <item>heap</item>-      <item>org</item>-      <item>proc</item>-      <item>public</item>-      <item>section</item>-      <item>segment</item>-      <item>stack</item>-      <item>store</item>-      <item>use16</item>-      <item>use32</item>-      <item>use64</item>-    </list>--    <contexts>-      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">-        <keyword attribute="Registers" context="#stay" String="registers"/>-        <keyword attribute="Data" context="#stay" String="Data"/>-        <keyword attribute="Instructions" context="#stay" String="instructions"/>-        <keyword attribute="Instructions" context="#stay" String="Instruction-like Keywords"/>-        <keyword attribute="Preprocessor" context="#stay" String="Preprocessor Keywords"/>-        <DetectChar attribute="Comment" context="Comment" char=";"/>-        <AnyChar attribute="String" context="String" String="&quot;'"/>-        <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9@_.$?]+:"/>-        <!-- Conditional instructions -->-        <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/>-        <!-- hexadecimal numbers -->-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[a-f0-9]+h)([ \t,]+|$)"/>-        <!-- octal and binary numbers -->-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/>-        <DetectChar attribute="Number" context="#stay" char="$"/>-        <HlCOct attribute="BaseN" context="#stay"/>-        <HlCHex attribute="BaseN" context="#stay"/>-        <Float attribute="Float" context="#stay"/>-        <Int attribute="Number" context="#stay"/>-        <HlCChar attribute="Char" context="#stay"/>-      </context>-      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>-      <context name="String" attribute="String" lineEndContext="#pop">-        <AnyChar attribute="String" context="#pop" String="&quot;'"/>-      </context>-    </contexts>--    <itemDatas>-      <itemData name="Normal Text" defStyleNum="dsNormal"/>-      <itemData name="Registers" defStyleNum="dsKeyword"/>-      <itemData name="Instructions" defStyleNum="dsBuiltIn"/>-      <itemData name="Comment" defStyleNum="dsComment"/>-      <itemData name="Label" defStyleNum="dsFunction"/>-      <itemData name="Data" defStyleNum="dsDataType"/>-      <itemData name="BaseN" defStyleNum="dsBaseN"/>-      <itemData name="Float" defStyleNum="dsFloat"/>-      <itemData name="Number" defStyleNum="dsDecVal"/>-      <itemData name="Char" defStyleNum="dsChar"/>-      <itemData name="String" defStyleNum="dsString"/>-      <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>-    </itemDatas>-  </highlighting>-  <general>-    <keywords casesensitive="0"/>-    <comments>-      <comment name="singleLine" start=";"/>+<!DOCTYPE language SYSTEM "language.dtd"+[+    <!ENTITY float "[0-9]++(?:\.[0-9]*+(?:e[-+]?[0-9]*+)?|(?=f\b)|e[-+]?[0-9]++\b)">++    <!ENTITY hex_cont "[0-9a-f]*+(?=h)">+    <!ENTITY oct_hex_cont "[0-7]*+(?:&hex_cont;|(?=[oqh]))">+    <!ENTITY hex "[0-9]&hex_cont;">+    <!ENTITY oct_hex "[0-7]&oct_hex_cont;">+    <!ENTITY bin_oct_hex "[01]*+(?:&oct_hex_cont;|(?=[byoqh]))">+    <!ENTITY baseN "0x[0-9a-f]*+|&bin_oct_hex;|&oct_hex;|&hex;">++    <!ENTITY number "[0-9]*+(?:to[0-9]+|(?=d?))">+]>+<language name="Intel x86 (FASM)" section="Assembler" version="4" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">+  <highlighting>+    <list name="registers">+      <!-- General purpose registers -->+      <item>rax</item>+      <item>eax</item>+      <item>ax</item>+      <item>ah</item>+      <item>al</item>+      <item>rbx</item>+      <item>ebx</item>+      <item>bx</item>+      <item>bh</item>+      <item>bl</item>+      <item>rcx</item>+      <item>ecx</item>+      <item>cx</item>+      <item>ch</item>+      <item>cl</item>+      <item>rdx</item>+      <item>edx</item>+      <item>dx</item>+      <item>dh</item>+      <item>dl</item>+      <item>rbp</item>+      <item>ebp</item>+      <item>bp</item>+      <item>rsi</item>+      <item>esi</item>+      <item>si</item>+      <item>rdi</item>+      <item>edi</item>+      <item>di</item>+      <item>rsp</item>+      <item>esp</item>+      <item>sp</item>+      <item>r8</item>+      <item>r9</item>+      <item>r10</item>+      <item>r11</item>+      <item>r12</item>+      <item>r13</item>+      <item>r14</item>+      <item>r15</item>+      <!-- Segmentation registers -->+      <item>cs</item>+      <item>ds</item>+      <item>es</item>+      <item>fs</item>+      <item>gs</item>+      <item>ss</item>+      <!-- Control registers -->+      <item>cr0</item>+      <!--<item>cr1</item>-->+      <item>cr2</item>+      <item>cr3</item>+      <item>cr4</item>+      <!-- Debug registers -->+      <item>dr0</item>+      <item>dr1</item>+      <item>dr2</item>+      <item>dr3</item>+      <item>dr6</item>+      <item>dr7</item>+      <!-- x87 FPU Registers -->+      <item>st0</item>+      <item>st1</item>+      <item>st2</item>+      <item>st3</item>+      <item>st4</item>+      <item>st5</item>+      <item>st6</item>+      <item>st7</item>+      <!-- MMX registers -->+      <item>mm0</item>+      <item>mm1</item>+      <item>mm2</item>+      <item>mm3</item>+      <item>mm4</item>+      <item>mm5</item>+      <item>mm6</item>+      <item>mm7</item>+      <!-- SEE registers -->+      <item>xmm0</item>+      <item>xmm1</item>+      <item>xmm2</item>+      <item>xmm3</item>+      <item>xmm4</item>+      <item>xmm5</item>+      <item>xmm6</item>+      <item>xmm7</item>+      <!-- AVX registers -->+      <item>ymm0</item>+      <item>ymm1</item>+      <item>ymm2</item>+      <item>ymm3</item>+      <item>ymm4</item>+      <item>ymm5</item>+      <item>ymm6</item>+      <item>ymm7</item>+      <!-- AVX-512 registers -->+      <item>zmm0</item>+      <item>zmm1</item>+      <item>zmm2</item>+      <item>zmm3</item>+      <item>zmm4</item>+      <item>zmm5</item>+      <item>zmm6</item>+      <item>zmm7</item>+      <!-- Opmask registers -->+      <item>k0</item>+      <item>k1</item>+      <item>k2</item>+      <item>k3</item>+      <item>k4</item>+      <item>k5</item>+      <item>k6</item>+      <item>k7</item>+      <!-- Bounds -->+      <item>bnd0</item>+      <item>bnd1</item>+      <item>bnd2</item>+      <item>bnd3</item>+    </list>++    <list name="branch instructions">+      <item>call</item>+      <item>ja</item>+      <item>jae</item>+      <item>jb</item>+      <item>jbe</item>+      <item>jc</item>+      <item>je</item>+      <item>jg</item>+      <item>jge</item>+      <item>jl</item>+      <item>jle</item>+      <item>jmp</item>+      <item>jna</item>+      <item>jnae</item>+      <item>jnb</item>+      <item>jnbe</item>+      <item>jnc</item>+      <item>jne</item>+      <item>jng</item>+      <item>jnge</item>+      <item>jnl</item>+      <item>jnle</item>+      <item>jno</item>+      <item>jnp</item>+      <item>jns</item>+      <item>jnz</item>+      <item>jo</item>+      <item>jp</item>+      <item>jpe</item>+      <item>jpo</item>+      <item>js</item>+      <item>jz</item>+      <item>jcxz</item>+      <item>jecxz</item>+      <item>loop</item>+      <item>loopd</item>+      <item>loope</item>+      <item>looped</item>+      <item>loopew</item>+      <item>loopne</item>+      <item>loopned</item>+      <item>loopnew</item>+      <item>loopnz</item>+      <item>loopnzd</item>+      <item>loopnzw</item>+      <item>loopw</item>+      <item>loopz</item>+      <item>loopzd</item>+      <item>loopzw</item>+      <item>loopnz</item>+      <item>loopnzd</item>+      <item>loopnzw</item>+      <item>loopz</item>+      <item>loopzw</item>+      <item>ret</item>+      <item>retd</item>+      <item>retf</item>+      <item>retfd</item>+      <item>retfw</item>+      <item>retn</item>+      <item>retnd</item>+      <item>retnw</item>+      <item>retw</item>+      <item>iret</item>+      <item>iretd</item>+      <item>iretq</item>+      <item>iretw</item>+      <item>rsm</item>+      <item>syscall</item>+      <item>sysenter</item>+      <item>sysexit</item>+      <item>sysret</item>+      <item>syscallq</item>+      <item>sysretq</item>+    </list>++    <list name="instructions">+      <item>aaa</item>+      <item>aad</item>+      <item>aam</item>+      <item>aas</item>+      <item>adc</item>+      <item>add</item>+      <item>addpd</item>+      <item>addps</item>+      <item>addsd</item>+      <item>addss</item>+      <item>addsubpd</item>+      <item>addsubps</item>+      <item>aesdec</item>+      <item>aesdeclast</item>+      <item>aesenc</item>+      <item>aesenclast</item>+      <item>aesimc</item>+      <item>aeskeygenassist</item>+      <item>and</item>+      <item>andn</item>+      <item>andnpd</item>+      <item>andnps</item>+      <item>andpd</item>+      <item>andps</item>+      <item>arpl</item>+      <item>bextr</item>+      <item>blcfill</item>+      <item>blci</item>+      <item>blcic</item>+      <item>blcmsk</item>+      <item>blcs</item>+      <item>blendpd</item>+      <item>blendps</item>+      <item>blendvpd</item>+      <item>blendvps</item>+      <item>blsfill</item>+      <item>blsi</item>+      <item>blsic</item>+      <item>blsmsk</item>+      <item>blsr</item>+      <item>bndldx</item>+      <item>bndmk</item>+      <item>bndstx</item>+      <item>bound</item>+      <item>bsf</item>+      <item>bsr</item>+      <item>bswap</item>+      <item>bt</item>+      <item>btc</item>+      <item>btr</item>+      <item>bts</item>+      <item>bzhi</item>+      <item>cbw</item>+      <item>cdq</item>+      <item>cdqe</item>+      <item>clc</item>+      <item>cld</item>+      <item>clflush</item>+      <item>clgi</item>+      <item>cli</item>+      <item>clts</item>+      <item>cmc</item>+      <item>cmov</item>+      <item>cmova</item>+      <item>cmovae</item>+      <item>cmovb</item>+      <item>cmovbe</item>+      <item>cmovc</item>+      <item>cmove</item>+      <item>cmovg</item>+      <item>cmovge</item>+      <item>cmovl</item>+      <item>cmovle</item>+      <item>cmovna</item>+      <item>cmovnae</item>+      <item>cmovnb</item>+      <item>cmovnbe</item>+      <item>cmovnc</item>+      <item>cmovne</item>+      <item>cmovng</item>+      <item>cmovnge</item>+      <item>cmovnl</item>+      <item>cmovnle</item>+      <item>cmovno</item>+      <item>cmovnp</item>+      <item>cmovns</item>+      <item>cmovnz</item>+      <item>cmovo</item>+      <item>cmovp</item>+      <item>cmovpe</item>+      <item>cmovpo</item>+      <item>cmovs</item>+      <item>cmovz</item>+      <item>cmp</item>+      <item>cmpeq</item>+      <item>cmpeqpd</item>+      <item>cmpeqps</item>+      <item>cmpeqsd</item>+      <item>cmpeqss</item>+      <item>cmple</item>+      <item>cmplepd</item>+      <item>cmpleps</item>+      <item>cmplesd</item>+      <item>cmpless</item>+      <item>cmplt</item>+      <item>cmpltpd</item>+      <item>cmpltps</item>+      <item>cmpltsd</item>+      <item>cmpltss</item>+      <item>cmpneq</item>+      <item>cmpneqpd</item>+      <item>cmpneqps</item>+      <item>cmpneqsd</item>+      <item>cmpneqss</item>+      <item>cmpnle</item>+      <item>cmpnlepd</item>+      <item>cmpnleps</item>+      <item>cmpnlesd</item>+      <item>cmpnless</item>+      <item>cmpnlt</item>+      <item>cmpnltpd</item>+      <item>cmpnltps</item>+      <item>cmpnltsd</item>+      <item>cmpnltss</item>+      <item>cmpord</item>+      <item>cmpordpd</item>+      <item>cmpordps</item>+      <item>cmpordsd</item>+      <item>cmpordss</item>+      <item>cmppd</item>+      <item>cmpps</item>+      <item>cmps</item>+      <item>cmpsb</item>+      <item>cmpsd</item>+      <item>cmpsq</item>+      <item>cmpss</item>+      <item>cmpsw</item>+      <item>cmpunord</item>+      <item>cmpunordpd</item>+      <item>cmpunordps</item>+      <item>cmpunordsd</item>+      <item>cmpunordss</item>+      <item>cmpxchg16b</item>+      <item>cmpxchg486</item>+      <item>cmpxchg8b</item>+      <item>cmpxchg</item>+      <item>comisd</item>+      <item>comiss</item>+      <item>compare</item>+      <item>cpuid</item>+      <item>cqo</item>+      <item>crc32</item>+      <item>cvtdq2pd</item>+      <item>cvtdq2ps</item>+      <item>cvtpd2dq</item>+      <item>cvtpd2pi</item>+      <item>cvtpd2ps</item>+      <item>cvtpi2pd</item>+      <item>cvtpi2ps</item>+      <item>cvtps2dq</item>+      <item>cvtps2pd</item>+      <item>cvtps2pi</item>+      <item>cvtsd2si</item>+      <item>cvtsd2ss</item>+      <item>cvtsi2sd</item>+      <item>cvtsi2ss</item>+      <item>cvtss2sd</item>+      <item>cvtss2si</item>+      <item>cvttpd2dq</item>+      <item>cvttpd2pi</item>+      <item>cvttps2dq</item>+      <item>cvttps2pi</item>+      <item>cvttsd2si</item>+      <item>cvttss2si</item>+      <item>cwd</item>+      <item>cwde</item>+      <item>daa</item>+      <item>das</item>+      <item>dec</item>+      <item>div</item>+      <item>divpd</item>+      <item>divps</item>+      <item>divsd</item>+      <item>divss</item>+      <item>dppd</item>+      <item>dpps</item>+      <item>emms</item>+      <item>enter</item>+      <item>extractps</item>+      <item>extrq</item>+      <item>f2xm1</item>+      <item>fabs</item>+      <item>fadd</item>+      <item>faddp</item>+      <item>fbld</item>+      <item>fbstp</item>+      <item>fchs</item>+      <item>fclex</item>+      <item>fcmovb</item>+      <item>fcmovbe</item>+      <item>fcmove</item>+      <item>fcmovnb</item>+      <item>fcmovnbe</item>+      <item>fcmovne</item>+      <item>fcmovnu</item>+      <item>fcmovu</item>+      <item>fcom</item>+      <item>fcomi</item>+      <item>fcomip</item>+      <item>fcomp</item>+      <item>fcompp</item>+      <item>fcos</item>+      <item>fdecstp</item>+      <item>fdisi</item>+      <item>fdiv</item>+      <item>fdivp</item>+      <item>fdivr</item>+      <item>fdivrp</item>+      <item>femms</item>+      <item>feni</item>+      <item>ffree</item>+      <item>ffreep</item>+      <item>fiadd</item>+      <item>ficom</item>+      <item>ficomp</item>+      <item>fidiv</item>+      <item>fidivr</item>+      <item>fild</item>+      <item>fimul</item>+      <item>fincstp</item>+      <item>finit</item>+      <item>fist</item>+      <item>fistp</item>+      <item>fisttp</item>+      <item>fisub</item>+      <item>fisubr</item>+      <item>fld1</item>+      <item>fld</item>+      <item>fldcw</item>+      <item>fldenv</item>+      <item>fldenvd</item>+      <item>fldenvw</item>+      <item>fldl2e</item>+      <item>fldl2t</item>+      <item>fldlg2</item>+      <item>fldln2</item>+      <item>fldpi</item>+      <item>fldz</item>+      <item>fmul</item>+      <item>fmulp</item>+      <item>fnclex</item>+      <item>fndisi</item>+      <item>fneni</item>+      <item>fninit</item>+      <item>fnop</item>+      <item>fnsave</item>+      <item>fnsaved</item>+      <item>fnsavew</item>+      <item>fnstcw</item>+      <item>fnstenv</item>+      <item>fnstenvd</item>+      <item>fnstenvw</item>+      <item>fnstsw</item>+      <item>fnwait</item>+      <item>fpatan</item>+      <item>fprem1</item>+      <item>fprem</item>+      <item>fptan</item>+      <item>frndint</item>+      <item>frstor</item>+      <item>frstord</item>+      <item>frstorw</item>+      <item>fsave</item>+      <item>fsaved</item>+      <item>fsavew</item>+      <item>fscale</item>+      <item>fsetpm</item>+      <item>fsin</item>+      <item>fsincos</item>+      <item>fsqrt</item>+      <item>fst</item>+      <item>fstcw</item>+      <item>fstenv</item>+      <item>fstenvd</item>+      <item>fstenvw</item>+      <item>fstp</item>+      <item>fstsw</item>+      <item>fsub</item>+      <item>fsubp</item>+      <item>fsubr</item>+      <item>fsubrp</item>+      <item>ftst</item>+      <item>fucom</item>+      <item>fucomi</item>+      <item>fucomip</item>+      <item>fucomp</item>+      <item>fucompp</item>+      <item>fwait</item>+      <item>fxam</item>+      <item>fxch</item>+      <item>fxrstor64</item>+      <item>fxrstor</item>+      <item>fxsave64</item>+      <item>fxsave</item>+      <item>fxtract</item>+      <item>fyl2x</item>+      <item>fyl2xp1</item>+      <item>getsec</item>+      <item>haddpd</item>+      <item>haddps</item>+      <item>hlt</item>+      <item>hsubpd</item>+      <item>hsubps</item>+      <item>ibts</item>+      <item>idiv</item>+      <item>imul</item>+      <item>in</item>+      <item>inc</item>+      <item>ins</item>+      <item>insb</item>+      <item>insd</item>+      <item>insertps</item>+      <item>insertq</item>+      <item>insw</item>+      <item>int1</item>+      <item>int3</item>+      <item>int</item>+      <item>into</item>+      <item>invd</item>+      <item>invept</item>+      <item>invlpg</item>+      <item>invlpga</item>+      <item>invpcid</item>+      <item>invvpid</item>+      <item>lahf</item>+      <item>lar</item>+      <item>lddqu</item>+      <item>ldmxcsr</item>+      <item>lds</item>+      <item>lea</item>+      <item>leave</item>+      <item>les</item>+      <item>lfence</item>+      <item>lfs</item>+      <item>lgdt</item>+      <item>lgs</item>+      <item>lidt</item>+      <item>lldt</item>+      <item>lmsw</item>+      <item>loadall286</item>+      <item>loadall</item>+      <item>lock</item>+      <item>lods</item>+      <item>lodsb</item>+      <item>lodsd</item>+      <item>lodsq</item>+      <item>lodsw</item>+      <item>lsl</item>+      <item>lss</item>+      <item>ltr</item>+      <item>lzcnt</item>+      <item>maskmovdqu</item>+      <item>maskmovq</item>+      <item>maxpd</item>+      <item>maxps</item>+      <item>maxsd</item>+      <item>maxss</item>+      <item>mfence</item>+      <item>minpd</item>+      <item>minps</item>+      <item>minsd</item>+      <item>minss</item>+      <item>monitor</item>+      <item>mov</item>+      <item>movapd</item>+      <item>movaps</item>+      <item>movbe</item>+      <item>movd</item>+      <item>movddup</item>+      <item>movdq2q</item>+      <item>movdqa</item>+      <item>movdqu</item>+      <item>movhlps</item>+      <item>movhpd</item>+      <item>movhps</item>+      <item>movlhps</item>+      <item>movlpd</item>+      <item>movlps</item>+      <item>movmskpd</item>+      <item>movmskps</item>+      <item>movntdq</item>+      <item>movntdqa</item>+      <item>movnti</item>+      <item>movntpd</item>+      <item>movntps</item>+      <item>movntq</item>+      <item>movntsd</item>+      <item>movntss</item>+      <item>movq2dq</item>+      <item>movq</item>+      <item>movs</item>+      <item>movsb</item>+      <item>movsd</item>+      <item>movshdup</item>+      <item>movsldup</item>+      <item>movsq</item>+      <item>movss</item>+      <item>movsw</item>+      <item>movsx</item>+      <item>movsxd</item>+      <item>movupd</item>+      <item>movups</item>+      <item>movzx</item>+      <item>mpsadbw</item>+      <item>mul</item>+      <item>mulpd</item>+      <item>mulps</item>+      <item>mulsd</item>+      <item>mulss</item>+      <item>mulx</item>+      <item>mwait</item>+      <item>neg</item>+      <item>nop</item>+      <item>not</item>+      <item>or</item>+      <item>orpd</item>+      <item>orps</item>+      <item>out</item>+      <item>outs</item>+      <item>outsb</item>+      <item>outsd</item>+      <item>outsw</item>+      <item>pabsb</item>+      <item>pabsd</item>+      <item>pabsw</item>+      <item>packssdw</item>+      <item>packsswb</item>+      <item>packusdw</item>+      <item>packuswb</item>+      <item>paddb</item>+      <item>paddd</item>+      <item>paddq</item>+      <item>paddsb</item>+      <item>paddsw</item>+      <item>paddusb</item>+      <item>paddusw</item>+      <item>paddw</item>+      <item>palignr</item>+      <item>pand</item>+      <item>pandn</item>+      <item>pause</item>+      <item>pavgb</item>+      <item>pavgusb</item>+      <item>pavgw</item>+      <item>pblendvb</item>+      <item>pblendw</item>+      <item>pclmulqdq</item>+      <item>pcmpeqb</item>+      <item>pcmpeqd</item>+      <item>pcmpeqq</item>+      <item>pcmpeqw</item>+      <item>pcmpestri</item>+      <item>pcmpestrm</item>+      <item>pcmpgtb</item>+      <item>pcmpgtd</item>+      <item>pcmpgtq</item>+      <item>pcmpgtw</item>+      <item>pcmpistri</item>+      <item>pcmpistrm</item>+      <item>pdep</item>+      <item>pdistib</item>+      <item>pext</item>+      <item>pextrb</item>+      <item>pextrd</item>+      <item>pextrq</item>+      <item>pextrw</item>+      <item>pf2id</item>+      <item>pf2iw</item>+      <item>pfacc</item>+      <item>pfadd</item>+      <item>pfcmpeq</item>+      <item>pfcmpge</item>+      <item>pfcmpgt</item>+      <item>pfmax</item>+      <item>pfmin</item>+      <item>pfmul</item>+      <item>pfnacc</item>+      <item>pfpnacc</item>+      <item>pfrcp</item>+      <item>pfrcpit1</item>+      <item>pfrcpit2</item>+      <item>pfrsqit1</item>+      <item>pfrsqrt</item>+      <item>pfsub</item>+      <item>pfsubr</item>+      <item>phaddd</item>+      <item>phaddsw</item>+      <item>phaddw</item>+      <item>phminposuw</item>+      <item>phsubd</item>+      <item>phsubsw</item>+      <item>phsubw</item>+      <item>pi2fd</item>+      <item>pi2fw</item>+      <item>pinsrb</item>+      <item>pinsrd</item>+      <item>pinsrq</item>+      <item>pinsrw</item>+      <item>pmachriw</item>+      <item>pmaddubsw</item>+      <item>pmaddwd</item>+      <item>pmagw</item>+      <item>pmaxsb</item>+      <item>pmaxsd</item>+      <item>pmaxsw</item>+      <item>pmaxub</item>+      <item>pmaxud</item>+      <item>pmaxuw</item>+      <item>pminsb</item>+      <item>pminsd</item>+      <item>pminsw</item>+      <item>pminub</item>+      <item>pminud</item>+      <item>pminuw</item>+      <item>pmovmskb</item>+      <item>pmovsxbd</item>+      <item>pmovsxbq</item>+      <item>pmovsxbw</item>+      <item>pmovsxdq</item>+      <item>pmovsxwd</item>+      <item>pmovsxwq</item>+      <item>pmovzxbd</item>+      <item>pmovzxbq</item>+      <item>pmovzxbw</item>+      <item>pmovzxdq</item>+      <item>pmovzxwd</item>+      <item>pmovzxwq</item>+      <item>pmuldq</item>+      <item>pmulhrsw</item>+      <item>pmulhrw</item>+      <item>pmulhuw</item>+      <item>pmulhw</item>+      <item>pmulld</item>+      <item>pmullw</item>+      <item>pmuludq</item>+      <item>pmvgezb</item>+      <item>pmvlzb</item>+      <item>pmvnzb</item>+      <item>pmvzb</item>+      <item>pop</item>+      <item>popa</item>+      <item>popad</item>+      <item>popaw</item>+      <item>popcnt</item>+      <item>popd</item>+      <item>popf</item>+      <item>popfd</item>+      <item>popfq</item>+      <item>popfw</item>+      <item>popw</item>+      <item>por</item>+      <item>prefetch</item>+      <item>prefetchnta</item>+      <item>prefetcht0</item>+      <item>prefetcht1</item>+      <item>prefetcht2</item>+      <item>prefetchw</item>+      <item>psadbw</item>+      <item>pshufb</item>+      <item>pshufd</item>+      <item>pshufhw</item>+      <item>pshuflw</item>+      <item>pshufw</item>+      <item>psignb</item>+      <item>psignd</item>+      <item>psignw</item>+      <item>pslld</item>+      <item>pslldq</item>+      <item>psllq</item>+      <item>psllw</item>+      <item>psrad</item>+      <item>psraw</item>+      <item>psrld</item>+      <item>psrldq</item>+      <item>psrlq</item>+      <item>psrlw</item>+      <item>psubb</item>+      <item>psubd</item>+      <item>psubq</item>+      <item>psubsb</item>+      <item>psubsiw</item>+      <item>psubsw</item>+      <item>psubusb</item>+      <item>psubusw</item>+      <item>psubw</item>+      <item>pswapd</item>+      <item>ptest</item>+      <item>punpckhbw</item>+      <item>punpckhdq</item>+      <item>punpckhqdq</item>+      <item>punpckhwd</item>+      <item>punpcklbw</item>+      <item>punpckldq</item>+      <item>punpcklqdq</item>+      <item>punpcklwd</item>+      <item>push</item>+      <item>pusha</item>+      <item>pushad</item>+      <item>pushaw</item>+      <item>pushd</item>+      <item>pushf</item>+      <item>pushfd</item>+      <item>pushfq</item>+      <item>pushfw</item>+      <item>pushw</item>+      <item>pxor</item>+      <item>rcl</item>+      <item>rcpps</item>+      <item>rcpss</item>+      <item>rcr</item>+      <item>rdfsbase</item>+      <item>rdgsbase</item>+      <item>rdmsr</item>+      <item>rdmsrq</item>+      <item>rdpmc</item>+      <item>rdrand</item>+      <item>rdshr</item>+      <item>rdtsc</item>+      <item>rdtscp</item>+      <item>rol</item>+      <item>ror</item>+      <item>rorx</item>+      <item>roundpd</item>+      <item>roundps</item>+      <item>roundsd</item>+      <item>roundss</item>+      <item>rsdc</item>+      <item>rsldt</item>+      <item>rsm</item>+      <item>rsqrtps</item>+      <item>rsqrtss</item>+      <item>rsts</item>+      <item>sahf</item>+      <item>sal</item>+      <item>salc</item>+      <item>sar</item>+      <item>sarx</item>+      <item>sbb</item>+      <item>scas</item>+      <item>scasb</item>+      <item>scasd</item>+      <item>scasq</item>+      <item>scasw</item>+      <item>set</item>+      <item>seta</item>+      <item>setae</item>+      <item>setb</item>+      <item>setbe</item>+      <item>setc</item>+      <item>sete</item>+      <item>setg</item>+      <item>setge</item>+      <item>setl</item>+      <item>setle</item>+      <item>setna</item>+      <item>setnae</item>+      <item>setnb</item>+      <item>setnbe</item>+      <item>setnc</item>+      <item>setne</item>+      <item>setng</item>+      <item>setnge</item>+      <item>setnl</item>+      <item>setnle</item>+      <item>setno</item>+      <item>setnp</item>+      <item>setns</item>+      <item>setnz</item>+      <item>seto</item>+      <item>setp</item>+      <item>setpe</item>+      <item>setpo</item>+      <item>sets</item>+      <item>setz</item>+      <item>sfence</item>+      <item>sgdt</item>+      <item>shl</item>+      <item>shld</item>+      <item>shlx</item>+      <item>shr</item>+      <item>shrd</item>+      <item>shrx</item>+      <item>shufpd</item>+      <item>shufps</item>+      <item>sidt</item>+      <item>skinit</item>+      <item>sldt</item>+      <item>smi</item>+      <item>smint</item>+      <item>smintold</item>+      <item>smsw</item>+      <item>sqrtpd</item>+      <item>sqrtps</item>+      <item>sqrtsd</item>+      <item>sqrtss</item>+      <item>stc</item>+      <item>std</item>+      <item>stgi</item>+      <item>sti</item>+      <item>stmxcsr</item>+      <item>stos</item>+      <item>stosb</item>+      <item>stosd</item>+      <item>stosq</item>+      <item>stosw</item>+      <item>str</item>+      <item>sub</item>+      <item>subpd</item>+      <item>subps</item>+      <item>subsd</item>+      <item>subss</item>+      <item>svdc</item>+      <item>svldt</item>+      <item>svts</item>+      <item>swapgs</item>+      <item>t1mskc</item>+      <item>test</item>+      <item>tzcnt</item>+      <item>tzmsk</item>+      <item>ucomisd</item>+      <item>ucomiss</item>+      <item>ud0</item>+      <item>ud1</item>+      <item>ud2</item>+      <item>umov</item>+      <item>unpckhpd</item>+      <item>unpckhps</item>+      <item>unpcklpd</item>+      <item>unpcklps</item>+      <item>vaesenc</item>+      <item>vaesenclast</item>+      <item>vaesimc</item>+      <item>vblendvpd</item>+      <item>vblendvps</item>+      <item>vbroadcastf128</item>+      <item>vbroadcasti128</item>+      <item>vbroadcastsd</item>+      <item>vbroadcastss</item>+      <item>vcomisd</item>+      <item>vcomiss</item>+      <item>vcvtdq2pd</item>+      <item>vcvtdq2ps</item>+      <item>vcvtpd2dq</item>+      <item>vcvtpd2ps</item>+      <item>vcvtph2ps</item>+      <item>vcvtps2dq</item>+      <item>vcvtps2pd</item>+      <item>vcvtps2ph</item>+      <item>vcvtsd2si</item>+      <item>vcvtsd2ss</item>+      <item>vcvtsi2sd</item>+      <item>vcvtsi2ss</item>+      <item>vcvtss2sd</item>+      <item>vcvtss2si</item>+      <item>vcvttpd2dq</item>+      <item>vcvttps2dq</item>+      <item>vcvttsd2si</item>+      <item>vcvttss2si</item>+      <item>vdppd</item>+      <item>verr</item>+      <item>verw</item>+      <item>vextractf128</item>+      <item>vextracti128</item>+      <item>vextractps</item>+      <item>vfm132pd</item>+      <item>vfm132ps</item>+      <item>vfm132sd</item>+      <item>vfm132ss</item>+      <item>vfm213pd</item>+      <item>vfm213ps</item>+      <item>vfm213sd</item>+      <item>vfm213ss</item>+      <item>vfm231pd</item>+      <item>vfm231ps</item>+      <item>vfm231sd</item>+      <item>vfm231ss</item>+      <item>vfmaddpd</item>+      <item>vfmaddsub132pd</item>+      <item>vfmaddsub132ps</item>+      <item>vfmaddsub213pd</item>+      <item>vfmaddsub213ps</item>+      <item>vfmaddsub231pd</item>+      <item>vfmaddsub231ps</item>+      <item>vfmsubadd132pd</item>+      <item>vfmsubadd132ps</item>+      <item>vfmsubadd213pd</item>+      <item>vfmsubadd213ps</item>+      <item>vfmsubadd231pd</item>+      <item>vfmsubadd231ps</item>+      <item>vfmsubss</item>+      <item>vfnm132pd</item>+      <item>vfnm132ps</item>+      <item>vfnm132sd</item>+      <item>vfnm132ss</item>+      <item>vfnm213pd</item>+      <item>vfnm213ps</item>+      <item>vfnm213sd</item>+      <item>vfnm213ss</item>+      <item>vfnm231pd</item>+      <item>vfnm231ps</item>+      <item>vfnm231sd</item>+      <item>vfnm231ss</item>+      <item>vfrczpd</item>+      <item>vfrczps</item>+      <item>vfrczsd</item>+      <item>vfrczss</item>+      <item>vgatherdpd</item>+      <item>vgatherdps</item>+      <item>vgatherqpd</item>+      <item>vgatherqps</item>+      <item>vinsertf128</item>+      <item>vinserti128</item>+      <item>vinsertps</item>+      <item>vlddqu</item>+      <item>vldmxcsr</item>+      <item>vmaskmovdqu</item>+      <item>vmaskmovpd</item>+      <item>vmaskmovps</item>+      <item>vmcall</item>+      <item>vmclear</item>+      <item>vmlaunch</item>+      <item>vmload</item>+      <item>vmmcall</item>+      <item>vmovapd</item>+      <item>vmovaps</item>+      <item>vmovd</item>+      <item>vmovddup</item>+      <item>vmovdqa</item>+      <item>vmovdqu</item>+      <item>vmovhlps</item>+      <item>vmovhpd</item>+      <item>vmovhps</item>+      <item>vmovlhps</item>+      <item>vmovlpd</item>+      <item>vmovlps</item>+      <item>vmovmskpd</item>+      <item>vmovmskps</item>+      <item>vmovntdq</item>+      <item>vmovntdqa</item>+      <item>vmovntpd</item>+      <item>vmovntps</item>+      <item>vmovq</item>+      <item>vmovsd</item>+      <item>vmovshdup</item>+      <item>vmovsldup</item>+      <item>vmovss</item>+      <item>vmovupd</item>+      <item>vmovups</item>+      <item>vmptrld</item>+      <item>vmptrst</item>+      <item>vmread</item>+      <item>vmresume</item>+      <item>vmrun</item>+      <item>vmsave</item>+      <item>vmwrite</item>+      <item>vmxoff</item>+      <item>vmxon</item>+      <item>vpabsb</item>+      <item>vpabsd</item>+      <item>vpabsw</item>+      <item>vpackssdw</item>+      <item>vpacksswb</item>+      <item>vpackusdw</item>+      <item>vpackuswb</item>+      <item>vpaddb</item>+      <item>vpaddd</item>+      <item>vpaddq</item>+      <item>vpaddsb</item>+      <item>vpaddsw</item>+      <item>vpaddusb</item>+      <item>vpaddusw</item>+      <item>vpaddw</item>+      <item>vpalignr</item>+      <item>vpand</item>+      <item>vpandn</item>+      <item>vpause</item>+      <item>vpavgb</item>+      <item>vpavgusb</item>+      <item>vpavgw</item>+      <item>vpblendvb</item>+      <item>vpblendw</item>+      <item>vpbroadcastb</item>+      <item>vpbroadcastd</item>+      <item>vpbroadcastq</item>+      <item>vpbroadcastw</item>+      <item>vpclmulqdq</item>+      <item>vpcmov</item>+      <item>vpcmpeqb</item>+      <item>vpcmpeqd</item>+      <item>vpcmpeqq</item>+      <item>vpcmpeqw</item>+      <item>vpcmpestri</item>+      <item>vpcmpestrm</item>+      <item>vpcmpgtb</item>+      <item>vpcmpgtd</item>+      <item>vpcmpgtq</item>+      <item>vpcmpgtw</item>+      <item>vpcmpistri</item>+      <item>vpcmpistrm</item>+      <item>vpcomb</item>+      <item>vpcomd</item>+      <item>vfmadd132ps</item>+      <item>vfnmadd132ps</item>+      <item>vfmsub132ps</item>+      <item>vfnmsub132ps</item>+      <item>vfmadd213ps</item>+      <item>vfnmadd213ps</item>+      <item>vfmsub213ps</item>+      <item>vfnmsub213ps</item>+      <item>vfmadd231ps</item>+      <item>vfnmadd231ps</item>+      <item>vfmsub231ps</item>+      <item>vfnmsub231ps</item>+      <item>vfmadd132pd</item>+      <item>vfnmadd132pd</item>+      <item>vfmsub132pd</item>+      <item>vfnmsub132pd</item>+      <item>vfmadd213pd</item>+      <item>vfnmadd213pd</item>+      <item>vfmsub213pd</item>+      <item>vfnmsub213pd</item>+      <item>vfmadd231pd</item>+      <item>vfnmadd231pd</item>+      <item>vfmsub231pd</item>+      <item>vfnmsub231pd</item>+      <item>vfmadd132ss</item>+      <item>vfnmadd132ss</item>+      <item>vfmsub132ss</item>+      <item>vfnmsub132ss</item>+      <item>vfmadd213ss</item>+      <item>vfnmadd213ss</item>+      <item>vfmsub213ss</item>+      <item>vfnmsub213ss</item>+      <item>vfmadd231ss</item>+      <item>vfnmadd231ss</item>+      <item>vfmsub231ss</item>+      <item>vfnmsub231ss</item>+      <item>vfmadd132sd</item>+      <item>vfnmadd132sd</item>+      <item>vfmsub132sd</item>+      <item>vfnmsub132sd</item>+      <item>vfmadd213sd</item>+      <item>vfnmadd213sd</item>+      <item>vfmsub213sd</item>+      <item>vfnmsub213sd</item>+      <item>vfmadd231sd</item>+      <item>vfnmadd231sd</item>+      <item>vfmsub231sd</item>+      <item>vfnmsub231sd</item>+      <item>vpcomeqb</item>+      <item>vpcomeqd</item>+      <item>vpcomeqq</item>+      <item>vpcomequb</item>+      <item>vpcomequd</item>+      <item>vpcomequq</item>+      <item>vpcomequw</item>+      <item>vpcomeqw</item>+      <item>vpcomfalseb</item>+      <item>vpcomfalsed</item>+      <item>vpcomfalseq</item>+      <item>vpcomfalseub</item>+      <item>vpcomfalseud</item>+      <item>vpcomfalseuq</item>+      <item>vpcomfalseuw</item>+      <item>vpcomfalsew</item>+      <item>vpcomgeb</item>+      <item>vpcomged</item>+      <item>vpcomgeq</item>+      <item>vpcomgeub</item>+      <item>vpcomgeud</item>+      <item>vpcomgeuq</item>+      <item>vpcomgeuw</item>+      <item>vpcomgew</item>+      <item>vpcomgtb</item>+      <item>vpcomgtd</item>+      <item>vpcomgtq</item>+      <item>vpcomgtub</item>+      <item>vpcomgtud</item>+      <item>vpcomgtuq</item>+      <item>vpcomgtuw</item>+      <item>vpcomgtw</item>+      <item>vpcomleb</item>+      <item>vpcomled</item>+      <item>vpcomleq</item>+      <item>vpcomleub</item>+      <item>vpcomleud</item>+      <item>vpcomleuq</item>+      <item>vpcomleuw</item>+      <item>vpcomlew</item>+      <item>vpcomltb</item>+      <item>vpcomltd</item>+      <item>vpcomltq</item>+      <item>vpcomltub</item>+      <item>vpcomltud</item>+      <item>vpcomltuq</item>+      <item>vpcomltuw</item>+      <item>vpcomltw</item>+      <item>vpcomneqb</item>+      <item>vpcomneqd</item>+      <item>vpcomneqq</item>+      <item>vpcomnequb</item>+      <item>vpcomnequd</item>+      <item>vpcomnequq</item>+      <item>vpcomnequw</item>+      <item>vpcomneqw</item>+      <item>vpcomq</item>+      <item>vpcomtrueb</item>+      <item>vpcomtrued</item>+      <item>vpcomtrueq</item>+      <item>vpcomtrueub</item>+      <item>vpcomtrueud</item>+      <item>vpcomtrueuq</item>+      <item>vpcomtrueuw</item>+      <item>vpcomtruew</item>+      <item>vpcomub</item>+      <item>vpcomud</item>+      <item>vpcomuq</item>+      <item>vpcomuw</item>+      <item>vpcomw</item>+      <item>vpdep</item>+      <item>vpdistib</item>+      <item>vperm2f128</item>+      <item>vperm2i128</item>+      <item>vpermd</item>+      <item>vpermil2pd</item>+      <item>vpermil2ps</item>+      <item>vpermilpd</item>+      <item>vpermilps</item>+      <item>vpermpd</item>+      <item>vpermps</item>+      <item>vpermq</item>+      <item>vpext</item>+      <item>vpextrb</item>+      <item>vpextrd</item>+      <item>vpextrq</item>+      <item>vpextrw</item>+      <item>vpf2id</item>+      <item>vpf2iw</item>+      <item>vpfacc</item>+      <item>vpfadd</item>+      <item>vpfcmpeq</item>+      <item>vpfcmpge</item>+      <item>vpfcmpgt</item>+      <item>vpfmax</item>+      <item>vpfmin</item>+      <item>vpfmul</item>+      <item>vpfnacc</item>+      <item>vpfpnacc</item>+      <item>vpfrcp</item>+      <item>vpfrcpit1</item>+      <item>vpfrcpit2</item>+      <item>vpfrsqit1</item>+      <item>vpfrsqrt</item>+      <item>vpfsub</item>+      <item>vpfsubr</item>+      <item>vpgatherdd</item>+      <item>vscatterdpd</item>+      <item>vscatterdps</item>+      <item>vscatterqpd</item>+      <item>vscatterqps</item>+      <item>vpscatterdd</item>+      <item>vpscatterdq</item>+      <item>vpscatterqd</item>+      <item>vpscatterqq</item>+      <item>vpgatherdq</item>+      <item>vpgatherqd</item>+      <item>vpgatherqq</item>+      <item>vphaddbd</item>+      <item>vphaddbq</item>+      <item>vphaddbw</item>+      <item>vphaddd</item>+      <item>vphadddq</item>+      <item>vphaddsw</item>+      <item>vphaddubd</item>+      <item>vphaddubq</item>+      <item>vphaddubw</item>+      <item>vphaddudq</item>+      <item>vphadduwd</item>+      <item>vphadduwq</item>+      <item>vphaddw</item>+      <item>vphaddwd</item>+      <item>vphaddwq</item>+      <item>vphminposuw</item>+      <item>vphsubbw</item>+      <item>vphsubd</item>+      <item>vphsubdq</item>+      <item>vphsubsw</item>+      <item>vphsubw</item>+      <item>vphsubwd</item>+      <item>vpi2fd</item>+      <item>vpi2fw</item>+      <item>vpinsrb</item>+      <item>vpinsrd</item>+      <item>vpinsrq</item>+      <item>vpinsrw</item>+      <item>vpmachriw</item>+      <item>vpmacsdd</item>+      <item>vpmacsdqh</item>+      <item>vpmacsdql</item>+      <item>vpmacssdd</item>+      <item>vpmacssdqh</item>+      <item>vpmacssdql</item>+      <item>vpmacsswd</item>+      <item>vpmacssww</item>+      <item>vpmacswd</item>+      <item>vpmacsww</item>+      <item>vpmadcsswd</item>+      <item>vpmadcswd</item>+      <item>vpmaddubsw</item>+      <item>vpmaddwd</item>+      <item>vpmagw</item>+      <item>vpmaskmovd</item>+      <item>vpmaskmovq</item>+      <item>vpmaxsb</item>+      <item>vpmaxsd</item>+      <item>vpmaxsw</item>+      <item>vpmaxub</item>+      <item>vpmaxud</item>+      <item>vpmaxuw</item>+      <item>vpminsb</item>+      <item>vpminsd</item>+      <item>vpminsw</item>+      <item>vpminub</item>+      <item>vpminud</item>+      <item>vpminuw</item>+      <item>vpmovmskb</item>+      <item>vpmovsxbd</item>+      <item>vpmovsxbq</item>+      <item>vpmovsxbw</item>+      <item>vpmovsxdq</item>+      <item>vpmovsxwd</item>+      <item>vpmovsxwq</item>+      <item>vpmovzxbd</item>+      <item>vpmovzxbq</item>+      <item>vpmovzxbw</item>+      <item>vpmovzxdq</item>+      <item>vpmovzxwd</item>+      <item>vpmovzxwq</item>+      <item>vpmuldq</item>+      <item>vpmulhrsw</item>+      <item>vpmulhrw</item>+      <item>vpmulhuw</item>+      <item>vpmulhw</item>+      <item>vpmulld</item>+      <item>vpmullw</item>+      <item>vpmuludq</item>+      <item>vpmvgezb</item>+      <item>vpmvlzb</item>+      <item>vpmvnzb</item>+      <item>vpmvzb</item>+      <item>vpor</item>+      <item>vpperm</item>+      <item>vprefetch</item>+      <item>vprefetchnta</item>+      <item>vprefetcht0</item>+      <item>vprefetcht1</item>+      <item>vprefetcht2</item>+      <item>vprefetchw</item>+      <item>vprotb</item>+      <item>vprotd</item>+      <item>vprotq</item>+      <item>vprotw</item>+      <item>vpsadbw</item>+      <item>vpshab</item>+      <item>vpshad</item>+      <item>vpshaq</item>+      <item>vpshaw</item>+      <item>vpshlb</item>+      <item>vpshld</item>+      <item>vpshlq</item>+      <item>vpshlw</item>+      <item>vpshufb</item>+      <item>vpshufd</item>+      <item>vpshufhw</item>+      <item>vpshuflw</item>+      <item>vpshufw</item>+      <item>vpsignb</item>+      <item>vpsignd</item>+      <item>vpsignw</item>+      <item>vpslld</item>+      <item>vpslldq</item>+      <item>vpsllq</item>+      <item>vpsllvd</item>+      <item>vpsllvq</item>+      <item>vpsllw</item>+      <item>vpsrad</item>+      <item>vpsravd</item>+      <item>vpsraw</item>+      <item>vpsrld</item>+      <item>vpsrldq</item>+      <item>vpsrlq</item>+      <item>vpsrlvd</item>+      <item>vpsrlvq</item>+      <item>vpsrlw</item>+      <item>vpsubb</item>+      <item>vpsubd</item>+      <item>vpsubq</item>+      <item>vpsubsb</item>+      <item>vpsubsiw</item>+      <item>vpsubsw</item>+      <item>vpsubusb</item>+      <item>vpsubusw</item>+      <item>vpsubw</item>+      <item>vpswapd</item>+      <item>vptest</item>+      <item>vpunpckhbw</item>+      <item>vpunpckhdq</item>+      <item>vpunpckhqdq</item>+      <item>vpunpckhwd</item>+      <item>vpunpcklbw</item>+      <item>vpunpckldq</item>+      <item>vpunpcklqdq</item>+      <item>vpunpcklwd</item>+      <item>vpxor</item>+      <item>vrcpps</item>+      <item>vroundpd</item>+      <item>vroundps</item>+      <item>vrsqrtps</item>+      <item>vsqrtpd</item>+      <item>vsqrtps</item>+      <item>vstmxcsr</item>+      <item>vtestpd</item>+      <item>vtestps</item>+      <item>vzeroall</item>+      <item>vzeroupper</item>+      <item>wait</item>+      <item>wbinvd</item>+      <item>wrfsbase</item>+      <item>wrgsbase</item>+      <item>wrmsr</item>+      <item>wrmsrq</item>+      <item>wrshr</item>+      <item>xabort</item>+      <item>xacquire</item>+      <item>xadd</item>+      <item>xbegin</item>+      <item>xbts</item>+      <item>xchg</item>+      <item>xend</item>+      <item>xgetbv</item>+      <item>xlat</item>+      <item>xlatb</item>+      <item>xor</item>+      <item>xorpd</item>+      <item>xorps</item>+      <item>xrelease</item>+      <item>xrstor64</item>+      <item>xrstor</item>+      <item>xsave64</item>+      <item>xsave</item>+      <item>xsaveopt64</item>+      <item>xsaveopt</item>+      <item>xsetbv</item>+      <item>xtest</item>+    </list>++    <list name="repeat prefixes">+      <item>rep</item>+      <item>repe</item>+      <item>repz</item>+      <item>repne</item>+      <item>repnz</item>+    </list>++    <list name="operators">+      <item>used</item>+      <item>defined</item>++      <item>mod</item>+      <item>and</item>+      <item>or</item>+      <item>xor</item>+      <item>not</item>+      <item>shl</item>+      <item>shr</item>+      <item>bsf</item>+      <item>bsr</item>+      <item>rva</item>+      <item>plt</item>+      <!-- jump and call operand -->+      <item>far</item>+      <item>near</item>+      <item>short</item>+    </list>++    <list name="Data">+      <!-- Initialized data (1.2.2)-->+      <item>db</item>+      <item>dw</item>+      <item>du</item>+      <item>dd</item>+      <item>dp</item>+      <item>df</item>+      <item>dq</item>+      <item>dt</item>+      <!-- Uninitialized data (1.2.2)-->+      <item>rb</item>+      <item>rw</item>+      <item>rd</item>+      <item>rp</item>+      <item>rf</item>+      <item>rq</item>+      <item>rt</item>+      <!-- binary file include (1.2.2)-->+      <item>file</item>+      <!-- operand size from (1.2.1)-->+      <item>byte</item>+      <item>word</item>+      <item>dword</item>+      <item>fword</item>+      <item>pword</item>+      <item>qword</item>+      <item>tbyte</item>+      <item>tword</item>+      <item>dqword</item>+      <item>xword</item>+      <item>qqword</item>+      <item>yword</item>+      <item>dqqword</item>+      <item>zword</item>+      <item>ptr</item>+    </list>++    <list name="Preprocessor Keywords"> <!-- Contains keywords for macros, structures, etc... -->+      <item>assert</item>+      <item>append</item>+      <item>at</item>   <!-- As in "virtual at"-->+      <item>break</item>+      <item>calminstruction</item>+      <item>common</item>+      <item>display</item>+      <item>else</item>+      <item>end</item> <!-- As in "end if"-->+      <item>equ</item>+      <item>err</item>+      <item>fix</item>+      <item>foward</item>+      <item>if</item>+      <item>iterate</item>+      <item>irp</item>+      <item>irps</item>+      <item>label</item>+      <item>local</item>+      <item>match</item>+      <item>macro</item>+      <item>postpone</item>+      <item>purge</item>+      <item>repeat</item>+      <item>rept</item>+      <item>reverse</item>+      <item>restore</item>+      <item>restruc</item>+      <item>struc</item>+      <item>times</item>+      <item>while</item>+      <item>virtual</item>+      <item>namespace</item>+    </list>++    <list name="Instruction-like Keywords"> <!-- Contains instruction-like keywords -->+      <item>align</item>+      <item>entry</item>+      <item>extrn</item>+      <item>format</item>+      <item>include</item>+      <item>invoke</item>+      <item>data</item>+      <item>load</item>+      <item>from</item>+      <item>heap</item>+      <item>org</item>+      <item>proc</item>+      <item>public</item>+      <item>section</item>+      <item>segment</item>+      <item>stack</item>+      <item>store</item>+      <item>use16</item>+      <item>use32</item>+      <item>use64</item>+    </list>++    <contexts>+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Instruction">+        <DetectSpaces attribute="Normal Text"/>+        <RegExpr attribute="Label" context="Instruction" String="(?:(?:\.|@@|&#37;&#37;)(?:\.@)?)?[A-Za-z_][A-Za-z0-9_.]*+:|\.:|@@:" firstNonSpace="1"/>+      </context>++      <context name="Instruction" attribute="Normal Text" lineEndContext="#pop">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>+        <keyword attribute="Instructions" context="#pop!Operand" String="instructions"/>+        <keyword attribute="Branch Instructions" context="#pop!Operand" String="branch instructions"/>+        <keyword attribute="Data" context="#pop!Operand" String="Data"/>+        <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="Preprocessor Keywords" lookAhead="1"/>+        <keyword attribute="Instructions" context="#pop!Operand" String="Instruction-like Keywords"/>+        <keyword attribute="Instructions" context="#stay" String="repeat prefixes"/>+        <DetectIdentifier attribute="Unknown Instructions" context="UnknownInstruction"/>+        <LineContinue attribute="Symbol" context="#pop!Operand"/>+        <AnyChar attribute="Symbol" context="#stay" String="{}"/>+      </context>+      <context name="UnknownInstruction" attribute="Unknown Instructions" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Operand">+        <DetectChar attribute="Symbol" context="#stay" char="."/>+        <DetectIdentifier attribute="Unknown Instructions" context="#stay"/>+      </context>++      <context name="Operand" attribute="Normal Text" lineEndContext="#pop">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar attribute="Symbol" context="Dollar" char="$"/>+        <LineContinue attribute="Symbol"/>+        <AnyChar attribute="Symbol" context="#stay" String=",.+-=/*%~$!?&lt;>()[]{}:|&amp;#`\"/>+        <DetectChar attribute="String" context="SQString" char="'"/>+        <DetectChar attribute="String" context="DQString" char="&quot;"/>+        <DetectChar attribute="Label" context="@Label" char="@"/>+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>+        <AnyChar attribute="Number" context="Number" String="0123456789" lookAhead="1"/>+        <keyword attribute="Registers" context="#stay" String="registers"/>+        <keyword attribute="Data" context="#stay" String="Data"/>+        <keyword attribute="Operators" context="#stay" String="operators"/>+        <DetectIdentifier attribute="Normal Text" context="#stay"/>+      </context>+      <context name="@Label" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Label" context="#pop" String="bfr"/>+        <RegExpr attribute="Error" context="#pop" String="."/>+      </context>++      <context name="Dollar" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="BaseN" context="#pop!$Hex" String="0123456789"/>+        <AnyChar attribute="Symbol" context="#pop" String="$@%"/>+      </context>+      <context name="$Hex" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" String="[0-9a-fA-F_]*"/>+      </context>++      <context name="Number" attribute="Number" lineEndContext="#pop">+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="x"/>+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="X"/>+        <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>+        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>+        <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>+      </context>+      <context name="FloatSuffix" attribute="Float" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="fF"/>+      </context>+      <context name="BaseSuffix" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="byoqhBYOQH"/>+      </context>+      <context name="NumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="dD"/>+      </context>+      <context name="CheckNumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectSpaces attribute="Normal Text" context="#pop"/>+        <AnyChar attribute="Symbol" context="#pop" String=",.+-=/*%~!?&lt;>()[]{}:|&amp;#`"/>+        <RegExpr attribute="Error" context="#pop" String="[\d\w]+"/>+      </context>++      <context name="SQString" attribute="String" lineEndContext="#pop">+        <LineContinue attribute="Symbol"/>+        <DetectChar attribute="String" context="#pop" char="'"/>+      </context>+      <context name="DQString" attribute="String" lineEndContext="#pop">+        <LineContinue attribute="Symbol"/>+        <DetectChar attribute="String" context="#pop" char="&quot;"/>+      </context>++      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.prefix" String="end"/>+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.prefix" String="else"/>+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.virtual" String="virtual"/>+        <DetectIdentifier attribute="Preprocessor" context="#pop!PreprocessorOperand"/>+      </context>++      <context name="PreprocessorOperand" attribute="Preprocessor" lineEndContext="#pop">+        <DetectChar attribute="Symbol" context="#pop" char="{"/>+        <IncludeRules context="Operand"/>+      </context>++      <context name="Preprocessor.virtual" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!Operand">+        <DetectSpaces attribute="Normal Text" context="#stay"/>+        <WordDetect attribute="Preprocessor" context="#pop!Operand" String="at"/>+      </context>+      <context name="Preprocessor.prefix" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!PreprocessorOperand">+        <DetectSpaces attribute="Normal Text"/>+        <keyword attribute="Preprocessor" context="#pop!PreprocessorOperand" String="Preprocessor Keywords"/>+        <DetectIdentifier attribute="Normal Text" context="#pop!PreprocessorOperand"/>+      </context>++      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces attribute="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+        <DetectIdentifier attribute="Comment"/>+      </context>++    </contexts>++    <itemDatas>+      <itemData name="Normal Text" defStyleNum="dsNormal"/>+      <itemData name="Registers" defStyleNum="dsKeyword"/>+      <itemData name="Instructions" defStyleNum="dsBuiltIn"/>+      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"/>+      <itemData name="Unknown Instructions" defStyleNum="dsNormal"/>+      <itemData name="Operators" defStyleNum="dsOperator"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+      <itemData name="Label" defStyleNum="dsFunction"/>+      <itemData name="Data" defStyleNum="dsDataType"/>+      <itemData name="BaseN" defStyleNum="dsBaseN"/>+      <itemData name="Float" defStyleNum="dsFloat"/>+      <itemData name="Number" defStyleNum="dsDecVal"/>+      <itemData name="Radix" defStyleNum="dsBaseN"/>+      <itemData name="String" defStyleNum="dsString"/>+      <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>+      <itemData name="Symbol" defStyleNum="dsOperator"/>+      <itemData name="Error" defStyleNum="dsError"/>+    </itemDatas>+  </highlighting>+  <general>+    <keywords casesensitive="0"/>+    <comments>+      <comment name="singleLine" start=";" position="afterwhitespace"/>     </comments>   </general> </language>
+ syntax/fortran-fixed.xml view
@@ -0,0 +1,592 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<language name="Fortran (Fixed Format)" version="7" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">+<!-- by Franchin Matteo, fnch@libero.it -->+<!-- NOTE: Keep in sync with the "Fortran (Free Format)" highlighter! (fortran-free.xml) -->+  <highlighting>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *                              L I S T S                            *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <list name="keywords">+      <item>allocate</item>+      <item>break</item>+      <item>call</item>+      <item>common</item>+      <item>continue</item>+      <item>cycle</item>+      <item>deallocate</item>+      <item>forall</item>+      <item>where</item>+      <item>elsewhere</item>+      <item>equivalence</item>+      <item>exit</item>+      <item>external</item>+      <item>for</item>+      <item>go</item>+      <item>goto</item>+      <item>if</item>+      <item>implicit</item>+      <item>include</item>+      <item>interface</item>+      <item>intrinsic</item>+      <item>namelist</item>+      <item>none</item>+      <item>nullify</item>+      <item>operator</item>+      <item>assignment</item>+      <item>pause</item>+      <item>procedure</item>+      <item>pure</item>+      <item>elemental</item>+      <item>record</item>+      <item>recursive</item>+      <item>result</item>+      <item>return</item>+      <item>stop</item>+      <item>to</item>+      <item>use</item>+      <item>only</item>+      <item>entry</item>+      <item>while</item>+      <!-- Others keywords:+           case, default, select, selectcase,+           contains, do, elseif, else, then -->+    </list>+    <list name="io_functions">+      <item>access</item>+      <item>backspace</item>+      <item>close</item>+      <item>inquire</item>+      <item>open</item>+      <item>print</item>+      <item>read</item>+      <item>rewind</item>+      <item>write</item>+      <item>format</item>+    </list>+    <!-- Keywords inside read(...), write(...), backspace(...),+          rewind(...), endfile(...), close(...) -->+    <list name="io_keywords">+      <item>unit</item>+      <item>end</item>+      <item>err</item>+      <item>fmt</item>+      <item>iostat</item>+      <item>status</item>+      <item>advance</item>+      <item>size</item>+      <item>eor</item>+    </list>+    <!-- Keywords inside open(...) -->+    <list name="open_keywords">+      <item>unit</item>+      <item>iostat</item>+      <item>err</item>+      <item>file</item>+      <item>status</item>+      <item>access</item>+      <item>form</item>+      <item>recl</item>+      <item>blank</item>+      <item>position</item>+      <item>action</item>+      <item>delim</item>+      <item>pad</item>+    </list>+    <!-- Keywords inside inquire(...) -->+    <list name="inquire_keywords">+      <item>unit</item>+      <item>iostat</item>+      <item>err</item>+      <item>file</item>+      <item>exist</item>+      <item>opened</item>+      <item>number</item>+      <item>named</item>+      <item>name</item>+      <item>access</item>+      <item>sequential</item>+      <item>direct</item>+      <item>form</item>+      <item>formatted</item>+      <item>unformatted</item>+      <item>recl</item>+      <item>nextrec</item>+      <item>blank</item>+      <item>position</item>+      <item>action</item>+      <item>read</item>+      <item>write</item>+      <item>readwrite</item>+      <item>delim</item>+      <item>pad</item>+    </list>+    <list name="types">+      <item>parameter</item>+      <item>save</item>+      <item>pointer</item>+      <item>public</item>+      <item>private</item>+      <item>target</item>+      <item>allocatable</item>+      <item>optional</item>+      <item>sequence</item>+      <!-- Others types: double, precision -->+    </list>++<!-- There are 4 types of intrinsic procedures in Fortran 90:+   1) Elemental procedures (elemental_procs);+   2) Inquiry functions (inquiry_fn);+   3) Transformational functions (transform_fn);+   4) Non elemental subroutines (non_elem_subr);+  Often mathematical functions have one generic form and many specific names!+  If you use the generic form, the compiler will select the right function+  to use depending on the type of the arguments.+  But you can use also the specific names!+  -->++<!-- E L E M E N T A L    P R O C E D U R E S -->+    <list name="elemental_procs">+    <!-- Elemental functions that may convert -->+      <item>abs</item>   <!-- Generic form: abs -->+      <item>cabs</item>  <!-- Specific names for abs -->+      <item>dabs</item>+      <item>iabs</item>+      <item>aimag</item>+      <item>aint</item>  <!-- Generic form: aint -->+      <item>dint</item>  <!-- Specific name for aint -->+      <item>anint</item> <!-- Generic form: anint -->+      <item>dnint</item> <!-- Specific name for anint -->+      <item>ceiling</item>+      <item>cmplx</item>+      <item>dcmplx</item> <!-- (non standard) -->+      <item>dimag</item>  <!-- (non standard) -->+      <item>floor</item>+      <item>nint</item>  <!-- Generic form: nint -->+      <item>idnint</item><!-- Specific name for nint -->+      <item>int</item>   <!-- Generic form: int -->+      <item>idint</item> <!-- Specific names for int -->+      <item>ifix</item>+      <item>real</item>  <!-- Generic form: real -->+      <item>float</item> <!-- Specific names for real -->+      <item>sngl</item>+      <item>dble</item>+      <item>dreal</item> <!-- (non standard) -->+      <item>aprime</item> <!-- 5 functions from fortran.xml -->+      <item>dconjg</item> <!-- I don't know if they really belong to -->+      <item>dfloat</item> <!-- the fortran 90/95 standard! -->+      <item>ddmim</item>+      <item>rand</item>+    <!-- Elemental functions that do not convert -->+      <item>modulo</item>+      <item>conjg</item>+      <item>dprod</item>  <!-- dprod(x, y) is the specific name for x*y -->+      <item>dim</item>    <!-- Generic form: dim -->+      <item>ddim</item>   <!-- Specific names for dim -->+      <item>idim</item>+      <item>max</item>    <!-- Generic form: max -->+      <item>amax0</item>  <!-- Specific names for max -->+      <item>amax1</item>+      <item>max0</item>+      <item>max1</item>+      <item>dmax1</item>+      <item>min</item>    <!-- Generic form: min -->+      <item>amin0</item>  <!-- Specific names for min -->+      <item>amin1</item>+      <item>min0</item>+      <item>min1</item>+      <item>dmin1</item>+      <item>mod</item>    <!-- Generic form: mod -->+      <item>amod</item>   <!-- Specific names for mod -->+      <item>dmod</item>+      <item>sign</item>   <!-- Generic form: sign -->+      <item>dsign</item>  <!-- Specific names for sign -->+      <item>isign</item>+    <!-- Elemental mathematical functions -->+      <item>acos</item>    <!-- Generic form: acos -->+      <item>dacos</item>   <!-- Specific names for acos -->+      <item>asin</item>    <!-- Generic form: asin -->+      <item>dasin</item>   <!-- Specific names for asin -->+      <item>atan</item>    <!-- Generic form: atan -->+      <item>datan</item>   <!-- Specific names for atan -->+      <item>atan2</item>   <!-- Generic form: atan2 -->+      <item>datan2</item>  <!-- Specific names for atan2 -->+      <item>cos</item>     <!-- Generic form: cos -->+      <item>ccos</item>    <!-- Specific names for cos -->+      <item>dcos</item>+      <item>cosh</item>    <!-- Generic form: cosh -->+      <item>dcosh</item>   <!-- Specific names for cosh -->+      <item>exp</item>     <!-- Generic form: exp -->+      <item>cexp</item>    <!-- Specific names for exp -->+      <item>dexp</item>+      <item>log</item>     <!-- Generic form: log -->+      <item>alog</item>    <!-- Specific names for log -->+      <item>dlog</item>+      <item>clog</item>+      <item>log10</item>   <!-- Generic form: log10 -->+      <item>alog10</item>  <!-- Specific names for log10 -->+      <item>dlog10</item>+      <item>sin</item>     <!-- Generic form: sin -->+      <item>csin</item>    <!-- Specific names for sin -->+      <item>dsin</item>+      <item>sinh</item>    <!-- Generic form: sinh -->+      <item>dsinh</item>   <!-- Specific name for sinh -->+      <item>sqrt</item>    <!-- Generic form: sqrt -->+      <item>csqrt</item>   <!-- Specific names for sqrt -->+      <item>dsqrt</item>+      <item>tan</item>     <!-- Generic form: tan -->+      <item>dtan</item>    <!-- Generic form: dtan -->+      <item>tanh</item>    <!-- Generic form: tanh -->+      <item>dtanh</item>   <!-- Specific names for tanh -->+    <!-- Elemental character and logical functions -->+    <!-- Character-integer conversions -->+      <item>achar</item>+      <item>char</item>+      <item>iachar</item>+      <item>ichar</item>+    <!-- Lexical comparison functions -->+      <item>lge</item>+      <item>lgt</item>+      <item>lle</item>+      <item>llt</item>+    <!-- String-handling elemental functions -->+      <item>adjustl</item>+      <item>adjustr</item>+      <item>index</item>+      <item>len_trim</item>+      <item>scan</item>+      <item>verify</item>+    <!-- Logical conversion -->+      <item>logical</item>+    <!-- Elemental functions to manipulate reals -->+      <item>exponent</item>+      <item>fraction</item>+      <item>nearest</item>+      <item>rrspacing</item>+      <item>scale</item>+      <item>set_exponent</item>+      <item>spacing</item>+    <!-- Bit manipulation elemental functions -->+      <item>btest</item>+      <item>iand</item>+      <item>ibclr</item>+      <item>ibits</item>+      <item>ibset</item>+      <item>ieor</item>+      <item>ior</item>+      <item>ishft</item>+      <item>ishftc</item>+      <item>not</item>+    <!-- Bit manipulation elemental subroutine -->+      <item>mvbits</item>+    <!-- Merge elemental function -->+      <item>merge</item>+    </list>++<!-- I N Q U I R Y    F U N C T I O N S -->+    <list name="inquiry_fn">+    <!-- Inquiry functions for any type -->+      <item>associated</item>+      <item>present</item>+      <item>kind</item>+    <!-- String-handling inquiry function -->+      <item>len</item>+    <!-- Numeric inquiry functions -->+      <item>digits</item>+      <item>epsilon</item>+      <item>huge</item>+      <item>maxexponent</item>+      <item>minexponent</item>+      <item>precision</item>+      <item>radix</item>+      <item>range</item>+      <item>tiny</item>+    <!-- Bit inquiry function -->+      <item>bit_size</item>+    <!-- Array inquiry functions -->+      <item>allocated</item>+      <item>lbound</item>+      <item>ubound</item>+      <item>shape</item>+      <item>size</item>+    </list>++<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->+    <list name="transform_fn">+    <!-- String-handling transformational functions -->+      <item>repeat</item>+      <item>trim</item>+    <!-- Transformational functions for kind values -->+      <item>selected_int_kind</item>+      <item>selected_real_kind</item>+    <!-- Transfer function -->+      <item>transfer</item>+    <!-- Vector and matrix multiplication functions -->+      <item>dot_product</item>+      <item>matmul</item>+    <!-- Transformational functions that reduce arrays -->+      <item>all</item>+      <item>any</item>+      <item>count</item>+      <item>maxval</item>+      <item>minval</item>+      <item>product</item>+      <item>sum</item>+    <!-- Packing and unpacking arrays -->+      <item>pack</item>+      <item>unpack</item>+    <!-- Transformational function for reshaping an array -->+      <item>reshape</item>+    <!-- Transformational function for replication -->+      <item>spread</item>+    <!-- Array shifting functions -->+      <item>cshift</item>+      <item>eoshift</item>+    <!-- Matrix transpose -->+      <item>transpose</item>+    <!-- Transformational functions for geometric location -->+      <item>maxloc</item>+      <item>minloc</item>+    </list>++<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->+    <list name="non_elem_subr">+    <!-- Real time clock -->+      <item>date_and_time</item>+      <item>system_clock</item>+    <!-- Random numbers -->+      <item>random_number</item>+      <item>random_seed</item>+    </list>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *                           C O N T E X T S                         *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <contexts>+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >+        <IncludeRules context="find_preprocessor" />+        <IncludeRules context="find_comments" />+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_decls" />+        <IncludeRules context="find_intrinsics" />+        <IncludeRules context="find_io_stmnts" />+        <IncludeRules context="find_op_and_log" />+        <IncludeRules context="find_numbers" />+        <IncludeRules context="find_continue" />+        <IncludeRules context="find_symbols" />+        <IncludeRules context="find_begin_stmnts" />+        <IncludeRules context="find_end_stmnts" />+        <IncludeRules context="find_mid_stmnts" />+      </context>+<!--************************END OF THE MAIN CONTEXT*************************-->+++<!-- IMPORTANT: If you modify something, do it also in "fortran-free.xml"! -->++<!-- This context highlights preprocessor lines -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">+        <DetectChar attribute="Preprocessor" context="preprocessor" char="#" column="0"/>+        <StringDetect attribute="Preprocessor" context="preprocessor" String="cDEC$" column="0"/>+        <StringDetect attribute="Preprocessor" context="preprocessor" String="CDEC$" column="0"/>+      </context>+      <context attribute="Preprocessor" lineEndContext="#pop" name="preprocessor" />++<!-- This context highlights operators and the logical values .true. .false. -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">+        <StringDetect attribute="Logical" context="#stay" String=".true." insensitive="true"/>+        <StringDetect attribute="Logical" context="#stay" String=".false." insensitive="true"/>+        <RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>+        <Detect2Chars attribute="Operator" context="#stay" char="=" char1="="/>+        <Detect2Chars attribute="Operator" context="#stay" char="/" char1="="/>+        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="="/>+        <Detect2Chars attribute="Operator" context="#stay" char="&gt;" char1="="/>+        <AnyChar attribute="Operator" context="#stay" String="&lt;&gt;"/>+      </context>++<!-- This context highlights comments -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">+        <AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>+        <DetectChar attribute="Comment" context="comment" char="!"/>+        <RegExpr attribute="Comment" context="comment" String="." column="72" />+      </context>++      <context attribute="Comment" lineEndContext="#pop" name="comment">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>++<!-- This context highlights symbols -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">+        <Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>+        <Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>+        <Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>+        <AnyChar attribute="Keyword" context="#stay" String="&amp;+-*/=?[]^{|}~"/>+        <AnyChar attribute="Symbol" context="#stay" String="(),"/>+      </context>++<!-- This context highlights the continuation character -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_continue">+        <RegExpr attribute="Continuation character" context="#stay" String="^     [^0-9\s]" column="0"/>+      </context>++<!-- This context highlights items inside the parentesis of a function -->+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_intrinsics" />+        <IncludeRules context="find_numbers" />+      </context>++<!-- The following two contexts match input/output statements -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>+      </context>+<!-- This context matches parenthesis for the read, write, ... statements -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">+        <DetectChar attribute="IO Function" context="#stay" char="*"/>+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>+        <DetectChar attribute="IO Function" context="#pop" char=")"/>+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_intrinsics" />+        <IncludeRules context="find_numbers" />+        <IncludeRules context="find_symbols" />+      </context>+<!-- This context highlights the text inside the parenthesis of fortran statement -->+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>+        <DetectChar attribute="IO Function" context="#pop" char=")"/>+        <RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="true"/>+        <DetectChar attribute="IO Function" context="#stay" char=":"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_symbols" />+      </context>++<!-- The following context matches the begin of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" beginRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:then|do|select\s+case)\b" insensitive="true" beginRegion="Block"/>+      </context>+<!-- The following context matches the end of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" endRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:do|if)\b" insensitive="true" endRegion="Block"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:select|where|forall|interface)\b" insensitive="true"/>+        <RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>+        <WordDetect attribute="Keyword" context="#stay" String="end" insensitive="true" endRegion="Routine"/>+      </context>+<!-- The following context matches the mid of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">+        <WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="Block" beginRegion="Block"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bcase(?:\s+default)?\b" insensitive="true" endRegion="Block" beginRegion="Block"/>+        <WordDetect attribute="Keyword" context="#stay" String="contains" insensitive="true" endRegion="Routine" beginRegion="Routine"/>+      </context>++<!-- The following two contexts match declarations -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">+        <RegExpr attribute="Data Type" context="#stay" String="\b(?:integer|real|complex)[\*]\d{1,2}" insensitive="true"/>+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="true"/>+        <keyword attribute="Data Type" context="#stay" String="types"/>+        <WordDetect attribute="Data Type" context="#stay" String="data" firstNonSpace="true" insensitive="true"/>+        <!--<RegExpr attribute="Data Type" context="find_paren" String="real\s*[(]" firstNonSpace="true" insensitive="true"/>+        <RegExpr attribute="Data Type" context="#stay" String="real(?![\w\*])" firstNonSpace="true" insensitive="true"/>-->+        <RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="true"/>+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:type|integer|real|complex|character|logical|intent|dimension)\s*[(]" insensitive="true"/>+        <RegExpr attribute="Data Type" context="#stay" String="\b(?:type|integer|real|complex|character|logical|double\s*precision|intent|dimension)\b" insensitive="true"/>+        <Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>+      </context>+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">+        <DetectChar attribute="Data Type" context="find_paren" char="("/>+        <DetectChar attribute="Data Type" context="#pop" char=")"/>+      </context>++<!-- The following context matches intrinsic procedures -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">+        <keyword attribute="Keyword" context="#stay" String="keywords"/>+      <!-- INTRINSIC PROCEDURES -->+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>+      </context>++<!-- The following context matches integer and real numbers -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">+        <!-- Floating-point numbers with optional kind -->+        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="true"/>+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>+        <!-- Integers with optional kind specifier -->+        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+(?:[_](?:[0-9]+|[a-zA-Z][\w_]*))?"/>+        <!-- Integers in binary, octal and hexadecimal notations -->+        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx](?:[&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="true"/>+      </context>++<!-- The following four contexts implement the complex string multi-line declarations -->+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->+      <context attribute="String" lineEndContext="#stay" name="find_strings">+        <DetectChar attribute="String" context="string_1" char="&apos;"/>+        <DetectChar attribute="String" context="string_2" char="&quot;"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">+        <DetectSpaces />+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>+        <AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>+        <DetectChar attribute="Comment" context="comment" char="!" firstNonSpace="true"/>+      </context>+    </contexts>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <itemDatas>+      <itemData name="Normal Text" defStyleNum="dsNormal"/>+      <itemData name="Keyword" defStyleNum="dsKeyword"/>+      <itemData name="Data Type" defStyleNum="dsDataType"/>+      <itemData name="Decimal" defStyleNum="dsDecVal"/>+      <itemData name="Float" defStyleNum="dsFloat"/>+      <itemData name="String" defStyleNum="dsString"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+      <itemData name="Symbol" defStyleNum="dsNormal"/>+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>+      <itemData name="Operator" defStyleNum="dsOperator" bold="1" italic="0"/>+      <itemData name="Logical" defStyleNum="dsConstant" bold="1" italic="0"/>+      <itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>+      <itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>+      <itemData name="Continuation character" defStyleNum="dsBuiltIn" bold="1" italic="0"/>+      <itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>+      <itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>+      <itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>+    </itemDatas>+  </highlighting>+  <general>+    <comments>+      <comment name="singleLine" start="c"/>+    </comments>+    <keywords casesensitive="0"/>+  </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ syntax/fortran-free.xml view
@@ -0,0 +1,311 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<language name="Fortran (Free Format)" version="3" kateversion="5.53" section="Sources" extensions="*.f90;*.F90;*.f95;*.F95;*.f03;*.F03;*.f08;*.F08;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it), Janus Weil" license="MIT" priority="10">+<!-- Original author: Franchin Matteo (fnch@libero.it).+     Adaptation to free & fixed format: Janus Weil.+-->+<!-- NOTE: Keep in sync with the "Fortran (Fixed Format)" highlighter! (fortran-fixed.xml) -->+  <highlighting>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *                              L I S T S                            *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <list name="keywords">+      <include>keywords##Fortran (Fixed Format)</include>+      <item>associate</item>+      <item>import</item>+      <item>impure</item>+    </list>+    <list name="io_functions">+      <include>io_functions##Fortran (Fixed Format)</include>+    </list>+    <!-- Keywords inside read(...), write(...), backspace(...),+          rewind(...), endfile(...), close(...) -->+    <list name="io_keywords">+      <include>io_keywords##Fortran (Fixed Format)</include>+    </list>+    <!-- Keywords inside open(...) -->+    <list name="open_keywords">+      <include>open_keywords##Fortran (Fixed Format)</include>+    </list>+    <!-- Keywords inside inquire(...) -->+    <list name="inquire_keywords">+      <include>inquire_keywords##Fortran (Fixed Format)</include>+    </list>+    <list name="types">+      <include>types##Fortran (Fixed Format)</include>+      <item>abstract</item>+      <item>asynchronous</item>+      <item>bind</item>+      <item>contiguous</item>+      <item>deferred</item>+      <item>enum</item>+      <item>enumerator</item>+      <item>final</item>+      <item>generic</item>+      <item>nopass</item>+      <item>non_overridable</item>+      <item>protected</item>+      <item>value</item>+      <item>volatile</item>+    </list>++<!-- There are 4 types of intrinsic procedures in Fortran 90:+   1) Elemental procedures (elemental_procs);+   2) Inquiry functions (inquiry_fn);+   3) Transformational functions (transform_fn);+   4) Non elemental subroutines (non_elem_subr);+  Often mathematical functions have one generic form and many specific names!+  If you use the generic form, the compiler will select the right function+  to use depending on the type of the arguments.+  But you can use also the specific names!+  -->++<!-- E L E M E N T A L    P R O C E D U R E S -->+    <list name="elemental_procs">+      <include>elemental_procs##Fortran (Fixed Format)</include>+    <!-- Elemental mathematical functions -->+      <item>acosh</item>+      <item>asinh</item>+      <item>atanh</item>+      <item>bessel_j0</item>+      <item>bessel_j1</item>+      <item>bessel_jn</item>+      <item>bessel_y0</item>+      <item>bessel_y1</item>+      <item>bessel_yn</item>+      <item>erf</item>+      <item>erfc</item>+      <item>erfc_scaled</item>+      <item>gamma</item>+      <item>log_gamma</item>+      <item>hypot</item>+    </list>++<!-- I N Q U I R Y    F U N C T I O N S -->+    <list name="inquiry_fn">+      <include>inquiry_fn##Fortran (Fixed Format)</include>+    <!-- Inquiry functions for any type -->+      <item>extends_type_of</item>+      <item>same_type_as</item>+      <item>storage_size</item>+    <!-- Coarray inquiry functions -->+      <item>lcobound</item>+      <item>ucobound</item>+      <item>image_index</item>+    </list>++<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->+    <list name="transform_fn">+      <include>transform_fn##Fortran (Fixed Format)</include>+    <!-- Transformational functions for kind values -->+      <item>selected_char_kind</item>+    <!-- Transformational functions that reduce arrays -->+      <item>parity</item>+      <item>iall</item>+      <item>iany</item>+      <item>iparity</item>+    <!-- Coarray transformational functions -->+      <item>num_images</item>+      <item>this_image</item>+    </list>++<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->+    <list name="non_elem_subr">+      <include>non_elem_subr##Fortran (Fixed Format)</include>+    <!-- Real time clock -->+      <item>cpu_time</item>+    <!-- System commands -->+      <item>execute_command_line</item>+      <item>get_environment_variable</item>+    </list>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *                           C O N T E X T S                         *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <contexts>+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_io_stmnts" />+        <IncludeRules context="find_op_and_log##Fortran (Fixed Format)" />+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />+        <IncludeRules context="find_preprocessor##Fortran (Fixed Format)" />+        <IncludeRules context="find_comments" />+        <IncludeRules context="find_symbols##Fortran (Fixed Format)" />+        <IncludeRules context="find_begin_stmnts" />+        <IncludeRules context="find_mid_stmnts" />+        <IncludeRules context="find_end_stmnts" />+        <IncludeRules context="find_decls" />+        <IncludeRules context="find_intrinsics" />+      </context>+<!--************************END OF THE MAIN CONTEXT*************************-->+++<!-- IMPORTANT: If you modify something, do it also in "fortran-fixed.xml"! -->++<!-- This context highlights comments -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">+        <DetectChar attribute="Comment" context="comment" char="!"/>+      </context>+      <context attribute="Comment" lineEndContext="#pop" name="comment">+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>++<!-- This context highlights items inside the parentesis of a function -->+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">+      <!-- inside_func_paren##Fortran (Fixed Format) -->+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_intrinsics" />+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />+      </context>++<!-- The following two contexts match input/output statements -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:flush|wait)\s*[(]" insensitive="true"/>+      <!-- find_io_stmnts##Fortran (Fixed Format) -->+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>+      </context>+<!-- This context matches parenthesis for the read, write, ... statements -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">+      <!-- find_io_paren##Fortran (Fixed Format) -->+        <DetectChar attribute="IO Function" context="#stay" char="*"/>+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>+        <DetectChar attribute="IO Function" context="#pop" char=")"/>+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="find_intrinsics" />+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />+        <IncludeRules context="find_symbols##Fortran (Fixed Format)" />+      </context>+<!-- This context highlights the text inside the parenthesis of fortran statement -->+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>+        <DetectChar attribute="IO Function" context="#pop" char=")"/>+        <IncludeRules context="find_strings" />+        <IncludeRules context="format_stmnt##Fortran (Fixed Format)" />+      </context>++<!-- FIXME: beginRegion/endRegion don't work well with IncludeRules. When this is corrected, use IncludeRules instead of replicating rules. -->+<!-- The following context matches the begin of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">+        <WordDetect attribute="Keyword" context="#stay" String="submodule" insensitive="true" beginRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:do\s*[,\s]\s*concurrent|select\s+type|block|critical)\b" insensitive="true" beginRegion="Block"/>+      <!-- Here IncludeRules: find_begin_stmnts##Fortran (Fixed Format) -->+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" beginRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:then|do|select\s+case)\b" insensitive="true" beginRegion="Block"/>+      </context>+<!-- The following context matches the end of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:procedure|submodule)\b" insensitive="true" endRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:block|critical)\b" insensitive="true" endRegion="Block"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:associate)\b" insensitive="true"/>+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*(?:type|enum)\b" insensitive="true"/>+      <!-- Here IncludeRules: find_end_stmnts##Fortran (Fixed Format) -->+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" endRegion="Routine"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:do|if)\b" insensitive="true" endRegion="Block"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:select|where|forall|interface)\b" insensitive="true"/>+        <RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>+        <WordDetect attribute="Keyword" context="#stay" String="end" insensitive="true" endRegion="Routine"/>+      </context>+<!-- The following context matches the mid of program units -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:type\s+is|class\s+(?:is|default))\b" insensitive="true" endRegion="Block" beginRegion="Block"/>+      <!-- Here IncludeRules: find_mid_stmnts##Fortran (Fixed Format) -->+        <WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="Block" beginRegion="Block"/>+        <RegExpr attribute="Keyword" context="#stay" String="\bcase(?:\s+default)?\b" insensitive="true" endRegion="Block" beginRegion="Block"/>+        <WordDetect attribute="Keyword" context="#stay" String="contains" insensitive="true" endRegion="Routine" beginRegion="Routine"/>+      </context>++<!-- The following two contexts match declarations -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:class|extends|procedure|pass|codimension)\s*[(]" insensitive="true"/>+        <WordDetect attribute="Data Type" context="#stay" String="codimension" insensitive="true"/>+        <WordDetect attribute="Data Type" context="#stay" String="procedure" insensitive="true"/>+        <WordDetect attribute="Data Type" context="#stay" String="pass" insensitive="true"/>+      <!-- find_decls##Fortran (Fixed Format) -->+        <keyword attribute="Data Type" context="#stay" String="types"/>+        <!--<RegExpr attribute="Data Type" context="find_paren" String="real\s*[(]" firstNonSpace="true" insensitive="true"/>-->+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:type|integer|real|complex|character|logical|intent|dimension)\s*[(]" insensitive="true"/>+        <IncludeRules context="find_decls##Fortran (Fixed Format)"/>+      </context>+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">+      <!-- find_paren##Fortran (Fixed Format) -->+        <DetectChar attribute="Data Type" context="find_paren" char="("/>+        <DetectChar attribute="Data Type" context="find_paren" char="["/>+        <DetectChar attribute="Data Type" context="#pop" char=")"/>+        <DetectChar attribute="Data Type" context="#pop" char="]"/>+      </context>++<!-- The following context matches intrinsic procedures -->+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">+      <!-- find_intrinsics##Fortran (Fixed Format) -->+        <keyword attribute="Keyword" context="#stay" String="keywords"/>+      <!-- INTRINSIC PROCEDURES -->+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>+      </context>++<!-- The following four contexts implement the complex string multi-line declarations -->+<!-- NOTE: Contexts replicated from "Fortran (Fixed Format)" -->+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->+      <context attribute="String" lineEndContext="#stay" name="find_strings">+        <DetectChar attribute="String" context="string_1" char="&apos;"/>+        <DetectChar attribute="String" context="string_2" char="&quot;"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>+      </context>++      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">+        <DetectSpaces />+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>+        <DetectChar attribute="Comment" context="comment" char="!" firstNonSpace="true"/>+      </context>+    </contexts>++<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->+    <itemDatas>+      <itemData name="Normal Text" defStyleNum="dsNormal"/>+      <itemData name="Keyword" defStyleNum="dsKeyword"/>+      <itemData name="Data Type" defStyleNum="dsDataType"/>+      <itemData name="String" defStyleNum="dsString"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+      <itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>+      <itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>+      <itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>+      <itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>+      <itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>+    </itemDatas>+  </highlighting>+  <general>+    <comments>+      <comment name="singleLine" start="!"/>+    </comments>+    <keywords casesensitive="0"/>+  </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/fsharp.xml view
@@ -9,7 +9,7 @@ <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. --> <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. --> ]>-<language name="FSharp" version="5" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">+<language name="FSharp" version="6" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">    <highlighting>     <list name="keywords">@@ -190,11 +190,18 @@         <RegExpr attribute="Decimal" context="#stay" String="-?&DEC;" />       </context> -      <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment"/>+      <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>       <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">         <!-- Support for nested comments -->         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="String" lineEndContext="#stay" name="String Constant">@@ -275,8 +282,7 @@     <keywords casesensitive="1" />     <comments>       <comment name="singleLine" start="//" />-      <comment name="singleLine" start="///" />-      <comment name="multiLine" start="(*" end="*)" />+      <comment name="multiLine" start="(*" end="*)" region="comment" />     </comments>   </general> </language>
syntax/glsl.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="4" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="6" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL"> 	<highlighting> 		<list name="keywords"> 			<item>break</item>@@ -176,11 +176,6 @@ 			<item>readonly</item> 			<item>writeonly</item> 		</list>-		<list name="attention">-			<item>FIXME</item>-			<item>TODO</item>-			<item>BUG</item>-		</list> 		<list name="stdlib"> 			<!-- see also: https://www.opengl.org/sdk/docs/man4/ --> 			<item>abs</item>@@ -1173,18 +1168,22 @@ 				<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/> 				<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" /> 				-				<RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />-				<AnyChar attribute="Symbol" context="#stay" String=".+-/*%&lt;&gt;[]()^|&amp;~=!:;,?&#59;" />+				<DetectChar attribute="Symbol" context="Member" char="." />+				<AnyChar attribute="Symbol" context="#stay" String="+-/*%&lt;&gt;[]()^|&amp;~=!:;,?&#59;" /> 			</context> 			<context name="Member" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> 				<RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" /> 			</context> 			<context name="Commentar 1" attribute="Comment" lineEndContext="#pop">-				<keyword attribute="Alert" context="#stay" String="attention" />+				<DetectSpaces />+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context> 			<context name="Commentar 2" attribute="Comment" lineEndContext="#stay"> 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>-				<keyword attribute="Alert" context="#stay" String="attention" />+				<DetectSpaces />+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context> 			<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"> 			</context>@@ -1204,14 +1203,14 @@ 			<itemData name="Symbol"         defStyleNum="dsNormal"/> 			<itemData name="Preprocessor"   defStyleNum="dsPreprocessor"/> 			<itemData name="Comment"        defStyleNum="dsComment"/>-			<itemData name="Alert"          defStyleNum="dsAlert" /> 		</itemDatas> 	</highlighting> 	<general> 		<comments> 			<comment name="singleLine" start="//" />-			<comment name="multiLine" start="/*" end="*/" />+			<comment name="multiLine" start="/*" end="*/" region="Comment" /> 		</comments> 		<keywords casesensitive="1" /> 	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/gnuassembler.xml view
@@ -43,7 +43,7 @@  --> -<language name="GNU Assembler" version="3" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">+<language name="GNU Assembler" version="4" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">   <highlighting>     <list name="keywords">       <item>.abort</item>@@ -250,16 +250,20 @@         <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />         <RegExpr      attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />         <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" firstNonSpace="true" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" />+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" beginRegion="BlockComment" />         <AnyChar      attribute="Comment" context="Commentar 2" String="@;#" />         <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{|}~" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 1">+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />+        <DetectSpaces />         <IncludeRules context="##Alerts" />-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="Commentar 2" >+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="String" lineEndContext="#pop" name="String">         <LineContinue  attribute="String" context="Some Context" />@@ -293,11 +297,10 @@    <general>     <comments>-      <!--<comment name="singleLine" start=";" />-      <comment name="singleLine" start="@" />-      <comment name="singleLine" start="#" />-->-      <comment name="multiLine"  start="/*" end="*/" />+      <comment name="singleLine" start="#" position="afterwhitespace" />+      <comment name="multiLine"  start="/*" end="*/" region="BlockComment" />     </comments>     <keywords casesensitive="1" weakDeliminator="_.$" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/go.xml view
@@ -26,7 +26,7 @@ -->  -<language name="Go" version="4" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">+<language name="Go" version="5" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">     <highlighting>     <list name="keywords"> <!-- Keywords have been taken from The Go Programming Language Specification -> Keywords section -->@@ -111,7 +111,7 @@         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"   />         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"   />-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*"   />+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment" />         <Int attribute="Decimal" context="#stay" />         <Float attribute="Float" context="#stay" />         <HlCOct attribute="Octal" context="#stay"/>@@ -126,6 +126,7 @@         <LineContinue attribute="Comment" context="#stay"/>         <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> @@ -133,6 +134,7 @@         <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> @@ -173,3 +175,4 @@     <keywords casesensitive="1" additionalDeliminator="'&quot;" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ syntax/graphql.xml view
@@ -0,0 +1,91 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<!--+  GraphQL: https://graphql.org/+  Synatx: https://github.com/graphql/graphql-spec/blob/master/spec/Section%202%20- -%20Language.md+     and: https://github.com/graphql/graphql-spec/blob/master/spec/Appendix%20B%20- -%20Grammar%20Summary.md+-->+<language name="GraphQL" section="Other" version="2" kateversion="2.4" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">+  <highlighting>+    <list name="listKeywords">+      <item>enum</item>+      <item>extend</item>+      <item>fragment</item>+      <item>implements</item>+      <item>input</item>+      <item>interface</item>+      <item>mutation</item>+      <item>on</item>+      <item>query</item>+      <item>scalar</item>+      <item>schema</item>+      <item>subscription</item>+      <item>type</item>+      <item>union</item>+    </list>+   <list name="listConstants">+      <item>null</item>+      <item>true</item>+      <item>false</item>+    </list>+    <list name="listTypes">+      <item>Boolean</item>+      <item>Float</item>+      <item>ID</item>+      <item>Int</item>+      <item>String</item>+    </list>++    <contexts>+      <context name="ctxNormal" lineEndContext="#stay" attribute="Normal">+        <DetectChar char="{" beginRegion="RegionBrace"/>+        <DetectChar char="}" endRegion="RegionBrace"/>+        <Float attribute="Float"/>+        <Int attribute="Decimal"/>+        <keyword String="listKeywords" attribute="Keyword"/>+        <keyword String="listConstants" attribute="Constant"/>+        <keyword String="listTypes" attribute="Type"/>+        <StringDetect attribute="String" context="ctxBlockString" String="&quot;&quot;&quot;"/>+        <DetectChar attribute="String" context="ctxString" char="&quot;"/>+        <DetectChar attribute="Comment" context="ctxComment" char="#"/>+        <RegExpr String="\$[_A-Za-z][_0-9A-Za-z]*" attribute="Variable"/>+        <RegExpr String="@[_A-Za-z][_0-9A-Za-z]*" attribute="Directive"/>+      </context>++      <context name="ctxString" attribute="String" lineEndContext="#pop">+        <HlCStringChar attribute="Special Character" context="#stay"/>+        <DetectChar attribute="String" context="#pop" char="&quot;"/>+      </context>+      <context name="ctxBlockString" attribute="String" lineEndContext="#stay">+        <HlCStringChar attribute="Special Character" context="#stay"/>+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>+      </context>++      <context name="ctxComment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>+    </contexts>++    <itemDatas>+      <itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>+      <itemData name="Decimal" defStyleNum="dsDecVal"/>+      <itemData name="Float" defStyleNum="dsFloat"/>+      <itemData name="String" defStyleNum="dsString"/>+      <itemData name="Special Character" defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false"/>+      <itemData name="Type" defStyleNum="dsDataType" spellChecking="false"/>+      <itemData name="Directive" defStyleNum="dsAttribute" spellChecking="false"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+    </itemDatas>+  </highlighting>+  <general>+    <comments>+      <comment name="singleLine" start="#"/>+    </comments>+  </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ syntax/groovy.xml view
@@ -0,0 +1,3894 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<!--+    Based on the java syntax file 1.19 by Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)+-->+<language name="Groovy" version="8" kateversion="5.0" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">+	<highlighting>+		<list name="java15">+			<item>ACTIVE</item>+			<item>ACTIVITY_COMPLETED</item>+			<item>ACTIVITY_REQUIRED</item>+			<item>ARG_IN</item>+			<item>ARG_INOUT</item>+			<item>ARG_OUT</item>+			<item>AWTError</item>+			<item>AWTEvent</item>+			<item>AWTEventListener</item>+			<item>AWTEventListenerProxy</item>+			<item>AWTEventMulticaster</item>+			<item>AWTException</item>+			<item>AWTKeyStroke</item>+			<item>AWTPermission</item>+			<item>AbstractAction</item>+			<item>AbstractBorder</item>+			<item>AbstractButton</item>+			<item>AbstractCellEditor</item>+			<item>AbstractCollection</item>+			<item>AbstractColorChooserPanel</item>+			<item>AbstractDocument</item>+			<item>AbstractDocument.AttributeContext</item>+			<item>AbstractDocument.Content</item>+			<item>AbstractDocument.ElementEdit</item>+			<item>AbstractExecutorService</item>+			<item>AbstractInterruptibleChannel</item>+			<item>AbstractLayoutCache</item>+			<item>AbstractLayoutCache.NodeDimensions</item>+			<item>AbstractList</item>+			<item>AbstractListModel</item>+			<item>AbstractMap</item>+			<item>AbstractMethodError</item>+			<item>AbstractPreferences</item>+			<item>AbstractQueue</item>+			<item>AbstractQueuedSynchronizer</item>+			<item>AbstractSelectableChannel</item>+			<item>AbstractSelectionKey</item>+			<item>AbstractSelector</item>+			<item>AbstractSequentialList</item>+			<item>AbstractSet</item>+			<item>AbstractSpinnerModel</item>+			<item>AbstractTableModel</item>+			<item>AbstractUndoableEdit</item>+			<item>AbstractWriter</item>+			<item>AccessControlContext</item>+			<item>AccessControlException</item>+			<item>AccessController</item>+			<item>AccessException</item>+			<item>Accessible</item>+			<item>AccessibleAction</item>+			<item>AccessibleAttributeSequence</item>+			<item>AccessibleBundle</item>+			<item>AccessibleComponent</item>+			<item>AccessibleContext</item>+			<item>AccessibleEditableText</item>+			<item>AccessibleExtendedComponent</item>+			<item>AccessibleExtendedTable</item>+			<item>AccessibleExtendedText</item>+			<item>AccessibleHyperlink</item>+			<item>AccessibleHypertext</item>+			<item>AccessibleIcon</item>+			<item>AccessibleKeyBinding</item>+			<item>AccessibleObject</item>+			<item>AccessibleRelation</item>+			<item>AccessibleRelationSet</item>+			<item>AccessibleResourceBundle</item>+			<item>AccessibleRole</item>+			<item>AccessibleSelection</item>+			<item>AccessibleState</item>+			<item>AccessibleStateSet</item>+			<item>AccessibleStreamable</item>+			<item>AccessibleTable</item>+			<item>AccessibleTableModelChange</item>+			<item>AccessibleText</item>+			<item>AccessibleTextSequence</item>+			<item>AccessibleValue</item>+			<item>AccountException</item>+			<item>AccountExpiredException</item>+			<item>AccountLockedException</item>+			<item>AccountNotFoundException</item>+			<item>Acl</item>+			<item>AclEntry</item>+			<item>AclNotFoundException</item>+			<item>Action</item>+			<item>ActionEvent</item>+			<item>ActionListener</item>+			<item>ActionMap</item>+			<item>ActionMapUIResource</item>+			<item>Activatable</item>+			<item>ActivateFailedException</item>+			<item>ActivationDesc</item>+			<item>ActivationException</item>+			<item>ActivationGroup</item>+			<item>ActivationGroupDesc</item>+			<item>ActivationGroupDesc.CommandEnvironment</item>+			<item>ActivationGroupID</item>+			<item>ActivationGroup_Stub</item>+			<item>ActivationID</item>+			<item>ActivationInstantiator</item>+			<item>ActivationMonitor</item>+			<item>ActivationSystem</item>+			<item>Activator</item>+			<item>ActiveEvent</item>+			<item>ActivityCompletedException</item>+			<item>ActivityRequiredException</item>+			<item>AdapterActivator</item>+			<item>AdapterActivatorOperations</item>+			<item>AdapterAlreadyExists</item>+			<item>AdapterAlreadyExistsHelper</item>+			<item>AdapterInactive</item>+			<item>AdapterInactiveHelper</item>+			<item>AdapterManagerIdHelper</item>+			<item>AdapterNameHelper</item>+			<item>AdapterNonExistent</item>+			<item>AdapterNonExistentHelper</item>+			<item>AdapterStateHelper</item>+			<item>AddressHelper</item>+			<item>Adjustable</item>+			<item>AdjustmentEvent</item>+			<item>AdjustmentListener</item>+			<item>Adler32</item>+			<item>AffineTransform</item>+			<item>AffineTransformOp</item>+			<item>AlgorithmParameterGenerator</item>+			<item>AlgorithmParameterGeneratorSpi</item>+			<item>AlgorithmParameterSpec</item>+			<item>AlgorithmParameters</item>+			<item>AlgorithmParametersSpi</item>+			<item>AllPermission</item>+			<item>AlphaComposite</item>+			<item>AlreadyBound</item>+			<item>AlreadyBoundException</item>+			<item>AlreadyBoundHelper</item>+			<item>AlreadyBoundHolder</item>+			<item>AlreadyConnectedException</item>+			<item>AncestorEvent</item>+			<item>AncestorListener</item>+			<item>AnnotatedElement</item>+			<item>Annotation</item>+			<item>Annotation</item>+			<item>AnnotationFormatError</item>+			<item>AnnotationTypeMismatchException</item>+			<item>Any</item>+			<item>AnyHolder</item>+			<item>AnySeqHelper</item>+			<item>AnySeqHelper</item>+			<item>AnySeqHolder</item>+			<item>AppConfigurationEntry</item>+			<item>AppConfigurationEntry.LoginModuleControlFlag</item>+			<item>Appendable</item>+			<item>Applet</item>+			<item>AppletContext</item>+			<item>AppletInitializer</item>+			<item>AppletStub</item>+			<item>ApplicationException</item>+			<item>Arc2D</item>+			<item>Arc2D.Double</item>+			<item>Arc2D.Float</item>+			<item>Area</item>+			<item>AreaAveragingScaleFilter</item>+			<item>ArithmeticException</item>+			<item>Array</item>+			<item>Array</item>+			<item>ArrayBlockingQueue</item>+			<item>ArrayIndexOutOfBoundsException</item>+			<item>ArrayList</item>+			<item>ArrayStoreException</item>+			<item>ArrayType</item>+			<item>Arrays</item>+			<item>AssertionError</item>+			<item>AsyncBoxView</item>+			<item>AsynchronousCloseException</item>+			<item>AtomicBoolean</item>+			<item>AtomicInteger</item>+			<item>AtomicIntegerArray</item>+			<item>AtomicIntegerFieldUpdater</item>+			<item>AtomicLong</item>+			<item>AtomicLongArray</item>+			<item>AtomicLongFieldUpdater</item>+			<item>AtomicMarkableReference</item>+			<item>AtomicReference</item>+			<item>AtomicReferenceArray</item>+			<item>AtomicReferenceFieldUpdater</item>+			<item>AtomicStampedReference</item>+			<item>Attr</item>+			<item>Attribute</item>+			<item>Attribute</item>+			<item>Attribute</item>+			<item>AttributeChangeNotification</item>+			<item>AttributeChangeNotificationFilter</item>+			<item>AttributeException</item>+			<item>AttributeInUseException</item>+			<item>AttributeList</item>+			<item>AttributeList</item>+			<item>AttributeList</item>+			<item>AttributeListImpl</item>+			<item>AttributeModificationException</item>+			<item>AttributeNotFoundException</item>+			<item>AttributeSet</item>+			<item>AttributeSet</item>+			<item>AttributeSet.CharacterAttribute</item>+			<item>AttributeSet.ColorAttribute</item>+			<item>AttributeSet.FontAttribute</item>+			<item>AttributeSet.ParagraphAttribute</item>+			<item>AttributeSetUtilities</item>+			<item>AttributeValueExp</item>+			<item>AttributedCharacterIterator</item>+			<item>AttributedCharacterIterator.Attribute</item>+			<item>AttributedString</item>+			<item>Attributes</item>+			<item>Attributes</item>+			<item>Attributes</item>+			<item>Attributes.Name</item>+			<item>Attributes2</item>+			<item>Attributes2Impl</item>+			<item>AttributesImpl</item>+			<item>AudioClip</item>+			<item>AudioFileFormat</item>+			<item>AudioFileFormat.Type</item>+			<item>AudioFileReader</item>+			<item>AudioFileWriter</item>+			<item>AudioFormat</item>+			<item>AudioFormat.Encoding</item>+			<item>AudioInputStream</item>+			<item>AudioPermission</item>+			<item>AudioSystem</item>+			<item>AuthPermission</item>+			<item>AuthProvider</item>+			<item>AuthenticationException</item>+			<item>AuthenticationException</item>+			<item>AuthenticationNotSupportedException</item>+			<item>Authenticator</item>+			<item>Authenticator.RequestorType</item>+			<item>AuthorizeCallback</item>+			<item>Autoscroll</item>+			<item>BAD_CONTEXT</item>+			<item>BAD_INV_ORDER</item>+			<item>BAD_OPERATION</item>+			<item>BAD_PARAM</item>+			<item>BAD_POLICY</item>+			<item>BAD_POLICY_TYPE</item>+			<item>BAD_POLICY_VALUE</item>+			<item>BAD_QOS</item>+			<item>BAD_TYPECODE</item>+			<item>BMPImageWriteParam</item>+			<item>BackingStoreException</item>+			<item>BadAttributeValueExpException</item>+			<item>BadBinaryOpValueExpException</item>+			<item>BadKind</item>+			<item>BadLocationException</item>+			<item>BadPaddingException</item>+			<item>BadStringOperationException</item>+			<item>BandCombineOp</item>+			<item>BandedSampleModel</item>+			<item>BaseRowSet</item>+			<item>BasicArrowButton</item>+			<item>BasicAttribute</item>+			<item>BasicAttributes</item>+			<item>BasicBorders</item>+			<item>BasicBorders.ButtonBorder</item>+			<item>BasicBorders.FieldBorder</item>+			<item>BasicBorders.MarginBorder</item>+			<item>BasicBorders.MenuBarBorder</item>+			<item>BasicBorders.RadioButtonBorder</item>+			<item>BasicBorders.RolloverButtonBorder</item>+			<item>BasicBorders.SplitPaneBorder</item>+			<item>BasicBorders.ToggleButtonBorder</item>+			<item>BasicButtonListener</item>+			<item>BasicButtonUI</item>+			<item>BasicCheckBoxMenuItemUI</item>+			<item>BasicCheckBoxUI</item>+			<item>BasicColorChooserUI</item>+			<item>BasicComboBoxEditor</item>+			<item>BasicComboBoxEditor.UIResource</item>+			<item>BasicComboBoxRenderer</item>+			<item>BasicComboBoxRenderer.UIResource</item>+			<item>BasicComboBoxUI</item>+			<item>BasicComboPopup</item>+			<item>BasicControl</item>+			<item>BasicDesktopIconUI</item>+			<item>BasicDesktopPaneUI</item>+			<item>BasicDirectoryModel</item>+			<item>BasicEditorPaneUI</item>+			<item>BasicFileChooserUI</item>+			<item>BasicFormattedTextFieldUI</item>+			<item>BasicGraphicsUtils</item>+			<item>BasicHTML</item>+			<item>BasicIconFactory</item>+			<item>BasicInternalFrameTitlePane</item>+			<item>BasicInternalFrameUI</item>+			<item>BasicLabelUI</item>+			<item>BasicListUI</item>+			<item>BasicLookAndFeel</item>+			<item>BasicMenuBarUI</item>+			<item>BasicMenuItemUI</item>+			<item>BasicMenuUI</item>+			<item>BasicOptionPaneUI</item>+			<item>BasicOptionPaneUI.ButtonAreaLayout</item>+			<item>BasicPanelUI</item>+			<item>BasicPasswordFieldUI</item>+			<item>BasicPermission</item>+			<item>BasicPopupMenuSeparatorUI</item>+			<item>BasicPopupMenuUI</item>+			<item>BasicProgressBarUI</item>+			<item>BasicRadioButtonMenuItemUI</item>+			<item>BasicRadioButtonUI</item>+			<item>BasicRootPaneUI</item>+			<item>BasicScrollBarUI</item>+			<item>BasicScrollPaneUI</item>+			<item>BasicSeparatorUI</item>+			<item>BasicSliderUI</item>+			<item>BasicSpinnerUI</item>+			<item>BasicSplitPaneDivider</item>+			<item>BasicSplitPaneUI</item>+			<item>BasicStroke</item>+			<item>BasicTabbedPaneUI</item>+			<item>BasicTableHeaderUI</item>+			<item>BasicTableUI</item>+			<item>BasicTextAreaUI</item>+			<item>BasicTextFieldUI</item>+			<item>BasicTextPaneUI</item>+			<item>BasicTextUI</item>+			<item>BasicTextUI.BasicCaret</item>+			<item>BasicTextUI.BasicHighlighter</item>+			<item>BasicToggleButtonUI</item>+			<item>BasicToolBarSeparatorUI</item>+			<item>BasicToolBarUI</item>+			<item>BasicToolTipUI</item>+			<item>BasicTreeUI</item>+			<item>BasicViewportUI</item>+			<item>BatchUpdateException</item>+			<item>BeanContext</item>+			<item>BeanContextChild</item>+			<item>BeanContextChildComponentProxy</item>+			<item>BeanContextChildSupport</item>+			<item>BeanContextContainerProxy</item>+			<item>BeanContextEvent</item>+			<item>BeanContextMembershipEvent</item>+			<item>BeanContextMembershipListener</item>+			<item>BeanContextProxy</item>+			<item>BeanContextServiceAvailableEvent</item>+			<item>BeanContextServiceProvider</item>+			<item>BeanContextServiceProviderBeanInfo</item>+			<item>BeanContextServiceRevokedEvent</item>+			<item>BeanContextServiceRevokedListener</item>+			<item>BeanContextServices</item>+			<item>BeanContextServicesListener</item>+			<item>BeanContextServicesSupport</item>+			<item>BeanContextServicesSupport.BCSSServiceProvider</item>+			<item>BeanContextSupport</item>+			<item>BeanContextSupport.BCSIterator</item>+			<item>BeanDescriptor</item>+			<item>BeanInfo</item>+			<item>Beans</item>+			<item>BevelBorder</item>+			<item>Bidi</item>+			<item>BigDecimal</item>+			<item>BigInteger</item>+			<item>BinaryRefAddr</item>+			<item>BindException</item>+			<item>Binding</item>+			<item>Binding</item>+			<item>BindingHelper</item>+			<item>BindingHolder</item>+			<item>BindingIterator</item>+			<item>BindingIteratorHelper</item>+			<item>BindingIteratorHolder</item>+			<item>BindingIteratorOperations</item>+			<item>BindingIteratorPOA</item>+			<item>BindingListHelper</item>+			<item>BindingListHolder</item>+			<item>BindingType</item>+			<item>BindingTypeHelper</item>+			<item>BindingTypeHolder</item>+			<item>BitSet</item>+			<item>Blob</item>+			<item>BlockView</item>+			<item>BlockingQueue</item>+			<item>Book</item>+			<item>Boolean</item>+			<item>BooleanControl</item>+			<item>BooleanControl.Type</item>+			<item>BooleanHolder</item>+			<item>BooleanSeqHelper</item>+			<item>BooleanSeqHolder</item>+			<item>Border</item>+			<item>BorderFactory</item>+			<item>BorderLayout</item>+			<item>BorderUIResource</item>+			<item>BorderUIResource.BevelBorderUIResource</item>+			<item>BorderUIResource.CompoundBorderUIResource</item>+			<item>BorderUIResource.EmptyBorderUIResource</item>+			<item>BorderUIResource.EtchedBorderUIResource</item>+			<item>BorderUIResource.LineBorderUIResource</item>+			<item>BorderUIResource.MatteBorderUIResource</item>+			<item>BorderUIResource.TitledBorderUIResource</item>+			<item>BoundedRangeModel</item>+			<item>Bounds</item>+			<item>Bounds</item>+			<item>Box</item>+			<item>Box.Filler</item>+			<item>BoxLayout</item>+			<item>BoxView</item>+			<item>BoxedValueHelper</item>+			<item>BreakIterator</item>+			<item>BrokenBarrierException</item>+			<item>Buffer</item>+			<item>BufferCapabilities</item>+			<item>BufferCapabilities.FlipContents</item>+			<item>BufferOverflowException</item>+			<item>BufferStrategy</item>+			<item>BufferUnderflowException</item>+			<item>BufferedImage</item>+			<item>BufferedImageFilter</item>+			<item>BufferedImageOp</item>+			<item>BufferedInputStream</item>+			<item>BufferedOutputStream</item>+			<item>BufferedReader</item>+			<item>BufferedWriter</item>+			<item>Button</item>+			<item>ButtonGroup</item>+			<item>ButtonModel</item>+			<item>ButtonUI</item>+			<item>Byte</item>+			<item>ByteArrayInputStream</item>+			<item>ByteArrayOutputStream</item>+			<item>ByteBuffer</item>+			<item>ByteChannel</item>+			<item>ByteHolder</item>+			<item>ByteLookupTable</item>+			<item>ByteOrder</item>+			<item>CDATASection</item>+			<item>CMMException</item>+			<item>CODESET_INCOMPATIBLE</item>+			<item>COMM_FAILURE</item>+			<item>CRC32</item>+			<item>CRL</item>+			<item>CRLException</item>+			<item>CRLSelector</item>+			<item>CSS</item>+			<item>CSS.Attribute</item>+			<item>CTX_RESTRICT_SCOPE</item>+			<item>CacheRequest</item>+			<item>CacheResponse</item>+			<item>CachedRowSet</item>+			<item>Calendar</item>+			<item>Callable</item>+			<item>CallableStatement</item>+			<item>Callback</item>+			<item>CallbackHandler</item>+			<item>CancelablePrintJob</item>+			<item>CancellationException</item>+			<item>CancelledKeyException</item>+			<item>CannotProceed</item>+			<item>CannotProceedException</item>+			<item>CannotProceedHelper</item>+			<item>CannotProceedHolder</item>+			<item>CannotRedoException</item>+			<item>CannotUndoException</item>+			<item>Canvas</item>+			<item>CardLayout</item>+			<item>Caret</item>+			<item>CaretEvent</item>+			<item>CaretListener</item>+			<item>CellEditor</item>+			<item>CellEditorListener</item>+			<item>CellRendererPane</item>+			<item>CertPath</item>+			<item>CertPath.CertPathRep</item>+			<item>CertPathBuilder</item>+			<item>CertPathBuilderException</item>+			<item>CertPathBuilderResult</item>+			<item>CertPathBuilderSpi</item>+			<item>CertPathParameters</item>+			<item>CertPathTrustManagerParameters</item>+			<item>CertPathValidator</item>+			<item>CertPathValidatorException</item>+			<item>CertPathValidatorResult</item>+			<item>CertPathValidatorSpi</item>+			<item>CertSelector</item>+			<item>CertStore</item>+			<item>CertStoreException</item>+			<item>CertStoreParameters</item>+			<item>CertStoreSpi</item>+			<item>Certificate</item>+			<item>Certificate</item>+			<item>Certificate</item>+			<item>Certificate.CertificateRep</item>+			<item>CertificateEncodingException</item>+			<item>CertificateEncodingException</item>+			<item>CertificateException</item>+			<item>CertificateException</item>+			<item>CertificateExpiredException</item>+			<item>CertificateExpiredException</item>+			<item>CertificateFactory</item>+			<item>CertificateFactorySpi</item>+			<item>CertificateNotYetValidException</item>+			<item>CertificateNotYetValidException</item>+			<item>CertificateParsingException</item>+			<item>CertificateParsingException</item>+			<item>ChangeEvent</item>+			<item>ChangeListener</item>+			<item>ChangedCharSetException</item>+			<item>Channel</item>+			<item>ChannelBinding</item>+			<item>Channels</item>+			<item>CharArrayReader</item>+			<item>CharArrayWriter</item>+			<item>CharBuffer</item>+			<item>CharConversionException</item>+			<item>CharHolder</item>+			<item>CharSeqHelper</item>+			<item>CharSeqHolder</item>+			<item>CharSequence</item>+			<item>Character</item>+			<item>Character.Subset</item>+			<item>Character.UnicodeBlock</item>+			<item>CharacterCodingException</item>+			<item>CharacterData</item>+			<item>CharacterIterator</item>+			<item>Charset</item>+			<item>CharsetDecoder</item>+			<item>CharsetEncoder</item>+			<item>CharsetProvider</item>+			<item>Checkbox</item>+			<item>CheckboxGroup</item>+			<item>CheckboxMenuItem</item>+			<item>CheckedInputStream</item>+			<item>CheckedOutputStream</item>+			<item>Checksum</item>+			<item>Choice</item>+			<item>ChoiceCallback</item>+			<item>ChoiceFormat</item>+			<item>Chromaticity</item>+			<item>Cipher</item>+			<item>CipherInputStream</item>+			<item>CipherOutputStream</item>+			<item>CipherSpi</item>+			<item>Class</item>+			<item>ClassCastException</item>+			<item>ClassCircularityError</item>+			<item>ClassDefinition</item>+			<item>ClassDesc</item>+			<item>ClassFileTransformer</item>+			<item>ClassFormatError</item>+			<item>ClassLoader</item>+			<item>ClassLoaderRepository</item>+			<item>ClassLoadingMXBean</item>+			<item>ClassNotFoundException</item>+			<item>ClientRequestInfo</item>+			<item>ClientRequestInfoOperations</item>+			<item>ClientRequestInterceptor</item>+			<item>ClientRequestInterceptorOperations</item>+			<item>Clip</item>+			<item>Clipboard</item>+			<item>ClipboardOwner</item>+			<item>Clob</item>+			<item>CloneNotSupportedException</item>+			<item>Cloneable</item>+			<item>Closeable</item>+			<item>ClosedByInterruptException</item>+			<item>ClosedChannelException</item>+			<item>ClosedSelectorException</item>+			<item>CodeSets</item>+			<item>CodeSigner</item>+			<item>CodeSource</item>+			<item>Codec</item>+			<item>CodecFactory</item>+			<item>CodecFactoryHelper</item>+			<item>CodecFactoryOperations</item>+			<item>CodecOperations</item>+			<item>CoderMalfunctionError</item>+			<item>CoderResult</item>+			<item>CodingErrorAction</item>+			<item>CollationElementIterator</item>+			<item>CollationKey</item>+			<item>Collator</item>+			<item>Collection</item>+			<item>CollectionCertStoreParameters</item>+			<item>Collections</item>+			<item>Color</item>+			<item>ColorChooserComponentFactory</item>+			<item>ColorChooserUI</item>+			<item>ColorConvertOp</item>+			<item>ColorModel</item>+			<item>ColorSelectionModel</item>+			<item>ColorSpace</item>+			<item>ColorSupported</item>+			<item>ColorType</item>+			<item>ColorUIResource</item>+			<item>ComboBoxEditor</item>+			<item>ComboBoxModel</item>+			<item>ComboBoxUI</item>+			<item>ComboPopup</item>+			<item>Comment</item>+			<item>CommunicationException</item>+			<item>Comparable</item>+			<item>Comparator</item>+			<item>CompilationMXBean</item>+			<item>Compiler</item>+			<item>CompletionService</item>+			<item>CompletionStatus</item>+			<item>CompletionStatusHelper</item>+			<item>Component</item>+			<item>ComponentAdapter</item>+			<item>ComponentColorModel</item>+			<item>ComponentEvent</item>+			<item>ComponentIdHelper</item>+			<item>ComponentInputMap</item>+			<item>ComponentInputMapUIResource</item>+			<item>ComponentListener</item>+			<item>ComponentOrientation</item>+			<item>ComponentSampleModel</item>+			<item>ComponentUI</item>+			<item>ComponentView</item>+			<item>Composite</item>+			<item>CompositeContext</item>+			<item>CompositeData</item>+			<item>CompositeDataSupport</item>+			<item>CompositeName</item>+			<item>CompositeType</item>+			<item>CompositeView</item>+			<item>CompoundBorder</item>+			<item>CompoundControl</item>+			<item>CompoundControl.Type</item>+			<item>CompoundEdit</item>+			<item>CompoundName</item>+			<item>Compression</item>+			<item>ConcurrentHashMap</item>+			<item>ConcurrentLinkedQueue</item>+			<item>ConcurrentMap</item>+			<item>ConcurrentModificationException</item>+			<item>Condition</item>+			<item>Configuration</item>+			<item>ConfigurationException</item>+			<item>ConfirmationCallback</item>+			<item>ConnectException</item>+			<item>ConnectException</item>+			<item>ConnectIOException</item>+			<item>Connection</item>+			<item>ConnectionEvent</item>+			<item>ConnectionEventListener</item>+			<item>ConnectionPendingException</item>+			<item>ConnectionPoolDataSource</item>+			<item>ConsoleHandler</item>+			<item>Constructor</item>+			<item>Container</item>+			<item>ContainerAdapter</item>+			<item>ContainerEvent</item>+			<item>ContainerListener</item>+			<item>ContainerOrderFocusTraversalPolicy</item>+			<item>ContentHandler</item>+			<item>ContentHandler</item>+			<item>ContentHandlerFactory</item>+			<item>ContentModel</item>+			<item>Context</item>+			<item>Context</item>+			<item>ContextList</item>+			<item>ContextNotEmptyException</item>+			<item>ContextualRenderedImageFactory</item>+			<item>Control</item>+			<item>Control</item>+			<item>Control.Type</item>+			<item>ControlFactory</item>+			<item>ControllerEventListener</item>+			<item>ConvolveOp</item>+			<item>CookieHandler</item>+			<item>CookieHolder</item>+			<item>Copies</item>+			<item>CopiesSupported</item>+			<item>CopyOnWriteArrayList</item>+			<item>CopyOnWriteArraySet</item>+			<item>CountDownLatch</item>+			<item>CounterMonitor</item>+			<item>CounterMonitorMBean</item>+			<item>CredentialException</item>+			<item>CredentialExpiredException</item>+			<item>CredentialNotFoundException</item>+			<item>CropImageFilter</item>+			<item>CubicCurve2D</item>+			<item>CubicCurve2D.Double</item>+			<item>CubicCurve2D.Float</item>+			<item>Currency</item>+			<item>Current</item>+			<item>Current</item>+			<item>Current</item>+			<item>CurrentHelper</item>+			<item>CurrentHelper</item>+			<item>CurrentHelper</item>+			<item>CurrentHolder</item>+			<item>CurrentOperations</item>+			<item>CurrentOperations</item>+			<item>CurrentOperations</item>+			<item>Cursor</item>+			<item>CustomMarshal</item>+			<item>CustomValue</item>+			<item>Customizer</item>+			<item>CyclicBarrier</item>+			<item>DATA_CONVERSION</item>+			<item>DESKeySpec</item>+			<item>DESedeKeySpec</item>+			<item>DGC</item>+			<item>DHGenParameterSpec</item>+			<item>DHKey</item>+			<item>DHParameterSpec</item>+			<item>DHPrivateKey</item>+			<item>DHPrivateKeySpec</item>+			<item>DHPublicKey</item>+			<item>DHPublicKeySpec</item>+			<item>DISCARDING</item>+			<item>DOMConfiguration</item>+			<item>DOMError</item>+			<item>DOMErrorHandler</item>+			<item>DOMException</item>+			<item>DOMImplementation</item>+			<item>DOMImplementationLS</item>+			<item>DOMImplementationList</item>+			<item>DOMImplementationRegistry</item>+			<item>DOMImplementationSource</item>+			<item>DOMLocator</item>+			<item>DOMLocator</item>+			<item>DOMResult</item>+			<item>DOMSource</item>+			<item>DOMStringList</item>+			<item>DSAKey</item>+			<item>DSAKeyPairGenerator</item>+			<item>DSAParameterSpec</item>+			<item>DSAParams</item>+			<item>DSAPrivateKey</item>+			<item>DSAPrivateKeySpec</item>+			<item>DSAPublicKey</item>+			<item>DSAPublicKeySpec</item>+			<item>DTD</item>+			<item>DTDConstants</item>+			<item>DTDHandler</item>+			<item>DataBuffer</item>+			<item>DataBufferByte</item>+			<item>DataBufferDouble</item>+			<item>DataBufferFloat</item>+			<item>DataBufferInt</item>+			<item>DataBufferShort</item>+			<item>DataBufferUShort</item>+			<item>DataFlavor</item>+			<item>DataFormatException</item>+			<item>DataInput</item>+			<item>DataInputStream</item>+			<item>DataInputStream</item>+			<item>DataLine</item>+			<item>DataLine.Info</item>+			<item>DataOutput</item>+			<item>DataOutputStream</item>+			<item>DataOutputStream</item>+			<item>DataSource</item>+			<item>DataTruncation</item>+			<item>DatabaseMetaData</item>+			<item>DatagramChannel</item>+			<item>DatagramPacket</item>+			<item>DatagramSocket</item>+			<item>DatagramSocketImpl</item>+			<item>DatagramSocketImplFactory</item>+			<item>DatatypeConfigurationException</item>+			<item>DatatypeConstants</item>+			<item>DatatypeConstants.Field</item>+			<item>DatatypeFactory</item>+			<item>Date</item>+			<item>Date</item>+			<item>DateFormat</item>+			<item>DateFormat.Field</item>+			<item>DateFormatSymbols</item>+			<item>DateFormatter</item>+			<item>DateTimeAtCompleted</item>+			<item>DateTimeAtCreation</item>+			<item>DateTimeAtProcessing</item>+			<item>DateTimeSyntax</item>+			<item>DebugGraphics</item>+			<item>DecimalFormat</item>+			<item>DecimalFormatSymbols</item>+			<item>DeclHandler</item>+			<item>DefaultBoundedRangeModel</item>+			<item>DefaultButtonModel</item>+			<item>DefaultCaret</item>+			<item>DefaultCellEditor</item>+			<item>DefaultColorSelectionModel</item>+			<item>DefaultComboBoxModel</item>+			<item>DefaultDesktopManager</item>+			<item>DefaultEditorKit</item>+			<item>DefaultEditorKit.BeepAction</item>+			<item>DefaultEditorKit.CopyAction</item>+			<item>DefaultEditorKit.CutAction</item>+			<item>DefaultEditorKit.DefaultKeyTypedAction</item>+			<item>DefaultEditorKit.InsertBreakAction</item>+			<item>DefaultEditorKit.InsertContentAction</item>+			<item>DefaultEditorKit.InsertTabAction</item>+			<item>DefaultEditorKit.PasteAction</item>+			<item>DefaultFocusManager</item>+			<item>DefaultFocusTraversalPolicy</item>+			<item>DefaultFormatter</item>+			<item>DefaultFormatterFactory</item>+			<item>DefaultHandler</item>+			<item>DefaultHandler2</item>+			<item>DefaultHighlighter</item>+			<item>DefaultHighlighter.DefaultHighlightPainter</item>+			<item>DefaultKeyboardFocusManager</item>+			<item>DefaultListCellRenderer</item>+			<item>DefaultListCellRenderer.UIResource</item>+			<item>DefaultListModel</item>+			<item>DefaultListSelectionModel</item>+			<item>DefaultLoaderRepository</item>+			<item>DefaultLoaderRepository</item>+			<item>DefaultMenuLayout</item>+			<item>DefaultMetalTheme</item>+			<item>DefaultMutableTreeNode</item>+			<item>DefaultPersistenceDelegate</item>+			<item>DefaultSingleSelectionModel</item>+			<item>DefaultStyledDocument</item>+			<item>DefaultStyledDocument.AttributeUndoableEdit</item>+			<item>DefaultStyledDocument.ElementSpec</item>+			<item>DefaultTableCellRenderer</item>+			<item>DefaultTableCellRenderer.UIResource</item>+			<item>DefaultTableColumnModel</item>+			<item>DefaultTableModel</item>+			<item>DefaultTextUI</item>+			<item>DefaultTreeCellEditor</item>+			<item>DefaultTreeCellRenderer</item>+			<item>DefaultTreeModel</item>+			<item>DefaultTreeSelectionModel</item>+			<item>DefinitionKind</item>+			<item>DefinitionKindHelper</item>+			<item>Deflater</item>+			<item>DeflaterOutputStream</item>+			<item>DelayQueue</item>+			<item>Delayed</item>+			<item>Delegate</item>+			<item>Delegate</item>+			<item>Delegate</item>+			<item>DelegationPermission</item>+			<item>Deprecated</item>+			<item>Descriptor</item>+			<item>DescriptorAccess</item>+			<item>DescriptorSupport</item>+			<item>DesignMode</item>+			<item>DesktopIconUI</item>+			<item>DesktopManager</item>+			<item>DesktopPaneUI</item>+			<item>Destination</item>+			<item>DestroyFailedException</item>+			<item>Destroyable</item>+			<item>Dialog</item>+			<item>Dictionary</item>+			<item>DigestException</item>+			<item>DigestInputStream</item>+			<item>DigestOutputStream</item>+			<item>Dimension</item>+			<item>Dimension2D</item>+			<item>DimensionUIResource</item>+			<item>DirContext</item>+			<item>DirObjectFactory</item>+			<item>DirStateFactory</item>+			<item>DirStateFactory.Result</item>+			<item>DirectColorModel</item>+			<item>DirectoryManager</item>+			<item>DisplayMode</item>+			<item>DnDConstants</item>+			<item>Doc</item>+			<item>DocAttribute</item>+			<item>DocAttributeSet</item>+			<item>DocFlavor</item>+			<item>DocFlavor.BYTE_ARRAY</item>+			<item>DocFlavor.CHAR_ARRAY</item>+			<item>DocFlavor.INPUT_STREAM</item>+			<item>DocFlavor.READER</item>+			<item>DocFlavor.SERVICE_FORMATTED</item>+			<item>DocFlavor.STRING</item>+			<item>DocFlavor.URL</item>+			<item>DocPrintJob</item>+			<item>Document</item>+			<item>Document</item>+			<item>DocumentBuilder</item>+			<item>DocumentBuilderFactory</item>+			<item>DocumentEvent</item>+			<item>DocumentEvent.ElementChange</item>+			<item>DocumentEvent.EventType</item>+			<item>DocumentFilter</item>+			<item>DocumentFilter.FilterBypass</item>+			<item>DocumentFragment</item>+			<item>DocumentHandler</item>+			<item>DocumentListener</item>+			<item>DocumentName</item>+			<item>DocumentParser</item>+			<item>DocumentType</item>+			<item>Documented</item>+			<item>DomainCombiner</item>+			<item>DomainManager</item>+			<item>DomainManagerOperations</item>+			<item>Double</item>+			<item>DoubleBuffer</item>+			<item>DoubleHolder</item>+			<item>DoubleSeqHelper</item>+			<item>DoubleSeqHolder</item>+			<item>DragGestureEvent</item>+			<item>DragGestureListener</item>+			<item>DragGestureRecognizer</item>+			<item>DragSource</item>+			<item>DragSourceAdapter</item>+			<item>DragSourceContext</item>+			<item>DragSourceDragEvent</item>+			<item>DragSourceDropEvent</item>+			<item>DragSourceEvent</item>+			<item>DragSourceListener</item>+			<item>DragSourceMotionListener</item>+			<item>Driver</item>+			<item>DriverManager</item>+			<item>DriverPropertyInfo</item>+			<item>DropTarget</item>+			<item>DropTarget.DropTargetAutoScroller</item>+			<item>DropTargetAdapter</item>+			<item>DropTargetContext</item>+			<item>DropTargetDragEvent</item>+			<item>DropTargetDropEvent</item>+			<item>DropTargetEvent</item>+			<item>DropTargetListener</item>+			<item>DuplicateFormatFlagsException</item>+			<item>DuplicateName</item>+			<item>DuplicateNameHelper</item>+			<item>Duration</item>+			<item>DynAny</item>+			<item>DynAny</item>+			<item>DynAnyFactory</item>+			<item>DynAnyFactoryHelper</item>+			<item>DynAnyFactoryOperations</item>+			<item>DynAnyHelper</item>+			<item>DynAnyOperations</item>+			<item>DynAnySeqHelper</item>+			<item>DynArray</item>+			<item>DynArray</item>+			<item>DynArrayHelper</item>+			<item>DynArrayOperations</item>+			<item>DynEnum</item>+			<item>DynEnum</item>+			<item>DynEnumHelper</item>+			<item>DynEnumOperations</item>+			<item>DynFixed</item>+			<item>DynFixed</item>+			<item>DynFixedHelper</item>+			<item>DynFixedOperations</item>+			<item>DynSequence</item>+			<item>DynSequence</item>+			<item>DynSequenceHelper</item>+			<item>DynSequenceOperations</item>+			<item>DynStruct</item>+			<item>DynStruct</item>+			<item>DynStructHelper</item>+			<item>DynStructOperations</item>+			<item>DynUnion</item>+			<item>DynUnion</item>+			<item>DynUnionHelper</item>+			<item>DynUnionOperations</item>+			<item>DynValue</item>+			<item>DynValue</item>+			<item>DynValueBox</item>+			<item>DynValueBoxOperations</item>+			<item>DynValueCommon</item>+			<item>DynValueCommonOperations</item>+			<item>DynValueHelper</item>+			<item>DynValueOperations</item>+			<item>DynamicImplementation</item>+			<item>DynamicImplementation</item>+			<item>DynamicMBean</item>+			<item>ECField</item>+			<item>ECFieldF2m</item>+			<item>ECFieldFp</item>+			<item>ECGenParameterSpec</item>+			<item>ECKey</item>+			<item>ECParameterSpec</item>+			<item>ECPoint</item>+			<item>ECPrivateKey</item>+			<item>ECPrivateKeySpec</item>+			<item>ECPublicKey</item>+			<item>ECPublicKeySpec</item>+			<item>ENCODING_CDR_ENCAPS</item>+			<item>EOFException</item>+			<item>EditorKit</item>+			<item>Element</item>+			<item>Element</item>+			<item>Element</item>+			<item>ElementIterator</item>+			<item>ElementType</item>+			<item>Ellipse2D</item>+			<item>Ellipse2D.Double</item>+			<item>Ellipse2D.Float</item>+			<item>EllipticCurve</item>+			<item>EmptyBorder</item>+			<item>EmptyStackException</item>+			<item>EncodedKeySpec</item>+			<item>Encoder</item>+			<item>Encoding</item>+			<item>EncryptedPrivateKeyInfo</item>+			<item>Entity</item>+			<item>Entity</item>+			<item>EntityReference</item>+			<item>EntityResolver</item>+			<item>EntityResolver2</item>+			<item>Enum</item>+			<item>EnumConstantNotPresentException</item>+			<item>EnumControl</item>+			<item>EnumControl.Type</item>+			<item>EnumMap</item>+			<item>EnumSet</item>+			<item>EnumSyntax</item>+			<item>Enumeration</item>+			<item>Environment</item>+			<item>Error</item>+			<item>ErrorHandler</item>+			<item>ErrorListener</item>+			<item>ErrorManager</item>+			<item>EtchedBorder</item>+			<item>Event</item>+			<item>EventContext</item>+			<item>EventDirContext</item>+			<item>EventHandler</item>+			<item>EventListener</item>+			<item>EventListenerList</item>+			<item>EventListenerProxy</item>+			<item>EventObject</item>+			<item>EventQueue</item>+			<item>EventSetDescriptor</item>+			<item>Exception</item>+			<item>ExceptionDetailMessage</item>+			<item>ExceptionInInitializerError</item>+			<item>ExceptionList</item>+			<item>ExceptionListener</item>+			<item>Exchanger</item>+			<item>ExecutionException</item>+			<item>Executor</item>+			<item>ExecutorCompletionService</item>+			<item>ExecutorService</item>+			<item>Executors</item>+			<item>ExemptionMechanism</item>+			<item>ExemptionMechanismException</item>+			<item>ExemptionMechanismSpi</item>+			<item>ExpandVetoException</item>+			<item>ExportException</item>+			<item>Expression</item>+			<item>ExtendedRequest</item>+			<item>ExtendedResponse</item>+			<item>Externalizable</item>+			<item>FREE_MEM</item>+			<item>FactoryConfigurationError</item>+			<item>FailedLoginException</item>+			<item>FeatureDescriptor</item>+			<item>Fidelity</item>+			<item>Field</item>+			<item>FieldNameHelper</item>+			<item>FieldNameHelper</item>+			<item>FieldPosition</item>+			<item>FieldView</item>+			<item>File</item>+			<item>FileCacheImageInputStream</item>+			<item>FileCacheImageOutputStream</item>+			<item>FileChannel</item>+			<item>FileChannel.MapMode</item>+			<item>FileChooserUI</item>+			<item>FileDescriptor</item>+			<item>FileDialog</item>+			<item>FileFilter</item>+			<item>FileFilter</item>+			<item>FileHandler</item>+			<item>FileImageInputStream</item>+			<item>FileImageOutputStream</item>+			<item>FileInputStream</item>+			<item>FileLock</item>+			<item>FileLockInterruptionException</item>+			<item>FileNameMap</item>+			<item>FileNotFoundException</item>+			<item>FileOutputStream</item>+			<item>FilePermission</item>+			<item>FileReader</item>+			<item>FileSystemView</item>+			<item>FileView</item>+			<item>FileWriter</item>+			<item>FilenameFilter</item>+			<item>Filter</item>+			<item>FilterInputStream</item>+			<item>FilterOutputStream</item>+			<item>FilterReader</item>+			<item>FilterWriter</item>+			<item>FilteredImageSource</item>+			<item>FilteredRowSet</item>+			<item>Finishings</item>+			<item>FixedHeightLayoutCache</item>+			<item>FixedHolder</item>+			<item>FlatteningPathIterator</item>+			<item>FlavorEvent</item>+			<item>FlavorException</item>+			<item>FlavorListener</item>+			<item>FlavorMap</item>+			<item>FlavorTable</item>+			<item>Float</item>+			<item>FloatBuffer</item>+			<item>FloatControl</item>+			<item>FloatControl.Type</item>+			<item>FloatHolder</item>+			<item>FloatSeqHelper</item>+			<item>FloatSeqHolder</item>+			<item>FlowLayout</item>+			<item>FlowView</item>+			<item>FlowView.FlowStrategy</item>+			<item>Flushable</item>+			<item>FocusAdapter</item>+			<item>FocusEvent</item>+			<item>FocusListener</item>+			<item>FocusManager</item>+			<item>FocusTraversalPolicy</item>+			<item>Font</item>+			<item>FontFormatException</item>+			<item>FontMetrics</item>+			<item>FontRenderContext</item>+			<item>FontUIResource</item>+			<item>FormSubmitEvent</item>+			<item>FormSubmitEvent.MethodType</item>+			<item>FormView</item>+			<item>Format</item>+			<item>Format.Field</item>+			<item>FormatConversionProvider</item>+			<item>FormatFlagsConversionMismatchException</item>+			<item>FormatMismatch</item>+			<item>FormatMismatchHelper</item>+			<item>Formattable</item>+			<item>FormattableFlags</item>+			<item>Formatter</item>+			<item>Formatter</item>+			<item>FormatterClosedException</item>+			<item>ForwardRequest</item>+			<item>ForwardRequest</item>+			<item>ForwardRequestHelper</item>+			<item>ForwardRequestHelper</item>+			<item>Frame</item>+			<item>Future</item>+			<item>FutureTask</item>+			<item>GSSContext</item>+			<item>GSSCredential</item>+			<item>GSSException</item>+			<item>GSSManager</item>+			<item>GSSName</item>+			<item>GZIPInputStream</item>+			<item>GZIPOutputStream</item>+			<item>GapContent</item>+			<item>GarbageCollectorMXBean</item>+			<item>GatheringByteChannel</item>+			<item>GaugeMonitor</item>+			<item>GaugeMonitorMBean</item>+			<item>GeneralPath</item>+			<item>GeneralSecurityException</item>+			<item>GenericArrayType</item>+			<item>GenericDeclaration</item>+			<item>GenericSignatureFormatError</item>+			<item>GlyphJustificationInfo</item>+			<item>GlyphMetrics</item>+			<item>GlyphVector</item>+			<item>GlyphView</item>+			<item>GlyphView.GlyphPainter</item>+			<item>GradientPaint</item>+			<item>GraphicAttribute</item>+			<item>Graphics</item>+			<item>Graphics2D</item>+			<item>GraphicsConfigTemplate</item>+			<item>GraphicsConfiguration</item>+			<item>GraphicsDevice</item>+			<item>GraphicsEnvironment</item>+			<item>GrayFilter</item>+			<item>GregorianCalendar</item>+			<item>GridBagConstraints</item>+			<item>GridBagLayout</item>+			<item>GridLayout</item>+			<item>Group</item>+			<item>Guard</item>+			<item>GuardedObject</item>+			<item>HOLDING</item>+			<item>HTML</item>+			<item>HTML.Attribute</item>+			<item>HTML.Tag</item>+			<item>HTML.UnknownTag</item>+			<item>HTMLDocument</item>+			<item>HTMLDocument.Iterator</item>+			<item>HTMLEditorKit</item>+			<item>HTMLEditorKit.HTMLFactory</item>+			<item>HTMLEditorKit.HTMLTextAction</item>+			<item>HTMLEditorKit.InsertHTMLTextAction</item>+			<item>HTMLEditorKit.LinkController</item>+			<item>HTMLEditorKit.Parser</item>+			<item>HTMLEditorKit.ParserCallback</item>+			<item>HTMLFrameHyperlinkEvent</item>+			<item>HTMLWriter</item>+			<item>Handler</item>+			<item>HandlerBase</item>+			<item>HandshakeCompletedEvent</item>+			<item>HandshakeCompletedListener</item>+			<item>HasControls</item>+			<item>HashAttributeSet</item>+			<item>HashDocAttributeSet</item>+			<item>HashMap</item>+			<item>HashPrintJobAttributeSet</item>+			<item>HashPrintRequestAttributeSet</item>+			<item>HashPrintServiceAttributeSet</item>+			<item>HashSet</item>+			<item>Hashtable</item>+			<item>HeadlessException</item>+			<item>HierarchyBoundsAdapter</item>+			<item>HierarchyBoundsListener</item>+			<item>HierarchyEvent</item>+			<item>HierarchyListener</item>+			<item>Highlighter</item>+			<item>Highlighter.Highlight</item>+			<item>Highlighter.HighlightPainter</item>+			<item>HostnameVerifier</item>+			<item>HttpRetryException</item>+			<item>HttpURLConnection</item>+			<item>HttpsURLConnection</item>+			<item>HyperlinkEvent</item>+			<item>HyperlinkEvent.EventType</item>+			<item>HyperlinkListener</item>+			<item>ICC_ColorSpace</item>+			<item>ICC_Profile</item>+			<item>ICC_ProfileGray</item>+			<item>ICC_ProfileRGB</item>+			<item>IDLEntity</item>+			<item>IDLType</item>+			<item>IDLTypeHelper</item>+			<item>IDLTypeOperations</item>+			<item>ID_ASSIGNMENT_POLICY_ID</item>+			<item>ID_UNIQUENESS_POLICY_ID</item>+			<item>IIOByteBuffer</item>+			<item>IIOException</item>+			<item>IIOImage</item>+			<item>IIOInvalidTreeException</item>+			<item>IIOMetadata</item>+			<item>IIOMetadataController</item>+			<item>IIOMetadataFormat</item>+			<item>IIOMetadataFormatImpl</item>+			<item>IIOMetadataNode</item>+			<item>IIOParam</item>+			<item>IIOParamController</item>+			<item>IIOReadProgressListener</item>+			<item>IIOReadUpdateListener</item>+			<item>IIOReadWarningListener</item>+			<item>IIORegistry</item>+			<item>IIOServiceProvider</item>+			<item>IIOWriteProgressListener</item>+			<item>IIOWriteWarningListener</item>+			<item>IMPLICIT_ACTIVATION_POLICY_ID</item>+			<item>IMP_LIMIT</item>+			<item>INACTIVE</item>+			<item>INITIALIZE</item>+			<item>INTERNAL</item>+			<item>INTF_REPOS</item>+			<item>INVALID_ACTIVITY</item>+			<item>INVALID_TRANSACTION</item>+			<item>INV_FLAG</item>+			<item>INV_IDENT</item>+			<item>INV_OBJREF</item>+			<item>INV_POLICY</item>+			<item>IOException</item>+			<item>IOR</item>+			<item>IORHelper</item>+			<item>IORHolder</item>+			<item>IORInfo</item>+			<item>IORInfoOperations</item>+			<item>IORInterceptor</item>+			<item>IORInterceptorOperations</item>+			<item>IORInterceptor_3_0</item>+			<item>IORInterceptor_3_0Helper</item>+			<item>IORInterceptor_3_0Holder</item>+			<item>IORInterceptor_3_0Operations</item>+			<item>IRObject</item>+			<item>IRObjectOperations</item>+			<item>Icon</item>+			<item>IconUIResource</item>+			<item>IconView</item>+			<item>IdAssignmentPolicy</item>+			<item>IdAssignmentPolicyOperations</item>+			<item>IdAssignmentPolicyValue</item>+			<item>IdUniquenessPolicy</item>+			<item>IdUniquenessPolicyOperations</item>+			<item>IdUniquenessPolicyValue</item>+			<item>IdentifierHelper</item>+			<item>Identity</item>+			<item>IdentityHashMap</item>+			<item>IdentityScope</item>+			<item>IllegalAccessError</item>+			<item>IllegalAccessException</item>+			<item>IllegalArgumentException</item>+			<item>IllegalBlockSizeException</item>+			<item>IllegalBlockingModeException</item>+			<item>IllegalCharsetNameException</item>+			<item>IllegalClassFormatException</item>+			<item>IllegalComponentStateException</item>+			<item>IllegalFormatCodePointException</item>+			<item>IllegalFormatConversionException</item>+			<item>IllegalFormatException</item>+			<item>IllegalFormatFlagsException</item>+			<item>IllegalFormatPrecisionException</item>+			<item>IllegalFormatWidthException</item>+			<item>IllegalMonitorStateException</item>+			<item>IllegalPathStateException</item>+			<item>IllegalSelectorException</item>+			<item>IllegalStateException</item>+			<item>IllegalThreadStateException</item>+			<item>Image</item>+			<item>ImageCapabilities</item>+			<item>ImageConsumer</item>+			<item>ImageFilter</item>+			<item>ImageGraphicAttribute</item>+			<item>ImageIO</item>+			<item>ImageIcon</item>+			<item>ImageInputStream</item>+			<item>ImageInputStreamImpl</item>+			<item>ImageInputStreamSpi</item>+			<item>ImageObserver</item>+			<item>ImageOutputStream</item>+			<item>ImageOutputStreamImpl</item>+			<item>ImageOutputStreamSpi</item>+			<item>ImageProducer</item>+			<item>ImageReadParam</item>+			<item>ImageReader</item>+			<item>ImageReaderSpi</item>+			<item>ImageReaderWriterSpi</item>+			<item>ImageTranscoder</item>+			<item>ImageTranscoderSpi</item>+			<item>ImageTypeSpecifier</item>+			<item>ImageView</item>+			<item>ImageWriteParam</item>+			<item>ImageWriter</item>+			<item>ImageWriterSpi</item>+			<item>ImagingOpException</item>+			<item>ImplicitActivationPolicy</item>+			<item>ImplicitActivationPolicyOperations</item>+			<item>ImplicitActivationPolicyValue</item>+			<item>IncompatibleClassChangeError</item>+			<item>IncompleteAnnotationException</item>+			<item>InconsistentTypeCode</item>+			<item>InconsistentTypeCode</item>+			<item>InconsistentTypeCodeHelper</item>+			<item>IndexColorModel</item>+			<item>IndexOutOfBoundsException</item>+			<item>IndexedPropertyChangeEvent</item>+			<item>IndexedPropertyDescriptor</item>+			<item>IndirectionException</item>+			<item>Inet4Address</item>+			<item>Inet6Address</item>+			<item>InetAddress</item>+			<item>InetSocketAddress</item>+			<item>Inflater</item>+			<item>InflaterInputStream</item>+			<item>InheritableThreadLocal</item>+			<item>Inherited</item>+			<item>InitialContext</item>+			<item>InitialContextFactory</item>+			<item>InitialContextFactoryBuilder</item>+			<item>InitialDirContext</item>+			<item>InitialLdapContext</item>+			<item>InlineView</item>+			<item>InputContext</item>+			<item>InputEvent</item>+			<item>InputMap</item>+			<item>InputMapUIResource</item>+			<item>InputMethod</item>+			<item>InputMethodContext</item>+			<item>InputMethodDescriptor</item>+			<item>InputMethodEvent</item>+			<item>InputMethodHighlight</item>+			<item>InputMethodListener</item>+			<item>InputMethodRequests</item>+			<item>InputMismatchException</item>+			<item>InputSource</item>+			<item>InputStream</item>+			<item>InputStream</item>+			<item>InputStream</item>+			<item>InputStreamReader</item>+			<item>InputSubset</item>+			<item>InputVerifier</item>+			<item>Insets</item>+			<item>InsetsUIResource</item>+			<item>InstanceAlreadyExistsException</item>+			<item>InstanceNotFoundException</item>+			<item>InstantiationError</item>+			<item>InstantiationException</item>+			<item>Instrument</item>+			<item>Instrumentation</item>+			<item>InsufficientResourcesException</item>+			<item>IntBuffer</item>+			<item>IntHolder</item>+			<item>Integer</item>+			<item>IntegerSyntax</item>+			<item>Interceptor</item>+			<item>InterceptorOperations</item>+			<item>InternalError</item>+			<item>InternalFrameAdapter</item>+			<item>InternalFrameEvent</item>+			<item>InternalFrameFocusTraversalPolicy</item>+			<item>InternalFrameListener</item>+			<item>InternalFrameUI</item>+			<item>InternationalFormatter</item>+			<item>InterruptedException</item>+			<item>InterruptedIOException</item>+			<item>InterruptedNamingException</item>+			<item>InterruptibleChannel</item>+			<item>IntrospectionException</item>+			<item>IntrospectionException</item>+			<item>Introspector</item>+			<item>Invalid</item>+			<item>InvalidActivityException</item>+			<item>InvalidAddress</item>+			<item>InvalidAddressHelper</item>+			<item>InvalidAddressHolder</item>+			<item>InvalidAlgorithmParameterException</item>+			<item>InvalidApplicationException</item>+			<item>InvalidAttributeIdentifierException</item>+			<item>InvalidAttributeValueException</item>+			<item>InvalidAttributeValueException</item>+			<item>InvalidAttributesException</item>+			<item>InvalidClassException</item>+			<item>InvalidDnDOperationException</item>+			<item>InvalidKeyException</item>+			<item>InvalidKeyException</item>+			<item>InvalidKeySpecException</item>+			<item>InvalidMarkException</item>+			<item>InvalidMidiDataException</item>+			<item>InvalidName</item>+			<item>InvalidName</item>+			<item>InvalidName</item>+			<item>InvalidNameException</item>+			<item>InvalidNameHelper</item>+			<item>InvalidNameHelper</item>+			<item>InvalidNameHolder</item>+			<item>InvalidObjectException</item>+			<item>InvalidOpenTypeException</item>+			<item>InvalidParameterException</item>+			<item>InvalidParameterSpecException</item>+			<item>InvalidPolicy</item>+			<item>InvalidPolicyHelper</item>+			<item>InvalidPreferencesFormatException</item>+			<item>InvalidPropertiesFormatException</item>+			<item>InvalidRelationIdException</item>+			<item>InvalidRelationServiceException</item>+			<item>InvalidRelationTypeException</item>+			<item>InvalidRoleInfoException</item>+			<item>InvalidRoleValueException</item>+			<item>InvalidSearchControlsException</item>+			<item>InvalidSearchFilterException</item>+			<item>InvalidSeq</item>+			<item>InvalidSlot</item>+			<item>InvalidSlotHelper</item>+			<item>InvalidTargetObjectTypeException</item>+			<item>InvalidTransactionException</item>+			<item>InvalidTypeForEncoding</item>+			<item>InvalidTypeForEncodingHelper</item>+			<item>InvalidValue</item>+			<item>InvalidValue</item>+			<item>InvalidValueHelper</item>+			<item>InvocationEvent</item>+			<item>InvocationHandler</item>+			<item>InvocationTargetException</item>+			<item>InvokeHandler</item>+			<item>IstringHelper</item>+			<item>ItemEvent</item>+			<item>ItemListener</item>+			<item>ItemSelectable</item>+			<item>Iterable</item>+			<item>Iterator</item>+			<item>IvParameterSpec</item>+			<item>JApplet</item>+			<item>JButton</item>+			<item>JCheckBox</item>+			<item>JCheckBoxMenuItem</item>+			<item>JColorChooser</item>+			<item>JComboBox</item>+			<item>JComboBox.KeySelectionManager</item>+			<item>JComponent</item>+			<item>JDesktopPane</item>+			<item>JDialog</item>+			<item>JEditorPane</item>+			<item>JFileChooser</item>+			<item>JFormattedTextField</item>+			<item>JFormattedTextField.AbstractFormatter</item>+			<item>JFormattedTextField.AbstractFormatterFactory</item>+			<item>JFrame</item>+			<item>JInternalFrame</item>+			<item>JInternalFrame.JDesktopIcon</item>+			<item>JLabel</item>+			<item>JLayeredPane</item>+			<item>JList</item>+			<item>JMException</item>+			<item>JMRuntimeException</item>+			<item>JMXAuthenticator</item>+			<item>JMXConnectionNotification</item>+			<item>JMXConnector</item>+			<item>JMXConnectorFactory</item>+			<item>JMXConnectorProvider</item>+			<item>JMXConnectorServer</item>+			<item>JMXConnectorServerFactory</item>+			<item>JMXConnectorServerMBean</item>+			<item>JMXConnectorServerProvider</item>+			<item>JMXPrincipal</item>+			<item>JMXProviderException</item>+			<item>JMXServerErrorException</item>+			<item>JMXServiceURL</item>+			<item>JMenu</item>+			<item>JMenuBar</item>+			<item>JMenuItem</item>+			<item>JOptionPane</item>+			<item>JPEGHuffmanTable</item>+			<item>JPEGImageReadParam</item>+			<item>JPEGImageWriteParam</item>+			<item>JPEGQTable</item>+			<item>JPanel</item>+			<item>JPasswordField</item>+			<item>JPopupMenu</item>+			<item>JPopupMenu.Separator</item>+			<item>JProgressBar</item>+			<item>JRadioButton</item>+			<item>JRadioButtonMenuItem</item>+			<item>JRootPane</item>+			<item>JScrollBar</item>+			<item>JScrollPane</item>+			<item>JSeparator</item>+			<item>JSlider</item>+			<item>JSpinner</item>+			<item>JSpinner.DateEditor</item>+			<item>JSpinner.DefaultEditor</item>+			<item>JSpinner.ListEditor</item>+			<item>JSpinner.NumberEditor</item>+			<item>JSplitPane</item>+			<item>JTabbedPane</item>+			<item>JTable</item>+			<item>JTable.PrintMode</item>+			<item>JTableHeader</item>+			<item>JTextArea</item>+			<item>JTextComponent</item>+			<item>JTextComponent.KeyBinding</item>+			<item>JTextField</item>+			<item>JTextPane</item>+			<item>JToggleButton</item>+			<item>JToggleButton.ToggleButtonModel</item>+			<item>JToolBar</item>+			<item>JToolBar.Separator</item>+			<item>JToolTip</item>+			<item>JTree</item>+			<item>JTree.DynamicUtilTreeNode</item>+			<item>JTree.EmptySelectionModel</item>+			<item>JViewport</item>+			<item>JWindow</item>+			<item>JarEntry</item>+			<item>JarException</item>+			<item>JarFile</item>+			<item>JarInputStream</item>+			<item>JarOutputStream</item>+			<item>JarURLConnection</item>+			<item>JdbcRowSet</item>+			<item>JobAttributes</item>+			<item>JobAttributes.DefaultSelectionType</item>+			<item>JobAttributes.DestinationType</item>+			<item>JobAttributes.DialogType</item>+			<item>JobAttributes.MultipleDocumentHandlingType</item>+			<item>JobAttributes.SidesType</item>+			<item>JobHoldUntil</item>+			<item>JobImpressions</item>+			<item>JobImpressionsCompleted</item>+			<item>JobImpressionsSupported</item>+			<item>JobKOctets</item>+			<item>JobKOctetsProcessed</item>+			<item>JobKOctetsSupported</item>+			<item>JobMediaSheets</item>+			<item>JobMediaSheetsCompleted</item>+			<item>JobMediaSheetsSupported</item>+			<item>JobMessageFromOperator</item>+			<item>JobName</item>+			<item>JobOriginatingUserName</item>+			<item>JobPriority</item>+			<item>JobPrioritySupported</item>+			<item>JobSheets</item>+			<item>JobState</item>+			<item>JobStateReason</item>+			<item>JobStateReasons</item>+			<item>JoinRowSet</item>+			<item>Joinable</item>+			<item>KerberosKey</item>+			<item>KerberosPrincipal</item>+			<item>KerberosTicket</item>+			<item>Kernel</item>+			<item>Key</item>+			<item>KeyAdapter</item>+			<item>KeyAgreement</item>+			<item>KeyAgreementSpi</item>+			<item>KeyAlreadyExistsException</item>+			<item>KeyEvent</item>+			<item>KeyEventDispatcher</item>+			<item>KeyEventPostProcessor</item>+			<item>KeyException</item>+			<item>KeyFactory</item>+			<item>KeyFactorySpi</item>+			<item>KeyGenerator</item>+			<item>KeyGeneratorSpi</item>+			<item>KeyListener</item>+			<item>KeyManagementException</item>+			<item>KeyManager</item>+			<item>KeyManagerFactory</item>+			<item>KeyManagerFactorySpi</item>+			<item>KeyPair</item>+			<item>KeyPairGenerator</item>+			<item>KeyPairGeneratorSpi</item>+			<item>KeyRep</item>+			<item>KeyRep.Type</item>+			<item>KeySpec</item>+			<item>KeyStore</item>+			<item>KeyStore.Builder</item>+			<item>KeyStore.CallbackHandlerProtection</item>+			<item>KeyStore.Entry</item>+			<item>KeyStore.LoadStoreParameter</item>+			<item>KeyStore.PasswordProtection</item>+			<item>KeyStore.PrivateKeyEntry</item>+			<item>KeyStore.ProtectionParameter</item>+			<item>KeyStore.SecretKeyEntry</item>+			<item>KeyStore.TrustedCertificateEntry</item>+			<item>KeyStoreBuilderParameters</item>+			<item>KeyStoreException</item>+			<item>KeyStoreSpi</item>+			<item>KeyStroke</item>+			<item>KeyboardFocusManager</item>+			<item>Keymap</item>+			<item>LDAPCertStoreParameters</item>+			<item>LIFESPAN_POLICY_ID</item>+			<item>LOCATION_FORWARD</item>+			<item>LSException</item>+			<item>LSInput</item>+			<item>LSLoadEvent</item>+			<item>LSOutput</item>+			<item>LSParser</item>+			<item>LSParserFilter</item>+			<item>LSProgressEvent</item>+			<item>LSResourceResolver</item>+			<item>LSSerializer</item>+			<item>LSSerializerFilter</item>+			<item>Label</item>+			<item>LabelUI</item>+			<item>LabelView</item>+			<item>LanguageCallback</item>+			<item>LastOwnerException</item>+			<item>LayeredHighlighter</item>+			<item>LayeredHighlighter.LayerPainter</item>+			<item>LayoutFocusTraversalPolicy</item>+			<item>LayoutManager</item>+			<item>LayoutManager2</item>+			<item>LayoutQueue</item>+			<item>LdapContext</item>+			<item>LdapName</item>+			<item>LdapReferralException</item>+			<item>Lease</item>+			<item>Level</item>+			<item>LexicalHandler</item>+			<item>LifespanPolicy</item>+			<item>LifespanPolicyOperations</item>+			<item>LifespanPolicyValue</item>+			<item>LimitExceededException</item>+			<item>Line</item>+			<item>Line.Info</item>+			<item>Line2D</item>+			<item>Line2D.Double</item>+			<item>Line2D.Float</item>+			<item>LineBorder</item>+			<item>LineBreakMeasurer</item>+			<item>LineEvent</item>+			<item>LineEvent.Type</item>+			<item>LineListener</item>+			<item>LineMetrics</item>+			<item>LineNumberInputStream</item>+			<item>LineNumberReader</item>+			<item>LineUnavailableException</item>+			<item>LinkException</item>+			<item>LinkLoopException</item>+			<item>LinkRef</item>+			<item>LinkageError</item>+			<item>LinkedBlockingQueue</item>+			<item>LinkedHashMap</item>+			<item>LinkedHashSet</item>+			<item>LinkedList</item>+			<item>List</item>+			<item>List</item>+			<item>ListCellRenderer</item>+			<item>ListDataEvent</item>+			<item>ListDataListener</item>+			<item>ListIterator</item>+			<item>ListModel</item>+			<item>ListResourceBundle</item>+			<item>ListSelectionEvent</item>+			<item>ListSelectionListener</item>+			<item>ListSelectionModel</item>+			<item>ListUI</item>+			<item>ListView</item>+			<item>ListenerNotFoundException</item>+			<item>LoaderHandler</item>+			<item>LocalObject</item>+			<item>Locale</item>+			<item>LocateRegistry</item>+			<item>Locator</item>+			<item>Locator2</item>+			<item>Locator2Impl</item>+			<item>LocatorImpl</item>+			<item>Lock</item>+			<item>LockSupport</item>+			<item>LogManager</item>+			<item>LogRecord</item>+			<item>LogStream</item>+			<item>Logger</item>+			<item>LoggingMXBean</item>+			<item>LoggingPermission</item>+			<item>LoginContext</item>+			<item>LoginException</item>+			<item>LoginModule</item>+			<item>Long</item>+			<item>LongBuffer</item>+			<item>LongHolder</item>+			<item>LongLongSeqHelper</item>+			<item>LongLongSeqHolder</item>+			<item>LongSeqHelper</item>+			<item>LongSeqHolder</item>+			<item>LookAndFeel</item>+			<item>LookupOp</item>+			<item>LookupTable</item>+			<item>MARSHAL</item>+			<item>MBeanAttributeInfo</item>+			<item>MBeanConstructorInfo</item>+			<item>MBeanException</item>+			<item>MBeanFeatureInfo</item>+			<item>MBeanInfo</item>+			<item>MBeanNotificationInfo</item>+			<item>MBeanOperationInfo</item>+			<item>MBeanParameterInfo</item>+			<item>MBeanPermission</item>+			<item>MBeanRegistration</item>+			<item>MBeanRegistrationException</item>+			<item>MBeanServer</item>+			<item>MBeanServerBuilder</item>+			<item>MBeanServerConnection</item>+			<item>MBeanServerDelegate</item>+			<item>MBeanServerDelegateMBean</item>+			<item>MBeanServerFactory</item>+			<item>MBeanServerForwarder</item>+			<item>MBeanServerInvocationHandler</item>+			<item>MBeanServerNotification</item>+			<item>MBeanServerNotificationFilter</item>+			<item>MBeanServerPermission</item>+			<item>MBeanTrustPermission</item>+			<item>MGF1ParameterSpec</item>+			<item>MLet</item>+			<item>MLetMBean</item>+			<item>Mac</item>+			<item>MacSpi</item>+			<item>MalformedInputException</item>+			<item>MalformedLinkException</item>+			<item>MalformedObjectNameException</item>+			<item>MalformedParameterizedTypeException</item>+			<item>MalformedURLException</item>+			<item>ManageReferralControl</item>+			<item>ManagementFactory</item>+			<item>ManagementPermission</item>+			<item>ManagerFactoryParameters</item>+			<item>Manifest</item>+			<item>Map</item>+			<item>Map.Entry</item>+			<item>MappedByteBuffer</item>+			<item>MarshalException</item>+			<item>MarshalledObject</item>+			<item>MaskFormatter</item>+			<item>MatchResult</item>+			<item>Matcher</item>+			<item>Math</item>+			<item>MathContext</item>+			<item>MatteBorder</item>+			<item>Media</item>+			<item>MediaName</item>+			<item>MediaPrintableArea</item>+			<item>MediaSize</item>+			<item>MediaSize.Engineering</item>+			<item>MediaSize.ISO</item>+			<item>MediaSize.JIS</item>+			<item>MediaSize.NA</item>+			<item>MediaSize.Other</item>+			<item>MediaSizeName</item>+			<item>MediaTracker</item>+			<item>MediaTray</item>+			<item>Member</item>+			<item>MemoryCacheImageInputStream</item>+			<item>MemoryCacheImageOutputStream</item>+			<item>MemoryHandler</item>+			<item>MemoryImageSource</item>+			<item>MemoryMXBean</item>+			<item>MemoryManagerMXBean</item>+			<item>MemoryNotificationInfo</item>+			<item>MemoryPoolMXBean</item>+			<item>MemoryType</item>+			<item>MemoryUsage</item>+			<item>Menu</item>+			<item>MenuBar</item>+			<item>MenuBarUI</item>+			<item>MenuComponent</item>+			<item>MenuContainer</item>+			<item>MenuDragMouseEvent</item>+			<item>MenuDragMouseListener</item>+			<item>MenuElement</item>+			<item>MenuEvent</item>+			<item>MenuItem</item>+			<item>MenuItemUI</item>+			<item>MenuKeyEvent</item>+			<item>MenuKeyListener</item>+			<item>MenuListener</item>+			<item>MenuSelectionManager</item>+			<item>MenuShortcut</item>+			<item>MessageDigest</item>+			<item>MessageDigestSpi</item>+			<item>MessageFormat</item>+			<item>MessageFormat.Field</item>+			<item>MessageProp</item>+			<item>MetaEventListener</item>+			<item>MetaMessage</item>+			<item>MetalBorders</item>+			<item>MetalBorders.ButtonBorder</item>+			<item>MetalBorders.Flush3DBorder</item>+			<item>MetalBorders.InternalFrameBorder</item>+			<item>MetalBorders.MenuBarBorder</item>+			<item>MetalBorders.MenuItemBorder</item>+			<item>MetalBorders.OptionDialogBorder</item>+			<item>MetalBorders.PaletteBorder</item>+			<item>MetalBorders.PopupMenuBorder</item>+			<item>MetalBorders.RolloverButtonBorder</item>+			<item>MetalBorders.ScrollPaneBorder</item>+			<item>MetalBorders.TableHeaderBorder</item>+			<item>MetalBorders.TextFieldBorder</item>+			<item>MetalBorders.ToggleButtonBorder</item>+			<item>MetalBorders.ToolBarBorder</item>+			<item>MetalButtonUI</item>+			<item>MetalCheckBoxIcon</item>+			<item>MetalCheckBoxUI</item>+			<item>MetalComboBoxButton</item>+			<item>MetalComboBoxEditor</item>+			<item>MetalComboBoxEditor.UIResource</item>+			<item>MetalComboBoxIcon</item>+			<item>MetalComboBoxUI</item>+			<item>MetalDesktopIconUI</item>+			<item>MetalFileChooserUI</item>+			<item>MetalIconFactory</item>+			<item>MetalIconFactory.FileIcon16</item>+			<item>MetalIconFactory.FolderIcon16</item>+			<item>MetalIconFactory.PaletteCloseIcon</item>+			<item>MetalIconFactory.TreeControlIcon</item>+			<item>MetalIconFactory.TreeFolderIcon</item>+			<item>MetalIconFactory.TreeLeafIcon</item>+			<item>MetalInternalFrameTitlePane</item>+			<item>MetalInternalFrameUI</item>+			<item>MetalLabelUI</item>+			<item>MetalLookAndFeel</item>+			<item>MetalMenuBarUI</item>+			<item>MetalPopupMenuSeparatorUI</item>+			<item>MetalProgressBarUI</item>+			<item>MetalRadioButtonUI</item>+			<item>MetalRootPaneUI</item>+			<item>MetalScrollBarUI</item>+			<item>MetalScrollButton</item>+			<item>MetalScrollPaneUI</item>+			<item>MetalSeparatorUI</item>+			<item>MetalSliderUI</item>+			<item>MetalSplitPaneUI</item>+			<item>MetalTabbedPaneUI</item>+			<item>MetalTextFieldUI</item>+			<item>MetalTheme</item>+			<item>MetalToggleButtonUI</item>+			<item>MetalToolBarUI</item>+			<item>MetalToolTipUI</item>+			<item>MetalTreeUI</item>+			<item>Method</item>+			<item>MethodDescriptor</item>+			<item>MidiChannel</item>+			<item>MidiDevice</item>+			<item>MidiDevice.Info</item>+			<item>MidiDeviceProvider</item>+			<item>MidiEvent</item>+			<item>MidiFileFormat</item>+			<item>MidiFileReader</item>+			<item>MidiFileWriter</item>+			<item>MidiMessage</item>+			<item>MidiSystem</item>+			<item>MidiUnavailableException</item>+			<item>MimeTypeParseException</item>+			<item>MinimalHTMLWriter</item>+			<item>MissingFormatArgumentException</item>+			<item>MissingFormatWidthException</item>+			<item>MissingResourceException</item>+			<item>Mixer</item>+			<item>Mixer.Info</item>+			<item>MixerProvider</item>+			<item>ModelMBean</item>+			<item>ModelMBeanAttributeInfo</item>+			<item>ModelMBeanConstructorInfo</item>+			<item>ModelMBeanInfo</item>+			<item>ModelMBeanInfoSupport</item>+			<item>ModelMBeanNotificationBroadcaster</item>+			<item>ModelMBeanNotificationInfo</item>+			<item>ModelMBeanOperationInfo</item>+			<item>ModificationItem</item>+			<item>Modifier</item>+			<item>Monitor</item>+			<item>MonitorMBean</item>+			<item>MonitorNotification</item>+			<item>MonitorSettingException</item>+			<item>MouseAdapter</item>+			<item>MouseDragGestureRecognizer</item>+			<item>MouseEvent</item>+			<item>MouseInfo</item>+			<item>MouseInputAdapter</item>+			<item>MouseInputListener</item>+			<item>MouseListener</item>+			<item>MouseMotionAdapter</item>+			<item>MouseMotionListener</item>+			<item>MouseWheelEvent</item>+			<item>MouseWheelListener</item>+			<item>MultiButtonUI</item>+			<item>MultiColorChooserUI</item>+			<item>MultiComboBoxUI</item>+			<item>MultiDesktopIconUI</item>+			<item>MultiDesktopPaneUI</item>+			<item>MultiDoc</item>+			<item>MultiDocPrintJob</item>+			<item>MultiDocPrintService</item>+			<item>MultiFileChooserUI</item>+			<item>MultiInternalFrameUI</item>+			<item>MultiLabelUI</item>+			<item>MultiListUI</item>+			<item>MultiLookAndFeel</item>+			<item>MultiMenuBarUI</item>+			<item>MultiMenuItemUI</item>+			<item>MultiOptionPaneUI</item>+			<item>MultiPanelUI</item>+			<item>MultiPixelPackedSampleModel</item>+			<item>MultiPopupMenuUI</item>+			<item>MultiProgressBarUI</item>+			<item>MultiRootPaneUI</item>+			<item>MultiScrollBarUI</item>+			<item>MultiScrollPaneUI</item>+			<item>MultiSeparatorUI</item>+			<item>MultiSliderUI</item>+			<item>MultiSpinnerUI</item>+			<item>MultiSplitPaneUI</item>+			<item>MultiTabbedPaneUI</item>+			<item>MultiTableHeaderUI</item>+			<item>MultiTableUI</item>+			<item>MultiTextUI</item>+			<item>MultiToolBarUI</item>+			<item>MultiToolTipUI</item>+			<item>MultiTreeUI</item>+			<item>MultiViewportUI</item>+			<item>MulticastSocket</item>+			<item>MultipleComponentProfileHelper</item>+			<item>MultipleComponentProfileHolder</item>+			<item>MultipleDocumentHandling</item>+			<item>MultipleMaster</item>+			<item>MutableAttributeSet</item>+			<item>MutableComboBoxModel</item>+			<item>MutableTreeNode</item>+			<item>NON_EXISTENT</item>+			<item>NO_IMPLEMENT</item>+			<item>NO_MEMORY</item>+			<item>NO_PERMISSION</item>+			<item>NO_RESOURCES</item>+			<item>NO_RESPONSE</item>+			<item>NVList</item>+			<item>Name</item>+			<item>NameAlreadyBoundException</item>+			<item>NameCallback</item>+			<item>NameClassPair</item>+			<item>NameComponent</item>+			<item>NameComponentHelper</item>+			<item>NameComponentHolder</item>+			<item>NameDynAnyPair</item>+			<item>NameDynAnyPairHelper</item>+			<item>NameDynAnyPairSeqHelper</item>+			<item>NameHelper</item>+			<item>NameHolder</item>+			<item>NameList</item>+			<item>NameNotFoundException</item>+			<item>NameParser</item>+			<item>NameValuePair</item>+			<item>NameValuePair</item>+			<item>NameValuePairHelper</item>+			<item>NameValuePairHelper</item>+			<item>NameValuePairSeqHelper</item>+			<item>NamedNodeMap</item>+			<item>NamedValue</item>+			<item>NamespaceChangeListener</item>+			<item>NamespaceContext</item>+			<item>NamespaceSupport</item>+			<item>Naming</item>+			<item>NamingContext</item>+			<item>NamingContextExt</item>+			<item>NamingContextExtHelper</item>+			<item>NamingContextExtHolder</item>+			<item>NamingContextExtOperations</item>+			<item>NamingContextExtPOA</item>+			<item>NamingContextHelper</item>+			<item>NamingContextHolder</item>+			<item>NamingContextOperations</item>+			<item>NamingContextPOA</item>+			<item>NamingEnumeration</item>+			<item>NamingEvent</item>+			<item>NamingException</item>+			<item>NamingExceptionEvent</item>+			<item>NamingListener</item>+			<item>NamingManager</item>+			<item>NamingSecurityException</item>+			<item>NavigationFilter</item>+			<item>NavigationFilter.FilterBypass</item>+			<item>NegativeArraySizeException</item>+			<item>NetPermission</item>+			<item>NetworkInterface</item>+			<item>NoClassDefFoundError</item>+			<item>NoConnectionPendingException</item>+			<item>NoContext</item>+			<item>NoContextHelper</item>+			<item>NoInitialContextException</item>+			<item>NoPermissionException</item>+			<item>NoRouteToHostException</item>+			<item>NoServant</item>+			<item>NoServantHelper</item>+			<item>NoSuchAlgorithmException</item>+			<item>NoSuchAttributeException</item>+			<item>NoSuchElementException</item>+			<item>NoSuchFieldError</item>+			<item>NoSuchFieldException</item>+			<item>NoSuchMethodError</item>+			<item>NoSuchMethodException</item>+			<item>NoSuchObjectException</item>+			<item>NoSuchPaddingException</item>+			<item>NoSuchProviderException</item>+			<item>Node</item>+			<item>NodeChangeEvent</item>+			<item>NodeChangeListener</item>+			<item>NodeList</item>+			<item>NonReadableChannelException</item>+			<item>NonWritableChannelException</item>+			<item>NoninvertibleTransformException</item>+			<item>NotActiveException</item>+			<item>NotBoundException</item>+			<item>NotCompliantMBeanException</item>+			<item>NotContextException</item>+			<item>NotEmpty</item>+			<item>NotEmptyHelper</item>+			<item>NotEmptyHolder</item>+			<item>NotFound</item>+			<item>NotFoundHelper</item>+			<item>NotFoundHolder</item>+			<item>NotFoundReason</item>+			<item>NotFoundReasonHelper</item>+			<item>NotFoundReasonHolder</item>+			<item>NotOwnerException</item>+			<item>NotSerializableException</item>+			<item>NotYetBoundException</item>+			<item>NotYetConnectedException</item>+			<item>Notation</item>+			<item>Notification</item>+			<item>NotificationBroadcaster</item>+			<item>NotificationBroadcasterSupport</item>+			<item>NotificationEmitter</item>+			<item>NotificationFilter</item>+			<item>NotificationFilterSupport</item>+			<item>NotificationListener</item>+			<item>NotificationResult</item>+			<item>NullCipher</item>+			<item>NullPointerException</item>+			<item>Number</item>+			<item>NumberFormat</item>+			<item>NumberFormat.Field</item>+			<item>NumberFormatException</item>+			<item>NumberFormatter</item>+			<item>NumberOfDocuments</item>+			<item>NumberOfInterveningJobs</item>+			<item>NumberUp</item>+			<item>NumberUpSupported</item>+			<item>NumericShaper</item>+			<item>OAEPParameterSpec</item>+			<item>OBJECT_NOT_EXIST</item>+			<item>OBJ_ADAPTER</item>+			<item>OMGVMCID</item>+			<item>ORB</item>+			<item>ORB</item>+			<item>ORBIdHelper</item>+			<item>ORBInitInfo</item>+			<item>ORBInitInfoOperations</item>+			<item>ORBInitializer</item>+			<item>ORBInitializerOperations</item>+			<item>ObjID</item>+			<item>Object</item>+			<item>Object</item>+			<item>ObjectAlreadyActive</item>+			<item>ObjectAlreadyActiveHelper</item>+			<item>ObjectChangeListener</item>+			<item>ObjectFactory</item>+			<item>ObjectFactoryBuilder</item>+			<item>ObjectHelper</item>+			<item>ObjectHolder</item>+			<item>ObjectIdHelper</item>+			<item>ObjectIdHelper</item>+			<item>ObjectImpl</item>+			<item>ObjectImpl</item>+			<item>ObjectInput</item>+			<item>ObjectInputStream</item>+			<item>ObjectInputStream.GetField</item>+			<item>ObjectInputValidation</item>+			<item>ObjectInstance</item>+			<item>ObjectName</item>+			<item>ObjectNotActive</item>+			<item>ObjectNotActiveHelper</item>+			<item>ObjectOutput</item>+			<item>ObjectOutputStream</item>+			<item>ObjectOutputStream.PutField</item>+			<item>ObjectReferenceFactory</item>+			<item>ObjectReferenceFactoryHelper</item>+			<item>ObjectReferenceFactoryHolder</item>+			<item>ObjectReferenceTemplate</item>+			<item>ObjectReferenceTemplateHelper</item>+			<item>ObjectReferenceTemplateHolder</item>+			<item>ObjectReferenceTemplateSeqHelper</item>+			<item>ObjectReferenceTemplateSeqHolder</item>+			<item>ObjectStreamClass</item>+			<item>ObjectStreamConstants</item>+			<item>ObjectStreamException</item>+			<item>ObjectStreamField</item>+			<item>ObjectView</item>+			<item>Observable</item>+			<item>Observer</item>+			<item>OceanTheme</item>+			<item>OctetSeqHelper</item>+			<item>OctetSeqHolder</item>+			<item>Oid</item>+			<item>OpenDataException</item>+			<item>OpenMBeanAttributeInfo</item>+			<item>OpenMBeanAttributeInfoSupport</item>+			<item>OpenMBeanConstructorInfo</item>+			<item>OpenMBeanConstructorInfoSupport</item>+			<item>OpenMBeanInfo</item>+			<item>OpenMBeanInfoSupport</item>+			<item>OpenMBeanOperationInfo</item>+			<item>OpenMBeanOperationInfoSupport</item>+			<item>OpenMBeanParameterInfo</item>+			<item>OpenMBeanParameterInfoSupport</item>+			<item>OpenType</item>+			<item>OpenType</item>+			<item>OperatingSystemMXBean</item>+			<item>Operation</item>+			<item>OperationNotSupportedException</item>+			<item>OperationsException</item>+			<item>Option</item>+			<item>OptionPaneUI</item>+			<item>OptionalDataException</item>+			<item>OrientationRequested</item>+			<item>OutOfMemoryError</item>+			<item>OutputDeviceAssigned</item>+			<item>OutputKeys</item>+			<item>OutputStream</item>+			<item>OutputStream</item>+			<item>OutputStream</item>+			<item>OutputStreamWriter</item>+			<item>OverlappingFileLockException</item>+			<item>OverlayLayout</item>+			<item>Override</item>+			<item>Owner</item>+			<item>PBEKey</item>+			<item>PBEKeySpec</item>+			<item>PBEParameterSpec</item>+			<item>PDLOverrideSupported</item>+			<item>PERSIST_STORE</item>+			<item>PKCS8EncodedKeySpec</item>+			<item>PKIXBuilderParameters</item>+			<item>PKIXCertPathBuilderResult</item>+			<item>PKIXCertPathChecker</item>+			<item>PKIXCertPathValidatorResult</item>+			<item>PKIXParameters</item>+			<item>POA</item>+			<item>POAHelper</item>+			<item>POAManager</item>+			<item>POAManagerOperations</item>+			<item>POAOperations</item>+			<item>PRIVATE_MEMBER</item>+			<item>PSSParameterSpec</item>+			<item>PSource</item>+			<item>PSource.PSpecified</item>+			<item>PUBLIC_MEMBER</item>+			<item>Pack200</item>+			<item>Pack200.Packer</item>+			<item>Pack200.Unpacker</item>+			<item>Package</item>+			<item>PackedColorModel</item>+			<item>PageAttributes</item>+			<item>PageAttributes.ColorType</item>+			<item>PageAttributes.MediaType</item>+			<item>PageAttributes.OrientationRequestedType</item>+			<item>PageAttributes.OriginType</item>+			<item>PageAttributes.PrintQualityType</item>+			<item>PageFormat</item>+			<item>PageRanges</item>+			<item>Pageable</item>+			<item>PagedResultsControl</item>+			<item>PagedResultsResponseControl</item>+			<item>PagesPerMinute</item>+			<item>PagesPerMinuteColor</item>+			<item>Paint</item>+			<item>PaintContext</item>+			<item>PaintEvent</item>+			<item>Panel</item>+			<item>PanelUI</item>+			<item>Paper</item>+			<item>ParagraphView</item>+			<item>ParagraphView</item>+			<item>Parameter</item>+			<item>ParameterBlock</item>+			<item>ParameterDescriptor</item>+			<item>ParameterMetaData</item>+			<item>ParameterMode</item>+			<item>ParameterModeHelper</item>+			<item>ParameterModeHolder</item>+			<item>ParameterizedType</item>+			<item>ParseException</item>+			<item>ParsePosition</item>+			<item>Parser</item>+			<item>Parser</item>+			<item>ParserAdapter</item>+			<item>ParserConfigurationException</item>+			<item>ParserDelegator</item>+			<item>ParserFactory</item>+			<item>PartialResultException</item>+			<item>PasswordAuthentication</item>+			<item>PasswordCallback</item>+			<item>PasswordView</item>+			<item>Patch</item>+			<item>PathIterator</item>+			<item>Pattern</item>+			<item>PatternSyntaxException</item>+			<item>Permission</item>+			<item>Permission</item>+			<item>PermissionCollection</item>+			<item>Permissions</item>+			<item>PersistenceDelegate</item>+			<item>PersistentMBean</item>+			<item>PhantomReference</item>+			<item>Pipe</item>+			<item>Pipe.SinkChannel</item>+			<item>Pipe.SourceChannel</item>+			<item>PipedInputStream</item>+			<item>PipedOutputStream</item>+			<item>PipedReader</item>+			<item>PipedWriter</item>+			<item>PixelGrabber</item>+			<item>PixelInterleavedSampleModel</item>+			<item>PlainDocument</item>+			<item>PlainView</item>+			<item>Point</item>+			<item>Point2D</item>+			<item>Point2D.Double</item>+			<item>Point2D.Float</item>+			<item>PointerInfo</item>+			<item>Policy</item>+			<item>Policy</item>+			<item>Policy</item>+			<item>PolicyError</item>+			<item>PolicyErrorCodeHelper</item>+			<item>PolicyErrorHelper</item>+			<item>PolicyErrorHolder</item>+			<item>PolicyFactory</item>+			<item>PolicyFactoryOperations</item>+			<item>PolicyHelper</item>+			<item>PolicyHolder</item>+			<item>PolicyListHelper</item>+			<item>PolicyListHolder</item>+			<item>PolicyNode</item>+			<item>PolicyOperations</item>+			<item>PolicyQualifierInfo</item>+			<item>PolicyTypeHelper</item>+			<item>Polygon</item>+			<item>PooledConnection</item>+			<item>Popup</item>+			<item>PopupFactory</item>+			<item>PopupMenu</item>+			<item>PopupMenuEvent</item>+			<item>PopupMenuListener</item>+			<item>PopupMenuUI</item>+			<item>Port</item>+			<item>Port.Info</item>+			<item>PortUnreachableException</item>+			<item>PortableRemoteObject</item>+			<item>PortableRemoteObjectDelegate</item>+			<item>Position</item>+			<item>Position.Bias</item>+			<item>Predicate</item>+			<item>PreferenceChangeEvent</item>+			<item>PreferenceChangeListener</item>+			<item>Preferences</item>+			<item>PreferencesFactory</item>+			<item>PreparedStatement</item>+			<item>PresentationDirection</item>+			<item>Principal</item>+			<item>Principal</item>+			<item>PrincipalHolder</item>+			<item>PrintEvent</item>+			<item>PrintException</item>+			<item>PrintGraphics</item>+			<item>PrintJob</item>+			<item>PrintJobAdapter</item>+			<item>PrintJobAttribute</item>+			<item>PrintJobAttributeEvent</item>+			<item>PrintJobAttributeListener</item>+			<item>PrintJobAttributeSet</item>+			<item>PrintJobEvent</item>+			<item>PrintJobListener</item>+			<item>PrintQuality</item>+			<item>PrintRequestAttribute</item>+			<item>PrintRequestAttributeSet</item>+			<item>PrintService</item>+			<item>PrintServiceAttribute</item>+			<item>PrintServiceAttributeEvent</item>+			<item>PrintServiceAttributeListener</item>+			<item>PrintServiceAttributeSet</item>+			<item>PrintServiceLookup</item>+			<item>PrintStream</item>+			<item>PrintWriter</item>+			<item>Printable</item>+			<item>PrinterAbortException</item>+			<item>PrinterException</item>+			<item>PrinterGraphics</item>+			<item>PrinterIOException</item>+			<item>PrinterInfo</item>+			<item>PrinterIsAcceptingJobs</item>+			<item>PrinterJob</item>+			<item>PrinterLocation</item>+			<item>PrinterMakeAndModel</item>+			<item>PrinterMessageFromOperator</item>+			<item>PrinterMoreInfo</item>+			<item>PrinterMoreInfoManufacturer</item>+			<item>PrinterName</item>+			<item>PrinterResolution</item>+			<item>PrinterState</item>+			<item>PrinterStateReason</item>+			<item>PrinterStateReasons</item>+			<item>PrinterURI</item>+			<item>PriorityBlockingQueue</item>+			<item>PriorityQueue</item>+			<item>PrivateClassLoader</item>+			<item>PrivateCredentialPermission</item>+			<item>PrivateKey</item>+			<item>PrivateMLet</item>+			<item>PrivilegedAction</item>+			<item>PrivilegedActionException</item>+			<item>PrivilegedExceptionAction</item>+			<item>Process</item>+			<item>ProcessBuilder</item>+			<item>ProcessingInstruction</item>+			<item>ProfileDataException</item>+			<item>ProfileIdHelper</item>+			<item>ProgressBarUI</item>+			<item>ProgressMonitor</item>+			<item>ProgressMonitorInputStream</item>+			<item>Properties</item>+			<item>PropertyChangeEvent</item>+			<item>PropertyChangeListener</item>+			<item>PropertyChangeListenerProxy</item>+			<item>PropertyChangeSupport</item>+			<item>PropertyDescriptor</item>+			<item>PropertyEditor</item>+			<item>PropertyEditorManager</item>+			<item>PropertyEditorSupport</item>+			<item>PropertyPermission</item>+			<item>PropertyResourceBundle</item>+			<item>PropertyVetoException</item>+			<item>ProtectionDomain</item>+			<item>ProtocolException</item>+			<item>Provider</item>+			<item>Provider.Service</item>+			<item>ProviderException</item>+			<item>Proxy</item>+			<item>Proxy</item>+			<item>Proxy.Type</item>+			<item>ProxySelector</item>+			<item>PublicKey</item>+			<item>PushbackInputStream</item>+			<item>PushbackReader</item>+			<item>QName</item>+			<item>QuadCurve2D</item>+			<item>QuadCurve2D.Double</item>+			<item>QuadCurve2D.Float</item>+			<item>Query</item>+			<item>QueryEval</item>+			<item>QueryExp</item>+			<item>Queue</item>+			<item>QueuedJobCount</item>+			<item>RC2ParameterSpec</item>+			<item>RC5ParameterSpec</item>+			<item>REBIND</item>+			<item>REQUEST_PROCESSING_POLICY_ID</item>+			<item>RGBImageFilter</item>+			<item>RMIClassLoader</item>+			<item>RMIClassLoaderSpi</item>+			<item>RMIClientSocketFactory</item>+			<item>RMIConnection</item>+			<item>RMIConnectionImpl</item>+			<item>RMIConnectionImpl_Stub</item>+			<item>RMIConnector</item>+			<item>RMIConnectorServer</item>+			<item>RMICustomMaxStreamFormat</item>+			<item>RMIFailureHandler</item>+			<item>RMIIIOPServerImpl</item>+			<item>RMIJRMPServerImpl</item>+			<item>RMISecurityException</item>+			<item>RMISecurityManager</item>+			<item>RMIServer</item>+			<item>RMIServerImpl</item>+			<item>RMIServerImpl_Stub</item>+			<item>RMIServerSocketFactory</item>+			<item>RMISocketFactory</item>+			<item>RSAKey</item>+			<item>RSAKeyGenParameterSpec</item>+			<item>RSAMultiPrimePrivateCrtKey</item>+			<item>RSAMultiPrimePrivateCrtKeySpec</item>+			<item>RSAOtherPrimeInfo</item>+			<item>RSAPrivateCrtKey</item>+			<item>RSAPrivateCrtKeySpec</item>+			<item>RSAPrivateKey</item>+			<item>RSAPrivateKeySpec</item>+			<item>RSAPublicKey</item>+			<item>RSAPublicKeySpec</item>+			<item>RTFEditorKit</item>+			<item>Random</item>+			<item>RandomAccess</item>+			<item>RandomAccessFile</item>+			<item>Raster</item>+			<item>RasterFormatException</item>+			<item>RasterOp</item>+			<item>Rdn</item>+			<item>ReadOnlyBufferException</item>+			<item>ReadWriteLock</item>+			<item>Readable</item>+			<item>ReadableByteChannel</item>+			<item>Reader</item>+			<item>RealmCallback</item>+			<item>RealmChoiceCallback</item>+			<item>Receiver</item>+			<item>Rectangle</item>+			<item>Rectangle2D</item>+			<item>Rectangle2D.Double</item>+			<item>Rectangle2D.Float</item>+			<item>RectangularShape</item>+			<item>ReentrantLock</item>+			<item>ReentrantReadWriteLock</item>+			<item>ReentrantReadWriteLock.ReadLock</item>+			<item>ReentrantReadWriteLock.WriteLock</item>+			<item>Ref</item>+			<item>RefAddr</item>+			<item>Reference</item>+			<item>Reference</item>+			<item>ReferenceQueue</item>+			<item>ReferenceUriSchemesSupported</item>+			<item>Referenceable</item>+			<item>ReferralException</item>+			<item>ReflectPermission</item>+			<item>ReflectionException</item>+			<item>RefreshFailedException</item>+			<item>Refreshable</item>+			<item>Region</item>+			<item>RegisterableService</item>+			<item>Registry</item>+			<item>RegistryHandler</item>+			<item>RejectedExecutionException</item>+			<item>RejectedExecutionHandler</item>+			<item>Relation</item>+			<item>RelationException</item>+			<item>RelationNotFoundException</item>+			<item>RelationNotification</item>+			<item>RelationService</item>+			<item>RelationServiceMBean</item>+			<item>RelationServiceNotRegisteredException</item>+			<item>RelationSupport</item>+			<item>RelationSupportMBean</item>+			<item>RelationType</item>+			<item>RelationTypeNotFoundException</item>+			<item>RelationTypeSupport</item>+			<item>RemarshalException</item>+			<item>Remote</item>+			<item>RemoteCall</item>+			<item>RemoteException</item>+			<item>RemoteObject</item>+			<item>RemoteObjectInvocationHandler</item>+			<item>RemoteRef</item>+			<item>RemoteServer</item>+			<item>RemoteStub</item>+			<item>RenderContext</item>+			<item>RenderableImage</item>+			<item>RenderableImageOp</item>+			<item>RenderableImageProducer</item>+			<item>RenderedImage</item>+			<item>RenderedImageFactory</item>+			<item>Renderer</item>+			<item>RenderingHints</item>+			<item>RenderingHints.Key</item>+			<item>RepaintManager</item>+			<item>ReplicateScaleFilter</item>+			<item>RepositoryIdHelper</item>+			<item>Request</item>+			<item>RequestInfo</item>+			<item>RequestInfoOperations</item>+			<item>RequestProcessingPolicy</item>+			<item>RequestProcessingPolicyOperations</item>+			<item>RequestProcessingPolicyValue</item>+			<item>RequestingUserName</item>+			<item>RequiredModelMBean</item>+			<item>RescaleOp</item>+			<item>ResolutionSyntax</item>+			<item>ResolveResult</item>+			<item>Resolver</item>+			<item>ResourceBundle</item>+			<item>ResponseCache</item>+			<item>ResponseHandler</item>+			<item>Result</item>+			<item>ResultSet</item>+			<item>ResultSetMetaData</item>+			<item>Retention</item>+			<item>RetentionPolicy</item>+			<item>ReverbType</item>+			<item>Robot</item>+			<item>Role</item>+			<item>RoleInfo</item>+			<item>RoleInfoNotFoundException</item>+			<item>RoleList</item>+			<item>RoleNotFoundException</item>+			<item>RoleResult</item>+			<item>RoleStatus</item>+			<item>RoleUnresolved</item>+			<item>RoleUnresolvedList</item>+			<item>RootPaneContainer</item>+			<item>RootPaneUI</item>+			<item>RoundRectangle2D</item>+			<item>RoundRectangle2D.Double</item>+			<item>RoundRectangle2D.Float</item>+			<item>RoundingMode</item>+			<item>RowMapper</item>+			<item>RowSet</item>+			<item>RowSetEvent</item>+			<item>RowSetInternal</item>+			<item>RowSetListener</item>+			<item>RowSetMetaData</item>+			<item>RowSetMetaDataImpl</item>+			<item>RowSetReader</item>+			<item>RowSetWarning</item>+			<item>RowSetWriter</item>+			<item>RuleBasedCollator</item>+			<item>RunTime</item>+			<item>RunTimeOperations</item>+			<item>Runnable</item>+			<item>Runtime</item>+			<item>RuntimeErrorException</item>+			<item>RuntimeException</item>+			<item>RuntimeMBeanException</item>+			<item>RuntimeMXBean</item>+			<item>RuntimeOperationsException</item>+			<item>RuntimePermission</item>+			<item>SAXException</item>+			<item>SAXNotRecognizedException</item>+			<item>SAXNotSupportedException</item>+			<item>SAXParseException</item>+			<item>SAXParser</item>+			<item>SAXParserFactory</item>+			<item>SAXResult</item>+			<item>SAXSource</item>+			<item>SAXTransformerFactory</item>+			<item>SERVANT_RETENTION_POLICY_ID</item>+			<item>SQLData</item>+			<item>SQLException</item>+			<item>SQLInput</item>+			<item>SQLInputImpl</item>+			<item>SQLOutput</item>+			<item>SQLOutputImpl</item>+			<item>SQLPermission</item>+			<item>SQLWarning</item>+			<item>SSLContext</item>+			<item>SSLContextSpi</item>+			<item>SSLEngine</item>+			<item>SSLEngineResult</item>+			<item>SSLEngineResult.HandshakeStatus</item>+			<item>SSLEngineResult.Status</item>+			<item>SSLException</item>+			<item>SSLHandshakeException</item>+			<item>SSLKeyException</item>+			<item>SSLPeerUnverifiedException</item>+			<item>SSLPermission</item>+			<item>SSLProtocolException</item>+			<item>SSLServerSocket</item>+			<item>SSLServerSocketFactory</item>+			<item>SSLSession</item>+			<item>SSLSessionBindingEvent</item>+			<item>SSLSessionBindingListener</item>+			<item>SSLSessionContext</item>+			<item>SSLSocket</item>+			<item>SSLSocketFactory</item>+			<item>SUCCESSFUL</item>+			<item>SYNC_WITH_TRANSPORT</item>+			<item>SYSTEM_EXCEPTION</item>+			<item>SampleModel</item>+			<item>Sasl</item>+			<item>SaslClient</item>+			<item>SaslClientFactory</item>+			<item>SaslException</item>+			<item>SaslServer</item>+			<item>SaslServerFactory</item>+			<item>Savepoint</item>+			<item>Scanner</item>+			<item>ScatteringByteChannel</item>+			<item>ScheduledExecutorService</item>+			<item>ScheduledFuture</item>+			<item>ScheduledThreadPoolExecutor</item>+			<item>Schema</item>+			<item>SchemaFactory</item>+			<item>SchemaFactoryLoader</item>+			<item>SchemaViolationException</item>+			<item>ScrollBarUI</item>+			<item>ScrollPane</item>+			<item>ScrollPaneAdjustable</item>+			<item>ScrollPaneConstants</item>+			<item>ScrollPaneLayout</item>+			<item>ScrollPaneLayout.UIResource</item>+			<item>ScrollPaneUI</item>+			<item>Scrollable</item>+			<item>Scrollbar</item>+			<item>SealedObject</item>+			<item>SearchControls</item>+			<item>SearchResult</item>+			<item>SecretKey</item>+			<item>SecretKeyFactory</item>+			<item>SecretKeyFactorySpi</item>+			<item>SecretKeySpec</item>+			<item>SecureCacheResponse</item>+			<item>SecureClassLoader</item>+			<item>SecureRandom</item>+			<item>SecureRandomSpi</item>+			<item>Security</item>+			<item>SecurityException</item>+			<item>SecurityManager</item>+			<item>SecurityPermission</item>+			<item>Segment</item>+			<item>SelectableChannel</item>+			<item>SelectionKey</item>+			<item>Selector</item>+			<item>SelectorProvider</item>+			<item>Semaphore</item>+			<item>SeparatorUI</item>+			<item>Sequence</item>+			<item>SequenceInputStream</item>+			<item>Sequencer</item>+			<item>Sequencer.SyncMode</item>+			<item>SerialArray</item>+			<item>SerialBlob</item>+			<item>SerialClob</item>+			<item>SerialDatalink</item>+			<item>SerialException</item>+			<item>SerialJavaObject</item>+			<item>SerialRef</item>+			<item>SerialStruct</item>+			<item>Serializable</item>+			<item>SerializablePermission</item>+			<item>Servant</item>+			<item>ServantActivator</item>+			<item>ServantActivatorHelper</item>+			<item>ServantActivatorOperations</item>+			<item>ServantActivatorPOA</item>+			<item>ServantAlreadyActive</item>+			<item>ServantAlreadyActiveHelper</item>+			<item>ServantLocator</item>+			<item>ServantLocatorHelper</item>+			<item>ServantLocatorOperations</item>+			<item>ServantLocatorPOA</item>+			<item>ServantManager</item>+			<item>ServantManagerOperations</item>+			<item>ServantNotActive</item>+			<item>ServantNotActiveHelper</item>+			<item>ServantObject</item>+			<item>ServantRetentionPolicy</item>+			<item>ServantRetentionPolicyOperations</item>+			<item>ServantRetentionPolicyValue</item>+			<item>ServerCloneException</item>+			<item>ServerError</item>+			<item>ServerException</item>+			<item>ServerIdHelper</item>+			<item>ServerNotActiveException</item>+			<item>ServerRef</item>+			<item>ServerRequest</item>+			<item>ServerRequestInfo</item>+			<item>ServerRequestInfoOperations</item>+			<item>ServerRequestInterceptor</item>+			<item>ServerRequestInterceptorOperations</item>+			<item>ServerRuntimeException</item>+			<item>ServerSocket</item>+			<item>ServerSocketChannel</item>+			<item>ServerSocketFactory</item>+			<item>ServiceContext</item>+			<item>ServiceContextHelper</item>+			<item>ServiceContextHolder</item>+			<item>ServiceContextListHelper</item>+			<item>ServiceContextListHolder</item>+			<item>ServiceDetail</item>+			<item>ServiceDetailHelper</item>+			<item>ServiceIdHelper</item>+			<item>ServiceInformation</item>+			<item>ServiceInformationHelper</item>+			<item>ServiceInformationHolder</item>+			<item>ServiceNotFoundException</item>+			<item>ServicePermission</item>+			<item>ServiceRegistry</item>+			<item>ServiceRegistry.Filter</item>+			<item>ServiceUI</item>+			<item>ServiceUIFactory</item>+			<item>ServiceUnavailableException</item>+			<item>Set</item>+			<item>SetOfIntegerSyntax</item>+			<item>SetOverrideType</item>+			<item>SetOverrideTypeHelper</item>+			<item>Severity</item>+			<item>Shape</item>+			<item>ShapeGraphicAttribute</item>+			<item>SheetCollate</item>+			<item>Short</item>+			<item>ShortBuffer</item>+			<item>ShortBufferException</item>+			<item>ShortHolder</item>+			<item>ShortLookupTable</item>+			<item>ShortMessage</item>+			<item>ShortSeqHelper</item>+			<item>ShortSeqHolder</item>+			<item>Sides</item>+			<item>Signature</item>+			<item>SignatureException</item>+			<item>SignatureSpi</item>+			<item>SignedObject</item>+			<item>Signer</item>+			<item>SimpleAttributeSet</item>+			<item>SimpleBeanInfo</item>+			<item>SimpleDateFormat</item>+			<item>SimpleDoc</item>+			<item>SimpleFormatter</item>+			<item>SimpleTimeZone</item>+			<item>SimpleType</item>+			<item>SinglePixelPackedSampleModel</item>+			<item>SingleSelectionModel</item>+			<item>Size2DSyntax</item>+			<item>SizeLimitExceededException</item>+			<item>SizeRequirements</item>+			<item>SizeSequence</item>+			<item>Skeleton</item>+			<item>SkeletonMismatchException</item>+			<item>SkeletonNotFoundException</item>+			<item>SliderUI</item>+			<item>Socket</item>+			<item>SocketAddress</item>+			<item>SocketChannel</item>+			<item>SocketException</item>+			<item>SocketFactory</item>+			<item>SocketHandler</item>+			<item>SocketImpl</item>+			<item>SocketImplFactory</item>+			<item>SocketOptions</item>+			<item>SocketPermission</item>+			<item>SocketSecurityException</item>+			<item>SocketTimeoutException</item>+			<item>SoftBevelBorder</item>+			<item>SoftReference</item>+			<item>SortControl</item>+			<item>SortKey</item>+			<item>SortResponseControl</item>+			<item>SortedMap</item>+			<item>SortedSet</item>+			<item>SortingFocusTraversalPolicy</item>+			<item>Soundbank</item>+			<item>SoundbankReader</item>+			<item>SoundbankResource</item>+			<item>Source</item>+			<item>SourceDataLine</item>+			<item>SourceLocator</item>+			<item>SpinnerDateModel</item>+			<item>SpinnerListModel</item>+			<item>SpinnerModel</item>+			<item>SpinnerNumberModel</item>+			<item>SpinnerUI</item>+			<item>SplitPaneUI</item>+			<item>Spring</item>+			<item>SpringLayout</item>+			<item>SpringLayout.Constraints</item>+			<item>SslRMIClientSocketFactory</item>+			<item>SslRMIServerSocketFactory</item>+			<item>Stack</item>+			<item>StackOverflowError</item>+			<item>StackTraceElement</item>+			<item>StandardMBean</item>+			<item>StartTlsRequest</item>+			<item>StartTlsResponse</item>+			<item>State</item>+			<item>StateEdit</item>+			<item>StateEditable</item>+			<item>StateFactory</item>+			<item>Statement</item>+			<item>Statement</item>+			<item>StreamCorruptedException</item>+			<item>StreamHandler</item>+			<item>StreamPrintService</item>+			<item>StreamPrintServiceFactory</item>+			<item>StreamResult</item>+			<item>StreamSource</item>+			<item>StreamTokenizer</item>+			<item>Streamable</item>+			<item>StreamableValue</item>+			<item>StrictMath</item>+			<item>String</item>+			<item>StringBuffer</item>+			<item>StringBufferInputStream</item>+			<item>StringBuilder</item>+			<item>StringCharacterIterator</item>+			<item>StringContent</item>+			<item>StringHolder</item>+			<item>StringIndexOutOfBoundsException</item>+			<item>StringMonitor</item>+			<item>StringMonitorMBean</item>+			<item>StringNameHelper</item>+			<item>StringReader</item>+			<item>StringRefAddr</item>+			<item>StringSelection</item>+			<item>StringSeqHelper</item>+			<item>StringSeqHolder</item>+			<item>StringTokenizer</item>+			<item>StringValueExp</item>+			<item>StringValueHelper</item>+			<item>StringWriter</item>+			<item>Stroke</item>+			<item>Struct</item>+			<item>StructMember</item>+			<item>StructMemberHelper</item>+			<item>Stub</item>+			<item>StubDelegate</item>+			<item>StubNotFoundException</item>+			<item>Style</item>+			<item>StyleConstants</item>+			<item>StyleConstants.CharacterConstants</item>+			<item>StyleConstants.ColorConstants</item>+			<item>StyleConstants.FontConstants</item>+			<item>StyleConstants.ParagraphConstants</item>+			<item>StyleContext</item>+			<item>StyleSheet</item>+			<item>StyleSheet.BoxPainter</item>+			<item>StyleSheet.ListPainter</item>+			<item>StyledDocument</item>+			<item>StyledEditorKit</item>+			<item>StyledEditorKit.AlignmentAction</item>+			<item>StyledEditorKit.BoldAction</item>+			<item>StyledEditorKit.FontFamilyAction</item>+			<item>StyledEditorKit.FontSizeAction</item>+			<item>StyledEditorKit.ForegroundAction</item>+			<item>StyledEditorKit.ItalicAction</item>+			<item>StyledEditorKit.StyledTextAction</item>+			<item>StyledEditorKit.UnderlineAction</item>+			<item>Subject</item>+			<item>SubjectDelegationPermission</item>+			<item>SubjectDomainCombiner</item>+			<item>SupportedValuesAttribute</item>+			<item>SuppressWarnings</item>+			<item>SwingConstants</item>+			<item>SwingPropertyChangeSupport</item>+			<item>SwingUtilities</item>+			<item>SyncFactory</item>+			<item>SyncFactoryException</item>+			<item>SyncFailedException</item>+			<item>SyncProvider</item>+			<item>SyncProviderException</item>+			<item>SyncResolver</item>+			<item>SyncScopeHelper</item>+			<item>SynchronousQueue</item>+			<item>SynthConstants</item>+			<item>SynthContext</item>+			<item>SynthGraphicsUtils</item>+			<item>SynthLookAndFeel</item>+			<item>SynthPainter</item>+			<item>SynthStyle</item>+			<item>SynthStyleFactory</item>+			<item>Synthesizer</item>+			<item>SysexMessage</item>+			<item>System</item>+			<item>SystemColor</item>+			<item>SystemException</item>+			<item>SystemFlavorMap</item>+			<item>TAG_ALTERNATE_IIOP_ADDRESS</item>+			<item>TAG_CODE_SETS</item>+			<item>TAG_INTERNET_IOP</item>+			<item>TAG_JAVA_CODEBASE</item>+			<item>TAG_MULTIPLE_COMPONENTS</item>+			<item>TAG_ORB_TYPE</item>+			<item>TAG_POLICIES</item>+			<item>TAG_RMI_CUSTOM_MAX_STREAM_FORMAT</item>+			<item>TCKind</item>+			<item>THREAD_POLICY_ID</item>+			<item>TIMEOUT</item>+			<item>TRANSACTION_MODE</item>+			<item>TRANSACTION_REQUIRED</item>+			<item>TRANSACTION_ROLLEDBACK</item>+			<item>TRANSACTION_UNAVAILABLE</item>+			<item>TRANSIENT</item>+			<item>TRANSPORT_RETRY</item>+			<item>TabExpander</item>+			<item>TabSet</item>+			<item>TabStop</item>+			<item>TabableView</item>+			<item>TabbedPaneUI</item>+			<item>TableCellEditor</item>+			<item>TableCellRenderer</item>+			<item>TableColumn</item>+			<item>TableColumnModel</item>+			<item>TableColumnModelEvent</item>+			<item>TableColumnModelListener</item>+			<item>TableHeaderUI</item>+			<item>TableModel</item>+			<item>TableModelEvent</item>+			<item>TableModelListener</item>+			<item>TableUI</item>+			<item>TableView</item>+			<item>TabularData</item>+			<item>TabularDataSupport</item>+			<item>TabularType</item>+			<item>TagElement</item>+			<item>TaggedComponent</item>+			<item>TaggedComponentHelper</item>+			<item>TaggedComponentHolder</item>+			<item>TaggedProfile</item>+			<item>TaggedProfileHelper</item>+			<item>TaggedProfileHolder</item>+			<item>Target</item>+			<item>TargetDataLine</item>+			<item>TargetedNotification</item>+			<item>Templates</item>+			<item>TemplatesHandler</item>+			<item>Text</item>+			<item>TextAction</item>+			<item>TextArea</item>+			<item>TextAttribute</item>+			<item>TextComponent</item>+			<item>TextEvent</item>+			<item>TextField</item>+			<item>TextHitInfo</item>+			<item>TextInputCallback</item>+			<item>TextLayout</item>+			<item>TextLayout.CaretPolicy</item>+			<item>TextListener</item>+			<item>TextMeasurer</item>+			<item>TextOutputCallback</item>+			<item>TextSyntax</item>+			<item>TextUI</item>+			<item>TexturePaint</item>+			<item>Thread</item>+			<item>Thread.State</item>+			<item>Thread.UncaughtExceptionHandler</item>+			<item>ThreadDeath</item>+			<item>ThreadFactory</item>+			<item>ThreadGroup</item>+			<item>ThreadInfo</item>+			<item>ThreadLocal</item>+			<item>ThreadMXBean</item>+			<item>ThreadPolicy</item>+			<item>ThreadPolicyOperations</item>+			<item>ThreadPolicyValue</item>+			<item>ThreadPoolExecutor</item>+			<item>ThreadPoolExecutor.AbortPolicy</item>+			<item>ThreadPoolExecutor.CallerRunsPolicy</item>+			<item>ThreadPoolExecutor.DiscardOldestPolicy</item>+			<item>ThreadPoolExecutor.DiscardPolicy</item>+			<item>Throwable</item>+			<item>Tie</item>+			<item>TileObserver</item>+			<item>Time</item>+			<item>TimeLimitExceededException</item>+			<item>TimeUnit</item>+			<item>TimeZone</item>+			<item>TimeoutException</item>+			<item>Timer</item>+			<item>Timer</item>+			<item>Timer</item>+			<item>TimerAlarmClockNotification</item>+			<item>TimerMBean</item>+			<item>TimerNotification</item>+			<item>TimerTask</item>+			<item>Timestamp</item>+			<item>Timestamp</item>+			<item>TitledBorder</item>+			<item>TooManyListenersException</item>+			<item>ToolBarUI</item>+			<item>ToolTipManager</item>+			<item>ToolTipUI</item>+			<item>Toolkit</item>+			<item>Track</item>+			<item>TransactionRequiredException</item>+			<item>TransactionRolledbackException</item>+			<item>TransactionService</item>+			<item>TransactionalWriter</item>+			<item>TransferHandler</item>+			<item>Transferable</item>+			<item>TransformAttribute</item>+			<item>Transformer</item>+			<item>TransformerConfigurationException</item>+			<item>TransformerException</item>+			<item>TransformerFactory</item>+			<item>TransformerFactoryConfigurationError</item>+			<item>TransformerHandler</item>+			<item>Transmitter</item>+			<item>Transparency</item>+			<item>TreeCellEditor</item>+			<item>TreeCellRenderer</item>+			<item>TreeExpansionEvent</item>+			<item>TreeExpansionListener</item>+			<item>TreeMap</item>+			<item>TreeModel</item>+			<item>TreeModelEvent</item>+			<item>TreeModelListener</item>+			<item>TreeNode</item>+			<item>TreePath</item>+			<item>TreeSelectionEvent</item>+			<item>TreeSelectionListener</item>+			<item>TreeSelectionModel</item>+			<item>TreeSet</item>+			<item>TreeUI</item>+			<item>TreeWillExpandListener</item>+			<item>TrustAnchor</item>+			<item>TrustManager</item>+			<item>TrustManagerFactory</item>+			<item>TrustManagerFactorySpi</item>+			<item>Type</item>+			<item>TypeCode</item>+			<item>TypeCodeHolder</item>+			<item>TypeInfo</item>+			<item>TypeInfoProvider</item>+			<item>TypeMismatch</item>+			<item>TypeMismatch</item>+			<item>TypeMismatch</item>+			<item>TypeMismatchHelper</item>+			<item>TypeMismatchHelper</item>+			<item>TypeNotPresentException</item>+			<item>TypeVariable</item>+			<item>Types</item>+			<item>UID</item>+			<item>UIDefaults</item>+			<item>UIDefaults.ActiveValue</item>+			<item>UIDefaults.LazyInputMap</item>+			<item>UIDefaults.LazyValue</item>+			<item>UIDefaults.ProxyLazyValue</item>+			<item>UIManager</item>+			<item>UIManager.LookAndFeelInfo</item>+			<item>UIResource</item>+			<item>ULongLongSeqHelper</item>+			<item>ULongLongSeqHolder</item>+			<item>ULongSeqHelper</item>+			<item>ULongSeqHolder</item>+			<item>UNKNOWN</item>+			<item>UNKNOWN</item>+			<item>UNSUPPORTED_POLICY</item>+			<item>UNSUPPORTED_POLICY_VALUE</item>+			<item>URI</item>+			<item>URIException</item>+			<item>URIResolver</item>+			<item>URISyntax</item>+			<item>URISyntaxException</item>+			<item>URL</item>+			<item>URLClassLoader</item>+			<item>URLConnection</item>+			<item>URLDecoder</item>+			<item>URLEncoder</item>+			<item>URLStreamHandler</item>+			<item>URLStreamHandlerFactory</item>+			<item>URLStringHelper</item>+			<item>USER_EXCEPTION</item>+			<item>UShortSeqHelper</item>+			<item>UShortSeqHolder</item>+			<item>UTFDataFormatException</item>+			<item>UUID</item>+			<item>UndeclaredThrowableException</item>+			<item>UndoManager</item>+			<item>UndoableEdit</item>+			<item>UndoableEditEvent</item>+			<item>UndoableEditListener</item>+			<item>UndoableEditSupport</item>+			<item>UnexpectedException</item>+			<item>UnicastRemoteObject</item>+			<item>UnionMember</item>+			<item>UnionMemberHelper</item>+			<item>UnknownEncoding</item>+			<item>UnknownEncodingHelper</item>+			<item>UnknownError</item>+			<item>UnknownException</item>+			<item>UnknownFormatConversionException</item>+			<item>UnknownFormatFlagsException</item>+			<item>UnknownGroupException</item>+			<item>UnknownHostException</item>+			<item>UnknownHostException</item>+			<item>UnknownObjectException</item>+			<item>UnknownServiceException</item>+			<item>UnknownUserException</item>+			<item>UnknownUserExceptionHelper</item>+			<item>UnknownUserExceptionHolder</item>+			<item>UnmappableCharacterException</item>+			<item>UnmarshalException</item>+			<item>UnmodifiableClassException</item>+			<item>UnmodifiableSetException</item>+			<item>UnrecoverableEntryException</item>+			<item>UnrecoverableKeyException</item>+			<item>Unreferenced</item>+			<item>UnresolvedAddressException</item>+			<item>UnresolvedPermission</item>+			<item>UnsatisfiedLinkError</item>+			<item>UnsolicitedNotification</item>+			<item>UnsolicitedNotificationEvent</item>+			<item>UnsolicitedNotificationListener</item>+			<item>UnsupportedAddressTypeException</item>+			<item>UnsupportedAudioFileException</item>+			<item>UnsupportedCallbackException</item>+			<item>UnsupportedCharsetException</item>+			<item>UnsupportedClassVersionError</item>+			<item>UnsupportedEncodingException</item>+			<item>UnsupportedFlavorException</item>+			<item>UnsupportedLookAndFeelException</item>+			<item>UnsupportedOperationException</item>+			<item>UserDataHandler</item>+			<item>UserException</item>+			<item>Util</item>+			<item>UtilDelegate</item>+			<item>Utilities</item>+			<item>VMID</item>+			<item>VM_ABSTRACT</item>+			<item>VM_CUSTOM</item>+			<item>VM_NONE</item>+			<item>VM_TRUNCATABLE</item>+			<item>Validator</item>+			<item>ValidatorHandler</item>+			<item>ValueBase</item>+			<item>ValueBaseHelper</item>+			<item>ValueBaseHolder</item>+			<item>ValueExp</item>+			<item>ValueFactory</item>+			<item>ValueHandler</item>+			<item>ValueHandlerMultiFormat</item>+			<item>ValueInputStream</item>+			<item>ValueMember</item>+			<item>ValueMemberHelper</item>+			<item>ValueOutputStream</item>+			<item>VariableHeightLayoutCache</item>+			<item>Vector</item>+			<item>VerifyError</item>+			<item>VersionSpecHelper</item>+			<item>VetoableChangeListener</item>+			<item>VetoableChangeListenerProxy</item>+			<item>VetoableChangeSupport</item>+			<item>View</item>+			<item>ViewFactory</item>+			<item>ViewportLayout</item>+			<item>ViewportUI</item>+			<item>VirtualMachineError</item>+			<item>Visibility</item>+			<item>VisibilityHelper</item>+			<item>VoiceStatus</item>+			<item>Void</item>+			<item>VolatileImage</item>+			<item>WCharSeqHelper</item>+			<item>WCharSeqHolder</item>+			<item>WStringSeqHelper</item>+			<item>WStringSeqHolder</item>+			<item>WStringValueHelper</item>+			<item>WeakHashMap</item>+			<item>WeakReference</item>+			<item>WebRowSet</item>+			<item>WildcardType</item>+			<item>Window</item>+			<item>WindowAdapter</item>+			<item>WindowConstants</item>+			<item>WindowEvent</item>+			<item>WindowFocusListener</item>+			<item>WindowListener</item>+			<item>WindowStateListener</item>+			<item>WrappedPlainView</item>+			<item>WritableByteChannel</item>+			<item>WritableRaster</item>+			<item>WritableRenderedImage</item>+			<item>WriteAbortedException</item>+			<item>Writer</item>+			<item>WrongAdapter</item>+			<item>WrongAdapterHelper</item>+			<item>WrongPolicy</item>+			<item>WrongPolicyHelper</item>+			<item>WrongTransaction</item>+			<item>WrongTransactionHelper</item>+			<item>WrongTransactionHolder</item>+			<item>X500Principal</item>+			<item>X500PrivateCredential</item>+			<item>X509CRL</item>+			<item>X509CRLEntry</item>+			<item>X509CRLSelector</item>+			<item>X509CertSelector</item>+			<item>X509Certificate</item>+			<item>X509Certificate</item>+			<item>X509EncodedKeySpec</item>+			<item>X509ExtendedKeyManager</item>+			<item>X509Extension</item>+			<item>X509KeyManager</item>+			<item>X509TrustManager</item>+			<item>XAConnection</item>+			<item>XADataSource</item>+			<item>XAException</item>+			<item>XAResource</item>+			<item>XMLConstants</item>+			<item>XMLDecoder</item>+			<item>XMLEncoder</item>+			<item>XMLFilter</item>+			<item>XMLFilterImpl</item>+			<item>XMLFormatter</item>+			<item>XMLGregorianCalendar</item>+			<item>XMLParseException</item>+			<item>XMLReader</item>+			<item>XMLReaderAdapter</item>+			<item>XMLReaderFactory</item>+			<item>XPath</item>+			<item>XPathConstants</item>+			<item>XPathException</item>+			<item>XPathExpression</item>+			<item>XPathExpressionException</item>+			<item>XPathFactory</item>+			<item>XPathFactoryConfigurationException</item>+			<item>XPathFunction</item>+			<item>XPathFunctionException</item>+			<item>XPathFunctionResolver</item>+			<item>XPathVariableResolver</item>+			<item>Xid</item>+			<item>XmlReader</item>+			<item>XmlWriter</item>+			<item>ZipEntry</item>+			<item>ZipException</item>+			<item>ZipFile</item>+			<item>ZipInputStream</item>+			<item>ZipOutputStream</item>+			<item>ZoneView</item>+			<item>_BindingIteratorImplBase</item>+			<item>_BindingIteratorStub</item>+			<item>_DynAnyFactoryStub</item>+			<item>_DynAnyStub</item>+			<item>_DynArrayStub</item>+			<item>_DynEnumStub</item>+			<item>_DynFixedStub</item>+			<item>_DynSequenceStub</item>+			<item>_DynStructStub</item>+			<item>_DynUnionStub</item>+			<item>_DynValueStub</item>+			<item>_IDLTypeStub</item>+			<item>_NamingContextExtStub</item>+			<item>_NamingContextImplBase</item>+			<item>_NamingContextStub</item>+			<item>_PolicyStub</item>+			<item>_Remote_Stub</item>+			<item>_ServantActivatorStub</item>+			<item>_ServantLocatorStub</item>++<!-- 			new classes of jdk 6.0 -->++			<item>AbstractAnnotationValueVisitor6</item>+			<item>AbstractElementVisitor6</item>+			<item>AbstractMarshallerImpl</item>+			<item>AbstractOwnableSynchronizer</item>+			<item>AbstractProcessor</item>+			<item>AbstractQueuedLongSynchronizer</item>+			<item>AbstractScriptEngine</item>+			<item>AbstractTypeVisitor6</item>+			<item>AbstractUnmarshallerImpl</item>+			<item>ActivationDataFlavor</item>+			<item>AlgorithmMethod</item>+			<item>AnnotationMirror</item>+			<item>AnnotationValue</item>+			<item>AnnotationValueVisitor</item>+			<item>ArrayDeque</item>+			<item>AsyncHandler</item>+			<item>AttachmentMarshaller</item>+			<item>AttachmentPart</item>+			<item>AttachmentUnmarshaller</item>+			<item>Binder</item>+			<item>BindingProvider</item>+			<item>Bindings</item>+			<item>BlockingDeque</item>+			<item>BreakIteratorProvider</item>+			<item>C14NMethodParameterSpec</item>+			<item>CanonicalizationMethod</item>+			<item>Characters</item>+			<item>ClientInfoStatus</item>+			<item>CollapsedStringAdapter</item>+			<item>CollatorProvider</item>+			<item>CommandInfo</item>+			<item>CommandMap</item>+			<item>CommandObject</item>+			<item>CommonDataSource</item>+			<item>Compilable</item>+			<item>CompiledScript</item>+			<item>Completion</item>+			<item>Completions</item>+			<item>CompositeDataInvocationHandler</item>+			<item>CompositeDataView</item>+			<item>ConcurrentNavigableMap</item>+			<item>ConcurrentSkipListMap</item>+			<item>ConcurrentSkipListSet</item>+			<item>ConfigurationSpi</item>+			<item>Console</item>+			<item>ConstructorProperties</item>+			<item>CookieManager</item>+			<item>CookiePolicy</item>+			<item>CookieStore</item>+			<item>CurrencyNameProvider</item>+			<item>Data</item>+			<item>DataContentHandler</item>+			<item>DataContentHandlerFactory</item>+			<item>DataHandler</item>+			<item>DatatypeConverter</item>+			<item>DatatypeConverterInterface</item>+			<item>DateFormatProvider</item>+			<item>DateFormatSymbolsProvider</item>+			<item>DecimalFormatSymbolsProvider</item>+			<item>DeclaredType</item>+			<item>DefaultRowSorter</item>+			<item>DefaultValidationEventHandler</item>+			<item>DeflaterInputStream</item>+			<item>Deque</item>+			<item>DescriptorKey</item>+			<item>DescriptorRead</item>+			<item>Desktop</item>+			<item>Detail</item>+			<item>DetailEntry</item>+			<item>Diagnostic</item>+			<item>DiagnosticCollector</item>+			<item>DiagnosticListener</item>+			<item>DigestMethod</item>+			<item>DigestMethodParameterSpec</item>+			<item>Dispatch</item>+			<item>DOMCryptoContext</item>+			<item>DomHandler</item>+			<item>DOMSignContext</item>+			<item>DOMStructure</item>+			<item>DOMURIReference</item>+			<item>DOMValidateContext</item>+			<item>DropMode</item>+			<item>ElementFilter</item>+			<item>ElementKind</item>+			<item>ElementKindVisitor6</item>+			<item>Elements</item>+			<item>ElementScanner6</item>+			<item>ElementVisitor</item>+			<item>EndDocument</item>+			<item>EndElement</item>+			<item>Endpoint</item>+			<item>EntityDeclaration</item>+			<item>ErrorType</item>+			<item>EventException</item>+			<item>EventFilter</item>+			<item>EventReaderDelegate</item>+			<item>EventTarget</item>+			<item>ExcC14NParameterSpec</item>+			<item>ExecutableElement</item>+			<item>ExecutableType</item>+			<item>FileDataSource</item>+			<item>FileNameExtensionFilter</item>+			<item>FileObject</item>+			<item>Filer</item>+			<item>FilerException</item>+			<item>FileTypeMap</item>+			<item>ForwardingFileObject</item>+			<item>ForwardingJavaFileManager</item>+			<item>ForwardingJavaFileObject</item>+			<item>Generated</item>+			<item>GridBagLayoutInfo</item>+			<item>GroupLayout</item>+			<item>HandlerChain</item>+			<item>HandlerResolver</item>+			<item>HexBinaryAdapter</item>+			<item>HMACParameterSpec</item>+			<item>Holder</item>+			<item>HTTPBinding</item>+			<item>HttpCookie</item>+			<item>HTTPException</item>+			<item>IDN</item>+			<item>ImmutableDescriptor</item>+			<item>InflaterOutputStream</item>+			<item>InitParam</item>+			<item>InterfaceAddress</item>+			<item>Invocable</item>+			<item>IOError</item>+			<item>JavaCompiler</item>+			<item>JavaFileManager</item>+			<item>JavaFileObject</item>+			<item>JAXBContext</item>+			<item>JAXBElement</item>+			<item>JAXBException</item>+			<item>JAXBIntrospector</item>+			<item>JAXBResult</item>+			<item>JAXBSource</item>+			<item>JMX</item>+			<item>JMXAddressable</item>+			<item>KeyInfo</item>+			<item>KeyInfoFactory</item>+			<item>KeyName</item>+			<item>KeySelector</item>+			<item>KeySelectorException</item>+			<item>KeySelectorResult</item>+			<item>KeyValue</item>+			<item>LayoutPath</item>+			<item>LayoutStyle</item>+			<item>LinearGradientPaint</item>+			<item>LinkedBlockingDeque</item>+			<item>LocaleNameProvider</item>+			<item>LocaleServiceProvider</item>+			<item>Location</item>+			<item>LockInfo</item>+			<item>LogicalHandler</item>+			<item>LogicalMessage</item>+			<item>LogicalMessageContext</item>+			<item>MailcapCommandMap</item>+			<item>Marshaller</item>+			<item>MessageContext</item>+			<item>MessageFactory</item>+			<item>Messager</item>+			<item>MimeHeader</item>+			<item>MimeHeaders</item>+			<item>MimeType</item>+			<item>MimeTypeParameterList</item>+			<item>MimetypesFileTypeMap</item>+			<item>MirroredTypeException</item>+			<item>MirroredTypesException</item>+			<item>MLetContent</item>+			<item>MonitorInfo</item>+			<item>MultipleGradientPaint</item>+			<item>MutationEvent</item>+			<item>MXBean</item>+			<item>Namespace</item>+			<item>NavigableMap</item>+			<item>NavigableSet</item>+			<item>NClob</item>+			<item>NestingKind</item>+			<item>NodeSetData</item>+			<item>NormalizedStringAdapter</item>+			<item>Normalizer</item>+			<item>NoSuchMechanismException</item>+			<item>NotationDeclaration</item>+			<item>NotIdentifiableEvent</item>+			<item>NotIdentifiableEventImpl</item>+			<item>NoType</item>+			<item>NullType</item>+			<item>NumberFormatProvider</item>+			<item>OctetStreamData</item>+			<item>Oneway</item>+			<item>OptionChecker</item>+			<item>PackageElement</item>+			<item>ParseConversionEvent</item>+			<item>ParseConversionEventImpl</item>+			<item>Path2D</item>+			<item>PGPData</item>+			<item>PolicySpi</item>+			<item>PortInfo</item>+			<item>PostConstruct</item>+			<item>PreDestroy</item>+			<item>PrimitiveType</item>+			<item>PrintConversionEvent</item>+			<item>PrintConversionEventImpl</item>+			<item>ProcessingEnvironment</item>+			<item>Processor</item>+			<item>PropertyException</item>+			<item>RadialGradientPaint</item>+			<item>ReferenceType</item>+			<item>RequestWrapper</item>+			<item>Resource</item>+			<item>Resources</item>+			<item>Response</item>+			<item>ResponseWrapper</item>+			<item>RetrievalMethod</item>+			<item>RoundEnvironment</item>+			<item>RowFilter</item>+			<item>RowId</item>+			<item>RowIdLifetime</item>+			<item>RowSorter</item>+			<item>RowSorterEvent</item>+			<item>RowSorterListener</item>+			<item>RunnableFuture</item>+			<item>RunnableScheduledFuture</item>+			<item>SAAJMetaFactory</item>+			<item>SAAJResult</item>+			<item>SchemaOutputResolver</item>+			<item>ScriptContext</item>+			<item>ScriptEngine</item>+			<item>ScriptEngineFactory</item>+			<item>ScriptEngineManager</item>+			<item>ScriptException</item>+			<item>Service</item>+			<item>ServiceConfigurationError</item>+			<item>ServiceDelegate</item>+			<item>ServiceLoader</item>+			<item>ServiceMode</item>+			<item>SignatureMethod</item>+			<item>SignatureMethodParameterSpec</item>+			<item>SignatureProperties</item>+			<item>SignatureProperty</item>+			<item>SignedInfo</item>+			<item>SimpleAnnotationValueVisitor6</item>+			<item>SimpleBindings</item>+			<item>SimpleElementVisitor6</item>+			<item>SimpleJavaFileObject</item>+			<item>SimpleScriptContext</item>+			<item>SimpleTypeVisitor6</item>+			<item>SOAPBinding</item>+			<item>SOAPBinding</item>+			<item>SOAPBody</item>+			<item>SOAPBodyElement</item>+			<item>SOAPConnection</item>+			<item>SOAPConnectionFactory</item>+			<item>SOAPConstants</item>+			<item>SOAPElement</item>+			<item>SOAPElementFactory</item>+			<item>SOAPEnvelope</item>+			<item>SOAPException</item>+			<item>SOAPFactory</item>+			<item>SOAPFault</item>+			<item>SOAPFaultElement</item>+			<item>SOAPFaultException</item>+			<item>SOAPHandler</item>+			<item>SOAPHeader</item>+			<item>SOAPHeaderElement</item>+			<item>SOAPMessage</item>+			<item>SOAPMessageContext</item>+			<item>SOAPMessageHandler</item>+			<item>SOAPMessageHandlers</item>+			<item>SOAPPart</item>+			<item>SortOrder</item>+			<item>SourceVersion</item>+			<item>SplashScreen</item>+			<item>SQLClientInfoException</item>+			<item>SQLDataException</item>+			<item>SQLFeatureNotSupportedException</item>+			<item>SQLIntegrityConstraintViolationException</item>+			<item>SQLInvalidAuthorizationSpecException</item>+			<item>SQLNonTransientConnectionException</item>+			<item>SQLNonTransientException</item>+			<item>SQLRecoverableException</item>+			<item>SQLSyntaxErrorException</item>+			<item>SQLTimeoutException</item>+			<item>SQLTransactionRollbackException</item>+			<item>SQLTransientConnectionException</item>+			<item>SQLTransientException</item>+			<item>SQLXML</item>+			<item>SSLParameters</item>+			<item>StandardEmitterMBean</item>+			<item>StandardJavaFileManager</item>+			<item>StandardLocation</item>+			<item>StartDocument</item>+			<item>StartElement</item>+			<item>StatementEvent</item>+			<item>StatementEventListener</item>+			<item>StAXResult</item>+			<item>StAXSource</item>+			<item>StreamFilter</item>+			<item>StreamReaderDelegate</item>+			<item>SupportedAnnotationTypes</item>+			<item>SupportedOptions</item>+			<item>SupportedSourceVersion</item>+			<item>SwingWorker</item>+			<item>SystemTray</item>+			<item>TableRowSorter</item>+			<item>TableStringConverter</item>+			<item>TimeZoneNameProvider</item>+			<item>Tool</item>+			<item>ToolProvider</item>+			<item>Transform</item>+			<item>TransformException</item>+			<item>TransformParameterSpec</item>+			<item>TransformService</item>+			<item>TrayIcon</item>+			<item>TypeConstraintException</item>+			<item>TypeElement</item>+			<item>TypeKind</item>+			<item>TypeKindVisitor6</item>+			<item>TypeMirror</item>+			<item>TypeParameterElement</item>+			<item>TypeVisitor</item>+			<item>UIEvent</item>+			<item>UnknownAnnotationValueException</item>+			<item>UnknownElementException</item>+			<item>UnknownTypeException</item>+			<item>Unmarshaller</item>+			<item>UnmarshallerHandler</item>+			<item>UnsupportedDataTypeException</item>+			<item>URIDereferencer</item>+			<item>URIParameter</item>+			<item>URIReference</item>+			<item>URIReferenceException</item>+			<item>URLDataSource</item>+			<item>ValidationEvent</item>+			<item>ValidationEventCollector</item>+			<item>ValidationEventHandler</item>+			<item>ValidationEventImpl</item>+			<item>ValidationEventLocator</item>+			<item>ValidationEventLocatorImpl</item>+			<item>ValidationException</item>+			<item>VariableElement</item>+			<item>W3CDomHandler</item>+			<item>WebEndpoint</item>+			<item>WebFault</item>+			<item>WebMethod</item>+			<item>WebParam</item>+			<item>WebResult</item>+			<item>WebService</item>+			<item>WebServiceClient</item>+			<item>WebServiceContext</item>+			<item>WebServiceException</item>+			<item>WebServicePermission</item>+			<item>WebServiceProvider</item>+			<item>WebServiceRef</item>+			<item>WebServiceRefs</item>+			<item>Wrapper</item>+			<item>X509Data</item>+			<item>X509IssuerSerial</item>+			<item>XmlAccessOrder</item>+			<item>XmlAccessorOrder</item>+			<item>XmlAccessorType</item>+			<item>XmlAccessType</item>+			<item>XmlAdapter</item>+			<item>XmlAnyAttribute</item>+			<item>XmlAnyElement</item>+			<item>XmlAttachmentRef</item>+			<item>XmlAttribute</item>+			<item>XMLCryptoContext</item>+			<item>XmlElement</item>+			<item>XmlElementDecl</item>+			<item>XmlElementRef</item>+			<item>XmlElementRefs</item>+			<item>XmlElements</item>+			<item>XmlElementWrapper</item>+			<item>XmlEnum</item>+			<item>XmlEnumValue</item>+			<item>XMLEvent</item>+			<item>XMLEventAllocator</item>+			<item>XMLEventConsumer</item>+			<item>XMLEventFactory</item>+			<item>XMLEventReader</item>+			<item>XMLEventWriter</item>+			<item>XmlID</item>+			<item>XmlIDREF</item>+			<item>XmlInlineBinaryData</item>+			<item>XMLInputFactory</item>+			<item>XmlJavaTypeAdapter</item>+			<item>XmlJavaTypeAdapters</item>+			<item>XmlList</item>+			<item>XmlMimeType</item>+			<item>XmlMixed</item>+			<item>XmlNs</item>+			<item>XmlNsForm</item>+			<item>XMLObject</item>+			<item>XMLOutputFactory</item>+			<item>XmlRegistry</item>+			<item>XMLReporter</item>+			<item>XMLResolver</item>+			<item>XmlRootElement</item>+			<item>XmlSchema</item>+			<item>XmlSchemaType</item>+			<item>XmlSchemaTypes</item>+			<item>XMLSignature</item>+			<item>XMLSignatureException</item>+			<item>XMLSignatureFactory</item>+			<item>XMLSignContext</item>+			<item>XMLStreamConstants</item>+			<item>XMLStreamException</item>+			<item>XMLStreamReader</item>+			<item>XMLStreamWriter</item>+			<item>XMLStructure</item>+			<item>XmlTransient</item>+			<item>XmlType</item>+			<item>XMLValidateContext</item>+			<item>XmlValue</item>+			<item>XPathFilter2ParameterSpec</item>+			<item>XPathFilterParameterSpec</item>+			<item>XPathType</item>+			<item>XSLTTransformParameterSpec</item>+			<item>ZipError</item>++<!-- 			end new classes -->+		</list>+		<list name="keywords">+            <item>as</item>+            <item>in</item>++			<item>abstract</item>+			<item>break</item>+			<item>case</item>+			<item>catch</item>+			<item>class</item>+			<item>continue</item>+			<item>default</item>+			<item>do</item>+			<item>else</item>+			<item>enum</item>+			<item>extends</item>+			<item>false</item>+			<item>finally</item>+			<item>for</item>+			<item>goto</item>+			<item>if</item>+			<item>implements</item>+			<item>instanceof</item>+			<item>@interface</item>+			<item>interface</item>+			<item>native</item>+			<item>new</item>+			<item>null</item>+			<item>private</item>+			<item>protected</item>+			<item>public</item>+			<item>return</item>+			<item>super</item>+			<item>strictfp</item>+			<item>switch</item>+			<item>synchronized</item>+			<item>this</item>+			<item>throws</item>+			<item>throw</item>+			<item>transient</item>+			<item>true</item>+			<item>try</item>+			<item>volatile</item>+			<item>while</item>+		</list>+		<list name="types">+            <item>def</item>++			<item>boolean</item>+			<item>byte</item>+			<item>char</item>+			<item>const</item>+			<item>double</item>+			<item>final</item>+			<item>float</item>+			<item>int</item>+			<item>long</item>+			<item>short</item>+			<item>static</item>+			<item>void</item>+		</list>+		<contexts>+			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">+				<!-- Comment next line if you don't use Javadoc tool -->+				<IncludeRules context="##Javadoc"/>+				<keyword attribute="Keyword" context="#stay" String="keywords"/>+				<keyword attribute="Data Type" context="#stay" String="types"/>+				<keyword attribute="Java15" context="#stay" String="java15"/>+				<Float attribute="Float" context="Float Suffixes"/>+				<HlCOct attribute="Octal" context="#stay"/>+				<HlCHex attribute="Hex" context="#stay"/>+				<Int attribute="Decimal" context="Int Suffixes"/>+				<HlCChar attribute="Char" context="#stay"/>+				<RegExpr attribute="Char" context="#stay" String="'\\u[0-9a-fA-F]{4}'"/>+				<RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/>+				<RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/>+                <StringDetect attribute="String" String="&apos;&apos;&apos;" context="MultiLineSingleString" beginRegion="MultiLineString"/>+                <StringDetect attribute="String" String="&quot;&quot;&quot;" context="MultiLineDoubleString" beginRegion="MultiLineString"/>+                <DetectChar attribute="String" context="SingleString" char="&apos;"/>+                <DetectChar attribute="String" context="String" char="&quot;"/>+				<RegExpr attribute="Function" context="EnterPrintf" String="\.(format|printf)\b"/>+				<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>+				<Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+				<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>+				<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>+				<RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />+				<RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />+				<RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" />+				<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />+				<DetectChar attribute="Symbol" context="Member" char="." />+				<DetectChar attribute="Symbol" context="InFunctionCall" char="("/>+				<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/*&lt;=&gt;?[]|~^&#59;"/>+			</context>+            <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+                <AnyChar String="fF" attribute="Float" context="#pop"/>+            </context>+            <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+                <StringDetect attribute="Decimal" context="#pop" String="ULL" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="LUL" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="LLU" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="LL" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="U" insensitive="true"/>+                <StringDetect attribute="Decimal" context="#pop" String="L" insensitive="true"/>+            </context>+			<context attribute="Normal Text" lineEndContext="#stay" name="InFunctionCall">+				<IncludeRules context="Normal"/>+				<DetectChar attribute="Symbol" context="#pop" char=")"/>+			</context>+			<context attribute="String" lineEndContext="#pop" name="String">+				<LineContinue attribute="String" context="#stay"/>+				<HlCStringChar attribute="String Char" context="#stay"/>+				<RegExpr attribute="String Char" context="#stay" String="\\u[0-9a-fA-F]{4}"/>+				<DetectChar attribute="String" context="#pop" char="&quot;"/>+			</context>+            <context attribute="String" lineEndContext="#pop" name="SingleString">+                <DetectChar attribute="String" context="#pop" char="&apos;"/>+            </context>+            <context attribute="String" lineEndContext="#stay" name="MultiLineSingleString">+                <StringDetect attribute="String" context="#pop" String="&apos;&apos;&apos;" endRegion="MultiLineString"/>+            </context>+            <context attribute="String" lineEndContext="#stay" name="MultiLineDoubleString">+                <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="MultiLineString"/>+            </context>+			<context attribute="Normal Text" lineEndContext="#stay" name="EnterPrintf" fallthrough="true" fallthroughContext="#pop">+				<DetectChar attribute="Symbol" context="Printf" char="("/>+				<DetectSpaces attribute="Normal Text" context="#stay"/>+			</context>+			<context attribute="Normal Text" lineEndContext="#stay" name="Printf">+				<DetectChar attribute="String" context="PrintfString" char="&quot;"/>+				<IncludeRules context="InFunctionCall"/>+			</context>+			<context attribute="PrintfString" lineEndContext="#pop" name="PrintfString">+				<LineContinue attribute="String" context="#stay"/>+				<HlCStringChar attribute="String Char" context="#stay"/>+				<DetectChar attribute="String" context="#pop" char="&quot;"/>+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]" />+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)" />+				<RegExpr attribute="String Char" context="#stay" String="%(%|n)" />+			</context>+			<context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">+				<RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />+			</context>+			<context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">+				<RegExpr attribute="StaticImports" context="#pop" String="\s*.*;?" />+			</context>+			<context attribute="Normal Text" lineEndContext="#pop" name="Imports">+				<RegExpr attribute="Imports" context="#pop" String="\s*.*;?" />+			</context>+			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+				<DetectSpaces />+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/>+			</context>+			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+				<DetectSpaces />+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/>+			</context>+		</contexts>+		<itemDatas>+			<itemData name="Normal Text"  defStyleNum="dsNormal"/>+			<itemData name="Keyword"      defStyleNum="dsKeyword"/>+			<itemData name="Function"     defStyleNum="dsFunction"/>+			<itemData name="StaticImports" defStyleNum="dsImport"/>+			<itemData name="Imports"      defStyleNum="dsImport"/>+			<itemData name="Data Type"    defStyleNum="dsDataType"/>+			<itemData name="Decimal"      defStyleNum="dsDecVal"/>+			<itemData name="Octal"        defStyleNum="dsBaseN"/>+			<itemData name="Hex"          defStyleNum="dsBaseN"/>+			<itemData name="Float"        defStyleNum="dsFloat"/>+			<itemData name="Char"         defStyleNum="dsChar"/>+			<itemData name="String"       defStyleNum="dsString"/>+			<itemData name="String Char"  defStyleNum="dsSpecialChar"/>+			<itemData name="PrintfString" defStyleNum="dsString"/>+			<itemData name="Comment"      defStyleNum="dsComment"/>+			<itemData name="Symbol"       defStyleNum="dsNormal"/>+			<itemData name="Java15"       defStyleNum="dsBuiltIn" bold="1" italic="0"/>+		</itemDatas>+	</highlighting>+	<general>+		<comments>+			<comment name="singleLine" start="//"/>+			<comment name="multiLine" start="/*" end="*/" region="Comment"/>+		</comments>+		<keywords casesensitive="1"/>+	</general>+</language>+<!-- kate: replace-tabs off; -->
syntax/hamlet.xml view
@@ -5,7 +5,7 @@   word character *or* a number, hence the lookahead -->   <!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*"> ]>-<language name="Hamlet" version="3" kateversion="2.4" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">+<language name="Hamlet" version="4" kateversion="2.4" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell"> <highlighting> <contexts>   <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >@@ -96,9 +96,7 @@ </itemDatas> </highlighting>  <general>-  <comments>-    <comment name="singleLine" start="#"/>-  </comments>   <keywords casesensitive="1"/> </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/haskell.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Haskell" version="13" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">+<language name="Haskell" version="14" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">   <highlighting>   <list name="keywords">     <item>case</item>@@ -459,8 +459,8 @@     <context attribute="Normal" lineEndContext="#stay" name="code">       <StringDetect attribute="Pragma"  context="pragma" String="{-#"/>       <StringDetect attribute="Comment" context="#stay" String="{--}"/>-      <RegExpr attribute="Comment" context="comments" String="\{-[^#]?" />-      <RegExpr attribute="Comment" context="comment"  String="--[\-]*([^!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|\-~:]|$)" />+      <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment"/>+      <RegExpr attribute="Comment" context="comment"  String="--[\-]*(?=[^!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|\-~:]|$)" />       <WordDetect attribute="Keyword" context="import"   String="import" />       <Detect2Chars attribute="C2HS Directive" context="c2hs directive" char="{" char1="#"/>       <DetectChar attribute="C Preprocessor" context="C Preprocessor" char="#" column="0"/>@@ -484,7 +484,7 @@       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>       <Int        attribute="Decimal" context="#stay" />-      <RegExpr    attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" />+      <DetectChar attribute="Char"    context="char" char="'" />       <DetectChar attribute="String"  context="string" char="&quot;" />        <DetectChar attribute="Function Infix" context="infix" char="`"/>@@ -512,11 +512,15 @@     </context>     <context attribute="Comment" lineEndContext="#pop" name="comment">       <IncludeRules context="Haddock" />+      <IncludeRules context="##Alerts" />+      <IncludeRules context="##Modelines" />     </context>     <context attribute="Comment" lineEndContext="#stay" name="comments">-      <Detect2Chars attribute="Comment" context="comment" char="{" char1="-" />-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+      <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />       <IncludeRules context="Haddock" />+      <IncludeRules context="##Alerts" />+      <IncludeRules context="##Modelines" />     </context>     <context attribute="Char" lineEndContext="#pop" name="char">       <RegExpr attribute="Char" context="#stay" String="\\." />@@ -535,8 +539,8 @@       <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />        <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}"/>-      <RegExpr attribute="Comment" context="comments" String="\{-[^#]?" />-      <RegExpr attribute="Comment" context="comment"  String="--([^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:].*)?$" />+      <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment" />+      <RegExpr attribute="Comment" context="comment"  String="--(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />     </context>      <!-- Haddock -->@@ -642,8 +646,9 @@     <folding indentationsensitive="1"/>     <comments>       <comment name="singleLine" start="--" />-      <comment name="multiLine" start="{-" end="-}" />+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />     </comments>     <keywords casesensitive="1" /> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/haxe.xml view
@@ -12,7 +12,7 @@   ======================================================================== --> -<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="2" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">+<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="3" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">   <highlighting>     <list name="keywords">     @@ -146,9 +146,16 @@       </context>        <!-- Comments -->-      <context attribute="Comment" lineEndContext="#pop" name="CommentLine"/>+      <context attribute="Comment" lineEndContext="#pop" name="CommentLine">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context attribute="Comment" lineEndContext="#stay" name="CommentBlock">         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>     </contexts>     <itemDatas>@@ -174,8 +181,9 @@   <general>     <comments>       <comment name="singleLine" start="//"/>-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="CommentBlock"/>     </comments>     <keywords casesensitive="true"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/html.xml view
@@ -3,9 +3,9 @@ [ 	<!ENTITY name          "[A-Za-z_:][\w.:_-]*"> 	<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">-	<!ENTITY entref        "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]>-<language name="HTML" version="10" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">+<language name="HTML" version="12" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">  <highlighting> <contexts>@@ -33,37 +33,37 @@   </context>    <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">-    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />-    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />-    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />-    <RegExpr attribute="Element" context="El Open" String="&lt;ul\b" insensitive="true" beginRegion="ul" />-    <RegExpr attribute="Element" context="El Open" String="&lt;ol\b" insensitive="true" beginRegion="ol" />-    <RegExpr attribute="Element" context="El Open" String="&lt;dl\b" insensitive="true" beginRegion="dl" />-    <RegExpr attribute="Element" context="El Open" String="&lt;article\b" insensitive="true" beginRegion="article" />-    <RegExpr attribute="Element" context="El Open" String="&lt;aside\b" insensitive="true" beginRegion="aside" />-    <RegExpr attribute="Element" context="El Open" String="&lt;details\b" insensitive="true" beginRegion="details" />-    <RegExpr attribute="Element" context="El Open" String="&lt;figure\b" insensitive="true" beginRegion="figure" />-    <RegExpr attribute="Element" context="El Open" String="&lt;footer\b" insensitive="true" beginRegion="footer" />-    <RegExpr attribute="Element" context="El Open" String="&lt;header\b" insensitive="true" beginRegion="header" />-    <RegExpr attribute="Element" context="El Open" String="&lt;main\b" insensitive="true" beginRegion="main" />-    <RegExpr attribute="Element" context="El Open" String="&lt;nav\b" insensitive="true" beginRegion="nav" />-    <RegExpr attribute="Element" context="El Open" String="&lt;section\b" insensitive="true" beginRegion="section" />+    <WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />+    <WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />+    <WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />+    <WordDetect attribute="Element" context="El Open" String="&lt;ul" insensitive="true" beginRegion="ul" />+    <WordDetect attribute="Element" context="El Open" String="&lt;ol" insensitive="true" beginRegion="ol" />+    <WordDetect attribute="Element" context="El Open" String="&lt;dl" insensitive="true" beginRegion="dl" />+    <WordDetect attribute="Element" context="El Open" String="&lt;article" insensitive="true" beginRegion="article" />+    <WordDetect attribute="Element" context="El Open" String="&lt;aside" insensitive="true" beginRegion="aside" />+    <WordDetect attribute="Element" context="El Open" String="&lt;details" insensitive="true" beginRegion="details" />+    <WordDetect attribute="Element" context="El Open" String="&lt;figure" insensitive="true" beginRegion="figure" />+    <WordDetect attribute="Element" context="El Open" String="&lt;footer" insensitive="true" beginRegion="footer" />+    <WordDetect attribute="Element" context="El Open" String="&lt;header" insensitive="true" beginRegion="header" />+    <WordDetect attribute="Element" context="El Open" String="&lt;main" insensitive="true" beginRegion="main" />+    <WordDetect attribute="Element" context="El Open" String="&lt;nav" insensitive="true" beginRegion="nav" />+    <WordDetect attribute="Element" context="El Open" String="&lt;section" insensitive="true" beginRegion="section" />     <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/ul\b" insensitive="true" endRegion="ul" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/ol\b" insensitive="true" endRegion="ol" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/dl\b" insensitive="true" endRegion="dl" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/article\b" insensitive="true" endRegion="article" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/aside\b" insensitive="true" endRegion="aside" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/details\b" insensitive="true" endRegion="details" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/figure\b" insensitive="true" endRegion="figure" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/footer\b" insensitive="true" endRegion="footer" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/header\b" insensitive="true" endRegion="header" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/main\b" insensitive="true" endRegion="main" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/nav\b" insensitive="true" endRegion="nav" />-    <RegExpr attribute="Element" context="El Close" String="&lt;/section\b" insensitive="true" endRegion="section" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/ul" insensitive="true" endRegion="ul" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/ol" insensitive="true" endRegion="ol" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/dl" insensitive="true" endRegion="dl" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/article" insensitive="true" endRegion="article" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/aside" insensitive="true" endRegion="aside" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/details" insensitive="true" endRegion="details" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/figure" insensitive="true" endRegion="figure" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/footer" insensitive="true" endRegion="footer" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/header" insensitive="true" endRegion="header" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/main" insensitive="true" endRegion="main" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/nav" insensitive="true" endRegion="nav" />+    <WordDetect attribute="Element" context="El Close" String="&lt;/section" insensitive="true" endRegion="section" />     <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />   </context> @@ -85,16 +85,17 @@   </context>    <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">-    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />   </context>     <context name="Comment" attribute="Comment" lineEndContext="#stay">     <DetectSpaces/>+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />     <IncludeRules context="##Alerts" />+    <IncludeRules context="##Modelines" />     <DetectIdentifier/>-    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />-    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />+    <RegExpr attribute="Error" context="#stay" String="-(?:-(?!-&gt;))+" />   </context>    <context name="CDATA" attribute="Other Text" lineEndContext="#stay">@@ -172,7 +173,7 @@   </context>    <context name="JS" attribute="Other Text" lineEndContext="#stay">-    <RegExpr attribute="Attribute" context="Script-Type" String="(\s+|^)type(?=\=|\s|$)" insensitive="true"/>+    <RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)type(?=\=|\s|$)" insensitive="true"/>     <DetectChar attribute="Element" context="JS content" char="&gt;" />     <IncludeRules context="DefaultJS" />   </context>@@ -193,6 +194,7 @@    <context name="JS comment close" attribute="Comment" lineEndContext="#pop">     <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />+    <DetectSpaces />     <IncludeRules context="##Alerts" />   </context> @@ -310,7 +312,8 @@ </highlighting> <general>   <comments>-    <comment name="multiLine" start="&lt;!--" end="--&gt;" />+    <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />   </comments> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/idris.xml view
@@ -1,105 +1,105 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->-<language name="Idris" version="1.0" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">+<language name="Idris" version="3" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">   <highlighting>   <list name="keywords">-    <item> abstract </item>-    <item> auto </item>-    <item> case </item>-    <item> class </item>-    <item> codata </item>-    <item> constructor </item>-    <item> covering </item>-    <item> data </item>-    <item> default </item>-    <item> do </item>-    <item> dsl </item>-    <item> else </item>-    <item> export </item>-    <item> if </item>-    <item> implementation </item>-    <item> implicit </item>-    <item> import </item>-    <item> impossible </item>-    <item> in </item>-    <item> index_first </item>-    <item> index_next </item>-    <item> infix </item>-    <item> infixl </item>-    <item> infixr </item>-    <item> instance </item>-    <item> interface </item>-    <item> lambda </item>-    <item> let </item>-    <item> module </item>-    <item> mutual </item>-    <item> namespace </item>-    <item> of </item>-    <item> parameters </item>-    <item> partial </item>-    <item> pattern </item>-    <item> postulate </item>-    <item> prefix </item>-    <item> private </item>-    <item> proof </item>-    <item> public </item>-    <item> record </item>-    <item> rewrite </item>-    <item> static </item>-    <item> syntax </item>-    <item> tactics </item>-    <item> term </item>-    <item> then </item>-    <item> total </item>-    <item> using </item>-    <item> variable </item>-    <item> where </item>-    <item> with </item>+    <item>abstract</item>+    <item>auto</item>+    <item>case</item>+    <item>class</item>+    <item>codata</item>+    <item>constructor</item>+    <item>covering</item>+    <item>data</item>+    <item>default</item>+    <item>do</item>+    <item>dsl</item>+    <item>else</item>+    <item>export</item>+    <item>if</item>+    <item>implementation</item>+    <item>implicit</item>+    <item>import</item>+    <item>impossible</item>+    <item>in</item>+    <item>index_first</item>+    <item>index_next</item>+    <item>infix</item>+    <item>infixl</item>+    <item>infixr</item>+    <item>instance</item>+    <item>interface</item>+    <item>lambda</item>+    <item>let</item>+    <item>module</item>+    <item>mutual</item>+    <item>namespace</item>+    <item>of</item>+    <item>parameters</item>+    <item>partial</item>+    <item>pattern</item>+    <item>postulate</item>+    <item>prefix</item>+    <item>private</item>+    <item>proof</item>+    <item>public</item>+    <item>record</item>+    <item>rewrite</item>+    <item>static</item>+    <item>syntax</item>+    <item>tactics</item>+    <item>term</item>+    <item>then</item>+    <item>total</item>+    <item>using</item>+    <item>variable</item>+    <item>where</item>+    <item>with</item>   </list>   <list name="directives">-     <item> access </item>-     <item> assert_total </item>-     <item> default </item>-     <item> dynamic </item>-     <item> elim </item>-     <item> error_handlers </item>-     <item> error_reverse </item>-     <item> flag </item>-     <item> hide </item>-     <item> include </item>-     <item> language </item>-     <item> lib </item>-     <item> link </item>-     <item> name </item>-     <item> provide </item>-     <item> reflection </item>+     <item>access</item>+     <item>assert_total</item>+     <item>default</item>+     <item>dynamic</item>+     <item>elim</item>+     <item>error_handlers</item>+     <item>error_reverse</item>+     <item>flag</item>+     <item>hide</item>+     <item>include</item>+     <item>language</item>+     <item>lib</item>+     <item>link</item>+     <item>name</item>+     <item>provide</item>+     <item>reflection</item>   </list>   <list name="tactics">-    <item> applyTactic </item>-    <item> attack </item>-    <item> compute </item>-    <item> exact </item>-    <item> fill </item>-    <item> focus </item>-    <item> induction </item>-    <item> intro </item>-    <item> intros </item>-    <item> let </item>-    <item> refine </item>-    <item> reflect </item>-    <item> rewrite </item>-    <item> solve </item>-    <item> trivial </item>-    <item> try </item>+    <item>applyTactic</item>+    <item>attack</item>+    <item>compute</item>+    <item>exact</item>+    <item>fill</item>+    <item>focus</item>+    <item>induction</item>+    <item>intro</item>+    <item>intros</item>+    <item>let</item>+    <item>refine</item>+    <item>reflect</item>+    <item>rewrite</item>+    <item>solve</item>+    <item>trivial</item>+    <item>try</item>   </list>   <contexts>      <context attribute="Normal" lineEndContext="#stay" name="code">         <RegExpr attribute="Comment" context="line comment"-           String="---*[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]?" />+           String="---*(?=[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />         <RegExpr attribute="Comment" context="line comment"-           String="\|\|\|[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]?" />-        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />+           String="\|\|\|(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />+        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />         <RegExpr attribute="Normal" context="declaration" lookAhead="true"            String="^\s*([a-z]+\s+)*([A-Za-z][A-Za-z0-9_]*'*|\([\-!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|~:]+\))\s*:" />         <keyword attribute="Keyword" context="#stay" String="keywords" />@@ -139,10 +139,17 @@         <RegExpr attribute="String" context="#stay" String="\\." />         <RegExpr attribute="String" context="#pop" String="&quot;" />      </context>-     <context attribute="Comment" lineEndContext="#pop" name="line comment" />+     <context attribute="Comment" lineEndContext="#pop" name="line comment">+         <DetectSpaces />+         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+     </context>      <context attribute="Comment" lineEndContext="#stay" name="block comment">-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />-        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />+        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />      </context>   </contexts>   <itemDatas>@@ -167,7 +174,7 @@     <folding indentationsensitive="1"/>     <comments>       <comment name="singleLine" start="--" />-      <comment name="multiLine" start="{-" end="-}" />+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />     </comments>     <keywords casesensitive="1" /> </general>
syntax/ini.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="5" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">+<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="6" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">  <highlighting> <list name="keywords">@@ -49,6 +49,7 @@  <context name="Comment" attribute="Comment" lineEndContext="#pop">   <DetectSpaces />   <IncludeRules context="##Alerts" />+  <IncludeRules context="##Modelines" />   <DetectIdentifier />  </context> </contexts>@@ -69,10 +70,10 @@  <general>  <comments>-  <comment name="singleLine" start="#" />   <comment name="singleLine" start=";" />  </comments>  <keywords casesensitive="0" /> </general>  </language>+<!-- kate: replace-tabs on; indent-width 1; -->
syntax/isocpp.xml view
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-    <!ENTITY int "(?:[0-9](?:'?[0-9]+)*)">-    <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]+)*)">+    <!ENTITY int "(?:[0-9](?:'?[0-9]++)*+)">+    <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]++)*+)">     <!ENTITY exp_float "(?:[eE][+-]?&int;)">     <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)"> @@ -11,7 +11,9 @@     <!ENTITY punctuators ":&ns_punctuators;">      <!-- printf-like format strings conversion specifiers -->-    <!ENTITY printf_like "&#37;(?:ll?|[zjtL]|hh?)?[diouxXeEfFgGaAcspn&#37;]">+    <!ENTITY printf_like "&#37;[-+ #0]*(?:[0-9]+|\*)?(?:\.(?:[0-9]+|\*))?(?:(?:hh|ll|[hljzt])?[dioxXun]|[lL]?[fFeEaAgG]|l?[cs]|[p&#37;])">+    <!-- https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification -->+    <!ENTITY format_like "\{\{|\}\}|\{[0-9]*(?::(?:[^{}]?[&lt;&gt;^])?[-+ #0]*(?:[0-9]+|\{[0-9]*\})?(?:\.(?:[0-9]+|\{[0-9]*\}))?L?[sbBcdoxXaAeEfFgGp]?)?\}">      <!ENTITY ispphash "(?:#|&#37;\:|\?\?=)">     <!ENTITY pphash "&ispphash;\s*">@@ -22,7 +24,7 @@ <language     name="ISO C++"     section="Sources"-    version="17"+    version="20"     kateversion="5.0"     indenter="cstyle"     style="C++"@@ -57,6 +59,7 @@       <item>while</item>     </list> +    <!-- https://en.cppreference.com/w/cpp/keyword -->     <list name="keywords">       <item>alignof</item>       <item>alignas</item>@@ -64,7 +67,8 @@       <item>auto</item>       <item>class</item>       <item>consteval</item> <!-- C++20 -->-      <item>constexpr</item>+      <item>constinit</item> <!-- C++20 -->+      <item>constexpr</item> <!-- C++11 -->       <item>const_cast</item>       <item>decltype</item>       <item>delete</item>@@ -72,7 +76,7 @@       <item>enum</item>       <item>explicit</item>       <item>false</item>-      <item>final</item> <!-- According N3272 -->+      <item>final</item> <!-- C++11 -->       <item>friend</item>       <item>inline</item>       <item>namespace</item>@@ -80,7 +84,7 @@       <item>noexcept</item>       <item>nullptr</item>       <item>operator</item>-      <item>override</item> <!-- According N3272 -->+      <item>override</item> <!-- C++11 -->       <item>private</item>       <item>protected</item>       <item>public</item>@@ -167,6 +171,7 @@     </list>      <!-- https://en.cppreference.com/w/cpp/keyword -->+    <!-- https://en.cppreference.com/w/cpp/types/integer -->     <list name="types">       <item>bool</item>       <item>char</item>@@ -300,7 +305,7 @@         <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />         <StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->         <!-- Match numbers -->-        <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />+        <RegExpr context="Number" String="\.?\d" lookAhead="true" />         <!-- Match comments -->         <IncludeRules context="match comments and region markers" />         <!-- Match keywords -->@@ -357,7 +362,7 @@        <context name="match string" attribute="Normal Text" lineEndContext="#pop">         <DetectChar attribute="String" context="String" char="&quot;" />-        <Detect2Chars attribute="String" context="String32" char="U" char1="&quot;" />+        <Detect2Chars attribute="String" context="String" char="U" char1="&quot;" />         <Detect2Chars attribute="String" context="String16" char="u" char1="&quot;" />         <Detect2Chars attribute="String" context="String16" char="L" char1="&quot;" />         <StringDetect attribute="String" context="String8" String="u8&quot;" />@@ -387,16 +392,16 @@       </context>        <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">-        <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|&int;(?:&exp_float;|\.&int;?&exp_float;?)|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))" />+        <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />         <IncludeRules context="Integer" />       </context>        <context name="Integer" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">         <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />-        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]+)*" />-        <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]+)+" />-        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9](?:'?[0-9]+)*" />-        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']+" />+        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]++)*+" />+        <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]++)++" />+        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9](?:'?[0-9]++)*+" />+        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />       </context>        <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">@@ -489,25 +494,20 @@         <IncludeRules context="string special char" />       </context> -      <context name="String32" attribute="String" lineEndContext="#pop">-        <IncludeRules context="string normal char" />-        <RegExpr attribute="String Char" context="StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />-        <IncludeRules context="string special char" />-      </context>-       <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">         <RegExpr attribute="Error" context="#pop" String="[0-9A-Fa-f]{1,}" />       </context>        <context name="string special char" attribute="String" lineEndContext="#pop">-        <RegExpr attribute="String Char" context="#stay" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;" />+        <RegExpr attribute="String Char" context="#stay" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;|&format_like;" />         <RegExpr attribute="Error" context="#stay" String="\\(?:u[^&quot;]{0,3}|U[^&quot;]{0,7}|.)" />         <LineContinue attribute="String" context="#stay" />       </context>        <context name="string normal char" attribute="String" lineEndContext="#pop">         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->-        <RegExpr attribute="String" context="#stay" String="[^%\\&quot;]+" />+        <!-- % -> printf format ; {} -> std::format -->+        <RegExpr attribute="String" context="#stay" String="[^%\\&quot;{}]+" />         <DetectChar attribute="String" context="UDLStringSuffix" char="&quot;" />       </context> @@ -552,7 +552,7 @@       <context name="InRawString" attribute="String" lineEndContext="#stay" dynamic="true">         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->         <RegExpr attribute="String" context="#stay" String="[^%)]+" />-        <RegExpr attribute="String Char" context="#stay" String="&printf_like;" />+        <RegExpr attribute="String Char" context="#stay" String="&printf_like;|&format_like;" />         <StringDetect attribute="String" context="#pop" String=")%1&quot;" dynamic="true"/>       </context> @@ -687,8 +687,7 @@          <IncludeRules context="InPreprocessor" />         <Detect2Chars attribute="Error" context="#pop!LineError" char="/" char1="/" />-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Comment 2" char="/" char1="*" beginRegion="Comment" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />         <IncludeRules context="GNUMacros##GCCExtensions" />         <DetectIdentifier attribute="Preprocessor" context="#pop!In Define"/>       </context>@@ -702,7 +701,7 @@         <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />         <StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->         <!-- Match numbers -->-        <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />+        <RegExpr context="Number" String="\.?\d" lookAhead="true" />         <!-- Match comments -->         <IncludeRules context="match comments" />         <!-- Match punctuators -->
syntax/j.xml view
@@ -62,7 +62,7 @@ --> <language name="J"           section="Scripts"-          version="2"+          version="3"           kateversion="3.4"           extensions="*.ijs;*.ijt;*.IJS;*.IJT"           mimetype="text/x-j;text/x-jsrc"@@ -90,7 +90,11 @@         <RegExpr      attribute="ExpArg"         context="#stay"        String="\b[nmuvxy](?![\w:.])"/>         <RegExpr      attribute="Noun"           context="#stay"        String="\ba[.:](?![.:])"/>       </context>-      <context attribute="Comment" lineEndContext="#pop" name="comment line"/>+      <context attribute="Comment" lineEndContext="#pop" name="comment line">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>     </contexts>     <itemDatas>       <itemData name="Sentence"       defStyleNum="dsNormal"/>@@ -117,3 +121,4 @@     <folding indentationsensitive="true"/>   </general> </language>+<!-- kate: replace-tabs on; indent-width 2; -->
syntax/java.xml view
@@ -4,7 +4,7 @@ 	<!ENTITY int "[0-9]([0-9_]*[0-9])?"> 	<!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?"> ]>-<language name="Java" version="5" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">+<language name="Java" version="7" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)"> 	<highlighting> 		<list name="java15"> 			<item>ACTIVE</item>@@ -3786,9 +3786,9 @@ 				<RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" /> 				<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" /> 				<RegExpr attribute="Annotation" context="#stay" String="@[_\w][_\w\d]*" />-				<RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />+				<DetectChar attribute="Symbol" context="Member" char="." /> 				<DetectChar attribute="Symbol" context="InFunctionCall" char="("/>-				<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>+				<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/*&lt;=&gt;?[]|~^&#59;"/> 			</context> 			<context attribute="Normal Text" lineEndContext="#stay" name="InFunctionCall"> 				<IncludeRules context="Normal"/>@@ -3826,11 +3826,15 @@ 				<RegExpr attribute="Imports" context="#pop" String="\s*.*;" /> 			</context> 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+				<DetectSpaces /> 				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/> 			</context> 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2"> 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+				<DetectSpaces /> 				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/> 			</context> 		</contexts> 		<itemDatas>@@ -3858,8 +3862,9 @@ 	<general> 		<comments> 			<comment name="singleLine" start="//"/>-			<comment name="multiLine" start="/*" end="*/"/>+			<comment name="multiLine" start="/*" end="*/" region="Comment"/> 		</comments> 		<keywords casesensitive="1"/> 	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/javascript-react.xml view
@@ -21,7 +21,7 @@        This file is part of the KDE's KSyntaxHighlighting framework. -      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)+      Copyright 2018-2020 Nibaldo González S. (nibgonz@gmail.com)        This Source Code Form is subject to the terms of the MIT License.       If a copy of the license was not distributed with this file,@@ -38,6 +38,7 @@     available at: https://github.com/Microsoft/TypeScript-TmLanguage      Change log:+     * v9 [2020-06-03]: Add folding in templates.      * v8 [2019-11-21]: Tag detection is more stricter.      * v7 [2019-11-19]: Rename definition "JavaScript React" to "JavaScript React (JSX)".      * v5 [2019-02-20]: Don't highlight tags within declarations of@@ -52,7 +53,7 @@      * v1 [2018-06-20]: Initial version --> -<language name="JavaScript React (JSX)" version="8" kateversion="5.0" section="Scripts" indenter="cstyle"+<language name="JavaScript React (JSX)" version="9" kateversion="5.0" section="Scripts" indenter="cstyle"           priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"           author="Nibaldo González (nibgonz@gmail.com)" license="MIT"> @@ -75,7 +76,7 @@ 		<!-- Overwrite rules of 'javascript.xml'. These rules send to contexts 		     that contain: <IncludeRules context="Normal"/> in the JavaScript XML file. --> 		<context name="OverwriteJavaScript" attribute="Normal Text" lineEndContext="#stay">-			<DetectChar context="Template" attribute="Template" char="`" />+			<DetectChar context="Template" attribute="Template" char="`" beginRegion="Template" /> 			<DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" /> 			<DetectChar attribute="Normal Text" context="NoRegExp##JavaScript" char="]" endRegion="List" /> 			<!-- NOTE: The "{" character sends to the "Object" context (see the "React" context) -->@@ -92,7 +93,7 @@ 			<IncludeRules context="ConditionalExpression##JavaScript" /> 		</context> 		<context name="Template" attribute="Template" lineEndContext="#stay">-			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" endRegion="Template" /> 			<!-- Find tags and send to the "Substitution" context --> 			<Detect2Chars context="Substitution-BeforeTag" attribute="Substitution" char="$" char1="{" /> 			<IncludeRules context="Template##JavaScript" />
syntax/javascript.xml view
@@ -9,12 +9,15 @@   Minor changes: Joseph Wenninger <jowenn@kde.org>   Full JavaScript 1.0 support by Whitehawk Stormchaser -  Last Update: Nov. 20, 2019 (Version 14)+  Last Update: Jun. 03, 2020 (Version 15) -  IMPORTANT: This syntax highlighting definition depends on-  JavaScript React (JSX), TypeScript and QML.+  IMPORTANT: This syntax highlighting definition depends on:+   * JavaScript React (JSX)+   * TypeScript+   * QML+   * CoffeeScript (embedded) -->-<language name="JavaScript" version="14" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"+<language name="JavaScript" version="16" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"           mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"           author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license=""> @@ -977,6 +980,7 @@       <item>index</item>       <item>innerHeight</item>       <item>innerWidth</item>+      <item>innerHTML</item>       <item>input</item>       <item>isMap</item>       <item>label</item>@@ -1748,11 +1752,13 @@        <!-- Find Objects Member and Functions -->       <context attribute="Normal Text" lineEndContext="#stay" name="FindObjectMembersAndFunctions">+        <!-- Tagged Template Literals -->+        <RegExpr attribute="Function Name" context="#stay" String="&identifier;(?=\s*`)" />         <!-- The order of these rules is important: 1) Functions. 2) Constants. 3) Objects. -->         <RegExpr attribute="Function Name" context="Function" String="(&identifier;)(?=\s*\()" lookAhead="true" />         <IncludeRules context="BuiltInConstants" />         <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />-        <DetectChar attribute="Symbol" context="Object Member" char="." />+        <DetectChar attribute="Symbol" context="Object Member" char="." lookAhead="true" />       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="Function">         <keyword attribute="Function (Built-in)" context="#pop" String="functions" />@@ -1770,11 +1776,14 @@       </context>       <!-- Used in common and built-in objects. -->       <context attribute="Normal Text" lineEndContext="#pop" name="DefaultMemberObject">+        <StringDetect attribute="Symbol" context="#pop" String="..." />         <DetectChar attribute="Symbol" context="#stay" char="." />          <!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. -->         <!-- Function -->         <RegExpr attribute="Function Name" context="#pop" String="&identifier;(?=\s*\()" />+        <!-- Tagged Template Literals -->+        <RegExpr context="#pop" String="&identifier;\s*`" lookAhead="true" />         <!-- Generic constants and properties -->         <keyword attribute="Object Property (Built-in)" context="#pop!NoRegExp" String="variable_property" />         <keyword attribute="Constant" context="#pop!NoRegExp" String="dom_constant" />@@ -1785,13 +1794,13 @@         <DetectSpaces />          <!-- Generic Functions -->-        <keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />+        <keyword attribute="Function Name" context="#pop!NoRegExp" String="functions" />       </context>        <!-- Strings -->       <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">-        <DetectChar attribute="Template" context="Template" char="`" />-        <StringDetect attribute="Template" context="RawTemplate" String="String.raw`" />+        <DetectChar attribute="Template" context="Template" char="`" beginRegion="Template" />+        <RegExpr attribute="Template" context="StartRawTemplate" String="\b(String)\s*(\.)\s*(raw)\s*`" lookAhead="true" />          <DetectChar attribute="String" context="String" char="&quot;" />         <DetectChar attribute="String" context="String SQ" char="'" />@@ -1823,24 +1832,36 @@       <context attribute="Template" lineEndContext="#stay" name="Template">         <IncludeRules context="Escape" />         <Detect2Chars attribute="Substitution" context="Substitution" char="$" char1="{" />-        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" endRegion="Template" />       </context>-      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">-        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />+      <context attribute="Normal Text" lineEndContext="#stay" name="Substitution">+        <DetectChar attribute="Substitution" char="}" context="#pop" />+        <IncludeRules context="Normal" />       </context>-      <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">-        <DetectChar attribute="Substitution" char="}" context="#pop"/>-        <IncludeRules context="Normal"/>++      <context attribute="Normal Text" lineEndContext="#pop" name="StartRawTemplate">+        <DetectSpaces />+        <DetectChar attribute="Template" context="#pop!RawTemplate" char="`" beginRegion="Template" />+        <StringDetect attribute="Built-in Objects" context="#stay" String="%1" dynamic="true" />+        <DetectChar attribute="Symbol" context="#stay" char="2" dynamic="true" />+        <StringDetect attribute="Function Name" context="#stay" String="%3" dynamic="true" />       </context>+      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" endRegion="Template" />+      </context>        <!-- Comments -->-      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">-        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />-        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />+      <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />+      </context>+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <StringDetect attribute="Region Marker" context="#pop!region_marker" String="//BEGIN" beginRegion="Region1" />+        <StringDetect attribute="Region Marker" context="#pop!region_marker" String="//END" endRegion="Region1" />          <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />-        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />+        <Detect2Chars attribute="Comment" context="#pop!Comment" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment">         <DetectSpaces />@@ -1853,7 +1874,7 @@         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />       </context>-      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" />+      <context attribute="Region Marker" lineEndContext="#pop" name="region_marker" />        <!-- Regular Expressions -->       <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
syntax/json.xml view
@@ -12,7 +12,7 @@  ** http://tools.ietf.org/html/rfc4627  *************************************************************************** -->-<language name="JSON" section="Markup" version="4" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">+<language name="JSON" section="Markup" version="5" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">   <highlighting>     <list name="Constants">       <item>null</item>
syntax/jsp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language version="5" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">+<language version="6" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">   <highlighting>      <list name="jsp-reserved-words">@@ -27,9 +27,9 @@         <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>         <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>-        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>+        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment" beginRegion="HtmlComment"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>         <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>@@ -63,6 +63,7 @@       </context>       <context name="JS comment close" attribute="Jsp Comment" lineEndContext="#stay">         <DetectSpaces/>+        <IncludeRules context="##Alerts" />         <DetectIdentifier/>         <StringDetect attribute="Normal Text" context="#pop#pop#pop" String="&lt;/script" endRegion="script" />       </context>@@ -70,8 +71,8 @@       <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>       </context>@@ -79,26 +80,29 @@       <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">-        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>+        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop" endRegion="JspComment"/>+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">         <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>@@ -106,8 +110,8 @@       </context>        <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>@@ -115,8 +119,8 @@       </context>        <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>         <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>@@ -125,34 +129,34 @@        <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">         <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">         <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">         <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">         <DetectChar char="'" attribute="Types" context="#pop#pop"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop" endRegion="JspScriptlet"/>         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>         <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>         <IncludeRules context="##Java" includeAttrib="true"/>@@ -167,14 +171,14 @@       <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>       </context>        <context name="Html Value" attribute="Types" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>@@ -184,24 +188,24 @@       </context>        <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>       </context>        <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>         <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>       </context>        <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>@@ -209,10 +213,12 @@       </context>        <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>-        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>+        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop" endRegion="HtmlComment"/>+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>      </contexts>@@ -238,8 +244,9 @@    <general>     <comments>-      <comment name="multiLine" start="&lt;%-- " end=" --%&gt;" />+      <comment name="multiLine" start="&lt;%--" end="--%&gt;" region="JspComment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/julia.xml view
@@ -33,7 +33,7 @@   <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?"> ]> -<language name="Julia" section="Sources" version="7" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">+<language name="Julia" section="Sources" version="8" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">    <highlighting>     <list name="block_begin">@@ -697,7 +697,7 @@   <general>     <comments>       <comment name="singleLine" start="#" />-      <comment name="multiLine" start="#=" end="=#" />+      <comment name="multiLine" start="#=" end="=#" region="block-comment" />     </comments>     <keywords casesensitive="1" weakDeliminator=""/>   </general>
syntax/kotlin.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- kotlin language syntax http://kotlinlang.org -->-<language name="Kotlin" version="5" kateversion="5.0" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">+<language name="Kotlin" version="6" kateversion="5.0" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">     <highlighting>         <list name="keywords">             <item>package</item>@@ -260,11 +260,15 @@             </context>              <context attribute="Comment" lineEndContext="#pop" name="CommentSingleLine">-                <StringDetect attribute="TODO" context="#stay" String="TODO" />+                <DetectSpaces />+                <IncludeRules context="##Alerts"/>+                <IncludeRules context="##Modelines"/>             </context>             <context attribute="Comment" lineEndContext="#stay" name="CommentMultiline">-                <StringDetect attribute="TODO" context="#stay" String="TODO" />                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+                <DetectSpaces />+                <IncludeRules context="##Alerts"/>+                <IncludeRules context="##Modelines"/>             </context>          </contexts>@@ -291,8 +295,9 @@     <general>         <comments>             <comment name="singleLine" start="//"/>-            <comment name="multiLine" start="/*" end="*/"/>+            <comment name="multiLine" start="/*" end="*/" region="Comment"/>         </comments>         <keywords casesensitive="1"/>     </general> </language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
syntax/latex.xml view
@@ -3,9 +3,8 @@ [     <!ENTITY bullet "&#xd7;">     <!ENTITY envname "[a-zA-Z]+\*?">-    <!ENTITY regionmarker "&#037;\s*(?:BEGIN|END)"> ]>-<language name="LaTeX" version="11" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >+<language name="LaTeX" version="15" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >   <highlighting>     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".          Using a DetectChar rule with lookAhead to detect "\" at the beginning@@ -284,14 +283,13 @@         <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>         <DetectChar char="$" attribute="Math" context="MathModeTex"/>         <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>-        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>       </context>        <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">         <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>-        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment" endRegion="block"/>+        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment"/>         <keyword String="Label" attribute="Structure" context="#pop!Label"/>         <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>         <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>@@ -318,7 +316,7 @@         <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>         <DetectChar char="}" attribute="Normal Text" context="#pop"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>       <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>@@ -326,12 +324,12 @@         <Detect2Chars char="\" char1="(" attribute="Sectioning Math" context="SectioningMathMode" />         <DetectChar char="\" attribute="Sectioning Macro" context="SectioningContrSeq"/>         <DetectChar char="$" attribute="Sectioning Math" context="SectioningMathMode" />-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>       </context>       <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop">         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>-        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />+        <RegExpr String="[a-zA-Z]+(?:\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />       </context>       <context name="SectioningMathMode" attribute="Sectioning Math" lineEndContext="#stay">         <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />@@ -339,7 +337,7 @@         <Detect2Chars char="\" char1=")" attribute="Sectioning Math" context="#pop" />         <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />         <DetectChar char="\" attribute="Sectioning Macro Mathmode" context="SectioningMathContrSeq"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>       </context>       <context name="SectioningMathContrSeq" attribute="Sectioning Macro Mathmode" lineEndContext="#pop">@@ -353,7 +351,7 @@         <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>         <DetectChar char="}" attribute="Normal Text" context="#pop"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>       <context name="FootnotingInside" attribute="Normal Text" lineEndContext="#stay">         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>@@ -365,7 +363,7 @@       <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">         <DetectSpaces/>         <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>-        <RegExpr String="(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>+        <RegExpr String="(?:\[\d\](?:\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>         <DetectChar char="}" attribute="Error" context="#pop"/>       </context> @@ -381,7 +379,7 @@         <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>         <DetectChar char="}" attribute="Normal Text" context="#pop"/>         <RegExpr String="\\." attribute="Normal Text" context="#stay"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>        <!-- LaTeX command in text mode -->@@ -390,7 +388,7 @@         <keyword String="Lstinline" attribute="Macro" context="Lstinline"/>         <keyword String="MintParam" attribute="Macro" context="MintParam"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>-        <RegExpr String="[a-zA-Z@]+(\+?|\*{0,3})|." attribute="Macro" context="#pop" />+        <RegExpr String="[a-zA-Z@]+(?:\+?|\*{0,3})|." attribute="Macro" context="#pop" />       </context>        <!-- \mint command with parameter-->@@ -402,7 +400,7 @@        <!-- verb command -->       <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >-        <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="VerbEnd" />+        <RegExpr String="(.)" attribute="Normal Text" context="VerbEnd" />       </context>       <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />@@ -415,7 +413,7 @@         <DetectSpaces/>         <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>         <DetectChar char="{" attribute="Normal Text" context="LstinlineParameter"/>-        <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="LstinlineEnd" />+        <RegExpr String="(.)" attribute="Normal Text" context="LstinlineEnd" />       </context>       <context name="LstinlineEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >         <!-- TODO DetectChar segfault -->@@ -437,10 +435,10 @@        <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">         <DetectSpaces/>-        <DetectChar char="(" attribute="Math" context="MathModeTex" />+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>         <DetectChar char="$" attribute="Math" context="MathModeTex" />-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>         <DetectChar char="]" attribute="Normal Text" context="#pop"/>       </context>@@ -461,10 +459,10 @@        <context name="FancyLabelParameter" attribute="Environment" lineEndContext="#stay">         <DetectSpaces/>-        <DetectChar char="(" attribute="Math" context="MathModeTex" />+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>         <DetectChar char="$" attribute="Math" context="MathModeTex" />-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>         <DetectChar char="}" attribute="Normal Text" context="#pop"/>         <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>@@ -479,7 +477,7 @@         <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>         <DetectChar char="$" attribute="Math" context="MathModeTex" />-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>         <DetectChar char=")" attribute="Normal Text" context="#pop"/>       </context>@@ -492,10 +490,10 @@        <context name="SpecialCommandParameterOption" attribute="Option Text" lineEndContext="#stay">         <DetectSpaces/>-        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeTex" />+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>         <DetectChar char="$" attribute="Math" context="MathModeTex" />-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>         <DetectChar char="}" attribute="Normal Text" context="#pop"/>         <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>@@ -629,17 +627,17 @@       <context name="ListingsEnvParam" attribute="Normal Text" lineEndContext="#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop!UnknownHighlighting">         <DetectSpaces/>         <DetectChar char="[" attribute="Normal Text" context="#pop!ListingsEnvParamInside"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>       <context name="ListingsEnvParamInside" attribute="Normal Text" lineEndContext="#stay">         <DetectIdentifier/>         <RegExpr String="\s*language\s*=\s*(?=[^],])" attribute="Normal Text" context="HighlightingSelector"/>         <DetectChar char="]" attribute="Normal Text" context="ListingsEnvParamEnd"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>       <context name="ListingsEnvParamEnd" attribute="Normal Text" lineEndContext="#pop#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop#pop!UnknownHighlighting">         <DetectSpaces/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>        <!-- environment type 5: minted environment with optional and HL switching -->@@ -651,19 +649,19 @@         <DetectSpaces/>         <DetectChar char="[" attribute="Normal Text" context="#pop!MintedEnvParamInside"/>         <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>       <context name="MintedEnvParamInside" attribute="Normal Text" lineEndContext="#stay">         <DetectSpaces/>         <DetectIdentifier/>         <DetectChar char="]" attribute="Normal Text" context="#pop!MintedEnvLang"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>       </context>       <context name="MintedEnvLang" attribute="Normal Text" lineEndContext="#stay">         <DetectSpaces/>         <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>       </context>        <!-- parse verbatim text for lstinline and minted -->@@ -671,7 +669,7 @@         <DetectSpaces/>         <DetectIdentifier/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>-        <RegExpr String="\\end(?=\s*\{(lstlisting|minted)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>+        <RegExpr String="\\end(?=\s*\{(?:lstlisting|minted)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>       </context>       <context name="UnknownHighlightingEnd" attribute="Environment" lineEndContext="#stay">         <DetectSpaces/>@@ -691,7 +689,7 @@       </context>        <context name="HighlightingCommon" attribute="Normal Text" lineEndContext="#stay">-        <RegExpr String="\\end\s*\{(lstlisting|minted)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>+        <RegExpr String="\\end\s*\{(?:lstlisting|minted)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>       </context>        <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#stay">@@ -773,13 +771,12 @@         <DetectIdentifier/>         <DetectChar char="\" attribute="Math" context="BackslashMathModeEnv" lookAhead="true"/>         <DetectChar char="$" attribute="Error" context="#stay"/>-        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>       </context>       <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">         <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironmentInMathMode" beginRegion="block"/>-        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd" endRegion="block"/>+        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd"/>         <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>         <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>         <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>@@ -804,7 +801,7 @@         <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>         <!-- keywords in MathEnvParam and MathEnv. Do not use keyword to avoid autocomplete -->-        <RegExpr String="(equation|IEEEeqnarray(box)?|([BVvbp]|small)matrix|(fl)?align|x{0,2}alignat|cases|displaymath|gather|math|multline|(sub)?eqnarray)(?=[^a-zA-Z]|$)\*?" attribute="Error" context="#pop"/>+        <RegExpr String="(?:equation|IEEEeqnarray(?:box)?|(?:[BVvbp]|small)matrix|(?:fl)?align|x{0,2}alignat|cases|displaymath|gather|math|multline|(?:sub)?eqnarray)(?=[^a-zA-Z]|$)\*?" attribute="Error" context="#pop"/>         <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>         <RegExpr String="." attribute="Error" context="#pop"/>       </context>@@ -899,13 +896,12 @@         <DetectSpaces/>         <DetectIdentifier/>         <DetectChar char="\" attribute="Math" context="BackslashMathModeCommon" lookAhead="true"/>-        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>       </context>       <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">         <keyword String="beginEnv" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block"/>-        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd" endRegion="block"/>+        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd"/>         <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />         <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>       </context>@@ -925,7 +921,7 @@         <RegExpr String="." attribute="Error" context="#pop"/>       </context>       <context name="MathEnvironmentEndInside" attribute="Environment" lineEndContext="#stay">-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>         <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>         <RegExpr String="&envname;" attribute="Environment" context="#stay"/>         <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>@@ -951,7 +947,7 @@         <RangeDetect char="$" char1="$" attribute="Math" context="#stay"/>         <DetectChar char="{" attribute="Normal Text" context="MathModeTextInside" lookAhead="true"/>         <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>-        <DetectChar char="%" attribute="Comment" context="Comment"/>+        <IncludeRules context="FindComments"/>         <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>       </context> @@ -964,11 +960,17 @@         <DetectChar char="\" attribute="Comment" context="#pop"/>       </context> -     <!-- comment -->+      <!-- comment -->+      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">+        <RegExpr String="&#037;+\s*BEGIN\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" beginRegion="region-marker"/>+        <RegExpr String="&#037;+\s*END\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" endRegion="region-marker"/>+        <DetectChar char="%" attribute="Comment" context="Comment"/>+      </context>       <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>       <context name="Comment" attribute="Comment" lineEndContext="#pop">         <DetectSpaces/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier/>         <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>       </context>@@ -1129,3 +1131,4 @@     </encodings>   </spellchecking> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/lex.xml view
@@ -20,7 +20,7 @@      ======================================================================== -->-<language name="Lex/Flex" version="2" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">+<language name="Lex/Flex" version="3" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">  <highlighting> <contexts>@@ -31,7 +31,7 @@     <IncludeRules context="Detect C" />     <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="definitions" />     <DetectChar attribute="Directive" context="Percent Command" char="%" />-    <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0"/>+    <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0" beginRegion="BlockComment"/>     <RegExpr attribute="Definition" context="Definition RegExpr" String="[A-Za-z_]\w*\s+" column="0"/>   </context>   <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">@@ -45,7 +45,10 @@   <context name="Percent Command" attribute="Directive" lineEndContext="#pop">   </context>   <context name="Comment" attribute="Comment" lineEndContext="#stay">-    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />+    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>+    <DetectSpaces />+    <IncludeRules context="##Alerts" />+    <IncludeRules context="##Modelines" />   </context>    <context name="Definition RegExpr" attribute="RegExpr" lineEndContext="#pop">@@ -142,3 +145,4 @@   </comments> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/lilypond.xml view
@@ -56,7 +56,7 @@ ]> <language name="LilyPond" section="Other"           style="lilypond" indenter="lilypond"-          version="6" kateversion="3.3"+          version="7" kateversion="3.3"           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"           mimetype="text/x-lilypond"           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">@@ -820,12 +820,16 @@       </context>        <context name="commentline" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <context name="commentblock" attribute="Comment" lineEndContext="#stay">         <Detect2Chars char="%" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <context name="string" attribute="Quoted Text" lineEndContext="#stay">@@ -891,11 +895,13 @@       </context>        <context name="schemecommentline" attribute="Scheme Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts"/>       </context>        <context name="schemecommentblock" attribute="Scheme Comment" lineEndContext="#stay">         <Detect2Chars char="!" char1="#" attribute="Scheme Comment" context="#pop" endRegion="schemecomment"/>+        <DetectSpaces />         <IncludeRules context="##Alerts"/>       </context> 
syntax/literate-curry.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Literate Curry" version="2" kateversion="3.4"+<language name="Literate Curry" version="3" kateversion="3.4"           section="Sources" extensions="*.lcurry" mimetype="text/x-curry"           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"           indenter="haskell">@@ -17,7 +17,7 @@     </context>      <context attribute="Text" lineEndContext="#pop" name="Code">-      <RegExpr attribute="Comment" context="multiline" String="\{-[^#]" />+      <RegExpr attribute="Comment" context="multiline" String="\{-[^#]" beginRegion="Comment" />       <IncludeRules context="##Curry" />     </context> @@ -29,7 +29,9 @@      <!-- Handle comments in presence of bird tracks -->     <context attribute="Comment" lineEndContext="lineend" name="multiline" >-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />+      <DetectSpaces />+      <IncludeRules context="##Alerts" />     </context>      <context attribute="Text" lineEndContext="#stay" name="lineend">@@ -47,4 +49,9 @@     <itemData name="Comment"   defStyleNum="dsComment" />   </itemDatas>   </highlighting>+  <general>+    <comments>+      <comment name="multiLine" start="{-" end="-}" region="Comment"/>+    </comments>+  </general> </language>
syntax/literate-haskell.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Literate Haskell" version="5" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">+<language name="Literate Haskell" version="6" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">   <highlighting>   <contexts>     <context attribute="Text" lineEndContext="#stay" name="text">@@ -10,7 +10,7 @@       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;spec&#125;"/>     </context>     <context attribute="Text" lineEndContext="#pop" name="normal">-      <RegExpr attribute="Comment" context="comments'" String="\{-[^#]" />+      <RegExpr attribute="Comment" context="comments'" String="\{-[^#]" beginRegion="Comment" />       <IncludeRules context="##Haskell" />     </context>     <context attribute="Text" lineEndContext="#stay" name="normals">@@ -19,7 +19,9 @@       <IncludeRules context="##Haskell" />     </context>     <context attribute="Comment" lineEndContext="uncomments" name="comments'" >-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />+      <DetectSpaces />+      <IncludeRules context="##Alerts" />     </context>     <context attribute="Text" lineEndContext="#stay" name="uncomments">       <DetectChar attribute="BirdTrack" context="recomments" char="&gt;" column="0"/>@@ -35,4 +37,9 @@     <itemData name="Comment"          defStyleNum="dsComment" />   </itemDatas>   </highlighting>+  <general>+    <comments>+      <comment name="multiLine" start="{-" end="-}" region="Comment"/>+    </comments>+  </general> </language>
syntax/llvm.xml view
@@ -1,189 +1,189 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language name="LLVM" section="Sources"-          version="1.00" kateversion="3.4.4"+          version="3" kateversion="5.0"           extensions="*.ll"           mimetype=""           author="LLVM Team"           license="LLVM Release License">   <highlighting>     <list name="keywords">-      <item> begin </item>-      <item> end </item>-      <item> true </item>-      <item> false </item>-      <item> declare </item>-      <item> define </item>-      <item> global </item>-      <item> constant </item>-      <item> gc </item>-      <item> module </item>-      <item> asm </item>-      <item> target </item>-      <item> datalayout </item>-      <item> null </item>-      <item> undef </item>-      <item> blockaddress </item>-      <item> sideeffect </item>-      <item> alignstack </item>-      <item> to </item>-      <item> unwind </item>-      <item> nuw </item>-      <item> nsw </item>-      <item> inbounds </item>-      <item> tail </item>-      <item> triple </item>-      <item> type </item>-      <item> align </item>-      <item> alias </item>+      <item>begin</item>+      <item>end</item>+      <item>true</item>+      <item>false</item>+      <item>declare</item>+      <item>define</item>+      <item>global</item>+      <item>constant</item>+      <item>gc</item>+      <item>module</item>+      <item>asm</item>+      <item>target</item>+      <item>datalayout</item>+      <item>null</item>+      <item>undef</item>+      <item>blockaddress</item>+      <item>sideeffect</item>+      <item>alignstack</item>+      <item>to</item>+      <item>unwind</item>+      <item>nuw</item>+      <item>nsw</item>+      <item>inbounds</item>+      <item>tail</item>+      <item>triple</item>+      <item>type</item>+      <item>align</item>+      <item>alias</item>     </list>     <list name="linkage-types">-      <item> private </item>-      <item> internal </item>-      <item> available_externally </item>-      <item> linkonce </item>-      <item> weak </item>-      <item> common </item>-      <item> appending </item>-      <item> extern_weak </item>-      <item> linkonce_odr </item>-      <item> weak_odr </item>-      <item> dllimport </item>-      <item> dllexport </item>+      <item>private</item>+      <item>internal</item>+      <item>available_externally</item>+      <item>linkonce</item>+      <item>weak</item>+      <item>common</item>+      <item>appending</item>+      <item>extern_weak</item>+      <item>linkonce_odr</item>+      <item>weak_odr</item>+      <item>dllimport</item>+      <item>dllexport</item>     </list>     <list name="calling-conventions">-      <item> ccc </item>-      <item> fastcc </item>-      <item> coldcc </item>-      <item> cc </item>+      <item>ccc</item>+      <item>fastcc</item>+      <item>coldcc</item>+      <item>cc</item>     </list>     <list name="visibility-styles">-      <item> default </item>-      <item> hidden </item>-      <item> protected </item>+      <item>default</item>+      <item>hidden</item>+      <item>protected</item>     </list>     <list name="parameter-attributes">-      <item> zeroext </item>-      <item> signext </item>-      <item> inreg </item>-      <item> byval </item>-      <item> sret </item>-      <item> noalias </item>-      <item> nocapture </item>-      <item> nest </item>+      <item>zeroext</item>+      <item>signext</item>+      <item>inreg</item>+      <item>byval</item>+      <item>sret</item>+      <item>noalias</item>+      <item>nocapture</item>+      <item>nest</item>     </list>     <list name="function-attributes">-      <item> alignstack </item>-      <item> alwaysinline </item>-      <item> inlinehint </item>-      <item> naked </item>-      <item> noimplicitfloat </item>-      <item> noinline </item>-      <item> noredzone </item>-      <item> noreturn </item>-      <item> nounwind </item>-      <item> optnone </item>-      <item> optsize </item>-      <item> readnone </item>-      <item> readonly </item>-      <item> ssp </item>-      <item> sspreq </item>-      <item> sspstrong </item>+      <item>alignstack</item>+      <item>alwaysinline</item>+      <item>inlinehint</item>+      <item>naked</item>+      <item>noimplicitfloat</item>+      <item>noinline</item>+      <item>noredzone</item>+      <item>noreturn</item>+      <item>nounwind</item>+      <item>optnone</item>+      <item>optsize</item>+      <item>readnone</item>+      <item>readonly</item>+      <item>ssp</item>+      <item>sspreq</item>+      <item>sspstrong</item>     </list>     <list name="types">-      <item> float </item>-      <item> double </item>-      <item> fp128 </item>-      <item> x86_fp80 </item>-      <item> ppc_fp128 </item>-      <item> x86mmx </item>-      <item> void </item>-      <item> label </item>-      <item> metadata </item>-      <item> opaque </item>+      <item>float</item>+      <item>double</item>+      <item>fp128</item>+      <item>x86_fp80</item>+      <item>ppc_fp128</item>+      <item>x86mmx</item>+      <item>void</item>+      <item>label</item>+      <item>metadata</item>+      <item>opaque</item>     </list>     <list name="intrinsic-global-variables">-      <item> llvm.used </item>-      <item> llvm.compiler.used </item>-      <item> llvm.global_ctors </item>-      <item> llvm.global_dtors </item>+      <item>llvm.used</item>+      <item>llvm.compiler.used</item>+      <item>llvm.global_ctors</item>+      <item>llvm.global_dtors</item>     </list>     <list name="instructions">-      <item> ret </item>-      <item> br </item>-      <item> switch </item>-      <item> indirectbr </item>-      <item> invoke </item>-      <item> unwind </item>-      <item> unreachable </item>-      <item> add </item>-      <item> fadd </item>-      <item> sub </item>-      <item> fsub </item>-      <item> mul </item>-      <item> fmul </item>-      <item> udiv </item>-      <item> sdiv </item>-      <item> fdiv </item>-      <item> urem </item>-      <item> srem </item>-      <item> frem </item>-      <item> shl </item>-      <item> lshr </item>-      <item> ashr </item>-      <item> and </item>-      <item> or </item>-      <item> xor </item>-      <item> extractelement </item>-      <item> insertelement </item>-      <item> shufflevector </item>-      <item> extractvalue </item>-      <item> insertvalue </item>-      <item> alloca </item>-      <item> load </item>-      <item> store </item>-      <item> getelementptr </item>-      <item> trunc </item>-      <item> zext </item>-      <item> sext </item>-      <item> fptrunc </item>-      <item> fpext </item>-      <item> fptoui </item>-      <item> fptosi </item>-      <item> uitofp </item>-      <item> sitofp </item>-      <item> ptrtoint </item>-      <item> inttoptr </item>-      <item> bitcast </item>-      <item> addrspacecast </item>-      <item> icmp </item>-      <item> fcmp </item>-      <item> phi </item>-      <item> select </item>-      <item> call </item>-      <item> va_arg </item>+      <item>ret</item>+      <item>br</item>+      <item>switch</item>+      <item>indirectbr</item>+      <item>invoke</item>+      <item>unwind</item>+      <item>unreachable</item>+      <item>add</item>+      <item>fadd</item>+      <item>sub</item>+      <item>fsub</item>+      <item>mul</item>+      <item>fmul</item>+      <item>udiv</item>+      <item>sdiv</item>+      <item>fdiv</item>+      <item>urem</item>+      <item>srem</item>+      <item>frem</item>+      <item>shl</item>+      <item>lshr</item>+      <item>ashr</item>+      <item>and</item>+      <item>or</item>+      <item>xor</item>+      <item>extractelement</item>+      <item>insertelement</item>+      <item>shufflevector</item>+      <item>extractvalue</item>+      <item>insertvalue</item>+      <item>alloca</item>+      <item>load</item>+      <item>store</item>+      <item>getelementptr</item>+      <item>trunc</item>+      <item>zext</item>+      <item>sext</item>+      <item>fptrunc</item>+      <item>fpext</item>+      <item>fptoui</item>+      <item>fptosi</item>+      <item>uitofp</item>+      <item>sitofp</item>+      <item>ptrtoint</item>+      <item>inttoptr</item>+      <item>bitcast</item>+      <item>addrspacecast</item>+      <item>icmp</item>+      <item>fcmp</item>+      <item>phi</item>+      <item>select</item>+      <item>call</item>+      <item>va_arg</item>     </list>     <list name="conditions">-      <item> eq </item>-      <item> ne </item>-      <item> ugt </item>-      <item> uge </item>-      <item> ult </item>-      <item> ule </item>-      <item> sgt </item>-      <item> sge </item>-      <item> slt </item>-      <item> sle </item>-      <item> oeq </item>-      <item> ogt </item>-      <item> oge </item>-      <item> olt </item>-      <item> ole </item>-      <item> one </item>-      <item> ord </item>-      <item> ueq </item>-      <item> une </item>-      <item> uno </item>+      <item>eq</item>+      <item>ne</item>+      <item>ugt</item>+      <item>uge</item>+      <item>ult</item>+      <item>ule</item>+      <item>sgt</item>+      <item>sge</item>+      <item>slt</item>+      <item>sle</item>+      <item>oeq</item>+      <item>ogt</item>+      <item>oge</item>+      <item>olt</item>+      <item>ole</item>+      <item>one</item>+      <item>ord</item>+      <item>ueq</item>+      <item>une</item>+      <item>uno</item>     </list>     <contexts>       <context name="llvm" attribute="Normal Text" lineEndContext="#stay">@@ -227,6 +227,7 @@         <DetectSpaces />         <!-- TODO: Add FileCheck syntax highlighting -->         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context>     </contexts>@@ -235,11 +236,8 @@       <itemData name="Keyword" defStyleNum="dsKeyword" />       <itemData name="Data Type" defStyleNum="dsDataType" />       <itemData name="Int" defStyleNum="dsDecVal" />-      <itemData name="Hex" defStyleNum="dsBaseN" />-      <itemData name="Float" defStyleNum="dsFloat" />       <itemData name="String" defStyleNum="dsString" />       <itemData name="Comment" defStyleNum="dsComment" />-      <itemData name="Function" defStyleNum="dsFunction" />       <itemData name="Symbol" defStyleNum="dsFunction" />     </itemDatas>   </highlighting>
syntax/lua.xml view
@@ -48,7 +48,7 @@     - NOTE, FIXME, TODO alerts added on comments     - improved highlighting -->-<language name="Lua" version="7" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">+<language name="Lua" version="12" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">   <highlighting>     <list name="keywords">       <item>and</item>@@ -149,7 +149,7 @@       <item>coroutine.create</item>       <item>coroutine.isyieldable</item>       <item>coroutine.resume</item>-      <item>coroutine.kill</item>+      <item>coroutine.close</item>       <item>coroutine.running</item>       <item>coroutine.status</item>       <item>coroutine.wrap</item>@@ -423,6 +423,8 @@       <item>__call</item>        <item>__tostring</item>+      <item>__name</item>+      <item>__close</item>       <item>__pairs</item>       <!-- setmetatable -->       <item>__metatable</item>@@ -458,18 +460,17 @@      <contexts>       <context name="Shebang"       attribute="Comment" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">-        <Detect2Chars attribute="Comment" context="Comment" char="#" char1="!" column="0"/>+        <Detect2Chars attribute="Comment" context="ShebangLine" char="#" char1="!" column="0"/>       </context> -      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">-      </context>+      <context name="ShebangLine"   attribute="Comment"     lineEndContext="#pop!Normal" />        <context name="Normal"        attribute="Normal Text" lineEndContext="#stay">         <DetectSpaces />         <keyword      attribute="Deprecated" context="#stay"       String="deprecated" />-        <IncludeRules context="##DoxygenLua" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/> -        <RegExpr      attribute="RawStrings" context="String_block"  String="\[(=*)\[" dynamic="true" />+        <RegExpr      attribute="RawStrings" context="String_block"  String="\[(=*)\[" />         <DetectChar   attribute="Strings"  context="String_single" char="'"/>         <DetectChar   attribute="Strings"  context="String_double" char="&quot;"/>         <keyword      attribute="BFunc"    context="#stay"         String="basefunc"/>@@ -477,6 +478,7 @@         <keyword      attribute="BVar"     context="#stay"         String="basevar"/>          <WordDetect   attribute="Keyword"  context="Function" beginRegion="chunk" String="function" />+        <WordDetect   attribute="Keyword"  context="Local" String="local" />         <keyword      attribute="Keyword"  context="#stay" String="keywords" />         <keyword      attribute="Control"  context="StartControl" beginRegion="chunk" String="startcontrol" />         <keyword      attribute="Control"  context="#stay" String="control" />@@ -484,11 +486,11 @@         <DetectChar   attribute="Symbols"  context="#stay" beginRegion="table" char="{" />         <DetectChar   attribute="Symbols"  context="#stay" endRegion="table"   char="}" /> -        <RegExpr      attribute="Numbers"  context="#stay" String="(?:0[xX](?:\.&HEX;+|&HEX;+\.?&HEX;*)(?:[pP][-+]?\d*)?|(?:\.\d+|\d+\.?\d*)(?:[eE][-+]?\d*)?)"/>+        <RegExpr      attribute="Normal Text" context="#stay" String="[a-zA-Z_][a-zA-Z0-9_]*(?=\s*([({'&quot;]|\[\[|\[=))" />+        <RegExpr      attribute="Constant" context="#stay" String="[A-Z_][A-Z0-9_]*\b" />+        <DetectIdentifier attribute="Variable" context="#stay" /> -        <RegExpr      attribute="Normal Text" context="#stay" String="\b[a-zA-Z_][a-zA-Z0-9_]*(?=\s*([({'&quot;]|\[\[|\[=))" />-        <RegExpr      attribute="Constant" context="#stay" String="\b[A-Z_][A-Z0-9_]*\b" />-        <RegExpr      attribute="Variable" context="#stay" String="\b[a-zA-Z_][a-zA-Z0-9_]*\b" />+        <RegExpr      attribute="Numbers"  context="NumberSuffix" String="(?:0[xX](?:\.&HEX;+|&HEX;+\.?&HEX;*)(?:[pP][-+]?\d*)?|(?:\.\d+|\d+\.?\d*)(?:[eE][-+]?\d*)?)"/>          <Detect2Chars attribute="Error"    context="#stay" char="!" char1="="/>         <Detect2Chars attribute="Error"    context="#stay" char="-" char1="="/>@@ -498,12 +500,55 @@         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />       </context> +      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+        <IncludeRules context="##DoxygenLua" />+        <RegExpr attribute="Comment" context="#pop!BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" />+        <Detect2Chars attribute="Comment" context="#pop!Comment" char="-" char1="-" />+      </context>++      <context name="BlockComment" attribute="Comment" lineEndContext="#stay" dynamic="true">+        <RegExpr attribute="Comment" context="#stay" String="[^\]]*" />+        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>++      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>+       <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">         <keyword      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elsecontrol" />         <keyword      attribute="Control"  context="#pop"  endRegion="chunk"   String="endcontrol" />         <IncludeRules context="Normal" />       </context> +      <context name="NumberSuffix" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">+        <!-- some syntax like a=32print(a) are valid, but ugly -->+        <DetectIdentifier attribute="Error" context="#pop" />+      </context>++      <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>+        <RegExpr          attribute="Constant" context="LocalVariable" String="\b[A-Z_][A-Z0-9_]*\b" />+        <DetectIdentifier attribute="Variable" context="LocalVariable" />+      </context>++      <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>+        <DetectChar   attribute="Symbols"   context="#pop" char="," />+        <DetectChar   attribute="Attribute" context="Attribute" char="&lt;" lookAhead="true" />+      </context>++      <context name="Attribute" attribute="Attribute"  lineEndContext="#pop">+        <RegExpr      attribute="Attribute" context="#pop" String="&lt;\s*(?:close|const)\s*>" />+        <RegExpr      attribute="Error"     context="#pop" String="&lt;\s*\w*\s*>?" />+      </context>+       <context name="Function" attribute="Normal Text"      lineEndContext="#stay">         <WordDetect   attribute="Keyword"  context="#pop"  endRegion="chunk"   String="end" />         <IncludeRules context="Normal" />@@ -556,14 +601,15 @@       <itemData name="RawStrings"      defStyleNum="dsVerbatimString"/>       <itemData name="Symbols"         defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Variable"        defStyleNum="dsNormal" /> <!-- JGM -->+      <itemData name="Attribute"       defStyleNum="dsAttribute" spellChecking="false"/>     </itemDatas>   </highlighting>   <general>     <comments>       <comment name="singleLine" start="--" />-      <comment name="multiLine" start="--[[" end="]]" />+      <comment name="multiLine" start="--[[" end="]]" region="BlockComment" />     </comments>-    <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'&quot;"/>+    <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'&quot;#"/>   </general> </language> <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
syntax/m4.xml view
@@ -38,7 +38,7 @@   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  -->-<language name="GNU M4" version="2" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">+<language name="GNU M4" version="4" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">   <highlighting>     <list name="optbuiltins">       <item>__gnu__</item>@@ -161,15 +161,20 @@         <RegExpr attribute="Normal Text" String="[a-zA-Z_]\w+" context="#stay"/>         <RegExpr attribute="Special arguments to macros" String="\$([1-9]\d*|0|\#|\*|\@|\{([1-9]\d*|0)\})" context="#stay"/>         <RegExpr attribute="Int" String="([1-9]\d*|0|0x[0-9abcdefABCDEF]+)" context="#stay"/>-        <RegExpr attribute="Comment" String="#.*$" context="#stay"/>+        <DetectChar attribute="Comment" char="#" context="Comment"/>         <DetectChar attribute="Commas" char="," context="#stay"/>         <DetectChar attribute="Operators" char="(" context="inparenthesis" beginRegion="parenthesis"/>         <DetectChar attribute="Operators" char=")" context="#pop" endRegion="parenthesis"/>-        <RegExpr attribute="Operators" String="[+*/%\|=\!&lt;&gt;!^&amp;~-]" context="#stay"/>+        <AnyChar attribute="Operators" String="+*/%|=!&lt;&gt;^&amp;~-" context="#stay"/>       </context>       <context name="inparenthesis" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">         <IncludeRules context="Normal Text" />       </context>+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>     </contexts>     <itemDatas>       <itemData name="Builtins" defStyleNum="dsKeyword"/>@@ -191,3 +196,4 @@     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/makefile.xml view
@@ -10,7 +10,7 @@ <!-- v4 by Alex Richardson <arichardson.kde@gmail.com>      added bmake support --> <language name="Makefile" section="Other"-          version="7" kateversion="3.4"+          version="9" kateversion="3.4"           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"           mimetype="text/x-makefile" priority="11"           author="Per Wigren (wigren@home.se)" license="">@@ -185,8 +185,8 @@         <keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/>         <keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/> -        <RegExpr attribute="Section"  context="prereq" String="^\.[^.][^:]*:"/>-        <RegExpr attribute="Target"   context="prereq" String="^[^:]*:"/>+        <RegExpr attribute="Section"  context="prereq" String="^\.[^.][^:]*:" column="0"/>+        <RegExpr attribute="Target"   context="prereq" String="^[^:]*:" column="0"/>         <DetectIdentifier/>         <DetectChar attribute="String" context="string&quot;" char="&quot;"/>         <DetectChar attribute="String" context="string'" char="'"/>@@ -203,10 +203,16 @@         <DetectChar attribute="Comment" context="Comment" char="#"/>       </context> -      <context name="gmake_else" attribute="Error" lineEndContext="#pop">+      <context name="gmake_else" attribute="Normal" lineEndContext="#pop">         <DetectSpaces attribute="Normal"/>         <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay"/>         <IncludeRules context="strings_and_vars"/>+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>+        <!-- NOTE: Allow highlighting any variable name (see bug #417379), for example:+                 else ifdef foo+                 else ifeq (bar, foo)+        -->       </context>        <context name="bmake_include" attribute="Normal" lineEndContext="#pop">@@ -341,7 +347,8 @@         <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/>         <DetectChar attribute="Operator" context="dollar" char="$"/>         <DetectSpaces attribute="Error" context="#stay"/>-        <AnyChar attribute="Error" context="#stay" String="=#:"/>+        <DetectChar attribute="RealOperator" context="SubstitutionRefs" char=":"/>+        <AnyChar attribute="Error" context="#stay" String="=#"/>       </context>        <context name="callVar{" attribute="Variable" lineEndContext="#stay">@@ -456,6 +463,16 @@         <DetectChar attribute="String" context="string'" char="'"/>       </context> +      <!-- $(var:pattern=replacement) -->+      <context name="SubstitutionRefs" attribute="VarModifier" lineEndContext="#stay">+        <DetectChar attribute="RealOperator" context="#pop!SubstitutionRefsReplacement" char="="/>+        <IncludeRules context="SubstitutionRefsReplacement"/>+      </context>+      <context name="SubstitutionRefsReplacement" attribute="VarModifier" lineEndContext="#stay">+        <DetectChar attribute="Operator" char=")" context="#pop#pop#pop#pop"/>+        <DetectChar attribute="Operator" context="dollar" char="$"/>+      </context>+       <context attribute="Comment" lineEndContext="#pop" name="Comment">         <LineContinue attribute="Comment" context="#stay" />         <IncludeRules context="##Alerts" />@@ -495,4 +512,4 @@     <keywords casesensitive="1" weakDeliminator = ".-"/>   </general> </language>-<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->+<!-- kate: syntax XML; space-indent on; indent-width 2; replace-tabs on; -->
syntax/markdown.xml view
@@ -40,10 +40,12 @@ <!-- emphasis text --> <!ENTITY emphasisregex_ast "\*(?:&contentregex_ast;\*|\*{1,4}&contentregex_ast;\*(?!\*))"> <!ENTITY emphasisregex_und "\b_(?:&contentregex_und;_+|_{1,4}&contentregex_und;_)\b">-<!-- links -->+<!-- links.+     Keep in sync with reStructuredText (rest) --> <!ENTITY startlink "(?:https?|ftp)\://"> <!ENTITY link "&startlink;[^&quot;&gt;\s]+">-<!-- link in normal text -->+<!-- link in normal text.+     Keep in sync with reStructuredText’s (rest) StandaloneHyperlink attribute --> <!ENTITY implicitlink "\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))"> <!-- references: [name], [name][id], [name][id] "title", [name](https://example.com) --> <!ENTITY refchar "(?:\\.|[^\]\\])">@@ -88,7 +90,7 @@ <!ENTITY checkbox "\[[ x]\](?=\s)"> ]> -<language name="Markdown" version="11" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">+<language name="Markdown" version="13" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">   <highlighting>     <contexts>       <!-- Start of the Markdown document: find metadata or code block -->@@ -318,7 +320,7 @@         <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>         <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>         <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->-        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl|perl6|p[lm]?6|nqp)&end;" insensitive="true"/>+        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true"/>         <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>         <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>         <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
syntax/mathematica.xml view
@@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Mathematica" version="9" kateversion="3.4" section="Scientific" extensions="*.nb" indenter="cstyle"+<language name="Mathematica" version="10" kateversion="5.0" section="Scientific"+          extensions="*.nb" mimetype="application/mathematica;application/vnd.wolfram.mathematica" indenter="cstyle"           author="Sven Brauch (svenbrauch@gmail.com)" license="LGPL" priority="3">   <highlighting>+     <list name="functions">       <item>A</item>       <item>AbelianGroup</item>-      <item>All</item>       <item>ArcSinh</item>       <item>Abort</item>       <item>AllowGroupClose</item>@@ -94,7 +95,6 @@       <item>AutoItalicWords</item>       <item>AiryBiPrime</item>       <item>AppendTo</item>-      <item>Automatic</item>       <item>AiryBiZero</item>       <item>Apply</item>       <item>AutoMultiplicationSymbol</item>@@ -116,7 +116,6 @@       <item>AlgebraicNumberTrace</item>       <item>ArcCsch</item>       <item>AxesLabel</item>-      <item>Algebraics</item>       <item>ArcSec</item>       <item>AxesOrigin</item>       <item>AlgebraicUnitQ</item>@@ -142,7 +141,6 @@       <item>BooleanMinterms</item>       <item>Backward</item>       <item>BilateralFilter</item>-      <item>Booleans</item>       <item>Band</item>       <item>Binarize</item>       <item>BooleanTable</item>@@ -366,6 +364,7 @@       <item>CellFrame</item>       <item>ColorSeparate</item>       <item>CoordinatesToolOptions</item>+      <item>CellFrameColor</item>       <item>CellFrameMargins</item>       <item>ColorSetter</item>       <item>CoprimeQ</item>@@ -430,7 +429,6 @@       <item>Complex</item>       <item>CountryData</item>       <item>Character</item>-      <item>Complexes</item>       <item>Covariance</item>       <item>CharacterEncoding</item>       <item>ComplexExpand</item>@@ -910,7 +908,6 @@       <item>FactorTermsList</item>       <item>FindMaxValue</item>       <item>FourierSinCoefficient</item>-      <item>False</item>       <item>FindMinimum</item>       <item>FourierSinSeries</item>       <item>FeedbackType</item>@@ -1008,7 +1005,6 @@       <item>FrontEndTokenExecute</item>       <item>Find</item>       <item>FontFamily</item>-      <item>Full</item>       <item>FindArgMax</item>       <item>FontSize</item>       <item>FullDefinition</item>@@ -1260,7 +1256,6 @@       <item>Information</item>       <item>InverseErfc</item>       <item>ImageClip</item>-      <item>Inherited</item>       <item>InverseFourier</item>       <item>ImageColorSpace</item>       <item>Initialization</item>@@ -1350,7 +1345,6 @@       <item>IntegerQ</item>       <item>InverseWaveletTransform</item>       <item>ImageRotate</item>-      <item>Integers</item>       <item>InverseWeierstrassP</item>       <item>ImageScaled</item>       <item>IntegerString</item>@@ -1683,7 +1677,6 @@       <item>MantissaExponent</item>       <item>MaxStepSize</item>       <item>Modal</item>-      <item>Manual</item>       <item>MaxValue</item>       <item>ModularLambda</item>       <item>Map</item>@@ -1875,7 +1868,6 @@       <item>NSum</item>       <item>NextPrime</item>       <item>NotebookSelection</item>-      <item>Null</item>       <item>NHoldAll</item>       <item>NotebookWrite</item>       <item>NullRecords</item>@@ -1927,7 +1919,6 @@       <item>NonConstants</item>       <item>NotLess</item>       <item>NumberPadding</item>-      <item>None</item>       <item>NotLessEqual</item>       <item>NumberPoint</item>       <item>NonlinearModelFit</item>@@ -1952,6 +1943,7 @@       <item>NotNestedLessLess</item>       <item>NumericQ</item>       <item>NormalDistribution</item>+      <item>Nothing</item>       <item>NotPrecedes</item>       <item>NyquistGridLines</item>       <item>Normalize</item>@@ -2122,7 +2114,6 @@       <item>PrimeQ</item>       <item>ParallelTable</item>       <item>PlotRange</item>-      <item>Primes</item>       <item>ParallelTry</item>       <item>PlotRangeClipping</item>       <item>PrimeZetaP</item>@@ -2324,7 +2315,6 @@       <item>Rationalize</item>       <item>RescalingTransform</item>       <item>RootSum</item>-      <item>Rationals</item>       <item>ResetDirectory</item>       <item>Rotate</item>       <item>Ratios</item>@@ -2363,7 +2353,6 @@       <item>RealExponent</item>       <item>ReverseBiorthogonalSplineWavelet</item>       <item>RowLines</item>-      <item>Reals</item>       <item>ReverseElement</item>       <item>RowMinHeight</item>       <item>Reap</item>@@ -2856,7 +2845,6 @@       <item>TrimmedMean</item>       <item>Thin</item>       <item>TotalVariationFilter</item>-      <item>True</item>       <item>Thinning</item>       <item>TotalWidth</item>       <item>TrueQ</item>@@ -3080,6 +3068,8 @@       <item>ZipfDistribution</item>       <item>Zeta</item>       <item>ZTest</item>+    </list>+    <list name="variables">       <item>$</item>       <item>$Aborted</item>       <item>$Inspector</item>@@ -3198,32 +3188,133 @@       <item>$InputFileName</item>       <item>$Output</item>     </list>++    <list name="option_values">+      <item>True</item>+      <item>False</item>+      <item>Automatic</item>+      <item>All</item>+      <item>None</item>+      <item>Full</item>+      <item>Inherited</item>+      <item>Manual</item>+      <item>Null</item>+      <item>Anonymous</item>+    </list>++    <list name="domains">+      <item>Reals</item>+      <item>Integers</item>+      <item>Complexes</item>+      <item>Algebraics</item>+      <item>Primes</item>+      <item>Rationals</item>+      <item>Booleans</item>+      <item>PositiveReals</item>+      <item>NegativeReals</item>+      <item>NonNegativeReals</item>+      <item>NonPositiveReals</item>+      <item>PositiveRationals</item>+      <item>NegativeRationals</item>+      <item>NonNegativeRationals</item>+      <item>NonPositiveRationals</item>+      <item>PositiveIntegers</item>+      <item>NegativeIntegers</item>+      <item>NonNegativeIntegers</item>+      <item>NonPositiveIntegers</item>+    </list>+     <contexts>+       <context name="Normal" attribute="Normal Text" lineEndContext="#stay">-	<keyword attribute="function" String="functions" context="#stay"/>-	<Int attribute="Int" context="#stay" />-	<Float attribute="Float" context="#stay" />-	<RegExpr attribute="Parameter" String="[a-zA-Z_0-9]+\_" context="#stay"/>-	<RegExpr attribute="Replace" String="(\-\>|\/\.)" context="#stay"/>-	<AnyChar attribute="Operator" String="+*/%\|-^" context="#stay"/>-	<RegExpr attribute="Assign" String="(:=|=)" context="#stay"/>+        <keyword attribute="Option Value" String="option_values" context="#stay"/>+        <keyword attribute="Domain" String="domains" context="#stay"/>+        <keyword attribute="Function" String="functions" context="#stay"/>+        <keyword attribute="Variable" String="variables" context="#stay"/>++        <Float attribute="Float" context="#stay"/>+        <Int attribute="Int" context="#stay"/>++        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*Beginning of Notebook Content\s*\*+\)" context="#stay" insensitive="true" beginRegion="NotebookContent"/>+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*End of Notebook Content\s*\*+\)" context="#stay" insensitive="true" endRegion="NotebookContent"/>+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*Internal cache information\s*\*+\)" context="#stay" insensitive="true" beginRegion="CacheInformation"/>+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*End of internal cache information\s*\*+\)" context="#stay" insensitive="true" endRegion="CacheInformation"/>+        <Detect2Chars attribute="Comment" char="(" char1="*" context="Comment" beginRegion="Comment"/>++        <DetectChar attribute="String" char="&quot;" context="String"/>+        <Detect2Chars attribute="Replace" char="-" char1="&gt;" context="#stay"/>+        <Detect2Chars attribute="Replace" char="/" char1="." context="#stay"/>+        <Detect2Chars attribute="Assign" char=":" char1="=" context="#stay"/>+        <DetectChar attribute="Assign" char="=" context="#stay"/>+        <AnyChar attribute="Math Operator" String="+*/%\|-^" context="#stay"/>+        <DetectChar attribute="Bracket" char="[" context="#stay" beginRegion="List"/>+        <DetectChar attribute="Bracket" char="]" context="#stay" endRegion="List"/>+        <DetectChar attribute="Bracket" char="{" context="#stay" beginRegion="Brace"/>+        <DetectChar attribute="Bracket" char="}" context="#stay" endRegion="Brace"/>+        <DetectChar attribute="Bracket" char="," context="#stay"/>++        <RegExpr attribute="Parameter" String="[a-zA-Z_0-9]+\_" context="#stay"/>       </context>++      <context name="Comment" attribute="Comment" lineEndContext="#stay">+        <Detect2Chars attribute="Comment" char="*" char1=")" context="#pop" endRegion="Comment"/>+        <WordDetect attribute="Comment: Annotation" String="Content-type:" context="#stay"/>+        <WordDetect attribute="Comment: Annotation" String="CacheID:" context="CommentCacheId"/>+        <WordDetect attribute="Comment: Annotation" String="Internal cache information:" context="#stay"/>+        <RegExpr attribute="Comment: Annotation" String="\bCreatedBy\s*\=\s*" context="CommentCreatedBy"/>+        <WordDetect attribute="Comment: File Title" String="Wolfram Notebook File" context="#stay" insensitive="true"/>+        <WordDetect attribute="Comment: File Title" String="http://www.wolfram.com/nb" context="#stay" insensitive="true"/>++        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>+      <context name="CommentCreatedBy" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <RegExpr attribute="String" context="#pop" String="'(?:[^'\*]|\*+[^'\*\)])*\*?'"/>+        <RegExpr attribute="String" context="#pop" String="&quot;(?:[^&quot;\*]|\*+[^&quot;\*\)])*\*?&quot;"/>+      </context>+      <context name="CommentCacheId" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <DetectSpaces/>+        <Int attribute="Int" context="#pop"/>+      </context>++      <context name="String" attribute="String" lineEndContext="#stay">+        <DetectChar attribute="String" char="&quot;" context="#pop"/>+        <DetectChar attribute="Escape" context="Escape" char="\"/>+      </context>+      <context name="Escape" attribute="Escape" lineEndContext="#pop">+        <RegExpr attribute="Escape" context="#pop" String="." />+      </context>+     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>-      <itemData name="function" defStyleNum="dsFunction" spellChecking="false"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+      <itemData name="Comment: Annotation" defStyleNum="dsAnnotation" spellChecking="false"/>+      <itemData name="Comment: File Title" defStyleNum="dsComment" underline="1" spellChecking="false"/>+      <itemData name="Comment: Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>++      <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>+      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>+      <itemData name="Option Value" defStyleNum="dsConstant" bold="1" spellChecking="false"/>+      <itemData name="Domain" defStyleNum="dsBuiltIn" spellChecking="false"/>+      <itemData name="Parameter" defStyleNum="dsAttribute" italic="1" spellChecking="false"/>+       <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>       <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>-      <itemData name="Parameter" italic="1" defStyleNum="dsDataType" spellChecking="false"/>-      <itemData name="Operator" defStyleNum="dsNormal" color="#FF7B00" spellChecking="false"/>-      <itemData name="Assign" defStyleNum="dsNormal" color="#00A0E4" spellChecking="false"/>-      <itemData name="Replace" defStyleNum="dsNormal" color="#85C200" spellChecking="false"/>+      <itemData name="Math Operator" defStyleNum="dsSpecialChar" spellChecking="false"/>+      <itemData name="Assign" defStyleNum="dsExtension" bold="1" spellChecking="false"/>+      <itemData name="Replace" defStyleNum="dsOthers" bold="1" spellChecking="false"/>+      <itemData name="Bracket" defStyleNum="dsOperator" spellChecking="false"/>++      <itemData name="String" defStyleNum="dsString" spellChecking="false"/>+      <itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>     </itemDatas>   </highlighting>   <general>-    <keywords casesensitive="0" weakDeliminator="-%"/>+    <keywords casesensitive="0" weakDeliminator="$" additionalDeliminator="`"/>     <comments>-      <comment name="multiLine" start="(*" end="*)" />+      <comment name="multiLine" start="(*" end="*)" region="Comment"/>     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/matlab.xml view
@@ -56,8 +56,8 @@ -->  <!DOCTYPE language SYSTEM "language.dtd">--<language name="Matlab" version="3" kateversion="5.0" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">+<!-- low priority to let Objective-C win for .m files per default -->+<language name="Matlab" version="6" kateversion="5.0" section="Scientific" extensions="*.m;*.M" priority="-9" mimetype="text/mfile" casesensitive="1">   <highlighting>      <!-- Reserved keywords in MATLAB -->@@ -105,8 +105,8 @@          <!-- Handling of keywords, comments, system commands, identifiers, numbers and braces -->         <keyword context="#stay" attribute="Keyword" String="KeywordsList" />-        <RegExpr context="#stay" attribute="Comment" String="%.*$" />-        <RegExpr context="#stay" attribute="System" String="!.*$" />+        <DetectChar context="Comment" attribute="Comment" char="%" />+        <DetectChar context="System" attribute="System" char="!" />         <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />         <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>@@ -134,6 +134,14 @@         <RegExpr context="#pop" attribute="Operator" String="'+" />       </context> +      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>++      <context name="System" attribute="System" lineEndContext="#pop"/>+     </contexts>      <itemDatas>@@ -155,9 +163,10 @@    <general>     <comments>-      <comment name="singleLine" start="% " />+      <comment name="singleLine" start="%" />     </comments>     <keywords casesensitive="1" weakDeliminator=""/>   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/maxima.xml view
@@ -21,7 +21,7 @@  <!DOCTYPE language SYSTEM "language.dtd"> -<language name="Maxima" version="4" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">+<language name="Maxima" version="5" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">     <highlighting>          <list name="MaximaKeyword">@@ -42,11 +42,6 @@             <item>while</item>         </list> -        <list name="SpecialComment">-            <item>FIXME</item>-            <item>TODO</item>-        </list>-         <list name="MaximaFunction">             <item>abasep</item>             <item>abs</item>@@ -1871,9 +1866,10 @@             </context>              <context attribute="Comment" lineEndContext="#stay" name="Comment">-                <keyword attribute="Special" String="SpecialComment"/>                 <DetectSpaces/>                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment"/>+                <IncludeRules context="##Alerts"/>+                <IncludeRules context="##Modelines"/>             </context>         </contexts> @@ -1888,16 +1884,16 @@             <itemData name="Float" defStyleNum="dsFloat"/>             <itemData name="Comment" defStyleNum="dsComment"/>             <itemData name="Quote" defStyleNum="dsDocumentation" bold="true"/>-            <itemData name="Special" defStyleNum="dsSpecialString" bold="true" />         </itemDatas>      </highlighting>      <general>         <comments>-            <comment name="multiLine" start="/*" end="*/"/>+            <comment name="multiLine" start="/*" end="*/" region="comment"/>         </comments>         <keywords casesensitive="true" weakDeliminator="%" additionalDeliminator="@#"/>     </general>  </language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
syntax/mediawiki.xml view
@@ -6,7 +6,7 @@   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]"> ]>-<language name="MediaWiki" section="Markup" version="6" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >+<language name="MediaWiki" section="Markup" version="8" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >   <highlighting>     <contexts>       <context attribute="Normal" lineEndContext="#stay" name="normal" >@@ -15,7 +15,8 @@         <RegExpr String="[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />         <RegExpr String="[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />         <RegExpr String="[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <DetectChar char=";" attribute="WikiTag" context="DefinitionListHeader" column="0" />         <IncludeRules context="FindListItem" />         <IncludeRules context="FindUrl" />@@ -29,14 +30,14 @@         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />-        <RegExpr String="[\s]" context="Unformatted" column="0" />+        <DetectSpaces context="Unformatted" column="0" />       </context>       <context name="TableHeader" attribute="Normal" lineEndContext="TableContent" >         <Detect2Chars char="{" char1="|" attribute="WikiTag" beginRegion="table" />         <IncludeRules context="FindHtmlStartTagAttributes" />       </context>       <context name="TableContent" attribute="Normal" lineEndContext="#stay">-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" />+        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />         <RegExpr String="[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />         <RegExpr String="[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />         <RegExpr String="[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />@@ -58,13 +59,15 @@         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />         <RegExpr String="[\s]" context="Unformatted" column="0" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <RegExpr String="[-]{4,}" attribute="WikiTag" context="#stay" />         <DetectChar char="!" attribute="WikiTag" context="#stay" column="0" />       </context>       <context attribute="Section" lineEndContext="#pop" name="Section5" >         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindUrl" />         <IncludeRules context="FindTextDecorationsInHeader" />         <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />@@ -83,7 +86,8 @@       </context>       <context attribute="Section" lineEndContext="#pop" name="Section4" >         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindUrl" />         <IncludeRules context="FindTextDecorationsInHeader" />         <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />@@ -101,7 +105,8 @@       </context>       <context attribute="Section" lineEndContext="#pop" name="Section3" >         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindUrl" />         <IncludeRules context="FindTextDecorationsInHeader" />         <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />@@ -119,7 +124,8 @@       </context>       <context attribute="Section" lineEndContext="#pop" name="Section2" >         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindUrl" />         <IncludeRules context="FindTextDecorationsInHeader" />         <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />@@ -137,6 +143,9 @@       </context>       <context attribute="Comment" lineEndContext="#stay" name="comment" >         <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Link" lineEndContext="#stay" name="DelimitedURL" >         <DetectChar char="]" context="#pop" attribute="WikiTag" />@@ -284,7 +293,8 @@       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlot" >         <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindListItem" />         <IncludeRules context="FindUrlWithinTemplate" />         <IncludeRules context="FindTextDecorations" />@@ -306,7 +316,8 @@       </context>       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlotValue" >         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />-        <RegExpr String="[~]{3,4}" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />+        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />         <IncludeRules context="FindListItem" />         <IncludeRules context="FindUrlWithinTemplate" />         <IncludeRules context="FindTextDecorations" />@@ -615,8 +626,9 @@   </highlighting>   <general>     <comments>-      <comment end="//-->" start="&lt;!--" name="multiLine" />+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />     </comments>     <keywords casesensitive="0" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/metafont.xml view
@@ -6,7 +6,7 @@ -->  <!DOCTYPE language SYSTEM "language.dtd">-<language name="Metapost/Metafont" section="Markup" version="5" kateversion="5.0"+<language name="Metapost/Metafont" section="Markup" version="7" kateversion="5.0" extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost"  author="Yedvilun (yedvilun@gmail.com)" license="LGPL">   <highlighting>@@ -914,7 +914,7 @@         <RegExpr String="[^a-zA-Z]" attribute="Keyword" context="#pop" />       </context>       <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >-        <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="VerbEnd" />+        <RegExpr String="(.)" attribute="Normal Text" context="VerbEnd" />       </context>       <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />@@ -940,8 +940,10 @@        <!-- comment -->       <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts" />         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>+        <IncludeRules context="##Modelines" />       </context>  </contexts>@@ -977,10 +979,10 @@    <general>     <comments>-      <comment name="singleLine" start="%"/>+      <comment name="singleLine" start="%" position="afterwhitespace"/>     </comments>     <keywords casesensitive="0" />    </general> </language>-+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/mips.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="MIPS Assembler" version="3" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">+<language name="MIPS Assembler" version="5" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">   <highlighting>     <list name="type">       <item>.align</item>@@ -317,7 +317,7 @@         <keyword attribute="Section" context="#stay" String="type"/>         <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>         <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="region" firstNonSpace="true"/>-        <RegExpr attribute="Comment" context="#stay" String="#.*$" />+        <DetectChar attribute="Comment" context="Comment" char="#" />         <RegExpr attribute="Label" context="#stay" String="[\w_\.]+:" firstNonSpace="true"/>         <DetectChar attribute="String" context="string" char="&quot;" />         <Float attribute="Float" context="#stay"/>@@ -329,6 +329,11 @@         <RegExpr attribute="Char" context="#stay" String="\\." />         <DetectChar attribute="String" context="#pop" char="&quot;" />       </context>+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal" />@@ -352,8 +357,9 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="#" />+      <comment name="singleLine" start="#" position="afterwhitespace" />     </comments>     <keywords casesensitive="0" weakDeliminator="."/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/modelines.xml view
@@ -8,7 +8,7 @@   Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)   --> <language name="Modelines"-          version="5"+          version="6"           kateversion="5.0"           section="Other"           extensions=""@@ -127,10 +127,9 @@   </list>    <contexts>-    <context name="Normal" attribute="Comment" lineEndContext="#pop">-      <DetectSpaces />+    <context name="Normal" attribute="Comment" lineEndContext="#stay">       <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />-      <RegExpr String="kate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />+      <RegExpr String="\bkate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />     </context>      <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">@@ -139,7 +138,6 @@       <keyword String="Integrals" context="Integrals" attribute="Variable" />       <keyword String="Strings" context="Strings" attribute="Variable" />       <keyword String="RemoveSpaces" context="RemoveSpaces" attribute="Variable" />-      <LineContinue context="#pop" />     </context>      <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">@@ -147,28 +145,24 @@       <keyword String="True" attribute="Option ON" context="#stay" />       <keyword String="False" attribute="Option OFF" context="#stay" />       <DetectChar char="&end;" context="#pop" attribute="Variable" />-      <LineContinue context="#pop" />     </context>      <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">       <DetectSpaces />       <Int attribute="Number" context="#stay" />       <DetectChar char="&end;" context="#pop" attribute="Variable" />-      <LineContinue context="#pop" />     </context>      <context name="Strings" attribute="String" lineEndContext="#pop">       <DetectSpaces />       <RegExpr String="[^&end;&space;]" context="#stay" />       <DetectChar char="&end;" context="#pop" attribute="Variable" />-      <LineContinue context="#pop" />     </context>      <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">       <DetectSpaces />       <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />       <DetectChar char="&end;" context="#pop" attribute="Variable" />-      <LineContinue context="#pop" />     </context>     <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">       <DetectChar char="&end;" context="#pop" attribute="Variable" />
syntax/modula-2.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Modula-2" mimetype="text/x-modula2" version="5"+<language name="Modula-2" mimetype="text/x-modula2" version="6"   kateversion="2.2" section="Sources" priority="5" extensions="*.mod;*.def"   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT"> <!--@@ -1111,6 +1111,9 @@        <!-- Line Comment Body -->       <context name="LineComment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <!-- Block Comment Body -->@@ -1121,6 +1124,10 @@         <!-- Closing Delimiter -->         <Detect2Chars attribute="Comment" context="#pop"           char="*" char1=")" endRegion="FoldableComment"/>++        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>     </contexts> @@ -1182,10 +1189,9 @@   <general>     <keywords casesensitive="1" />     <comments>-      <comment name="singleLine" start="!"/>-      <comment name="multiLine" start="(*" end="*)"/>+      <comment name="multiLine" start="(*" end="*)" region="FoldableComment"/>     </comments>   </general> </language>-+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; --> <!--EOF-->
syntax/modula-3.xml view
@@ -6,259 +6,259 @@ <!-- 04.03.2005 ik mailed version 1.01 with fixed/implemented nested comments to Dominik --> <!-- known bug: notation Regexp( [0-9]*\. ) should be not interpreted as neither Integer neither Real --> <!-- known bug: notation Regexp ( "  \" " ) is not properly interpreted -->-<language name="Modula-3" version="1.01" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">+<language name="Modula-3" version="3" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">   <highlighting>     <list name="keywords">-<!--      <item> AND </item> -->-      <item> ANY </item>-      <item> ARRAY </item>-      <item> AS </item>-      <item> BEGIN </item>-      <item> BITS </item>-      <item> BRANDED </item>-      <item> BY </item>-      <item> CASE </item>-      <item> CONST </item>-<!--      <item> DIV </item> -->-      <item> DO </item>-      <item> ELSE </item>-      <item> ELSIF </item>-      <item> END </item>-      <item> EVAL </item>-      <item> EXCEPT </item>-      <item> EXCEPTION </item>-      <item> EXIT </item>-      <item> EXPORTS </item>-      <item> FINALLY </item>-      <item> FOR </item>-      <item> FROM </item>-      <item> GENERIC </item>-      <item> IF </item>-      <item> IMPORT </item>-<!--      <item> IN </item> -->-      <item> INTERFACE </item>-      <item> LOCK </item>-      <item> LOOP </item>-      <item> METHODS </item>-<!--      <item> MOD </item> -->-      <item> MODULE </item>-<!--      <item> NOT </item> -->-      <item> OBJECT </item>-      <item> OF </item>-<!--      <item> OR </item> -->-      <item> OVERRIDES </item>-      <item> PROCEDURE </item>-      <item> RAISE </item>-      <item> RAISES </item>-      <item> READONLY </item>-      <item> RECORD </item>-      <item> REF </item>-      <item> REPEAT </item>-      <item> RETURN </item>-      <item> REVEAL </item>-      <item> ROOT </item>-      <item> SET </item>-      <item> THEN </item>-      <item> TO </item>-      <item> TRY </item>-      <item> TYPE </item>-      <item> TYPECASE </item>-      <item> UNSAFE </item>-      <item> UNTIL </item>-      <item> UNTRACED </item>-      <item> VALUE </item>-      <item> VAR </item>-      <item> WHILE </item>-      <item> WITH </item>+<!--      <item>AND</item> -->+      <item>ANY</item>+      <item>ARRAY</item>+      <item>AS</item>+      <item>BEGIN</item>+      <item>BITS</item>+      <item>BRANDED</item>+      <item>BY</item>+      <item>CASE</item>+      <item>CONST</item>+<!--      <item>DIV</item> -->+      <item>DO</item>+      <item>ELSE</item>+      <item>ELSIF</item>+      <item>END</item>+      <item>EVAL</item>+      <item>EXCEPT</item>+      <item>EXCEPTION</item>+      <item>EXIT</item>+      <item>EXPORTS</item>+      <item>FINALLY</item>+      <item>FOR</item>+      <item>FROM</item>+      <item>GENERIC</item>+      <item>IF</item>+      <item>IMPORT</item>+<!--      <item>IN</item> -->+      <item>INTERFACE</item>+      <item>LOCK</item>+      <item>LOOP</item>+      <item>METHODS</item>+<!--      <item>MOD</item> -->+      <item>MODULE</item>+<!--      <item>NOT</item> -->+      <item>OBJECT</item>+      <item>OF</item>+<!--      <item>OR</item> -->+      <item>OVERRIDES</item>+      <item>PROCEDURE</item>+      <item>RAISE</item>+      <item>RAISES</item>+      <item>READONLY</item>+      <item>RECORD</item>+      <item>REF</item>+      <item>REPEAT</item>+      <item>RETURN</item>+      <item>REVEAL</item>+      <item>ROOT</item>+      <item>SET</item>+      <item>THEN</item>+      <item>TO</item>+      <item>TRY</item>+      <item>TYPE</item>+      <item>TYPECASE</item>+      <item>UNSAFE</item>+      <item>UNTIL</item>+      <item>UNTRACED</item>+      <item>VALUE</item>+      <item>VAR</item>+      <item>WHILE</item>+      <item>WITH</item>     </list>     <list name="operators">-      <item> AND </item> -      <item> DIV </item> -      <item> IN </item> -      <item> MOD </item>-      <item> NOT </item>-      <item> OR </item>-      <item> + </item>-      <item> &lt; </item>-      <item> # </item>-      <item> = </item>-      <item> ; </item>-      <item> .. </item>-      <item> : </item>-      <item> - </item>-      <item> &gt; </item>-      <item> { </item>-      <item> } </item>-      <item> | </item>-      <item> := </item>-      <item> &lt;: </item>-      <item> * </item>-      <item> &lt;= </item>-      <item> ( </item>-      <item> ) </item>-      <item> ^ </item>-      <item> , </item>-      <item> =&gt; </item>-      <item> / </item>-      <item> &gt;= </item>-      <item> [ </item>-      <item> ] </item>-      <item> . </item>-      <item> &amp; </item>+      <item>AND</item>+      <item>DIV</item>+      <item>IN</item>+      <item>MOD</item>+      <item>NOT</item>+      <item>OR</item>+      <item>+</item>+      <item>&lt;</item>+      <item>#</item>+      <item>=</item>+      <item>;</item>+      <item>..</item>+      <item>:</item>+      <item>-</item>+      <item>&gt;</item>+      <item>{</item>+      <item>}</item>+      <item>|</item>+      <item>:=</item>+      <item>&lt;:</item>+      <item>*</item>+      <item>&lt;=</item>+      <item>(</item>+      <item>)</item>+      <item>^</item>+      <item>,</item>+      <item>=&gt;</item>+      <item>/</item>+      <item>&gt;=</item>+      <item>[</item>+      <item>]</item>+      <item>.</item>+      <item>&amp;</item>     </list>     <list name="types">-      <item> ADDRESS </item>-      <item> BOOLEAN </item>-      <item> CARDINAL </item>-      <item> CHAR </item>-      <item> EXTENDED </item>-      <item> INTEGER </item>-      <item> LONGREAL </item>-      <item> MUTEX </item>-      <item> NULL </item>-      <item> REAL </item>-      <item> REFANY </item>-      <item> T </item>-      <item> TEXT </item>+      <item>ADDRESS</item>+      <item>BOOLEAN</item>+      <item>CARDINAL</item>+      <item>CHAR</item>+      <item>EXTENDED</item>+      <item>INTEGER</item>+      <item>LONGREAL</item>+      <item>MUTEX</item>+      <item>NULL</item>+      <item>REAL</item>+      <item>REFANY</item>+      <item>T</item>+      <item>TEXT</item>     </list>     <list name="constants">-      <item> FALSE </item>-      <item> NIL </item>-      <item> TRUE </item>+      <item>FALSE</item>+      <item>NIL</item>+      <item>TRUE</item>     </list>     <list name="pervasives">-      <item> ABS </item>-      <item> ADR </item>-      <item> ADRSIZE </item>-      <item> BITSIZE </item>-      <item> BYTESIZE </item>-      <item> CEILING </item>-      <item> DEC </item>-      <item> DISPOSE </item>-      <item> FIRST </item>-      <item> FLOAT </item>-      <item> FLOOR </item>-      <item> INC </item>-      <item> ISTYPE </item>-      <item> LAST </item>-      <item> LOOPHOLE </item>-      <item> MAX </item>-      <item> MIN </item>-      <item> NARROW </item>-      <item> NEW </item>-      <item> NUMBER </item>-      <item> ORD </item>-      <item> ROUND </item>-      <item> SUBARRAY </item>-      <item> TRUNC </item>-      <item> TYPECODE </item>-      <item> VAL </item>+      <item>ABS</item>+      <item>ADR</item>+      <item>ADRSIZE</item>+      <item>BITSIZE</item>+      <item>BYTESIZE</item>+      <item>CEILING</item>+      <item>DEC</item>+      <item>DISPOSE</item>+      <item>FIRST</item>+      <item>FLOAT</item>+      <item>FLOOR</item>+      <item>INC</item>+      <item>ISTYPE</item>+      <item>LAST</item>+      <item>LOOPHOLE</item>+      <item>MAX</item>+      <item>MIN</item>+      <item>NARROW</item>+      <item>NEW</item>+      <item>NUMBER</item>+      <item>ORD</item>+      <item>ROUND</item>+      <item>SUBARRAY</item>+      <item>TRUNC</item>+      <item>TYPECODE</item>+      <item>VAL</item>     </list>     <list name="stdlibs">-      <item> Text </item>-      <item> Text.Length </item>-      <item> Text.Empty </item>-      <item> Text.Equal </item>-      <item> Text.Compare </item>-      <item> Text.Cat </item>-      <item> Text.Sub </item>-      <item> Text.Hash </item>-      <item> Text.HasWideChar </item>-      <item> Text.GetChar </item>-      <item> Text.GetWideChar </item>-      <item> Text.SetChars </item>-      <item> Text.SetWideChars </item>-      <item> Text.FromChars </item>-      <item> Text.FromWideChars </item>-      <item> Text.FindChar </item>-      <item> Text.FindWideChar </item>-      <item> Text.FindCharR </item>-      <item> Text.FindWideCharR </item>-      <item> Fmt </item>-      <item> Fmt.Bool </item>-      <item> Fmt.Char </item>-      <item> Fmt.Int </item>-      <item> Fmt.Unsigned </item>-      <item> Fmt.Real </item>-      <item> Fmt.LongReal </item>-      <item> Fmt.Extended </item>-      <item> Fmt.Pad </item>-      <item> Fmt.F </item>-      <item> Fmt.FN </item>-      <item> Scan </item>-      <item> Scan.Bool </item>-      <item> Scan.Int </item>-      <item> Scan.Unsigned </item>-      <item> Scan.Real </item>-      <item> Scan.LongReal </item>-      <item> Scan.Extended </item>-      <item> IO </item>-      <item> IO.Put </item>-      <item> IO.PutChar </item>-      <item> IO.PutWideChar </item>-      <item> IO.PutInt </item>-      <item> IO.PutReal </item>-      <item> IO.EOF </item>-      <item> IO.GetLine </item>-      <item> IO.GetChar </item>-      <item> IO.GetWideChar </item>-      <item> IO.GetInt </item>-      <item> IO.GetReal </item>-      <item> IO.OpenRead </item>-      <item> IO.OpenWrite </item>-      <item> Rd </item>-      <item> Rd.GetChar </item>-      <item> Rd.GetWideChar </item>-      <item> Rd.EOF </item>-      <item> Rd.UnGetChar </item>-      <item> Rd.CharsReady </item>-      <item> Rd.GetSub </item>-      <item> Rd.GetWideSub </item>-      <item> Rd.GetSubLine </item>-      <item> Rd.GetWideSubLine </item>-      <item> Rd.GetText </item>-      <item> Rd.GetWideText </item>-      <item> Rd.GetLine </item>-      <item> Rd.GetWideLine </item>-      <item> Rd.Seek </item>-      <item> Rd.Close </item>-      <item> Rd.Index </item>-      <item> Rd.Length </item>-      <item> Rd.Intermittend </item>-      <item> Rd.Seekable </item>-      <item> Rd.Closed </item>-      <item> Wr </item>-      <item> Wr.PutChar </item>-      <item> Wr.PutWideChar </item>-      <item> Wr.PutText </item>-      <item> Wr.PutWideText </item>-      <item> Wr.PutString </item>-      <item> Wr.PutWideString </item>-      <item> Wr.Seek </item>-      <item> Wr.Flush </item>-      <item> Wr.Close </item>-      <item> Wr.Length </item>-      <item> Wr.Index </item>-      <item> Wr.Seekable </item>-      <item> Wr.Closed </item>-      <item> Wr.Buffered </item>-      <item> Lex </item>-      <item> Lex.Scan </item>-      <item> Lex.Skip </item>-      <item> Lex.Match </item>-      <item> Lex.Bool </item>-      <item> Lex.Int </item>-      <item> Lex.Unsigned </item>-      <item> Lex.Real </item>-      <item> Lex.LongReal </item>-      <item> Lex.Extended </item>-      <item> Params </item>-      <item> Params.Count </item>-      <item> Params.Get </item>-      <item> Env </item>-      <item> Env.Count </item>-      <item> Env.Get </item>-      <item> Env.GetNth </item>+      <item>Text</item>+      <item>Text.Length</item>+      <item>Text.Empty</item>+      <item>Text.Equal</item>+      <item>Text.Compare</item>+      <item>Text.Cat</item>+      <item>Text.Sub</item>+      <item>Text.Hash</item>+      <item>Text.HasWideChar</item>+      <item>Text.GetChar</item>+      <item>Text.GetWideChar</item>+      <item>Text.SetChars</item>+      <item>Text.SetWideChars</item>+      <item>Text.FromChars</item>+      <item>Text.FromWideChars</item>+      <item>Text.FindChar</item>+      <item>Text.FindWideChar</item>+      <item>Text.FindCharR</item>+      <item>Text.FindWideCharR</item>+      <item>Fmt</item>+      <item>Fmt.Bool</item>+      <item>Fmt.Char</item>+      <item>Fmt.Int</item>+      <item>Fmt.Unsigned</item>+      <item>Fmt.Real</item>+      <item>Fmt.LongReal</item>+      <item>Fmt.Extended</item>+      <item>Fmt.Pad</item>+      <item>Fmt.F</item>+      <item>Fmt.FN</item>+      <item>Scan</item>+      <item>Scan.Bool</item>+      <item>Scan.Int</item>+      <item>Scan.Unsigned</item>+      <item>Scan.Real</item>+      <item>Scan.LongReal</item>+      <item>Scan.Extended</item>+      <item>IO</item>+      <item>IO.Put</item>+      <item>IO.PutChar</item>+      <item>IO.PutWideChar</item>+      <item>IO.PutInt</item>+      <item>IO.PutReal</item>+      <item>IO.EOF</item>+      <item>IO.GetLine</item>+      <item>IO.GetChar</item>+      <item>IO.GetWideChar</item>+      <item>IO.GetInt</item>+      <item>IO.GetReal</item>+      <item>IO.OpenRead</item>+      <item>IO.OpenWrite</item>+      <item>Rd</item>+      <item>Rd.GetChar</item>+      <item>Rd.GetWideChar</item>+      <item>Rd.EOF</item>+      <item>Rd.UnGetChar</item>+      <item>Rd.CharsReady</item>+      <item>Rd.GetSub</item>+      <item>Rd.GetWideSub</item>+      <item>Rd.GetSubLine</item>+      <item>Rd.GetWideSubLine</item>+      <item>Rd.GetText</item>+      <item>Rd.GetWideText</item>+      <item>Rd.GetLine</item>+      <item>Rd.GetWideLine</item>+      <item>Rd.Seek</item>+      <item>Rd.Close</item>+      <item>Rd.Index</item>+      <item>Rd.Length</item>+      <item>Rd.Intermittend</item>+      <item>Rd.Seekable</item>+      <item>Rd.Closed</item>+      <item>Wr</item>+      <item>Wr.PutChar</item>+      <item>Wr.PutWideChar</item>+      <item>Wr.PutText</item>+      <item>Wr.PutWideText</item>+      <item>Wr.PutString</item>+      <item>Wr.PutWideString</item>+      <item>Wr.Seek</item>+      <item>Wr.Flush</item>+      <item>Wr.Close</item>+      <item>Wr.Length</item>+      <item>Wr.Index</item>+      <item>Wr.Seekable</item>+      <item>Wr.Closed</item>+      <item>Wr.Buffered</item>+      <item>Lex</item>+      <item>Lex.Scan</item>+      <item>Lex.Skip</item>+      <item>Lex.Match</item>+      <item>Lex.Bool</item>+      <item>Lex.Int</item>+      <item>Lex.Unsigned</item>+      <item>Lex.Real</item>+      <item>Lex.LongReal</item>+      <item>Lex.Extended</item>+      <item>Params</item>+      <item>Params.Count</item>+      <item>Params.Get</item>+      <item>Env</item>+      <item>Env.Count</item>+      <item>Env.Get</item>+      <item>Env.GetNth</item>     </list>     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">@@ -285,6 +285,9 @@       <context attribute="Comment" lineEndContext="#stay" name="Comment2">         <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="Pragma" lineEndContext="#stay" name="Prep1">         <Detect2Chars attribute="Pragma" context="#pop" char="*" char1="&gt;"/>@@ -309,7 +312,8 @@   <general>     <keywords casesensitive="1" weakDeliminator="."/>     <comments>-      <comment name="multiLine" start="(*" end="*)"/>+      <comment name="multiLine" start="(*" end="*)" region="Comment"/>     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/monobasic.xml view
@@ -10,7 +10,7 @@     License: GNU General Public License --> -<language name="MonoBasic" section="Sources" version="3" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">+<language name="MonoBasic" section="Sources" version="4" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">   <highlighting>      <list name="keywords">         <item>Option</item>@@ -192,7 +192,11 @@          <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context> -      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+         <DetectSpaces />+         <IncludeRules context="##Alerts"/>+         <IncludeRules context="##Modelines"/>+      </context>     </contexts>      <itemDatas>
syntax/mustache.xml view
@@ -36,13 +36,14 @@     (via IncludeRules) in the HTML highlighter.      Change log:+     * v5 [2020-08-15]: Use Handlebars comment en the <comments> group.      * v3 [2019-10-03]: Minor fixes.      * v2 [2019-02-24]: Also highlight template files (HTML).                         Improve support for Handlebars.      * v1 [2019-02-10]: Initial version --> -<language name="Mustache/Handlebars (HTML)" version="3" kateversion="5.44"+<language name="Mustache/Handlebars (HTML)" version="5" kateversion="5.44"           section="Markup" priority="1" mimetype=""           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"@@ -84,15 +85,15 @@ 			<RegExpr context="#pop!MustacheRawBlockContent" attribute="Mustache Block" String="\{{4}[^/].*\}{4}" minimal="true" beginRegion="HandlebarsRawBlock" /> 			<!-- Sections --> 			<!-- For helpers (not included because it's redundant):-			       Start: \{\{~?#?\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)-			       End:   \{\{~?/\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)  -->+			       Start: \{\{~?#?\s*(?=(?:if|unless|with|link\-to|each(?:\-in)?)\b)+			       End:   \{\{~?/\s*(?=(?:if|unless|with|link\-to|each(?:\-in)?)\b)  --> 			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?\s*else(?:\s+(?:if|unless|with|link\-to|each(?:\-in)?))?\b" /> 			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^][&gt;\*]?\s*&identifier;\b" beginRegion="MustacheBlock" /> 			<RegExpr context="#pop" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\s*\}\}" endRegion="MustacheBlock" /> 			<RegExpr context="#pop!MustacheVariableBlockEndFolding" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\b" /> 			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^/]" /> 			<!-- Comments -->-			<StringDetect context="#pop!MustacheBlockComment" attribute="Comment" String="{{!--" beginRegion="MustacheBlockComment" /> <!-- Handlebars -->+			<StringDetect context="#pop!HandlebarsInlineComment" attribute="Comment" String="{{!--" beginRegion="HandlebarsInlineComment" /> <!-- Handlebars --> 			<StringDetect context="#pop!MustacheInlineComment" attribute="Comment" String="{{!" beginRegion="MustacheInlineComment" /> 			<!-- Variables --> 			<StringDetect context="#pop!MustachePartial" attribute="Mustache Variable" String="{{&lt;" />@@ -161,13 +162,17 @@ 			<RegExpr context="#pop" attribute="Number" String="\d+(?=[\s\}\)\]]|$)" /> 		</context> -		<context name="MustacheBlockComment" attribute="Comment" lineEndContext="#stay">-			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="MustacheBlockComment" />+		<context name="HandlebarsInlineComment" attribute="Comment" lineEndContext="#stay">+			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="HandlebarsInlineComment" />+			<DetectSpaces /> 			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" /> 		</context> 		<context name="MustacheInlineComment" attribute="Comment" lineEndContext="#stay"> 			<Detect2Chars context="#pop" attribute="Comment" char="}" char1="}" endRegion="MustacheInlineComment" />+			<DetectSpaces /> 			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" /> 		</context>  		<!-- Tags -->@@ -274,7 +279,9 @@ 			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" /> 			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" /> 			<IncludeRules context="MustacheVariables" />+			<DetectSpaces /> 			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" /> 		</context>  		<context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">@@ -380,6 +387,8 @@ 		</context> 		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop"> 			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />+			<DetectSpaces />+			<IncludeRules context="##Alerts" /> 		</context>  		<!-- Overwrite some rules of 'javascript.xml' to add Mustache variables -->@@ -463,7 +472,7 @@  <general> 	<comments>-		<comment name="multiLine" start="{{!" end="}}" />+		<comment name="multiLine" start="{{!--" end="--}}" region="HandlebarsInlineComment" /> 	</comments> </general> 
syntax/nasm.xml view
@@ -1,892 +1,2782 @@ <?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE language SYSTEM "language.dtd">-<!---  NASM Intel x86 assembly syntax--  Created: Nicola Gigante <nicola.gigante@gmail.com>-    Changes: Bogdan Drozdowski (bogdandr@op.pl)-  Version: 1.3-             Lyle Putnam (lcputnam@gmail.com)-  Version: 1.4--Changes from 1.0:-  15/01/2006: version 1.1-    Added the rol instruction (bytewise rotate left) to the keywords list.-  17/01/2006: version 1.2-    Remade the list of instructions directly from the nasm documentation.-  22/04/2006: version 1.3 from Bogdan Drozdowski (bogdandr@op.pl):-    Removed duplicates form the instruction list and made it alphabetical.-    Added new instructions (some SSE* and 64-bit, NASM may not know all of them).-    Corrections in register list and a few new ones (not 64-bit).-    Changed regexes for hex, octal and bin numbers. Now words like-      "change" and "blah" will NOT have the "ch" and "ah" coloured.-  24/07/2011: Version 1.4 from Lyle Putnam (lcputnam@gmail.com):-    The above change to fix the regex for hex numbers was incorrect on Kate-    3.6.2. Fixed.--  GNU GENERAL PUBLIC LICENCE--This program, including associated files, is free software.  You may-distribute it and/or modify it under the terms of the GNU General Public-License as published by the Free Software Foundation; either Version 2 of-the license, or (at your option) any later version.--This program is distributed in the hope that it will be useful, but-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License-for more details.--You should have received a copy of the GNU General Public License along-with this program; if not, write to the Free Software Foundation, Inc.,-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA--->-<language name="Intel x86 (NASM)" section="Assembler" version="3" kateversion="2.3" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">-  <highlighting>-    <list name="registers">-      <!-- General purpose registers -->-      <item>eax</item>-      <item>ax</item>-      <item>ah</item>-      <item>al</item>-      <item>ebx</item>-      <item>bx</item>-      <item>bh</item>-      <item>bl</item>-      <item>ecx</item>-      <item>cx</item>-      <item>ch</item>-      <item>cl</item>-      <item>edx</item>-      <item>dx</item>-      <item>dh</item>-      <item>dl</item>-      <item>ebp</item>-      <item>bp</item>-      <item>esi</item>-      <item>si</item>-      <item>edi</item>-      <item>di</item>-      <!---      <item>eip</item>-      <item>ip</item>-      -->-      <item>esp</item>-      <item>sp</item>-      <!-- Segmentation registers -->-      <item>cs</item>-      <item>ds</item>-      <item>es</item>-      <item>fs</item>-      <item>gs</item>-      <item>ss</item>-      <!-- Control registers -->-      <item>cr0</item>-      <!--<item>cr1</item>-->-      <item>cr2</item>-      <item>cr3</item>-      <item>cr4</item>-      <!-- Debug registers -->-      <item>dr0</item>-      <item>dr1</item>-      <item>dr2</item>-      <item>dr3</item>-      <item>dr6</item>-      <item>dr7</item>-      <!-- x87 FPU Registers -->-      <item>st</item>-      <!-- MMX registers -->-      <item>mm0</item>-      <item>mm1</item>-      <item>mm2</item>-      <item>mm3</item>-      <item>mm4</item>-      <item>mm5</item>-      <item>mm6</item>-      <item>mm7</item>-      <!-- XMM registers -->-      <item>xmm0</item>-      <item>xmm1</item>-      <item>xmm2</item>-      <item>xmm3</item>-      <item>xmm4</item>-      <item>xmm5</item>-      <item>xmm6</item>-      <item>xmm7</item>-    </list>-    <list name="instructions">-      <item>aaa</item>-      <item>aad</item>-      <item>aam</item>-      <item>aas</item>-      <item>adc</item>-      <item>add</item>-      <item>addpd</item>-      <item>addps</item>-      <item>addsd</item>-      <item>addss</item>-      <item>addsubpd</item>-      <item>addsubps</item>-      <item>and</item>-      <item>andnpd</item>-      <item>andnps</item>-      <item>andpd</item>-      <item>andps</item>-      <item>arpl</item>-      <item>bound</item>-      <item>bsf</item>-      <item>bsr</item>-      <item>bswap</item>-      <item>bt</item>-      <item>btc</item>-      <item>btr</item>-      <item>bts</item>-      <item>call</item>-      <item>cbw</item>-      <item>cwde</item>-      <item>cwd</item>-      <item>cdq</item>-      <item>cdqe</item>-      <item>cqo</item>-      <item>clc</item>-      <item>cld</item>-      <item>clgi</item>-      <item>cli</item>-      <item>clts</item>-      <item>clflush</item>-      <item>cmc</item>-      <item>cmova</item>-      <item>cmovae</item>-      <item>cmovb</item>-      <item>cmovbe</item>-      <item>cmovc</item>-      <item>cmove</item>-      <item>cmovg</item>-      <item>cmovge</item>-      <item>cmovl</item>-      <item>cmovle</item>-      <item>cmovna</item>-      <item>cmovnae</item>-      <item>cmovnb</item>-      <item>cmovnbe</item>-      <item>cmovnc</item>-      <item>cmovne</item>-      <item>cmovng</item>-      <item>cmovnge</item>-      <item>cmovnl</item>-      <item>cmovnle</item>-      <item>cmovno</item>-      <item>cmovnp</item>-      <item>cmovns</item>-      <item>cmovnz</item>-      <item>cmovo</item>-      <item>cmovp</item>-      <item>cmovpe</item>-      <item>cmovpo</item>-      <item>cmovs</item>-      <item>cmovz</item>-      <item>cmp</item>-      <item>cmpeqpd</item>-      <item>cmpeqps</item>-      <item>cmpeqsd</item>-      <item>cmpeqss</item>-      <item>cmplepd</item>-      <item>cmpleps</item>-      <item>cmplesd</item>-      <item>cmpless</item>-      <item>cmpltpd</item>-      <item>cmpltps</item>-      <item>cmpltsd</item>-      <item>cmpltss</item>-      <item>cmpneqpd</item>-      <item>cmpneqps</item>-      <item>cmpneqsd</item>-      <item>cmpneqss</item>-      <item>cmpnlepd</item>-      <item>cmpnleps</item>-      <item>cmpnlesd</item>-      <item>cmpnless</item>-      <item>cmpnltpd</item>-      <item>cmpnltps</item>-      <item>cmpnltsd</item>-      <item>cmpnltss</item>-      <item>cmpordpd</item>-      <item>cmpordps</item>-      <item>cmpordsd</item>-      <item>cmpordss</item>-      <item>cmppd</item>-      <item>cmpps</item>-      <item>cmps</item>-      <item>cmpsb</item>-      <item>cmpsd</item>-      <item>cmpss</item>-      <item>cmpsw</item>-      <item>cmpunordpd</item>-      <item>cmpunordps</item>-      <item>cmpunordsd</item>-      <item>cmpunordss</item>-      <item>cmpxchg</item>-      <item>cmpxchg486</item>-      <item>cmpxchg8b</item>-      <item>cmpxchg16b</item>-      <item>comisd</item>-      <item>comiss</item>-      <item>cpuid</item>-      <item>cvtdq2pd</item>-      <item>cvtdq2ps</item>-      <item>cvtpd2dq</item>-      <item>cvtpd2pi</item>-      <item>cvtpd2ps</item>-      <item>cvtpi2pd</item>-      <item>cvtpi2ps</item>-      <item>cvtps2dq</item>-      <item>cvtps2pd</item>-      <item>cvtps2pi</item>-      <item>cvtsd2si</item>-      <item>cvtsd2ss</item>-      <item>cvtsi2sd</item>-      <item>cvtsi2ss</item>-      <item>cvtss2sd</item>-      <item>cvtss2si</item>-      <item>cvttpd2dq</item>-      <item>cvttpd2pi</item>-      <item>cvttps2dq</item>-      <item>cvttps2pi</item>-      <item>cvttsd2si</item>-      <item>cvttss2si</item>-      <item>daa</item>-      <item>das</item>-      <item>dec</item>-      <item>div</item>-      <item>divpd</item>-      <item>divps</item>-      <item>divsd</item>-      <item>divss</item>-      <item>emms</item>-      <item>enter</item>-      <item>f2xm1</item>-      <item>fabs</item>-      <item>fadd</item>-      <item>faddp</item>-      <item>fbld</item>-      <item>fbstp</item>-      <item>fchs</item>-      <item>fclex</item>-      <item>fnclex</item>-      <item>fcmovb</item>-      <item>fcmovbe</item>-      <item>fcmove</item>-      <item>fcmovnb</item>-      <item>fcmovnbe</item>-      <item>fcmovne</item>-      <item>fcmovnu</item>-      <item>fcmovu</item>-      <item>fcom</item>-      <item>fcomp</item>-      <item>fcompp</item>-      <item>fcomi</item>-      <item>fcomip</item>-      <item>fcos</item>-      <item>fdecstp</item>-      <item>fdisi</item>-      <item>feni</item>-      <item>fdiv</item>-      <item>fdivr</item>-      <item>fdivp</item>-      <item>fdivrp</item>-      <item>femms</item>-      <item>ffree</item>-      <item>ffreep</item>-      <item>fiadd</item>-      <item>ficom</item>-      <item>ficomp</item>-      <item>fidiv</item>-      <item>fidivr</item>-      <item>fild</item>-      <item>fimul</item>-      <item>fincstp</item>-      <item>finit</item>-      <item>fist</item>-      <item>fistp</item>-      <item>fisttp</item>-      <item>fisub</item>-      <item>fisubr</item>-      <item>fld</item>-      <item>fld1</item>-      <item>fldl2e</item>-      <item>fldl2t</item>-      <item>fldlg2</item>-      <item>fldln2</item>-      <item>fldcw</item>-      <item>fldenv</item>-      <item>fldpi</item>-      <item>fldz</item>-      <item>fmul</item>-      <item>fmulp</item>-      <item>fndisi</item>-      <item>fneni</item>-      <item>fninit</item>-      <item>fnop</item>-      <item>fnsave</item>-      <item>fnstcw</item>-      <item>fnstenv</item>-      <item>fnstsw</item>-      <item>fnwait</item>-      <item>fpatan</item>-      <item>fptan</item>-      <item>fprem</item>-      <item>fprem1</item>-      <item>frndint</item>-      <item>frstor</item>-      <item>fsave</item>-      <item>fscale</item>-      <item>fsetpm</item>-      <item>fsin</item>-      <item>fsincos</item>-      <item>fsqrt</item>-      <item>fst</item>-      <item>fstp</item>-      <item>fstcw</item>-      <item>fstenv</item>-      <item>fstsw</item>-      <item>fsub</item>-      <item>fsubr</item>-      <item>fsubp</item>-      <item>fsubrp</item>-      <item>ftst</item>-      <item>fucom</item>-      <item>fucomp</item>-      <item>fucompp</item>-      <item>fucomi</item>-      <item>fucomip</item>-      <item>fwait</item>-      <item>fxam</item>-      <item>fxch</item>-      <item>fxrstor</item>-      <item>fxsave</item>-      <item>fxtract</item>-      <item>fyl2x</item>-      <item>fyl2xp1</item>-      <item>haddpd</item>-      <item>haddps</item>-      <item>hlt</item>-      <item>hsubpd</item>-      <item>hsubps</item>-      <item>ibts</item>-      <item>idiv</item>-      <item>imul</item>-      <item>in</item>-      <item>inc</item>-      <item>ins</item>-      <item>insb</item>-      <item>insd</item>-      <item>insw</item>-      <item>int</item>-      <item>int1</item>-      <item>int3</item>-      <item>into</item>-      <item>invd</item>-      <item>invlpg</item>-      <item>invlpga</item>-      <item>iret</item>-      <item>iretd</item>-      <item>iretq</item>-      <item>iretw</item>-      <item>ja</item>-      <item>jae</item>-      <item>jb</item>-      <item>jbe</item>-      <item>jc</item>-      <item>je</item>-      <item>jg</item>-      <item>jge</item>-      <item>jl</item>-      <item>jle</item>-      <item>jna</item>-      <item>jnae</item>-      <item>jnb</item>-      <item>jnbe</item>-      <item>jnc</item>-      <item>jne</item>-      <item>jng</item>-      <item>jnge</item>-      <item>jnl</item>-      <item>jnle</item>-      <item>jno</item>-      <item>jnp</item>-      <item>jns</item>-      <item>jnz</item>-      <item>jo</item>-      <item>jp</item>-      <item>jpe</item>-      <item>jpo</item>-      <item>js</item>-      <item>jz</item>-      <item>jcxz</item>-      <item>jecxz</item>-      <item>jrcxz</item>-      <item>jmp</item>-      <item>lahf</item>-      <item>lar</item>-      <item>lddqu</item>-      <item>ldmxcsr</item>-      <item>lds</item>-      <item>les</item>-      <item>lea</item>-      <item>leave</item>-      <item>lfence</item>-      <item>lfs</item>-      <item>lgdt</item>-      <item>lgs</item>-      <item>lidt</item>-      <item>lldt</item>-      <item>lmsw</item>-      <item>loadall</item>-      <item>loadall286</item>-      <item>lods</item>-      <item>lodsb</item>-      <item>lodsd</item>-      <item>lodsq</item>-      <item>lodsw</item>-      <item>loop</item>-      <item>loope</item>-      <item>loopne</item>-      <item>loopnz</item>-      <item>loopz</item>-      <item>lsl</item>-      <item>lss</item>-      <item>ltr</item>-      <item>maskmovdqu</item>-      <item>maskmovq</item>-      <item>maxpd</item>-      <item>maxps</item>-      <item>maxsd</item>-      <item>maxss</item>-      <item>mfence</item>-      <item>minpd</item>-      <item>minps</item>-      <item>minsd</item>-      <item>minss</item>-      <item>monitor</item>-      <item>mov</item>-      <item>movapd</item>-      <item>movaps</item>-      <item>movd</item>-      <item>movddup</item>-      <item>movdq2q</item>-      <item>movdqa</item>-      <item>movdqu</item>-      <item>movhlps</item>-      <item>movhpd</item>-      <item>movhps</item>-      <item>movlhps</item>-      <item>movlpd</item>-      <item>movlps</item>-      <item>movmskpd</item>-      <item>movmskps</item>-      <item>movntdq</item>-      <item>movnti</item>-      <item>movntpd</item>-      <item>movntps</item>-      <item>movntq</item>-      <item>movq</item>-      <item>movq2dq</item>-      <item>movs</item>-      <item>movsb</item>-      <item>movsd</item>-      <item>movshdup</item>-      <item>movsldup</item>-      <item>movsq</item>-      <item>movss</item>-      <item>movsx</item>-      <item>movsxd</item>-      <item>movsw</item>-      <item>movupd</item>-      <item>movups</item>-      <item>movzx</item>-      <item>mul</item>-      <item>mulpd</item>-      <item>mulps</item>-      <item>mulsd</item>-      <item>mulss</item>-      <item>mwait</item>-      <item>neg</item>-      <item>nop</item>-      <item>not</item>-      <item>or</item>-      <item>orpd</item>-      <item>orps</item>-      <item>out</item>-      <item>outs</item>-      <item>outsb</item>-      <item>outsw</item>-      <item>outsd</item>-      <item>packssdw</item>-      <item>packsswb</item>-      <item>packuswb</item>-      <item>paddb</item>-      <item>paddd</item>-      <item>paddq</item>-      <item>paddsb</item>-      <item>paddsw</item>-      <item>paddusb</item>-      <item>paddusw</item>-      <item>paddw</item>-      <item>pand</item>-      <item>pandn</item>-      <item>pause</item>-      <item>pavgb</item>-      <item>pavgusb</item>-      <item>pavgw</item>-      <item>pcmpeqb</item>-      <item>pcmpeqw</item>-      <item>pcmpeqd</item>-      <item>pcmpgtb</item>-      <item>pcmpgtw</item>-      <item>pcmpgtd</item>-      <item>pdistib</item>-      <item>pextrw</item>-      <item>pf2id</item>-      <item>pf2iw</item>-      <item>pfacc</item>-      <item>pfadd</item>-      <item>pfcmpeq</item>-      <item>pfcmpge</item>-      <item>pfcmpgt</item>-      <item>pfmax</item>-      <item>pfmin</item>-      <item>pfmul</item>-      <item>pfnacc</item>-      <item>pfpnacc</item>-      <item>pfrcp</item>-      <item>pfrcpit1</item>-      <item>pfrcpit2</item>-      <item>pfrsqit1</item>-      <item>pfrsqrt</item>-      <item>pfsub</item>-      <item>pfsubr</item>-      <item>pi2fd</item>-      <item>pi2fw</item>-      <item>pinsrw</item>-      <item>pmachriw</item>-      <item>pmaddwd</item>-      <item>pmagw</item>-      <item>pmaxsw</item>-      <item>pmaxub</item>-      <item>pminsw</item>-      <item>pminub</item>-      <item>pmovmskb</item>-      <item>pmulhrw</item>-      <item>pmulhuw</item>-      <item>pmulhw</item>-      <item>pmullw</item>-      <item>pmuludq</item>-      <item>pmvgezb</item>-      <item>pmvlzb</item>-      <item>pmvnzb</item>-      <item>pmvzb</item>-      <item>pop</item>-      <item>popa</item>-      <item>popaw</item>-      <item>popad</item>-      <item>popf</item>-      <item>popfw</item>-      <item>popfd</item>-      <item>popfq</item>-      <item>por</item>-      <item>prefetch</item>-      <item>prefetchnta</item>-      <item>prefetcht0</item>-      <item>prefetcht1</item>-      <item>prefetcht2</item>-      <item>prefetchw</item>-      <item>psadbw</item>-      <item>pshufd</item>-      <item>pshufhw</item>-      <item>pshuflw</item>-      <item>pshufw</item>-      <item>pslld</item>-      <item>pslldq</item>-      <item>psllq</item>-      <item>psllw</item>-      <item>psrad</item>-      <item>psraw</item>-      <item>psrld</item>-      <item>psrldq</item>-      <item>psrlq</item>-      <item>psrlw</item>-      <item>psubb</item>-      <item>psubd</item>-      <item>psubq</item>-      <item>psubsb</item>-      <item>psubsiw</item>-      <item>psubsw</item>-      <item>psubusb</item>-      <item>psubusw</item>-      <item>psubw</item>-      <item>pswapd</item>-      <item>punpckhbw</item>-      <item>punpckhdq</item>-      <item>punpckhqdq</item>-      <item>punpckhwd</item>-      <item>punpcklbw</item>-      <item>punpckldq</item>-      <item>punpcklqdq</item>-      <item>punpcklwd</item>-      <item>push</item>-      <item>pusha</item>-      <item>pushad</item>-      <item>pushaw</item>-      <item>pushf</item>-      <item>pushfd</item>-      <item>pushfq</item>-      <item>pushfw</item>-      <item>pxor</item>-      <item>rcl</item>-      <item>rcr</item>-      <item>rcpps</item>-      <item>rcpss</item>-      <item>rdmsr</item>-      <item>rdpmc</item>-      <item>rdshr</item>-      <item>rdtsc</item>-      <item>rdtscp</item>-      <item>ret</item>-      <item>retf</item>-      <item>retn</item>-      <item>rol</item>-      <item>ror</item>-      <item>rsdc</item>-      <item>rsldt</item>-      <item>rsm</item>-      <item>rsqrtps</item>-      <item>rsqrtss</item>-      <item>rsts</item>-      <item>sahf</item>-      <item>sal</item>-      <item>sar</item>-      <item>salc</item>-      <item>sbb</item>-      <item>scas</item>-      <item>scasb</item>-      <item>scasd</item>-      <item>scasq</item>-      <item>scasw</item>-      <item>seta</item>-      <item>setae</item>-      <item>setb</item>-      <item>setbe</item>-      <item>setc</item>-      <item>sete</item>-      <item>setg</item>-      <item>setge</item>-      <item>setl</item>-      <item>setle</item>-      <item>setna</item>-      <item>setnae</item>-      <item>setnb</item>-      <item>setnbe</item>-      <item>setnc</item>-      <item>setne</item>-      <item>setng</item>-      <item>setnge</item>-      <item>setnl</item>-      <item>setnle</item>-      <item>setno</item>-      <item>setnp</item>-      <item>setns</item>-      <item>setnz</item>-      <item>seto</item>-      <item>setp</item>-      <item>setpe</item>-      <item>setpo</item>-      <item>sets</item>-      <item>setz</item>-      <item>sfence</item>-      <item>sgdt</item>-      <item>shl</item>-      <item>shld</item>-      <item>shr</item>-      <item>shrd</item>-      <item>shufpd</item>-      <item>shufps</item>-      <item>sidt</item>-      <item>skinit</item>-      <item>sldt</item>-      <item>smi</item>-      <item>smint</item>-      <item>smintold</item>-      <item>smsw</item>-      <item>sqrtpd</item>-      <item>sqrtps</item>-      <item>sqrtsd</item>-      <item>sqrtss</item>-      <item>stc</item>-      <item>std</item>-      <item>stgi</item>-      <item>sti</item>-      <item>stmxcsr</item>-      <item>stos</item>-      <item>stosb</item>-      <item>stosd</item>-      <item>stosq</item>-      <item>stosw</item>-      <item>str</item>-      <item>sub</item>-      <item>subpd</item>-      <item>subps</item>-      <item>subsd</item>-      <item>subss</item>-      <item>svdc</item>-      <item>svldt</item>-      <item>svts</item>-      <item>swapgs</item>-      <item>syscall</item>-      <item>sysenter</item>-      <item>sysexit</item>-      <item>sysret</item>-      <item>test</item>-      <item>ucomisd</item>-      <item>ucomiss</item>-      <item>ud0</item>-      <item>ud1</item>-      <item>ud2</item>-      <item>umov</item>-      <item>unpckhpd</item>-      <item>unpckhps</item>-      <item>unpcklpd</item>-      <item>unpcklps</item>-      <item>verr</item>-      <item>verw</item>-      <item>vmload</item>-      <item>vmmcall</item>-      <item>vmrun</item>-      <item>vmsave</item>-      <item>wait</item>-      <item>wbinvd</item>-      <item>wrmsr</item>-      <item>wrshr</item>-      <item>xadd</item>-      <item>xbts</item>-      <item>xchg</item>-      <item>xlat</item>-      <item>xlatb</item>-      <item>xor</item>-      <item>xorpd</item>-      <item>xorps</item>-    </list>-    <list name="Data">-      <!-- repeat some data declaration -->-      <item>times</item>-      <!-- constants -->-      <item>equ</item>-      <!-- Initialized data -->-      <item>db</item>-      <item>dw</item>-      <item>dd</item>-      <item>dq</item>-      <item>dt</item>-      <!-- Uninitialized data -->-      <item>resb</item>-      <item>resw</item>-      <item>resd</item>-      <item>resq</item>-      <item>rest</item>-      <!-- binary file include -->-      <item>incbin</item>-      <!-- operand size -->-      <item>byte</item>-      <item>word</item>-      <item>dword</item>-      <item>qword</item>-      <item>short</item>-      <item>ptr</item>-    </list>-    <list name="NASM Keywords">-      <!-- NASM directives -->-      <item>absolute</item>-      <item>bits</item>-      <item>common</item>-      <item>extern</item>-      <item>global</item>-      <item>org</item>-      <item>section</item>-      <item>seg</item>-      <item>segment</item>-      <item>strict</item>-      <item>use16</item>-      <item>use32</item>-      <item>wrt</item>-      <!-- NASM standard macros -->-      <item>struc</item>-      <item>endstruc</item>-      <item>istruc</item>-      <item>at</item>-      <item>iend</item>-      <item>align</item>-      <item>alignb</item>--      <item>__SECT__</item>-      <item>__NASM_MAJOR__</item>-      <item>__NASM_MINOR__</item>-      <item>__NASM_SUBMINOR__</item>-      <item>___NASM_PATCHLEVEL__</item>-      <item>__NASM_VERSION_ID__</item>-      <item>__NASM_VER__</item>-      <item>__FILE__</item>-      <item>__LINE__</item>-    </list>-    <contexts>-      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">-        <keyword attribute="Registers" context="#stay" String="registers"/>-        <keyword attribute="Data" context="#stay" String="Data"/>-        <keyword attribute="Instructions" context="#stay" String="instructions"/>-        <keyword attribute="NASM Keywords" context="#stay" String="NASM Keywords"/>-        <DetectChar attribute="Comment" context="Comment" char=";"/>-        <DetectChar attribute="Preprocessor" context="Preprocessor" char="%"/>-        <AnyChar attribute="String" context="String" String="&quot;'"/>-        <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9_.$]+:"/>-        <!-- Conditional instructions -->-        <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/>-        <!-- The NASM's CPU directive -->-        <RegExpr attribute="NASM Keywords" context="#stay" String="cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*"/>-        <!-- hexadecimal numbers -->-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[0-9]+[a-f0-9]*h)([ \t,]+|$)"/>-        <!-- octal and binary numbers -->-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/>-        <DetectChar attribute="Number" context="#stay" char="$"/>-        <HlCOct attribute="BaseN" context="#stay"/>-        <HlCHex attribute="BaseN" context="#stay"/>-        <Float attribute="Float" context="#stay"/>-        <Int attribute="Number" context="#stay"/>-        <HlCChar attribute="Char" context="#stay"/>-      </context>-      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>-      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>-      <context name="String" attribute="String" lineEndContext="#pop">-        <AnyChar attribute="String" context="#pop" String="&quot;'"/>-      </context>-    </contexts>--    <itemDatas>-      <itemData name="Normal Text" defStyleNum="dsNormal"/>-      <itemData name="Registers" defStyleNum="dsKeyword"/>-      <itemData name="Instructions" defStyleNum="dsKeyword"/>-      <itemData name="NASM Keywords" defStyleNum="dsKeyword"/>-      <itemData name="Comment" defStyleNum="dsComment"/>-      <itemData name="Label" defStyleNum="dsFunction"/>-      <itemData name="Data" defStyleNum="dsDataType"/>-      <itemData name="BaseN" defStyleNum="dsBaseN"/>-      <itemData name="Float" defStyleNum="dsFloat"/>-      <itemData name="Number" defStyleNum="dsDecVal"/>-      <itemData name="Char" defStyleNum="dsChar"/>-      <itemData name="String" defStyleNum="dsString"/>-      <itemData name="Preprocessor" defStyleNum="dsOthers"/>-    </itemDatas>-  </highlighting>-  <general>-    <keywords casesensitive="0"/>-    <comments>-      <comment name="singleLine" start=";"/>+<!DOCTYPE language SYSTEM "language.dtd"+[+    <!ENTITY float1 "0x[0-9a-f_]*+(?:(?:\.[0-9a-f_]*+)?p[-+]?[0-9_]++|\.[0-9a-f_]*+)">+    <!ENTITY float2 "0++p([0-9][0-9_]*+)?">+    <!ENTITY float3 "[0-9][0-9_]*+(?:\.(?!nolist)[0-9_]*+(?:e[-+]?[0-9_]*+)?|(?=p))">+    <!ENTITY float "&float1;|&float2;|&float3;">++    <!ENTITY prefixed16 "0[hx][0-9a-f_]++">+    <!ENTITY prefixed8 "0[oq][0-7_]++">+    <!ENTITY prefixed2 "0b[01_]++\b|0y[01_]++">+    <!ENTITY prefixed10 "0d[0-9_]++\b|0t[0-9_]++">+    <!ENTITY prefixedBaseN "&prefixed16;|&prefixed8;|&prefixed2;|&prefixed10;">++    <!ENTITY hex_cont "[0-9a-f_]*+(?=[hx])">+    <!ENTITY oct_hex_cont "[0-7_]*+(?:&hex_cont;|(?=[oqhx]))">+    <!ENTITY hex "[0-9]&hex_cont;">+    <!ENTITY oct_hex "[0-7]&oct_hex_cont;">+    <!ENTITY bin_oct_hex "[01][01_]*+(?:&oct_hex_cont;|(?=[byoqhx]))">+    <!ENTITY baseN "&bin_oct_hex;|&oct_hex;|&hex;">++    <!ENTITY number "[0-9][0-9_]*+(to[0-9]+|(?=[dt]))?">+]>+<!--+  NASM Intel x86 assembly syntax++  Created: Nicola Gigante <nicola.gigante@gmail.com>+    Changes: Bogdan Drozdowski (bogdandr@op.pl)+  Version: 1.3+             Lyle Putnam (lcputnam@gmail.com)+  Version: 1.4++Changes from 1.0:+  15/01/2006: version 1.1+    Added the rol instruction (bytewise rotate left) to the keywords list.+  17/01/2006: version 1.2+    Remade the list of instructions directly from the nasm documentation.+  22/04/2006: version 1.3 from Bogdan Drozdowski (bogdandr@op.pl):+    Removed duplicates form the instruction list and made it alphabetical.+    Added new instructions (some SSE* and 64-bit, NASM may not know all of them).+    Corrections in register list and a few new ones (not 64-bit).+    Changed regexes for hex, octal and bin numbers. Now words like+      "change" and "blah" will NOT have the "ch" and "ah" coloured.+  24/07/2011: Version 1.4 from Lyle Putnam (lcputnam@gmail.com):+    The above change to fix the regex for hex numbers was incorrect on Kate+    3.6.2. Fixed.++  GNU GENERAL PUBLIC LICENCE++This program, including associated files, is free software.  You may+distribute it and/or modify it under the terms of the GNU General Public+License as published by the Free Software Foundation; either Version 2 of+the license, or (at your option) any later version.++This program is distributed in the hope that it will be useful, but+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY+or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License+for more details.++You should have received a copy of the GNU General Public License along+with this program; if not, write to the Free Software Foundation, Inc.,+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA+-->+<language name="Intel x86 (NASM)" section="Assembler" version="6" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">+  <highlighting>+    <list name="registers">+      <!-- General purpose registers -->+      <item>rax</item>+      <item>eax</item>+      <item>ax</item>+      <item>ah</item>+      <item>al</item>+      <item>rbx</item>+      <item>ebx</item>+      <item>bx</item>+      <item>bh</item>+      <item>bl</item>+      <item>rcx</item>+      <item>ecx</item>+      <item>cx</item>+      <item>ch</item>+      <item>cl</item>+      <item>rdx</item>+      <item>edx</item>+      <item>dx</item>+      <item>dh</item>+      <item>dl</item>+      <item>rbp</item>+      <item>ebp</item>+      <item>bp</item>+      <item>bpl</item>+      <item>rsi</item>+      <item>esi</item>+      <item>si</item>+      <item>sil</item>+      <item>rdi</item>+      <item>edi</item>+      <item>di</item>+      <item>dil</item>++      <item>rip</item>+      <item>eip</item>+      <item>ip</item>++      <item>rsp</item>+      <item>esp</item>+      <item>sp</item>+      <item>spl</item>+      <item>r8</item>+      <item>r8d</item>+      <item>r8w</item>+      <item>r8b</item>+      <item>r9</item>+      <item>r9d</item>+      <item>r9w</item>+      <item>r9b</item>+      <item>r10</item>+      <item>r10d</item>+      <item>r10w</item>+      <item>r10b</item>+      <item>r11</item>+      <item>r11d</item>+      <item>r11w</item>+      <item>r11b</item>+      <item>r12</item>+      <item>r12d</item>+      <item>r12w</item>+      <item>r12b</item>+      <item>r13</item>+      <item>r13d</item>+      <item>r13w</item>+      <item>r13b</item>+      <item>r14</item>+      <item>r14d</item>+      <item>r14w</item>+      <item>r14b</item>+      <item>r15</item>+      <item>r15d</item>+      <item>r15w</item>+      <item>r15b</item>+      <!-- Segmentation registers -->+      <item>cs</item>+      <item>ds</item>+      <item>es</item>+      <item>fs</item>+      <item>gs</item>+      <item>ss</item>+      <!-- Control registers -->+      <item>cr0</item>+      <!--<item>cr1</item>-->+      <item>cr2</item>+      <item>cr3</item>+      <item>cr4</item>+      <!-- Debug registers -->+      <item>dr0</item>+      <item>dr1</item>+      <item>dr2</item>+      <item>dr3</item>+      <item>dr6</item>+      <item>dr7</item>+      <!-- x87 FPU Registers -->+      <item>st</item>+      <!-- MMX registers -->+      <item>mm0</item>+      <item>mm1</item>+      <item>mm2</item>+      <item>mm3</item>+      <item>mm4</item>+      <item>mm5</item>+      <item>mm6</item>+      <item>mm7</item>+      <!-- XMM registers -->+      <item>xmm0</item>+      <item>xmm1</item>+      <item>xmm2</item>+      <item>xmm3</item>+      <item>xmm4</item>+      <item>xmm5</item>+      <item>xmm6</item>+      <item>xmm7</item>+      <item>xmm8</item>+      <item>xmm9</item>+      <item>xmm10</item>+      <item>xmm11</item>+      <item>xmm12</item>+      <item>xmm13</item>+      <item>xmm14</item>+      <item>xmm15</item>+      <item>xmm16</item>+      <item>xmm17</item>+      <item>xmm18</item>+      <item>xmm19</item>+      <item>xmm20</item>+      <item>xmm21</item>+      <item>xmm22</item>+      <item>xmm23</item>+      <item>xmm24</item>+      <item>xmm25</item>+      <item>xmm26</item>+      <item>xmm27</item>+      <item>xmm28</item>+      <item>xmm29</item>+      <item>xmm30</item>+      <item>xmm31</item>+      <!-- YMM registers -->+      <item>ymm0</item>+      <item>ymm1</item>+      <item>ymm2</item>+      <item>ymm3</item>+      <item>ymm4</item>+      <item>ymm5</item>+      <item>ymm6</item>+      <item>ymm7</item>+      <item>ymm8</item>+      <item>ymm9</item>+      <item>ymm10</item>+      <item>ymm11</item>+      <item>ymm12</item>+      <item>ymm13</item>+      <item>ymm14</item>+      <item>ymm15</item>+      <item>ymm16</item>+      <item>ymm17</item>+      <item>ymm18</item>+      <item>ymm19</item>+      <item>ymm20</item>+      <item>ymm21</item>+      <item>ymm22</item>+      <item>ymm23</item>+      <item>ymm24</item>+      <item>ymm25</item>+      <item>ymm26</item>+      <item>ymm27</item>+      <item>ymm28</item>+      <item>ymm29</item>+      <item>ymm30</item>+      <item>ymm31</item>+      <!-- ZMM registers -->+      <item>zmm0</item>+      <item>zmm1</item>+      <item>zmm2</item>+      <item>zmm3</item>+      <item>zmm4</item>+      <item>zmm5</item>+      <item>zmm6</item>+      <item>zmm7</item>+      <item>zmm8</item>+      <item>zmm9</item>+      <item>zmm10</item>+      <item>zmm11</item>+      <item>zmm12</item>+      <item>zmm13</item>+      <item>zmm14</item>+      <item>zmm15</item>+      <item>zmm16</item>+      <item>zmm17</item>+      <item>zmm18</item>+      <item>zmm19</item>+      <item>zmm20</item>+      <item>zmm21</item>+      <item>zmm22</item>+      <item>zmm23</item>+      <item>zmm24</item>+      <item>zmm25</item>+      <item>zmm26</item>+      <item>zmm27</item>+      <item>zmm28</item>+      <item>zmm29</item>+      <item>zmm30</item>+      <item>zmm31</item>+    </list>++    <list name="instructions">+      <item>aaa</item>+      <item>aad</item>+      <item>aam</item>+      <item>aas</item>+      <item>adc</item>+      <item>adcx</item>+      <item>add</item>+      <item>addpd</item>+      <item>addps</item>+      <item>addsd</item>+      <item>addss</item>+      <item>addsubpd</item>+      <item>addsubps</item>+      <item>adox</item>+      <item>aesdec</item>+      <item>aesdeclast</item>+      <item>aesenc</item>+      <item>aesenclast</item>+      <item>aesimc</item>+      <item>aeskeygenassist</item>+      <item>and</item>+      <item>andn</item>+      <item>andnpd</item>+      <item>andnps</item>+      <item>andpd</item>+      <item>andps</item>+      <item>arpl</item>+      <item>bb0_reset</item>+      <item>bb1_reset</item>+      <item>bextr</item>+      <item>blcfill</item>+      <item>blci</item>+      <item>blcic</item>+      <item>blcmsk</item>+      <item>blcs</item>+      <item>blendpd</item>+      <item>blendps</item>+      <item>blendvpd</item>+      <item>blendvps</item>+      <item>blsfill</item>+      <item>blsi</item>+      <item>blsic</item>+      <item>blsmsk</item>+      <item>blsr</item>+      <item>bndcl</item>+      <item>bndcn</item>+      <item>bndcu</item>+      <item>bndldx</item>+      <item>bndmk</item>+      <item>bndmov</item>+      <item>bndstx</item>+      <item>bound</item>+      <item>bsf</item>+      <item>bsr</item>+      <item>bswap</item>+      <item>bt</item>+      <item>btc</item>+      <item>btr</item>+      <item>bts</item>+      <item>bzhi</item>+      <item>cbw</item>+      <item>cdq</item>+      <item>cdqe</item>+      <item>clac</item>+      <item>clc</item>+      <item>cld</item>+      <item>cldemote</item>+      <item>clflush</item>+      <item>clflushopt</item>+      <item>clgi</item>+      <item>cli</item>+      <item>clrssbsy</item>+      <item>clts</item>+      <item>clwb</item>+      <item>clzero</item>+      <item>cmc</item>+      <item>cmova</item>+      <item>cmovae</item>+      <item>cmovb</item>+      <item>cmovbe</item>+      <item>cmovc</item>+      <item>cmove</item>+      <item>cmovg</item>+      <item>cmovge</item>+      <item>cmovl</item>+      <item>cmovle</item>+      <item>cmovna</item>+      <item>cmovnae</item>+      <item>cmovnb</item>+      <item>cmovnbe</item>+      <item>cmovnc</item>+      <item>cmovne</item>+      <item>cmovng</item>+      <item>cmovnge</item>+      <item>cmovnl</item>+      <item>cmovnle</item>+      <item>cmovno</item>+      <item>cmovnp</item>+      <item>cmovns</item>+      <item>cmovnz</item>+      <item>cmovo</item>+      <item>cmovp</item>+      <item>cmovpe</item>+      <item>cmovpo</item>+      <item>cmovs</item>+      <item>cmovz</item>+      <item>cmp</item>+      <item>cmpeqpd</item>+      <item>cmpeqps</item>+      <item>cmpeqsd</item>+      <item>cmpeqss</item>+      <item>cmplepd</item>+      <item>cmpleps</item>+      <item>cmplesd</item>+      <item>cmpless</item>+      <item>cmpltpd</item>+      <item>cmpltps</item>+      <item>cmpltsd</item>+      <item>cmpltss</item>+      <item>cmpneqpd</item>+      <item>cmpneqps</item>+      <item>cmpneqsd</item>+      <item>cmpneqss</item>+      <item>cmpnlepd</item>+      <item>cmpnleps</item>+      <item>cmpnlesd</item>+      <item>cmpnless</item>+      <item>cmpnltpd</item>+      <item>cmpnltps</item>+      <item>cmpnltsd</item>+      <item>cmpnltss</item>+      <item>cmpordpd</item>+      <item>cmpordps</item>+      <item>cmpordsd</item>+      <item>cmpordss</item>+      <item>cmppd</item>+      <item>cmpps</item>+      <item>cmpsb</item>+      <item>cmpsd</item>+      <item>cmpsq</item>+      <item>cmpss</item>+      <item>cmpsw</item>+      <item>cmpunordpd</item>+      <item>cmpunordps</item>+      <item>cmpunordsd</item>+      <item>cmpunordss</item>+      <item>cmpxchg</item>+      <item>cmpxchg16b</item>+      <item>cmpxchg486</item>+      <item>cmpxchg8b</item>+      <item>comisd</item>+      <item>comiss</item>+      <item>cpuid</item>+      <item>cpu_read</item>+      <item>cpu_write</item>+      <item>cqo</item>+      <item>crc32</item>+      <item>cvtdq2pd</item>+      <item>cvtdq2ps</item>+      <item>cvtpd2dq</item>+      <item>cvtpd2pi</item>+      <item>cvtpd2ps</item>+      <item>cvtpi2pd</item>+      <item>cvtpi2ps</item>+      <item>cvtps2dq</item>+      <item>cvtps2pd</item>+      <item>cvtps2pi</item>+      <item>cvtsd2si</item>+      <item>cvtsd2ss</item>+      <item>cvtsi2sd</item>+      <item>cvtsi2ss</item>+      <item>cvtss2sd</item>+      <item>cvtss2si</item>+      <item>cvttpd2dq</item>+      <item>cvttpd2pi</item>+      <item>cvttps2dq</item>+      <item>cvttps2pi</item>+      <item>cvttsd2si</item>+      <item>cvttss2si</item>+      <item>cwd</item>+      <item>cwde</item>+      <item>daa</item>+      <item>das</item>+      <item>dec</item>+      <item>div</item>+      <item>divpd</item>+      <item>divps</item>+      <item>divsd</item>+      <item>divss</item>+      <item>dmint</item>+      <item>dppd</item>+      <item>dpps</item>+      <item>emms</item>+      <item>encls</item>+      <item>enclu</item>+      <item>enclv</item>+      <item>endbr32</item>+      <item>endbr64</item>+      <item>enqcmd</item>+      <item>enqcmds</item>+      <item>enter</item>+      <item>extractps</item>+      <item>extrq</item>+      <item>f2xm1</item>+      <item>fabs</item>+      <item>fadd</item>+      <item>faddp</item>+      <item>fbld</item>+      <item>fbstp</item>+      <item>fchs</item>+      <item>fclex</item>+      <item>fcmovb</item>+      <item>fcmovbe</item>+      <item>fcmove</item>+      <item>fcmovnb</item>+      <item>fcmovnbe</item>+      <item>fcmovne</item>+      <item>fcmovnu</item>+      <item>fcmovu</item>+      <item>fcom</item>+      <item>fcomi</item>+      <item>fcomip</item>+      <item>fcomp</item>+      <item>fcompp</item>+      <item>fcos</item>+      <item>fdecstp</item>+      <item>fdisi</item>+      <item>fdiv</item>+      <item>fdivp</item>+      <item>fdivr</item>+      <item>fdivrp</item>+      <item>femms</item>+      <item>feni</item>+      <item>ffree</item>+      <item>ffreep</item>+      <item>fiadd</item>+      <item>ficom</item>+      <item>ficomp</item>+      <item>fidiv</item>+      <item>fidivr</item>+      <item>fild</item>+      <item>fimul</item>+      <item>fincstp</item>+      <item>finit</item>+      <item>fist</item>+      <item>fistp</item>+      <item>fisttp</item>+      <item>fisub</item>+      <item>fisubr</item>+      <item>fld</item>+      <item>fld1</item>+      <item>fldcw</item>+      <item>fldenv</item>+      <item>fldl2e</item>+      <item>fldl2t</item>+      <item>fldlg2</item>+      <item>fldln2</item>+      <item>fldpi</item>+      <item>fldz</item>+      <item>fmul</item>+      <item>fmulp</item>+      <item>fnclex</item>+      <item>fndisi</item>+      <item>fneni</item>+      <item>fninit</item>+      <item>fnop</item>+      <item>fnsave</item>+      <item>fnstcw</item>+      <item>fnstenv</item>+      <item>fnstsw</item>+      <item>fpatan</item>+      <item>fprem</item>+      <item>fprem1</item>+      <item>fptan</item>+      <item>frndint</item>+      <item>frstor</item>+      <item>fsave</item>+      <item>fscale</item>+      <item>fsetpm</item>+      <item>fsin</item>+      <item>fsincos</item>+      <item>fsqrt</item>+      <item>fst</item>+      <item>fstcw</item>+      <item>fstenv</item>+      <item>fstp</item>+      <item>fstsw</item>+      <item>fsub</item>+      <item>fsubp</item>+      <item>fsubr</item>+      <item>fsubrp</item>+      <item>ftst</item>+      <item>fucom</item>+      <item>fucomi</item>+      <item>fucomip</item>+      <item>fucomp</item>+      <item>fucompp</item>+      <item>fwait</item>+      <item>fxam</item>+      <item>fxch</item>+      <item>fxrstor</item>+      <item>fxrstor64</item>+      <item>fxsave</item>+      <item>fxsave64</item>+      <item>fxtract</item>+      <item>fyl2x</item>+      <item>fyl2xp1</item>+      <item>getsec</item>+      <item>gf2p8affineinvqb</item>+      <item>gf2p8affineqb</item>+      <item>gf2p8mulb</item>+      <item>haddpd</item>+      <item>haddps</item>+      <item>hint_nop0</item>+      <item>hint_nop1</item>+      <item>hint_nop10</item>+      <item>hint_nop11</item>+      <item>hint_nop12</item>+      <item>hint_nop13</item>+      <item>hint_nop14</item>+      <item>hint_nop15</item>+      <item>hint_nop16</item>+      <item>hint_nop17</item>+      <item>hint_nop18</item>+      <item>hint_nop19</item>+      <item>hint_nop2</item>+      <item>hint_nop20</item>+      <item>hint_nop21</item>+      <item>hint_nop22</item>+      <item>hint_nop23</item>+      <item>hint_nop24</item>+      <item>hint_nop25</item>+      <item>hint_nop26</item>+      <item>hint_nop27</item>+      <item>hint_nop28</item>+      <item>hint_nop29</item>+      <item>hint_nop3</item>+      <item>hint_nop30</item>+      <item>hint_nop31</item>+      <item>hint_nop32</item>+      <item>hint_nop33</item>+      <item>hint_nop34</item>+      <item>hint_nop35</item>+      <item>hint_nop36</item>+      <item>hint_nop37</item>+      <item>hint_nop38</item>+      <item>hint_nop39</item>+      <item>hint_nop4</item>+      <item>hint_nop40</item>+      <item>hint_nop41</item>+      <item>hint_nop42</item>+      <item>hint_nop43</item>+      <item>hint_nop44</item>+      <item>hint_nop45</item>+      <item>hint_nop46</item>+      <item>hint_nop47</item>+      <item>hint_nop48</item>+      <item>hint_nop49</item>+      <item>hint_nop5</item>+      <item>hint_nop50</item>+      <item>hint_nop51</item>+      <item>hint_nop52</item>+      <item>hint_nop53</item>+      <item>hint_nop54</item>+      <item>hint_nop55</item>+      <item>hint_nop56</item>+      <item>hint_nop57</item>+      <item>hint_nop58</item>+      <item>hint_nop59</item>+      <item>hint_nop6</item>+      <item>hint_nop60</item>+      <item>hint_nop61</item>+      <item>hint_nop62</item>+      <item>hint_nop63</item>+      <item>hint_nop7</item>+      <item>hint_nop8</item>+      <item>hint_nop9</item>+      <item>hlt</item>+      <item>hsubpd</item>+      <item>hsubps</item>+      <item>ibts</item>+      <item>icebp</item>+      <item>idiv</item>+      <item>imul</item>+      <item>in</item>+      <item>inc</item>+      <item>incsspd</item>+      <item>incsspq</item>+      <item>insb</item>+      <item>insd</item>+      <item>insertps</item>+      <item>insertq</item>+      <item>insw</item>+      <item>int</item>+      <item>int01</item>+      <item>int03</item>+      <item>int1</item>+      <item>int3</item>+      <item>into</item>+      <item>invd</item>+      <item>invept</item>+      <item>invlpg</item>+      <item>invlpga</item>+      <item>invpcid</item>+      <item>invvpid</item>+      <item>kadd</item>+      <item>kaddb</item>+      <item>kaddd</item>+      <item>kaddq</item>+      <item>kaddw</item>+      <item>kand</item>+      <item>kandb</item>+      <item>kandd</item>+      <item>kandn</item>+      <item>kandnb</item>+      <item>kandnd</item>+      <item>kandnq</item>+      <item>kandnw</item>+      <item>kandq</item>+      <item>kandw</item>+      <item>kmov</item>+      <item>kmovb</item>+      <item>kmovd</item>+      <item>kmovq</item>+      <item>kmovw</item>+      <item>knot</item>+      <item>knotb</item>+      <item>knotd</item>+      <item>knotq</item>+      <item>knotw</item>+      <item>kor</item>+      <item>korb</item>+      <item>kord</item>+      <item>korq</item>+      <item>kortest</item>+      <item>kortestb</item>+      <item>kortestd</item>+      <item>kortestq</item>+      <item>kortestw</item>+      <item>korw</item>+      <item>kshiftl</item>+      <item>kshiftlb</item>+      <item>kshiftld</item>+      <item>kshiftlq</item>+      <item>kshiftlw</item>+      <item>kshiftr</item>+      <item>kshiftrb</item>+      <item>kshiftrd</item>+      <item>kshiftrq</item>+      <item>kshiftrw</item>+      <item>ktest</item>+      <item>ktestb</item>+      <item>ktestd</item>+      <item>ktestq</item>+      <item>ktestw</item>+      <item>kunpck</item>+      <item>kunpckbw</item>+      <item>kunpckdq</item>+      <item>kunpckwd</item>+      <item>kxnor</item>+      <item>kxnorb</item>+      <item>kxnord</item>+      <item>kxnorq</item>+      <item>kxnorw</item>+      <item>kxor</item>+      <item>kxorb</item>+      <item>kxord</item>+      <item>kxorq</item>+      <item>kxorw</item>+      <item>lahf</item>+      <item>lar</item>+      <item>lddqu</item>+      <item>ldmxcsr</item>+      <item>lds</item>+      <item>ldtilecfg</item>+      <item>lea</item>+      <item>leave</item>+      <item>les</item>+      <item>lfence</item>+      <item>lfs</item>+      <item>lgdt</item>+      <item>lgs</item>+      <item>lidt</item>+      <item>lldt</item>+      <item>llwpcb</item>+      <item>lmsw</item>+      <item>loadall</item>+      <item>loadall286</item>+      <item>lodsb</item>+      <item>lodsd</item>+      <item>lodsq</item>+      <item>lodsw</item>+      <item>loop</item>+      <item>loope</item>+      <item>loopne</item>+      <item>loopnz</item>+      <item>loopz</item>+      <item>lsl</item>+      <item>lss</item>+      <item>ltr</item>+      <item>lwpins</item>+      <item>lwpval</item>+      <item>lzcnt</item>+      <item>maskmovdqu</item>+      <item>maskmovq</item>+      <item>maxpd</item>+      <item>maxps</item>+      <item>maxsd</item>+      <item>maxss</item>+      <item>mfence</item>+      <item>minpd</item>+      <item>minps</item>+      <item>minsd</item>+      <item>minss</item>+      <item>monitor</item>+      <item>monitorx</item>+      <item>montmul</item>+      <item>mov</item>+      <item>movapd</item>+      <item>movaps</item>+      <item>movbe</item>+      <item>movd</item>+      <item>movddup</item>+      <item>movdir64b</item>+      <item>movdiri</item>+      <item>movdq2q</item>+      <item>movdqa</item>+      <item>movdqu</item>+      <item>movhlps</item>+      <item>movhpd</item>+      <item>movhps</item>+      <item>movlhps</item>+      <item>movlpd</item>+      <item>movlps</item>+      <item>movmskpd</item>+      <item>movmskps</item>+      <item>movntdq</item>+      <item>movntdqa</item>+      <item>movnti</item>+      <item>movntpd</item>+      <item>movntps</item>+      <item>movntq</item>+      <item>movntsd</item>+      <item>movntss</item>+      <item>movq</item>+      <item>movq2dq</item>+      <item>movsb</item>+      <item>movsd</item>+      <item>movshdup</item>+      <item>movsldup</item>+      <item>movsq</item>+      <item>movss</item>+      <item>movsw</item>+      <item>movsx</item>+      <item>movsxd</item>+      <item>movupd</item>+      <item>movups</item>+      <item>movzx</item>+      <item>mpsadbw</item>+      <item>mul</item>+      <item>mulpd</item>+      <item>mulps</item>+      <item>mulsd</item>+      <item>mulss</item>+      <item>mulx</item>+      <item>mwait</item>+      <item>mwaitx</item>+      <item>neg</item>+      <item>nop</item>+      <item>not</item>+      <item>or</item>+      <item>orpd</item>+      <item>orps</item>+      <item>out</item>+      <item>outsb</item>+      <item>outsd</item>+      <item>outsw</item>+      <item>pabsb</item>+      <item>pabsd</item>+      <item>pabsw</item>+      <item>packssdw</item>+      <item>packsswb</item>+      <item>packusdw</item>+      <item>packuswb</item>+      <item>paddb</item>+      <item>paddd</item>+      <item>paddq</item>+      <item>paddsb</item>+      <item>paddsiw</item>+      <item>paddsw</item>+      <item>paddusb</item>+      <item>paddusw</item>+      <item>paddw</item>+      <item>palignr</item>+      <item>pand</item>+      <item>pandn</item>+      <item>pause</item>+      <item>paveb</item>+      <item>pavgb</item>+      <item>pavgusb</item>+      <item>pavgw</item>+      <item>pblendvb</item>+      <item>pblendw</item>+      <item>pclmulhqhqdq</item>+      <item>pclmulhqlqdq</item>+      <item>pclmullqhqdq</item>+      <item>pclmullqlqdq</item>+      <item>pclmulqdq</item>+      <item>pcmpeqb</item>+      <item>pcmpeqd</item>+      <item>pcmpeqq</item>+      <item>pcmpeqw</item>+      <item>pcmpestri</item>+      <item>pcmpestrm</item>+      <item>pcmpgtb</item>+      <item>pcmpgtd</item>+      <item>pcmpgtq</item>+      <item>pcmpgtw</item>+      <item>pcmpistri</item>+      <item>pcmpistrm</item>+      <item>pcommit</item>+      <item>pconfig</item>+      <item>pdep</item>+      <item>pdistib</item>+      <item>pext</item>+      <item>pextrb</item>+      <item>pextrd</item>+      <item>pextrq</item>+      <item>pextrw</item>+      <item>pf2id</item>+      <item>pf2iw</item>+      <item>pfacc</item>+      <item>pfadd</item>+      <item>pfcmpeq</item>+      <item>pfcmpge</item>+      <item>pfcmpgt</item>+      <item>pfmax</item>+      <item>pfmin</item>+      <item>pfmul</item>+      <item>pfnacc</item>+      <item>pfpnacc</item>+      <item>pfrcp</item>+      <item>pfrcpit1</item>+      <item>pfrcpit2</item>+      <item>pfrcpv</item>+      <item>pfrsqit1</item>+      <item>pfrsqrt</item>+      <item>pfrsqrtv</item>+      <item>pfsub</item>+      <item>pfsubr</item>+      <item>phaddd</item>+      <item>phaddsw</item>+      <item>phaddw</item>+      <item>phminposuw</item>+      <item>phsubd</item>+      <item>phsubsw</item>+      <item>phsubw</item>+      <item>pi2fd</item>+      <item>pi2fw</item>+      <item>pinsrb</item>+      <item>pinsrd</item>+      <item>pinsrq</item>+      <item>pinsrw</item>+      <item>pmachriw</item>+      <item>pmaddubsw</item>+      <item>pmaddwd</item>+      <item>pmagw</item>+      <item>pmaxsb</item>+      <item>pmaxsd</item>+      <item>pmaxsw</item>+      <item>pmaxub</item>+      <item>pmaxud</item>+      <item>pmaxuw</item>+      <item>pminsb</item>+      <item>pminsd</item>+      <item>pminsw</item>+      <item>pminub</item>+      <item>pminud</item>+      <item>pminuw</item>+      <item>pmovmskb</item>+      <item>pmovsxbd</item>+      <item>pmovsxbq</item>+      <item>pmovsxbw</item>+      <item>pmovsxdq</item>+      <item>pmovsxwd</item>+      <item>pmovsxwq</item>+      <item>pmovzxbd</item>+      <item>pmovzxbq</item>+      <item>pmovzxbw</item>+      <item>pmovzxdq</item>+      <item>pmovzxwd</item>+      <item>pmovzxwq</item>+      <item>pmuldq</item>+      <item>pmulhriw</item>+      <item>pmulhrsw</item>+      <item>pmulhrwa</item>+      <item>pmulhrwc</item>+      <item>pmulhuw</item>+      <item>pmulhw</item>+      <item>pmulld</item>+      <item>pmullw</item>+      <item>pmuludq</item>+      <item>pmvgezb</item>+      <item>pmvlzb</item>+      <item>pmvnzb</item>+      <item>pmvzb</item>+      <item>pop</item>+      <item>popa</item>+      <item>popad</item>+      <item>popaw</item>+      <item>popcnt</item>+      <item>popf</item>+      <item>popfd</item>+      <item>popfq</item>+      <item>popfw</item>+      <item>por</item>+      <item>prefetch</item>+      <item>prefetchnta</item>+      <item>prefetcht0</item>+      <item>prefetcht1</item>+      <item>prefetcht2</item>+      <item>prefetchw</item>+      <item>prefetchwt1</item>+      <item>psadbw</item>+      <item>pshufb</item>+      <item>pshufd</item>+      <item>pshufhw</item>+      <item>pshuflw</item>+      <item>pshufw</item>+      <item>psignb</item>+      <item>psignd</item>+      <item>psignw</item>+      <item>pslld</item>+      <item>pslldq</item>+      <item>psllq</item>+      <item>psllw</item>+      <item>psrad</item>+      <item>psraw</item>+      <item>psrld</item>+      <item>psrldq</item>+      <item>psrlq</item>+      <item>psrlw</item>+      <item>psubb</item>+      <item>psubd</item>+      <item>psubq</item>+      <item>psubsb</item>+      <item>psubsiw</item>+      <item>psubsw</item>+      <item>psubusb</item>+      <item>psubusw</item>+      <item>psubw</item>+      <item>pswapd</item>+      <item>ptest</item>+      <item>ptwrite</item>+      <item>punpckhbw</item>+      <item>punpckhdq</item>+      <item>punpckhqdq</item>+      <item>punpckhwd</item>+      <item>punpcklbw</item>+      <item>punpckldq</item>+      <item>punpcklqdq</item>+      <item>punpcklwd</item>+      <item>push</item>+      <item>pusha</item>+      <item>pushad</item>+      <item>pushaw</item>+      <item>pushf</item>+      <item>pushfd</item>+      <item>pushfq</item>+      <item>pushfw</item>+      <item>pxor</item>+      <item>rcl</item>+      <item>rcpps</item>+      <item>rcpss</item>+      <item>rcr</item>+      <item>rdfsbase</item>+      <item>rdgsbase</item>+      <item>rdm</item>+      <item>rdmsr</item>+      <item>rdpid</item>+      <item>rdpkru</item>+      <item>rdpmc</item>+      <item>rdrand</item>+      <item>rdseed</item>+      <item>rdshr</item>+      <item>rdsspd</item>+      <item>rdsspq</item>+      <item>rdtsc</item>+      <item>rdtscp</item>+      <item>rol</item>+      <item>ror</item>+      <item>rorx</item>+      <item>roundpd</item>+      <item>roundps</item>+      <item>roundsd</item>+      <item>roundss</item>+      <item>rsdc</item>+      <item>rsldt</item>+      <item>rsm</item>+      <item>rsqrtps</item>+      <item>rsqrtss</item>+      <item>rstorssp</item>+      <item>rsts</item>+      <item>sahf</item>+      <item>sal</item>+      <item>salc</item>+      <item>sar</item>+      <item>sarx</item>+      <item>saveprevssp</item>+      <item>sbb</item>+      <item>scasb</item>+      <item>scasd</item>+      <item>scasq</item>+      <item>scasw</item>+      <item>serialize</item>+      <item>seta</item>+      <item>setae</item>+      <item>setb</item>+      <item>setbe</item>+      <item>setc</item>+      <item>sete</item>+      <item>setg</item>+      <item>setge</item>+      <item>setl</item>+      <item>setle</item>+      <item>setna</item>+      <item>setnae</item>+      <item>setnb</item>+      <item>setnbe</item>+      <item>setnc</item>+      <item>setne</item>+      <item>setng</item>+      <item>setnge</item>+      <item>setnl</item>+      <item>setnle</item>+      <item>setno</item>+      <item>setnp</item>+      <item>setns</item>+      <item>setnz</item>+      <item>seto</item>+      <item>setp</item>+      <item>setpe</item>+      <item>setpo</item>+      <item>sets</item>+      <item>setssbsy</item>+      <item>setz</item>+      <item>sfence</item>+      <item>sgdt</item>+      <item>sha1msg1</item>+      <item>sha1msg2</item>+      <item>sha1nexte</item>+      <item>sha1rnds4</item>+      <item>sha256msg1</item>+      <item>sha256msg2</item>+      <item>sha256rnds2</item>+      <item>shl</item>+      <item>shld</item>+      <item>shlx</item>+      <item>shr</item>+      <item>shrd</item>+      <item>shrx</item>+      <item>shufpd</item>+      <item>shufps</item>+      <item>sidt</item>+      <item>skinit</item>+      <item>sldt</item>+      <item>slwpcb</item>+      <item>smi</item>+      <item>smint</item>+      <item>smintold</item>+      <item>smsw</item>+      <item>sqrtpd</item>+      <item>sqrtps</item>+      <item>sqrtsd</item>+      <item>sqrtss</item>+      <item>stac</item>+      <item>stc</item>+      <item>std</item>+      <item>stgi</item>+      <item>sti</item>+      <item>stmxcsr</item>+      <item>stosb</item>+      <item>stosd</item>+      <item>stosq</item>+      <item>stosw</item>+      <item>str</item>+      <item>sttilecfg</item>+      <item>sub</item>+      <item>subpd</item>+      <item>subps</item>+      <item>subsd</item>+      <item>subss</item>+      <item>svdc</item>+      <item>svldt</item>+      <item>svts</item>+      <item>swapgs</item>+      <item>syscall</item>+      <item>sysenter</item>+      <item>sysexit</item>+      <item>sysret</item>+      <item>t1mskc</item>+      <item>tdpbf16ps</item>+      <item>tdpbssd</item>+      <item>tdpbsud</item>+      <item>tdpbusd</item>+      <item>tdpbuud</item>+      <item>test</item>+      <item>tileloadd</item>+      <item>tileloaddt1</item>+      <item>tilerelease</item>+      <item>tilestored</item>+      <item>tilezero</item>+      <item>tpause</item>+      <item>tzcnt</item>+      <item>tzmsk</item>+      <item>ucomisd</item>+      <item>ucomiss</item>+      <item>ud0</item>+      <item>ud1</item>+      <item>ud2</item>+      <item>ud2a</item>+      <item>ud2b</item>+      <item>umonitor</item>+      <item>umov</item>+      <item>umwait</item>+      <item>unpckhpd</item>+      <item>unpckhps</item>+      <item>unpcklpd</item>+      <item>unpcklps</item>+      <item>v4dpwssd</item>+      <item>v4dpwssds</item>+      <item>v4fmaddps</item>+      <item>v4fmaddss</item>+      <item>v4fnmaddps</item>+      <item>v4fnmaddss</item>+      <item>vaddpd</item>+      <item>vaddps</item>+      <item>vaddsd</item>+      <item>vaddss</item>+      <item>vaddsubpd</item>+      <item>vaddsubps</item>+      <item>vaesdec</item>+      <item>vaesdeclast</item>+      <item>vaesenc</item>+      <item>vaesenclast</item>+      <item>vaesimc</item>+      <item>vaeskeygenassist</item>+      <item>valignd</item>+      <item>valignq</item>+      <item>vandnpd</item>+      <item>vandnps</item>+      <item>vandpd</item>+      <item>vandps</item>+      <item>vblendmpd</item>+      <item>vblendmps</item>+      <item>vblendpd</item>+      <item>vblendps</item>+      <item>vblendvpd</item>+      <item>vblendvps</item>+      <item>vbroadcastf128</item>+      <item>vbroadcastf32x2</item>+      <item>vbroadcastf32x4</item>+      <item>vbroadcastf32x8</item>+      <item>vbroadcastf64x2</item>+      <item>vbroadcastf64x4</item>+      <item>vbroadcasti128</item>+      <item>vbroadcasti32x2</item>+      <item>vbroadcasti32x4</item>+      <item>vbroadcasti32x8</item>+      <item>vbroadcasti64x2</item>+      <item>vbroadcasti64x4</item>+      <item>vbroadcastsd</item>+      <item>vbroadcastss</item>+      <item>vcmpeqpd</item>+      <item>vcmpeqps</item>+      <item>vcmpeqsd</item>+      <item>vcmpeqss</item>+      <item>vcmpeq_oqpd</item>+      <item>vcmpeq_oqps</item>+      <item>vcmpeq_oqsd</item>+      <item>vcmpeq_oqss</item>+      <item>vcmpeq_ospd</item>+      <item>vcmpeq_osps</item>+      <item>vcmpeq_ossd</item>+      <item>vcmpeq_osss</item>+      <item>vcmpeq_uqpd</item>+      <item>vcmpeq_uqps</item>+      <item>vcmpeq_uqsd</item>+      <item>vcmpeq_uqss</item>+      <item>vcmpeq_uspd</item>+      <item>vcmpeq_usps</item>+      <item>vcmpeq_ussd</item>+      <item>vcmpeq_usss</item>+      <item>vcmpfalsepd</item>+      <item>vcmpfalseps</item>+      <item>vcmpfalsesd</item>+      <item>vcmpfalsess</item>+      <item>vcmpfalse_oqpd</item>+      <item>vcmpfalse_oqps</item>+      <item>vcmpfalse_oqsd</item>+      <item>vcmpfalse_oqss</item>+      <item>vcmpfalse_ospd</item>+      <item>vcmpfalse_osps</item>+      <item>vcmpfalse_ossd</item>+      <item>vcmpfalse_osss</item>+      <item>vcmpgepd</item>+      <item>vcmpgeps</item>+      <item>vcmpgesd</item>+      <item>vcmpgess</item>+      <item>vcmpge_oqpd</item>+      <item>vcmpge_oqps</item>+      <item>vcmpge_oqsd</item>+      <item>vcmpge_oqss</item>+      <item>vcmpge_ospd</item>+      <item>vcmpge_osps</item>+      <item>vcmpge_ossd</item>+      <item>vcmpge_osss</item>+      <item>vcmpgtpd</item>+      <item>vcmpgtps</item>+      <item>vcmpgtsd</item>+      <item>vcmpgtss</item>+      <item>vcmpgt_oqpd</item>+      <item>vcmpgt_oqps</item>+      <item>vcmpgt_oqsd</item>+      <item>vcmpgt_oqss</item>+      <item>vcmpgt_ospd</item>+      <item>vcmpgt_osps</item>+      <item>vcmpgt_ossd</item>+      <item>vcmpgt_osss</item>+      <item>vcmplepd</item>+      <item>vcmpleps</item>+      <item>vcmplesd</item>+      <item>vcmpless</item>+      <item>vcmple_oqpd</item>+      <item>vcmple_oqps</item>+      <item>vcmple_oqsd</item>+      <item>vcmple_oqss</item>+      <item>vcmple_ospd</item>+      <item>vcmple_osps</item>+      <item>vcmple_ossd</item>+      <item>vcmple_osss</item>+      <item>vcmpltpd</item>+      <item>vcmpltps</item>+      <item>vcmpltsd</item>+      <item>vcmpltss</item>+      <item>vcmplt_oqpd</item>+      <item>vcmplt_oqps</item>+      <item>vcmplt_oqsd</item>+      <item>vcmplt_oqss</item>+      <item>vcmplt_ospd</item>+      <item>vcmplt_osps</item>+      <item>vcmplt_ossd</item>+      <item>vcmplt_osss</item>+      <item>vcmpneqpd</item>+      <item>vcmpneqps</item>+      <item>vcmpneqsd</item>+      <item>vcmpneqss</item>+      <item>vcmpneq_oqpd</item>+      <item>vcmpneq_oqps</item>+      <item>vcmpneq_oqsd</item>+      <item>vcmpneq_oqss</item>+      <item>vcmpneq_ospd</item>+      <item>vcmpneq_osps</item>+      <item>vcmpneq_ossd</item>+      <item>vcmpneq_osss</item>+      <item>vcmpneq_uqpd</item>+      <item>vcmpneq_uqps</item>+      <item>vcmpneq_uqsd</item>+      <item>vcmpneq_uqss</item>+      <item>vcmpneq_uspd</item>+      <item>vcmpneq_usps</item>+      <item>vcmpneq_ussd</item>+      <item>vcmpneq_usss</item>+      <item>vcmpngepd</item>+      <item>vcmpngeps</item>+      <item>vcmpngesd</item>+      <item>vcmpngess</item>+      <item>vcmpnge_uqpd</item>+      <item>vcmpnge_uqps</item>+      <item>vcmpnge_uqsd</item>+      <item>vcmpnge_uqss</item>+      <item>vcmpnge_uspd</item>+      <item>vcmpnge_usps</item>+      <item>vcmpnge_ussd</item>+      <item>vcmpnge_usss</item>+      <item>vcmpngtpd</item>+      <item>vcmpngtps</item>+      <item>vcmpngtsd</item>+      <item>vcmpngtss</item>+      <item>vcmpngt_uqpd</item>+      <item>vcmpngt_uqps</item>+      <item>vcmpngt_uqsd</item>+      <item>vcmpngt_uqss</item>+      <item>vcmpngt_uspd</item>+      <item>vcmpngt_usps</item>+      <item>vcmpngt_ussd</item>+      <item>vcmpngt_usss</item>+      <item>vcmpnlepd</item>+      <item>vcmpnleps</item>+      <item>vcmpnlesd</item>+      <item>vcmpnless</item>+      <item>vcmpnle_uqpd</item>+      <item>vcmpnle_uqps</item>+      <item>vcmpnle_uqsd</item>+      <item>vcmpnle_uqss</item>+      <item>vcmpnle_uspd</item>+      <item>vcmpnle_usps</item>+      <item>vcmpnle_ussd</item>+      <item>vcmpnle_usss</item>+      <item>vcmpnltpd</item>+      <item>vcmpnltps</item>+      <item>vcmpnltsd</item>+      <item>vcmpnltss</item>+      <item>vcmpnlt_uqpd</item>+      <item>vcmpnlt_uqps</item>+      <item>vcmpnlt_uqsd</item>+      <item>vcmpnlt_uqss</item>+      <item>vcmpnlt_uspd</item>+      <item>vcmpnlt_usps</item>+      <item>vcmpnlt_ussd</item>+      <item>vcmpnlt_usss</item>+      <item>vcmpordpd</item>+      <item>vcmpordps</item>+      <item>vcmpordsd</item>+      <item>vcmpordss</item>+      <item>vcmpord_qpd</item>+      <item>vcmpord_qps</item>+      <item>vcmpord_qsd</item>+      <item>vcmpord_qss</item>+      <item>vcmpord_spd</item>+      <item>vcmpord_sps</item>+      <item>vcmpord_ssd</item>+      <item>vcmpord_sss</item>+      <item>vcmppd</item>+      <item>vcmpps</item>+      <item>vcmpsd</item>+      <item>vcmpss</item>+      <item>vcmptruepd</item>+      <item>vcmptrueps</item>+      <item>vcmptruesd</item>+      <item>vcmptruess</item>+      <item>vcmptrue_uqpd</item>+      <item>vcmptrue_uqps</item>+      <item>vcmptrue_uqsd</item>+      <item>vcmptrue_uqss</item>+      <item>vcmptrue_uspd</item>+      <item>vcmptrue_usps</item>+      <item>vcmptrue_ussd</item>+      <item>vcmptrue_usss</item>+      <item>vcmpunordpd</item>+      <item>vcmpunordps</item>+      <item>vcmpunordsd</item>+      <item>vcmpunordss</item>+      <item>vcmpunord_qpd</item>+      <item>vcmpunord_qps</item>+      <item>vcmpunord_qsd</item>+      <item>vcmpunord_qss</item>+      <item>vcmpunord_spd</item>+      <item>vcmpunord_sps</item>+      <item>vcmpunord_ssd</item>+      <item>vcmpunord_sss</item>+      <item>vcomisd</item>+      <item>vcomiss</item>+      <item>vcompresspd</item>+      <item>vcompressps</item>+      <item>vcvtdq2pd</item>+      <item>vcvtdq2ps</item>+      <item>vcvtne2ps2bf16</item>+      <item>vcvtpd2dq</item>+      <item>vcvtpd2ps</item>+      <item>vcvtpd2qq</item>+      <item>vcvtpd2udq</item>+      <item>vcvtpd2uqq</item>+      <item>vcvtph2ps</item>+      <item>vcvtps2dq</item>+      <item>vcvtps2pd</item>+      <item>vcvtps2ph</item>+      <item>vcvtps2qq</item>+      <item>vcvtps2udq</item>+      <item>vcvtps2uqq</item>+      <item>vcvtqq2pd</item>+      <item>vcvtqq2ps</item>+      <item>vcvtsd2si</item>+      <item>vcvtsd2ss</item>+      <item>vcvtsd2usi</item>+      <item>vcvtsi2sd</item>+      <item>vcvtsi2ss</item>+      <item>vcvtss2sd</item>+      <item>vcvtss2si</item>+      <item>vcvtss2usi</item>+      <item>vcvttpd2dq</item>+      <item>vcvttpd2qq</item>+      <item>vcvttpd2udq</item>+      <item>vcvttpd2uqq</item>+      <item>vcvttps2dq</item>+      <item>vcvttps2qq</item>+      <item>vcvttps2udq</item>+      <item>vcvttps2uqq</item>+      <item>vcvttsd2si</item>+      <item>vcvttsd2usi</item>+      <item>vcvttss2si</item>+      <item>vcvttss2usi</item>+      <item>vcvtudq2pd</item>+      <item>vcvtudq2ps</item>+      <item>vcvtuqq2pd</item>+      <item>vcvtuqq2ps</item>+      <item>vcvtusi2sd</item>+      <item>vcvtusi2ss</item>+      <item>vdbpsadbw</item>+      <item>vdivpd</item>+      <item>vdivps</item>+      <item>vdivsd</item>+      <item>vdivss</item>+      <item>vdpbf16ps</item>+      <item>vdppd</item>+      <item>vdpps</item>+      <item>verr</item>+      <item>verw</item>+      <item>vexp2pd</item>+      <item>vexp2ps</item>+      <item>vexpandpd</item>+      <item>vexpandps</item>+      <item>vextractf128</item>+      <item>vextractf32x4</item>+      <item>vextractf32x8</item>+      <item>vextractf64x2</item>+      <item>vextractf64x4</item>+      <item>vextracti128</item>+      <item>vextracti32x4</item>+      <item>vextracti32x8</item>+      <item>vextracti64x2</item>+      <item>vextracti64x4</item>+      <item>vextractps</item>+      <item>vfixupimmpd</item>+      <item>vfixupimmps</item>+      <item>vfixupimmsd</item>+      <item>vfixupimmss</item>+      <item>vfmadd123pd</item>+      <item>vfmadd123ps</item>+      <item>vfmadd123sd</item>+      <item>vfmadd123ss</item>+      <item>vfmadd132pd</item>+      <item>vfmadd132ps</item>+      <item>vfmadd132sd</item>+      <item>vfmadd132ss</item>+      <item>vfmadd213pd</item>+      <item>vfmadd213ps</item>+      <item>vfmadd213sd</item>+      <item>vfmadd213ss</item>+      <item>vfmadd231pd</item>+      <item>vfmadd231ps</item>+      <item>vfmadd231sd</item>+      <item>vfmadd231ss</item>+      <item>vfmadd312pd</item>+      <item>vfmadd312ps</item>+      <item>vfmadd312sd</item>+      <item>vfmadd312ss</item>+      <item>vfmadd321pd</item>+      <item>vfmadd321ps</item>+      <item>vfmadd321sd</item>+      <item>vfmadd321ss</item>+      <item>vfmaddpd</item>+      <item>vfmaddps</item>+      <item>vfmaddsd</item>+      <item>vfmaddss</item>+      <item>vfmaddsub123pd</item>+      <item>vfmaddsub123ps</item>+      <item>vfmaddsub132pd</item>+      <item>vfmaddsub132ps</item>+      <item>vfmaddsub213pd</item>+      <item>vfmaddsub213ps</item>+      <item>vfmaddsub231pd</item>+      <item>vfmaddsub231ps</item>+      <item>vfmaddsub312pd</item>+      <item>vfmaddsub312ps</item>+      <item>vfmaddsub321pd</item>+      <item>vfmaddsub321ps</item>+      <item>vfmaddsubpd</item>+      <item>vfmaddsubps</item>+      <item>vfmsub123pd</item>+      <item>vfmsub123ps</item>+      <item>vfmsub123sd</item>+      <item>vfmsub123ss</item>+      <item>vfmsub132pd</item>+      <item>vfmsub132ps</item>+      <item>vfmsub132sd</item>+      <item>vfmsub132ss</item>+      <item>vfmsub213pd</item>+      <item>vfmsub213ps</item>+      <item>vfmsub213sd</item>+      <item>vfmsub213ss</item>+      <item>vfmsub231pd</item>+      <item>vfmsub231ps</item>+      <item>vfmsub231sd</item>+      <item>vfmsub231ss</item>+      <item>vfmsub312pd</item>+      <item>vfmsub312ps</item>+      <item>vfmsub312sd</item>+      <item>vfmsub312ss</item>+      <item>vfmsub321pd</item>+      <item>vfmsub321ps</item>+      <item>vfmsub321sd</item>+      <item>vfmsub321ss</item>+      <item>vfmsubadd123pd</item>+      <item>vfmsubadd123ps</item>+      <item>vfmsubadd132pd</item>+      <item>vfmsubadd132ps</item>+      <item>vfmsubadd213pd</item>+      <item>vfmsubadd213ps</item>+      <item>vfmsubadd231pd</item>+      <item>vfmsubadd231ps</item>+      <item>vfmsubadd312pd</item>+      <item>vfmsubadd312ps</item>+      <item>vfmsubadd321pd</item>+      <item>vfmsubadd321ps</item>+      <item>vfmsubaddpd</item>+      <item>vfmsubaddps</item>+      <item>vfmsubpd</item>+      <item>vfmsubps</item>+      <item>vfmsubsd</item>+      <item>vfmsubss</item>+      <item>vfnmadd123pd</item>+      <item>vfnmadd123ps</item>+      <item>vfnmadd123sd</item>+      <item>vfnmadd123ss</item>+      <item>vfnmadd132pd</item>+      <item>vfnmadd132ps</item>+      <item>vfnmadd132sd</item>+      <item>vfnmadd132ss</item>+      <item>vfnmadd213pd</item>+      <item>vfnmadd213ps</item>+      <item>vfnmadd213sd</item>+      <item>vfnmadd213ss</item>+      <item>vfnmadd231pd</item>+      <item>vfnmadd231ps</item>+      <item>vfnmadd231sd</item>+      <item>vfnmadd231ss</item>+      <item>vfnmadd312pd</item>+      <item>vfnmadd312ps</item>+      <item>vfnmadd312sd</item>+      <item>vfnmadd312ss</item>+      <item>vfnmadd321pd</item>+      <item>vfnmadd321ps</item>+      <item>vfnmadd321sd</item>+      <item>vfnmadd321ss</item>+      <item>vfnmaddpd</item>+      <item>vfnmaddps</item>+      <item>vfnmaddsd</item>+      <item>vfnmaddss</item>+      <item>vfnmsub123pd</item>+      <item>vfnmsub123ps</item>+      <item>vfnmsub123sd</item>+      <item>vfnmsub123ss</item>+      <item>vfnmsub132pd</item>+      <item>vfnmsub132ps</item>+      <item>vfnmsub132sd</item>+      <item>vfnmsub132ss</item>+      <item>vfnmsub213pd</item>+      <item>vfnmsub213ps</item>+      <item>vfnmsub213sd</item>+      <item>vfnmsub213ss</item>+      <item>vfnmsub231pd</item>+      <item>vfnmsub231ps</item>+      <item>vfnmsub231sd</item>+      <item>vfnmsub231ss</item>+      <item>vfnmsub312pd</item>+      <item>vfnmsub312ps</item>+      <item>vfnmsub312sd</item>+      <item>vfnmsub312ss</item>+      <item>vfnmsub321pd</item>+      <item>vfnmsub321ps</item>+      <item>vfnmsub321sd</item>+      <item>vfnmsub321ss</item>+      <item>vfnmsubpd</item>+      <item>vfnmsubps</item>+      <item>vfnmsubsd</item>+      <item>vfnmsubss</item>+      <item>vfpclasspd</item>+      <item>vfpclassps</item>+      <item>vfpclasssd</item>+      <item>vfpclassss</item>+      <item>vfrczpd</item>+      <item>vfrczps</item>+      <item>vfrczsd</item>+      <item>vfrczss</item>+      <item>vgatherdpd</item>+      <item>vgatherdps</item>+      <item>vgatherpf0dpd</item>+      <item>vgatherpf0dps</item>+      <item>vgatherpf0qpd</item>+      <item>vgatherpf0qps</item>+      <item>vgatherpf1dpd</item>+      <item>vgatherpf1dps</item>+      <item>vgatherpf1qpd</item>+      <item>vgatherpf1qps</item>+      <item>vgatherqpd</item>+      <item>vgatherqps</item>+      <item>vgetexppd</item>+      <item>vgetexpps</item>+      <item>vgetexpsd</item>+      <item>vgetexpss</item>+      <item>vgetmantpd</item>+      <item>vgetmantps</item>+      <item>vgetmantsd</item>+      <item>vgetmantss</item>+      <item>vgf2p8affineinvqb</item>+      <item>vgf2p8affineqb</item>+      <item>vgf2p8mulb</item>+      <item>vhaddpd</item>+      <item>vhaddps</item>+      <item>vhsubpd</item>+      <item>vhsubps</item>+      <item>vinsertf128</item>+      <item>vinsertf32x4</item>+      <item>vinsertf32x8</item>+      <item>vinsertf64x2</item>+      <item>vinsertf64x4</item>+      <item>vinserti128</item>+      <item>vinserti32x4</item>+      <item>vinserti32x8</item>+      <item>vinserti64x2</item>+      <item>vinserti64x4</item>+      <item>vinsertps</item>+      <item>vlddqu</item>+      <item>vldmxcsr</item>+      <item>vldqqu</item>+      <item>vmaskmovdqu</item>+      <item>vmaskmovpd</item>+      <item>vmaskmovps</item>+      <item>vmaxpd</item>+      <item>vmaxps</item>+      <item>vmaxsd</item>+      <item>vmaxss</item>+      <item>vmcall</item>+      <item>vmclear</item>+      <item>vmfunc</item>+      <item>vminpd</item>+      <item>vminps</item>+      <item>vminsd</item>+      <item>vminss</item>+      <item>vmlaunch</item>+      <item>vmload</item>+      <item>vmmcall</item>+      <item>vmovapd</item>+      <item>vmovaps</item>+      <item>vmovd</item>+      <item>vmovddup</item>+      <item>vmovdqa</item>+      <item>vmovdqa32</item>+      <item>vmovdqa64</item>+      <item>vmovdqu</item>+      <item>vmovdqu16</item>+      <item>vmovdqu32</item>+      <item>vmovdqu64</item>+      <item>vmovdqu8</item>+      <item>vmovhlps</item>+      <item>vmovhpd</item>+      <item>vmovhps</item>+      <item>vmovlhps</item>+      <item>vmovlpd</item>+      <item>vmovlps</item>+      <item>vmovmskpd</item>+      <item>vmovmskps</item>+      <item>vmovntdq</item>+      <item>vmovntdqa</item>+      <item>vmovntpd</item>+      <item>vmovntps</item>+      <item>vmovntqq</item>+      <item>vmovq</item>+      <item>vmovqqa</item>+      <item>vmovqqu</item>+      <item>vmovsd</item>+      <item>vmovshdup</item>+      <item>vmovsldup</item>+      <item>vmovss</item>+      <item>vmovupd</item>+      <item>vmovups</item>+      <item>vmpsadbw</item>+      <item>vmptrld</item>+      <item>vmptrst</item>+      <item>vmread</item>+      <item>vmresume</item>+      <item>vmrun</item>+      <item>vmsave</item>+      <item>vmulpd</item>+      <item>vmulps</item>+      <item>vmulsd</item>+      <item>vmulss</item>+      <item>vmwrite</item>+      <item>vmxoff</item>+      <item>vmxon</item>+      <item>vorpd</item>+      <item>vorps</item>+      <item>vp2intersectd</item>+      <item>vpabsb</item>+      <item>vpabsd</item>+      <item>vpabsq</item>+      <item>vpabsw</item>+      <item>vpackssdw</item>+      <item>vpacksswb</item>+      <item>vpackusdw</item>+      <item>vpackuswb</item>+      <item>vpaddb</item>+      <item>vpaddd</item>+      <item>vpaddq</item>+      <item>vpaddsb</item>+      <item>vpaddsw</item>+      <item>vpaddusb</item>+      <item>vpaddusw</item>+      <item>vpaddw</item>+      <item>vpalignr</item>+      <item>vpand</item>+      <item>vpandd</item>+      <item>vpandn</item>+      <item>vpandnd</item>+      <item>vpandnq</item>+      <item>vpandq</item>+      <item>vpavgb</item>+      <item>vpavgw</item>+      <item>vpblendd</item>+      <item>vpblendmb</item>+      <item>vpblendmd</item>+      <item>vpblendmq</item>+      <item>vpblendmw</item>+      <item>vpblendvb</item>+      <item>vpblendw</item>+      <item>vpbroadcastb</item>+      <item>vpbroadcastd</item>+      <item>vpbroadcastmb2q</item>+      <item>vpbroadcastmw2d</item>+      <item>vpbroadcastq</item>+      <item>vpbroadcastw</item>+      <item>vpclmulhqhqdq</item>+      <item>vpclmulhqlqdq</item>+      <item>vpclmullqhqdq</item>+      <item>vpclmullqlqdq</item>+      <item>vpclmulqdq</item>+      <item>vpcmov</item>+      <item>vpcmpb</item>+      <item>vpcmpd</item>+      <item>vpcmpeqb</item>+      <item>vpcmpeqd</item>+      <item>vpcmpeqq</item>+      <item>vpcmpequb</item>+      <item>vpcmpequd</item>+      <item>vpcmpequq</item>+      <item>vpcmpequw</item>+      <item>vpcmpeqw</item>+      <item>vpcmpestri</item>+      <item>vpcmpestrm</item>+      <item>vpcmpgeb</item>+      <item>vpcmpged</item>+      <item>vpcmpgeq</item>+      <item>vpcmpgeub</item>+      <item>vpcmpgeud</item>+      <item>vpcmpgeuq</item>+      <item>vpcmpgeuw</item>+      <item>vpcmpgew</item>+      <item>vpcmpgtb</item>+      <item>vpcmpgtd</item>+      <item>vpcmpgtq</item>+      <item>vpcmpgtub</item>+      <item>vpcmpgtud</item>+      <item>vpcmpgtuq</item>+      <item>vpcmpgtuw</item>+      <item>vpcmpgtw</item>+      <item>vpcmpistri</item>+      <item>vpcmpistrm</item>+      <item>vpcmpleb</item>+      <item>vpcmpled</item>+      <item>vpcmpleq</item>+      <item>vpcmpleub</item>+      <item>vpcmpleud</item>+      <item>vpcmpleuq</item>+      <item>vpcmpleuw</item>+      <item>vpcmplew</item>+      <item>vpcmpltb</item>+      <item>vpcmpltd</item>+      <item>vpcmpltq</item>+      <item>vpcmpltub</item>+      <item>vpcmpltud</item>+      <item>vpcmpltuq</item>+      <item>vpcmpltuw</item>+      <item>vpcmpltw</item>+      <item>vpcmpneqb</item>+      <item>vpcmpneqd</item>+      <item>vpcmpneqq</item>+      <item>vpcmpnequb</item>+      <item>vpcmpnequd</item>+      <item>vpcmpnequq</item>+      <item>vpcmpnequw</item>+      <item>vpcmpneqw</item>+      <item>vpcmpngtb</item>+      <item>vpcmpngtd</item>+      <item>vpcmpngtq</item>+      <item>vpcmpngtub</item>+      <item>vpcmpngtud</item>+      <item>vpcmpngtuq</item>+      <item>vpcmpngtuw</item>+      <item>vpcmpngtw</item>+      <item>vpcmpnleb</item>+      <item>vpcmpnled</item>+      <item>vpcmpnleq</item>+      <item>vpcmpnleub</item>+      <item>vpcmpnleud</item>+      <item>vpcmpnleuq</item>+      <item>vpcmpnleuw</item>+      <item>vpcmpnlew</item>+      <item>vpcmpnltb</item>+      <item>vpcmpnltd</item>+      <item>vpcmpnltq</item>+      <item>vpcmpnltub</item>+      <item>vpcmpnltud</item>+      <item>vpcmpnltuq</item>+      <item>vpcmpnltuw</item>+      <item>vpcmpnltw</item>+      <item>vpcmpq</item>+      <item>vpcmpub</item>+      <item>vpcmpud</item>+      <item>vpcmpuq</item>+      <item>vpcmpuw</item>+      <item>vpcmpw</item>+      <item>vpcomb</item>+      <item>vpcomd</item>+      <item>vpcompressb</item>+      <item>vpcompressd</item>+      <item>vpcompressq</item>+      <item>vpcompressw</item>+      <item>vpcomq</item>+      <item>vpcomub</item>+      <item>vpcomud</item>+      <item>vpcomuq</item>+      <item>vpcomuw</item>+      <item>vpcomw</item>+      <item>vpconflictd</item>+      <item>vpconflictq</item>+      <item>vpdpbusd</item>+      <item>vpdpbusds</item>+      <item>vpdpwssd</item>+      <item>vpdpwssds</item>+      <item>vperm2f128</item>+      <item>vperm2i128</item>+      <item>vpermb</item>+      <item>vpermd</item>+      <item>vpermi2b</item>+      <item>vpermi2d</item>+      <item>vpermi2pd</item>+      <item>vpermi2ps</item>+      <item>vpermi2q</item>+      <item>vpermi2w</item>+      <item>vpermilpd</item>+      <item>vpermilps</item>+      <item>vpermpd</item>+      <item>vpermps</item>+      <item>vpermq</item>+      <item>vpermt2b</item>+      <item>vpermt2d</item>+      <item>vpermt2pd</item>+      <item>vpermt2ps</item>+      <item>vpermt2q</item>+      <item>vpermt2w</item>+      <item>vpermw</item>+      <item>vpexpandb</item>+      <item>vpexpandd</item>+      <item>vpexpandq</item>+      <item>vpexpandw</item>+      <item>vpextrb</item>+      <item>vpextrd</item>+      <item>vpextrq</item>+      <item>vpextrw</item>+      <item>vpgatherdd</item>+      <item>vpgatherdq</item>+      <item>vpgatherqd</item>+      <item>vpgatherqq</item>+      <item>vphaddbd</item>+      <item>vphaddbq</item>+      <item>vphaddbw</item>+      <item>vphaddd</item>+      <item>vphadddq</item>+      <item>vphaddsw</item>+      <item>vphaddubd</item>+      <item>vphaddubq</item>+      <item>vphaddubw</item>+      <item>vphaddudq</item>+      <item>vphadduwd</item>+      <item>vphadduwq</item>+      <item>vphaddw</item>+      <item>vphaddwd</item>+      <item>vphaddwq</item>+      <item>vphminposuw</item>+      <item>vphsubbw</item>+      <item>vphsubd</item>+      <item>vphsubdq</item>+      <item>vphsubsw</item>+      <item>vphsubw</item>+      <item>vphsubwd</item>+      <item>vpinsrb</item>+      <item>vpinsrd</item>+      <item>vpinsrq</item>+      <item>vpinsrw</item>+      <item>vplzcntd</item>+      <item>vplzcntq</item>+      <item>vpmacsdd</item>+      <item>vpmacsdqh</item>+      <item>vpmacsdql</item>+      <item>vpmacssdd</item>+      <item>vpmacssdqh</item>+      <item>vpmacssdql</item>+      <item>vpmacsswd</item>+      <item>vpmacssww</item>+      <item>vpmacswd</item>+      <item>vpmacsww</item>+      <item>vpmadcsswd</item>+      <item>vpmadcswd</item>+      <item>vpmadd52huq</item>+      <item>vpmadd52luq</item>+      <item>vpmaddubsw</item>+      <item>vpmaddwd</item>+      <item>vpmaskmovd</item>+      <item>vpmaskmovq</item>+      <item>vpmaxsb</item>+      <item>vpmaxsd</item>+      <item>vpmaxsq</item>+      <item>vpmaxsw</item>+      <item>vpmaxub</item>+      <item>vpmaxud</item>+      <item>vpmaxuq</item>+      <item>vpmaxuw</item>+      <item>vpminsb</item>+      <item>vpminsd</item>+      <item>vpminsq</item>+      <item>vpminsw</item>+      <item>vpminub</item>+      <item>vpminud</item>+      <item>vpminuq</item>+      <item>vpminuw</item>+      <item>vpmovb2m</item>+      <item>vpmovd2m</item>+      <item>vpmovdb</item>+      <item>vpmovdw</item>+      <item>vpmovm2b</item>+      <item>vpmovm2d</item>+      <item>vpmovm2q</item>+      <item>vpmovm2w</item>+      <item>vpmovmskb</item>+      <item>vpmovq2m</item>+      <item>vpmovqb</item>+      <item>vpmovqd</item>+      <item>vpmovqw</item>+      <item>vpmovsdb</item>+      <item>vpmovsdw</item>+      <item>vpmovsqb</item>+      <item>vpmovsqd</item>+      <item>vpmovsqw</item>+      <item>vpmovswb</item>+      <item>vpmovsxbd</item>+      <item>vpmovsxbq</item>+      <item>vpmovsxbw</item>+      <item>vpmovsxdq</item>+      <item>vpmovsxwd</item>+      <item>vpmovsxwq</item>+      <item>vpmovusdb</item>+      <item>vpmovusdw</item>+      <item>vpmovusqb</item>+      <item>vpmovusqd</item>+      <item>vpmovusqw</item>+      <item>vpmovuswb</item>+      <item>vpmovw2m</item>+      <item>vpmovwb</item>+      <item>vpmovzxbd</item>+      <item>vpmovzxbq</item>+      <item>vpmovzxbw</item>+      <item>vpmovzxdq</item>+      <item>vpmovzxwd</item>+      <item>vpmovzxwq</item>+      <item>vpmuldq</item>+      <item>vpmulhrsw</item>+      <item>vpmulhuw</item>+      <item>vpmulhw</item>+      <item>vpmulld</item>+      <item>vpmullq</item>+      <item>vpmullw</item>+      <item>vpmultishiftqb</item>+      <item>vpmuludq</item>+      <item>vpopcntb</item>+      <item>vpopcntd</item>+      <item>vpopcntq</item>+      <item>vpopcntw</item>+      <item>vpor</item>+      <item>vpord</item>+      <item>vporq</item>+      <item>vpperm</item>+      <item>vprold</item>+      <item>vprolq</item>+      <item>vprolvd</item>+      <item>vprolvq</item>+      <item>vprord</item>+      <item>vprorq</item>+      <item>vprorvd</item>+      <item>vprorvq</item>+      <item>vprotb</item>+      <item>vprotd</item>+      <item>vprotq</item>+      <item>vprotw</item>+      <item>vpsadbw</item>+      <item>vpscatterdd</item>+      <item>vpscatterdq</item>+      <item>vpscatterqd</item>+      <item>vpscatterqq</item>+      <item>vpshab</item>+      <item>vpshad</item>+      <item>vpshaq</item>+      <item>vpshaw</item>+      <item>vpshlb</item>+      <item>vpshld</item>+      <item>vpshldd</item>+      <item>vpshldq</item>+      <item>vpshldvd</item>+      <item>vpshldvq</item>+      <item>vpshldvw</item>+      <item>vpshldw</item>+      <item>vpshlq</item>+      <item>vpshlw</item>+      <item>vpshrdd</item>+      <item>vpshrdq</item>+      <item>vpshrdvd</item>+      <item>vpshrdvq</item>+      <item>vpshrdvw</item>+      <item>vpshrdw</item>+      <item>vpshufb</item>+      <item>vpshufbitqmb</item>+      <item>vpshufd</item>+      <item>vpshufhw</item>+      <item>vpshuflw</item>+      <item>vpsignb</item>+      <item>vpsignd</item>+      <item>vpsignw</item>+      <item>vpslld</item>+      <item>vpslldq</item>+      <item>vpsllq</item>+      <item>vpsllvd</item>+      <item>vpsllvq</item>+      <item>vpsllvw</item>+      <item>vpsllw</item>+      <item>vpsrad</item>+      <item>vpsraq</item>+      <item>vpsravd</item>+      <item>vpsravq</item>+      <item>vpsravw</item>+      <item>vpsraw</item>+      <item>vpsrld</item>+      <item>vpsrldq</item>+      <item>vpsrlq</item>+      <item>vpsrlvd</item>+      <item>vpsrlvq</item>+      <item>vpsrlvw</item>+      <item>vpsrlw</item>+      <item>vpsubb</item>+      <item>vpsubd</item>+      <item>vpsubq</item>+      <item>vpsubsb</item>+      <item>vpsubsw</item>+      <item>vpsubusb</item>+      <item>vpsubusw</item>+      <item>vpsubw</item>+      <item>vpternlogd</item>+      <item>vpternlogq</item>+      <item>vptest</item>+      <item>vptestmb</item>+      <item>vptestmd</item>+      <item>vptestmq</item>+      <item>vptestmw</item>+      <item>vptestnmb</item>+      <item>vptestnmd</item>+      <item>vptestnmq</item>+      <item>vptestnmw</item>+      <item>vpunpckhbw</item>+      <item>vpunpckhdq</item>+      <item>vpunpckhqdq</item>+      <item>vpunpckhwd</item>+      <item>vpunpcklbw</item>+      <item>vpunpckldq</item>+      <item>vpunpcklqdq</item>+      <item>vpunpcklwd</item>+      <item>vpxor</item>+      <item>vpxord</item>+      <item>vpxorq</item>+      <item>vrangepd</item>+      <item>vrangeps</item>+      <item>vrangesd</item>+      <item>vrangess</item>+      <item>vrcp14pd</item>+      <item>vrcp14ps</item>+      <item>vrcp14sd</item>+      <item>vrcp14ss</item>+      <item>vrcp28pd</item>+      <item>vrcp28ps</item>+      <item>vrcp28sd</item>+      <item>vrcp28ss</item>+      <item>vrcpps</item>+      <item>vrcpss</item>+      <item>vreducepd</item>+      <item>vreduceps</item>+      <item>vreducesd</item>+      <item>vreducess</item>+      <item>vrndscalepd</item>+      <item>vrndscaleps</item>+      <item>vrndscalesd</item>+      <item>vrndscaless</item>+      <item>vroundpd</item>+      <item>vroundps</item>+      <item>vroundsd</item>+      <item>vroundss</item>+      <item>vrsqrt14pd</item>+      <item>vrsqrt14ps</item>+      <item>vrsqrt14sd</item>+      <item>vrsqrt14ss</item>+      <item>vrsqrt28pd</item>+      <item>vrsqrt28ps</item>+      <item>vrsqrt28sd</item>+      <item>vrsqrt28ss</item>+      <item>vrsqrtps</item>+      <item>vrsqrtss</item>+      <item>vscalefpd</item>+      <item>vscalefps</item>+      <item>vscalefsd</item>+      <item>vscalefss</item>+      <item>vscatterdpd</item>+      <item>vscatterdps</item>+      <item>vscatterpf0dpd</item>+      <item>vscatterpf0dps</item>+      <item>vscatterpf0qpd</item>+      <item>vscatterpf0qps</item>+      <item>vscatterpf1dpd</item>+      <item>vscatterpf1dps</item>+      <item>vscatterpf1qpd</item>+      <item>vscatterpf1qps</item>+      <item>vscatterqpd</item>+      <item>vscatterqps</item>+      <item>vshuff32x4</item>+      <item>vshuff64x2</item>+      <item>vshufi32x4</item>+      <item>vshufi64x2</item>+      <item>vshufpd</item>+      <item>vshufps</item>+      <item>vsqrtpd</item>+      <item>vsqrtps</item>+      <item>vsqrtsd</item>+      <item>vsqrtss</item>+      <item>vstmxcsr</item>+      <item>vsubpd</item>+      <item>vsubps</item>+      <item>vsubsd</item>+      <item>vsubss</item>+      <item>vtestpd</item>+      <item>vtestps</item>+      <item>vucomisd</item>+      <item>vucomiss</item>+      <item>vunpckhpd</item>+      <item>vunpckhps</item>+      <item>vunpcklpd</item>+      <item>vunpcklps</item>+      <item>vxorpd</item>+      <item>vxorps</item>+      <item>vzeroall</item>+      <item>vzeroupper</item>+      <item>wbinvd</item>+      <item>wbnoinvd</item>+      <item>wrfsbase</item>+      <item>wrgsbase</item>+      <item>wrmsr</item>+      <item>wrpkru</item>+      <item>wrshr</item>+      <item>wrssd</item>+      <item>wrssq</item>+      <item>wrussd</item>+      <item>wrussq</item>+      <item>xabort</item>+      <item>xadd</item>+      <item>xbegin</item>+      <item>xbts</item>+      <item>xchg</item>+      <item>xcryptcbc</item>+      <item>xcryptcfb</item>+      <item>xcryptctr</item>+      <item>xcryptecb</item>+      <item>xcryptofb</item>+      <item>xend</item>+      <item>xgetbv</item>+      <item>xlat</item>+      <item>xlatb</item>+      <item>xor</item>+      <item>xorpd</item>+      <item>xorps</item>+      <item>xresldtrk</item>+      <item>xrstor</item>+      <item>xrstor64</item>+      <item>xrstors</item>+      <item>xrstors64</item>+      <item>xsave</item>+      <item>xsave64</item>+      <item>xsavec</item>+      <item>xsavec64</item>+      <item>xsaveopt</item>+      <item>xsaveopt64</item>+      <item>xsaves</item>+      <item>xsaves64</item>+      <item>xsetbv</item>+      <item>xsha1</item>+      <item>xsha256</item>+      <item>xstore</item>+      <item>xsusldtrk</item>+      <item>xtest</item>+    </list>++    <list name="branch instructions">+      <item>call</item>+      <item>iret</item>+      <item>iretd</item>+      <item>iretq</item>+      <item>iretw</item>+      <item>ja</item>+      <item>jae</item>+      <item>jb</item>+      <item>jbe</item>+      <item>jc</item>+      <item>jcxz</item>+      <item>je</item>+      <item>jecxz</item>+      <item>jg</item>+      <item>jge</item>+      <item>jl</item>+      <item>jle</item>+      <item>jmp</item>+      <item>jmpe</item>+      <item>jna</item>+      <item>jnae</item>+      <item>jnb</item>+      <item>jnbe</item>+      <item>jnc</item>+      <item>jne</item>+      <item>jng</item>+      <item>jnge</item>+      <item>jnl</item>+      <item>jnle</item>+      <item>jno</item>+      <item>jnp</item>+      <item>jns</item>+      <item>jnz</item>+      <item>jo</item>+      <item>jp</item>+      <item>jpe</item>+      <item>jpo</item>+      <item>jrcxz</item>+      <item>js</item>+      <item>jz</item>+      <item>ret</item>+      <item>retd</item>+      <item>retf</item>+      <item>retfd</item>+      <item>retfq</item>+      <item>retfw</item>+      <item>retn</item>+      <item>retnd</item>+      <item>retnq</item>+      <item>retnw</item>+      <item>retq</item>+      <item>retw</item>+    </list>++    <list name="macros">+      <item>arg</item>+      <item>assign</item>+      <item>clear</item>+      <item>defalias</item>+      <item>define</item>+      <item>defstr</item>+      <item>deftok</item>+      <item>depend</item>+      <item>elif</item>+      <item>elifctx</item>+      <item>elifdef</item>+      <item>elifempty</item>+      <item>elifenv</item>+      <item>elifidn</item>+      <item>elifidni</item>+      <item>elifn</item>+      <item>elifnctx</item>+      <item>elifndef</item>+      <item>elifnempty</item>+      <item>elifnenv</item>+      <item>elifnidn</item>+      <item>elifnidni</item>+      <item>elifntoken</item>+      <item>eliftoken</item>+      <item>else</item>+      <item>exitrep</item>+      <item>endif</item>+      <item>endmacro</item>+      <item>endrep</item>+      <item>error</item>+      <item>fatal</item>+      <item>idefine</item>+      <item>if</item>+      <item>ifctx</item>+      <item>ifdef</item>+      <item>ifempty</item>+      <item>ifid</item>+      <item>ifidn</item>+      <item>ifidni</item>+      <item>ifmacro</item>+      <item>ifn</item>+      <item>ifnctx</item>+      <item>ifndef</item>+      <item>ifnempty</item>+      <item>ifnenv</item>+      <item>ifnidn</item>+      <item>ifnidni</item>+      <item>ifnmacro</item>+      <item>ifntoken</item>+      <item>ifnum</item>+      <item>ifstr</item>+      <item>iftoken</item>+      <item>imacro</item>+      <item>include</item>+      <item>line</item>+      <item>local</item>+      <item>macro</item>+      <item>pathsearch</item>+      <item>pop</item>+      <item>pragma</item>+      <item>push</item>+      <item>rep</item>+      <item>repl</item>+      <item>rotate</item>+      <item>stacksize</item>+      <item>strcat</item>+      <item>strlen</item>+      <item>substr</item>+      <item>undef</item>+      <item>unmacro</item>+      <item>use</item>+      <item>warning</item>+      <item>xdefine</item>+    </list>++    <list name="Data">+      <!-- repeat some data declaration -->+      <item>times</item>+      <!-- constants -->+      <item>equ</item>+      <!-- Initialized data -->+      <item>db</item>+      <item>dw</item>+      <item>dd</item>+      <item>dq</item>+      <item>dt</item>+      <item>do</item>+      <item>dy</item>+      <item>dz</item>+      <!-- Uninitialized data -->+      <item>resb</item>+      <item>resw</item>+      <item>resd</item>+      <item>resq</item>+      <item>rest</item>+      <item>reso</item>+      <item>resy</item>+      <item>resz</item>+      <!-- binary file include -->+      <item>incbin</item>+      <!-- operand size -->+      <item>byte</item>+      <item>word</item>+      <item>dword</item>+      <item>qword</item>+      <item>tword</item>+      <item>oword</item>+      <item>yword</item>+      <item>zword</item>+      <item>short</item>+      <item>ptr</item>+    </list>++    <list name="NASM Keywords">+      <!-- prefix -->+      <item>abs</item>+      <item>a32</item>+      <item>as</item>+      <item>bnd</item>+      <item>cs</item>+      <item>lock</item>+      <item>nobnd</item>+      <item>rel</item>+      <item>rep</item>+      <item>repe</item>+      <item>repne</item>+      <item>repnz</item>+      <item>repz</item>+      <item>xacquire</item>+      <item>xrelease</item>++      <!-- NASM directives -->+      <item>absolute</item>+      <item>bits</item>+      <item>common</item>+      <item>default</item>+      <item>cpu</item>+      <item>extern</item>+      <item>global</item>+      <item>org</item>+      <item>section</item>+      <item>seg</item>+      <item>segment</item>+      <item>static</item>+      <item>strict</item>+      <item>use16</item>+      <item>use32</item>+      <item>wrt</item>++      <!-- NASM standard macros -->+      <item>struc</item>+      <item>endstruc</item>+      <item>istruc</item>+      <item>at</item>+      <item>iend</item>+      <item>align</item>+      <item>alignb</item>++      <item>__?BITS?__</item>+      <item>__?SECT?__</item>+      <item>__?NASM_MAJOR?__</item>+      <item>__?NASM_MINOR?__</item>+      <item>__?NASM_SUBMINOR?__</item>+      <item>__?NASM_PATCHLEVEL?__</item>+      <item>__?NASM_SNAPSHOT?__</item>+      <item>__?NASM_VERSION_ID?__</item>+      <item>__?NASM_VER?__</item>+      <item>__?FILE?__</item>+      <item>__?LINE?__</item>+      <item>__?OUTPUT_FORMAT?__</item>+      <item>__?DEBUG_FORMAT?__</item>+      <item>__?DATE?__</item>+      <item>__?TIME?__</item>+      <item>__?DATE_NUM?__</item>+      <item>__?TIME_NUM?__</item>+      <item>__?UTC_DATE?__</item>+      <item>__?UTC_TIME?__</item>+      <item>__?UTC_DATE_NUM?__</item>+      <item>__?UTC_TIME_NUM?__</item>+      <item>__?POSIX_TIME?__</item>+      <item>__?PASS?__</item>+      <item>__?USE_ALTREG?__</item>+      <item>__?ALIGNMODE?__</item>++      <item>__?utf16?__</item>+      <item>__?utf16le?__</item>+      <item>__?utf16be?__</item>+      <item>__?utf32?__</item>+      <item>__?utf32le?__</item>+      <item>__?utf32be?__</item>+      <item>__?float8?__</item>+      <item>__?float16?__</item>+      <item>__?bfloat16?__</item>+      <item>__?float32?__</item>+      <item>__?float64?__</item>+      <item>__?float80m?__</item>+      <item>__?float80e?__</item>+      <item>__?float128l?__</item>+      <item>__?float128h?__</item>+      <item>__?Infinity?__</item>+      <item>__?QNaN?__</item>+      <item>__?NaN?__</item>+      <item>__?SNaN?__</item>+      <item>__?FLOAT_DAZ?__</item>+      <item>__?FLOAT_ROUND?__</item>+      <item>__?FLOAT?__</item>+      <item>__?FLOAT?__</item>+    </list>++    <list name="special symbols">+      <item>got</item>+      <item>gotoff</item>+      <item>gotpc</item>+      <item>gotpcrel</item>+      <item>gottpoff</item>+      <item>imagebase</item>+      <item>plt</item>+      <item>start</item>+      <item>sym</item>+      <item>tlsie</item>+      <item>tlvp</item>+    </list>++    <contexts>+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Instruction">+        <DetectSpaces attribute="Normal Text"/>+        <RegExpr attribute="Label" context="Instruction" String="(?:(?:\.|@@|&#37;&#37;)(?:\.@)?)?[A-Za-z_][A-Za-z0-9_.]*+:" firstNonSpace="1"/>+      </context>++      <context name="Instruction" attribute="Normal Text" lineEndContext="#pop">+        <DetectSpaces attribute="Normal Text"/>+        <IncludeRules context="IncInstruction"/>+      </context>++      <context name="IncInstruction" attribute="Normal Text" lineEndContext="#pop">+        <DetectChar attribute="Preprocessor" context="#pop!Preprocessor" char="%" firstNonSpace="1"/>+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>+        <keyword attribute="Data" context="#pop!Operand" String="Data"/>+        <keyword attribute="Instructions" context="#pop!Operand" String="instructions"/>+        <keyword attribute="Branch Instructions" context="#pop!Operand" String="branch instructions"/>+        <keyword attribute="NASM Keywords" context="#pop!Operand" String="NASM Keywords"/>+        <DetectIdentifier attribute="Unknown Instructions" context="UnknownInstruction"/>+        <LineContinue attribute="Symbol" context="#pop!Operand"/>+      </context>+      <context name="UnknownInstruction" attribute="Unknown Instructions" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Operand">+        <DetectChar attribute="Symbol" context="#stay" char="."/>+        <Int attribute="Unknown Instructions" context="#stay"/>+        <DetectIdentifier attribute="Unknown Instructions" context="#stay"/>+      </context>++      <context name="Operand" attribute="Normal Text" lineEndContext="#pop">+        <DetectSpaces attribute="Normal Text"/>+        <Detect2Chars attribute="Label" context="LabelIdent" char="%" char1="%"/>+        <Detect2Chars attribute="Label" context="LabelIdent" char="@" char1="@"/>+        <AnyChar attribute="Symbol" context="#stay" String=",-+/*%~^=!(){}[]:|&amp;?&lt;>"/>+        <DetectChar attribute="Symbol" context="Dollar" char="$"/>+        <DetectChar attribute="Symbol" context="SymbolOrLabel" char="." lookAhead="1"/>+        <DetectChar attribute="String" context="SQString" char="'"/>+        <DetectChar attribute="String" context="DQString" char="&quot;"/>+        <DetectChar attribute="String" context="String" char="`"/>+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>+        <AnyChar attribute="Number" context="Number" String="0123456789" lookAhead="1"/>+        <keyword attribute="Registers" context="#stay" String="registers"/>+        <keyword attribute="Data" context="#stay" String="Data"/>+        <keyword attribute="NASM Keywords" context="#stay" String="NASM Keywords"/>+        <DetectIdentifier attribute="Normal Text" context="Ident"/>+        <LineContinue attribute="Symbol"/>+      </context>++      <context name="LabelIdent" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectIdentifier attribute="Label" context="#stay"/>+        <DetectChar attribute="Symbol" context="#stay" char="."/>+        <Int attribute="Label" context="#stay"/>+      </context>++      <context name="Ident" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Symbol" context="#stay" char="."/>+        <AnyChar attribute="Normal Text" context="#stay" String="_$#@~?0123456789"/>+        <DetectIdentifier attribute="Normal Text" context="#stay"/>+      </context>++      <context name="Dollar" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop!Ident">+        <Detect2Chars attribute="Symbol" context="#pop" char="$" char1="-"/>+        <AnyChar attribute="Symbol" context="#pop!Ident" String="$+-"/>+        <AnyChar attribute="BaseN" context="#pop!$Hex" String="0123456789"/>+        <DetectIdentifier attribute="Normal Text" context="#pop!Ident"/>+      </context>+      <context name="$Hex" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" String="[0-9a-fA-F_]*"/>+      </context>++      <context name="Number" attribute="Number" lineEndContext="#pop">+        <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>+        <RegExpr attribute="Radix" context="#pop!PrefixedNumber" insensitive="1" String="&prefixedBaseN;" lookAhead="1"/>+        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>+        <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>+      </context>+      <context name="FloatSuffix" attribute="Float" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="pP"/>+      </context>+      <context name="BaseSuffix" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="byoqhxBYOQHX"/>+      </context>+      <context name="NumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="dtDT"/>+      </context>+      <context name="PrefixedNumber" attribute="Radix" lineEndContext="#pop">+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="h"/>+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="x"/>+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="q"/>+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="o"/>+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="b"/>+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="y"/>+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="d"/>+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="t"/>+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="H"/>+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="X"/>+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="Q"/>+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="O"/>+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="B"/>+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="Y"/>+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="D"/>+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="T"/>+      </context>+      <context name="Octal" attribute="BaseN" lineEndContext="#pop">+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" insensitive="1" String="[0-7_]+"/>+      </context>+      <context name="Binary" attribute="BaseN" lineEndContext="#pop">+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" insensitive="1" String="[01_]+"/>+      </context>+      <context name="Decimal" attribute="Number" lineEndContext="#pop">+        <RegExpr attribute="Number" context="#pop!CheckNumberSuffix" insensitive="1" String="[0-9_]+"/>+      </context>+      <context name="CheckNumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectSpaces attribute="Normal Text" context="#pop"/>+        <AnyChar attribute="Symbol" context="#pop" String=",-+/*%~^=!(){}[]:|&amp;?&lt;>"/>+        <WordDetect attribute="NASM Keywords" context="#pop" String=".nolist"/>+        <RegExpr attribute="Error" context="#pop" String="[\d\w]+"/>+      </context>++      <context name="SymbolOrLabel" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="Label" context="#pop" String="\.(?:\.@)?[A-Za-z0-9_.]*+"/>+        <Detect2Chars attribute="Symbol" context="#pop!SpecialSymbol" char="." char1="."/>+        <DetectChar attribute="Symbol" context="#pop" char="."/>+      </context>+      <context name="SpecialSymbol" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">+        <keyword attribute="Symbol" context="#pop" String="special symbols"/>+        <DetectIdentifier attribute="Unknown Symbol" context="#pop"/>+      </context>++      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">+        <WordDetect attribute="Preprocessor" context="#pop!Macro" String="macro"/>+        <WordDetect attribute="Preprocessor" context="#pop!Macro" String="imacro"/>+        <keyword attribute="Preprocessor" context="#pop!Instruction" String="macros"/>+        <Int attribute="Number" context="#pop"/>+      </context>+      <context name="Macro" attribute="Preprocessor" lineEndContext="#pop">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar attribute="Preprocessor" context="MacroPreprocessor" char="%" firstNonSpace="1"/>+        <WordDetect attribute="NASM Keywords" context="#stay" String=".nolist"/>+        <IncludeRules context="IncInstruction"/>+      </context>+      <context name="MacroPreprocessor" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!Preprocessor">+        <WordDetect attribute="Preprocessor" context="#pop#pop" String="endmacro"/>+        <Detect2Chars attribute="Preprocessor" context="#pop" char="?" char1="?"/>+        <AnyChar attribute="Preprocessor" context="#pop" String="?,"/>+        <Detect2Chars attribute="Preprocessor" context="#pop!MacroLabel" char="$" char1="$"/>+        <AnyChar attribute="Preprocessor" context="#pop!MacroLabel" String="%$"/>+        <AnyChar attribute="Preprocessor" context="#pop!MacroNumber" String="-+"/>+        <DetectChar attribute="Preprocessor" context="#pop!MacroIdent" char="!"/>+        <Int attribute="Preprocessor" context="#pop"/>+      </context>+      <context name="MacroNumber" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">+        <Int attribute="Preprocessor" context="#pop"/>+      </context>+      <context name="MacroIdent" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectIdentifier attribute="Normal Text" context="#pop"/>+      </context>+      <context name="MacroLabel" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectIdentifier attribute="Label" context="#pop"/>+      </context>++      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces attribute="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+        <DetectIdentifier attribute="Comment"/>+      </context>++      <context name="SQString" attribute="String" lineEndContext="#pop">+        <LineContinue attribute="Symbol"/>+        <DetectChar attribute="String" context="#pop" char="'"/>+      </context>+      <context name="DQString" attribute="String" lineEndContext="#pop">+        <LineContinue attribute="Symbol"/>+        <DetectChar attribute="String" context="#pop" char="&quot;"/>+      </context>+      <context name="String" attribute="String" lineEndContext="#pop">+        <LineContinue attribute="Symbol"/>+        <DetectChar attribute="Symbol" context="Escape" char="\" lookAhead="1"/>+        <DetectChar attribute="String" context="#pop" char="`"/>+      </context>+      <context name="Escape" attribute="Char" lineEndContext="#pop">+        <RegExpr attribute="Char" context="#pop" String="\\(?:['&quot;`\\?abtnvfre]|[0-7]{3}|[xX][0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|0)"/>+        <RegExpr attribute="Bad Char" context="#pop" String="\\(?:[0-7]++|[xXuU][0-9a-fA-F]*|)"/>+      </context>+    </contexts>++    <itemDatas>+      <itemData name="Normal Text" defStyleNum="dsNormal"/>+      <itemData name="Registers" defStyleNum="dsKeyword"/>+      <itemData name="Instructions" defStyleNum="dsKeyword"/>+      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"/>+      <itemData name="Unknown Instructions" defStyleNum="dsNormal"/>+      <itemData name="NASM Keywords" defStyleNum="dsKeyword"/>+      <itemData name="Comment" defStyleNum="dsComment"/>+      <itemData name="Label" defStyleNum="dsFunction"/>+      <itemData name="Data" defStyleNum="dsDataType"/>+      <itemData name="BaseN" defStyleNum="dsBaseN"/>+      <itemData name="Float" defStyleNum="dsFloat"/>+      <itemData name="Number" defStyleNum="dsDecVal"/>+      <itemData name="Radix" defStyleNum="dsBaseN"/>+      <itemData name="Char" defStyleNum="dsChar"/>+      <itemData name="String" defStyleNum="dsString"/>+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>+      <itemData name="Symbol" defStyleNum="dsOperator"/>+      <itemData name="Unknown Symbol" defStyleNum="dsError"/>+      <itemData name="Bad Char" defStyleNum="dsError"/>+      <itemData name="Error" defStyleNum="dsError"/>+    </itemDatas>+  </highlighting>+  <general>+    <keywords casesensitive="0" weakDeliminator="?"/>+    <comments>+      <comment name="singleLine" start=";" position="afterwhitespace"/>     </comments>   </general> </language>
+ syntax/nim.xml view
@@ -0,0 +1,356 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">++<!--+Improvements:++- fixed typo: "lamba" is now "lambda"+- added bind, func, typed, untyped, on, off+- added multiline strings+- added multiline comments (with stacking!)+- added support for hex, binary, and octal numbers+- added support for numerical literal suffixes (e.g. 'f64)+- added triple-quote strings, raw strings and regex strings+- made escape sequences in strings work slightly better (still needs work)+- changed pragma syntax highlighting to dsAttribute instead of dsDataType+- doc comments+- TODO/BUG/FIXME/HACK/XXXX/NOTE comments++-->++<language+	name="Nim"+	version="2"+	kateversion="5.0"+	section="Sources"+	extensions="*.nim"+	mimetype="text/x-nim"+	indenter="python"+	author="github.com/juancarlospaco"+	license="WTFPL">++	<highlighting>+		<list name="keywords">+			<item>const</item>+			<item>export</item>+			<item>import</item>+			<item>include</item>+			<item>lambda</item>+			<item>let</item>+			<item>var</item>+		</list>++		<list name="controls">+			<item>assert</item> <!-- system -->+			<item>asm</item>+			<item>atomic</item>+			<item>block</item>+			<item>break</item>+			<item>case</item>+			<item>cast</item>+			<item>compiles</item> <!-- system -->+			<item>continue</item>+			<item>declared</item> <!-- system -->+			<item>declaredinscope</item> <!-- system -->+			<item>defined</item> <!-- system -->+			<item>discard</item>+			<item>do</item>+			<item>echo</item> <!-- system -->+			<item>elif</item>+			<item>else</item>+			<item>end</item>+			<item>except</item>+			<item>finally</item>+			<item>for</item>+			<item>from</item>+			<item>if</item>+			<item>mixin</item>+			<item>bind</item>+			<item>new</item> <!-- system -->+			<item>raise</item>+			<item>return</item>+			<item>sizeof</item> <!-- system -->+			<item>try</item>+			<item>when</item>+			<item>while</item>+			<item>quit</item> <!-- system -->+			<item>using</item>+			<item>yield</item>+		</list>++		<list name="operators">+			<item>addr</item>+			<item>and</item>+			<item>as</item>+			<item>div</item>+			<item>in</item>+			<item>is</item>+			<item>isnot</item>+			<item>mod</item>+			<item>not</item>+			<item>notin</item>+			<item>of</item>+			<item>or</item>+			<item>shl</item>+			<item>shr</item>+			<item>xor</item>+		</list>++		<list name="types">+			<item>array</item>+			<item>bool</item>+			<item>byte</item>+			<item>cchar</item>+			<item>cdouble</item>+			<item>char</item>+			<item>cfloat</item>+			<item>cint</item>+			<item>clong</item>+			<item>cshort</item>+			<item>cstring</item>+			<item>cuint</item>+			<item>distinct</item>+			<item>expr</item>+			<item>float</item>+			<item>float32</item>+			<item>float64</item>+			<item>generic</item>+			<item>int</item>+			<item>int8</item>+			<item>int16</item>+			<item>int32</item>+			<item>int64</item>+			<item>interface</item>+			<item>openarray</item>+			<item>pointer</item>+			<item>set</item>+			<item>seq</item>+			<item>stmt</item>+			<item>string</item>+			<item>tuple</item>+			<item>typedesc</item>+			<item>uint</item>+			<item>uint8</item>+			<item>uint16</item>+			<item>uint32</item>+			<item>uint64</item>+			<item>varargs</item>+			<item>void</item>+			<item>untyped</item>+			<item>typed</item>+		</list>++		<list name="attrs">+			<item>out</item>+			<item>ptr</item>+			<item>ref</item>+			<item>shared</item>+			<item>static</item>+		</list>++		<list name="consts">+			<item>false</item>+			<item>inf</item>+			<item>nil</item>+			<item>true</item>+			<item>on</item>+			<item>off</item>+		</list>++		<list name="others">+			<item>result</item>+		</list>++		<list name="proctar">+			<item>converter</item>+			<item>iterator</item>+			<item>macro</item>+			<item>method</item>+			<item>proc</item>+			<item>func</item>+			<item>template</item>+		</list>++		<list name="typetar">+			<item>type</item>+			<item>concept</item>+			<item>object</item>+			<item>enum</item>+		</list>++		<contexts>+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">+				<DetectSpaces/>+				<keyword context="#stay" attribute="Keywords" String="keywords"/>+				<keyword context="#stay" attribute="Controls" String="controls"/>+				<keyword context="#stay" attribute="Operators" String="operators"/>+				<keyword context="#stay" attribute="Types"    String="types"/>+				<keyword context="#stay" attribute="Attrs"    String="attrs"/>+				<keyword context="#stay" attribute="Others"   String="others"/>+				<keyword context="#stay" attribute="Constants" String="consts"/>++				<keyword context="Start-Proctar" attribute="Keywords" String="proctar"/>+				<keyword context="Start-Typetar" attribute="Keywords" String="typetar"/>++				<StringDetect context="DocComment2" attribute="DocComment" String="##[" beginRegion="DocComment"/>+				<Detect2Chars context="DocComment1" attribute="DocComment" char="#" char1="#"/>+				<Detect2Chars context="Comment2" attribute="Comment" char="#" char1="[" beginRegion="Comment"/>+				<DetectChar context="Comment1" attribute="Comment" char="#"/>++				<StringDetect context="tripleq-string" attribute="String" String="&quot;&quot;&quot;" beginRegion="String"/>+				<DetectChar   context="string"         attribute="String" char="&quot;" beginRegion="String"/>+				<StringDetect context="re-string"      attribute="String" String="re&quot;" beginRegion="String"/>+				<Detect2Chars context="raw-string"     attribute="String" char="r" char1="&quot;" beginRegion="String"/>++				<RegExpr context="#stay" attribute="Hex"    String="0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>+				<RegExpr context="#stay" attribute="Octal"  String="0o[0-7][0-7_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>+				<RegExpr context="#stay" attribute="Binary" String="0[bB][01][01_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>+				<RegExpr context="#stay" attribute="Decimal" String="\b\d+(?=\.\.)"/>+				<Float   context="#stay" attribute="Float"/>+				<Int     context="#stay" attribute="Decimal"/>++				<RegExpr context="#stay" attribute="Types"  String="\b_*[A-Z](?:\w|\._*[A-Z])*\b"/>+				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+\b\s*(?=(?:\[.*\]\w*)?(?:\(|(?:[ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))"/>+				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+(?=&quot;)"/>++				<DetectIdentifier/>++				<Detect2Chars context="Pragmatar" attribute="Pragmas" char="{" char1="."/>+				<RegExpr context="Proptar" attribute="Brackets" String="\.(?!\d)"/>+				<RegExpr context="#stay" attribute="Float" String="\.(?=\d)"/>++				<AnyChar context="#stay" attribute="Brackets" String="()[]{},:;"/>+				<AnyChar context="#stay" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;|?"/>+				<HlCChar context="#stay" attribute="Char"/>+			</context>++			<context name="stringescape" attribute="String" lineEndContext="#stay">+				<RegExpr attribute="String Char" String="\\[&quot;abfnrtv]" context="#stay"/>+			</context>++			<context name="string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+				<IncludeRules context="stringescape"/>+				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>+			</context>+			<context name="tripleq-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+				<StringDetect context="#pop" attribute="String" String="&quot;&quot;&quot;" endRegion="String"/>+			</context>+			<context name="raw-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+				<Detect2Chars context="#stay" attribute="String Char" char="&quot;" char1="&quot;"/>+				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>+			</context>+			<context name="re-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>+				<DetectChar context="#stay" attribute="String" char="/"/> <!-- Avoid closing string by JavaScript -->+				<IncludeRules context="Regular Expression##JavaScript"/>+			</context>++			<context name="Comment1" attribute="Comment" lineEndContext="#pop">+				<LineContinue attribute="Comment" context="#stay"/>+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/>+			</context>++			<context name="DocComment1" attribute="DocComment" lineEndContext="#pop">+				<LineContinue attribute="DocComment" context="#stay"/>+			</context>++			<context name="DocComment2" attribute="DocComment" lineEndContext="#stay" noIndentationBasedFolding="true">+				<LineContinue attribute="DocComment" context="#stay"/>+				<StringDetect attribute="DocComment" context="DocComment2" String="##[" beginRegion="DocComment"/>+				<StringDetect attribute="DocComment" context="#pop" String="]##" endRegion="DocComment"/>+			</context>++			<context name="Comment2" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+				<LineContinue attribute="Comment" context="#stay"/>+				<Detect2Chars attribute="Comment" context="Comment2" char="#" char1="[" beginRegion="Comment"/>+				<Detect2Chars attribute="Comment" context="#pop" char="]" char1="#" endRegion="Comment"/>+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/>+			</context>++			<context name="Start-Typetar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Typetar">+				<DetectSpaces context="#stay" attribute="Normal Text"/>+			</context>+			<context name="Typetar" attribute="TypeDefs" lineEndContext="#pop">+				<DetectChar context="#stay" attribute="Brackets" char="."/>+				<DetectChar context="#pop" char="#" lookAhead="true"/>+				<DetectSpaces context="#pop" attribute="Normal Text"/>+				<AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>+				<AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>+				<keyword context="#pop" attribute="Operators" String="operators"/>+			</context>++			<context name="Start-Proctar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Proctar">+				<DetectSpaces context="#stay" attribute="Normal Text"/>+			</context>+			<context name="Proctar" attribute="ProcDefs" lineEndContext="#pop">+				<DetectChar context="QuoteProctar" attribute="ProcDefs" char="`"/>+				<DetectChar context="#stay" attribute="Brackets" char="."/>+				<DetectChar context="#pop" char="#" lookAhead="true"/>+				<DetectSpaces context="#pop" attribute="Normal Text"/>+				<AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>+				<AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>+			</context>++			<context name="QuoteProctar" attribute="ProcDefs" lineEndContext="#pop">+				<DetectChar context="#pop" attribute="ProcDefs" char="`"/>+			</context>++			<context name="Pragmatar" attribute="Pragmas" lineEndContext="#stay" noIndentationBasedFolding="true">+				<Detect2Chars context="#pop" attribute="Pragmas" char="." char1="}"/>+			</context>++			<context name="Proptar" attribute="Props" lineEndContext="#pop">+				<keyword context="#pop" attribute="Types" String="types"/>+				<RegExpr context="#pop" attribute="Types" String="_*[A-Z]\w*"/>+				<RegExpr context="#pop" attribute="Funcs" String="_*[a-z]\w*(?=\()"/>+				<RegExpr context="#pop" attribute="Props" String="_*[a-z]\w*(?=\.)"/>+				<RegExpr context="#pop" attribute="Props" String="_*[a-z]\w*"/>+				<RegExpr context="#pop" attribute="Brackets" String="\.+"/>+			</context>+		</contexts>++		<itemDatas>+			<itemData name="Normal Text" defStyleNum="dsNormal"    spellChecking="false"/>+			<itemData name="Keywords"    defStyleNum="dsKeyword"   spellChecking="false"/>+			<itemData name="Controls"    defStyleNum="dsControlFlow" spellChecking="false"/>+			<itemData name="Pragmas"     defStyleNum="dsAttribute" spellChecking="false"/>+			<itemData name="Types"       defStyleNum="dsAttribute" spellChecking="false"/>+			<itemData name="Props"       defStyleNum="dsAttribute" spellChecking="false"/>+			<itemData name="Funcs"       defStyleNum="dsFunction"  spellChecking="false"/>+			<itemData name="Attrs"       defStyleNum="dsDataType"  spellChecking="false"/>+			<itemData name="Others"      defStyleNum="dsOthers"    spellChecking="false"/>+			<itemData name="Operators"   defStyleNum="dsComment"   spellChecking="false" bold="true" italic="false"/>+			<itemData name="Constants"   defStyleNum="dsConstant"  spellChecking="false" bold="true"/>++			<itemData name="TypeDefs"    defStyleNum="dsDataType" spellChecking="false" bold="true"/>+			<itemData name="ProcDefs"    defStyleNum="dsString"   spellChecking="false" bold="true"/>++			<itemData name="Brackets"    defStyleNum="dsKeyword"  spellChecking="false"/>+			<itemData name="Symbols"     defStyleNum="dsComment"  spellChecking="false" italic="false"/>++			<itemData name="Decimal"     defStyleNum="dsDecVal"   spellChecking="false"/>+			<itemData name="Hex"         defStyleNum="dsBaseN"    spellChecking="false"/>+			<itemData name="Binary"      defStyleNum="dsBaseN"    spellChecking="false"/>+			<itemData name="Octal"       defStyleNum="dsBaseN"    spellChecking="false"/>+			<itemData name="Float"       defStyleNum="dsFloat"    spellChecking="false"/>+			<itemData name="Char"        defStyleNum="dsChar"     spellChecking="false"/>+			<itemData name="String"      defStyleNum="dsString"   spellChecking="false"/>+			<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>+			<itemData name="Comment"     defStyleNum="dsComment" />+			<itemData name="DocComment"  defStyleNum="dsDocumentation" spellChecking="true"/>+		</itemDatas>+	</highlighting>++	<general>+		<comments>+			<comment name="singleLine" start="#" position="afterwhitespace"/>+			<comment name="multiLine" start="#[" end="]#" region="Comment"/>+		</comments>+		<folding indentationsensitive="true"/>+		<keywords casesensitive="0"/>+	</general>++</language>+<!-- kate: replace-tabs off; -->
syntax/noweb.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="noweb" version="2" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">+<language name="noweb" version="3" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)"> <!--  ######################################################################### # First version added to repository was 0.4, added as 1.0 .@@ -48,5 +48,10 @@       <itemData name="SectionName"  defStyleNum="dsRegionMarker" italic="true" />     </itemDatas>   </highlighting>+  <general>+    <comments>+      <comment name="multiLine" start="&lt;!--" end="--&gt;" />+    </comments>+  </general> </language> 
syntax/objectivec.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Objective-C" version="3" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">+<language name="Objective-C" version="5" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">   <highlighting>     <list name="keywords">       <item>break</item>@@ -63,10 +63,9 @@         <Int attribute="Decimal" context="Int Suffixes"/>         <HlCChar attribute="Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>+        <IncludeRules context="FindComments" />         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^#"/>+        <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" column="0"/>         <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />       </context>       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">@@ -87,20 +86,31 @@         <HlCStringChar attribute="String Char" context="#stay"/>         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>-      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment"/>+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true"/>+      </context>+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!SingleLineComment" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="/" char1="*" beginRegion="Comment" />+      </context>+      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="Preprocessor" lineEndContext="Default" name="Preprocessor">         <LineContinue attribute="Preprocessor" context="#stay"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>-      </context>-      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>+        <IncludeRules context="FindComments" />       </context>     </contexts>     <itemDatas>@@ -123,8 +133,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/objectivecpp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Objective-C++" version="5" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">+<language name="Objective-C++" version="7" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">   <highlighting>     <list name="keywords">       <item>break</item>@@ -164,8 +164,6 @@         <DetectSpaces />         <RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="Outscoped" firstNonSpace="true" />         <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />                  <keyword attribute="Keyword" context="#stay" String="keywords"/>         <keyword attribute="Data Type" context="#stay" String="types"/>@@ -179,20 +177,31 @@         <Int attribute="Decimal" context="Int Suffixes"/>         <HlCChar attribute="Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/> +        <IncludeRules context="FindComments" />+         <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />          <keyword attribute="Extensions" context="#stay" String="extensions" /> -        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>       </context>++      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />+      </context>++      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!SingleLineComment" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="/" char1="*" beginRegion="Comment" />+      </context>+       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">           <AnyChar String="fF" attribute="Float" context="#pop"/>       </context>@@ -212,16 +221,15 @@         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>-        <IncludeRules context="##Alerts" />-      </context>-      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">         <DetectSpaces />-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> @@ -236,9 +244,7 @@         <RegExpr attribute="Preprocessor" context="#stay" String="define.*"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>+        <IncludeRules context="FindComments" />       </context>        <context attribute="Preprocessor" lineEndContext="#pop" name="Define">@@ -250,9 +256,7 @@         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true" />         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*(endif|else|elif)" endRegion="Outscoped" firstNonSpace="true" />       </context>@@ -262,9 +266,7 @@         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true"/>         <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="Outscoped" firstNonSpace="true"/>       </context>@@ -293,8 +295,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/ocaml.xml view
@@ -17,7 +17,7 @@           extensions="*.ml;*.mli"           mimetype="text/x-ocaml"           section="Sources"-          version="6"+          version="7"           priority="10"           kateversion="2.4"           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"@@ -431,6 +431,10 @@         <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />         <!-- Strings in Ocaml comments must be well-formed: -->         <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />++        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
syntax/octave.xml view
@@ -20,8 +20,8 @@   Thanks to Luis Silvestre for previous version and suggestions --> --<language name="Octave" version="5" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">+<!-- low priority to let Objective-C win for .m files per default -->+<language name="Octave" version="8" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">    <highlighting> @@ -2765,7 +2765,8 @@         <keyword context="#stay" attribute="Functions" String="functions" />         <keyword context="#stay" attribute="Builtin" String="builtin"/>         <keyword context="#stay" attribute="Forge" String="forge" />-        <RegExpr context="#stay" attribute="Comment" String="[%#].*$" />+        <DetectChar context="Comment" attribute="Comment" char="%" />+        <DetectChar context="Comment" attribute="Comment" char="#" />         <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />         <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>@@ -2801,6 +2802,13 @@       </context>  +      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>++     </contexts>      <itemDatas>@@ -2823,8 +2831,7 @@    <general>     <comments>-      <comment name="singleLine" start="%" />-      <comment name="singleLine" start="#" />+      <comment name="singleLine" start="#" position="afterwhitespace" />     </comments>     <keywords weakDeliminator="." casesensitive="1"/>   </general>
syntax/opencl.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language name="OpenCL" section="Sources"-          version="4" kateversion="3.4"+          version="6" kateversion="5.0"           indenter="cstyle"           extensions="*.cl"           mimetype="text/x-clsrc"@@ -125,10 +125,8 @@     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">         <DetectSpaces />-	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />+        <RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />         <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />         <keyword attribute="Keyword" context="#stay" String="keywords"/>         <keyword attribute="Data Type" context="#stay" String="types"/>         <DetectIdentifier />@@ -140,12 +138,23 @@         <Int attribute="Decimal" context="Int Suffixes"/>         <HlCChar attribute="Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>       </context> +      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />+      </context>++      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/"/>+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment"/>+      </context>+       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">           <AnyChar String="fF" attribute="Float" context="#pop"/>       </context>@@ -172,12 +181,16 @@        <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">         <LineContinue attribute="Comment" context="#stay"/>+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Error" lineEndContext="#pop" name="AfterHash">@@ -193,27 +206,19 @@         <LineContinue attribute="Preprocessor" context="#stay"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/" />+        <IncludeRules context="FindComments" />       </context>        <context attribute="Preprocessor" lineEndContext="#pop" name="Define">         <LineContinue attribute="Preprocessor" context="#stay"/>       </context> -      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />-      </context>-       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >         <DetectSpaces />         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />@@ -224,9 +229,7 @@         <IncludeRules context="##Alerts" />         <DetectIdentifier />         <DetectChar attribute="String" context="String" char="&quot;"/>-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>+        <IncludeRules context="FindComments" />         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />         <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />       </context>@@ -253,8 +256,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" additionalDeliminator="'&quot;" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/pascal.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd"> <language name="Pascal"           section="Sources" -          version="2"+          version="3"           kateversion="3.3"           extensions="*.p;*.pas;*.pp"           mimetype="text/x-pascal" @@ -139,12 +139,6 @@       <item>File</item>       <item>Text</item>     </list>-    <list name="attention">-      <item>FIXME</item>-      <item>TODO</item>-      <item>NOTE</item>-      <item>###</item>-    </list>     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">         <RegExpr attribute="Keyword" context="#stay" String="\b(begin|case|record)(?=(\{[^}]*(\}|$)|\(\*.*(\*\)|$))*([\s]|$|//))" insensitive="true" beginRegion="Region1"/>@@ -185,15 +179,21 @@         <DetectChar attribute="Directive" context="#pop" char="}"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Comment1">-        <keyword attribute="Alert" context="#stay" String="attention" />+        <DetectSpaces />         <DetectChar attribute="Comment" context="#pop" char="}"              endRegion="Region2"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Comment2">-        <keyword attribute="Alert" context="#stay" String="attention" />+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")"   endRegion="Region3"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment3">-        <keyword attribute="Alert" context="#stay" String="attention" />+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>     </contexts>     <itemDatas>@@ -206,14 +206,14 @@       <itemData name="String"      defStyleNum="dsString" />       <itemData name="Directive"   defStyleNum="dsOthers" />       <itemData name="Comment"     defStyleNum="dsComment" />-      <itemData name="Alert"        defStyleNum="dsAlert" />     </itemDatas>   </highlighting>   <general>     <keywords casesensitive="0" />     <comments>-      <comment name="singleLine" start="//" />-      <comment name="multiLine" start="{" end="}" />+      <comment name="singleLine" start="//" position="afterwhitespace" />+      <comment name="multiLine" start="{" end="}" region="Region2" />     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/perl.xml view
@@ -39,7 +39,7 @@     Enhance tr/// and y/// support. -->-<language name="Perl" version="10" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">+<language name="Perl" version="13" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">   <highlighting>     <list name="keywords">       <item>if</item>@@ -465,7 +465,7 @@         <IncludeRules context="ipstring_internal" />       </context>       <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="String (interpolated)" context="#stay" String="\\%1" dynamic="true" />+        <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />         <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true"  endRegion="String"/>         <IncludeRules context="ipstring_internal" />       </context>@@ -508,7 +508,7 @@       <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true">         <DetectIdentifier />         <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />-        <RegExpr attribute="String Special Character" context="#stay" String="\\%1" dynamic="true"/>+        <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>         <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" />       </context> @@ -534,7 +534,7 @@         <DetectChar attribute="Pattern" context="subst_curlybrace_pattern_recursive" char="{" />       </context>       <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >-        <RegExpr attribute="Comment" context="#stay" String="#.*$" />+        <DetectChar attribute="Comment" context="comment" char="#" />         <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />       </context>       <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">@@ -552,8 +552,12 @@         <IncludeRules context="subst_curlybrace_pattern" />       </context> +      <context name="subst_maybe_comment" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!comment" char="#" />+      </context>+       <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />         <DetectChar attribute="Operator" context="subst_paren_replace" char=")" endRegion="Pattern" />         <!-- Round brackets of RegExp pattern inside -->         <DetectChar attribute="Pattern Internal Operator" context="subst_paren_pattern_internal_recursive" char="(" />@@ -570,7 +574,7 @@       </context>        <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />         <IncludeRules context="regex_pattern_internal_ip" />         <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />       </context>@@ -592,7 +596,7 @@       </context>        <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />         <IncludeRules context="regex_pattern_internal" />         <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />       </context>@@ -625,7 +629,7 @@         <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />         <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" />         <IncludeRules context="regex_pattern_internal_ip" />-        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\\%1)" dynamic="true" />+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" />       </context>       <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay">         <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" />@@ -658,7 +662,7 @@        <!-- rules internal stuff wrt regex patterns -->       <context name="regex_pattern_internal_rules_1" attribute="Pattern" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" />+        <DetectChar attribute="Comment" context="comment" char="#" firstNonSpace="true" />         <RegExpr attribute="Special Variable" context="#stay" String="\\c[^\s\\]" />         <RegExpr attribute="Special Variable" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" />         <RegExpr attribute="Special Variable" context="#stay" String="\\k(\{\w+\}|&lt;\w+&gt;|'\w+')" />@@ -674,7 +678,7 @@       <context name="regex_pattern_internal_rules_2" attribute="Pattern" lineEndContext="#stay">         <Detect2Chars attribute="Pattern Internal Operator" context="pat_ext" char="(" char1="?" />         <DetectChar attribute="Pattern Internal Operator" context="pat_char_class" char="[" />-        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="[()?^*+|]" />+        <AnyChar attribute="Pattern Internal Operator" context="#stay" String="()?^*+|" />         <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />         <DetectChar attribute="Pattern Internal Operator" context="#stay" char="$" />         <RegExpr attribute="Comment" context="#stay" String="\s{3,}#.*$" />@@ -694,8 +698,8 @@         <IncludeRules context="regex_pattern_internal_rules_2" />       </context>       <context name="pat_ext" attribute="Pattern Internal Operator" lineEndContext="#stay">+        <AnyChar attribute="Pattern Internal Operator" context="#pop" String=":=!&gt;&lt;" />         <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" />-        <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!&gt;&lt;]+" />         <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" />       </context>       <context name="pat_char_class" attribute="Pattern Character Class" lineEndContext="#stay">@@ -838,30 +842,33 @@         <DetectSpaces />         <DetectIdentifier />         <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>-        <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/>+        <StringDetect attribute="Pod" context="Pod" String="=cut" column="0" endRegion="POD"/>       </context>        <context name="comment" attribute="Comment" lineEndContext="#pop">         <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />         <DetectIdentifier />       </context> +      <context name="Pod" attribute="Pod" lineEndContext="#pop#pop"/>+     </contexts>     <itemDatas>       <itemData name="Normal Text"               defStyleNum="dsNormal" />       <itemData name="Keyword"                   defStyleNum="dsKeyword" />       <itemData name="Pragma"                    defStyleNum="dsKeyword" />       <itemData name="Function"                  defStyleNum="dsFunction" />-      <itemData name="Operator"                  defStyleNum="dsKeyword" color="#008000"/>+      <itemData name="Operator"                  defStyleNum="dsOthers" bold="1" /> <!-- #008000 -->       <itemData name="Data Type"                 defStyleNum="dsDataType" />-      <itemData name="Special Variable"          defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" />+      <itemData name="Special Variable"          defStyleNum="dsWarning" bold="0" italic="0" /> <!-- #C00000 -->       <itemData name="Decimal"                   defStyleNum="dsDecVal" />       <itemData name="Octal"                     defStyleNum="dsBaseN" />       <itemData name="Hex"                       defStyleNum="dsBaseN" />       <itemData name="Bin"                       defStyleNum="dsBaseN" />       <itemData name="Float"                     defStyleNum="dsFloat" />-      <itemData name="String"                    defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />+      <itemData name="String"                    defStyleNum="dsSpecialString" /> <!-- #FF6C6C -->       <itemData name="String (interpolated)"     defStyleNum="dsString" />       <itemData name="String Special Character"  defStyleNum="dsChar" />       <itemData name="Pattern"                   defStyleNum="dsOthers" />
syntax/php.xml view
@@ -73,7 +73,7 @@   <!ENTITY types "int|integer|bool|boolean|float|double|real|string|array|object"> ]> -<language name="PHP/PHP" indenter="cstyle" version="10" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">+<language name="PHP/PHP" indenter="cstyle" version="12" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">   <highlighting>     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->     <list name="control structures">@@ -10863,9 +10863,8 @@         <!--/ Alternate PHP Block Syntax -->          <DetectChar attribute="Comment" context="onelinecomment" char="#" />-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="onelinecomment" char="/" char1="/" />-        <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="Comment" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />         <keyword attribute="Error" context="#stay" String="deprecated"/>         <keyword attribute="Control Structures" context="#stay" String="control structures" />         <keyword attribute="Keyword" context="#stay" String="keywords" />@@ -10911,6 +10910,12 @@         <AnyChar attribute="Other" context="#stay" String=";(),[]" />       </context> +      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />+      </context>+       <context name="ternary" attribute="PHP Text" lineEndContext="#stay">         <!-- the paamayim nekudotayim (::) must not start a subcontext that is never terminated. -->         <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />@@ -10923,10 +10928,12 @@       </context>        <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />         <StringDetect attribute="Keyword" context="#pop" lookAhead="true" String="?&gt;" />         <IncludeRules context="##Alerts" />       </context>       <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />         <IncludeRules context="##Alerts" />       </context>@@ -11046,8 +11053,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="0" weakDeliminator="" additionalDeliminator="@" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/pike.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- FIXME: Find a way to prevent ranges (e.g. [1..] or [0..99]) from matching as floats. -pp -->-<language name="Pike" version="2" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">+<language name="Pike" version="3" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">   <highlighting>     <list name="keywords">       <item>break</item>@@ -66,24 +66,28 @@ 	<LineContinue attribute="String" context="#stay"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="Line Comment">-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/>+	<DetectSpaces />+	<IncludeRules context="##Alerts"/>+	<IncludeRules context="##Modelines"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Block Comment">+	<DetectSpaces /> 	<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/>+	<IncludeRules context="##Alerts"/>+	<IncludeRules context="##Modelines"/>       </context>       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor"> 	<RangeDetect attribute="Preprocessor Lib" context="#stay" char="&quot;" char1="&quot;"/> 	<RangeDetect attribute="Preprocessor Lib" context="#stay" char="&lt;" char1="&gt;"/> 	<Detect2Chars attribute="Comment" context="Line Comment" char="/" char1="/"/>-	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*"/>+	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/> 	<LineContinue attribute="Preprocessor" context="#stay"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Outscoped">-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/> 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/> 	<RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true"/> 	<RegExpr attribute="Preprocessor" context="#pop" String="#\s*(endif|elif|else)" endRegion="Outscoped" firstNonSpace="true"/>+	<IncludeRules context="##Alerts" />       </context>                <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern"> 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>@@ -105,16 +109,14 @@       <itemData name="String"		defStyleNum="dsString"/>       <itemData name="String Char"	defStyleNum="dsChar"/>       <itemData name="Comment"		defStyleNum="dsComment"/>-      <itemData name="Note"		defStyleNum="dsAlert"/>       <itemData name="Preprocessor"	defStyleNum="dsOthers"/>       <itemData name="Preprocessor Lib" defStyleNum="dsString"/>     </itemDatas>   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="#!"/>       <comment name="singleLine" start="//"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="1"/>   </general>
syntax/postscript.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="PostScript" version="2" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">+<language name="PostScript" version="3" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript"> <highlighting> 	<list name="keywords"> 		<item>abs</item>@@ -405,10 +405,14 @@ 			<DetectChar attribute="Comment" context="Comment" char="%"/> 			<Float attribute="Float" context="#stay"/> 			<Int attribute="Decimal" context="#stay"/>-		        <DetectChar attribute="String" context="String" char="("/>+			<DetectChar attribute="String" context="String" char="("/> 			<RegExpr attribute="Data Type" context="#stay" String="\/{1,2}[^\s\(\)\{\}\[\]%/]*"/> 		</context>-		<context attribute="Comment" lineEndContext="#pop" name="Comment"/>+		<context attribute="Comment" lineEndContext="#pop" name="Comment">+			<DetectSpaces />+			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" />+		</context> 		<context attribute="Header" lineEndContext="#pop" name="Header"/> 		<context attribute="String" lineEndContext="#stay" name="String"> 			<DetectChar attribute="String" context="#pop" char=")" />@@ -432,3 +436,4 @@ 	<keywords casesensitive="0" /> </general> </language>+<!-- kate: replace-tabs off; -->
syntax/povray.xml view
@@ -5,7 +5,7 @@ <!-- features full POV-Ray 3.6 syntax with special highlighting --> <!-- of variable and macro declarations                         --> <!-- v1.1: added MegaPOV 1.2.1 keywords (Febuary 2006)          -->-<language name="POV-Ray" version="5" kateversion="2.4" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2">+<language name="POV-Ray" version="7" kateversion="5.0" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2"> 	<highlighting> 		<list name="keywords"> 			<item>aa_threshold</item>@@ -923,45 +923,50 @@ 			</context>  			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+				<DetectSpaces /> 				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context>  			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">-				<IncludeRules context="##Alerts" />+				<DetectSpaces /> 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context> 		</contexts>  		<itemDatas>-			<itemData name="Normal Text"     defStyleNum="dsNormal"   color="#000000" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Keyword"         defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Unofficial"      defStyleNum="dsKeyword"  color="#0080d0" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Objects"         defStyleNum="dsKeyword"  color="#800000" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Texturing"       defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Transforms"      defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Declaration"     defStyleNum="dsKeyword"  color="#000080" selColor="#000080" bold="1" italic="0"/>-			<itemData name="Macro"           defStyleNum="dsKeyword"  color="#000080" selColor="#000080" bold="1" italic="0"/>-			<itemData name="Declare Keyword" defStyleNum="dsKeyword"  color="#990099" selColor="#990099" bold="1" italic="0"/>-			<itemData name="Declare Macro"   defStyleNum="dsKeyword"  color="#CC0000" selColor="#990099" bold="1" italic="0"/>-			<itemData name="Functions"       defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Directives"      defStyleNum="dsOthers"   color="#3300ff" selColor="#3300ff" bold="1" italic="0"/>-			<itemData name="Filetype"        defStyleNum="dsDataType" color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Constant"        defStyleNum="dsFloat"    color="#0000ff" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Float"           defStyleNum="dsFloat"    color="#0000ff" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="Char"            defStyleNum="dsChar"     color="#000080" selColor="#ffffff" bold="0" italic="0"/>-			<itemData name="String"          defStyleNum="dsString"   color="#ff0000" selColor="#ff0000" bold="0" italic="0"/>-			<itemData name="String Char"     defStyleNum="dsChar"     color="#ff00ff" selColor="#ff00ff" bold="0" italic="0"/>-			<itemData name="Comment"         defStyleNum="dsComment"  color="#008000" selColor="#008000" bold="0" italic="0"/>-			<itemData name="Symbol"          defStyleNum="dsNormal"   color="#660099" selColor="#660099" bold="0" italic="0"/>-			<itemData name="Region Marker"   defStyleNum="dsRegionMarker"/>+			<itemData name="Normal Text"     defStyleNum="dsNormal"       spellChecking="false" />+			<itemData name="Keyword"         defStyleNum="dsVariable"     bold="0" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Unofficial"      defStyleNum="dsExtension"    bold="0" spellChecking="false" /> <!-- #0080d0 -->+			<itemData name="Objects"         defStyleNum="dsWarning"      bold="0" spellChecking="false" /> <!-- #800000 -->+			<itemData name="Texturing"       defStyleNum="dsAttribute"    bold="0" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Transforms"      defStyleNum="dsOthers"       bold="0" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Declaration"     defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Macro"           defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Declare Keyword" defStyleNum="dsFunction"     bold="1" spellChecking="false" /> <!-- #990099 -->+			<itemData name="Declare Macro"   defStyleNum="dsImport"       bold="1" spellChecking="false" /> <!-- #CC0000 -->+			<itemData name="Functions"       defStyleNum="dsFunction"     bold="0" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Directives"      defStyleNum="dsOthers"       bold="1" spellChecking="false" /> <!-- #3300ff -->+			<itemData name="Filetype"        defStyleNum="dsDataType"     bold="0" spellChecking="false" /> <!-- #000080 -->+			<itemData name="Constant"        defStyleNum="dsConstant"     spellChecking="false" /> <!-- #0000ff -->+			<itemData name="Float"           defStyleNum="dsFloat"        spellChecking="false" /> <!-- #0000ff -->+			<itemData name="Char"            defStyleNum="dsChar"         spellChecking="false" /> <!-- #000080 -->+			<itemData name="String"          defStyleNum="dsString"                             /> <!-- #ff0000 -->+			<itemData name="String Char"     defStyleNum="dsSpecialChar"  spellChecking="false" /> <!-- #ff00ff -->+			<itemData name="Comment"         defStyleNum="dsComment"                            /> <!-- #008000 -->+			<itemData name="Symbol"          defStyleNum="dsOperator"     spellChecking="false" /> <!-- #660099 -->+			<itemData name="Region Marker"   defStyleNum="dsRegionMarker" /> 		</itemDatas> 	</highlighting>  	<general> 		<comments>-			<comment name="singleLine" start="//" />-			<comment name="multiLine" start="/*" end="*/" />+			<comment name="singleLine" start="//" position="afterwhitespace" />+			<comment name="multiLine" start="/*" end="*/" region="Comment" /> 		</comments> 		<keywords casesensitive="1" /> 	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/powershell.xml view
@@ -1,7 +1,7 @@ <!DOCTYPE language SYSTEM "language.dtd"> <language   name="PowerShell"-  version="5"+  version="7"   kateversion="5.0"   extensions="*.ps1;*.ps1m;*.ps1d"   section="Scripts"@@ -880,7 +880,6 @@         <IncludeRules context="Cmdlet" />         <DetectChar attribute="String" context="String" char="&quot;"/>         <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1="&quot;" beginRegion="StringRegion"/>-        <IncludeRules context="##Doxygen" />         <DetectChar attribute="Comment" context="Commentar 1" char="#"/>         <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" char1="#" beginRegion="CommentRegion"/>         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>@@ -889,8 +888,8 @@         <RegExpr attribute="Keyword" context="#stay" String="\b\$script(?=\s+(:))"/>         <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />         <keyword attribute="Special Variable" context="#stay" String="special-variables"/>-        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>+        <DetectChar attribute="Symbol" context="Member" char="." />+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>       </context>       <context attribute="String Char" lineEndContext="#stay" name="StringEscape">         <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]" context="#stay"/>@@ -907,9 +906,16 @@       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">         <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="#" char1="&gt;" endRegion="CommentRegion"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context attribute="Cmdlets" lineEndContext="#stay" name="Cmdlet">         <keyword attribute="Function" context="#stay" String="cmdlets"/>@@ -938,3 +944,4 @@     <keywords casesensitive="0" weakDeliminator=":-"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/prolog.xml view
@@ -105,7 +105,7 @@     <!ENTITY bs         "\"> ]> <language name="Prolog" section="Sources"-	  version="10" kateversion="3.4"+	  version="11" kateversion="3.4" 	  mimetype="text/x-prolog" 	  extensions="*.prolog;*.dcg;*.pro" 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"@@ -778,6 +778,7 @@ 			    attribute="% italic predicates: w/ side effects" /> 		<DetectSpaces /> 		<IncludeRules context="##Alerts" />+		<IncludeRules context="##Modelines" /> 		<DetectIdentifier /> 	    </context> @@ -786,6 +787,7 @@ 	    <context name="1-comment" lineEndContext="#pop" attribute="% italic predicates: w/ side effects" > 		<DetectSpaces /> 		<IncludeRules context="##Alerts" />+		<IncludeRules context="##Modelines" /> 		<DetectIdentifier /> 	    </context> 	    <context name="region_marker" lineEndContext="#pop" attribute="%BEGIN folding region" noIndentationBasedFolding="true" >@@ -1029,3 +1031,4 @@     your home directory. You have to open a new instance of kwrite/kate to use     the new syntax file. -->+<!-- kate: replace-tabs off; -->
syntax/protobuf.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Protobuf" version="7" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">+<language name="Protobuf" version="8" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">   <highlighting>     <list name="keywords">       <item>message</item>@@ -82,12 +82,16 @@        <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">         <LineContinue attribute="Comment" context="#stay"/>+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>      </contexts>@@ -113,8 +117,9 @@   <general>     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/pure.xml view
@@ -32,69 +32,69 @@  Boston, MA 02111-1307, USA.  -->-<language name="Pure" version="1.2" kateversion="2.4" section="Sources" extensions="*.pure">+<language name="Pure" version="3" kateversion="2.4" section="Sources" extensions="*.pure">   <highlighting>     <list name="blockstarters">-      <item> case </item>-      <item> when </item>-      <item> with </item>+      <item>case</item>+      <item>when</item>+      <item>with</item>     </list>     <list name="blockenders">-      <item> end </item>+      <item>end</item>     </list>     <list name="keywords">-      <item> const </item>-      <item> def </item>-      <item> else </item>-      <item> extern </item>-      <item> if </item>-      <item> infix </item>-      <item> infixl </item>-      <item> infixr </item>-      <item> interface </item>-      <item> let </item>-      <item> namespace </item>-      <item> nonfix </item>-      <item> of </item>-      <item> otherwise </item>-      <item> outfix </item>-      <item> postfix </item>-      <item> prefix </item>-      <item> private </item>-      <item> public </item>-      <item> then </item>-      <item> type </item>-      <item> using </item>+      <item>const</item>+      <item>def</item>+      <item>else</item>+      <item>extern</item>+      <item>if</item>+      <item>infix</item>+      <item>infixl</item>+      <item>infixr</item>+      <item>interface</item>+      <item>let</item>+      <item>namespace</item>+      <item>nonfix</item>+      <item>of</item>+      <item>otherwise</item>+      <item>outfix</item>+      <item>postfix</item>+      <item>prefix</item>+      <item>private</item>+      <item>public</item>+      <item>then</item>+      <item>type</item>+      <item>using</item>     </list>     <list name="special">-      <item> catch </item>-      <item> throw </item>-      <item> __break__ </item>-      <item> __trace__ </item>+      <item>catch</item>+      <item>throw</item>+      <item>__break__</item>+      <item>__trace__</item>     </list>     <list name="types">-      <item> bigint </item>-      <item> bool </item>-      <item> char </item>-      <item> float  </item>-      <item> double  </item>-      <item> expr </item>-      <item> short </item>-      <item> int </item>-      <item> long </item>-      <item> string </item>-      <item> pointer </item>-      <item> void </item>-      <item> int8 </item>-      <item> int16 </item>-      <item> int32 </item>-      <item> int64 </item>-      <item> matrix </item>-      <item> dmatrix </item>-      <item> cmatrix </item>-      <item> imatrix </item>-      <item> smatrix </item>-      <item> nmatrix </item>+      <item>bigint</item>+      <item>bool</item>+      <item>char</item>+      <item>float</item>+      <item>double</item>+      <item>expr</item>+      <item>short</item>+      <item>int</item>+      <item>long</item>+      <item>string</item>+      <item>pointer</item>+      <item>void</item>+      <item>int8</item>+      <item>int16</item>+      <item>int32</item>+      <item>int64</item>+      <item>matrix</item>+      <item>dmatrix</item>+      <item>cmatrix</item>+      <item>imatrix</item>+      <item>smatrix</item>+      <item>nmatrix</item>     </list>     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">@@ -108,7 +108,7 @@         <RegExpr attribute="Number" context="#stay" String="0x[A-Za-z0-9]+"/>         <Float attribute="Number" context="#stay"/>         <Int attribute="Number" context="#stay"/>-        <HlCChar attribute="Char" context="#stay"/>+        <HlCChar attribute="String Char" context="#stay"/>         <DetectChar attribute="String" context="String" char="&quot;"/>         <Detect2Chars attribute="Comment" context="Comment1" char="/" char1="*" beginRegion="Comment" />         <Detect2Chars attribute="Comment" context="Comment2" char="/" char1="/"/>@@ -118,12 +118,17 @@         <HlCStringChar attribute="String Char" context="#stay"/>         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>-      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">-      </context>       <context attribute="Comment" lineEndContext="#stay" name="Comment1">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>-      <context attribute="Comment" lineEndContext="#pop" name="Comment2"/>+      <context attribute="Comment" lineEndContext="#pop" name="Comment2">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal" />@@ -140,7 +145,8 @@     <keywords casesensitive="1" />     <comments>       <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/purebasic.xml view
@@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="PureBasic" version="7" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >+<language name="PureBasic" version="8" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >   <highlighting>     <list name="keywords">       <item>Break</item>@@ -1738,6 +1738,7 @@         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment1">+        <DetectSpaces />         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />       </context>@@ -1760,7 +1761,7 @@   <general>     <keywords casesensitive="0" />     <comments>-      <comment name="singleLine" start=";" />+      <comment name="singleLine" start=";" position="afterwhitespace" />     </comments>   </general> </language>
syntax/python.xml view
@@ -19,7 +19,7 @@ <!-- v2.07 add support for %prog and co, see bug 142832 --> <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords --> <!-- v2.29 recognize escape sequenzes correctly -->-<language name="Python" version="10" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">+<language name="Python" version="12" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license=""> 	<highlighting> 		<list name="import"> 			<item>import</item>@@ -447,6 +447,7 @@ 			<!-- Comments -->  			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">+				<DetectSpaces /> 				<IncludeRules context="##Alerts" /> 				<IncludeRules context="##Modelines" /> 			</context>
syntax/qml.xml view
@@ -4,7 +4,7 @@   <!ENTITY identifier "[a-zA-Z_$][\w$]*"> ]> <!-- Author: Milian Wolff <mail@milianw.de> -->-<language name="QML" version="7" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"+<language name="QML" version="9" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"           mimetype="text/x-qml;application/x-qml" indenter="cstyle"           author="Milian Wolff (mail@milianw.de)" license="MIT">   <highlighting>@@ -130,7 +130,6 @@         <keyword attribute="Property Type" context="#stay" String="types" />         <DetectSpaces />         <DetectIdentifier />-        <DetectSpaces />         <DetectChar char=":" context="#pop" />       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="Signal">@@ -141,9 +140,7 @@       <context attribute="Normal Text" name="SignalParameter" lineEndContext="#pop">         <DetectSpaces />         <keyword attribute="Property Type" context="#stay" String="types" />-        <DetectSpaces />         <DetectIdentifier />-        <DetectSpaces />         <DetectChar char=")" context="#pop"/>       </context>       <!-- QML supports multi-line strings, which are not supported by Javascript -->@@ -168,10 +165,10 @@     <itemDatas>       <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />       <itemData name="Import"  defStyleNum="dsKeyword"  spellChecking="false" />-      <itemData name="ImportValue"  defStyleNum="dsString"  spellChecking="false" />+      <itemData name="ImportValue"  defStyleNum="dsImport"  spellChecking="false" />       <itemData name="Keywords"  defStyleNum="dsKeyword"  spellChecking="false" />-      <itemData name="Elements" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0" spellChecking="false"/>-      <itemData name="Signal" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" spellChecking="false"/>+      <itemData name="Elements" defStyleNum="dsOthers" spellChecking="false"/> <!-- #008000 -->+      <itemData name="Signal" defStyleNum="dsExtension" bold="1" spellChecking="false"/> <!-- #0095ff -->       <itemData name="Property Type" defStyleNum="dsDataType" spellChecking="false" />       <itemData name="String"       defStyleNum="dsString" />       <itemData name="Objects"      defStyleNum="dsExtension" bold="0" spellChecking="false" />@@ -180,7 +177,7 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="//" />+      <comment name="singleLine" start="//" position="afterwhitespace" />       <comment name="multiLine" start="/*" end="*/" />     </comments>     <keywords casesensitive="1" />
syntax/r.xml view
@@ -8,7 +8,7 @@ 	R      : http://www.r-project.org/ 	RKWard : http://rkward.kde.org/ 	-->-<language version="8" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">+<language version="9" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2"> <highlighting>  	<list name="controls">@@ -56,7 +56,7 @@ 			<LineContinue attribute="Operator" context="#stay"/> 			<DetectChar attribute="Symbol" context="#pop" char=")"/> -			<RegExpr attribute="Identifier" context="#stay" String="[a-zA-Z_\.][0-9a-zA-Z_\.]*[\s]*[:]?=(?=([^=]|$))"/>+			<RegExpr attribute="Identifier" context="#stay" String="[a-zA-Z_\.][0-9a-zA-Z_\.]*[\s]*[:]?=(?=[^=]|$)"/>  			<IncludeRules context="CommonRules"/> 			<DetectChar attribute="Error" context="#stay" char="}" />@@ -79,22 +79,32 @@  		<context attribute="Normal Text" lineEndContext="#stay" name="operator_rhs" fallthrough="true" fallthroughContext="#pop"> 			<!-- While there is nothing of interest, stay in the context -->-			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>-			<DetectChar attribute="Comment" context="Comment" char="#"/>-			<DetectChar attribute="String" context="#stay" char=" "/>+			<DetectSpaces />+			<IncludeRules context="FindComments"/> 			<!-- Operators other than +, -, and ! directly after another operator are an error. -->-			<RegExpr attribute="Error" context="#stay" String="(\*|/|&lt;|&gt;|\!=|=|\||&amp;|:|\^|@|\$|~)"/>+			<Detect2Chars attribute="Error" context="#stay" char="!" char1="="/>+			<AnyChar attribute="Error" context="#stay" String="*/&lt;&gt;=|&amp;:^@$~"/> 		</context> +		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">+			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>+			<DetectChar attribute="Comment" context="Comment" char="#"/>+		</context> 		<context attribute="Headline" lineEndContext="#pop" name="Headline">+			<DetectSpaces /> 			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" /> 		</context> 		<context attribute="Comment" lineEndContext="#pop" name="Comment">+			<DetectSpaces /> 			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" /> 		</context>  		<!-- This context is not really used, but contains the common rules --> 		<context name="CommonRules" lineEndContext="#stay" attribute="Normal Text" >+			<DetectSpaces />+			<IncludeRules context="FindComments"/> 			<DetectChar attribute="String" context="string" char="&quot;"/> 			<DetectChar attribute="String" context="string2" char="'"/> 			<DetectChar attribute="String" context="backquotedsymbol" char="`"/>@@ -105,48 +115,56 @@ 			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/> 			<RegExpr attribute="Keyword" context="#stay" String="\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/> 			<DetectChar attribute="Symbol" context="parenthesis" char="("/>-			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>-			<DetectChar attribute="Comment" context="Comment" char="#"/>  			<!-- For (assignment) operators, enter a new context operator_rhs to check what follows (generally, that should not be another op) -->-			<RegExpr attribute="Assign" context="operator_rhs" String="[&lt;]{1,2}\-"/>-			<RegExpr attribute="Assign" context="operator_rhs" String="\-[&gt;]{1,2}"/>+			<StringDetect attribute="Assign" context="operator_rhs" String="&lt;&lt;-"/>+			<Detect2Chars attribute="Assign" context="operator_rhs" char="&lt;" char1="-"/>+			<StringDetect attribute="Assign" context="operator_rhs" String="-&gt;&gt;"/>+			<Detect2Chars attribute="Assign" context="operator_rhs" char="-" char1="&gt;"/> 			<RegExpr attribute="Assign" context="operator_rhs" String="=(?!=)"/>-			<RegExpr attribute="Operator" context="operator_rhs" String="(\+|\-|\*{1,2}|/|&lt;=?|&gt;=?|={1,2}|\!=?|\|{1,2}|&amp;{1,2}|:{1,3}|\^|@|\$|~)"/>-			<RegExpr attribute="Operator" context="operator_rhs" String="%[^%]*%"/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="*" char1="*"/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&lt;" char1="="/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&gt;" char1="="/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="=" char1="="/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="!" char1="="/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="|" char1="|"/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&amp;" char1="&amp;"/>+			<StringDetect attribute="Operator" context="operator_rhs" String=":::"/>+			<Detect2Chars attribute="Operator" context="operator_rhs" char=":" char1=":"/>+			<AnyChar attribute="Operator" context="operator_rhs" String="+-*/&lt;&gt;=!|&amp;:^@$~"/>+			<RangeDetect attribute="Operator" context="operator_rhs" char="%" char1="%"/>  			<DetectChar attribute="Symbol" context="ctx0" char="{" beginRegion="Brace1" />  			<!-- This is needed only to assist variable based indentation -->-			<DetectChar attribute="Symbol" context="#stay" char="[" />-			<DetectChar attribute="Symbol" context="#stay" char="]" />+			<AnyChar attribute="Symbol" context="#stay" String="[]" /> 		</context> 	</contexts>  	<itemDatas>-		<!-- KDE default colors: http://accessibility.kde.org/oxygen.php?color=white -->-		<itemData name="Normal Text" defStyleNum="dsNormal"/>-		<itemData name="Symbol" defStyleNum="dsNormal"/>-		<itemData name="Keyword" defStyleNum="dsKeyword"/>-		<itemData name="Identifier" defStyleNum="dsDataType"/>+		<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+		<itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/>+		<itemData name="Keyword" defStyleNum="dsFunction" spellChecking="false"/>+		<itemData name="Identifier" defStyleNum="dsAttribute" spellChecking="false"/> 		<itemData name="String" defStyleNum="dsString"/>-		<itemData name="Headline" defStyleNum="dsComment" color="#b00000" selColor="#b00000" bold="1" italic="0"/> <!-- KDE default color: text 5 -->+		<itemData name="Headline" defStyleNum="dsDocumentation" bold="1"/> 		<itemData name="Comment" defStyleNum="dsComment"/>-		<itemData name="Assign" defStyleNum="dsNormal" color="#336366" selColor="#ccc099" bold="1" italic="0"/> <!-- KDE default color: text 7 -->-		<itemData name="Control Structure" defStyleNum="dsControlFlow"/>-		<itemData name="Reserved Words" defStyleNum="dsOthers"/>-		<itemData name="Error" defStyleNum="dsError"/>-		<itemData name="Operator" defStyleNum="dsOperator"/>-		<itemData name="String Char"  defStyleNum="dsChar"/>-		<itemData name="Float" defStyleNum="dsFloat"/>-		<itemData name="Int" defStyleNum="dsDecVal"/>+		<itemData name="Assign" defStyleNum="dsOthers" bold="1" italic="0" spellChecking="false"/>+		<itemData name="Control Structure" defStyleNum="dsControlFlow" spellChecking="false"/>+		<itemData name="Reserved Words" defStyleNum="dsConstant" spellChecking="false"/>+		<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+		<itemData name="Operator" defStyleNum="dsSpecialChar" spellChecking="false"/>+		<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>+		<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+		<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/> 	</itemDatas> </highlighting>  <general> 	<comments>-		<comment name="singleLine" start="#" end=""/>+		<comment name="singleLine" start="#"/> 	</comments> 	<keywords casesensitive="true" weakDeliminator="." additionalDeliminator="$"/> </general> </language>+<!-- kate: replace-tabs off; -->
syntax/relaxng.xml view
@@ -16,7 +16,7 @@    - Namespace rules --> -<language version="3"+<language version="4"           kateversion="2.4"           name="RELAX NG"           section="Markup"@@ -94,6 +94,7 @@         <StringDetect attribute="Comment" context="#pop"  String="--&gt;" endRegion="comment"/>         <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+"/>         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>         <DetectIdentifier/>       </context>     </contexts>@@ -112,8 +113,9 @@   </highlighting>   <general>     <comments>-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />     </comments>     <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator="&quot;{}"/>   </general> </language>+<!-- kate: replace-tabs on; indent-width 2; -->
syntax/relaxngcompact.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="RelaxNG-Compact" version="1" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">+<language name="RelaxNG-Compact" version="2" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">   <highlighting>     <list name="Keywords">       <item>default</item>@@ -81,6 +81,9 @@ 	<RegExpr attribute="Definitions" context="Definitions" String="[\w\.-]+[\s]+=" lookAhead="true" />       </context>       <context attribute="Comments" lineEndContext="#pop" name="Comments" >+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="String" lineEndContext="#stay" name="String" >         <DetectChar attribute="String" context="#pop" char="&quot;" />@@ -104,5 +107,8 @@   </highlighting>   <general>     <keywords weakDeliminator="-:"/>+    <comments>+      <comment name="singleLine" start="#" />+    </comments>   </general> </language>
syntax/rest.xml view
@@ -14,7 +14,7 @@   Copyright 2010 Matt Williams (matt@milliams.com)   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)   -->-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="6" kateversion="5.0" casesensitive="1">+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="7" kateversion="5.0" casesensitive="1">    <highlighting> @@ -70,6 +70,7 @@         <RegExpr attribute="Code" String="^%1   " context="#stay" column="0" dynamic="true"/>         <RegExpr attribute="Normal" String="^(.|$)" lookAhead="true" column="0" context="#pop"/>         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <context name="CodeBlock" attribute="Code" lineEndContext="#stay">@@ -117,3 +118,4 @@   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/rhtml.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd" [ 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]> 	 <!--@@ -44,7 +44,7 @@ --> 	 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->-<language name="Ruby/Rails/RHTML" version="9" kateversion="5.0" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">+<language name="Ruby/Rails/RHTML" version="11" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+"> 	 	<highlighting> 	@@ -315,12 +315,6 @@ 			<item>word_wrap</item> 		</list> 		-		<list name="attention">-			<item>TODO</item>-			<item>FIXME</item>-			<item>NOTE</item>-		</list>-		 		<contexts> 			 		<!-- BEGIN HTML contexts -->@@ -332,22 +326,22 @@ 				<DetectSpaces/> 				<DetectIdentifier/> 				-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />-				<DetectChar attribute="Keyword" context="rubysourceline" char="%" />+				<IncludeRules context="find-rubysource" />+				<DetectChar attribute="Ruby Source" context="rubysourceline" char="%" /> 				 				<StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" /> 				<StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" /> 				<RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" /> 				<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />-				<RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />-				<RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />-				<RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />-				<RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />-				<RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />+				<WordDetect attribute="Element" context="CSS" String="&lt;style" insensitive="true" beginRegion="style" />+				<WordDetect attribute="Element" context="JS" String="&lt;script" insensitive="true" beginRegion="script" />+				<WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />+				<WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />+				<WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" /> 				<RegExpr attribute="Element" context="El Open" String="&lt;&name;" />-				<RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />-				<RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />-				<RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />+				<WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />+				<WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />+				<WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" /> 				<RegExpr attribute="Element" context="El Close" String="&lt;/&name;" /> 				<!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" /> 				<IncludeRules context="FindEntityRefs" />@@ -371,15 +365,16 @@ 			</context> 			 			<context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+				<RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> 			</context> 			 			 			<context name="Comment" attribute="Comment" lineEndContext="#stay"> 				<DetectSpaces/>+				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" /> 				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 				<DetectIdentifier/>-				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" /> 				<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" /> 			</context> 			@@ -414,21 +409,21 @@ 			</context> 			 			<context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Value" context="#pop" char="&quot;" /> 				<IncludeRules context="FindPEntityRefs" /> 			</context> 			 			<context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Value" context="#pop" char="&apos;" /> 				<IncludeRules context="FindPEntityRefs" /> 			</context> 			 			<context name="El Open" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" /> 				<DetectChar attribute="Element" context="#pop" char="&gt;" />@@ -437,28 +432,28 @@ 			</context> 			 			<context name="El Close" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Element" context="#pop" char="&gt;" /> 				<RegExpr attribute="Error" context="#stay" String="\S" /> 			</context> 			 			<context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" /> 				<RegExpr attribute="Error" context="#stay" String="\S" /> 			</context> 			 			<context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" /> 				<RegExpr attribute="Error" context="#stay" String="\S" /> 			</context> 			 			<context name="CSS" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" /> 				<DetectChar attribute="Element" context="CSS content" char="&gt;" />@@ -467,14 +462,14 @@ 			</context> 			 			<context name="CSS content" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				-				<RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />+				<WordDetect attribute="Element" context="El Close 2" String="&lt;/style" insensitive="true" endRegion="style" /> 				<IncludeRules context="##CSS" includeAttrib="true"/> 			</context> 			 			<context name="JS" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" /> 				<DetectChar attribute="Element" context="JS content" char="&gt;" />@@ -483,9 +478,9 @@ 			</context> 			 			<context name="JS content" attribute="Normal Text" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				-				<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />+				<WordDetect attribute="Element" context="El Close 2" String="&lt;/script" insensitive="true" endRegion="script" /> 				<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" /> 				<IncludeRules context="Normal##JavaScript" includeAttrib="true"/> 			</context>@@ -496,7 +491,7 @@ 			</context> 			 			<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Value" context="Value DQ" char="&quot;" /> 				<DetectChar attribute="Value" context="Value SQ" char="&apos;" />@@ -504,7 +499,7 @@ 			</context> 			 			<context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<IncludeRules context="FindEntityRefs" /> 				<RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />@@ -512,14 +507,14 @@ 			</context> 			 			<context name="Value DQ" attribute="Value" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Value" context="#pop#pop" char="&quot;" /> 				<IncludeRules context="FindEntityRefs" /> 			</context> 			 			<context name="Value SQ" attribute="Value" lineEndContext="#stay">-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />+				<IncludeRules context="find-rubysource" /> 				 				<DetectChar attribute="Value" context="#pop#pop" char="&apos;" /> 				<IncludeRules context="FindEntityRefs" />@@ -533,26 +528,36 @@ 				<IncludeRules context="rubysource" /> 			</context> 			+			<context name="find-rubysource" attribute="Normal Text" lineEndContext="#stay">+				<Detect2Chars attribute="Ruby Source" context="rubysource-markup" char="&lt;" char1="%" />+			</context>+			<context name="rubysource-markup" attribute="Ruby Source" lineEndContext="#pop!rubysource-block-content" fallthrough="true" fallthroughContext="#pop!rubysource-block-content">+				<AnyChar attribute="Ruby Source" context="#pop!rubysource-block-content" String="=-" /> <!-- <%= and <%- -->+			</context>+			<context name="rubysource-block-content" attribute="RUBY RAILS ERB Text" lineEndContext="#stay">+				<StringDetect attribute="Ruby Source" context="#pop" String="-%&gt;" />+				<Detect2Chars attribute="Ruby Source" context="#pop" char="%" char1="&gt;" />+				<IncludeRules context="rubysource" />+			</context>+ 			<context name="rubysource" attribute="RUBY RAILS ERB Text" lineEndContext="#stay"> 				<!-- ruby ignores newline after \ --> 				<LineContinue attribute="Ruby Normal Text" context="Line Continue"/>-				-				<RegExpr attribute="Keyword" context="#pop" String="-?%&gt;" />-				+ 				<!-- __END__ token on own line. --> 				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/> 				 				<!-- "shebang" line -->-				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>+				<StringDetect attribute="Keyword" String="#!/" context="ShebangLine" column="0"/> 				 				<!-- "def" - "end" blocks --> 				<!-- check for statement modifiers with regexes -->-				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>+				<RegExpr attribute="Keyword" String="(?:\=|\(|\[|\{)\s*(?:if|unless|while|until)\b" context="#stay" beginRegion="def block"/> 				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>-				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>+				<RegExpr attribute="Keyword" String="\;\s*(?:while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> 				<WordDetect attribute="Keyword" String="if" context="#stay" beginRegion="def block" firstNonSpace="true"/> 				<WordDetect attribute="Keyword" String="unless" context="#stay" beginRegion="def block" firstNonSpace="true"/>-				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>+				<RegExpr attribute="Keyword" String="\;\s*(?:if|unless)\b" context="#stay" beginRegion="def block"/> 				<WordDetect attribute="Keyword" String="class" context="#stay" beginRegion="def block"/> 				<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/> 				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>@@ -562,16 +567,16 @@ 				<WordDetect attribute="Keyword" String="def" context="#stay" beginRegion="def block"/> 				<WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/> 				<!-- elsif/else close the current block and start a new one -->-				<RegExpr attribute="Keyword" String="(\b|^\s*)(else|elsif|rescue|ensure)(\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/>+				<RegExpr attribute="Keyword" String="(?:\b|^\s*)(?:else|elsif|rescue|ensure)(?:\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/> 				 				<StringDetect attribute="Operator" String="..." context="#stay"/> 				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/> 				 				<!-- marks a message (being sent, not defined) -->-				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="#stay"/>+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(?:\?|\!|\b)" context="#stay"/> 				 				<!-- Check for "ASCII code operator". e.g.: ?a -->-				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="#stay"/>+				<RegExpr attribute="Dec" String="\s\?(?:\\M\-)?(?:\\C\-)?\\?\S" context="#stay"/> 				 				<keyword attribute="Keyword" String="keywords" context="#stay"/> 				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="#stay"/>@@ -584,18 +589,18 @@ 				<!-- (global) vars starting with $ 					Match them before $_. 					-->-				<RegExpr attribute="Global Variable" String="\$(\w+|\-[a-zA-Z_]\b)" context="#stay"/>+				<RegExpr attribute="Global Variable" String="\$(?:\w+|\-[a-zA-Z_]\b)" context="#stay"/> 				<!-- special-character globals --> 				<RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&amp;]" context="#stay"/> 				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="#stay"/> 				<!-- Generally a module or class name like "File", "MyModule_1", .. -->-				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/>+				<RegExpr attribute="Constant" String="\b[A-Z]+_*(?:[0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/> 				-				<RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="#stay"/>-				<RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="#stay"/>-				<RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="#stay"/>-				<RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="#stay"/>-				<RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="#stay"/>+				<RegExpr attribute="Hex" String="(?:\-|\b)0[xX][_0-9a-fA-F]+" context="#stay"/>+				<RegExpr attribute="Bin" String="(?:\-|\b)0[bB][_01]+" context="#stay"/>+				<RegExpr attribute="Octal" String="(?:\-|\b)0[1-7][_0-7]*" context="#stay"/>+				<RegExpr attribute="Float" String="(?:\-|\b)[0-9][0-9_]*\.[0-9][0-9_]*(?:[eE]\-?[1-9][0-9]*(?:\.[0-9]*)?)?" context="#stay"/>+				<RegExpr attribute="Dec" String="(?:\-|\b)[1-9][0-9_]*\b" context="#stay"/> 				<Int attribute="Dec" context="#stay"/> 				<HlCChar attribute="Char" context="#stay"/> 				@@ -650,9 +655,11 @@ 				<!-- this moves to the next context to separate out the exact nature of the GDL input --> 				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s&gt;])" beginRegion="GdlInput" /> 			</context>++			<context name="ShebangLine" attribute="Keyword" lineEndContext="#pop" /> 			 			<context name="Line Continue" attribute="Ruby Normal Text" lineEndContext="#pop">-				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>+				<RegExpr attribute="Keyword" String="(?:while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/> 				<WordDetect attribute="Keyword" String="if" context="#stay" firstNonSpace="true"/> 				<WordDetect attribute="Keyword" String="unless" context="#stay" firstNonSpace="true"/> 				<IncludeRules context="rubysource"/>@@ -711,10 +718,10 @@ 			<!-- This handles access of nested module classes and class methods --> 			<context name="Member Access" attribute="Member" lineEndContext="#pop"> 				<!-- marks a message (being sent, not defined) -->-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="#pop"/>-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>-				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="#pop"/>-				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>+				<RegExpr attribute="Message" String="\.?[_a-z]\w*[\?\!]?(?=[^\w\d\.\:])" context="#pop"/>+				<RegExpr attribute="Message" String="\.?[_a-z]\w*[\?\!]?" context="#stay"/>+				<RegExpr attribute="Constant" String="[A-Z]+_*[\da-z]\w*(?=[^\w\d\.\:])" context="#pop"/>+				<RegExpr attribute="Constant" String="[A-Z]+_*[0-9a-z]\w*" context="#stay"/> 				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="#pop"/> 				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/> 				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>@@ -727,13 +734,18 @@ 			</context> 			 			<context name="Comment Line" attribute="Ruby Comment" lineEndContext="#pop">+				<DetectSpaces />+				<StringDetect context="#pop" String="-%&gt;" lookAhead="true" />+				<Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" /> 				<RegExpr attribute="Ruby Comment" String="\w\:\:\s" context="RDoc Label"/>-				<keyword attribute="Alert" String="attention" context="#stay"/>-				<RegExpr attribute="Keyword" context="#pop#pop" String="-?%&gt;" />+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/> 			</context> 			 			<context name="General Comment" attribute="Ruby Comment" lineEndContext="#pop">-				<keyword attribute="Dec" String="attention" context="#stay"/>+				<DetectSpaces/>+				<IncludeRules context="##Alerts"/>+				<IncludeRules context="##Modelines"/> 			</context> 			 			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>@@ -885,7 +897,7 @@ 				--> 			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true"> 				<IncludeRules context="dq_string_rules" />-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" /> 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> 			</context> 			<!-- rules to be included in all dq_string contexts -->@@ -950,7 +962,7 @@ 				--> 			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true"> 				<IncludeRules context="token_array_rules" />-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/> 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> 			</context> 			@@ -1014,7 +1026,7 @@ 				--> 			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true"> 				<IncludeRules context="apostrophed_rules" />-				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>+				<StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/> 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> 			</context> 			@@ -1078,7 +1090,7 @@ 				--> 			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true"> 				<IncludeRules context="shell_command_rules" />-				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />+				<StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" /> 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> 			</context> 			@@ -1144,7 +1156,7 @@ 				--> 			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true"> 				<IncludeRules context="regexpr_rules" />-				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />+				<StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" /> 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" /> 			</context> 			@@ -1165,73 +1177,74 @@ 		<itemDatas> 		<!-- BEGIN Ruby itemData --> 			<itemData name="Ruby Normal Text" defStyleNum="dsNormal"/>-			<itemData name="RUBY RAILS ERB Text" defStyleNum="dsExtension"/>+			<itemData name="RUBY RAILS ERB Text" defStyleNum="dsExtension" bold="0" spellChecking="false"/>+			<itemData name="Ruby Source" defStyleNum="dsDataType" bold="1" spellChecking="false"/> 			-			<itemData name="Keyword" defStyleNum="dsKeyword"/>-			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>-			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>-			<itemData name="Definition" defStyleNum="dsKeyword"/>-			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>+			<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+			<itemData name="Attribute Definition" defStyleNum="dsOthers" spellChecking="false"/>+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1" spellChecking="false"/> <!-- #0000FF -->+			<itemData name="Definition" defStyleNum="dsKeyword" spellChecking="false"/>+			<itemData name="Pseudo variable" defStyleNum="dsDecVal" spellChecking="false"/> 			-			<itemData name="Dec" defStyleNum="dsDecVal"/>-			<itemData name="Float" defStyleNum="dsFloat"/>-			<itemData name="Char" defStyleNum="dsChar"/>-			<itemData name="Octal" defStyleNum="dsBaseN"/>-			<itemData name="Hex" defStyleNum="dsBaseN"/>-			<itemData name="Bin" defStyleNum="dsBaseN"/>+			<itemData name="Dec" defStyleNum="dsDecVal" spellChecking="false"/>+			<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+			<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>+			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>+			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+			<itemData name="Bin" defStyleNum="dsBaseN" spellChecking="false"/> 			-			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0" spellChecking="false"/> <!-- #D40000 --> 			<itemData name="String" defStyleNum="dsString"/>-			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>-			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>-			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->-			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>-			<itemData name="Substitution"	defStyleNum="dsOthers"/>+			<itemData name="Raw String" defStyleNum="dsVerbatimString"/> <!-- #DD4A4A -->+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->+			<itemData name="Message" defStyleNum="dsAttribute" spellChecking="false"/> <!-- #4000A7 -->+			<itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->+			<itemData name="Substitution"	defStyleNum="dsSpecialChar" spellChecking="false"/> 			<itemData name="Data" defStyleNum="dsNormal"/> 			<!-- short for 'general delimited input' --> 			<itemData name="GDL input" defStyleNum="dsOthers" /> 			-			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>-			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>-			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>-			<itemData name="Constant" defStyleNum="dsDataType"/>-			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>-			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->-			<itemData name="Member" defStyleNum="dsNormal"/>-			<itemData name="Instance Variable" defStyleNum="dsOthers"/>-			<itemData name="Class Variable" defStyleNum="dsOthers"/>+			<itemData name="Default globals" defStyleNum="dsVariable" bold="1" spellChecking="false"/> <!-- #C00000 -->+			<itemData name="Global Variable" defStyleNum="dsVariable" spellChecking="false"/> <!-- #C00000 -->+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1" spellChecking="false"/> <!-- #bb1188 -->+			<itemData name="Constant" defStyleNum="dsDataType" spellChecking="false"/>+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0" spellChecking="false"/> <!-- #bb1188 -->+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1" spellChecking="false"/> <!-- #000080, #CC0E86 -->+			<itemData name="Member" defStyleNum="dsNormal" spellChecking="false"/>+			<itemData name="Instance Variable" defStyleNum="dsOthers" spellChecking="false"/>+			<itemData name="Class Variable" defStyleNum="dsOthers" spellChecking="false"/> 			 			<itemData name="Ruby Comment" defStyleNum="dsComment"/> 			<itemData name="Blockcomment" defStyleNum="dsComment"/> 			<itemData name="RDoc Value" defStyleNum="dsOthers"/> 			 			<!-- use these to mark errors and alerts things -->-			<itemData name="Error" defStyleNum="dsError" />-			<itemData name="Alert" defStyleNum="dsAlert" />+			<itemData name="Error" defStyleNum="dsError" spellChecking="false"/> -			<itemData name="Delimiter" defStyleNum="dsChar"/>-			<itemData name="Operator" defStyleNum="dsChar"/>+			<itemData name="Delimiter" defStyleNum="dsChar" spellChecking="false"/>+			<itemData name="Operator" defStyleNum="dsChar" spellChecking="false"/> 		<!-- END Ruby itemData --> 			 		<!-- BEGIN HTML itemData --> 			<itemData name="Normal Text" defStyleNum="dsNormal" /> 			<itemData name="Comment" defStyleNum="dsComment" />-			<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />-			<itemData name="Processing Instruction" defStyleNum="dsKeyword" />-			<itemData name="Doctype" defStyleNum="dsDataType" bold="1" />-			<itemData name="Element" defStyleNum="dsKeyword" />-			<itemData name="Attribute" defStyleNum="dsOthers" />-			<itemData name="Value" defStyleNum="dsString" />-			<itemData name="EntityRef" defStyleNum="dsDecVal" />-			<itemData name="PEntityRef" defStyleNum="dsDecVal" />+			<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false"/>+			<itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false"/>+			<itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false"/>+			<itemData name="Element" defStyleNum="dsKeyword" spellChecking="false"/>+			<itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>+			<itemData name="Value" defStyleNum="dsString" spellChecking="false"/>+			<itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>+			<itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false"/> 		<!-- END HTML itemData --> 		 		</itemDatas> 	</highlighting> 	<general> 		<comments>-			<comment name="multiLine" start="&lt;!--" end="--&gt;" />+			<comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" /> 		</comments> 		<keywords casesensitive="1" weakDeliminator="!?"/>  	</general> </language>+<!-- kate: replace-tabs off; -->
syntax/roff.xml view
@@ -7,7 +7,7 @@   <!ENTITY argsep1 "([^\\]|\\[&#37; |\^{}'`\-!?@)/,&amp;:~0E_acdeprtu])">   <!ENTITY argsep2 "([^\\0-9]|\\[&#37;:{}'`\-_!@/cep])"> ]>-<language name="Roff" section="Markup" version="3" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">+<language name="Roff" section="Markup" version="4" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">    <highlighting> @@ -79,7 +79,9 @@        <!-- comment -->       <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <!-- error -->@@ -195,3 +197,4 @@   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/ruby.xml view
@@ -31,7 +31,7 @@  <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". --> <language name="Ruby" section="Scripts"-	  version="10" kateversion="3.3"+	  version="12" kateversion="3.3" 	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile" 	  mimetype="application/x-ruby" 	  style="ruby" indenter="ruby"@@ -389,6 +389,7 @@  			<context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay"> 				<RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>+				<DetectSpaces /> 				<IncludeRules context="##Alerts" /> 			</context> @@ -431,7 +432,9 @@ 			</context>  			<context name="General Comment" attribute="Comment" lineEndContext="#pop">+				<DetectSpaces /> 				<IncludeRules context="##Alerts" />+				<IncludeRules context="##Modelines" /> 			</context>  			<!-- HEREDOC support@@ -878,9 +881,9 @@ 		<itemDatas> 			<itemData name="Normal Text" defStyleNum="dsNormal"/> -			<itemData name="Keyword" defStyleNum="dsKeyword"/>+			<itemData name="Keyword" defStyleNum="dsControlFlow"/> 			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>-			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF --> 			<itemData name="Definition" defStyleNum="dsKeyword"/> 			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/> @@ -891,24 +894,24 @@ 			<itemData name="Hex" defStyleNum="dsBaseN"/> 			<itemData name="Bin" defStyleNum="dsBaseN"/> -			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 --> 			<itemData name="String" defStyleNum="dsString"/>-			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>-			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>-			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->-			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>-			<itemData name="Substitution"	defStyleNum="dsOthers"/>+			<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->+			<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->+			<itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->+			<itemData name="Substitution"	defStyleNum="dsSpecialChar"/> 			<itemData name="Data" defStyleNum="dsNormal"/> 			<!-- short for 'general delimited input' --> 			<itemData name="GDL input" defStyleNum="dsOthers" /> -			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>-			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>-			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>+			<itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->+			<itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 --> 			<itemData name="Constant" defStyleNum="dsDataType"/>-			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>-			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->-			<itemData name="Module mixin methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+			<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 --> 			<itemData name="Member" defStyleNum="dsNormal"/> 			<itemData name="Instance Variable" defStyleNum="dsOthers"/> 			<itemData name="Class Variable" defStyleNum="dsOthers"/>@@ -916,15 +919,15 @@ 			<itemData name="Comment" defStyleNum="dsComment"/> 			<itemData name="Blockcomment" defStyleNum="dsComment"/> -			<itemData name="Here Document" defStyleNum="dsOthers"/>+			<itemData name="Here Document" defStyleNum="dsDocumentation"/> -			<itemData name="Delimiter" defStyleNum="dsNormal" color="#FF9FEC"/>-			<itemData name="Operator" defStyleNum="dsNormal" color="#FF9FEC"/>+			<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+			<itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC --> 		</itemDatas> 	</highlighting> 	<general> 		<comments>-			<comment name="singleLine" start="#"/>+			<comment name="singleLine" start="#" position="afterwhitespace"/> 		</comments> 		<keywords casesensitive="1" weakDeliminator="!?"/> 	</general>
syntax/rust.xml view
@@ -28,12 +28,12 @@ --> <!DOCTYPE language SYSTEM "language.dtd" [-	<!ENTITY rustIdent "([a-zA-Z_]|[^[:ascii:]])(\w|[^[:ascii:]])*">-	<!ENTITY rustIntSuf "([iu](8|16|32|64|128|size)?)?">-	<!ENTITY commonEscape "([trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">-	<!ENTITY unicodeEscape "u\{([0-9a-fA-F]_*){1,6}\}">+	<!ENTITY rustIdent "(?:[a-zA-Z_]|[^[:ascii:]])(?:\w|[^[:ascii:]])*">+	<!ENTITY rustIntSuf "(?:[iu](?:8|16|32|64|128|size)?)?">+	<!ENTITY commonEscape "(?:[trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">+	<!ENTITY unicodeEscape "u\{(?:[0-9a-fA-F]_*){1,6}\}"> ]>-<language name="Rust" version="7" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">+<language name="Rust" version="9" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers"> <highlighting> 	<list name="fn"> 		<item>fn</item>@@ -372,11 +372,11 @@ 			<keyword String="traits" attribute="Trait" context="#stay"/> 			<IncludeRules context="FindComments"/> 			<!-- Hexadecimal, Octal & Binary -->-			<RegExpr String="\b0(x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/>+			<RegExpr String="\b0(?:x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/> 			<!-- Float & Decimal -->-			<RegExpr String="\b[0-9][0-9_]*((\.[0-9][0-9_]*)?([eE][\+\-]?[0-9_]+)?(f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/>+			<RegExpr String="\b[0-9][0-9_]*(?:(?:\.[0-9][0-9_]*)?(?:[eE][\+\-]?[0-9_]+)?(?:f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/> 			<!-- Invalid number -->-			<RegExpr String="\b0(b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/>+			<RegExpr String="\b0(?:b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/> 			<Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/> 			<StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/> 			<RegExpr String="&rustIdent;::" attribute="Scope"/>@@ -386,13 +386,13 @@ 			<DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" /> 			<DetectChar char="}" attribute="Symbol" context="#stay" endRegion="Brace" /> 			<!-- Raw Strings -->-			<RegExpr String="b?r(#*)&quot;" attribute="String" context="RawString" dynamic="true"/>+			<RegExpr String="b?r(#*)&quot;" attribute="String" context="RawString"/> 			<!-- Byte Strings --> 			<Detect2Chars char="b" char1="&quot;" attribute="String" context="ByteString"/> 			<!-- Strings --> 			<DetectChar char="&quot;" attribute="String" context="String"/> 			<!-- Byte -->-			<RegExpr String="b&apos;(?=([^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/>+			<RegExpr String="b&apos;(?=(?:[^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/> 			<!-- Character --> 			<DetectChar char="&apos;" attribute="Character" context="Character"/> 			<DetectChar char="[" attribute="Normal Text" context="#stay" beginRegion="Bracket" />@@ -429,14 +429,14 @@ 			<DetectChar char="\" attribute="CharEscape" context="CharEscape"/> 			<DetectChar attribute="String" context="#pop" char="&quot;"/> 		</context>-		<context attribute="String" lineEndContext="#stay" name="RawString" dynamic="true">-			<RegExpr String="&quot;%1" attribute="String" context="#pop" dynamic="true"/>+		<context attribute="String" lineEndContext="#stay" name="RawString">+			<StringDetect String="&quot;%1" attribute="String" context="#pop" dynamic="true"/> 		</context> 		<context attribute="Character" lineEndContext="#pop" name="Character" fallthrough="true" fallthroughContext="#pop"> 			<RegExpr String="[^&apos;\\](?=&apos;)" attribute="Character" context="#stay"/>-			<RegExpr String="\\(&unicodeEscape;|&commonEscape;)(?=&apos;)" attribute="CharEscape" context="#stay"/>+			<RegExpr String="\\(?:&unicodeEscape;|&commonEscape;)(?=&apos;)" attribute="CharEscape" context="#stay"/> 			<DetectChar attribute="Character" context="#pop" char="&apos;"/>-			<RegExpr String="(\\.|[^&apos;\\])[^&apos;]*(?=&apos;([\d\s!&quot;#&#036;&#037;&amp;&#039;\(\)\*\+,\-\./:;&lt;\=&gt;\?@\[\\\]\^&#096;\{\|\}~[:cntrl:]]|$))" attribute="Error" context="#stay"/>+			<RegExpr String="(?:\\.|[^&apos;\\])[^&apos;]*(?=&apos;(?:[\d\s!&quot;#&#036;&#037;&amp;&#039;\(\)\*\+,\-\./:;&lt;\=&gt;\?@\[\\\]\^&#096;\{\|\}~[:cntrl:]]|$))" attribute="Error" context="#stay"/> 		</context> 		<context attribute="CharEscape" lineEndContext="#pop" name="CharEscape"> 			<RegExpr String="&commonEscape;" attribute="CharEscape" context="#pop"/>@@ -451,6 +451,7 @@ 			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/> 		</context> 		<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+			<DetectSpaces/> 			<IncludeRules context="##Alerts" /> 			<IncludeRules context="##Modelines" /> 		</context>
syntax/scala.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Scala" version="6" kateversion="2.3" section="Sources"+<language name="Scala" version="8" kateversion="2.3" section="Sources"           extensions="*.scala;*.sbt" mimetype="text/x-scala" license="LGPL"           author="Stephane Micheloud (stephane.micheloud@epfl.ch)"> <!--@@ -3425,8 +3425,8 @@         <RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" /> -->         <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />-        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>+        <DetectChar attribute="Symbol" context="Member" char="." />+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>       </context>       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">           <AnyChar String="fF" attribute="Float" context="#pop"/>@@ -3469,9 +3469,16 @@         <RegExpr attribute="Imports" context="#pop" String="\s*.*$" />       </context> -->-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>     </contexts>     <itemDatas>@@ -3498,8 +3505,9 @@   <general>     <comments>       <comment name="singleLine" start="//"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="1"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/scheme.xml view
@@ -1,394 +1,1393 @@ <?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE language SYSTEM "language.dtd">-<language version="6" kateversion="5.0" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">-  <highlighting>-    <list name="operators">-      <item>&lt;=</item>-      <item>&lt;</item>-      <item>=</item>-      <item>=&gt;</item>-      <item>&gt;=</item>-      <item>&gt;</item>-      <item>-</item>-      <item>/</item>-      <item>*,*</item>-      <item>*)</item>-      <item>+</item>-    </list>-    <list name="characters">-      <item>#\nul</item>-      <item>#\soh</item>-      <item>#\stx</item>-      <item>#\etx</item>-      <item>#\eot</item>-      <item>#\enq</item>-      <item>#\ack</item>-      <item>#\bel</item>-      <item>#\bs</item>-      <item>#\ht</item>-      <item>#\nl</item>-      <item>#\vt</item>-      <item>#\np</item>-      <item>#\cr</item>-      <item>#\so</item>-      <item>#\si</item>-      <item>#\dle</item>-      <item>#\dc1</item>-      <item>#\dc2</item>-      <item>#\dc3</item>-      <item>#\dc4</item>-      <item>#\nak</item>-      <item>#\syn</item>-      <item>#\etb</item>-      <item>#\can</item>-      <item>#\em</item>-      <item>#\sub</item>-      <item>#\esc</item>-      <item>#\fs</item>-      <item>#\gs</item>-      <item>#\rs</item>-      <item>#\us</item>-      <item>#\space</item>-      <item>#\sp</item>-      <item>#\newline</item>-      <item>#\nl</item>-      <item>#\tab</item>-      <item>#\ht</item>-      <item>#\backspace</item>-      <item>#\bs</item>-      <item>#\return</item>-      <item>#\cr</item>-      <item>#\page</item>-      <item>#\np</item>-      <item>#\null</item>-      <item>#\nul</item>-    </list>-    <list name="defines">-      <item>define</item>-      <item>define*</item>-      <item>define-accessor</item>-      <item>define-class</item>-      <item>defined?</item>-      <item>define-generic</item>-      <item>define-macro</item>-      <item>define-method</item>-      <item>define-module</item>-      <item>define-private</item>-      <item>define-public</item>-      <item>define*-public</item>-      <item>define-reader-ctor</item>-      <item>define-syntax</item>-      <item>define-syntax-macro</item>-      <item>defmacro</item>-      <item>defmacro*</item>-      <item>defmacro*-public</item>-    </list>-    <list name="keywords">-      <item>abs</item>-      <item>acos</item>-      <item>and</item>-      <item>angle</item>-      <item>append</item>-      <item>applymap</item>-      <item>asin</item>-      <item>assoc</item>-      <item>assq</item>-      <item>assv</item>-      <item>atan</item>-      <item>begin</item>-      <item>boolean?</item>-      <item>break</item>-      <item>caaaar</item>-      <item>caaadr</item>-      <item>caaar</item>-      <item>caadar</item>-      <item>caaddr</item>-      <item>caadr</item>-      <item>caar</item>-      <item>cadaar</item>-      <item>cadadr</item>-      <item>cadar</item>-      <item>caddar</item>-      <item>cadddr</item>-      <item>caddr</item>-      <item>cadr</item>-      <item>call/cc</item>-      <item>call-with-current-continuation</item>-      <item>call-with-input-file</item>-      <item>call-with-output-file</item>-      <item>call-with-values</item>-      <item>car</item>-      <item>case</item>-      <item>catch</item>-      <item>cdaaar</item>-      <item>cdaadr</item>-      <item>cdaar</item>-      <item>cdadar</item>-      <item>cdaddr</item>-      <item>cdadr</item>-      <item>cdar</item>-      <item>cddaar</item>-      <item>cddadr</item>-      <item>cddar</item>-      <item>cdddar</item>-      <item>cddddr</item>-      <item>cdddr</item>-      <item>cddr</item>-      <item>cdr</item>-      <item>ceiling</item>-      <item>char-alphabetic?</item>-      <item>char-ci&gt;=?</item>-      <item>char-ci&gt;?</item>-      <item>char-ci=?</item>-      <item>char-ci&lt;=?</item>-      <item>char-downcase</item>-      <item>char-&gt;integer</item>-      <item>char&gt;=?</item>-      <item>char&gt;?</item>-      <item>char=?</item>-      <item>char?</item>-      <item>char-lower-case?</item>-      <item>char&lt;?c</item>-      <item>char&lt;=?</item>-      <item>char-numeric?</item>-      <item>char-ready?</item>-      <item>char-upcase</item>-      <item>char-upper-case?</item>-      <item>char-whitespace?</item>-      <item>close-input-port</item>-      <item>close-output-port</item>-      <item>complex?</item>-      <item>cond</item>-      <item>cons</item>-      <item>continue</item>-      <item>cos</item>-      <item>current-input-port</item>-      <item>current-output-port</item>-      <item>denominator</item>-      <item>display</item>-      <item>do</item>-      <item>dynamic-wind</item>-      <item>else</item>-      <item>eof-object?</item>-      <item>eq?</item>-      <item>equal?</item>-      <item>eqv?</item>-      <item>eval</item>-      <item>even?</item>-      <item>exact->inexact</item>-      <item>exact?</item>-      <item>exp</item>-      <item>expt</item>-      <item>floor</item>-      <item>force</item>-      <item>for-each</item>-      <item>gcd</item>-      <item>har-ci&lt;?</item>-      <item>if</item>-      <item>imag-part</item>-      <item>inexact-&gt;exact</item>-      <item>inexact?</item>-      <item>input-port?</item>-      <item>integer-&gt;char</item>-      <item>integer?</item>-      <item>interaction-environment</item>-      <item>lambda</item>-      <item>lcm</item>-      <item>length</item>-      <item>let</item>-      <item>let*</item>-      <item>letrec</item>-      <item>letrec-syntax</item>-      <item>let-syntax</item>-      <item>list-&gt;string</item>-      <item>list</item>-      <item>list?</item>-      <item>list-ref</item>-      <item>list-tail</item>-      <item>load</item>-      <item>log</item>-      <item>magnitude</item>-      <item>make-polar</item>-      <item>make-rectangular</item>-      <item>make-string</item>-      <item>make-vector</item>-      <item>max</item>-      <item>member</item>-      <item>memq</item>-      <item>memv</item>-      <item>min</item>-      <item>modulo</item>-      <item>negative?</item>-      <item>newline</item>-      <item>not</item>-      <item>null-environment</item>-      <item>null?</item>-      <item>number?</item>-      <item>number->string</item>-      <item>numerator</item>-      <item>odd?</item>-      <item>open-input-file</item>-      <item>open-output-file</item>-      <item>or</item>-      <item>output-port?</item>-      <item>pair?</item>-      <item>peek-char</item>-      <item>port?</item>-      <item>positive?</item>-      <item>procedure?</item>-      <item>quotient</item>-      <item>rational?</item>-      <item>rationalize</item>-      <item>read-char</item>-      <item>read</item>-      <item>real?</item>-      <item>real-part</item>-      <item>remainder</item>-      <item>reverse</item>-      <item>round</item>-      <item>scheme-report-environment</item>-      <item>set-car!</item>-      <item>set-cdr!</item>-      <item>sin</item>-      <item>sqrt</item>-      <item>string-append</item>-      <item>string-ci&gt;=?</item>-      <item>string-ci&gt;?</item>-      <item>string-ci=?</item>-      <item>string-ci&lt;=?</item>-      <item>string-ci&lt;?</item>-      <item>string-copy</item>-      <item>string-fill!</item>-      <item>string&gt;=?</item>-      <item>string&gt;?</item>-      <item>string-&gt;list</item>-      <item>string-&gt;number</item>-      <item>string-&gt;symbol</item>-      <item>string=?</item>-      <item>string</item>-      <item>string?</item>-      <item>string-length</item>-      <item>string&lt;=?</item>-      <item>string&lt;?</item>-      <item>string-ref</item>-      <item>string-set!</item>-      <item>substring</item>-      <item>symbol-&gt;string</item>-      <item>symbol?</item>-      <item>syntax-rules</item>-      <item>tan</item>-      <item>transcript-off</item>-      <item>transcript-on</item>-      <item>truncate</item>-      <item>values</item>-      <item>vector-fill!</item>-      <item>vector-&gt;listlist->vector</item>-      <item>vector</item>-      <item>vector?</item>-      <item>vector-length</item>-      <item>vector-ref</item>-      <item>vector-set!</item>-      <item>while</item>-      <item>with-input-from-file</item>-      <item>with-output-to-file</item>-      <item>write-char</item>-      <item>write</item>-      <item>zero?</item>-    </list>-    <contexts>-      <context name="Level0" attribute="Normal" lineEndContext="#stay">-            <DetectChar attribute="Brackets1" context="Level1" char="("/>-            <IncludeRules context="Default" />-      </context>-      <context name="Default" attribute="Normal" lineEndContext="#stay">-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>-        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="!" beginRegion="region"/>-        <keyword attribute="Keyword" context="#stay" String="keywords"/>-        <keyword attribute="Operator" context="#stay" String="operators"/>-        <keyword attribute="Definition" context="function_decl" String="defines"/>-        <keyword attribute="Char" context="#stay" String="characters"/>-        <RegExpr attribute="Char" context="#stay" String="#\\."/>-        <DetectChar attribute="String" context="String" char="&quot;"/>-        <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>-        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>-        <Float attribute="Float" context="#stay"/>-        <Int attribute="Decimal" context="#stay"/>-        <DetectChar attribute="Brackets1" context="Level1" char="("/>-      </context>-      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="#pop" String="!#\s*$" endRegion="region" column="0"/>-      </context>-      <context name="SpecialNumber" attribute="Normal" fallthrough="true" lineEndContext="#pop">-        <RegExpr attribute="Decimal" context="#pop" String="\d*(\.\d+)?"/>-      </context>-      <context name="String" attribute="String" lineEndContext="#stay">-        <keyword attribute="Char" context="#stay" String="characters"/>-        <RegExpr attribute="Char" context="#stay" String="#\\."/>-        <Detect2Chars attribute="Char" context="#stay" char="\" char1="&quot;"/>-        <Detect2Chars attribute="Char" context="#stay" char="\" char1="\"/>-        <DetectChar attribute="String" context="#pop" char="&quot;"/>-      </context>-      <context name="function_decl" attribute="Function" lineEndContext="#stay">-        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />-      </context>-      <context name="Level1" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets2" context="Level2" char="("/>-           <DetectChar attribute="Brackets1" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-      <context name="Level2" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets3" context="Level3" char="("/>-           <DetectChar attribute="Brackets2" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-      <context name="Level3" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets4" context="Level4" char="("/>-           <DetectChar attribute="Brackets3" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-      <context name="Level4" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets5" context="Level5" char="("/>-           <DetectChar attribute="Brackets4" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-      <context name="Level5" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets6" context="Level6" char="("/>-           <DetectChar attribute="Brackets5" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-      <context name="Level6" attribute="Normal" lineEndContext="#stay">-           <DetectChar attribute="Brackets1" context="Level1" char="("/>-           <DetectChar attribute="Brackets6" context="#pop" char=")" />-           <IncludeRules context="Default" />-      </context>-    </contexts>-    <itemDatas>-      <itemData name="Normal"      defStyleNum="dsNormal"/>-      <itemData name="Keyword"     defStyleNum="dsKeyword"/>-      <itemData name="Definition"  defStyleNum="dsExtension"/>-      <itemData name="Operator"    defStyleNum="dsOperator"/>-      <itemData name="Function"    defStyleNum="dsFunction"/>-      <itemData name="Decimal"     defStyleNum="dsDecVal"/>-      <itemData name="Float"       defStyleNum="dsFloat"/>-      <itemData name="Char"        defStyleNum="dsChar"/>-      <itemData name="String"      defStyleNum="dsString"/>-      <itemData name="Comment"     defStyleNum="dsComment"/>-      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>-      <itemData name="Brackets1"    defStyleNum="dsNormal" color="#ff0000" bold="1"/>-      <itemData name="Brackets2"    defStyleNum="dsNormal" color="#ff8800" bold="1"/>-      <itemData name="Brackets3"    defStyleNum="dsNormal" color="#888800" bold="1"/>-      <itemData name="Brackets4"    defStyleNum="dsNormal" color="#008800" bold="1"/>-      <itemData name="Brackets5"    defStyleNum="dsNormal" color="#000088" bold="1"/>-      <itemData name="Brackets6"    defStyleNum="dsNormal" color="#880088" bold="1"/>-    </itemDatas>-  </highlighting>-  <general>-    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>-    <comments>-      <comment name="singleLine" start=";;" />-      <comment name="multiLine" start="#!" end="!#" />-    </comments>-  </general>-</language>+<!DOCTYPE language SYSTEM "language.dtd"+[+  <!ENTITY xmlattrs "\s+([^&quot;/>]++|&quot;[^&quot;]*+&quot;)*+">+  <!ENTITY tab      "&#009;">+  <!ENTITY regex    "(?:[^\\(\[/]++|\\.|\[\^?\]?([^\\\[\]]++|\\.|\[(:[^:]+:\])?)++\]|\((?R)\))+">++  <!ENTITY initial_ascii_set "a-zA-Z!$&#37;&amp;*/:&lt;=&gt;?~_^">+  <!ENTITY initial_unicode_set "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Mn}\p{Nl}\p{No}\p{Pd}\p{Pc}\p{Po}\p{Sc}\p{Sm}\p{Sk}\p{So}\p{Co}">+  <!ENTITY initial_others "\\x[0-9a-fA-F]++;|(?![\x01-\x7f])[&initial_unicode_set;]">+  <!ENTITY initial "(?:[&initial_ascii_set;]|&initial_others;)">+  <!ENTITY subsequent "(?:[&initial_ascii_set;0-9-@.+\p{Nd}\p{Mc}\p{Me}]|&initial_others;)">+  <!ENTITY symbol "(?:&initial;&subsequent;*+)">+]>+<!--+  https://www.scheme.com/tspl4/+  https://www.gnu.org/software/kawa/Syntax.html+  https://www.gnu.org/software/guile/manual/html_node/Scheme-Syntax.html+-->+<language version="10" kateversion="5.62" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">+  <highlighting>+    <list name="operators">+      <item>&lt;=</item>+      <item>&lt;</item>+      <item>=</item>+      <item>=&gt;</item>+      <item>&gt;=</item>+      <item>&gt;</item>+      <item>-</item>+      <item>/</item>+      <item>*,*</item>+      <item>+</item>+      <item>!</item>+      <item>$</item>+      <item>%</item>+      <item>*</item>+      <item>/</item>+      <item>=</item>+      <item>></item>+      <item>?</item>+      <item>^</item>+      <item>_</item>+      <item>~</item>+      <item>.</item>+      <item>...</item>+    </list>+    <list name="characters">+      <item>alarm</item>+      <item>backspace</item>+      <item>delete</item>+      <item>esc</item>+      <item>linefeed</item>+      <item>newline</item>+      <item>page</item>+      <item>return</item>+      <item>space</item>+      <item>tab</item>+      <item>vtab</item>+      <!-- extension -->+      <item>nul</item>+      <item>soh</item>+      <item>stx</item>+      <item>etx</item>+      <item>eot</item>+      <item>enq</item>+      <item>ack</item>+      <item>bel</item>+      <item>bs</item>+      <item>ht</item>+      <item>nl</item>+      <item>vt</item>+      <item>np</item>+      <item>cr</item>+      <item>so</item>+      <item>si</item>+      <item>dle</item>+      <item>dc1</item>+      <item>dc2</item>+      <item>dc3</item>+      <item>dc4</item>+      <item>nak</item>+      <item>syn</item>+      <item>etb</item>+      <item>can</item>+      <item>em</item>+      <item>sub</item>+      <item>fs</item>+      <item>gs</item>+      <item>rs</item>+      <item>us</item>+      <item>sp</item>+      <item>nl</item>+      <item>ht</item>+      <item>bs</item>+      <item>cr</item>+      <item>np</item>+      <item>null</item>+      <item>nul</item>+    </list>+    <list name="defines">+      <item>define</item>+      <item>define*</item>+      <item>define-accessor</item>+      <item>define-class</item>+      <item>defined?</item>+      <item>define-generic</item>+      <item>define-macro</item>+      <item>define-method</item>+      <item>define-module</item>+      <item>define-private</item>+      <item>define-public</item>+      <item>define*-public</item>+      <item>define-reader-ctor</item>+      <item>define-syntax</item>+      <item>define-syntax-macro</item>+      <item>defmacro</item>+      <item>defmacro*</item>+      <item>defmacro*-public</item>+    </list>+    <list name="keywords">+      <item>&amp;assertion</item>+      <item>&amp;condition</item>+      <item>&amp;error</item>+      <item>&amp;i/o-decoding</item>+      <item>&amp;i/o-encoding</item>+      <item>&amp;i/o-file-already-exists</item>+      <item>&amp;i/o-file-does-not-exist</item>+      <item>&amp;i/o-file-is-read-only</item>+      <item>&amp;i/o-file-protection</item>+      <item>&amp;i/o-filename</item>+      <item>&amp;i/o-invalid-position</item>+      <item>&amp;i/o-port</item>+      <item>&amp;i/o-read</item>+      <item>&amp;i/o-write</item>+      <item>&amp;i/o</item>+      <item>&amp;implementation-restriction</item>+      <item>&amp;implementation-violation</item>+      <item>&amp;irritants</item>+      <item>&amp;lexical</item>+      <item>&amp;message</item>+      <item>&amp;mistake</item>+      <item>&amp;no-infinities</item>+      <item>&amp;no-nans</item>+      <item>&amp;non-continuable</item>+      <item>&amp;serious</item>+      <item>&amp;syntax</item>+      <item>&amp;undefined</item>+      <item>&amp;violation</item>+      <item>&amp;warning</item>+      <item>&amp;who</item>+      <item>&amp;xcond</item>+      <item>abs</item>+      <item>acos</item>+      <item>and</item>+      <item>angle</item>+      <item>append</item>+      <item>applymap</item>+      <item>asin</item>+      <item>assert</item>+      <item>assertion-violation</item>+      <item>assertion-violation?</item>+      <item>assoc</item>+      <item>assp</item>+      <item>assq</item>+      <item>assv</item>+      <item>atan</item>+      <item>begin</item>+      <item>binary-port?</item>+      <item>bitwise-and</item>+      <item>bitwise-arithmetic-shift-left</item>+      <item>bitwise-arithmetic-shift-right</item>+      <item>bitwise-arithmetic-shift</item>+      <item>bitwise-bit-count</item>+      <item>bitwise-bit-field</item>+      <item>bitwise-bit-set?</item>+      <item>bitwise-copy-bit-field</item>+      <item>bitwise-copy-bit</item>+      <item>bitwise-first-bit-set</item>+      <item>bitwise-if</item>+      <item>bitwise-ior</item>+      <item>bitwise-length</item>+      <item>bitwise-not</item>+      <item>bitwise-reverse-bit-field</item>+      <item>bitwise-rotate-bit-field</item>+      <item>bitwise-xor</item>+      <item>boolean=?</item>+      <item>boolean?</item>+      <item>bound-identifier=?</item>+      <item>break</item>+      <item>buffer-mode</item>+      <item>buffer-mode?</item>+      <item>bytevector-&gt;sint-list</item>+      <item>bytevector-&gt;string</item>+      <item>bytevector-&gt;u8-list</item>+      <item>bytevector-&gt;uint-list</item>+      <item>bytevector-copy!</item>+      <item>bytevector-copy</item>+      <item>bytevector-fill!</item>+      <item>bytevector-ieee-double-native-ref</item>+      <item>bytevector-ieee-double-native-set!</item>+      <item>bytevector-ieee-double-ref</item>+      <item>bytevector-ieee-double-set!</item>+      <item>bytevector-ieee-single-native-ref</item>+      <item>bytevector-ieee-single-native-set!</item>+      <item>bytevector-ieee-single-ref</item>+      <item>bytevector-ieee-single-set!</item>+      <item>bytevector-length</item>+      <item>bytevector-s16-native-ref</item>+      <item>bytevector-s16-native-set!</item>+      <item>bytevector-s16-ref</item>+      <item>bytevector-s16-set!</item>+      <item>bytevector-s32-native-ref</item>+      <item>bytevector-s32-native-set!</item>+      <item>bytevector-s32-ref</item>+      <item>bytevector-s32-set!</item>+      <item>bytevector-s64-native-ref</item>+      <item>bytevector-s64-native-set!</item>+      <item>bytevector-s64-ref</item>+      <item>bytevector-s64-set!</item>+      <item>bytevector-s8-ref</item>+      <item>bytevector-s8-set!</item>+      <item>bytevector-sint-ref</item>+      <item>bytevector-sint-set!</item>+      <item>bytevector-u16-native-ref</item>+      <item>bytevector-u16-native-set!</item>+      <item>bytevector-u16-ref</item>+      <item>bytevector-u16-set!</item>+      <item>bytevector-u32-native-ref</item>+      <item>bytevector-u32-native-set!</item>+      <item>bytevector-u32-ref</item>+      <item>bytevector-u32-set!</item>+      <item>bytevector-u64-native-ref</item>+      <item>bytevector-u64-native-set!</item>+      <item>bytevector-u64-ref</item>+      <item>bytevector-u64-set!</item>+      <item>bytevector-u8-ref</item>+      <item>bytevector-u8-set!</item>+      <item>bytevector-uint-ref</item>+      <item>bytevector-uint-set!</item>+      <item>bytevector=?</item>+      <item>bytevector?</item>+      <item>caaaar</item>+      <item>caaadr</item>+      <item>caaar</item>+      <item>caadar</item>+      <item>caaddr</item>+      <item>caadr</item>+      <item>caar</item>+      <item>cadaar</item>+      <item>cadadr</item>+      <item>cadar</item>+      <item>caddar</item>+      <item>cadddr</item>+      <item>caddr</item>+      <item>cadr</item>+      <item>call-with-bytevector-output-port</item>+      <item>call-with-current-continuation</item>+      <item>call-with-input-file</item>+      <item>call-with-output-file</item>+      <item>call-with-port</item>+      <item>call-with-string-output-port</item>+      <item>call-with-values</item>+      <item>call/cc</item>+      <item>car</item>+      <item>case-lambda</item>+      <item>case</item>+      <item>catch</item>+      <item>cdaaar</item>+      <item>cdaadr</item>+      <item>cdaar</item>+      <item>cdadar</item>+      <item>cdaddr</item>+      <item>cdadr</item>+      <item>cdar</item>+      <item>cddaar</item>+      <item>cddadr</item>+      <item>cddar</item>+      <item>cdddar</item>+      <item>cddddr</item>+      <item>cdddr</item>+      <item>cddr</item>+      <item>cdr</item>+      <item>ceiling</item>+      <item>char&gt;=?</item>+      <item>char&gt;?</item>+      <item>char&lt;=?</item>+      <item>char&lt;?</item>+      <item>char&lt;?c</item>+      <item>char-&gt;integer</item>+      <item>char-alphabetic?</item>+      <item>char-ci&gt;=?</item>+      <item>char-ci&gt;?</item>+      <item>char-ci&lt;=?</item>+      <item>char-ci&lt;?</item>+      <item>char-ci=?</item>+      <item>char-downcase</item>+      <item>char-foldcase</item>+      <item>char-general-category</item>+      <item>char-lower-case?</item>+      <item>char-numeric?</item>+      <item>char-ready?</item>+      <item>char-title-case?</item>+      <item>char-titlecase</item>+      <item>char-upcase</item>+      <item>char-upper-case?</item>+      <item>char-whitespace?</item>+      <item>char=?</item>+      <item>char?</item>+      <item>close-input-port</item>+      <item>close-output-port</item>+      <item>close-port</item>+      <item>complex?</item>+      <item>cond</item>+      <item>condition-accessor</item>+      <item>condition-irritants</item>+      <item>condition-message</item>+      <item>condition-predicate</item>+      <item>condition-who</item>+      <item>condition</item>+      <item>condition?</item>+      <item>cons*</item>+      <item>cons</item>+      <item>continue</item>+      <item>cos</item>+      <item>current-error-port</item>+      <item>current-input-port</item>+      <item>current-output-port</item>+      <item>datum-&gt;syntax</item>+      <item>define-condition-type</item>+      <item>define-enumeration</item>+      <item>define-record-type</item>+      <item>delete-file</item>+      <item>denominator</item>+      <item>display</item>+      <item>div-and-mod</item>+      <item>div0-and-mod0</item>+      <item>div0</item>+      <item>div</item>+      <item>do</item>+      <item>dynamic-wind</item>+      <item>else</item>+      <item>endianness</item>+      <item>enum-set-&gt;list</item>+      <item>enum-set-complement</item>+      <item>enum-set-constructor</item>+      <item>enum-set-difference</item>+      <item>enum-set-indexer</item>+      <item>enum-set-intersection</item>+      <item>enum-set-member?</item>+      <item>enum-set-projection</item>+      <item>enum-set-subset?</item>+      <item>enum-set-union</item>+      <item>enum-set-universe</item>+      <item>enum-set=?</item>+      <item>eof-object</item>+      <item>eof-object?</item>+      <item>eol-style</item>+      <item>eq?</item>+      <item>equal-hash</item>+      <item>equal?</item>+      <item>eqv?</item>+      <item>error-handling-mode</item>+      <item>error</item>+      <item>error?</item>+      <item>eval</item>+      <item>even?</item>+      <item>exact-&gt;inexact</item>+      <item>exact->inexact</item>+      <item>exact-integer-sqrt</item>+      <item>exact</item>+      <item>exact?</item>+      <item>exp</item>+      <item>expt</item>+      <item>file-exists?</item>+      <item>file-options</item>+      <item>filter</item>+      <item>find</item>+      <item>finite?</item>+      <item>fixnum-&gt;flonum</item>+      <item>fixnum-width</item>+      <item>fixnum?</item>+      <item>fl&gt;=?</item>+      <item>fl&gt;?</item>+      <item>fl&lt;=?</item>+      <item>fl&lt;?</item>+      <item>fl*</item>+      <item>fl+</item>+      <item>fl-</item>+      <item>fl/</item>+      <item>fl=?</item>+      <item>flabs</item>+      <item>flacos</item>+      <item>flasin</item>+      <item>flatan</item>+      <item>flceiling</item>+      <item>flcos</item>+      <item>fldenominator</item>+      <item>fldiv-and-mod</item>+      <item>fldiv0-and-mod0</item>+      <item>fldiv0</item>+      <item>fldiv</item>+      <item>fleven?</item>+      <item>flexp</item>+      <item>flexpt</item>+      <item>flfinite?</item>+      <item>flfloor</item>+      <item>flinfinite?</item>+      <item>flinteger?</item>+      <item>fllog</item>+      <item>flmax</item>+      <item>flmin</item>+      <item>flmod0</item>+      <item>flmod</item>+      <item>flnan?</item>+      <item>flnegative?</item>+      <item>flnumerator</item>+      <item>flodd?</item>+      <item>flonum?</item>+      <item>floor</item>+      <item>flpositive?</item>+      <item>flround</item>+      <item>flsin</item>+      <item>flsqrt</item>+      <item>fltan</item>+      <item>fltruncate</item>+      <item>flush-output-port</item>+      <item>flzero?</item>+      <item>for-each</item>+      <item>force</item>+      <item>free-identifier=?</item>+      <item>fx&gt;=?</item>+      <item>fx&gt;?</item>+      <item>fx&lt;=?</item>+      <item>fx&lt;?</item>+      <item>fx*/carry</item>+      <item>fx*</item>+      <item>fx+/carry</item>+      <item>fx+</item>+      <item>fx-/carry</item>+      <item>fx-</item>+      <item>fx=?</item>+      <item>fxand</item>+      <item>fxarithmetic-shift-left</item>+      <item>fxarithmetic-shift-right</item>+      <item>fxarithmetic-shift</item>+      <item>fxbit-count</item>+      <item>fxbit-field</item>+      <item>fxbit-set?</item>+      <item>fxcopy-bit-field</item>+      <item>fxcopy-bit</item>+      <item>fxdiv-and-mod</item>+      <item>fxdiv0-and-mod0</item>+      <item>fxdiv0</item>+      <item>fxdiv</item>+      <item>fxeven?</item>+      <item>fxfirst-bit-set</item>+      <item>fxif</item>+      <item>fxior</item>+      <item>fxlength</item>+      <item>fxmax</item>+      <item>fxmin</item>+      <item>fxmod0</item>+      <item>fxmod</item>+      <item>fxnegative?</item>+      <item>fxnot</item>+      <item>fxodd?</item>+      <item>fxpositive?</item>+      <item>fxreverse-bit-field</item>+      <item>fxrotate-bit-field</item>+      <item>fxxor</item>+      <item>fxzero?</item>+      <item>gcd</item>+      <item>generate-temporaries</item>+      <item>get-bytevector-all</item>+      <item>get-bytevector-n!</item>+      <item>get-bytevector-n</item>+      <item>get-bytevector-some</item>+      <item>get-char</item>+      <item>get-datum</item>+      <item>get-line</item>+      <item>get-string-all</item>+      <item>get-string-n!</item>+      <item>get-string-n</item>+      <item>get-u8</item>+      <item>greatest-fixnum</item>+      <item>guard</item>+      <item>har-ci&lt;?</item>+      <item>hashtable-clear!</item>+      <item>hashtable-contains?</item>+      <item>hashtable-copy</item>+      <item>hashtable-delete!</item>+      <item>hashtable-entries</item>+      <item>hashtable-equivalence-function</item>+      <item>hashtable-hash-function</item>+      <item>hashtable-keys</item>+      <item>hashtable-mutable?</item>+      <item>hashtable-ref</item>+      <item>hashtable-set!</item>+      <item>hashtable-size</item>+      <item>hashtable-update!</item>+      <item>hashtable?</item>+      <item>i/o-decoding-error?</item>+      <item>i/o-encoding-error-char</item>+      <item>i/o-encoding-error?</item>+      <item>i/o-error-filename</item>+      <item>i/o-error-port</item>+      <item>i/o-error-position</item>+      <item>i/o-error?</item>+      <item>i/o-file-already-exists-error?</item>+      <item>i/o-file-does-not-exist-error?</item>+      <item>i/o-file-is-read-only-error?</item>+      <item>i/o-file-protection-error?</item>+      <item>i/o-filename-error?</item>+      <item>i/o-invalid-position-error?</item>+      <item>i/o-port-error?</item>+      <item>i/o-read-error?</item>+      <item>i/o-write-error?</item>+      <item>identifier-syntax</item>+      <item>identifier?</item>+      <item>if</item>+      <item>imag-part</item>+      <item>implementation-restriction-violation?</item>+      <item>inexact-&gt;exact</item>+      <item>inexact</item>+      <item>inexact?</item>+      <item>infinite?</item>+      <item>input-port?</item>+      <item>integer-&gt;char</item>+      <item>integer-valued?</item>+      <item>integer?</item>+      <item>interaction-environment</item>+      <item>irritants-condition?</item>+      <item>lambda</item>+      <item>latin-1-codec</item>+      <item>lcm</item>+      <item>least-fixnum</item>+      <item>length</item>+      <item>let*-values</item>+      <item>let*</item>+      <item>let-syntax</item>+      <item>let-values</item>+      <item>let</item>+      <item>letrec*</item>+      <item>letrec-syntax</item>+      <item>letrec</item>+      <item>lexical-violation?</item>+      <item>list-&gt;string</item>+      <item>list-&gt;vector</item>+      <item>list-ref</item>+      <item>list-sort</item>+      <item>list-tail</item>+      <item>list</item>+      <item>list?</item>+      <item>load</item>+      <item>log</item>+      <item>lookahead-char</item>+      <item>lookahead-u8</item>+      <item>magnitude</item>+      <item>make-assertion-violation</item>+      <item>make-bytevector</item>+      <item>make-custom-binary-input-port</item>+      <item>make-custom-binary-input/output-port</item>+      <item>make-custom-binary-output-port</item>+      <item>make-custom-textual-input-port</item>+      <item>make-custom-textual-input/output-port</item>+      <item>make-custom-textual-output-port</item>+      <item>make-enumeration</item>+      <item>make-eq-hashtable</item>+      <item>make-eqv-hashtable</item>+      <item>make-error</item>+      <item>make-hashtable</item>+      <item>make-i/o-decoding-error</item>+      <item>make-i/o-encoding-error</item>+      <item>make-i/o-error</item>+      <item>make-i/o-file-already-exists-error</item>+      <item>make-i/o-file-does-not-exist-error</item>+      <item>make-i/o-file-is-read-only-error</item>+      <item>make-i/o-file-protection-error</item>+      <item>make-i/o-filename-error</item>+      <item>make-i/o-invalid-position-error</item>+      <item>make-i/o-port-error</item>+      <item>make-i/o-read-error</item>+      <item>make-i/o-write-error</item>+      <item>make-implementation-restriction-violation</item>+      <item>make-irritants-condition</item>+      <item>make-lexical-violation</item>+      <item>make-message-condition</item>+      <item>make-no-infinities-violation</item>+      <item>make-no-nans-violation</item>+      <item>make-non-continuable-violation</item>+      <item>make-polar</item>+      <item>make-record-constructor-descriptor</item>+      <item>make-record-type-descriptor</item>+      <item>make-rectangular</item>+      <item>make-serious-condition</item>+      <item>make-string</item>+      <item>make-syntax-violation</item>+      <item>make-transcoder</item>+      <item>make-undefined-violation</item>+      <item>make-variable-transformer</item>+      <item>make-vector</item>+      <item>make-violation</item>+      <item>make-warning</item>+      <item>make-who-condition</item>+      <item>max</item>+      <item>member</item>+      <item>memp</item>+      <item>memq</item>+      <item>memv</item>+      <item>message-condition?</item>+      <item>min</item>+      <item>mod0</item>+      <item>mod</item>+      <item>modulo</item>+      <item>nan?</item>+      <item>native-endianness</item>+      <item>native-eol-style</item>+      <item>native-transcoder</item>+      <item>negative?</item>+      <item>newline</item>+      <item>no-infinities-violation?</item>+      <item>no-nans-violation?</item>+      <item>non-continuable-violation?</item>+      <item>not</item>+      <item>null-environment</item>+      <item>null?</item>+      <item>number-&gt;string</item>+      <item>number->string</item>+      <item>number?</item>+      <item>numerator</item>+      <item>odd?</item>+      <item>open-bytevector-input-port</item>+      <item>open-bytevector-output-port</item>+      <item>open-file-input-port</item>+      <item>open-file-input/output-port</item>+      <item>open-file-output-port</item>+      <item>open-input-file</item>+      <item>open-output-file</item>+      <item>open-string-input-port</item>+      <item>open-string-output-port</item>+      <item>or</item>+      <item>output-port-buffer-mode</item>+      <item>output-port?</item>+      <item>pair?</item>+      <item>partition</item>+      <item>peek-char</item>+      <item>port-eof?</item>+      <item>port-has-port-position?</item>+      <item>port-has-set-port-position!?</item>+      <item>port-position</item>+      <item>port-transcoder</item>+      <item>port?</item>+      <item>positive?</item>+      <item>procedure?</item>+      <item>put-bytevector</item>+      <item>put-char</item>+      <item>put-datum</item>+      <item>put-string</item>+      <item>put-u8</item>+      <item>quasiquote</item>+      <item>quasisyntax</item>+      <item>quote</item>+      <item>quotient</item>+      <item>raise-continuable</item>+      <item>raise</item>+      <item>rational-valued?</item>+      <item>rational?</item>+      <item>rationalize</item>+      <item>read-char</item>+      <item>read</item>+      <item>real-&gt;flonum</item>+      <item>real-part</item>+      <item>real-valued?</item>+      <item>real?</item>+      <item>record-accessor</item>+      <item>record-constructor-descriptor</item>+      <item>record-constructor</item>+      <item>record-field-mutable?</item>+      <item>record-mutator</item>+      <item>record-predicate</item>+      <item>record-rtd</item>+      <item>record-type-descriptor</item>+      <item>record-type-descriptor?</item>+      <item>record-type-field-names</item>+      <item>record-type-generative?</item>+      <item>record-type-name</item>+      <item>record-type-opaque?</item>+      <item>record-type-parent</item>+      <item>record-type-sealed?</item>+      <item>record-type-uid</item>+      <item>record?</item>+      <item>remainder</item>+      <item>remove</item>+      <item>remp</item>+      <item>remq</item>+      <item>remv</item>+      <item>reverse</item>+      <item>round</item>+      <item>scheme-report-environment</item>+      <item>serious-condition?</item>+      <item>set!</item>+      <item>set-car!</item>+      <item>set-cdr!</item>+      <item>set-port-position!</item>+      <item>simple-conditions</item>+      <item>sin</item>+      <item>sint-list-&gt;bytevector</item>+      <item>sqrt</item>+      <item>standard-error-port</item>+      <item>standard-input-port</item>+      <item>standard-output-port</item>+      <item>string&gt;=?</item>+      <item>string&gt;?</item>+      <item>string&lt;=?</item>+      <item>string&lt;?</item>+      <item>string-&gt;bytevector</item>+      <item>string-&gt;list</item>+      <item>string-&gt;number</item>+      <item>string-&gt;symbol</item>+      <item>string-&gt;utf16</item>+      <item>string-&gt;utf32</item>+      <item>string-&gt;utf8</item>+      <item>string-append</item>+      <item>string-ci&gt;=?</item>+      <item>string-ci&gt;?</item>+      <item>string-ci&lt;=?</item>+      <item>string-ci&lt;?</item>+      <item>string-ci-hash</item>+      <item>string-ci=?</item>+      <item>string-copy</item>+      <item>string-downcase</item>+      <item>string-fill!</item>+      <item>string-foldcase</item>+      <item>string-hash</item>+      <item>string-length</item>+      <item>string-normalize-nfc</item>+      <item>string-normalize-nfd</item>+      <item>string-normalize-nfkc</item>+      <item>string-normalize-nfkd</item>+      <item>string-ref</item>+      <item>string-set!</item>+      <item>string-titlecase</item>+      <item>string-upcase</item>+      <item>string</item>+      <item>string=?</item>+      <item>string?</item>+      <item>substring</item>+      <item>symbol-&gt;string</item>+      <item>symbol-hash</item>+      <item>symbol=?</item>+      <item>symbol?</item>+      <item>syntax-&gt;datum</item>+      <item>syntax-case</item>+      <item>syntax-rules</item>+      <item>syntax-violation-form</item>+      <item>syntax-violation-subform</item>+      <item>syntax-violation</item>+      <item>syntax-violation?</item>+      <item>syntax</item>+      <item>tan</item>+      <item>textual-port?</item>+      <item>transcoded-port</item>+      <item>transcoder-codec</item>+      <item>transcoder-eol-style</item>+      <item>transcoder-error-handling-mode</item>+      <item>transcript-off</item>+      <item>transcript-on</item>+      <item>truncate</item>+      <item>u8-list-&gt;bytevector</item>+      <item>uint-list-&gt;bytevector</item>+      <item>undefined-violation?</item>+      <item>unquote-splicing</item>+      <item>unquote</item>+      <item>unsyntax-splicing</item>+      <item>unsyntax</item>+      <item>utf-16-codec</item>+      <item>utf-8-codec</item>+      <item>utf16-&gt;string</item>+      <item>utf32-&gt;string</item>+      <item>utf8-&gt;string</item>+      <item>values</item>+      <item>vector-&gt;list</item>+      <item>vector-&gt;listlist->vector</item>+      <item>vector-fill!</item>+      <item>vector-length</item>+      <item>vector-ref</item>+      <item>vector-set!</item>+      <item>vector-sort!</item>+      <item>vector-sort</item>+      <item>vector</item>+      <item>vector?</item>+      <item>violation?</item>+      <item>warning?</item>+      <item>while</item>+      <item>who-condition?</item>+      <item>with-exception-handler</item>+      <item>with-input-from-file</item>+      <item>with-output-to-file</item>+      <item>with-syntax</item>+      <item>write-char</item>+      <item>write</item>+      <item>zero?</item>+    </list>+    <contexts>+      <context name="Level0" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets1" context="Level1" char="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>+        <IncludeRules context="Default"/>+      </context>++      <context name="Default" attribute="Normal" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectChar attribute="Comment" context="hash" char="#" lookAhead="1"/>+        <DetectChar attribute="Comment" context="semicolon" char=";" lookAhead="1"/>+        <DetectChar attribute="String" context="String" char="&quot;"/>+        <Detect2Chars attribute="String" context="Template" char="&amp;" char1="{"/>+        <AnyChar attribute="Other Brackets" context="#stay" String="{}[]"/>+        <keyword attribute="Keyword" context="#stay" String="keywords"/>+        <keyword attribute="Definition" context="function_decl" String="defines"/>+        <keyword attribute="Operator" context="#stay" String="operators"/>+        <RegExpr attribute="Normal" context="#stay" String="&symbol;"/>+        <!-- s, f, d, l are extensions of Kawa -->+        <RegExpr attribute="Float" context="#stay" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>+        <RegExpr attribute="Decimal" context="#stay" String="[0-9]++"/>+      </context>+++      <context name="Template" attribute="String" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="String" context="#pop" char="}"/>+        <DetectChar attribute="String" context="Template" char="{"/>+        <DetectChar attribute="Char" context="TemplateTemplate" char="&amp;" lookAhead="1"/>+      </context>+      <context name="TemplateTemplate" attribute="String" lineEndContext="#pop">+        <Detect2Chars attribute="Operator" context="#stay" char="&amp;" char1="|" firstNonSpace="1"/>+        <Detect2Chars attribute="Operator" context="#pop!NotNewlineTemplate" char="&amp;" char1="-"/>+        <Detect2Chars attribute="Brackets1" context="#pop!Level1" char="&amp;" char1="("/>+        <Detect2Chars attribute="Brackets1" context="#pop!EmbeddedExpressionTemplate" char="&amp;" char1="["/>+        <Detect2Chars attribute="Extension" context="#pop!FormatTemplate" char="&amp;" char1="~"/>+        <StringDetect attribute="Comment" context="#pop!MultiLineComment" String="&amp;#|" beginRegion="comment"/>+        <RegExpr attribute="Char" context="#pop!EndCharTemplate" String="(&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*))" lookAhead="1"/>+        <DetectChar attribute="String" context="#pop" char="&amp;"/>+      </context>+      <context name="FormatTemplate" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Extension" context="#pop" String="({["/>+        <AnyChar attribute="Extension" context="FormatTemplate" String=")}]"/>+        <RegExpr attribute="Extension" context="#pop" String="[^(){}\[\]]+"/>+      </context>+      <context name="EmbeddedExpressionTemplate" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets1" context="#pop" char="]"/>+        <IncludeRules context="Level1"/>+      </context>+      <context name="NotNewlineTemplate" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectSpaces/>+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>+      </context>+      <context name="EndCharTemplate" attribute="Comment" lineEndContext="#stay">+        <StringDetect attribute="Char" context="#pop" String="%1;" dynamic="1"/>+        <StringDetect attribute="Error" context="#pop" String="%1" dynamic="1"/>+      </context>+++      <context name="semicolon" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop!comment">+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*BEGIN\b.*" beginRegion="region"/>+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*END\b.*" endRegion="region"/>+      </context>+      <context name="comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+        <DetectIdentifier/>+      </context>++      <context name="hash" attribute="Normal" lineEndContext="#stay">+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="t"/>+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="T"/>+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="f"/>+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="F"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num16" char="#" char1="x"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num8" char="#" char1="o"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num2" char="#" char1="b"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="e"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="i"/>+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="d"/>+        <Detect2Chars attribute="Char" context="#pop!Char" char="#" char1="\"/>+        <Detect2Chars attribute="Comment" context="#pop!DatumComment" char="#" char1=";"/>+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileCommentOrExtension" char="#" char1="!" lookAhead="1"/>++        <!-- Kawa extension -->+        <Detect2Chars attribute="Operator" context="#pop!Regex" char="#" char1="/"/>+        <Detect2Chars attribute="XML Tag" context="#pop!XML" char="#" char1="&lt;" lookAhead="1"/>++        <DetectChar attribute="Normal" context="#pop" char="#"/>+      </context>+++      <context name="XML" attribute="XML Tag" lineEndContext="#pop">+        <StringDetect attribute="XML Tag" context="#pop!XMLProc" String="#&lt;?"/>+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="#&lt;!--"/>+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="#&lt;![CDATA["/>+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr1" String="#&lt;("/>+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr2" String="#&lt;{"/>+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="#&lt;[^\s>]++"/>+        <Detect2Chars attribute="Error" context="#pop" char="#" char1="&lt;"/>+      </context>++      <context name="XMLTagExpr1" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets1" context="Level1" char="("/>+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="XMLTagExpr2" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets1" context="Level1" char="("/>+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char="}"/>+        <IncludeRules context="Default"/>+      </context>++      <context name="XMLTag" attribute="XML Attribute" lineEndContext="#stay">+        <DetectSpaces/>+        <Detect2Chars attribute="XML Tag" context="#pop" char="/" char1=">"/>+        <DetectChar attribute="XML Tag" context="#pop!XMLInnerTag" char=">"/>+        <RegExpr attribute="XML Attribute" context="XMLAttribute" String="[^\s=/>]++\s*"/>+      </context>+      <context name="XMLInnerTag" attribute="XML Tag" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>+        <DetectChar attribute="XML Tag" context="XMLFindXML" char="&lt;" lookAhead="1"/>+      </context>+      <context name="XMLFindXML" attribute="String" lineEndContext="#stay">+        <Detect2Chars attribute="XML Tag" context="#pop!XMLProc" char="&lt;" char1="?"/>+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr1" char="&lt;" char1="("/>+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr2" char="&lt;" char1="{"/>+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="&lt;!--"/>+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="&lt;![CDATA["/>+        <Detect2Chars attribute="XML Tag" context="#pop!XMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="&lt;[^\s>]++"/>+        <DetectChar attribute="XML Error" context="#pop" char="&lt;"/>+      </context>+      <context name="XMLCloseTag" attribute="String" lineEndContext="#pop#pop">+        <RegExpr attribute="XML Tag" context="#pop#pop" String="&lt;/[^\s>]*>"/>+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>+      </context>++      <context name="XMLAttribute" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop">+        <DetectSpaces/>+        <DetectChar attribute="XML Attribute" context="XMLAttributeValue" char="="/>+      </context>+      <context name="XMLAttributeValue" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop#pop">+        <DetectSpaces/>+        <DetectChar attribute="XML String" context="XMLDQ" char="&quot;"/>+        <DetectChar attribute="XML String" context="XMLSQ" char="'"/>+      </context>+      <context name="XMLDQ" attribute="XML String" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="&quot;"/>+        <IncludeRules context="XMLStringEscape"/>+      </context>+      <context name="XMLSQ" attribute="XML String" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="'"/>+        <IncludeRules context="XMLStringEscape"/>+      </context>+      <context name="XMLStringEscape" attribute="XML String" lineEndContext="#stay">+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>+      </context>++      <context name="XMLEscape" attribute="XML String" lineEndContext="#stay">+        <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr1" char="&amp;" char1="("/>+        <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr2" char="&amp;" char1="{"/>+        <RegExpr attribute="XML Entity" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>+      </context>+      <context name="XMLEnclosedExpr1" attribute="Normal" lineEndContext="#pop">+        <DetectChar attribute="Brackets2" context="Level2" char="("/>+        <DetectChar attribute="Brackets1" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="XMLEnclosedExpr2" attribute="Normal" lineEndContext="#pop">+        <DetectChar attribute="Brackets2" context="Level2" char="("/>+        <DetectChar attribute="Brackets1" context="#pop" char="}"/>+        <IncludeRules context="Default"/>+      </context>++      <context name="XMLProc" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="XMLProcAttrs">+        <RegExpr attribute="XML Tag" context="XMLProcAttrs" String="[^\s?]+"/>+      </context>+      <context name="XMLProcAttrs" attribute="XML Attribute" lineEndContext="#stay">+        <Detect2Chars attribute="XML Tag" context="#pop#pop" char="?" char1=">"/>+      </context>++      <context name="XMLComment" attribute="XML Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <Detect2Chars attribute="XML Comment" context="XMLCommentCheck" char="-" char1="-" lookAhead="1"/>+      </context>+      <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay">+        <StringDetect attribute="XML Tag" context="#pop#pop" String="-->"/>+        <Detect2Chars attribute="XML Error" context="#pop" char="-" char1="-"/>+      </context>++      <context name="XMLCDATA" attribute="XML CDATA" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <StringDetect attribute="XML Tag" context="#pop" String="]]>"/>+      </context>+++      <context name="Regex" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="Extension" context="RegexEnd" String="&regex;"/>+      </context>+      <context name="RegexEnd" attribute="Extension" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+        <DetectChar attribute="Operator" context="RegexModifier" char="/"/>+      </context>+      <context name="RegexModifier" attribute="Extension" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">+        <AnyChar attribute="Extension" context="#stay" String="ism"/>+      </context>+++      <context name="Num2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit2">+        <IncludeRules context="NumPrefix"/>+        <AnyChar attribute="Function" context="#pop!Digit2" String="+-"/>+      </context>+      <context name="Digit2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Decimal" context="#stay" String="01"/>+      </context>++      <context name="Num8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit8">+        <IncludeRules context="NumPrefix"/>+        <AnyChar attribute="Function" context="#pop!Digit8" String="+-"/>+      </context>+      <context name="Digit8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Decimal" context="#stay" String="01234567"/>+      </context>++      <context name="Num10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit10">+        <IncludeRules context="NumPrefix"/>+        <AnyChar attribute="Function" context="#pop!Digit10" String="+-"/>+      </context>+      <context name="Digit10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+        <!-- s, f, d, l are extensions of Kawa -->+        <RegExpr attribute="Float" context="#pop" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>+        <RegExpr attribute="Decimal" context="#pop" String="[0-9]++"/>+      </context>++      <context name="Num16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit16">+        <IncludeRules context="NumPrefix"/>+        <AnyChar attribute="Function" context="#pop!Digit16" String="+-"/>+      </context>+      <context name="Digit16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="Decimal" context="#pop" String="[0-9a-fA-F]+"/>+      </context>++      <context name="NumPrefix" attribute="Decimal" lineEndContext="#pop">+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="e"/>+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="i"/>+      </context>+++      <context name="Char" attribute="Char" lineEndContext="#pop">+        <DetectChar attribute="Char" context="HexChar" char="x"/>+        <keyword attribute="Char" context="#pop" String="characters" insensitive="1"/>+        <RegExpr attribute="Char" context="#pop" String=".(?!\w)"/>+        <RegExpr attribute="Error" context="#pop" String="\w+|."/>+      </context>+      <context name="HexChar" attribute="Char" lineEndContext="#pop#pop">+        <RegExpr attribute="Char" context="#pop#pop" String="[0-9a-fA-F]+"/>+      </context>+++      <context name="MultiLineGuileCommentOrExtension" attribute="Comment" lineEndContext="#stay">+        <RegExpr attribute="Extension" context="#pop" String="#!\w+"/>+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileComment" char="#" char1="!" beginRegion="comment"/>+      </context>++      <context name="MultiLineGuileComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="comment">+        <RegExpr attribute="Comment" context="#pop" String="^!#\s*$" endRegion="comment" column="0"/>+      </context>++      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="comment"/>+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+        <DetectIdentifier/>+      </context>+++      <context name="DatumComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent" char="(" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket" char="[" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace" char="{" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentString" char="&quot;"/>++        <DetectChar attribute="Comment" context="#pop!DatumCommentHash" char="#"/>++        <RegExpr attribute="Comment" context="#pop!DatumCommentExpr" String="[^{}\[\]()\s]+"/>+      </context>+      <context name="DatumCommentHash" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!DatumCommentRegex" char="/"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentXML" char="&lt;"/>+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentTemplate" char="&amp;" char1="{"/>+        <DetectIdentifier/>+      </context>++      <context name="DatumCommentTemplate" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="Comment" context="#pop" char="}"/>+        <DetectChar attribute="Comment" context="DatumCommentTemplate" char="{"/>+        <DetectChar attribute="Comment" context="DatumCommentTemplateTemplate" char="&amp;"/>+      </context>+      <context name="DatumCommentTemplateTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentFormatTemplate" char="~"/>+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*);?"/>+      </context>+      <context name="DatumCommentFormatTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Comment" context="#pop" String="({["/>+        <AnyChar attribute="Comment" context="DatumCommentFormatTemplate" String=")}]"/>+        <RegExpr attribute="Comment" context="#pop" String="[^(){}\[\]]+"/>+      </context>++      <context name="DatumCommentRegex" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="Comment" context="DatumCommentRegexEnd" String="&regex;"/>+      </context>+      <context name="DatumCommentRegexEnd" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+        <DetectChar attribute="Comment" context="DatumCommentRegexModifier" char="/"/>+      </context>+      <context name="DatumCommentRegexModifier" attribute="Comment" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">+        <AnyChar attribute="Comment" context="#stay" String="ism"/>+      </context>++      <context name="DatumCommentXML" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLProc" char="?"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="("/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="{"/>+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="!--"/>+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="![CDATA["/>+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="[^\s>]++\s*"/>+      </context>++      <context name="DatumCommentXMLProc" attribute="Comment" lineEndContext="#stay">+        <Detect2Chars attribute="Comment" context="#pop" char="?" char1=">"/>+      </context>+      <context name="DatumCommentXMLCDATA" attribute="Comment" lineEndContext="#stay">+        <StringDetect attribute="Comment" context="#pop" String="]]>"/>+      </context>+      <context name="DatumCommentXMLComment" attribute="Comment" lineEndContext="#stay">+        <StringDetect attribute="Comment" context="#pop" String="-->"/>+      </context>+      <context name="DatumCommentXMLTagExpr1" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char=")"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentXMLTagExpr2" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char="}"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>++      <context name="DatumCommentXMLTag" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLInnerTag" char=">"/>+        <RegExpr attribute="Comment" context="DatumCommentXMLAttribute" String="[^\s=/>]++\s*"/>+      </context>+      <context name="DatumCommentXMLInnerTag" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>+        <DetectChar attribute="Comment" context="DatumCommentXMLFindXML" char="&lt;" lookAhead="1"/>+      </context>+      <context name="DatumCommentXMLFindXML" attribute="Comment" lineEndContext="#stay">+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLProc" char="&lt;" char1="?"/>+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="&lt;" char1="("/>+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="&lt;" char1="{"/>+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="&lt;!--"/>+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="&lt;![CDATA["/>+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="&lt;[^\s>]++"/>+        <DetectChar attribute="Comment" context="#pop" char="&lt;"/>+      </context>+      <context name="DatumCommentXMLCloseTag" attribute="Comment" lineEndContext="#pop#pop">+        <RegExpr attribute="Comment" context="#pop#pop" String="&lt;/[^\s>]*>"/>+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>+      </context>++      <context name="DatumCommentXMLAttribute" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop">+        <DetectSpaces/>+        <DetectChar attribute="Comment" context="DatumCommentXMLAttributeValue" char="="/>+      </context>+      <context name="DatumCommentXMLAttributeValue" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop#pop">+        <DetectSpaces/>+        <DetectChar attribute="Comment" context="DatumCommentXMLDQ" char="&quot;"/>+        <DetectChar attribute="Comment" context="DatumCommentXMLSQ" char="'"/>+      </context>+      <context name="DatumCommentXMLDQ" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="&quot;"/>+        <IncludeRules context="DatumCommentXMLStringEscape"/>+      </context>+      <context name="DatumCommentXMLSQ" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="'"/>+        <IncludeRules context="DatumCommentXMLStringEscape"/>+      </context>+      <context name="DatumCommentXMLStringEscape" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>+      </context>++      <context name="DatumCommentXMLEscape" attribute="Comment" lineEndContext="#stay">+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentParent2" char="&amp;" char1="("/>+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentBrace2" char="&amp;" char1="{"/>+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>+      </context>++      <context name="DatumCommentExpr" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace2" char="{"/>+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>+      </context>++      <context name="DatumCommentString" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="&quot;"/>+        <RegExpr attribute="Comment" context="#stay" String="(?:[^\\&quot;]++|\\.)++"/>+      </context>++      <context name="DatumCommentParent" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char=")" endRegion="comment"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentParent2" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char=")"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentBracket" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="]" endRegion="comment"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentBracket2" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="]"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentBrace" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="}" endRegion="comment"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>+      <context name="DatumCommentBrace2" attribute="Comment" lineEndContext="#stay">+        <DetectChar attribute="Comment" context="#pop" char="}"/>+        <IncludeRules context="DatumCommentInExpr"/>+      </context>++      <context name="DatumCommentInExpr" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar attribute="Comment" context="DatumCommentParent2" char="("/>+        <DetectChar attribute="Comment" context="DatumCommentBrace2" char="{"/>+        <DetectChar attribute="Comment" context="DatumCommentBracket2" char="["/>+        <DetectChar attribute="Comment" context="DatumCommentString" char="&quot;"/>+        <DetectChar attribute="Comment" context="DatumCommentHash" char="#"/>+      </context>+++      <context name="String" attribute="String" lineEndContext="#stay">+        <DetectChar attribute="String" context="#pop" char="&quot;"/>+        <DetectChar attribute="Char" context="EscapeString" char="\"/>+      </context>+      <context name="EscapeString" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">+        <AnyChar attribute="Char" context="#pop" String="abfnrtv&quot;\"/>+        <AnyChar attribute="Char" context="MultiLineString" String="&tab; "/>+        <RegExpr attribute="Char" context="#pop" String="[xXu][0-9a-fA-F]+;|\\[0-7]{3}|(?:[MC]-|\^)?."/>+      </context>+      <context name="MultiLineString" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">+        <DetectSpaces/>+      </context>+++      <context name="function_decl" attribute="Function" lineEndContext="#stay">+        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-!$%&quot;*/:&lt;=>?~_^+.@]*\s*"/>+      </context>+++      <context name="Level1" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets2" context="Level2" char="("/>+        <Detect2Chars attribute="Brackets2" context="Level2" char="'" char1="("/>+        <Detect2Chars attribute="Brackets2" context="Level2" char="`" char1="("/>+        <Detect2Chars attribute="Brackets2" context="Level2" char="#" char1="("/>+        <Detect2Chars attribute="Brackets2" context="Level2" char="@" char1="("/>+        <DetectChar attribute="Brackets1" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="Level2" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets3" context="Level3" char="("/>+        <Detect2Chars attribute="Brackets3" context="Level3" char="'" char1="("/>+        <Detect2Chars attribute="Brackets3" context="Level3" char="`" char1="("/>+        <Detect2Chars attribute="Brackets3" context="Level3" char="#" char1="("/>+        <Detect2Chars attribute="Brackets3" context="Level3" char="@" char1="("/>+        <DetectChar attribute="Brackets2" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="Level3" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets4" context="Level4" char="("/>+        <Detect2Chars attribute="Brackets4" context="Level4" char="'" char1="("/>+        <Detect2Chars attribute="Brackets4" context="Level4" char="`" char1="("/>+        <Detect2Chars attribute="Brackets4" context="Level4" char="#" char1="("/>+        <Detect2Chars attribute="Brackets4" context="Level4" char="@" char1="("/>+        <DetectChar attribute="Brackets3" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="Level4" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets5" context="Level5" char="("/>+        <Detect2Chars attribute="Brackets5" context="Level5" char="'" char1="("/>+        <Detect2Chars attribute="Brackets5" context="Level5" char="`" char1="("/>+        <Detect2Chars attribute="Brackets5" context="Level5" char="#" char1="("/>+        <Detect2Chars attribute="Brackets5" context="Level5" char="@" char1="("/>+        <DetectChar attribute="Brackets4" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="Level5" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets6" context="Level6" char="("/>+        <Detect2Chars attribute="Brackets6" context="Level6" char="'" char1="("/>+        <Detect2Chars attribute="Brackets6" context="Level6" char="`" char1="("/>+        <Detect2Chars attribute="Brackets6" context="Level6" char="#" char1="("/>+        <Detect2Chars attribute="Brackets6" context="Level6" char="@" char1="("/>+        <DetectChar attribute="Brackets5" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+      <context name="Level6" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Brackets1" context="Level1" char="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>+        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>+        <DetectChar attribute="Brackets6" context="#pop" char=")"/>+        <IncludeRules context="Default"/>+      </context>+    </contexts>+    <itemDatas>+      <itemData name="Normal"      defStyleNum="dsNormal"/>+      <itemData name="Keyword"     defStyleNum="dsKeyword" spellChecking="0"/>+      <itemData name="Definition"  defStyleNum="dsExtension" spellChecking="0"/>+      <itemData name="Operator"    defStyleNum="dsOperator" spellChecking="0"/>+      <itemData name="Function"    defStyleNum="dsFunction" spellChecking="0"/>+      <itemData name="Base Prefix" defStyleNum="dsSpecialChar" spellChecking="0"/>+      <itemData name="Decimal"     defStyleNum="dsDecVal" spellChecking="0"/>+      <itemData name="Float"       defStyleNum="dsFloat" spellChecking="0"/>+      <itemData name="Char"        defStyleNum="dsChar" spellChecking="0"/>+      <itemData name="String"      defStyleNum="dsString"/>+      <itemData name="Comment"     defStyleNum="dsComment"/>+      <itemData name="Error"       defStyleNum="dsError" spellChecking="0"/>+      <itemData name="Extension"   defStyleNum="dsExtension" spellChecking="0"/>+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>+      <itemData name="XML Tag"     defStyleNum="dsString" spellChecking="0"/>+      <itemData name="XML Comment" defStyleNum="dsComment"/>+      <itemData name="XML CDATA"   defStyleNum="dsString"/>+      <itemData name="XML Attribute" defStyleNum="dsOthers" spellChecking="0"/>+      <itemData name="XML String"  defStyleNum="dsString"/>+      <itemData name="XML Error"   defStyleNum="dsError" spellChecking="0"/>+      <itemData name="XML Entity"  defStyleNum="dsDecVal" spellChecking="0"/>+      <itemData name="Brackets1"   defStyleNum="dsNormal" color="#ff0000" bold="1" spellChecking="0"/>+      <itemData name="Brackets2"   defStyleNum="dsNormal" color="#ff8800" bold="1" spellChecking="0"/>+      <itemData name="Brackets3"   defStyleNum="dsNormal" color="#888800" bold="1" spellChecking="0"/>+      <itemData name="Brackets4"   defStyleNum="dsNormal" color="#008800" bold="1" spellChecking="0"/>+      <itemData name="Brackets5"   defStyleNum="dsNormal" color="#3689e6" bold="1" spellChecking="0"/> <!-- #000088 -->+      <itemData name="Brackets6"   defStyleNum="dsNormal" color="#a100a1" bold="1" spellChecking="0"/> <!-- #880088 -->+      <itemData name="Other Brackets" defStyleNum="dsOperator" spellChecking="0"/>+    </itemDatas>+  </highlighting>+  <general>+    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:.,\&amp;" additionalDeliminator="&quot;;#"/>+    <comments>+      <comment name="singleLine" start=";;"/>+      <comment name="multiLine" start="#|" end="|#" region="comment"/>+    </comments>+  </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/sci.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="scilab" version="3" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">+<language name="scilab" version="5" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">   <highlighting>     <list name="Structure-keywords">       <item>do</item>@@ -1164,9 +1164,14 @@         <keyword attribute="functions" context="#stay" String="functions"/>         <Float attribute = "Float" context="#stay"/>         <Int attribute = "Decimal" context="#stay"/>-        <RegExpr String= "//.*$" attribute = "Comment" context="#stay"/>+        <Detect2Chars char = "/" char1 = "/" attribute = "Comment" context="Comment"/>         <RangeDetect char = "&quot;" char1 = "&quot;" attribute = "String" context="#stay"/>      </context>+     <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+     </context>    </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal"/>@@ -1184,7 +1189,7 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="//" />+      <comment name="singleLine" start="//" position="afterwhitespace" />     </comments>     <keywords casesensitive="1" weakDeliminator="%$" />   </general>
syntax/sed.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="sed" section="Scripts" version="2" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">+<language name="sed" section="Scripts" version="3" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">         <highlighting>                 <contexts>                         <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">@@ -220,7 +220,11 @@                                 <DetectChar   char="]"           attribute="Regex Escape" context="#stay"/>                         </context> -                        <context name="Comment" attribute="Comment" lineEndContext="BeginningOfLine"/>+                        <context name="Comment" attribute="Comment" lineEndContext="#pop">+                                <DetectSpaces />+                                <IncludeRules context="##Alerts"/>+                                <IncludeRules context="##Modelines"/>+                        </context>                         <context name="Error"   attribute="Error"   lineEndContext="BeginningOfLine"/>                 </contexts> @@ -265,3 +269,4 @@                 </comments>         </general> </language>+<!-- kate: replace-tabs on; tab-width 8; indent-width 8; -->
syntax/sgml.xml view
@@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="SGML" version="2" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">+<language name="SGML" version="3" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">   <highlighting>     <contexts>        <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >-         <StringDetect attribute="Comment" context="Comment" String="&lt;!--"/>+         <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="Comment"/>          <RegExpr attribute="Tag" context="Attribute" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />        </context> @@ -25,7 +25,10 @@        </context>         <context attribute="Comment" lineEndContext="#stay" name="Comment" >-         <StringDetect attribute="Comment" context="#pop" String="--&gt;"/>+         <DetectSpaces />+         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="Comment"/>+         <IncludeRules context="##Alerts"/>+         <IncludeRules context="##Modelines"/>        </context>      </contexts>@@ -39,7 +42,7 @@   </highlighting>   <general>     <comments>-      <comment name="multiLine" start="&lt;!--" end="//--&gt;" />+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="Comment" />     </comments>     <keywords casesensitive="0" />   </general>
syntax/sml.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="SML" version="4" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">+<language name="SML" version="5" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">   <highlighting>     <list name="keywords">       <item>abstype</item>@@ -65,7 +65,7 @@     </list>     <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">-        <Detect2Chars attribute="Comment" context="Multiline/Inline Comment" char="(" char1="*" />+        <Detect2Chars attribute="Comment" context="Multiline/Inline Comment" char="(" char1="*" beginRegion="Comment" />         <DetectChar attribute="String" context="String" char="&quot;" />         <keyword attribute="Keyword" context="#stay" String="keywords" />         <keyword attribute="Data Type" context="#stay" String="types" />@@ -77,7 +77,10 @@           <AnyChar String="fF" attribute="Float" context="#pop"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Multiline/Inline Comment">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment" />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="String" lineEndContext="#stay" name="String">         <HlCStringChar attribute="String Char" context="#stay"/>@@ -98,7 +101,8 @@   <general>     <keywords casesensitive="1" />     <comments>-      <comment name="multiLine" start="(*" end="*)" />+      <comment name="multiLine" start="(*" end="*)" region="Comment" />     </comments>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/sql-mysql.xml view
@@ -6,7 +6,7 @@   modifications by Milian Wolff (mail@milianw.de)   v3 fix comments by Gene Thomas <gene@genethomas.com> -->-<language name="SQL (MySQL)" version="5" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">+<language name="SQL (MySQL)" version="6" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -381,7 +381,7 @@         <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>         <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>-        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>+        <WordDetect attribute="Comment" context="SingleLineComment" String="rem" insensitive="true" column="0"/>          <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/> <!-- conflict with "operators" keywords --> @@ -443,10 +443,17 @@         <DetectChar attribute="Name" context="#pop" char="`"/>       </context>       <!-- comments -->-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">         <LineContinue attribute="Comment" context="#pop"/>+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <!-- preprocessor -->       <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>@@ -472,10 +479,11 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="--"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="singleLine" start="--" position="afterwhitespace"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="0"/>     <folding indentationsensitive="true"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/sql-postgresql.xml view
@@ -3,7 +3,7 @@ <!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev      v5 fix comments by Gene Thomas <gene@genethomas.com>   -->-<language name="SQL (PostgreSQL)" version="7" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">+<language name="SQL (PostgreSQL)" version="10" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -991,7 +991,7 @@         <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>         <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>-        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>+        <WordDetect attribute="Comment" context="SingleLineComment" String="rem" insensitive="true" column="0"/>          <!-- HACK: don't jump into MultiLineString for CREATE FUNCTION $funcName$...$funcName$ -->         <RegExpr String="create\s+(or\s+replace\s+)?function" insensitive="true" context="CreateFunction" attribute="Keyword"/>@@ -1007,10 +1007,10 @@         <Float attribute="Float" context="#stay"/>         <Int attribute="Decimal" context="#stay"/>         <DetectChar attribute="String" context="String" char="'"/>-        <DetectChar attribute="Comment" context="Identifier" char="&quot;"/>+        <DetectChar attribute="Identifier" context="Identifier" char="&quot;"/>         <AnyChar attribute="Symbol" context="#stay" String=":&#38;"/>         <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>-        <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$" dynamic="true"/>+        <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>         <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>         <Detect2Chars attribute="Operator" context="#stay" char=":" char1="="/>         <Detect2Chars attribute="Operator" context="#stay" char="." char1="."/>@@ -1020,7 +1020,7 @@         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="|"/>       </context>       <context name="CreateFunction" attribute="Normal Text" lineEndContext="#stay">-        <RegExpr attribute="Function" context="FunctionBody" String="\$([^\$\n\r]*)\$" dynamic="true"/>+        <RegExpr attribute="Function" context="FunctionBody" String="\$([^\$\n\r]*)\$"/>         <IncludeRules context="Normal"/>       </context>       <context name="FunctionBody" attribute="Normal Text" lineEndContext="#stay" dynamic="true">@@ -1036,10 +1036,17 @@         <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>         <DetectChar attribute="String" context="#pop" char="'"/>       </context>-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">         <LineContinue attribute="Comment" context="#pop"/>+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>       <context name="Identifier" attribute="Identifier" lineEndContext="#pop">         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>@@ -1066,9 +1073,10 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="--"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="singleLine" start="--" position="afterwhitespace"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="0"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/sql.xml view
@@ -5,7 +5,7 @@      v3 fix comments by Gene Thomas <gene@genethomas.com>   --> <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->-<language name="SQL" version="5" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">+<language name="SQL" version="6" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -877,7 +877,7 @@         <!-- comments, before operators -->         <Detect2Chars attribute="Comment" context="Singleline PL/SQL-style comment" char="-" char1="-"/>         <Detect2Chars attribute="Comment" context="Multiline C-style comment" char="/" char1="*" beginRegion="Comment"/>-        <RegExpr attribute="Comment" context="SQL*Plus remark directive" String="^rem\b" insensitive="true" column="0"/>+        <WordDetect attribute="Comment" context="SQL*Plus remark directive" String="rem" insensitive="true" column="0"/>          <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/> <!-- conflict with "operators" keywords -->         <keyword attribute="Keyword" String="keywords" context="#stay"/>@@ -915,11 +915,20 @@         <Detect2Chars attribute="String Char" context="#stay" char="'" char1="'"/>         <DetectChar attribute="String" context="#pop" char="'"/>       </context>-      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop"/>+      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>       <context name="Multiline C-style comment" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>-      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop"/>+      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop">+        <IncludeRules context="Singleline PL/SQL-style comment"/>+      </context>       <context name="User-defined identifier" attribute="Identifier" lineEndContext="#pop">         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>       </context>@@ -947,8 +956,8 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="--"/>-      <comment name="multiLine" start="/*" end="*/"/>+      <comment name="singleLine" start="--" position="afterwhitespace"/>+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="0"/>   </general>
syntax/stata.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Stata" version="10" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"+<language name="Stata" version="11" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"  casesensitive="1" priority="5" author="Larry Radbill (Larry.Radbill gmail com)" license="LGPL" >    <highlighting>@@ -3175,12 +3175,16 @@       </context>        <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context attribute="String" lineEndContext="#stay" name="string">@@ -3214,10 +3218,11 @@    <general>     <comments>-      <comment name="singleLine" start="//" />-      <comment name="multiLine" start="/*" end="*/" />+      <comment name="singleLine" start="//" position="afterwhitespace" />+      <comment name="multiLine" start="/*" end="*/" region="Comment" />     </comments>     <keywords casesensitive="1" />   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/tcl.xml view
@@ -28,7 +28,7 @@ 	    - Fixed detection of varaibles with names containing serval namespace delimiters (::) --> -<language name="Tcl/Tk" version="4" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">+<language name="Tcl/Tk" version="5" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">   <highlighting>     <list name="keywords">       <item>after</item>@@ -532,7 +532,11 @@         <DetectChar char  = "$" attribute = "Variable" context="#stay"/>       </context> -      <context name = "Comment" attribute = "Comment" lineEndContext="#pop"/>+      <context name = "Comment" attribute = "Comment" lineEndContext="#pop">+        <DetectSpaces />+        <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>+      </context>        <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay">         <RegExpr String = "\s*#" attribute="Comment" context="Comment" />@@ -563,3 +567,4 @@   </general>  </language>+<!-- kate: replace-tabs on; indent-width 2; -->
syntax/tcsh.xml view
@@ -8,7 +8,7 @@         <!ENTITY noword   "(?![\w$+-])">		<!-- no word, $, + or - following -->         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name --> ]>-<language name="Tcsh" version="6" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">+<language name="Tcsh" version="7" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">  <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)@@ -462,7 +462,9 @@         <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->@@ -655,7 +657,7 @@       <context attribute="Normal Text" lineEndContext="#pop" name="CmdSetEnv" fallthrough="true" fallthroughContext="#pop">         <!-- handle command line options -->         <RegExpr attribute="Variable" context="#pop" String="\b&varname;" />-        <RegExpr attribute="Variable" context="Assign" String=" " />+        <RegExpr attribute="Variable" context="Assign" String="\s" />         <IncludeRules context="FindMost" />       </context> @@ -815,3 +817,4 @@     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/texinfo.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="1" kateversion="2.4">+<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="2" kateversion="2.4">    <highlighting>     <!--@@ -15,7 +15,7 @@       -->     <contexts>       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">-        <RegExpr attribute="Comment" context="singleLineComment" String="@c(omment)?\b" />+        <RegExpr attribute="Comment" context="singleLineComment" String="@c(?:omment)?\b" />         <RegExpr attribute="Comment" context="multiLineComment" String="@ignore\b" beginRegion="ignore" />         <RegExpr attribute="Command" context="nodeFolding" String="@node\b" beginRegion="node" /> @@ -26,12 +26,16 @@       </context>        <context name="singleLineComment" attribute="Comment" lineEndContext="#pop">-				<IncludeRules context="##Alerts" />-			</context>+        <DetectSpaces />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />+      </context>        <context name="multiLineComment" attribute="Comment" lineEndContext="#stay">+        <DetectSpaces />         <StringDetect attribute="Comment" context="#pop" String="@end ignore" endRegion="ignore" />-				<IncludeRules context="##Alerts" />+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <context name="nodeFolding" attribute="Normal Text" lineEndContext="#stay">@@ -55,9 +59,10 @@    <general>     <comments>-      <comment name="singleLine" start="@comment " />-      <comment name="multiLine" start="@ignore" end="@end ignore" region="ignore" />+      <comment name="singleLine" start="@c " />+      <comment name="multiLine" start="@ignore " end="@end ignore" region="ignore" />     </comments>   </general>  </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ syntax/toml.xml view
@@ -0,0 +1,137 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd"+[+	<!ENTITY more "(_\d+)*">+	<!ENTITY int  "[+-]?(0|[1-9]\d*)&more;">+	<!ENTITY frac "\.\d+&more;">+	<!ENTITY exp  "[eE][+-]?\d+&more;">+	+	<!ENTITY offset   "[+-]\d\d:\d\d">+	<!ENTITY time     "\d\d:\d\d:\d\d(\.\d+)?(&offset;|Z)?">+	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?">+]>+<!-- https://github.com/toml-lang/toml -->+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="6" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">+<highlighting>+	<list name="bools">+		<item>true</item>+		<item>false</item>+	</list>+	<contexts>+		<context attribute="Error" lineEndContext="#stay" name="Toml">+			<DetectSpaces attribute="Whitespace"/>+			<Detect2Chars attribute="TableHeader" context="NestedTableHeader" char="[" char1="[" endRegion="Table"/>+			<DetectChar attribute="TableHeader" context="TableHeader" char="[" endRegion="Table"/>+			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+" firstNonSpace="true"/>+			<DetectChar attribute="Key" context="QuotedKey" char="&quot;" firstNonSpace="true"/>+			<DetectChar attribute="Assignment" context="Value" char="="/>+			<DetectChar char="#" attribute="Comment" context="Comment"/>+		</context>+		<!-- table headers -->+		<context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="TableHeader">+			<IncludeRules context="TableHeaderCommon"/>+			<DetectChar attribute="TableHeader" context="#pop" char="]" beginRegion="Table"/>+		</context>+		<context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="NestedTableHeader">+			<IncludeRules context="TableHeaderCommon"/>+			<Detect2Chars attribute="TableHeader" context="#pop" char="]" char1="]" beginRegion="Table"/>+		</context>+		<context attribute="TableHeader" lineEndContext="#pop" name="TableHeaderCommon">+			<DetectSpaces attribute="Whitespace"/>+			<DetectChar attribute="TableHeader" context="#stay" char="."/>+			<RegExpr    attribute="Key" context="#stay" String="[\w-]+"/>+			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>+		</context>+		<!-- values -->+		<context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Value">+			<DetectSpaces attribute="Whitespace"/>+			<RegExpr attribute="Date"  context="#stay" String="&datetime;"/>+			<keyword attribute="Bool" String="bools" context="#stay"/>+			<RegExpr attribute="Float" context="#stay" String="&int;(&frac;&exp;|&frac;|&exp;)"/>+			<RegExpr attribute="Int"   context="#stay" String="&int;"/>+			<StringDetect attribute="String" context="MultilineString"    String="&quot;&quot;&quot;"/>+			<DetectChar   attribute="String" context="String"               char="&quot;"/>+			<StringDetect attribute="String" context="LitMultilineString" String="'''"/>+			<DetectChar   attribute="String" context="LitString"            char="'"/>+			<DetectChar attribute="Array" context="Array" char="["/>+			<DetectChar attribute="InlineTable" context="InlineTable" char="{"/>+			<DetectChar char="#" attribute="Comment" context="Comment"/>+		</context>+		<context attribute="Comment" lineEndContext="#pop" name="Comment">+			<DetectSpaces/>+			<IncludeRules context="##Alerts" />+			<IncludeRules context="##Modelines" />+			<DetectIdentifier/>+		</context>+		<!-- Quoted keys and Strings -->+		<context attribute="Key" lineEndContext="#pop" name="QuotedKey">+			<LineContinue attribute="Escape" context="#stay"/>+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />+			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />+			<RegExpr attribute="Error" String="\\." context="#stay" />+			<DetectChar attribute="Key" context="#pop" char="&quot;"/>+		</context>+		<context attribute="String" lineEndContext="#pop" name="String">+			<LineContinue attribute="Escape" context="#stay"/>+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />+			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />+			<RegExpr attribute="Error" String="\\." context="#stay" />+			<DetectChar attribute="String" context="#pop" char="&quot;"/>+		</context>+		<context attribute="String" lineEndContext="#stay" name="MultilineString">+			<LineContinue attribute="Escape" context="#stay"/>+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />+			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />+			<RegExpr attribute="Error" String="\\." context="#stay" />+			<StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>+		</context>+		<context attribute="LitString" lineEndContext="#pop" name="LitString">+			<DetectChar attribute="String" context="#pop" char="'"/>+		</context>+		<context attribute="LitString" lineEndContext="#stay" name="LitMultilineString">+			<StringDetect attribute="String" context="#pop" String="'''"/>+		</context>+		<!-- Arrays -->+		<context attribute="Array" lineEndContext="#stay" name="Array">+			<IncludeRules context="Value" />+			<DetectChar context="#pop" attribute="Array" char="]" />+			<DetectChar context="#stay" attribute="NextEntry" char="," />+		</context>+		<context attribute="InlineTable" lineEndContext="#stay" name="InlineTable">+			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+"/>+			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>+			<DetectChar attribute="Assignment" context="Value" char="="/>+			<DetectChar char="#" attribute="Comment" context="Comment"/>+			<DetectChar context="#pop" attribute="InlineTable" char="}" />+			<DetectChar context="#stay" attribute="NextEntry" char="," />+		</context>+	</contexts>+	<itemDatas>+		<itemData name="Normal Text" defStyleNum="dsNormal"/>+		<itemData name="Key"         defStyleNum="dsDataType"/>+		<itemData name="TableHeader" defStyleNum="dsKeyword"/>+		<itemData name="Assignment"  defStyleNum="dsOperator"/>+		<itemData name="Comment"     defStyleNum="dsComment"/>+		+		<itemData name="Date"        defStyleNum="dsBaseN"/>+		<itemData name="Float"       defStyleNum="dsFloat"/>+		<itemData name="Int"         defStyleNum="dsDecVal"/>+		<itemData name="Bool"        defStyleNum="dsConstant"/>+		<itemData name="String"      defStyleNum="dsString"/>+		<itemData name="LitString"   defStyleNum="dsVerbatimString"/>+		<itemData name="Escape"      defStyleNum="dsSpecialChar"/>+		<itemData name="Array"       defStyleNum="dsOperator"/>+		<itemData name="InlineTable" defStyleNum="dsOperator"/>+		<itemData name="NextEntry"   defStyleNum="dsOperator"/>+		+		<itemData name="Whitespace"  defStyleNum="dsNormal"/>+		<itemData name="Error"       defStyleNum="dsError"/>+	</itemDatas>+</highlighting>+<general>+	<comments>+		<comment name="singleLine" start="#" position="afterwhitespace" />+	</comments>+</general>+</language>+<!-- kate: replace-tabs off; -->
syntax/typescript.xml view
@@ -1,14 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-	<!ENTITY identifier   "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">-	<!ENTITY numSuffix    "(?=n?(?:[^\w]|$))">-	<!ENTITY objectOp     "[\?!]?">-	<!ENTITY objectPoint  "\s*&objectOp;\.">-	<!ENTITY endLine      "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">-	<!ENTITY utilityTypes "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)">+	<!ENTITY identifier     "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">+	<!ENTITY numSuffix      "(?=n?(?:[^\w]|$))">+	<!ENTITY objectOp       "[\?!]?">+	<!ENTITY objectPoint    "\s*&objectOp;\.">+	<!ENTITY endLine        "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">+	<!ENTITY parameter      "&identifier;(?=\s*&objectOp;:)">++	<!ENTITY utilityTypes   "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)"> 	<!-- function<...>( or function( --> 	<!ENTITY functionSuffix "(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()">++	<!ENTITY codeContent    "&quot;(?:[^&quot;]|\\.)*&quot;|'(?:[^']|\\.)*'|`(?:[^`]|\\.)`|/\*.*\*/|/(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/"> ]>  <!--@@ -16,7 +20,7 @@        This file is part of the KDE's KSyntaxHighlighting framework. -      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)+      Copyright 2018-2020 Nibaldo González S. (nibgonz@gmail.com)        This Source Code Form is subject to the terms of the MIT License.       If a copy of the license was not distributed with this file,@@ -38,6 +42,10 @@       Attributes: path, types, no-default-lib, name      Change log:+     * v11 [2020-06-03]: Improve tagged template literals.+     * v10 [2020-04-13]: Add the 'awaited' type operator.+     * v9 [2020-02-23]: Add private-named instance fields and type-only imports/exports.+                        Improve conditional expressions.      * v8 [2019-12-12]: Add "bigint" primitive type.      * v7 [2019-11-20]: Move keywords of built-in object to "javascript.xml" and adapt.      * v6 [2019-10-01]: Add "asserts" keyword in type predicates.@@ -53,7 +61,7 @@ -->  <language name="TypeScript"-          version="8"+          version="11"           kateversion="5.53"           section="Scripts"           extensions="*.ts"@@ -72,13 +80,13 @@ 	</list> 	<list name="keywords"> 		<include>keywords##JavaScript</include>-		<item>declare</item> <!-- storage.modifier.ts --> 	</list> 	<list name="reserved"> 		<include>reserved##JavaScript</include> 		<item>type</item> 		<item>arguments</item> 		<!-- Class -->+		<item>declare</item> <!-- storage modifier --> 		<item>readonly</item> 		<item>abstract</item> 		<item>constructor</item>@@ -106,7 +114,8 @@ 	<list name="types_operator_expression"> 		<item>keyof</item> 		<item>infer</item>-		<!-- Also: is, typeof -->+		<item>awaited</item>+		<!-- Also: typeof, readonly --> 	</list> 	<!-- Datatypes & Primitive Types --> 	<list name="types">@@ -221,6 +230,18 @@ 		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop!Normal" />  		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">+			<IncludeRules context="Normal Pt1" />++			<!-- NOTE & TODO: The identifiers before ":" are highlighted as "dsNormal".+			     These identifiers should be highlighted in a different way depending on the+			     context, for example, in the declaration of classes or interfaces, in sets, the+			     parameters of a function, or after the keywords: "const", "var", "let" & "enum". -->+			<RegExpr context="#stay" attribute="Parameter" String="&parameter;" />++			<IncludeRules context="Normal Pt2" />+		</context>++		<context name="Normal Pt1" attribute="Normal Text" lineEndContext="#stay"> 			<StringDetect context="#stay" attribute="Symbol" String="..." /> 			<IncludeRules context="FindNumbers" /> 			<IncludeRules context="FindStrings" />@@ -235,13 +256,8 @@ 			<!-- Keywords: control flow --> 			<keyword context="#stay" attribute="ControlFlow" String="controlflow" /> 			<RegExpr context="#stay" attribute="ControlFlow" String="\bdefault(?=\s*&objectOp;:)" />--			<!-- NOTE & TODO: The identifiers before ":" are highlighted as "dsNormal".-			     These identifiers should be highlighted in a different way depending on the-			     context, for example, in the declaration of classes or interfaces, in sets, the-			     parameters of a function, or after the keywords: "const", "var", "let" & "enum". -->-			<RegExpr context="#stay" attribute="Parameter" String="&identifier;(?=\s*&objectOp;:)" />-+		</context>+		<context name="Normal Pt2" attribute="Normal Text" lineEndContext="#stay"> 			<!-- Keywords --> 			<WordDetect context="TypeDeclaration" attribute="Reserved" String="type" /> 			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />@@ -260,6 +276,7 @@ 			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" /> 			<!-- Import --> 			<WordDetect context="Import" attribute="Module" String="import" />+			<RegExpr context="#stay" attribute="Module" String="\bexport\s+type\b" /> 			<!-- Export types --> 			<keyword context="ControlExport" attribute="Module" String="control_export_types" /> 			<!-- Keywords -->@@ -269,15 +286,27 @@  			<!-- Functions: function(...) and function<...>(...) --> 			<RegExpr context="Function" attribute="Function Name" String="(&identifier;)&functionSuffix;" lookAhead="true" />+			<!-- Tagged Template Literals -->+			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*`)" />  			<!-- Symbols & Operators -->-			<!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->+			<!-- NOTE: - The brackets {}()[] are highlighted as Normal Text.+			           - Bracket highlighting rules must be explicitly included here+			             for the "Animate Bracket Highlighting" feature to work properly. --> 			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" /> 			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" /> 			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />-			<!-- NOTE: Avoid highlighting identifier?: string, -->-			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=.*&identifier;\s*\:)" />+			<DetectChar context="#stay" attribute="Normal Text" char="(" />+			<DetectChar context="NoRegExp" attribute="Normal Text" char=")" /> +			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="?" /> <!-- Null operator -->+			<!-- Conditional Expressions:+			       CASE 1:  '?' ... <identifier> ':'+			       CASE 2:  '?' ... ( '||' | '&&' ) <end-line>+			       CASE 3:  '?' (<identifier>)? <end-line>+			-->+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=\s*(?:(?:[^/&quot;'`\s\?:\.;,\=\}\]\)]|&codeContent;)(?:[^/&quot;'`]|&codeContent;)*)?&identifier;\s*(?:/\*.*\*/\s*)*:|(?:&amp;&amp;|\|\||\s*(?:/\*.*\*/\s*)*&identifier;)?&endLine;)" minimal="true" />+ 			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" --> 			<DetectChar context="Types" attribute="Symbol" char=":" /> 			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />@@ -285,35 +314,44 @@ 			<IncludeRules context="JSBase##JavaScript" /> 		</context> +		<!-- Conditional Expressions: a ? b : c --> 		<!-- Highlight keywords before ":" in conditional expressions. -->-		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#stay">+			<!-- NOTE: Don't start the "Types" context. See the context "Default Types". --> 			<DetectChar context="#pop" attribute="Symbol" char=":" />+			<IncludeRules context="ConditionalExpressionEnd" /> 			<DetectChar context="#stay" attribute="Symbol" char="?" /> -			<!-- Keywords -->-			<WordDetect context="#stay" attribute="Reserved" String="type" />-			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />-			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->-			<keyword context="#stay" attribute="Reserved" String="reserved" />-			<!-- Utility Types -->-			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />-			<!-- Built-in Classes -->-			<IncludeRules context="BuiltInClasses" />-			<IncludeRules context="BuiltInConstants" />-			<!-- Import -->-			<WordDetect context="#stay" attribute="Module" String="import" />-			<!-- Export types -->-			<keyword context="#stay" attribute="Module" String="control_export_types" />-			<!-- Keywords -->-			<keyword context="#stay" attribute="Module" String="module" />-			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />-			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />--			<!-- NOTE: The identifiers before ":" should be highlighted as "Normal Text".-			     However, currently, the "Parameter" attribute is equivalent to "Normal Text". -->-			<!-- <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*&objectOp;:)" /> -->+			<IncludeRules context="FindConditionalExpressionBrackets" />+			<IncludeRules context="Normal-ParametersOverridden" />+		</context>+		<context name="Normal-ParametersOverridden" attribute="Normal Text" lineEndContext="#stay">+			<IncludeRules context="Normal Pt1" />+			<IncludeRules context="Normal Pt2" />+			<RegExpr context="#stay" attribute="Parameter" String="&parameter;" />+		</context>+		<context name="ConditionalExpressionEnd" attribute="Normal Text" lineEndContext="#stay">+			<AnyChar context="#pop" String=";,}])" lookAhead="true" />+			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" />+			<!-- For TypeScript code embedded in HTML and Markdown -->+			<StringDetect context="#pop" String="```" lookAhead="true" firstNonSpace="true" />+			<StringDetect context="#pop" String="~~~" lookAhead="true" firstNonSpace="true" />+			<RegExpr context="#pop" String="&lt;/script\s*(?:&gt;|$)" insensitive="true" lookAhead="true" />+		</context>+		<context name="FindConditionalExpressionBrackets" attribute="Normal Text" lineEndContext="#stay">+			<DetectChar context="ConditionalExpressionRoundBracket" attribute="Normal Text" char="(" />+			<DetectChar context="ConditionalExpressionSquareBracket" attribute="Symbol" char="[" beginRegion="List" />+		</context>+		<context name="ConditionalExpressionRoundBracket" attribute="Normal Text" lineEndContext="#stay">+			<DetectChar context="#pop!NoRegExp" attribute="Normal Text" char=")" />+			<IncludeRules context="FindConditionalExpressionBrackets" /> 			<IncludeRules context="Normal" /> 		</context>+		<context name="ConditionalExpressionSquareBracket" attribute="Normal Text" lineEndContext="#stay">+			<DetectChar context="#pop!NoRegExp" attribute="Symbol" char="]" endRegion="List" />+			<IncludeRules context="FindConditionalExpressionBrackets" />+			<IncludeRules context="Normal" />+		</context>  		<!-- Object, within { ... } --> 		<context name="Object" attribute="Normal Text" lineEndContext="#stay">@@ -358,13 +396,13 @@  		<!-- Strings --> 		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">-			<DetectChar context="Template" attribute="Template" char="`" />+			<DetectChar context="Template" attribute="Template" char="`" beginRegion="Template" /> 			<IncludeRules context="FindStrings##JavaScript" /> 		</context> 		<context name="Template" attribute="Template" lineEndContext="#stay"> 			<IncludeRules context="Escape##JavaScript" /> 			<Detect2Chars context="Substitution" attribute="Substitution" char="$" char1="{" />-			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" endRegion="Template" /> 		</context> 		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay"> 			<DetectChar context="#pop" attribute="Substitution" char="}" />@@ -396,11 +434,11 @@  			<IncludeRules context="TypesFindBrackets" /> 			<IncludeRules context="DefaultTypes" />-			<IncludeRules context="Normal" />+			<IncludeRules context="Normal-ParametersOverridden" /> 		</context> 		<!-- NOTE: Context used by "typescript-react.xml" --> 		<context name="TypesEnd" attribute="Normal Text" lineEndContext="#stay">-			<AnyChar context="#pop" String=";,})]" lookAhead="true" />+			<AnyChar context="#pop" String=";,}])" lookAhead="true" /> 			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" /> 			<Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" /> 		</context>@@ -429,8 +467,8 @@ 			     This rule fixes it provisionally. --> 			<RegExpr context="#stay" attribute="Types" String="\b(?:string|number|bigint|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" /> -			<!-- Don't start this context again -->-			<AnyChar context="#stay" attribute="Symbol" String="?:" />+			<!-- Don't start this context again and don't start the "ConditionalExpression" context -->+			<AnyChar context="#stay" attribute="Symbol" String=":?" /> 			<WordDetect context="#stay" attribute="Module" String="as" /> 		</context> 		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">@@ -491,7 +529,10 @@ 		<!-- "import" keyword --> 		<context name="Import" attribute="Normal Text" lineEndContext="#pop"> 			<DetectChar context="#pop!ImportRequireKey" attribute="Symbol" char="=" />-			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> <!-- importmeta_property -->+			<!-- import type ... -->+			<WordDetect context="#stay" attribute="Module" String="type" />+			<!-- importmeta_property -->+			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> 			<!-- Fix context NoRegExp (#pop in new line) --> 			<RegExpr context="#pop" String="." lookAhead="true" firstNonSpace="true" /> 			<AnyChar context="#pop" String="{}()[];," lookAhead="true" />@@ -528,10 +569,13 @@ 			<!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. --> 			<!-- function(...) and function<...>(...) --> 			<RegExpr context="#pop" attribute="Function Name" String="&identifier;&functionSuffix;" />+			<!-- Tagged Template Literals -->+			<RegExpr context="#pop" String="&identifier;\s*`" lookAhead="true" /> 			<!-- Generic constants and properties --> 			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="variable_property" /> 			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" /> +			<RegExpr context="#stay" attribute="Normal Text" String="#(?=&identifier;)" /> <!-- Private-Named Instance Fields --> 			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" /> 			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" /> 			<IncludeRules context="NoRegExp" />
syntax/verilog.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Verilog" version="4" kateversion="2.4" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">+<language name="Verilog" version="5" kateversion="2.4" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">   <highlighting>     <list name="keywords">       <item>macromodule</item>@@ -187,21 +187,27 @@         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">-        <IncludeRules context="##Alerts" />+        <DetectSpaces />         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">         <LineContinue attribute="Preprocessor" context="Some Context"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*"/>+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment"/>       </context>       <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />+        <DetectSpaces />+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+        <IncludeRules context="##Alerts" />       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="Some Context"/> @@ -244,9 +250,10 @@   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="//" />+      <comment name="singleLine" start="//" position="afterwhitespace" />       <comment name="multiLine" start="/*" end="*/" region="Comment"/>     </comments>     <keywords casesensitive="1" />   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/vhdl.xml view
@@ -8,7 +8,7 @@   <!ENTITY label     "((&varname;)\s*:\s*)?">  ]>-<language name="VHDL" version="7" kateversion="3.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">+<language name="VHDL" version="10" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">   <highlighting>     <list name="keywordsToplevel">       <item>file</item>@@ -218,16 +218,16 @@       <context name="start" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/> -        <RegExpr attribute="Control" context="architecture_main" insensitive="true" dynamic="true" lookAhead="true"+        <RegExpr attribute="Control" context="architecture_main" insensitive="true" lookAhead="true"                  String="&bos;architecture\s+(&varname;)&eos;"/>         <StringDetect attribute="Control" context="entity" insensitive="true"                  String="entity"/>-        <RegExpr attribute="Control" context="package" insensitive="true" lookAhead="true" dynamic="true" beginRegion="PackageRegion1"+        <RegExpr attribute="Control" context="package" insensitive="true" lookAhead="true" beginRegion="PackageRegion1"                  String="&bos;package\s+(&varname;)\s+is&eos;"/>-        <RegExpr attribute="Control" context="packagebody" lookAhead="true" insensitive="true" dynamic="true" beginRegion="PackageBodyRegion1"+        <RegExpr attribute="Control" context="packagebody" lookAhead="true" insensitive="true" beginRegion="PackageBodyRegion1"                  String="&bos;package\s+body\s+(&varname;)\s+is&eos;"/>        <!-- <StringDetect  attribute="Control"  context="arch_decl"      String="package"     />temporary-->-        <RegExpr attribute="Control" context="configuration" insensitive="true" dynamic="true" lookAhead="true"+        <RegExpr attribute="Control" context="configuration" insensitive="true" lookAhead="true"                  String="&bos;configuration\s+(&varname;)&eos;"/>         <keyword attribute="Keyword" context="#stay" String="keywordsToplevel"/>       </context>@@ -269,7 +269,7 @@       <context name="packagebodymain" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/>         <RegExpr attribute="Keyword"   context="#pop" lookAhead="true" insensitive="true" String="&bos;end\s+package&eos;" />-        <RegExpr attribute="Keyword"   context="packagebodyfunc1" beginRegion="PackBodyFunc" insensitive="true" dynamic="true" lookAhead="true" String="&bos;function\s+(&varname;)&eos;" />+        <RegExpr attribute="Keyword"   context="packagebodyfunc1" beginRegion="PackBodyFunc" insensitive="true" lookAhead="true" String="&bos;function\s+(&varname;)&eos;" />         <IncludeRules context="generalDetection"/>       </context> @@ -283,7 +283,7 @@        <context name="packagebodyfunc2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"+        <RegExpr attribute="Redirection" context="#pop" insensitive="true" lookAhead="true" endRegion="RegionFunction"                  String="&bos;end(\s+function)?&eos;"/>         <!--<RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"                  String="&bos;end\s+function(\s+&varname;)?&eos;"/>-->@@ -296,11 +296,11 @@ <!--====ARCHITECTURE ===============-->       <context name="architecture_main" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="arch_start" insensitive="true" lookAhead="true" dynamic="true" beginRegion="ArchitectureRegion1"+        <RegExpr attribute="Control" context="arch_start" insensitive="true" lookAhead="true" beginRegion="ArchitectureRegion1"                  String="&bos;architecture\s+(&varname;)\s+of\s+(&varname;)\s+is"/>         <RegExpr attribute="Control" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ArchitectureRegion1"                  String="&bos;end(\s+architecture)?(\s+%2)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ArchitectureRegion1"+        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="ArchitectureRegion1"                  String="&bos;end(\s+architecture)?(\s+&varname;)\s*;"/>         <IncludeRules context="detect_arch_parts"/>       </context>@@ -333,7 +333,7 @@        <context name="archfunc2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"+        <RegExpr attribute="Redirection" context="#pop" insensitive="true" lookAhead="true" endRegion="RegionFunction"                  String="&bos;end(\s+function)?&eos;"/>         <!--<RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"                  String="&bos;end\s+function(\s+&varname;)?&eos;"/>-->@@ -345,11 +345,11 @@  <!-- parts of architecture body -->       <context name="detect_arch_parts" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Normal Text" context="generate1" lookAhead="true" insensitive="true" dynamic="true"+        <RegExpr attribute="Normal Text" context="generate1" lookAhead="true" insensitive="true"                  String="&bos;(&varname;\s*:\s*)(if|for).*\s+generate&eos;"/>-        <RegExpr attribute="Normal Text" context="process1" lookAhead="true" insensitive="true" dynamic="true"+        <RegExpr attribute="Normal Text" context="process1" lookAhead="true" insensitive="true"                  String="&bos;(&varname;\s*:\s*)?process&eos;"/>-        <RegExpr attribute="Normal Text" context="instance" lookAhead="true" insensitive="true" dynamic="true" beginRegion="InstanceRegion1"+        <RegExpr attribute="Normal Text" context="instance" lookAhead="true" insensitive="true" beginRegion="InstanceRegion1"                  String="&bos;(&varname;)\s*:\s*((entity\s+)?(&varname;)(\.&varname;)?)"/>          <IncludeRules context="generalDetection"/>@@ -384,7 +384,7 @@         <IncludeRules context="preDetection"/>         <RegExpr attribute="Process" context="#pop" insensitive="true" dynamic="true" endRegion="RegionProcess"                  String="&bos;end\s+process(\s+%3)?"/>-        <RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" endRegion="RegionProcess"+        <RegExpr attribute="Error" context="#pop" insensitive="true" endRegion="RegionProcess"                  String="&bos;end\s+process(\s+&varname;)?"/>         <RegExpr attribute="Process" context="#stay" insensitive="true" beginRegion="RegionProcess"                  String="&bos;process&eos;"/>@@ -400,7 +400,7 @@                   String="&bos;if&eos;"/>          <RegExpr attribute="Control" context="case1" lookAhead="true" insensitive="true"                   String="&bos;case&eos;"/>-         <RegExpr attribute="Control" context="forwhile1" dynamic="true" lookAhead="true" insensitive="true"+         <RegExpr attribute="Control" context="forwhile1" lookAhead="true" insensitive="true"                   String="&bos;((&varname;)\s*:\s*)?((for|while)\s+.+\s+)loop&eos;"/>          <IncludeRules context="generalDetection"/>       </context>@@ -491,7 +491,7 @@         <IncludeRules context="preDetection"/>         <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="CaseRegion1"                  String="&bos;end\s+case(&varname;)?\s*;"/>-        <RegExpr attribute="Control" context="caseWhen" lookAhead="true" dynamic="true" insensitive="true"+        <RegExpr attribute="Control" context="caseWhen" lookAhead="true" insensitive="true"                  String="&bos;when(\s+&varname;)?&eos;"/>         <IncludeRules context="proc_rules"/>       </context>@@ -532,7 +532,7 @@         <IncludeRules context="preDetection"/>         <RegExpr attribute="Control" context="#pop#pop" dynamic="true" insensitive="true" endRegion="EntityRegion1"                  String="&bos;end(\s+(entity|component))?(\s+%1)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" dynamic="true" insensitive="true" endRegion="EntityRegion1"+        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="EntityRegion1"                  String="&bos;end(\s+(entity|component))?(\s+&varname;)?\s*;"/>         <StringDetect attribute="Control" context="#stay" insensitive="true" String="generic"/>         <StringDetect attribute="Control" context="#stay" insensitive="true" String="port"/>@@ -543,11 +543,11 @@ <!-- configuration environment -->       <context name="configuration" attribute="Normal Text" lineEndContext="#stay" dynamic="true">         <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="conf_start" insensitive="true" lookAhead="true" dynamic="true" beginRegion="ConfigurationRegion1"+        <RegExpr attribute="Control" context="conf_start" insensitive="true" lookAhead="true" beginRegion="ConfigurationRegion1"                  String="&bos;configuration\s+(&varname;)\s+of\s+(&varname;)\s+is"/>         <RegExpr attribute="Control" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ConfigurationRegion1"                  String="&bos;end(\s+configuration)?(\s+%2)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ConfigurationRegion1"+        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="ConfigurationRegion1"                  String="&bos;end(\s+configuration)?(\s+&varname;)\s*;"/>       </context> @@ -599,7 +599,9 @@  <!-- other environments -->       <context name="comment" attribute="Comment" lineEndContext="#pop">+        <DetectSpaces />         <IncludeRules context="##Alerts"/>+        <IncludeRules context="##Modelines"/>       </context>        <context name="string" attribute="Vector" lineEndContext="#stay">@@ -635,22 +637,23 @@       <itemData name="Integer" defStyleNum="dsDecVal"/>       <itemData name="Bit" defStyleNum="dsChar"/>       <itemData name="Reference" defStyleNum="dsFunction"/>-      <itemData name="Error" defStyleNum="dsError" color="#ff0000" bold="1"/>+      <itemData name="Error" defStyleNum="dsError" bold="1"/>       <itemData name="Vector" defStyleNum="dsString"/>       <itemData name="Operator" defStyleNum="dsOthers"/>       <itemData name="Attribute" defStyleNum="dsBaseN"/>       <itemData name="Signal" defStyleNum="dsOthers"/>       <itemData name="Range" defStyleNum="dsOthers"/>-      <itemData name="Redirection" defStyleNum="dsKeyword" color="#223388"/>-      <itemData name="Process" defStyleNum="dsKeyword" color="#0099AA"/>-      <itemData name="Control" defStyleNum="dsKeyword" color="#223388"/>-      <itemData name="Name" defStyleNum="dsKeyword" color="#bb6600" bold="1"/>+      <itemData name="Redirection" defStyleNum="dsAttribute" bold="1"/> <!-- #223388 -->+      <itemData name="Process" defStyleNum="dsSpecialChar" bold="1"/> <!-- #0099AA -->+      <itemData name="Control" defStyleNum="dsControlFlow"/> <!-- #223388 -->+      <itemData name="Name" defStyleNum="dsDecVal" bold="1"/> <!-- #bb6600 -->     </itemDatas>   </highlighting>   <general>     <comments>-      <comment name="singleLine" start="--"/>+      <comment name="singleLine" start="--" position="afterwhitespace"/>     </comments>     <keywords casesensitive="0"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/xml.xml view
@@ -4,9 +4,9 @@ 	<!-- names must start with a letter, ideogram or underscore. \w matches any 		 word character *or* a number, hence the lookahead --> 	<!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]>-<language name="XML" version="9" kateversion="3.4" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">+<language name="XML" version="10" kateversion="3.4" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">  <highlighting> <contexts>@@ -40,8 +40,9 @@   <context name="Comment" attribute="Comment" lineEndContext="#stay">     <DetectSpaces />     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />-    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />+    <RegExpr attribute="Error" context="#stay" String="-(?:\-(?!-&gt;))+" />     <IncludeRules context="##Alerts" />+    <IncludeRules context="##Modelines" />     <DetectIdentifier />   </context> @@ -63,7 +64,7 @@    <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay">     <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />-    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />     <IncludeRules context="FindPEntityRefs" />@@ -88,8 +89,7 @@   <context name="Element" attribute="Other Text" lineEndContext="#stay">     <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element" />     <DetectChar attribute="Element" context="El Content" char="&gt;" />-    <RegExpr attribute="Attribute" context="Attribute" String="^&name;" />-    <RegExpr attribute="Attribute" context="Attribute" String="\s+&name;" />+    <RegExpr attribute="Attribute" context="Attribute" String="(?:^|\s+)&name;" />     <RegExpr attribute="Error" context="#stay" String="\S" />   </context> @@ -143,7 +143,8 @@ </highlighting> <general>   <comments>-    <comment name="multiLine" start="&lt;!--" end="--&gt;" />+    <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />   </comments> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/xorg.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="2" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">+<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="3" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">  <highlighting> <contexts>@@ -36,6 +36,7 @@  <context name="Comment" attribute="Comment" lineEndContext="#pop">   <DetectSpaces />   <IncludeRules context="##Alerts" />+  <IncludeRules context="##Modelines" />   <DetectIdentifier />  </context> </contexts>@@ -63,3 +64,4 @@ </general>  </language>+<!-- kate: replace-tabs on; tab-width 1; indent-width 1; -->
syntax/xslt.xml view
@@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-	<!ENTITY qname    "[A-Za-z_:][\w.:_-]*">-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">-	<!ENTITY axisname  "ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self">+  <!ENTITY qname    "[A-Za-z_:][\w.:_-]*">+  <!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">+  <!ENTITY axisname  "ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self"> ]>  <!--@@ -52,7 +52,7 @@  --> -<language version="4" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">+<language version="6" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">   <highlighting>     <list name="keytags">       <item>xsl:value-of</item>@@ -362,7 +362,8 @@        <context name="comment" attribute="Comment" lineEndContext="#stay">          <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />          <RegExpr attribute="Invalid" context="#stay" String="-(-(?!-&gt;))+" />-         <RegExpr attribute="Alert" context="#stay" String="(FIXME|TODO|HACK)" />+         <IncludeRules context="##Alerts" />+         <IncludeRules context="##Modelines" />        </context>         <context name="xpath" attribute="XPath" lineEndContext="#stay">@@ -406,35 +407,35 @@     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal"/>-      <itemData name="Tag" defStyleNum="dsKeyword"/>-      <itemData name="Attribute" defStyleNum="dsOthers"/>+      <itemData name="Tag" defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>       <itemData name="Value" defStyleNum="dsAttribute"/>-      <itemData name="Invalid" defStyleNum="dsError"/>-      <itemData name="Alert" defStyleNum="dsAlert"/>-      <itemData name="Attribute Value" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>-      <itemData name="XPath" defStyleNum="dsOthers" color="#008080" selColor="#ffffff" bold="0" italic="0"/>-      <itemData name="XPath String" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>-      <itemData name="XPath Axis" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="0" italic="1"/>-      <itemData name="XPath/ XSLT Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>-      <itemData name="XPath 2.0/ XSLT 2.0 Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>-      <itemData name="XPath Attribute" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />-      <itemData name="Variable" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />+      <itemData name="Invalid" defStyleNum="dsError" spellChecking="false"/>+      <itemData name="Attribute Value" defStyleNum="dsString"/>+      <itemData name="XPath" defStyleNum="dsVariable" bold="0" italic="0"/>+      <itemData name="XPath String" defStyleNum="dsString"/>+      <itemData name="XPath Axis" defStyleNum="dsVariable" bold="0" italic="1"/>+      <itemData name="XPath/ XSLT Function" defStyleNum="dsVariable" bold="1" italic="0" spellChecking="false"/>+      <itemData name="XPath 2.0/ XSLT 2.0 Function" defStyleNum="dsVariable" bold="1" italic="0" spellChecking="false"/>+      <itemData name="XPath Attribute" defStyleNum="dsVariable" bold="0" italic="1" spellChecking="false"/>+      <itemData name="Variable" defStyleNum="dsVariable" bold="0" italic="1" spellChecking="false"/>       <itemData name="Comment" defStyleNum="dsComment"/>-      <itemData name="XSLT Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />-      <itemData name="XSLT 2.0 Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />-      <itemData name="Entity Reference" defStyleNum="dsDecVal" />+      <itemData name="XSLT Tag" defStyleNum="dsBuiltIn" bold="1" spellChecking="false"/>+      <itemData name="XSLT 2.0 Tag" defStyleNum="dsBuiltIn" bold="1" spellChecking="false"/>+      <itemData name="Entity Reference" defStyleNum="dsDecVal" spellChecking="false"/> -      <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />-      <itemData name="Processing Instruction" defStyleNum="dsKeyword" />-      <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />-      <itemData name="PEntity Reference" defStyleNum="dsDecVal" />+      <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false"/>+      <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false"/>+      <itemData name="PEntity Reference" defStyleNum="dsDecVal" spellChecking="false"/>      </itemDatas>   </highlighting>   <general>     <comments>-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />     </comments>     <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator="&quot;{}"/>   </general> </language>+<!-- kate: space-indent on; replace-tabs on; tab-width 2; indent-width 2; -->
syntax/xul.xml view
@@ -4,7 +4,7 @@ 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*"> 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]>-<language name="XUL" version="5" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">+<language name="XUL" version="7" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">  <highlighting>    <list name="keywords">@@ -426,6 +426,7 @@     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />     <IncludeRules context="##Alerts" />+    <IncludeRules context="##Modelines" />     <DetectIdentifier />   </context> @@ -519,8 +520,8 @@      <DetectChar attribute="String" context="String" char="&quot;"/>      <DetectChar attribute="String" context="String 1" char="'"/>      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/"/>-     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment"/>-     <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="[=?:]" />+     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment"/>+     <AnyChar attribute="Normal Text" context="(Internal regex catch)" String="=?:" />      <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />      <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />      <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />@@ -544,8 +545,9 @@      <DetectIdentifier />   </context>   <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">+     <DetectSpaces />+     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="JSBlockComment"/>      <IncludeRules context="##Alerts" />-     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>   </context>      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">@@ -562,7 +564,7 @@      <RegExpr attribute="Normal Text" context="#stay" String="\s*" />      <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/" />-     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" />+     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment" />      <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />   </context>   <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">@@ -615,10 +617,9 @@ </highlighting> <general>   <comments>-    <comment name="multiLine" start="&lt;!--" end="--&gt;" />-    <comment name="singleLine" start="//" />-    <comment name="multiLine" start="/*" end="*/" />+    <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />   </comments>   <keywords casesensitive="1" /> </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/yacc.xml view
@@ -12,12 +12,12 @@ == UPDATE HISTORY == 2018-02-20 // Nibaldo González <nibgonz@gmail.com> -  Fix '$' symbol, highlighted as 'dsError' by C++ (isocpp.xml). +  Fix '$' symbol, highlighted as 'dsError' by C++ (isocpp.xml).   Update syntax for Bison (3.0.4):    - Add declarations, directives in rules and the '@' variable.-   - Allow a tag in '%union', declarations in multiple lines and +   - Allow a tag in '%union', declarations in multiple lines and      grammar declarations in the grammar rules section.-   - The ';' char is not necessary to finish a rule. Allow '; |' +   - The ';' char is not necessary to finish a rule. Allow '; |'      within rules.   Add mimetypes and extensions '*.ypp' & '*.y++'. @@ -32,7 +32,7 @@  ======================================================================== -->-<language name="Yacc/Bison" version="5" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">+<language name="Yacc/Bison" version="7" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">  <highlighting> <contexts>@@ -62,7 +62,7 @@     <WordDetect attribute="Directive" context="Percent Command In" String="%&lt;flag&gt;" />     <!-- Any word followed by '%' (End with ';' or '%') -->     <DetectChar attribute="Directive" context="Percent Command" char="%" />-  </context>  +  </context>   <context name="Grammar Declarations" attribute="Normal Text" lineEndContext="#stay">     <WordDetect attribute="Directive" context="Union Start" String="%union" />     <WordDetect attribute="Directive" context="Union Start" String="%code" />@@ -74,7 +74,7 @@     <IncludeRules context="Comment" />     <DetectSpaces />     <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" />-    <RegExpr attribute="Normal Text" context="#pop!Union Tag" String="[^\s\{](?=(\s|$|//))" />+    <RegExpr attribute="Normal Text" context="#pop!Union Tag" String="[^\s\{](?=\s|$|//)" />   </context>   <context name="Union Tag" attribute="Normal Text" lineEndContext="#stay">     <IncludeRules context="Comment" />@@ -141,9 +141,9 @@     <!-- Finish rule without the ';' character (see the 'rhses.1' rule in the 'src/parse-gram.y' file, from the Bison source) -->     <RegExpr attribute="Open Rule" context="#pop" String="[\w\-\.](?=[\w\-\.]*:)" column="0" endRegion="rule" />     <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="%" lookAhead="true" firstNonSpace="true" endRegion="rule" />-    <RegExpr attribute="Directive" context="#pop" String="%(union|code|destructor|printer|start|(no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" />+    <RegExpr attribute="Directive" context="#pop" String="%(?:union|code|destructor|printer|start|(?:no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" />   </context>-  <!-- The Bison parser allows to have ';' followed by '|', without the rule ending. +  <!-- The Bison parser allows to have ';' followed by '|', without the rule ending.        The problem here is that the ';' char has endRegion="rule" (although it is not very relevant). -->   <context name="Rule End" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">     <DetectSpaces />@@ -164,7 +164,7 @@     <WordDetect attribute="Directive" context="Percent Command In" String="%left" />     <WordDetect attribute="Directive" context="Percent Command In" String="%right" />     <WordDetect attribute="Directive" context="Percent Command In" String="%nonassoc" />-    <WordDetect attribute="Directive" context="Percent Command In" String="%precedence" /> +    <WordDetect attribute="Directive" context="Percent Command In" String="%precedence" />      <DetectChar attribute="Rule" context="#pop" char="%" /> <!-- End when there is an invalid declaration -->     <DetectChar attribute="Normal Text" context="#pop" char=";" />@@ -195,15 +195,17 @@   </context>    <context name="Comment" attribute="Comment" lineEndContext="#stay">-    <Detect2Chars attribute="Comment" context="CommentStar" char="/" char1="*" />+    <Detect2Chars attribute="Comment" context="CommentStar" char="/" char1="*" beginRegion="comment" />     <Detect2Chars attribute="Comment" context="CommentSlash" char="/" char1="/" />   </context>   <context name="CommentStar" attribute="Comment" lineEndContext="#stay">-    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />+    <DetectSpaces />+    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />     <IncludeRules context="##Alerts" />     <IncludeRules context="##Modelines" />   </context>   <context name="CommentSlash" attribute="Comment" lineEndContext="#pop">+    <DetectSpaces />     <IncludeRules context="##Alerts" />     <IncludeRules context="##Modelines" />   </context>@@ -229,7 +231,7 @@   </context>   <context name="Symbol-Variable" attribute="Normal Text" lineEndContext="#stay">     <DetectChar attribute="Directive" context="Dol" char="$" />-    <RegExpr attribute="Directive" context="#stay" String="@(\$?)(\d+|[A-Za-z_]\w*)?" />+    <RegExpr attribute="Directive" context="#stay" String="@\$?(?:\d+|[A-Za-z_]\w*)?" />   </context>   <context name="Dol" attribute="Normal Text" fallthrough="true" fallthroughContext="DolEnd" lineEndContext="#stay">     <RegExpr attribute="Data Type" context="DolEnd" String="&lt;[^&gt;]+&gt;" />@@ -259,7 +261,7 @@ </highlighting> <general>   <comments>-    <comment name="multiLine" start="/*" end="*/" />+    <comment name="multiLine" start="/*" end="*/" region="comment" />     <comment name="singleLine" start="//" />   </comments> </general>
syntax/yaml.xml view
@@ -1,20 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [-  <!ENTITY null "(null|Null|NULL|~)">-  <!ENTITY bool "(y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">+  <!ENTITY null "(?:null|Null|NULL|~)">+  <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)"> -  <!ENTITY int         "(0|[\-\+]?[1-9][0-9_]*)">-  <!ENTITY intOther    "[\-\+]?0(x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->-  <!ENTITY intBase60   "[\-\+]?[1-9][0-9_]*(:[0-5]?[0-9])+">-  <!ENTITY allInt      "(&intBase60;|&intOther;|&int;)">+  <!ENTITY int         "(?:0|[\-\+]?[1-9][0-9_]*)">+  <!ENTITY intOther    "[\-\+]?0(?:x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->+  <!ENTITY intBase60   "[\-\+]?[1-9][0-9_]*(?:\:[0-5]?[0-9])+">+  <!ENTITY allInt      "(?:&intBase60;|&intOther;|&int;)"> -  <!ENTITY float       "[\-\+]?([0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)([eE][\-\+]?[0-9]+)?">+  <!ENTITY float       "[\-\+]?(?:[0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)(?:[eE][\-\+]?[0-9]+)?">   <!ENTITY floatExp    "[\-\+]?[0-9][0-9_]*[eE][\-\+]?[0-9]+">-  <!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]*">-  <!ENTITY inf         "[\-\+]?\.(inf|Inf|INF)\b">-  <!ENTITY nan         "\.(nan|NaN|NAN)\b">-  <!ENTITY allFloat    "(&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">+  <!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(?:\:[0-5]?[0-9])+\.[0-9_]*">+  <!ENTITY inf         "[\-\+]?\.(?:inf|Inf|INF)\b">+  <!ENTITY nan         "\.(?:nan|NaN|NAN)\b">+  <!ENTITY allFloat    "(?:&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">    <!ENTITY endValue       "(?:\s*$|\s+#)">   <!ENTITY endValueInline "\s*[:,\[\]\{\}]">@@ -37,7 +37,7 @@ <!-- Modifications (YAML 1.2), values & support for literal/folded style:        Nibaldo González S. <nibgonz@gmail.com>        These modifications are under the MIT license. //-->-<language name="YAML" version="6" kateversion="5.0" section="Markup"+<language name="YAML" version="8" kateversion="5.0" section="Markup"           extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"           author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">   <highlighting>@@ -47,7 +47,7 @@         <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>         <DetectChar attribute="Directive" context="directive" char="%" column="0"/> -        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />          <!-- Literal/Folded Style -->         <IncludeRules context="find-literal-block" />@@ -62,10 +62,10 @@         <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />         <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" /> -        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="[^&quot;'#\-\s][^:#]*(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="\-([^\s:#][^:#]*)?(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keyDQ;(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keySQ;(?=:(\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="[^&quot;'#\-\s][^:#]*(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keyDQ;(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keySQ;(?=\:(?:\s|$))"/>         <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>          <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />@@ -75,7 +75,7 @@       </context>        <context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">-        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />         <DetectSpaces />         <RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />         <RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />@@ -89,7 +89,7 @@       </context>        <context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces/>         <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />         <RegExpr attribute="Alias" context="#stay" String="&alias;" />@@ -106,7 +106,7 @@        <!-- Highlight lists, hashes and strings after a data type, reference or alias -->       <context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">-        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />         <DetectSpaces />         <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />         <RegExpr attribute="Alias" context="#stay" String="&alias;" />@@ -119,7 +119,7 @@       </context>        <context attribute="Document Header" lineEndContext="#pop" name="header">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />       </context>       <context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">@@ -134,16 +134,16 @@       </context>        <context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />       </context>        <context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">         <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />       </context>       <context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">         <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />       </context>        <!-- Attribute -->@@ -151,7 +151,7 @@         <DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->       </context>       <context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces/>         <DetectChar attribute="Operator" context="#stay" char="?" />         <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />@@ -168,7 +168,7 @@       </context>        <context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces/>          <DetectChar attribute="Operator" context="#stay" char="?" />@@ -210,21 +210,21 @@       <!-- List -->       <!-- Context "find-values-list" highlights values and then sends to "list-element" -->       <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces />         <DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />       </context>       <context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />          <DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" /> -        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="[^&quot;'#\-,\]\s][^:#,\]]*(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="\-([^\s:#,\]][^:#,\]]*)?(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keyDQ;(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keySQ;(?=:(\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="[^&quot;'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keyDQ;(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keySQ;(?=\:(?:\s|$))"/>         <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />          <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />@@ -239,18 +239,18 @@        <!-- Hash -->       <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces />         <DetectChar attribute="Operator" context="#pop!hash-element" char="?" />       </context>       <context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">-        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />         <DetectSpaces/> -        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="[^\s&quot;'#\-,\}\s][^:#,\}]*(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="\-([^\s:#,\}][^:#,\}]*)?(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keyDQ;(?=:(\s|$))"/>-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keySQ;(?=:(\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="[^\s&quot;'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keyDQ;(?=\:(?:\s|$))"/>+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keySQ;(?=\:(?:\s|$))"/>         <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>          <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />@@ -290,12 +290,12 @@       </context>        <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">-          <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+          <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />           <DetectSpaces attribute="Normal Text" context="#stay"/>       </context>        <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">-          <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />+          <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />           <DetectSpaces attribute="Normal Text" context="#stay"/>           <AnyChar attribute="String" context="#pop#pop#pop"  lookAhead="true" String="}]"/>           <DetectChar attribute="Operator" context="#pop#pop#pop" lookAhead="true" char="," />@@ -314,7 +314,7 @@       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-doubleq">-        <RegExpr attribute="Escaped Character" context="#stay" String="\\([\s0abtnvfre&quot;/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>+        <RegExpr attribute="Escaped Character" context="#stay" String="\\(?:[\s0abtnvfre&quot;/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-singleq">@@ -322,6 +322,7 @@       </context>        <context attribute="Comment" lineEndContext="#pop" name="comment">+        <DetectSpaces />         <IncludeRules context="##Alerts" />         <IncludeRules context="##Modelines" />       </context>@@ -347,10 +348,10 @@       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="values-list">-        <RegExpr attribute="Null" context="#stay" String="(\s|^)&null;(?=&endValueInline;|&endValue;)"/>-        <RegExpr attribute="Boolean" context="#stay" String="(\s|^)&bool;(?=&endValueInline;|&endValue;)"/>-        <RegExpr attribute="Float" context="#stay" String="(\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>-        <RegExpr attribute="Integer" context="#stay" String="(\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>+        <RegExpr attribute="Null" context="#stay" String="(?:\s|^)&null;(?=&endValueInline;|&endValue;)"/>+        <RegExpr attribute="Boolean" context="#stay" String="(?:\s|^)&bool;(?=&endValueInline;|&endValue;)"/>+        <RegExpr attribute="Float" context="#stay" String="(?:\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>+        <RegExpr attribute="Integer" context="#stay" String="(?:\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>       </context>       <!-- If the value is found immediately at the beginning of the list item -->       <context attribute="Normal Text" lineEndContext="#pop!list-element" name="find-values-list" fallthrough="true" fallthroughContext="#pop!list-element">@@ -365,7 +366,7 @@       <context attribute="Normal Text" lineEndContext="#stay" name="find-literal-block">         <!-- Do not allow indentation with tabs: -->         <RegExpr attribute="Alert" context="#stay" column="0"-                 String="^&space;*\t+\s*(?=((&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />+                 String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />          <!-- CASE 1: The literal/folded operator is the first character of a line.              The text after a space is considered literal.@@ -421,7 +422,7 @@              >             ^Start the literal text         -->         <RegExpr context="start-literal-block-withdash" lookAhead="true" column="0"-                 String="^&space;*(\?&space;*|\-&space;+){1,6}((&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])((&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?)?&literalOp;&endValue;" />+                 String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?)?&literalOp;&endValue;" />          <!-- CASE 5: Literal/folded operator after a data type or other content.              Ex:@@ -433,7 +434,7 @@              >    ^Start the literal text         -->         <RegExpr context="start-literal-block-other" lookAhead="true" column="0"-                 String="^&space;*(([&amp;\*]|!!)\S+\s+)+&literalOp;&endValue;" />+                 String="^&space;*(?:(?:[&amp;\*]|!!)\S+\s+)+&literalOp;&endValue;" />       </context>        <!-- If the line with the literal operator starts with the "-" or "?" operator.@@ -471,7 +472,7 @@       <context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">         <RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" /> -        <RegExpr attribute="Error" context="#pop#pop" String="([&amp;\*]|!!)\S*&literalOp;(?=&endValue;)" />+        <RegExpr attribute="Error" context="#pop#pop" String="(?:[&amp;\*]|!!)\S*&literalOp;(?=&endValue;)" />         <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />         <RegExpr attribute="Alias" context="#stay" String="&alias;" />         <RegExpr attribute="Reference" context="#stay" String="&reference;" />@@ -490,7 +491,7 @@         <DetectChar attribute="Operator" context="#stay" char="?" />       </context>       <context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">-        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />+        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />       </context>        <!-- Common rules for the content of the literal blocks -->@@ -515,7 +516,7 @@         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />          <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />-        <RegExpr attribute="Comment" context="comment" String="(^|\s)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />         <RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />       </context>       <!-- If the literal operator is the first character of a line (or after header) -->@@ -523,7 +524,7 @@         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^\s.*$" column="0" />          <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />-        <RegExpr attribute="Comment" context="comment" String="(^|\s)#" />+        <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />       </context>       <!-- If there is a data type or other content before the liretal operator (use block indentation) -->       <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">@@ -633,3 +634,4 @@     <keywords casesensitive="1"/>   </general> </language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
syntax/zsh.xml view
@@ -8,7 +8,7 @@         <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name --> ]>-<language name="Zsh" version="3" kateversion="2.4" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">+<language name="Zsh" version="5" kateversion="2.4" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">  <!-- (c) 2011 by Jonathan Kolberg (bulldog98@kubuntu-de.org)   modified for zsh -->@@ -534,7 +534,9 @@         <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="Comment">+        <DetectSpaces />         <IncludeRules context="##Alerts" />+        <IncludeRules context="##Modelines" />       </context>        <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->@@ -600,7 +602,8 @@         <!-- handle here document -->         <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />         <!-- handle process subst -->-        <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="(" />+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="(" />         <!-- handle redirection -->         <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />         <!-- handle &, &&, | and || -->@@ -957,3 +960,4 @@     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/>   </general> </language>+<!-- kate: replace-tabs on; indent-width 2; -->
− test/Cheapskate_QCA.hs
@@ -1,47 +0,0 @@-module Cheapskate_QCA where--import           Cheapskate.Types-import qualified Data.Sequence as Seq ()-import           Network.Mattermost.QuickCheck (genText, genSeq)-import           Test.Tasty.QuickCheck--genBlocks :: Gen Blocks-genBlocks = genSeq genBlock--genBlock :: Gen Block-genBlock = oneof [ Para <$> genInlines-                 , Header <$> arbitrary <*> genInlines-                 , Blockquote <$> genBlocks-                 , List <$> arbitrary <*> genListType <*> listOf (genBlocks)-                 , CodeBlock <$> genCodeAttr <*> genText-                 , HtmlBlock <$> genText-                 , return HRule-                 ]--genInlines :: Gen Inlines-genInlines = genSeq genInline--genInline :: Gen Inline-genInline = oneof [ Str <$> genText-                  , return Space-                  , return SoftBreak-                  , return LineBreak-                  , Emph <$> genInlines-                  , Strong <$> genInlines-                  , Code <$> genText-                  , Link <$> genInlines <*> genText <*> genText-                  , Image <$> genInlines <*> genText <*> genText-                  , Entity <$> genText-                  , RawHtml <$> genText-                  ]--genListType :: Gen ListType-genListType = oneof [ Bullet <$> arbitrary-                      , Numbered <$> genNumWrapper <*> arbitrary-                      ]--genNumWrapper :: Gen NumWrapper-genNumWrapper = elements [ PeriodFollowing, ParenFollowing ]--genCodeAttr :: Gen CodeAttr-genCodeAttr = CodeAttr <$> genText <*> genText
test/Message_QCA.hs view
@@ -3,7 +3,7 @@  module Message_QCA where -import Cheapskate_QCA+import RichText_QCA import Control.Monad (replicateM) import Data.Map hiding (foldr) import Data.Maybe (fromMaybe)@@ -16,7 +16,6 @@  import Matterhorn.Types.Messages import Matterhorn.Types.Posts-import Matterhorn.Types.RichText  genMap :: Ord key => Gen key -> Gen value -> Gen (Map key value) genMap gk gv = let kv = (,) <$> gk <*> gv in fromList <$> listOf kv@@ -32,7 +31,7 @@  genMessage :: Gen Message genMessage = Message-             <$> (fromMarkdownBlocks Nothing <$> genBlocks)+             <$> genBlocks              <*> genText              <*> genUserRef              <*> genTime@@ -60,7 +59,7 @@ genMessage__DeletedPost :: Gen Message__DeletedPost genMessage__DeletedPost = Message__DeletedPost                           <$> (Message-                              <$> (fromMarkdownBlocks Nothing <$> genBlocks)+                              <$> genBlocks                               <*> genText                               <*> genUserRef                               <*> genTime@@ -82,7 +81,7 @@ genMessage__Posted :: Gen Message__Posted genMessage__Posted = Message__Posted                      <$> (Message-                         <$> (fromMarkdownBlocks Nothing <$> genBlocks)+                         <$> genBlocks                          <*> genText                          <*> genUserRef                          <*> genTime
+ test/RichText_QCA.hs view
@@ -0,0 +1,70 @@+module RichText_QCA+  ( genBlocks+  )+where++import qualified Data.Sequence as Seq+import           Network.Mattermost.Types ( PostId(..), Id(..) )+import           Network.Mattermost.QuickCheck (genText, genSeq)+import           Test.Tasty.QuickCheck+import           Matterhorn.Types.RichText++genBlocks :: Gen Blocks+genBlocks = Blocks <$> genSeq genBlock++seqOf :: Gen a -> Gen (Seq.Seq a)+seqOf g = fmap Seq.fromList (listOf g)++genBlock :: Gen Block+genBlock = oneof [ Para <$> genInlines+                 , Header <$> arbitrary <*> genInlines+                 , Blockquote <$> genBlocks+                 , List <$> genListType <*> genListSpacing <*> seqOf genBlocks+                 , CodeBlock <$> genCodeBlockInfo <*> genText+                 , HTMLBlock <$> genText+                 , return HRule+                 ]++genCodeBlockInfo :: Gen CodeBlockInfo+genCodeBlockInfo = CodeBlockInfo <$> genMaybe genText <*> genMaybe genText++genMaybe :: Gen a -> Gen (Maybe a)+genMaybe g =+    oneof [ Just <$> g+          , return Nothing+          ]++genInlines :: Gen Inlines+genInlines = Inlines <$> genSeq genInline++genInline :: Gen Inline+genInline = oneof [ EText <$> genText+                  , return ESpace+                  , return ESoftBreak+                  , return ELineBreak+                  , EEmph <$> genInlines+                  , EStrong <$> genInlines+                  , ECode <$> genInlines+                  , EStrikethrough <$> genInlines+                  , EHyperlink <$> (URL <$> genText) <*> genInlines+                  , EPermalink <$> (TeamURLName <$> genText) <*> genPostId <*> (genMaybe genInlines)+                  , EImage <$> (URL <$> genText) <*> genInlines+                  , ERawHtml <$> genText+                  ]++genPostId :: Gen PostId+genPostId = PI <$> Id <$> genText++genListType :: Gen ListType+genListType = oneof [ BulletList <$> arbitrary+                    , OrderedList <$> arbitrary <*> genEnumTy <*> genDelimTy+                    ]++genListSpacing :: Gen ListSpacing+genListSpacing = elements [ TightList, LooseList ]++genEnumTy :: Gen EnumeratorType+genEnumTy = elements [ Decimal, UpperAlpha, LowerAlpha, UpperRoman, LowerRoman ]++genDelimTy :: Gen DelimiterType+genDelimTy = elements [ Period, OneParen, TwoParens ]
test/test_messages.hs view
@@ -70,7 +70,7 @@           tick (ServerTime (UTCTime d t)) = ServerTime $ UTCTime d $ succ t  makeMsg :: ServerTime -> Maybe MessageId -> Message-makeMsg t mId = Message Seq.empty mempty NoUser t (CP NormalPost) False False Seq.empty NotAReply+makeMsg t mId = Message mempty mempty NoUser t (CP NormalPost) False False Seq.empty NotAReply                         mId Map.empty Nothing False False Nothing  makeMsgs :: [Message] -> Messages