{"id":16299619,"url":"https://github.com/dcwatson/tm2nova","last_synced_at":"2025-10-24T09:47:09.575Z","repository":{"id":147176096,"uuid":"318669983","full_name":"dcwatson/tm2nova","owner":"dcwatson","description":"Utility for converting TextMate grammars to Nova syntaxes.","archived":false,"fork":false,"pushed_at":"2020-12-05T00:47:05.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T21:43:15.606Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcwatson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-05T00:46:48.000Z","updated_at":"2024-11-14T12:59:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"f861fc97-8e38-4cbd-957c-0790a9d6c502","html_url":"https://github.com/dcwatson/tm2nova","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dcwatson/tm2nova","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcwatson%2Ftm2nova","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcwatson%2Ftm2nova/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcwatson%2Ftm2nova/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcwatson%2Ftm2nova/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcwatson","download_url":"https://codeload.github.com/dcwatson/tm2nova/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcwatson%2Ftm2nova/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280776487,"owners_count":26388950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T20:48:47.980Z","updated_at":"2025-10-24T09:47:09.557Z","avatar_url":"https://github.com/dcwatson.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tm2nova\n\nA small utility for converting TextMate language grammars to Nova syntaxes.\n\n**Note**: this is only meant to be a first step. There will almost certainly be issues with the\nconversion that you will need to address, a non-exhaustive list of which are outlined below.\n\n### Regular Expression Problems\n\nIt seems (unsurprisingly) that there are differences both in the regex parsers themselves, and how\nthe text is fed into them.\n\n1. Regexes with a `#` may not be escaped. I have an automatic fix for this, but other similar\n   escaping issues are likely.\n2. TM grammars with begin/end expressions sometimes use `$` as the end match. I suspect this is for\n   single-line expressions which a simple Nova `\u003cmatch\u003e` scope can handle, but I don't convert these\n   automatically.\n\n### Highlighting Scope Names\n\nNova's syntax highlighting scope names do not match, and sometimes there are not direct analogues. I\ndo a few automatic conversions, but these really need to be (or at least should be) hand-edited.\n\n### Symbols and Folding\n\nProbably the biggest issue with the conversion is that the scopes do not generate symbols. To do this\nwell (in my limited experience) means really mirroring the grammar of the language in scopes that\ncapture whole blocks (for example) with proper subscoping. Some of the TM grammars I've seen are more\n(or only) focused on syntax highlighting, which is a good first step, but won't get you cool things\nlike Nova's Symbols panel.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcwatson%2Ftm2nova","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcwatson%2Ftm2nova","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcwatson%2Ftm2nova/lists"}