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 +51/−1
- README.md +1/−0
- docs/commands.md +3/−0
- docs/keybindings.md +5/−1
- matterhorn.cabal +15/−9
- src/Matterhorn/App.hs +11/−8
- src/Matterhorn/Command.hs +42/−28
- src/Matterhorn/Constants.hs +16/−2
- src/Matterhorn/Draw.hs +2/−2
- src/Matterhorn/Draw/Autocomplete.hs +2/−2
- src/Matterhorn/Draw/ChannelList.hs +8/−7
- src/Matterhorn/Draw/ChannelListOverlay.hs +1/−1
- src/Matterhorn/Draw/ChannelTopicWindow.hs +7/−6
- src/Matterhorn/Draw/Main.hs +122/−43
- src/Matterhorn/Draw/ManageAttachments.hs +3/−3
- src/Matterhorn/Draw/Messages.hs +246/−28
- src/Matterhorn/Draw/NotifyPrefs.hs +1/−1
- src/Matterhorn/Draw/PostListOverlay.hs +2/−2
- src/Matterhorn/Draw/ReactionEmojiListOverlay.hs +1/−1
- src/Matterhorn/Draw/RichText.hs +98/−450
- src/Matterhorn/Draw/RichText/Flatten.hs +302/−0
- src/Matterhorn/Draw/RichText/Wrap.hs +116/−0
- src/Matterhorn/Draw/ShowHelp.hs +31/−25
- src/Matterhorn/Draw/TabbedWindow.hs +8/−4
- src/Matterhorn/Draw/ThemeListOverlay.hs +1/−1
- src/Matterhorn/Draw/URLList.hs +10/−3
- src/Matterhorn/Draw/UserListOverlay.hs +1/−1
- src/Matterhorn/Draw/Util.hs +2/−3
- src/Matterhorn/Events.hs +30/−190
- src/Matterhorn/Events/ChannelListOverlay.hs +3/−3
- src/Matterhorn/Events/ChannelSelect.hs +3/−3
- src/Matterhorn/Events/ChannelTopicWindow.hs +11/−11
- src/Matterhorn/Events/EditNotifyPrefs.hs +4/−4
- src/Matterhorn/Events/Keybindings.hs +4/−0
- src/Matterhorn/Events/Main.hs +25/−9
- src/Matterhorn/Events/ManageAttachments.hs +19/−18
- src/Matterhorn/Events/ReactionEmojiListOverlay.hs +14/−7
- src/Matterhorn/Events/ShowHelp.hs +1/−1
- src/Matterhorn/Events/ThemeListOverlay.hs +14/−7
- src/Matterhorn/Events/UrlSelect.hs +3/−3
- src/Matterhorn/Events/UserListOverlay.hs +3/−3
- src/Matterhorn/Events/Websocket.hs +236/−0
- src/Matterhorn/LastRunState.hs +16/−11
- src/Matterhorn/Scripts.hs +5/−2
- src/Matterhorn/State/Attachments.hs +8/−5
- src/Matterhorn/State/Autocomplete.hs +36/−32
- src/Matterhorn/State/ChannelList.hs +164/−0
- src/Matterhorn/State/ChannelListOverlay.hs +3/−3
- src/Matterhorn/State/ChannelSelect.hs +8/−6
- src/Matterhorn/State/ChannelTopicWindow.hs +5/−1
- src/Matterhorn/State/Channels.hs +171/−238
- src/Matterhorn/State/Common.hs +19/−12
- src/Matterhorn/State/Editing.hs +78/−72
- src/Matterhorn/State/Flagging.hs +36/−22
- src/Matterhorn/State/Help.hs +1/−1
- src/Matterhorn/State/MessageSelect.hs +23/−20
- src/Matterhorn/State/Messages.hs +115/−95
- src/Matterhorn/State/NotifyPrefs.hs +9/−7
- src/Matterhorn/State/PostListOverlay.hs +24/−21
- src/Matterhorn/State/ReactionEmojiListOverlay.hs +3/−2
- src/Matterhorn/State/Setup.hs +31/−72
- src/Matterhorn/State/Teams.hs +217/−0
- src/Matterhorn/State/ThemeListOverlay.hs +3/−2
- src/Matterhorn/State/UrlSelect.hs +3/−2
- src/Matterhorn/State/UserListOverlay.hs +13/−13
- src/Matterhorn/TeamSelect.hs +0/−90
- src/Matterhorn/Themes.hs +9/−0
- src/Matterhorn/Types.hs +397/−234
- src/Matterhorn/Types/Channels.hs +31/−7
- src/Matterhorn/Types/Common.hs +3/−2
- src/Matterhorn/Types/KeyEvents.hs +16/−0
- src/Matterhorn/Types/Messages.hs +8/−12
- src/Matterhorn/Types/Posts.hs +7/−7
- src/Matterhorn/Types/RichText.hs +308/−316
- src/Matterhorn/Windows/ViewMessage.hs +71/−51
- syntax/abc.xml +7/−3
- syntax/actionscript.xml +18/−12
- syntax/ada.xml +6/−3
- syntax/agda.xml +18/−12
- syntax/apache.xml +3/−1
- syntax/asn1.xml +8/−1
- syntax/asp.xml +70/−57
- syntax/ats.xml +161/−166
- syntax/awk.xml +107/−105
- syntax/bash.xml +35/−9
- syntax/boo.xml +21/−9
- syntax/c.xml +30/−28
- syntax/clojure.xml +10/−9
- syntax/cmake.xml +250/−79
- syntax/coffee.xml +43/−23
- syntax/coldfusion.xml +90/−92
- syntax/commonlisp.xml +14/−6
- syntax/cs.xml +22/−11
- syntax/css.xml +4/−2
- syntax/curry.xml +9/−3
- syntax/d.xml +27/−23
- syntax/diff.xml +36/−25
- syntax/djangotemplate.xml +6/−1
- syntax/dot.xml +7/−2
- syntax/doxygen.xml +269/−127
- syntax/doxygenlua.xml +133/−182
- syntax/dtd.xml +4/−4
- syntax/eiffel.xml +8/−3
- syntax/elixir.xml +5/−1
- syntax/elm.xml +16/−9
- syntax/erlang.xml +3/−2
- syntax/fasm.xml +1746/−893
- syntax/fortran-fixed.xml +592/−0
- syntax/fortran-free.xml +311/−0
- syntax/fsharp.xml +10/−4
- syntax/glsl.xml +11/−12
- syntax/gnuassembler.xml +10/−7
- syntax/go.xml +5/−2
- syntax/graphql.xml +91/−0
- syntax/groovy.xml +3894/−0
- syntax/hamlet.xml +2/−4
- syntax/haskell.xml +14/−9
- syntax/haxe.xml +11/−3
- syntax/html.xml +40/−37
- syntax/idris.xml +99/−92
- syntax/ini.xml +3/−2
- syntax/isocpp.xml +25/−26
- syntax/j.xml +7/−2
- syntax/java.xml +9/−4
- syntax/javascript-react.xml +5/−4
- syntax/javascript.xml +41/−20
- syntax/json.xml +1/−1
- syntax/jsp.xml +47/−40
- syntax/julia.xml +2/−2
- syntax/kotlin.xml +9/−4
- syntax/latex.xml +43/−40
- syntax/lex.xml +7/−3
- syntax/lilypond.xml +7/−1
- syntax/literate-curry.xml +10/−3
- syntax/literate-haskell.xml +10/−3
- syntax/llvm.xml +160/−162
- syntax/lua.xml +59/−13
- syntax/m4.xml +9/−3
- syntax/makefile.xml +23/−6
- syntax/markdown.xml +6/−4
- syntax/mathematica.xml +122/−31
- syntax/matlab.xml +14/−5
- syntax/maxima.xml +5/−9
- syntax/mediawiki.xml +24/−12
- syntax/metafont.xml +6/−4
- syntax/mips.xml +9/−3
- syntax/modelines.xml +3/−9
- syntax/modula-2.xml +10/−4
- syntax/modula-3.xml +246/−242
- syntax/monobasic.xml +6/−2
- syntax/mustache.xml +16/−7
- syntax/nasm.xml +2778/−888
- syntax/nim.xml +356/−0
- syntax/noweb.xml +6/−1
- syntax/objectivec.xml +24/−13
- syntax/objectivecpp.xml +26/−23
- syntax/ocaml.xml +5/−1
- syntax/octave.xml +12/−5
- syntax/opencl.xml +25/−21
- syntax/pascal.xml +13/−13
- syntax/perl.xml +22/−15
- syntax/php.xml +13/−5
- syntax/pike.xml +10/−8
- syntax/postscript.xml +8/−3
- syntax/povray.xml +30/−25
- syntax/powershell.xml +12/−5
- syntax/prolog.xml +4/−1
- syntax/protobuf.xml +7/−2
- syntax/pure.xml +64/−58
- syntax/purebasic.xml +3/−2
- syntax/python.xml +2/−1
- syntax/qml.xml +5/−8
- syntax/r.xml +47/−29
- syntax/relaxng.xml +4/−2
- syntax/relaxngcompact.xml +7/−1
- syntax/rest.xml +3/−1
- syntax/rhtml.xml +119/−106
- syntax/roff.xml +4/−1
- syntax/ruby.xml +22/−19
- syntax/rust.xml +15/−14
- syntax/scala.xml +13/−5
- syntax/scheme.xml +1392/−393
- syntax/sci.xml +8/−3
- syntax/sed.xml +7/−2
- syntax/sgml.xml +7/−4
- syntax/sml.xml +8/−4
- syntax/sql-mysql.xml +13/−5
- syntax/sql-postgresql.xml +16/−8
- syntax/sql.xml +15/−6
- syntax/stata.xml +8/−3
- syntax/tcl.xml +7/−2
- syntax/tcsh.xml +5/−2
- syntax/texinfo.xml +12/−7
- syntax/toml.xml +137/−0
- syntax/typescript.xml +94/−50
- syntax/verilog.xml +12/−5
- syntax/vhdl.xml +28/−25
- syntax/xml.xml +8/−7
- syntax/xorg.xml +3/−1
- syntax/xslt.xml +26/−25
- syntax/xul.xml +9/−8
- syntax/yacc.xml +15/−13
- syntax/yaml.xml +54/−52
- syntax/zsh.xml +6/−2
- test/Cheapskate_QCA.hs +0/−47
- test/Message_QCA.hs +4/−5
- test/RichText_QCA.hs +70/−0
- test/test_messages.hs +1/−1
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=""" />@@ -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=":!%&()+,-/.*<=>?[]|~^;"/>+ <DetectChar attribute="Symbol" context="Member" char="." />+ <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/*<=>?[]|~^;"/> </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="""/> </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 "_;."(){}@">- <!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="(->|→|∀|λ|:|=|\|)&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="(?:\->|→|∀|λ|:|=|\|)&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=""" /> <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=":!+,-<=>%&*/?[]^|~\\" 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="<%" />+ <IncludeRules context="find-aspsource" /> <RegExpr attribute="HTML Tag" context="aspsource" String="<\s*script\s*language="VBScript"[^>]*>" insensitive="true" />- <RegExpr attribute="HTML Tag" context="scripts" String="<\s*script(\s|>)" insensitive="true" />+ <RegExpr attribute="HTML Tag" context="scripts" String="<\s*script(?:\s|>|$)" insensitive="true" /> <RegExpr attribute="HTML Tag" context="htmltag" String="<\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />- <StringDetect attribute="HTML Comment" context="htmlcomment" String="<!--" />+ <StringDetect attribute="HTML Comment" context="htmlcomment" String="<!--" beginRegion="HTMLComment" /> </context> + <context name="find-aspsource" attribute="Normal Text" lineEndContext="#stay">+ <Detect2Chars attribute="ASP Source" context="aspsource" char="<" char1="%" beginRegion="ASPSource" />+ </context> <context name="aspsource" attribute="ASP Text" lineEndContext="#stay">- <StringDetect attribute="Keyword" context="#pop" String="%>" />+ <Detect2Chars attribute="ASP Source" context="#pop" char="%" char1=">" endRegion="ASPSource" /> <RegExpr attribute="HTML Tag" context="#pop" String="<\s*\/\s*script\s*>" insensitive="true" /> <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" /> <DetectChar attribute="String" context="doublequotestring" char=""" />@@ -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="%>" />+ <DetectSpaces />+ <Detect2Chars context="#pop" char="%" char1=">" lookAhead="true" />+ <IncludeRules context="##Alerts" />+ <IncludeRules context="##Modelines" /> </context> <context name="doublequotestring" attribute="String" lineEndContext="#stay">+ <DetectSpaces /> <Detect2Chars attribute="Escape Code" context="#stay" char=""" char1=""" /> <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=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">"/>- <StringDetect attribute="Keyword" context="aspsource" String="<%" />- <StringDetect attribute="Keyword" context="aspsource" String="<%" />- <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="<%" />- <StringDetect attribute="Keyword" context="aspsource" String="<%" />- <StringDetect attribute="HTML Comment" context="#pop" String="-->" />- <RegExpr attribute="Normal Text" context="identifiers" String="\s*=\s*"/>+ <DetectSpaces />+ <IncludeRules context="find-aspsource" />+ <StringDetect attribute="HTML Comment" context="#pop" String="-->" 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=""" /> </context> <context name="types1" attribute="Types" lineEndContext="#stay">- <StringDetect attribute="Keyword" context="aspsource" String="<%" />- <StringDetect attribute="Keyword" context="aspsource" String="<%" />+ <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="<%" />- <StringDetect attribute="Keyword" context="aspsource" String="<%" />+ <IncludeRules context="find-aspsource" /> <DetectChar attribute="Types" context="#pop#pop" char=""" /> </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="<%"/>+ <IncludeRules context="find-aspsource" /> <RegExpr attribute="HTML Tag" context="#pop" String="<\s*\/\s*script\s*>" insensitive="true" /> <DetectChar attribute="String" context="doublequotestring" char=""" />@@ -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="<\s*\/\s*script\s*>" 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'"\\]|\\[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=""" />- <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=">" 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=""" attribute="String" context="String"/>- <DetectChar char="#" attribute="Comment" context="Comment"/>- <AnyChar String="@!%&*+-/:<>?^|" 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=""" attribute="String" context="String"/>+ <DetectChar char="#" attribute="Comment" context="Comment"/>+ <AnyChar String="@!%&*+-/:<>?^|" 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=""" attribute="String" context="#pop"/>- <DetectChar char="\" context="Escape" attribute="Escape"/>-</context>+ <context name="String" attribute="String" lineEndContext="#stay">+ <DetectChar char=""" 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="[<>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="[<>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_@.%*?+-]|\\ )"> <!-- 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="(?<=&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="<" char1="<" lookAhead="true" /> <!-- handle process subst -->- <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char="<" char1="(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char=">" char1="(" /> <!-- handle redirection --> <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" /> <!-- handle &, &&, | and || -->@@ -567,13 +578,27 @@ <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'"]|$))" /> <RegExpr attribute="OtherCommand" context="CommandArgs" String="/&pathpart;*(?=([\s);$`'"]|$))" /> <!-- 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="<" char1="<" lookAhead="true" /> <!-- handle process subst -->- <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char="<" char1="(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char=">" char1="(" /> <!-- handle redirection --> <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" />- <!-- handle &, &&, | and || -->+ <!-- handle &, &&, |, ||, ; and ;; --> <RegExpr attribute="Control" context="#pop" String="([|&;])\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]"""" context="Raw Tripple Q-string"/>+ <StringDetect attribute="Raw String" String="r'''" context="Raw Tripple A-string" insensitive="1"/>+ <StringDetect attribute="Raw String" String="r"""" context="Raw Tripple Q-string" insensitive="1"/> - <RegExpr attribute="Raw String" String="[rR]'" context="Raw A-string"/>- <RegExpr attribute="Raw String" String="[rR]"" 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=""" context="Raw Q-string"/>+ <Detect2Chars attribute="Raw String" char="R" char1=""" 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?"""" 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="[+*/%\|=;\!<>!^&~-]" context="#stay"/>+ <AnyChar attribute="Operator" String="+*/%|=;!<>!^&~-" 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=""""" 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=""" 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][+-]?∫)"> <!ENTITY exp_hexfloat "(?:[pP][-+]?∫)"> @@ -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="""/>- <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=":!%&()+,-/.*<=>?[]|~^;"/> </context> @@ -149,17 +145,32 @@ <DetectChar attribute="String" context="#pop" char="""/> </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="""/>- <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="""/>- <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="\.∫&exp_float;?|∫(?:&exp_float;|\.∫?&exp_float;?)|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))" />+ <RegExpr attribute="Float" context="FloatSuffix" String="\.∫&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|∫(?:&exp_float;|\.∫?&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="'"" /> </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-+\<\>//\*!\?']*\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="\\["$n\\]" />+ <Detect2Chars attribute="Escapes" context="#stay" char="\" char1=""" />+ <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=""" />- <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=""(?=[ );]|$)" />- <RegExpr attribute="Escapes" context="#stay" String="\\["$nrt\\]" />+ <Detect2Chars attribute="Escapes" context="#stay" char="\" char1=""" />+ <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="(\((\'[^']*'|"[^"]*"|[^()])*\))?\s*(-|=)>" insensitive="true"/>+ <RegExpr attribute="Function" context="#stay" String="(?:\((?:\'[^']*'|"[^"]*"|[^()])*\))?\s*(?:\-|=)>" 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"'])"/>+ <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[\\0bfnrtv"'])"/> <!-- 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="<!---" />- <StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="<!--" />- <RegExpr attribute="Script Tags" context="ctxCFSCRIPT Tag" String="<[cC][fF][sS][cC][rR][iI][pP][tT]" />- <RegExpr attribute="Script Tags" context="ctxSCRIPT Tag" String="<[sS][cC][rR][iI][pP][tT]" />- <RegExpr attribute="Style Tags" context="ctxSTYLE Tag" String="<[sS][tT][yY][lL][eE]" />+ <StringDetect attribute="CF Comment" context="ctxCF Comment" String="<!---" beginRegion="CF Comment" />+ <StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="<!--" beginRegion="HTML Comment" />+ <StringDetect attribute="Script Tags" context="ctxCFSCRIPT Tag" String="<cfscript" insensitive="true" beginRegion="CF Script" />+ <StringDetect attribute="Script Tags" context="ctxSCRIPT Tag" String="<script" insensitive="true" beginRegion="Script" />+ <StringDetect attribute="Style Tags" context="ctxSTYLE Tag" String="<style" insensitive="true" beginRegion="Style" /> <DetectChar attribute="HTML Entities" context="ctxHTML Entities" char="&" />- <RegExpr attribute="Custom Tags" context="ctxCustom Tag" String="<\/?[cC][fF]_" />- <RegExpr attribute="CFX Tags" context="ctxCFX Tag" String="<\/?[cC][fF][xX]_" />- <RegExpr attribute="CF Tags" context="ctxCF Tag" String="<\/?[cC][fF]" />- <RegExpr attribute="Table Tags" context="ctxTable Tag" String="<\/?([tT][aAhHbBfFrRdD])|([cC][aA][pP][tT])" />- <RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="<\/?[aA] " />- <RegExpr attribute="Image Tags" context="ctxImage Tag" String="<\/?[iI][mM][gG] " />+ <StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="<cf_" insensitive="true" />+ <StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="</cf_" insensitive="true" />+ <StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="<cfx_" insensitive="true" />+ <StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="</cfx_" insensitive="true" />+ <StringDetect attribute="CF Tags" context="ctxCF Tag" String="<cf" insensitive="true" />+ <StringDetect attribute="CF Tags" context="ctxCF Tag" String="</cf" insensitive="true" />+ <RegExpr attribute="Table Tags" context="ctxTable Tag" String="<\/?(?:[tT][aAhHbBfFrRdD])|(?:[cC][aA][pP][tT])" />+ <RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="<\/?a(?=[>\s]|$)" insensitive="true" />+ <RegExpr attribute="Image Tags" context="ctxImage Tag" String="<\/?img(?=[>\s]|$)" insensitive="true" />+ <StringDetect attribute="Anchor Tags" context="#stay" String="<a/>" insensitive="true" />+ <StringDetect attribute="Image Tags" context="#stay" String="<img/>" insensitive="true" /> <RegExpr attribute="Tags" context="ctxTag" String="<!?\/?[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=""" char1=""" />+ <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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=">" />- <DetectChar attribute="Normal Text" context="#stay" char="=" />- <RegExpr attribute="Attribute Values" context="#stay" String=""[^"]*"" />- <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="<!---" />- <StringDetect attribute="HTML Comment" context="#pop" String="-->" />+ <StringDetect attribute="CF Comment" context="ctxCF Comment" String="<!---" beginRegion="CF Comment" />+ <StringDetect attribute="HTML Comment" context="#pop" String="-->" 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="--->" />+ <StringDetect attribute="CF Comment" context="#pop" String="--->" 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=""[^"]*"" />- <RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />+ <RangeDetect attribute="Script Strings" context="#stay" char=""" char1=""" />+ <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="</[cC][fF][sS][cC][rR][iI][pP][tT]>" />+ <StringDetect attribute="Script Tags" context="#pop#pop" String="</cfscript>" 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=""[^"]*"" />- <RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />+ <RangeDetect attribute="Script Strings" context="#stay" char=""" char1=""" />+ <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="</[sS][cC][rR][iI][pP][tT]>" />+ <StringDetect attribute="Script Tags" context="#pop#pop" String="</script>" 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="</[sS][tT][yY][lL][eE]>" />+ <StringDetect attribute="Style Tags" context="#pop#pop" String="</style>" 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=""[^"]*"" />- <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=""" char1=""" />+ <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="<!--" end="-->" />- <comment name="multiLine" start="/*" end="*/" />- <comment name="singleLine" start="//" />+ <comment name="multiLine" start="<!---" end="--->" 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><</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="""/>+ <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-+\<\>//\*]*\s*" />@@ -1147,6 +1150,10 @@ <HlCStringChar attribute="String Char" context="#stay"/> <DetectChar attribute="String" context="#pop" char="""/> </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="-+*?!<>=/:#\"/> <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="""/>- <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=":!%&()+,-/.*<=>?[]|~^;"/>+ <DetectChar attribute="Symbol" context="Member" char="."/>+ <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/*<=>?[]|~^;"/> </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="+>" column="0"/> <AnyChar attribute="Removed line" context="Removed" String="-<" 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 "&(#[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="-->" endRegion="comment" /> <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" />@@ -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>\&</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>- <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="//(!|(/(?=[^/]|$)))<?" />- <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]<|\*$)" beginRegion="BlockComment" />+ <RegExpr attribute="Comment" context="LineComment" String="//(?:!|(?:/(?=[^/]|$)))<?" />+ <RegExpr attribute="Comment" context="BlockComment" String="/\*(?:\*[^*/]|!|[*!]<|\*$)" 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="<!--" />- <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" />- <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\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="<" lookAhead="true" />+ <DetectChar attribute="Comment" context="Entities" char="&" 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="\\(<|>)" />- <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" />- <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\w0-9._:@]+" />- <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" />+ <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="<" lookAhead="true" />+ <DetectChar attribute="Comment" context="Entities" char="&" 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="<" char1="<" />+ <RegExpr attribute="HTML Tag" context="#pop!ML_htmltag" String="<\/?[-\w0-9._:@]+" />+ <StringDetect attribute="HTML Comment" context="#pop!ML_htmlcomment" String="<!--" />+ <DetectChar attribute="Comment" context="#pop" char="<" />+ </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="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\w0-9._:@]+" />- <RegExpr attribute="Description" context="#stay" String="." />+ <RegExpr attribute="Description" context="#stay" String="[<*]?[^<*\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=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">" />- <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="-->" /> </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=""" /> </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=""" /> </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="<" char1="<" />+ <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="<\/?[-\w0-9._:@]+" />+ <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="<!--" />+ <DetectChar attribute="Comment" context="#pop" char="<" />+ </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="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\w0-9._:@]+" />- <RegExpr attribute="Description" context="#stay" String="." />+ <RegExpr attribute="Description" context="#stay" String="<?[^<\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=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">" />- <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="-->" /> </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=""" /> </context>@@ -411,52 +514,90 @@ <DetectChar attribute="Types" context="#pop#pop" char=""" /> </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="&[A-Za-z]+;" />+ <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="&[A-Za-z]+;" />+ <DetectChar attribute="Comment" context="#pop" char="&" />+ </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="[@\\](?:[#$%&<>"@\\.]|::|---?)(?=&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>\&</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>- <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="<!--" />- <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" />- <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\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="\\(<|>)" />- <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" />- <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\w0-9._:@]+" />- <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" />- </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="<!--" />- <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" />- <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[-\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="<" lookAhead="true" />+ <DetectChar attribute="Comment" context="Entities" char="&" 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=">" />- <DetectChar attribute="HTML Tag" context="#pop" char=">" />- <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="-->" />- </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=""" />- </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=""" />+ <context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">+ <Detect2Chars attribute="Comment" context="#pop" char="<" char1="<" />+ <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="<\/?[-\w0-9._:@]+" />+ <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="<!--" />+ <DetectChar attribute="Comment" context="#pop" char="<" /> </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="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[-\w0-9._:@]+" />- <RegExpr attribute="Description" context="#stay" String="." />+ <RegExpr attribute="Description" context="#stay" String="<?[^<\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=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">" />- <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="-->" /> </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=""" /> </context>@@ -419,59 +332,96 @@ <DetectChar attribute="Types" context="#pop#pop" char=""" /> </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="&[A-Za-z]+;" />+ <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="&[A-Za-z]+;" />+ <DetectChar attribute="Comment" context="#pop" char="&" />+ </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="[@\\](?:[#$%&<>"@\\.]|::|---?)(?=&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="-->" endRegion="comment" /> <IncludeRules context="##Alerts" />+ <IncludeRules context="##Modelines" /> <DetectIdentifier /> </context> @@ -101,10 +102,9 @@ <general> <comments>- <comment name="multiLine" start="<!--" end="-->" />+ <comment name="multiLine" start="<!--" end="-->" 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 = """ 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="(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)" /> <RegExpr attribute="Operator" context="#stay" String="[+-\/*%=><^\|!]" />- <RegExpr attribute="Operator" context="#stay" String="[@\#$&~?]" />+ <AnyChar attribute="Operator" context="#stay" String="@#$&~?" /> <RegExpr attribute="Type" context="#stay" String="\b[A-Z][\w]*" /> @@ -69,10 +69,16 @@ <RegExpr attribute="String" context="multilineString" String="""""/> </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="(?:\\"|[^"])*"" />+ <RegExpr attribute="String" context="#pop" String="(?:(?:\\")?[^"]*)*"" /> </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=""'"/>- <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=""'"/>- </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="(?:(?:\.|@@|%%)(?:\.@)?)?[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=",.+-=/*%~$!?<>()[]{}:|&#`\"/>+ <DetectChar attribute="String" context="SQString" char="'"/>+ <DetectChar attribute="String" context="DQString" char="""/>+ <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=",.+-=/*%~!?<>()[]{}:|&#`"/>+ <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="""/>+ </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="<" char1="="/>+ <Detect2Chars attribute="Operator" context="#stay" char=">" char1="="/>+ <AnyChar attribute="Operator" context="#stay" String="<>"/>+ </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="&+-*/=?[]^{|}~"/>+ <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](?:['][0-9a-f]+[']|["][0-9a-f]+["])" 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="'"/>+ <DetectChar attribute="String" context="string_2" char="""/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="String" context="#pop" String="[^']*'"/>+ <RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>+ <RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="String" context="#pop" String="[^"]*""/>+ <RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>+ <RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">+ <DetectSpaces />+ <RegExpr attribute="Keyword" context="#stay" String="&\s*$"/>+ <DetectChar attribute="Keyword" context="#pop" char="&" 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="'"/>+ <DetectChar attribute="String" context="string_2" char="""/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="String" context="#pop" String="[^']*'"/>+ <RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>+ <RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="String" context="#pop" String="[^"]*""/>+ <RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>+ <RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">+ <DetectSpaces />+ <RegExpr attribute="Keyword" context="#stay" String="&\s*$"/>+ <DetectChar attribute="Keyword" context="#pop" char="&" 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'"\\]|\\[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=".+-/*%<>[]()^|&~=!:;,?;" />+ <DetectChar attribute="Symbol" context="Member" char="." />+ <AnyChar attribute="Symbol" context="#stay" String="+-/*%<>[]()^|&~=!:;,?;" /> </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="!#%&*()+,-<=>?/:[]^{|}~" /> </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="'"" /> </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="""""/>+ <DetectChar attribute="String" context="ctxString" char="""/>+ <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="""/>+ </context>+ <context name="ctxBlockString" attribute="String" lineEndContext="#stay">+ <HlCStringChar attribute="Special Character" context="#stay"/>+ <StringDetect attribute="String" context="#pop" String="""""/>+ </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="'''" context="MultiLineSingleString" beginRegion="MultiLineString"/>+ <StringDetect attribute="String" String=""""" context="MultiLineDoubleString" beginRegion="MultiLineString"/>+ <DetectChar attribute="String" context="SingleString" char="'"/>+ <DetectChar attribute="String" context="String" char="""/>+ <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=":!%&+,-/*<=>?[]|~^;"/>+ </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="""/>+ </context>+ <context attribute="String" lineEndContext="#pop" name="SingleString">+ <DetectChar attribute="String" context="#pop" char="'"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="MultiLineSingleString">+ <StringDetect attribute="String" context="#pop" String="'''" endRegion="MultiLineString"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="MultiLineDoubleString">+ <StringDetect attribute="String" context="#pop" String=""""" 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="""/>+ <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="""/>+ <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="--[\-]*([^!#\$%&\*\+\./<=>\?@\\^\|\-~:]|$)" />+ <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment"/>+ <RegExpr attribute="Comment" context="comment" String="--[\-]*(?=[^!#\$%&\*\+\./<=>\?@\\^\|\-~:]|$)" /> <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=""" /> <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="--([^\-!#\$%&\*\+/<=>\?\@\^\|~\.:].*)?$" />+ <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment" />+ <RegExpr attribute="Comment" context="comment" String="--(?=[^\-!#\$%&\*\+/<=>\?\@\^\|~\.:]|$)" /> </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 "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+ <!ENTITY entref "&(?:#[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="<pre\b" insensitive="true" beginRegion="pre" />- <RegExpr attribute="Element" context="El Open" String="<div\b" insensitive="true" beginRegion="div" />- <RegExpr attribute="Element" context="El Open" String="<table\b" insensitive="true" beginRegion="table" />- <RegExpr attribute="Element" context="El Open" String="<ul\b" insensitive="true" beginRegion="ul" />- <RegExpr attribute="Element" context="El Open" String="<ol\b" insensitive="true" beginRegion="ol" />- <RegExpr attribute="Element" context="El Open" String="<dl\b" insensitive="true" beginRegion="dl" />- <RegExpr attribute="Element" context="El Open" String="<article\b" insensitive="true" beginRegion="article" />- <RegExpr attribute="Element" context="El Open" String="<aside\b" insensitive="true" beginRegion="aside" />- <RegExpr attribute="Element" context="El Open" String="<details\b" insensitive="true" beginRegion="details" />- <RegExpr attribute="Element" context="El Open" String="<figure\b" insensitive="true" beginRegion="figure" />- <RegExpr attribute="Element" context="El Open" String="<footer\b" insensitive="true" beginRegion="footer" />- <RegExpr attribute="Element" context="El Open" String="<header\b" insensitive="true" beginRegion="header" />- <RegExpr attribute="Element" context="El Open" String="<main\b" insensitive="true" beginRegion="main" />- <RegExpr attribute="Element" context="El Open" String="<nav\b" insensitive="true" beginRegion="nav" />- <RegExpr attribute="Element" context="El Open" String="<section\b" insensitive="true" beginRegion="section" />+ <WordDetect attribute="Element" context="El Open" String="<pre" insensitive="true" beginRegion="pre" />+ <WordDetect attribute="Element" context="El Open" String="<div" insensitive="true" beginRegion="div" />+ <WordDetect attribute="Element" context="El Open" String="<table" insensitive="true" beginRegion="table" />+ <WordDetect attribute="Element" context="El Open" String="<ul" insensitive="true" beginRegion="ul" />+ <WordDetect attribute="Element" context="El Open" String="<ol" insensitive="true" beginRegion="ol" />+ <WordDetect attribute="Element" context="El Open" String="<dl" insensitive="true" beginRegion="dl" />+ <WordDetect attribute="Element" context="El Open" String="<article" insensitive="true" beginRegion="article" />+ <WordDetect attribute="Element" context="El Open" String="<aside" insensitive="true" beginRegion="aside" />+ <WordDetect attribute="Element" context="El Open" String="<details" insensitive="true" beginRegion="details" />+ <WordDetect attribute="Element" context="El Open" String="<figure" insensitive="true" beginRegion="figure" />+ <WordDetect attribute="Element" context="El Open" String="<footer" insensitive="true" beginRegion="footer" />+ <WordDetect attribute="Element" context="El Open" String="<header" insensitive="true" beginRegion="header" />+ <WordDetect attribute="Element" context="El Open" String="<main" insensitive="true" beginRegion="main" />+ <WordDetect attribute="Element" context="El Open" String="<nav" insensitive="true" beginRegion="nav" />+ <WordDetect attribute="Element" context="El Open" String="<section" insensitive="true" beginRegion="section" /> <RegExpr attribute="Element" context="El Open" String="<&name;" />- <RegExpr attribute="Element" context="El Close" String="</pre\b" insensitive="true" endRegion="pre" />- <RegExpr attribute="Element" context="El Close" String="</div\b" insensitive="true" endRegion="div" />- <RegExpr attribute="Element" context="El Close" String="</table\b" insensitive="true" endRegion="table" />- <RegExpr attribute="Element" context="El Close" String="</ul\b" insensitive="true" endRegion="ul" />- <RegExpr attribute="Element" context="El Close" String="</ol\b" insensitive="true" endRegion="ol" />- <RegExpr attribute="Element" context="El Close" String="</dl\b" insensitive="true" endRegion="dl" />- <RegExpr attribute="Element" context="El Close" String="</article\b" insensitive="true" endRegion="article" />- <RegExpr attribute="Element" context="El Close" String="</aside\b" insensitive="true" endRegion="aside" />- <RegExpr attribute="Element" context="El Close" String="</details\b" insensitive="true" endRegion="details" />- <RegExpr attribute="Element" context="El Close" String="</figure\b" insensitive="true" endRegion="figure" />- <RegExpr attribute="Element" context="El Close" String="</footer\b" insensitive="true" endRegion="footer" />- <RegExpr attribute="Element" context="El Close" String="</header\b" insensitive="true" endRegion="header" />- <RegExpr attribute="Element" context="El Close" String="</main\b" insensitive="true" endRegion="main" />- <RegExpr attribute="Element" context="El Close" String="</nav\b" insensitive="true" endRegion="nav" />- <RegExpr attribute="Element" context="El Close" String="</section\b" insensitive="true" endRegion="section" />+ <WordDetect attribute="Element" context="El Close" String="</pre" insensitive="true" endRegion="pre" />+ <WordDetect attribute="Element" context="El Close" String="</div" insensitive="true" endRegion="div" />+ <WordDetect attribute="Element" context="El Close" String="</table" insensitive="true" endRegion="table" />+ <WordDetect attribute="Element" context="El Close" String="</ul" insensitive="true" endRegion="ul" />+ <WordDetect attribute="Element" context="El Close" String="</ol" insensitive="true" endRegion="ol" />+ <WordDetect attribute="Element" context="El Close" String="</dl" insensitive="true" endRegion="dl" />+ <WordDetect attribute="Element" context="El Close" String="</article" insensitive="true" endRegion="article" />+ <WordDetect attribute="Element" context="El Close" String="</aside" insensitive="true" endRegion="aside" />+ <WordDetect attribute="Element" context="El Close" String="</details" insensitive="true" endRegion="details" />+ <WordDetect attribute="Element" context="El Close" String="</figure" insensitive="true" endRegion="figure" />+ <WordDetect attribute="Element" context="El Close" String="</footer" insensitive="true" endRegion="footer" />+ <WordDetect attribute="Element" context="El Close" String="</header" insensitive="true" endRegion="header" />+ <WordDetect attribute="Element" context="El Close" String="</main" insensitive="true" endRegion="main" />+ <WordDetect attribute="Element" context="El Close" String="</nav" insensitive="true" endRegion="nav" />+ <WordDetect attribute="Element" context="El Close" String="</section" insensitive="true" endRegion="section" /> <RegExpr attribute="Element" context="El Close" String="</&name;" /> </context> @@ -85,16 +85,17 @@ </context> <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">- <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+ <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> </context> <context name="Comment" attribute="Comment" lineEndContext="#stay"> <DetectSpaces/>+ <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> <IncludeRules context="##Alerts" />+ <IncludeRules context="##Modelines" /> <DetectIdentifier/>- <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" />- <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" />+ <RegExpr attribute="Error" context="#stay" String="-(?:-(?!->))+" /> </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=">" /> <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="</script\b" insensitive="true" endRegion="script" />+ <DetectSpaces /> <IncludeRules context="##Alerts" /> </context> @@ -310,7 +312,8 @@ </highlighting> <general> <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/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="---*[^!#\$%&\*\+/<=>\?\@\^\|~\.:]?" />+ String="---*(?=[^!#\$%&\*\+/<=>\?\@\^\|~\.:]|$)" /> <RegExpr attribute="Comment" context="line comment"- String="\|\|\|[^\-!#\$%&\*\+/<=>\?\@\^\|~\.:]?" />- <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />+ String="\|\|\|(?=[^\-!#\$%&\*\+/<=>\?\@\^\|~\.:]|$)" />+ <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_]*'*|\([\-!#\$%&\*\+\./<=>\?@\\^\|~:]+\))\s*:" /> <keyword attribute="Keyword" context="#stay" String="keywords" />@@ -139,10 +139,17 @@ <RegExpr attribute="String" context="#stay" String="\\." /> <RegExpr attribute="String" context="#pop" String=""" /> </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][+-]?∫)"> <!ENTITY exp_hexfloat "(?:[pP][-+]?∫)"> @@ -11,7 +11,9 @@ <!ENTITY punctuators ":&ns_punctuators;"> <!-- printf-like format strings conversion specifiers -->- <!ENTITY printf_like "%(?:ll?|[zjtL]|hh?)?[diouxXeEfFgGaAcspn%]">+ <!ENTITY printf_like "%[-+ #0]*(?:[0-9]+|\*)?(?:\.(?:[0-9]+|\*))?(?:(?:hh|ll|[hljzt])?[dioxXun]|[lL]?[fFeEaAgG]|l?[cs]|[p%])">+ <!-- https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification -->+ <!ENTITY format_like "\{\{|\}\}|\{[0-9]*(?::(?:[^{}]?[<>^])?[-+ #0]*(?:[0-9]+|\{[0-9]*\})?(?:\.(?:[0-9]+|\{[0-9]*\}))?L?[sbBcdoxXaAeEfFgGp]?)?\}"> <!ENTITY ispphash "(?:#|%\:|\?\?=)"> <!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="<:<:" /> <!-- 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=""" />- <Detect2Chars attribute="String" context="String32" char="U" char1=""" />+ <Detect2Chars attribute="String" context="String" char="U" char1=""" /> <Detect2Chars attribute="String" context="String16" char="u" char1=""" /> <Detect2Chars attribute="String" context="String16" char="L" char1=""" /> <StringDetect attribute="String" context="String8" String="u8"" />@@ -387,16 +392,16 @@ </context> <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Float" context="FloatSuffix" String="\.∫&exp_float;?|∫(?:&exp_float;|\.∫?&exp_float;?)|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))" />+ <RegExpr attribute="Float" context="FloatSuffix" String="\.∫&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|∫(?:&exp_float;|\.∫?&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'"\\?]|[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'"\\?]|[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[^"]{0,3}|U[^"]{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="[^%\\"]+" />+ <!-- % -> printf format ; {} -> std::format -->+ <RegExpr attribute="String" context="#stay" String="[^%\\"{}]+" /> <DetectChar attribute="String" context="UDLStringSuffix" char=""" /> </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"" 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="<:<:" /> <!-- 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=":!%&+,-/.*<=>?[]|~^;"/>+ <AnyChar attribute="Symbol" context="#stay" String=":!%&+,-/*<=>?[]|~^;"/> </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=""" /> <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="<%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/> <RegExpr String="<\s*jsp:(declaration|expression|scriptlet)\s*>" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/> <RegExpr String="<\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>- <StringDetect String="<%--" attribute="Jsp Comment" context="Jsp Comment"/>- <RegExpr String="<%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>- <StringDetect String="<!--" attribute="Html Comment" context="Html Comment"/>+ <StringDetect String="<%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>+ <RegExpr String="<%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>+ <StringDetect String="<!--" attribute="Html Comment" context="Html Comment" beginRegion="HtmlComment"/> <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/> <RegExpr String="<\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/> <StringDetect String="<?"> ]> -<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 "×"> <!ENTITY envname "[a-zA-Z]+\*?">- <!ENTITY regionmarker "%\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="<<.*>>=" attribute="Normal Text" context="NoWeb" column="0"/>- <RegExpr String="®ionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>- <DetectChar char="%" attribute="Comment" context="Comment"/>+ <IncludeRules context="FindComments"/> <DetectChar char="•" 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="•" attribute="Bullet" context="#stay"/> </context> <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop"> <DetectChar char="•" 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="•" 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="•" 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="•" 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="•" 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="•" 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="•" 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="•" 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="®ionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>- <DetectChar char="%" attribute="Comment" context="Comment"/>+ <IncludeRules context="FindComments"/> <DetectChar char="•" 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="•" 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="®ionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>- <DetectChar char="%" attribute="Comment" context="Comment"/>+ <IncludeRules context="FindComments"/> <DetectChar char="•" 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="%+\s*BEGIN\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" beginRegion="region-marker"/>+ <RegExpr String="%+\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="\begin{spec}"/> </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=">" 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="""/> <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*([({'"]|\[\[|\[=))" />+ <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*([({'"]|\[\[|\[=))" />- <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=":[]().,=~+-*/%&|^><#;" /> </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="<" lookAhead="true" />+ </context>++ <context name="Attribute" attribute="Attribute" lineEndContext="#pop">+ <RegExpr attribute="Attribute" context="#pop" String="<\s*(?:close|const)\s*>" />+ <RegExpr attribute="Error" context="#pop" String="<\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="'""/>+ <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'"#"/> </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="[+*/%\|=\!<>!^&~-]" context="#stay"/>+ <AnyChar attribute="Operators" String="+*/%|=!<>^&~-" 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"" char="""/> <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;[^">\s]+">-<!-- link in normal text -->+<!-- link in normal text.+ Keep in sync with reStructuredText’s (rest) StandaloneHyperlink attribute --> <!ENTITY implicitlink "\b&startlink;[^">\s`\)]*[^\s!"'`\(\)\*,\.:;<>\?~\]\}\\](?=[[: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=""" context="String"/>+ <Detect2Chars attribute="Replace" char="-" char1=">" 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=""(?:[^"\*]|\*+[^"\*\)])*\*?""/>+ </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=""" 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 <al@beshenov.ru>" license="LGPLv2.1+">+<language name="Maxima" version="5" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov <al@beshenov.ru>" 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="<pre>" context="Pre" attribute="HtmlTag" /> <IncludeRules context="FindSyntaxHighlightingHtmlElement" /> <RegExpr String="[<][^>]+[>]" 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="<!--" context="comment" attribute="Comment" />+ <StringDetect String="<!--" 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="[<][^>]+[>]" 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="<!--" 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="<!--" 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="<!--" 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="<!--" 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="-->" 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="<!--" 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="<!--" 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="<!--" name="multiLine" />+ <comment name="multiLine" start="<!--" end="-->" 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="×" 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=""" /> <Float attribute="Float" context="#stay"/>@@ -329,6 +329,11 @@ <RegExpr attribute="Char" context="#stay" String="\\." /> <DetectChar attribute="String" context="#pop" char=""" /> </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> < </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>- <item> , </item>- <item> => </item>- <item> / </item>- <item> >= </item>- <item> [ </item>- <item> ] </item>- <item> . </item>- <item> & </item>+ <item>AND</item>+ <item>DIV</item>+ <item>IN</item>+ <item>MOD</item>+ <item>NOT</item>+ <item>OR</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>+ <item>)</item>+ <item>^</item>+ <item>,</item>+ <item>=></item>+ <item>/</item>+ <item>>=</item>+ <item>[</item>+ <item>]</item>+ <item>.</item>+ <item>&</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=">"/>@@ -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="""/> </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="\{\{~?[#\^][>\*]?\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="{{<" />@@ -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="-->" endRegion="Comment" /> <RegExpr context="#stay" attribute="Error" String="-(?:-(?!->))+" /> <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="</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=""'"/>- <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=""'"/>- </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="(?:(?:\.|@@|%%)(?:\.@)?)?[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=",-+/*%~^=!(){}[]:|&?<>"/>+ <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="""/>+ <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=",-+/*%~^=!(){}[]:|&?<>"/>+ <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="""/>+ </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="\\(?:['"`\\?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=""""" beginRegion="String"/>+ <DetectChar context="string" attribute="String" char=""" beginRegion="String"/>+ <StringDetect context="re-string" attribute="String" String="re"" beginRegion="String"/>+ <Detect2Chars context="raw-string" attribute="String" char="r" char1=""" 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*)?(?:\(|(?:[ ](?![,+\-*/=!^&<>|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))"/>+ <RegExpr context="#stay" attribute="Funcs" String="\b\w+(?=")"/>++ <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="+-*/=!@$%^&<>|?"/>+ <HlCChar context="#stay" attribute="Char"/>+ </context>++ <context name="stringescape" attribute="String" lineEndContext="#stay">+ <RegExpr attribute="String Char" String="\\["abfnrtv]" context="#stay"/>+ </context>++ <context name="string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="stringescape"/>+ <DetectChar context="#pop" attribute="String" char=""" endRegion="String"/>+ </context>+ <context name="tripleq-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect context="#pop" attribute="String" String=""""" endRegion="String"/>+ </context>+ <context name="raw-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <Detect2Chars context="#stay" attribute="String Char" char=""" char1="""/>+ <DetectChar context="#pop" attribute="String" char=""" endRegion="String"/>+ </context>+ <context name="re-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectChar context="#pop" attribute="String" char=""" 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="+-*/=!@$%^&<>"/>+ <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="+-*/=!@$%^&<>"/>+ </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="<!--" end="-->" />+ </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="""/>- <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>- <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>+ <IncludeRules context="FindComments" /> <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/.*<=>?[]|~^;"/>- <RegExpr attribute="Preprocessor" context="Preprocessor" String="^#"/>+ <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" column="0"/> <Detect2Chars attribute="String" context="String" char="@" char1=""" /> </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="""/> </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=""" char1="""/> <RangeDetect attribute="Prep. Lib" context="#stay" char="<" char1=">"/>- <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="""/>- <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>- <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/> + <IncludeRules context="FindComments" />+ <Detect2Chars attribute="String" context="String" char="@" char1=""" /> <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=":!%&()+,-/.*<=>?[]{|}~^;"/> </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="""/> </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=""" char1="""/> <RangeDetect attribute="Prep. Lib" context="#stay" char="<" char1=">"/>- <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="""/>- <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="""/>- <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=""" 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="""/>- <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=":!%&()+,-/.*<=>?[]|~^;"/> </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=""" char1="""/> <RangeDetect attribute="Prep. Lib" context="#stay" char="<" char1=">"/>- <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="""/>- <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="""/>- <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="'"" /> </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+\}|<\w+>|'\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=":=!><" /> <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" />- <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!><]+" /> <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="?>" /> <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=""" char1="""/> <RangeDetect attribute="Preprocessor Lib" context="#stay" char="<" char1=">"/> <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="""/> <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1=""" beginRegion="StringRegion"/>- <IncludeRules context="##Doxygen" /> <DetectChar attribute="Comment" context="Commentar 1" char="#"/> <Detect2Chars attribute="Comment" context="Commentar 2" char="<" 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=":!%&()+,-/.*<=>?[]|~^;"/>+ <DetectChar attribute="Symbol" context="Member" char="." />+ <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/*<=>?[]|~^;"/> </context> <context attribute="String Char" lineEndContext="#stay" name="StringEscape"> <RegExpr attribute="String Char" String="`[`"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=">" 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="""/> <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="""/> </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="""/> </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="(\*|/|<|>|\!=|=|\||&|:|\^|@|\$|~)"/>+ <Detect2Chars attribute="Error" context="#stay" char="!" char1="="/>+ <AnyChar attribute="Error" context="#stay" String="*/<>=|&:^@$~"/> </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="""/> <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="[<]{1,2}\-"/>- <RegExpr attribute="Assign" context="operator_rhs" String="\-[>]{1,2}"/>+ <StringDetect attribute="Assign" context="operator_rhs" String="<<-"/>+ <Detect2Chars attribute="Assign" context="operator_rhs" char="<" char1="-"/>+ <StringDetect attribute="Assign" context="operator_rhs" String="->>"/>+ <Detect2Chars attribute="Assign" context="operator_rhs" char="-" char1=">"/> <RegExpr attribute="Assign" context="operator_rhs" String="=(?!=)"/>- <RegExpr attribute="Operator" context="operator_rhs" String="(\+|\-|\*{1,2}|/|<=?|>=?|={1,2}|\!=?|\|{1,2}|&{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="<" 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="|" char1="|"/>+ <Detect2Chars attribute="Operator" context="operator_rhs" char="&" char1="&"/>+ <StringDetect attribute="Operator" context="operator_rhs" String=":::"/>+ <Detect2Chars attribute="Operator" context="operator_rhs" char=":" char1=":"/>+ <AnyChar attribute="Operator" context="operator_rhs" String="+-*/<>=!|&:^@$~"/>+ <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="-->" endRegion="comment"/> <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+"/> <IncludeRules context="##Alerts"/>+ <IncludeRules context="##Modelines"/> <DetectIdentifier/> </context> </contexts>@@ -112,8 +113,9 @@ </highlighting> <general> <comments>- <comment name="multiLine" start="<!--" end="-->" />+ <comment name="multiLine" start="<!--" end="-->" region="comment" /> </comments> <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator=""{}"/> </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=""" />@@ -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 "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+ <!ENTITY entref "&(?:#[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="<%=?" />- <DetectChar attribute="Keyword" context="rubysourceline" char="%" />+ <IncludeRules context="find-rubysource" />+ <DetectChar attribute="Ruby Source" context="rubysourceline" char="%" /> <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> <StringDetect attribute="CDATA" context="CDATA" String="<![CDATA[" beginRegion="cdata" /> <RegExpr attribute="Doctype" context="Doctype" String="<!DOCTYPE\s+" beginRegion="doctype" /> <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:-]*" beginRegion="pi" />- <RegExpr attribute="Element" context="CSS" String="<style\b" insensitive="true" beginRegion="style" />- <RegExpr attribute="Element" context="JS" String="<script\b" insensitive="true" beginRegion="script" />- <RegExpr attribute="Element" context="El Open" String="<pre\b" insensitive="true" beginRegion="pre" />- <RegExpr attribute="Element" context="El Open" String="<div\b" insensitive="true" beginRegion="div" />- <RegExpr attribute="Element" context="El Open" String="<table\b" insensitive="true" beginRegion="table" />+ <WordDetect attribute="Element" context="CSS" String="<style" insensitive="true" beginRegion="style" />+ <WordDetect attribute="Element" context="JS" String="<script" insensitive="true" beginRegion="script" />+ <WordDetect attribute="Element" context="El Open" String="<pre" insensitive="true" beginRegion="pre" />+ <WordDetect attribute="Element" context="El Open" String="<div" insensitive="true" beginRegion="div" />+ <WordDetect attribute="Element" context="El Open" String="<table" insensitive="true" beginRegion="table" /> <RegExpr attribute="Element" context="El Open" String="<&name;" />- <RegExpr attribute="Element" context="El Close" String="</pre\b" insensitive="true" endRegion="pre" />- <RegExpr attribute="Element" context="El Close" String="</div\b" insensitive="true" endRegion="div" />- <RegExpr attribute="Element" context="El Close" String="</table\b" insensitive="true" endRegion="table" />+ <WordDetect attribute="Element" context="El Close" String="</pre" insensitive="true" endRegion="pre" />+ <WordDetect attribute="Element" context="El Close" String="</div" insensitive="true" endRegion="div" />+ <WordDetect attribute="Element" context="El Close" String="</table" insensitive="true" endRegion="table" /> <RegExpr attribute="Element" context="El Close" String="</&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="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+ <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> </context> <context name="Comment" attribute="Comment" lineEndContext="#stay"> <DetectSpaces/>+ <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> <IncludeRules context="##Alerts" />+ <IncludeRules context="##Modelines" /> <DetectIdentifier/>- <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" /> </context> @@ -414,21 +409,21 @@ </context> <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Value" context="#pop" char=""" /> <IncludeRules context="FindPEntityRefs" /> </context> <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Value" context="#pop" char="'" /> <IncludeRules context="FindPEntityRefs" /> </context> <context name="El Open" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" /> <DetectChar attribute="Element" context="#pop" char=">" />@@ -437,28 +432,28 @@ </context> <context name="El Close" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Element" context="#pop" char=">" /> <RegExpr attribute="Error" context="#stay" String="\S" /> </context> <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Element" context="#pop#pop#pop" char=">" /> <RegExpr attribute="Error" context="#stay" String="\S" /> </context> <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Element" context="#pop#pop#pop#pop" char=">" /> <RegExpr attribute="Error" context="#stay" String="\S" /> </context> <context name="CSS" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="style" /> <DetectChar attribute="Element" context="CSS content" char=">" />@@ -467,14 +462,14 @@ </context> <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> - <RegExpr attribute="Element" context="El Close 2" String="</style\b" insensitive="true" endRegion="style" />+ <WordDetect attribute="Element" context="El Close 2" String="</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="<%=?" />+ <IncludeRules context="find-rubysource" /> <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="script" /> <DetectChar attribute="Element" context="JS content" char=">" />@@ -483,9 +478,9 @@ </context> <context name="JS content" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> - <RegExpr attribute="Element" context="El Close 2" String="</script\b" insensitive="true" endRegion="script" />+ <WordDetect attribute="Element" context="El Close 2" String="</script" insensitive="true" endRegion="script" /> <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*</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="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Value" context="Value DQ" char=""" /> <DetectChar attribute="Value" context="Value SQ" char="'" />@@ -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="<%=?" />+ <IncludeRules context="find-rubysource" /> <IncludeRules context="FindEntityRefs" /> <RegExpr attribute="Value" context="#stay" String="/(?!>)" />@@ -512,14 +507,14 @@ </context> <context name="Value DQ" attribute="Value" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Value" context="#pop#pop" char=""" /> <IncludeRules context="FindEntityRefs" /> </context> <context name="Value SQ" attribute="Value" lineEndContext="#stay">- <RegExpr attribute="Keyword" context="rubysource" String="<%=?" />+ <IncludeRules context="find-rubysource" /> <DetectChar attribute="Value" context="#pop#pop" char="'" /> <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="<" 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="-%>" />+ <Detect2Chars attribute="Ruby Source" context="#pop" char="%" char1=">" />+ <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="-?%>" />- + <!-- __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_*`\!:?'/\\\-\&]" 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>])" 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="-%>" lookAhead="true" />+ <Detect2Chars context="#pop" char="%" char1=">" 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="-?%>" />+ <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="<!--" end="-->" />+ <comment name="multiLine" start="<!--" end="-->" region="comment" /> </comments> <keywords casesensitive="1" weakDeliminator="!?"/> </general> </language>+<!-- kate: replace-tabs off; -->
syntax/roff.xml view
@@ -7,7 +7,7 @@ <!ENTITY argsep1 "([^\\]|\\[% |\^{}'`\-!?@)/,&:~0E_acdeprtu])"> <!ENTITY argsep2 "([^\\0-9]|\\[%:{}'`\-_!@/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'"\\]|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'"\\]|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(#*)"" attribute="String" context="RawString" dynamic="true"/>+ <RegExpr String="b?r(#*)"" attribute="String" context="RawString"/> <!-- Byte Strings --> <Detect2Chars char="b" char1=""" attribute="String" context="ByteString"/> <!-- Strings --> <DetectChar char=""" attribute="String" context="String"/> <!-- Byte -->- <RegExpr String="b'(?=([^'\\]|\\&commonEscape;)')" attribute="Character" context="Character"/>+ <RegExpr String="b'(?=(?:[^'\\]|\\&commonEscape;)')" attribute="Character" context="Character"/> <!-- Character --> <DetectChar char="'" 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="""/> </context>- <context attribute="String" lineEndContext="#stay" name="RawString" dynamic="true">- <RegExpr String=""%1" attribute="String" context="#pop" dynamic="true"/>+ <context attribute="String" lineEndContext="#stay" name="RawString">+ <StringDetect String=""%1" attribute="String" context="#pop" dynamic="true"/> </context> <context attribute="Character" lineEndContext="#pop" name="Character" fallthrough="true" fallthroughContext="#pop"> <RegExpr String="[^'\\](?=')" attribute="Character" context="#stay"/>- <RegExpr String="\\(&unicodeEscape;|&commonEscape;)(?=')" attribute="CharEscape" context="#stay"/>+ <RegExpr String="\\(?:&unicodeEscape;|&commonEscape;)(?=')" attribute="CharEscape" context="#stay"/> <DetectChar attribute="Character" context="#pop" char="'"/>- <RegExpr String="(\\.|[^'\\])[^']*(?='([\d\s!"#$%&'\(\)\*\+,\-\./:;<\=>\?@\[\\\]\^`\{\|\}~[:cntrl:]]|$))" attribute="Error" context="#stay"/>+ <RegExpr String="(?:\\.|[^'\\])[^']*(?='(?:[\d\s!"#$%&'\(\)\*\+,\-\./:;<\=>\?@\[\\\]\^`\{\|\}~[: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=":!%&()+,-/.*<=>?[]|~^;"/>+ <DetectChar attribute="Symbol" context="Member" char="." />+ <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/*<=>?[]|~^;"/> </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><=</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>#\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>=?</item>- <item>char-ci>?</item>- <item>char-ci=?</item>- <item>char-ci<=?</item>- <item>char-downcase</item>- <item>char->integer</item>- <item>char>=?</item>- <item>char>?</item>- <item>char=?</item>- <item>char?</item>- <item>char-lower-case?</item>- <item>char<?c</item>- <item>char<=?</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<?</item>- <item>if</item>- <item>imag-part</item>- <item>inexact->exact</item>- <item>inexact?</item>- <item>input-port?</item>- <item>integer->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->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>=?</item>- <item>string-ci>?</item>- <item>string-ci=?</item>- <item>string-ci<=?</item>- <item>string-ci<?</item>- <item>string-copy</item>- <item>string-fill!</item>- <item>string>=?</item>- <item>string>?</item>- <item>string->list</item>- <item>string->number</item>- <item>string->symbol</item>- <item>string=?</item>- <item>string</item>- <item>string?</item>- <item>string-length</item>- <item>string<=?</item>- <item>string<?</item>- <item>string-ref</item>- <item>string-set!</item>- <item>substring</item>- <item>symbol->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->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="""/>- <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="""/>- <Detect2Chars attribute="Char" context="#stay" char="\" char1="\"/>- <DetectChar attribute="String" context="#pop" char="""/>- </context>- <context name="function_decl" attribute="Function" lineEndContext="#stay">- <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\<\>//\*]*\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="-+*?!<>=/:#\"/>- <comments>- <comment name="singleLine" start=";;" />- <comment name="multiLine" start="#!" end="!#" />- </comments>- </general>-</language>+<!DOCTYPE language SYSTEM "language.dtd"+[+ <!ENTITY xmlattrs "\s+([^"/>]++|"[^"]*+")*+">+ <!ENTITY tab "	">+ <!ENTITY regex "(?:[^\\(\[/]++|\\.|\[\^?\]?([^\\\[\]]++|\\.|\[(:[^:]+:\])?)++\]|\((?R)\))+">++ <!ENTITY initial_ascii_set "a-zA-Z!$%&*/:<=>?~_^">+ <!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><=</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>+ <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>&assertion</item>+ <item>&condition</item>+ <item>&error</item>+ <item>&i/o-decoding</item>+ <item>&i/o-encoding</item>+ <item>&i/o-file-already-exists</item>+ <item>&i/o-file-does-not-exist</item>+ <item>&i/o-file-is-read-only</item>+ <item>&i/o-file-protection</item>+ <item>&i/o-filename</item>+ <item>&i/o-invalid-position</item>+ <item>&i/o-port</item>+ <item>&i/o-read</item>+ <item>&i/o-write</item>+ <item>&i/o</item>+ <item>&implementation-restriction</item>+ <item>&implementation-violation</item>+ <item>&irritants</item>+ <item>&lexical</item>+ <item>&message</item>+ <item>&mistake</item>+ <item>&no-infinities</item>+ <item>&no-nans</item>+ <item>&non-continuable</item>+ <item>&serious</item>+ <item>&syntax</item>+ <item>&undefined</item>+ <item>&violation</item>+ <item>&warning</item>+ <item>&who</item>+ <item>&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->sint-list</item>+ <item>bytevector->string</item>+ <item>bytevector->u8-list</item>+ <item>bytevector->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>=?</item>+ <item>char>?</item>+ <item>char<=?</item>+ <item>char<?</item>+ <item>char<?c</item>+ <item>char->integer</item>+ <item>char-alphabetic?</item>+ <item>char-ci>=?</item>+ <item>char-ci>?</item>+ <item>char-ci<=?</item>+ <item>char-ci<?</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->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->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->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->flonum</item>+ <item>fixnum-width</item>+ <item>fixnum?</item>+ <item>fl>=?</item>+ <item>fl>?</item>+ <item>fl<=?</item>+ <item>fl<?</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>=?</item>+ <item>fx>?</item>+ <item>fx<=?</item>+ <item>fx<?</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<?</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->exact</item>+ <item>inexact</item>+ <item>inexact?</item>+ <item>infinite?</item>+ <item>input-port?</item>+ <item>integer->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->string</item>+ <item>list->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->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->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->bytevector</item>+ <item>sqrt</item>+ <item>standard-error-port</item>+ <item>standard-input-port</item>+ <item>standard-output-port</item>+ <item>string>=?</item>+ <item>string>?</item>+ <item>string<=?</item>+ <item>string<?</item>+ <item>string->bytevector</item>+ <item>string->list</item>+ <item>string->number</item>+ <item>string->symbol</item>+ <item>string->utf16</item>+ <item>string->utf32</item>+ <item>string->utf8</item>+ <item>string-append</item>+ <item>string-ci>=?</item>+ <item>string-ci>?</item>+ <item>string-ci<=?</item>+ <item>string-ci<?</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->string</item>+ <item>symbol-hash</item>+ <item>symbol=?</item>+ <item>symbol?</item>+ <item>syntax->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->bytevector</item>+ <item>uint-list->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->string</item>+ <item>utf32->string</item>+ <item>utf8->string</item>+ <item>values</item>+ <item>vector->list</item>+ <item>vector->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="""/>+ <Detect2Chars attribute="String" context="Template" char="&" 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="&" lookAhead="1"/>+ </context>+ <context name="TemplateTemplate" attribute="String" lineEndContext="#pop">+ <Detect2Chars attribute="Operator" context="#stay" char="&" char1="|" firstNonSpace="1"/>+ <Detect2Chars attribute="Operator" context="#pop!NotNewlineTemplate" char="&" char1="-"/>+ <Detect2Chars attribute="Brackets1" context="#pop!Level1" char="&" char1="("/>+ <Detect2Chars attribute="Brackets1" context="#pop!EmbeddedExpressionTemplate" char="&" char1="["/>+ <Detect2Chars attribute="Extension" context="#pop!FormatTemplate" char="&" char1="~"/>+ <StringDetect attribute="Comment" context="#pop!MultiLineComment" String="&#|" beginRegion="comment"/>+ <RegExpr attribute="Char" context="#pop!EndCharTemplate" String="(&(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*))" lookAhead="1"/>+ <DetectChar attribute="String" context="#pop" char="&"/>+ </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="<" 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="#<?"/>+ <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="#<!--"/>+ <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="#<![CDATA["/>+ <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr1" String="#<("/>+ <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr2" String="#<{"/>+ <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="#<[^\s>]++"/>+ <Detect2Chars attribute="Error" context="#pop" char="#" char1="<"/>+ </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="&" lookAhead="1"/>+ <DetectChar attribute="XML Tag" context="XMLFindXML" char="<" lookAhead="1"/>+ </context>+ <context name="XMLFindXML" attribute="String" lineEndContext="#stay">+ <Detect2Chars attribute="XML Tag" context="#pop!XMLProc" char="<" char1="?"/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr1" char="<" char1="("/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr2" char="<" char1="{"/>+ <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="<!--"/>+ <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="<![CDATA["/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLCloseTag" char="<" char1="/" lookAhead="1"/>+ <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="<[^\s>]++"/>+ <DetectChar attribute="XML Error" context="#pop" char="<"/>+ </context>+ <context name="XMLCloseTag" attribute="String" lineEndContext="#pop#pop">+ <RegExpr attribute="XML Tag" context="#pop#pop" String="</[^\s>]*>"/>+ <Detect2Chars attribute="XML Error" context="#pop#pop" char="<" 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="""/>+ <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="""/>+ <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="&" lookAhead="1"/>+ <DetectChar attribute="XML Error" context="#stay" char="<"/>+ </context>++ <context name="XMLEscape" attribute="XML String" lineEndContext="#stay">+ <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr1" char="&" char1="("/>+ <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr2" char="&" char1="{"/>+ <RegExpr attribute="XML Entity" context="#pop" String="&(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+ <DetectChar attribute="XML Error" context="#pop" char="&"/>+ </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="®ex;"/>+ </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="""/>++ <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="<"/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentTemplate" char="&" 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="&"/>+ </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="&(?:#(?:[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="®ex;"/>+ </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="&" lookAhead="1"/>+ <DetectChar attribute="Comment" context="DatumCommentXMLFindXML" char="<" lookAhead="1"/>+ </context>+ <context name="DatumCommentXMLFindXML" attribute="Comment" lineEndContext="#stay">+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLProc" char="<" char1="?"/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="<" char1="("/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="<" char1="{"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="<!--"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="<![CDATA["/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLCloseTag" char="<" char1="/" lookAhead="1"/>+ <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="<[^\s>]++"/>+ <DetectChar attribute="Comment" context="#pop" char="<"/>+ </context>+ <context name="DatumCommentXMLCloseTag" attribute="Comment" lineEndContext="#pop#pop">+ <RegExpr attribute="Comment" context="#pop#pop" String="</[^\s>]*>"/>+ <Detect2Chars attribute="XML Error" context="#pop#pop" char="<" 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="""/>+ <DetectChar attribute="Comment" context="DatumCommentXMLSQ" char="'"/>+ </context>+ <context name="DatumCommentXMLDQ" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="#pop#pop#pop" char="""/>+ <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="&" lookAhead="1"/>+ <DetectChar attribute="XML Error" context="#stay" char="<"/>+ </context>++ <context name="DatumCommentXMLEscape" attribute="Comment" lineEndContext="#stay">+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentParent2" char="&" char1="("/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentBrace2" char="&" char1="{"/>+ <RegExpr attribute="Comment" context="#pop" String="&(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+ <DetectChar attribute="XML Error" context="#pop" char="&"/>+ </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="""/>+ <RegExpr attribute="Comment" context="#stay" String="(?:[^\\"]++|\\.)++"/>+ </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="""/>+ <DetectChar attribute="Comment" context="DatumCommentHash" char="#"/>+ </context>+++ <context name="String" attribute="String" lineEndContext="#stay">+ <DetectChar attribute="String" context="#pop" char="""/>+ <DetectChar attribute="Char" context="EscapeString" char="\"/>+ </context>+ <context name="EscapeString" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Char" context="#pop" String="abfnrtv"\"/>+ <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-!$%"*/:<=>?~_^+.@]*\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="-+*?!<>=/:.,\&" additionalDeliminator="";#"/>+ <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 = """ char1 = """ 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="<!--"/>+ <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="Comment"/> <RegExpr attribute="Tag" context="Attribute" String="<\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="-->"/>+ <DetectSpaces />+ <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="Comment"/>+ <IncludeRules context="##Alerts"/>+ <IncludeRules context="##Modelines"/> </context> </contexts>@@ -39,7 +42,7 @@ </highlighting> <general> <comments>- <comment name="multiLine" start="<!--" end="//-->" />+ <comment name="multiLine" start="<!--" end="-->" 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=""" /> <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="""/>+ <DetectChar attribute="Identifier" context="Identifier" char="""/> <AnyChar attribute="Symbol" context="#stay" String=":&"/> <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="+-*/=%^!<>&|@~#"/> <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="&"/> <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="""/>@@ -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="""/> </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_@.%*?+-]|\\ )"> <!-- 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=""" 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="""/>+ </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="∫(&frac;&exp;|&frac;|&exp;)"/>+ <RegExpr attribute="Int" context="#stay" String="∫"/>+ <StringDetect attribute="String" context="MultilineString" String="""""/>+ <DetectChar attribute="String" context="String" char="""/>+ <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"\\]" 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="""/>+ </context>+ <context attribute="String" lineEndContext="#pop" name="String">+ <LineContinue attribute="Escape" context="#stay"/>+ <RegExpr attribute="Escape" String="\\[btnfr"\\]" 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="""/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="MultilineString">+ <LineContinue attribute="Escape" context="#stay"/>+ <RegExpr attribute="Escape" String="\\[btnfr"\\]" 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="""""/>+ </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="""/>+ <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*<)">+ <!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*<)"> <!-- function<...>( or function( --> <!ENTITY functionSuffix "(?=\s*(?:<(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|`(?:\\.|[^`])*`|[^<>]|<.*>)*>)?\()">++ <!ENTITY codeContent ""(?:[^"]|\\.)*"|'(?:[^']|\\.)*'|`(?:[^`]|\\.)`|/\*.*\*/|/(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/"> ]> <!--@@ -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="¶meter;" />++ <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*(?:(?:[^/"'`\s\?:\.;,\=\}\]\)]|&codeContent;)(?:[^/"'`]|&codeContent;)*)?&identifier;\s*(?:/\*.*\*/\s*)*:|(?:&&|\|\||\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="<(?=(?:&identifier;|[\[\{\(<]).*>)" />@@ -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="¶meter;" />+ </context>+ <context name="ConditionalExpressionEnd" attribute="Normal Text" lineEndContext="#stay">+ <AnyChar context="#pop" String=";,}])" lookAhead="true" />+ <RegExpr context="#pop" String="\=(?!>)" 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="</script\s*(?:>|$)" 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="\=(?!>)" 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="""/> </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=""" char1="""/> <RangeDetect attribute="Prep. Lib" context="#stay" char="<" char1=">"/> <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 "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+ <!ENTITY entref "&(?:#[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="-->" endRegion="comment" />- <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" />+ <RegExpr attribute="Error" context="#stay" String="-(?:\-(?!->))+" /> <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="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />+ <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\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=">" endRegion="element" /> <DetectChar attribute="Element" context="El Content" char=">" />- <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="<!--" end="-->" />+ <comment name="multiLine" start="<!--" end="-->" 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 "&(#[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 "&(#[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="-->" endRegion="comment" /> <RegExpr attribute="Invalid" context="#stay" String="-(-(?!->))+" />- <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="<!--" end="-->" />+ <comment name="multiLine" start="<!--" end="-->" region="comment" /> </comments> <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator=""{}"/> </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 "&(#[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="-->" endRegion="comment" /> <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" /> <IncludeRules context="##Alerts" />+ <IncludeRules context="##Modelines" /> <DetectIdentifier /> </context> @@ -519,8 +520,8 @@ <DetectChar attribute="String" context="String" char="""/> <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="<!--" end="-->" />- <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/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="%<flag>" /> <!-- 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="<[^>]+>" />@@ -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;|∫)">+ <!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;|∫)"> - <!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="[^"'#\-\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="[^"'#\-\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="[^"'#\-,\]\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="[^"'#\-,\]\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"'#\-,\}\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"'#\-,\}\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"/\\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"/\\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\|<>"'])?&literalOp;&endValue;)" />+ String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&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\|<>"'])?)?&literalOp;&endValue;" />+ String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?)?&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;*(([&\*]|!!)\S+\s+)+&literalOp;&endValue;" />+ String="^&space;*(?:(?:[&\*]|!!)\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="([&\*]|!!)\S*&literalOp;(?=&endValue;)" />+ <RegExpr attribute="Error" context="#pop#pop" String="(?:[&\*]|!!)\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_@.%*?+-]|\\ )"> <!-- 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="<" char1="<" lookAhead="true" /> <!-- handle process subst -->- <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char="<" char1="(" />+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char=">" char1="(" /> <!-- handle redirection --> <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" /> <!-- 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