Hello All,

So I have explored the codeless language module creation, and I created a 
module based on MagicPython. While the built in Python is great, I think 
the folks at magicstack did a great job with it and I wanted to have some 
custom syntax highlighting.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
  <key>BBEditDocumentType</key>
<string>CodelessLanguageModule</string>
<key>BBLMLanguageCode</key>
<string>pypy</string>
<key>BBLMLanguageDisplayName</key>
<string>MagicPython</string>
<key>BBLMColorsSyntax</key>
<true/>
<key>BBLMIsCaseSensitive</key>
<true/>
<key>BBLMSupportsTextCompletion</key>
<true/>
<key>BBLMKeywordList</key>
  <array>
    <string>False</string>
    <string>None</string>
    <string>True</string>
    <string>and</string> 
    <string>as</string> 
    <string>assert</string>
    <string>break</string> 
    <string>class</string>
      <string>continue</string> 
      <string>def</string> 
      <string>del</string> 
      <string>elif</string> 
      <string>else</string> 
      <string>except</string> 
      <string>finally</string> 
      <string>for</string> 
      <string>from</string> 
      <string>global</string> 
      <string>if</string> 
      <string>import</string> 
      <string>in</string> 
      <string>is</string> 
      <string>lambda</string> 
      <string>nonlocal</string> 
      <string>not</string> 
      <string>or</string> 
      <string>pass</string> 
      <string>raise</string> 
      <string>return</string> 
      <string>try</string> 
      <string>while</string> 
      <string>with</string> 
      <string>yield</string>
      <string>#</string>
      <string>=</string>
      <string>==</string>
      <string>apos</string>
      <string>&lt;</string>
      <string>&gt;</string>
      <string>@</string>
      <string>!=</string>
      <string>&quot;</string>
      <string>&apos;</string>
      <string>&lt;=</string>
      <string>&gt;=</string>
      <string>&amp;</string>
      <string>|</string>
      <string>*</string>
      <string>/</string>
      <string>+</string>
      <string>-</string>
      <string>?</string>
      <string>^</string>
  </array>
<key>BBLMScansFunctions</key> 
  <true/>
<key>BBLMFunctionScannerDoesFoldsToo</key>
    <true/>
