{"id":25244132,"url":"https://github.com/mrc/tla-tools","last_synced_at":"2025-07-22T22:04:14.624Z","repository":{"id":36610481,"uuid":"183535053","full_name":"mrc/tla-tools","owner":"mrc","description":"TLA+ tools for Emacs","archived":false,"fork":false,"pushed_at":"2024-12-14T02:52:35.000Z","size":96,"stargazers_count":33,"open_issues_count":0,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T13:51:54.519Z","etag":null,"topics":["emacs","emacs-mode","pluscal","tla","tlaplus"],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-26T01:31:05.000Z","updated_at":"2025-03-23T23:02:48.000Z","dependencies_parsed_at":"2023-01-17T03:05:59.290Z","dependency_job_id":null,"html_url":"https://github.com/mrc/tla-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrc/tla-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrc%2Ftla-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrc%2Ftla-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrc%2Ftla-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrc%2Ftla-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrc","download_url":"https://codeload.github.com/mrc/tla-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrc%2Ftla-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266580298,"owners_count":23951193,"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-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["emacs","emacs-mode","pluscal","tla","tlaplus"],"created_at":"2025-02-12T01:17:47.902Z","updated_at":"2025-07-22T22:04:14.602Z","avatar_url":"https://github.com/mrc.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tla-tools\n\nTLA+ tools for Emacs\n\n### tla-pcal-mode\n\n`tla-pcal-mode` is a mixed mode for editing TLA+ and PlusCal source\nfiles. It depends on [polymode](https://polymode.github.io/).\n\nIt supports the [p-syntax](https://lamport.azurewebsites.net/tla/p-manual.pdf)\nfor PlusCal, not the c-syntax.\n\nA basic TLA+ [auto-insert](https://www.gnu.org/software/emacs/manual/html_node/autotype/Autoinserting.html) template is provided.\n\n## Usage\n\nPress `C-c C-c` for a menu of commands.\n\nThe command `tla-create-tlc-config-file` (`C-c C-c c`) creates an empty\nconfiguration file for TLC, with placeholders for constants, the INIT and NEXT\nequation, and any invariants.\n\n`C-c C-c m` starts the TLC model checker with the last selected configuration\nfile.  To select a configuration file before running TLC, press `C-c C-c -m m`.\nPress `-d` before `m` to toggle deadlock checking.\n\n`C-c C-c t` translates PlusCal and selects the created configuration file.\n\n`C-c C-c p` creates a PDF version of the current file.\n\nThe menu commands expect [tla-bin](https://github.com/pmer/tla-bin) to be\ninstalled and `pcal`, `tlc` and `tlatex` to be in the path.\n\n### Compilation-mode helper\nAdd the source directory to `load-path` and `M-x load tla-tools`. Or\njust eval the buffer.\n\nExecute `M-x tla-tools-error-regexp-add` to add regexps for\ncompilation mode.\n\nUsing [tla-bin](https://github.com/pmer/tla-bin), a TLA+ source file\ncan be checked with M-x compile, with a compile command of `tlc\n\u003ctla-file\u003e` or `pcal \u003ctla-file\u003e \u0026\u0026 tlc \u003ctla-file\u003e`.\n\n### Bugs\n\n* Doesn't implement much except helping next-error/previous-error.\n* No support TLC reports errors just with the module name, the\n  filename is guessed to be modulename.tla. Sany errors don't have the\n  module name either (makes sense, it's syntax checking the file), so\n  it's guessed from the \"Parsing file ...\" line. Multiple \"Parsing\n  file\" lines could lead the errors to the wrong file.  As a hack,\n  there's a super ugly regexp which prevents matching filenames\n  beginning with \"/private/\", which is where the temp files go on my\n  installation. Sorry if you need to check /tmp instead, maybe the\n  test function offers you some inspiration.\n* Error type (warning, error) is not guessed.\n* No extra support for \"-tool\" option (which makes tlc emit\n  tool-readable messages.)\n* It would be nice if it auto reverted the buffer after pcal (which\n  rewrites the tla file.) Until something nicer is done, I'm using\n  `auto-revert-mode`. Alternatively check out\n  [tlaplus-cli-template](https://github.com/owickstrom/tlaplus-cli-template)\n  which keeps your source clean and puts the pcal translations into a\n  `target/` directory.\n\n### Running pcal and tlc\n\n* [tla-bin](https://github.com/pmer/tla-bin)\n* [TLC command line options](https://lamport.azurewebsites.net/tla/tlc-options.html?back-link=tools.html)\n* [tlaplus-cli-template](https://github.com/owickstrom/tlaplus-cli-template)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrc%2Ftla-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrc%2Ftla-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrc%2Ftla-tools/lists"}