This forum has been archived. All content is frozen. Please use KDE Discuss instead.

How to double-click select hyphenated words?

Tags: None
(comma "," separated)
lightnb
Registered Member
Posts
12
Karma
0
When a hyphenated word appears, like "some-words" double clicking "words" only selects "words". I'd like to make it select "some-words". How can I do that?
User avatar
scummos
Global Moderator
Posts
1175
Karma
7
OS
I think the highlighting for each language has a list of characters which are considered word-characters. If you modify that list, the behaviour should change. Try looking in /usr/share/katepart/syntax. I'm not sure that controls this behaviour though, you'll have to try it out ;)

Greetings!


I'm working on the KDevelop IDE.
lightnb
Registered Member
Posts
12
Karma
0
I found the xml files in /usr/share/kde4/apps/katepart/syntax/. But I'm not sure how to modify them to change the behavior. Nothing is jumping out at me and I'm not sure exatly what these files define. In my case it wold be JavaScript, PHP, CSS, and HTML that I would like to change, especially HTML/CSS since all the class names are hyphenated and it's annoying to try and select them manually.


This is what's in the HTML.xml file:

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
[
   <!ENTITY name    "[A-Za-z_:][\w.:_-]*">
   <!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
]>
<language name="HTML" version="1.99" kateversion="2.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">

<highlighting>
<contexts>
  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
    <IncludeRules context="FindHTML" />
  </context>

  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
    <DetectSpaces/>
    <DetectIdentifier/>
    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="TRUE" beginRegion="style" />
    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="TRUE" beginRegion="script" />
    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="TRUE" beginRegion="pre" />
    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="TRUE" beginRegion="div" />
    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="TRUE" beginRegion="table" />
    <RegExpr attribute="Element" context="El Open" String="&lt;ul\b" insensitive="TRUE" beginRegion="ul" />
    <RegExpr attribute="Element" context="El Open" String="&lt;ol\b" insensitive="TRUE" beginRegion="ol" />
    <RegExpr attribute="Element" context="El Open" String="&lt;dl\b" insensitive="TRUE" beginRegion="dl" />
    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="TRUE" endRegion="pre" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="TRUE" endRegion="div" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="TRUE" endRegion="table" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/ul\b" insensitive="TRUE" endRegion="ul" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/ol\b" insensitive="TRUE" endRegion="ol" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/dl\b" insensitive="TRUE" endRegion="dl" />
    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
    <IncludeRules context="FindEntityRefs" />
  </context>

  <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
  </context>

  <context name="FindPEntityRefs" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
  </context>

  <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
    <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
    <DetectChar attribute="Attribute" context="Value" char="=" />
  </context>

  <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
  </context>


  <context name="Comment" attribute="Comment" lineEndContext="#stay">
    <DetectSpaces/>
    <IncludeRules context="##Alerts" />
    <DetectIdentifier/>
    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
  </context>

  <context name="CDATA" attribute="Other Text" lineEndContext="#stay">
    <DetectSpaces/>
    <DetectIdentifier/>
    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
  </context>

  <context name="PI" attribute="Other Text" lineEndContext="#stay">
    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
  </context>

  <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
  </context>

  <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
    <IncludeRules context="FindDTDRules" />
    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
    <IncludeRules context="FindPEntityRefs" />
  </context>

  <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
  </context>

  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
    <DetectChar attribute="Value" context="#pop" char="&quot;" />
    <IncludeRules context="FindPEntityRefs" />
  </context>

  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
    <DetectChar attribute="Value" context="#pop" char="&apos;" />
    <IncludeRules context="FindPEntityRefs" />
  </context>

  <context name="El Open" attribute="Other Text" lineEndContext="#stay">
    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
    <DetectChar attribute="Element" context="#pop" char="&gt;" />
    <IncludeRules context="FindAttributes" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="El Close" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Element" context="#pop" char="&gt;" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="El Close 2" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="El Close 3" attribute="Other Text" lineEndContext="#stay">
    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="CSS" attribute="Other Text" lineEndContext="#stay">
    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
    <IncludeRules context="FindAttributes" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="CSS content" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="TRUE" endRegion="style" />
    <IncludeRules context="##CSS" includeAttrib="true"/>
  </context>

  <context name="JS" attribute="Other Text" lineEndContext="#stay">
    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
    <DetectChar attribute="Element" context="JS content" char="&gt;" />
    <IncludeRules context="FindAttributes" />
    <RegExpr attribute="Error" context="#stay" String="\S" />
  </context>

  <context name="JS content" attribute="Other Text" lineEndContext="#stay">
    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
    <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="TRUE" />
    <IncludeRules context="##JavaScript" includeAttrib="true"/>
  </context>

  <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
    <IncludeRules context="##Alerts" />
  </context>

  <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
    <DetectSpaces />
  </context>

  <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
    <IncludeRules context="FindEntityRefs" />
    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
  </context>

  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
    <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
    <IncludeRules context="FindEntityRefs" />
  </context>

  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
    <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
    <IncludeRules context="FindEntityRefs" />
  </context>

</contexts>
<itemDatas>
  <itemData name="Normal Text" defStyleNum="dsNormal" />
  <itemData name="Other Text" defStyleNum="dsNormal" spellChecking="false" />
  <itemData name="Comment" defStyleNum="dsComment" />
  <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" color="#a00" spellChecking="false" />
  <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" />
  <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" />
  <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>

</highlighting>
<general>
  <comments>
    <comment name="multiLine" start="&lt;!--" end="--&gt;" />
  </comments>
</general>
</language>
User avatar
scummos
Global Moderator
Posts
1175
Karma
7
OS
Try adding
Code: Select all
<keywords weakDeliminator="-"/>

in the "general" section, looking at the code this might work.

Greetings!


I'm working on the KDevelop IDE.
lightnb
Registered Member
Posts
12
Karma
0
Thanks! The file I needed was html-php.xml and it's working now.


Bookmarks



Who is online

Registered users: Bing [Bot], daret, Google [Bot], Sogou [Bot]