<key>BBLMSuffixMap</key> 
<array> 
<dict> 
<key>BBLMLanguageSuffix</key> 
<string>.py</string> 
</dict> 
</array> 
<key>BBLMPredefinedNameList</key>
<array>
    <string>abs</string>
    <string>all</string>
    <string>any</string>
    <string>bin</string>
    <string>ascii</string>
    <string>bool</string>
    <string>bytearray</string>
    <string>bytes</string>
    <string>callable</string>
    <string>chr</string>
    <string>classmethod</string>
    <string>compile</string>
    <string>complex</string>
    <string>delattr</string>
    <string>dict</string>
    <string>dir</string>
    <string>divmod</string>
    <string>enumerate</string>
    <string>eval</string>
    <string>exec</string>
    <string>filter</string>
    <string>float</string>
    <string>format</string>
    <string>frozenset</string>
    <string>getattr</string>
    <string>globals</string>
    <string>hasattr</string>
    <string>hash</string>
    <string>help</string>
    <string>hex</string>
    <string>id</string>
    <string>input</string>
    <string>int</string>
    <string>isinstance</string>
    <string>issubclass</string>
    <string>iter</string>
    <string>len</string>
    <string>list</string>
    <string>locals</string>
    <string>map</string>
    <string>max</string>
    <string>memoryview</string>
    <string>min</string>
    <string>next</string>
    <string>object</string>
    <string>oct</string>
    <string>open</string>
    <string>ord</string>
    <string>pow</string>
    <string>print</string>
    <string>property</string>
    <string>range</string>
    <string>repr</string>
    <string>reversed</string>
    <string>round</string>
    <string>set</string>
    <string>setattr</string>
    <string>slice</string>
    <string>sorted</string>
    <string>staticmethod</string>
    <string>str</string>
    <string>sum</string>
    <string>super</string>
    <string>tuple</string>
    <string>type</string>
    <string>vars</string>
    <string>zip</string>
    <string>__import__</string>
    <string>__new__</string>
    <string>__init__</string>
    <string>__del__</string>
    <string>__repr__</string>
    <string>__str__</string>
    <string>__bytes__</string>
    <string>__format__</string>
    <string>__lt__</string>
    <string>__le__</string>
    <string>__eq__</string>
    <string>__ne__</string>
    <string>__gt__</string>
    <string>__ge__</string>
    <string>__hash__</string>
    <string>__bool__</string>
    <string>__getattr__</string>
    <string>__getattribute__</string>
    <string>__setattr__</string>
    <string>__delattr__</string>
    <string>__get__</string>
    <string>__set__</string>
    <string>__delete__</string>
    <string>__set_name__</string>
    <string>__slots__</string>
    <string>__init_subclass__</string>
    <string>__prepare__</string>
    <string>__class__</string>
    <string>__subclasscheck__</string>
    <string>__instancecheck__</string>
    <string>__call__</string>
    <string>__len__</string>
    <string>__length_hint__</string>
    <string>__missing__</string>
    <string>__setitem__</string>
    <string>__iter__</string>
    <string>__delitem__</string>
    <string>__reversed__</string>
    <string>__contains__</string>
    <string>__add__</string>
    <string>__sub__</string>
    <string>__mul__</string>
    <string>__matmul__</string>
    <string>__truediv__</string>
    <string>__floordiv__</string>
    <string>__mod__</string>
    <string>__divmod__</string>
    <string>__pow__</string>
    <string>__lshift__</string>
    <string>__rshift__</string>
    <string>__and__</string>
    <string>__xor__</string>
    <string>__or__</string>
    <string>__radd__</string>
    <string>__rsub__</string>
    <string>__rmul__</string>
    <string>__rmatmul__</string>
    <string>__rtruediv__</string>
    <string>__rfloordiv__</string>
    <string>__rmod__</string>
    <string>__rdivmod__</string>
    <string>__rpow__</string>
    <string>__rlshift__</string>
    <string>__rrshift__</string>
    <string>__rand__</string>
    <string>__rxor__</string>
    <string>__ror__</string>
    <string>__iadd__</string>
    <string>__isub__</string>
    <string>__imul__</string>
    <string>__imatmul__</string>
    <string>__itruediv__</string>
    <string>__ifloordiv__</string>
    <string>__imod__</string>
    <string>__idivmod__</string>
    <string>__ipow__</string>
    <string>__ilshift__</string>
    <string>__irshift__</string>
    <string>__iand__</string>
    <string>__ixor__</string>
    <string>__ior__</string>
    <string>__neg__</string>
    <string>__pos__</string>
    <string>__abs__</string>
    <string>__invert__</string>
    <string>__complex__</string>
    <string>__int__</string>
    <string>__float__</string>
    <string>__round__</string>
    <string>__index__</string>
    <string>__enter__</string>
    <string>__exit__</string>
    <string>__await__</string>
    <string>__aiter__</string>
    <string>send</string>
    <string>throw</string>
    <string>close</string>
    <string>__anext__</string>
    <string>__aenter__</string>
    <string>__aexit__</string>
    <string>__debug__</string>
    <string>site</string>
    <string>__future__</string>
    <string>__main__</string>
    <string>abc</string>
    <string>aifc</string>
    <string>argparse</string>
    <string>array</string>
    <string>ast</string>
    <string>asynchat</string>
    <string>asyncio</string>
    <string>asyncore</string>
    <string>atexit</string>
    <string>audioop</string>
    <string>base64</string>
    <string>bdb</string>
    <string>binascii</string>
    <string>binhex</string>
    <string>bisect</string>
    <string>builtins</string>
    <string>bz2</string>
    <string>calendar</string>
    <string>cgi</string>
    <string>cgitb</string>
    <string>chunk</string>
    <string>cmath</string>
    <string>cmd</string>
    <string>code</string>
    <string>codecs</string>
    <string>codeops</string>
    <string>collections</string>
    <string>collections.abc</string>
    <string>colorsys</string>
    <string>compileall</string>
    <string>concurrent</string>
    <string>concurrent.futures</string>
    <string>configparser</string>
    <string>contextlib</string>
    <string>copy</string>
    <string>string</string>
    <string>copyreg</string>
    <string>cprofile</string>
    <string>crypt</string>
    <string>csv</string>
    <string>curses</string>
    <string>curses.ascii</string>
    <string>curses.panel</string>
    <string>curses.textpad</string>
    <string>datetime</string>
    <string>dbm</string>
    <string>dbm.dumb</string>
    <string>dbm.gnu</string>
    <string>dbm.ndbm</string>
    <string>decimal</string>
    <string>difflib</string>
    <string>dis</string>
    <string>disutils</string>
    <string>disutils.archive_util</string>
    <string>disutils.bcppcompiler</string>
    <string>disutils.ccompiler</string>
    <string>disutils.cmd</string>
    <string>disutils.command</string>
    <string>disutils.command.bdist</string>
    <string>disutils.command.bdist_dumb</string>
    <string>disutils.command.bdist_msi</string>
    <string>distutils.command.bdist_wininst</string>
    <string>long</string>
    <string>distutils.command.build_scripts</string>
      <string>distutils.command.check </string>
      <string>distutils.command.clean</string>
      <string>distutils.command.config </string>   
      <string>distutils.command.install</string>   
      
