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><</string> <string>></string> <string>@</string> <string>!=</string> <string>"</string> <string>'</string> <string><=</string> <string>>=</string> <string>&</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.