<string>distutils.command.install_datadistutils.command.build</string>  
      <string>distutils.command.build_clib</string>    
      <string>distutils.command.build_ext</string> 
      <string>distutils.command.build_py</string>
      <string>distutils.command.build_scripts</string> 
      <string>distutils.command.check</string> 
      <string>distutils.command.config</string>
      <string>distutils.command.install_data</string>  
      <string>distutils.command.install_headers</string>   
      <string>distutils.command.install_lib</string>   
      <string>distutils.command.install_scripts</string>   
      <string>distutils.command.register</string>  
      <string>distutils.command.sdist</string> 
      <string>distutils.core</string>  
      <string>distutils.cygwinccompiler</string>   
      <string>distutils.debug</string> 
      <string>distutils.dep_util</string>  
      <string>distutils.dir_util</string>  
      <string>distutils.dist</string> 
      <string>distutils.errors</string>   
      <string>distutils.extension</string> 
      <string>distutils.fancy_getopt</string> 
      <string>distutils.file_util</string> 
      <string>distutils.filelist</string>
      <string>distutils.log</string>
      <string>distutils.msvccompiler</string>
      <string>distutils.spawn</string>
      <string>distutils.sysconfig</string>
      <string>distutils.text_file</string>
      <string>distutils.unixccompiler</string>
      <string>distutils.util</string>
      <string>distutils.version</string>
      <string>email</string>
      <string>email.charset</string>
      <string>email.contentmanager</string>
      <string>email.encoders</string>
      <string>email.errors</string>
      <string>email.generator</string>
      <string>email.header</string>
      <string>email.headerregistry</string>
      <string>email.iterators</string>
      <string>email.message</string>
      <string>email.mime</string>
      <string>email.parser</string>
      <string>email.policy</string>
      <string>email.utils</string>
      <string>encodings</string>
      <string>encodings.idna</string>
      <string>encodings.mbcs</string>
      <string>encodings.utf</string>
      <string>html</string>
      <string>html.entities</string>
      <string>html.parser</string>
      <string>http</string>
      <string>http.client</string>
      <string>http.cookiejar</string>
      <string>http.cookies</string>
      <string>http.server</string>
      <string>importlib.abc</string>
      <string>importlib.machinery</string>
      <string>importlib.util</string>
      <string>json</string>
      <string>json.tool</string>
      <string>logging</string>
      <string>logging.config</string>
      <string>logging.handlers</string>
      <string>multiprocessing</string>
      <string>multiprocessing.connection</string>
      <string>multiprocessing.dummy</string>
      <string>multiprocessing.managers</string>
      <string>multiprocessing.pool</string>
      <string>multiprocessing.sharedctypes</string>
      <string>os</string>
      <string>os.path</string>
      <string>test.support</string>
      <string>tkinter</string>
      <string>tkinter.scrolledtext</string>
      <string>tkinter.tix</string>
      <string>tkinter.ttk</string>
      <string>unittest</string>
      <string>unittest.mock</string>
      <string>urllib</string>
      <string>urllib.error</string>
      <string>urllib.parse</string>
      <string>urllib.request</string>
      <string>urllib.response</string>
      <string>urllib.robotparser</string>
      <string>wsgiref.handlers</string>
      <string>wsgiref.headers</string>
      <string>wsgiref.simple</string>
      <string>wsgiref.util</string>
      <string>wsgiref.validate</string>
      <string>xml</string>
      <string>xml.dom</string>
      <string>xml.dom.minidom</string>
      <string>xml.dom.pulldom</string>
      <string>xml.etree.ElementTree</string>
      <string>xml.sax</string>
      <string>xmlrpc.server</string>
      <string>ensurepip</string>
      <string>enum</string>
      <string>errno</string>
      <string>faulthandler</string>
      <string>fcntl</string>
      <string>filecmp</string>
      <string>fileinput</string>
      <string>fnmatch</string>
      <string>formatter</string>
      <string>fpectl</string>
      <string>fractions</string>
      <string>ftplib</string>
      <string>functools</string>
      <string>gc</string>
      <string>getopt</string>
      <string>getpass</string>
      <string>gettext</string>
      <string>glob</string>
      <string>grp</string>
      <string>gzip</string>
      <string>hashlib</string>
      <string>heapq</string>
      <string>hmac</string>
      <string>http.status</string>
      <string>imaplib</string>
      <string>imghdr</string>
      <string>importlib</string>
      <string>ipaddress</string>
      <string>itertools</string>
      <string>keyword</string>
      <string>lib</string>
      <string>linecach</string>
      <string>locale</string>
      <string>lzma</string>
      <string>macpath</string>
      <string>mailbox</string>
      <string>mailcap</string>
      <string>marshal</string>
      <string>math</string>
      <string>mimetypes</string>
      <string>mmap</string>
      <string>modulefinder</string>
      <string>msilib</string>
      <string>msvcrt</string>
      <string>netrc</string>
      <string>nis</string>
      <string>nntplib</string>
      <string>numbers</string>
      <string>operator</string>
      <string>optparse</string>
      <string>ossaudiodev</string>
      <string>parser</string>
      <string>pathlib</string>
      <string>pdb</string>
      <string>pickle</string>
      <string>pickletools</string>
      <string>pipes</string>
      <string>pkgutil</string>
      <string>platform</string>
      <string>plistlib</string>
      <string>poplib</string>
      <string>posix</string>
      <string>pprint</string>
      <string>profile</string>
      <string>pstats</string>
      <string>pty</string>
      <string>pwd</string>
      <string>py</string>
      <string>pyclbr</string>
      <string>pydoc</string>
      <string>queue</string>
      <string>quopri</string>
      <string>random</string>
      <string>re</string>
      <string>readline</string>
      <string>reprlib</string>
      <string>resource</string>
      <string>rlcompleter</string>
      <string>runpy</string>
      <string>sched</string>
      <string>secrets</string>
      <string>select</string>
      <string>selectors</string>
      <string>shelve</string>
      <string>shlex</string>
      <string>shutil</string>
      <string>signal</string>
      <string>site</string>
      <string>smtpd</string>
      <string>smtplib</string>
      <string>sndhdr</string>
      <string>socket</string>
      <string>socketserver</string>
      <string>spwd</string>
      <string>sqlite</string>
      <string>ssl</string>
      <string>stat</string>
      <string>statistics</string>
      <string>stringprep</string>
      <string>struct</string>
      <string>subprocess</string>
      <string>sunau</string>
      <string>symbol</string>
      <string>symtable</string>
      <string>sysconfig</string>
      <string>syslog</string>
      <string>tabnanny</string>
      <string>tarfile</string>
      <string>telnetlib</string>
      <string>tempfile</string>
      <string>termios</string>
      <string>test</string>
      <string>textwrap</string>
      <string>threading</string>
      <string>time</string>
      <string>timeit</string>
      <string>token</string>
      <string>tokenize</string>
      <string>trace</string>
      <string>traceback</string>
      <string>tracemalloc</string>
      <string>tty</string>
      <string>turtle</string>
      <string>turtledemo</string>
      <string>types</string>
      <string>typing</string>
      <string>uu</string>
      <string>uuid</string>
      <string>venv</string>
      <string>warnings</string>
      <string>wave</string>
      <string>weakref</string>
      <string>webbrowser</string>
      <string>winreg</string>
      <string>winsound</string>
      <string>wsgiref</string>
      <string>xdrlib</string>
      <string>zipapp</string>
      <string>zipfile</string>
      <string>zipimport</string>
      <string>zlib</string>
  </array>
  <key>Language Features</key>
  <dict>
  <key>Identifier and Keyword Character Class</key>
    <string><![CDATA[!$%&*+-.,/()<?>^={}[]'"@~#0-9A-Z_a-z:]]></string>
    <key>Comment Pattern</key>
    <string><![CDATA[(?x:
              (#.*$) | (?# Line comment)
              )]]></string>
    <key>String Pattern</key>
      <string><![CDATA[("(\\"|[^"\r]|\\\r)*") | (?# Double-quote)
      ('(\\'|[^'\r]|\\\r)*') |  (?# Single-quote)
      ("""(\\"|[^"\r]|\\\r)*""") | (?# Triple-quote)
        )]]></string>
    <key>Function Pattern</key>
          <string><![CDATA[(?P<function>
            (^|\s)
            (def|class|try|except|if|elif|else|)
            \s+
            (?P<function_name>
              [A-Za-z_()][A-Za-z_0-9:]*
            )
            (
              [^{]*
              (?P<block> 
                (?>
(?> [^{}]+ )
  | (?P>block) 
)*
              )
        ]]></string>
    <key>Skip Pattern</key>
      <string><![CDATA[
            (?x:
              (?P>comment) |
                (?P>string)
                  )]]></string>
    </dict>
  </dict>
</plist>

  
Not sure what I've done wrong thus far though, as I can't seem to figure 
out what the issue is with it loading. plutil says its ok.


-- 
This is the BBEdit Talk public discussion group. If you have a 
feature request or would like to report a problem, please email
"[email protected]" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>
--- 
You received this message because you are subscribed to the Google Groups 
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/bbedit.

Reply via email to