{"id":16247690,"url":"https://github.com/vkazanov/quakec-mode","last_synced_at":"2025-03-19T19:31:29.850Z","repository":{"id":164552103,"uuid":"639057778","full_name":"vkazanov/quakec-mode","owner":"vkazanov","description":"Emacs major mode for QuakeC development","archived":false,"fork":false,"pushed_at":"2023-06-19T09:47:39.000Z","size":248,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-15T01:47:49.255Z","etag":null,"topics":["emacs","modding","quake","quakec"],"latest_commit_sha":null,"homepage":"","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/vkazanov.png","metadata":{"files":{"readme":"README.org","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-10T17:05:59.000Z","updated_at":"2024-06-03T00:37:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f1d36cb-ada9-429e-9b47-44830b9a7eb2","html_url":"https://github.com/vkazanov/quakec-mode","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkazanov%2Fquakec-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkazanov%2Fquakec-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkazanov%2Fquakec-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkazanov%2Fquakec-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vkazanov","download_url":"https://codeload.github.com/vkazanov/quakec-mode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244014132,"owners_count":20383715,"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","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","modding","quake","quakec"],"created_at":"2024-10-10T14:38:11.099Z","updated_at":"2025-03-19T19:31:29.838Z","avatar_url":"https://github.com/vkazanov.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"* Emacs major mode for QuakeC files\n\n  =quakec-mode= provides support for the original Quake 1 extension language, as well as\n  some popular extensions provided by the FTEQCC and GMQCC compilers. In addition to qc\n  code itself, a bundled =quakec-progs-mode= supports editing traditions src files.\n\n  Features:\n\n  - QuakeC syntax\n\n  - progs.src syntax highlighting\n\n  - imenu support\n\n  - xref-based definition lookups\n\n  - ElDoc inline help for known defintions\n\n  - completion-at-point backend for known definition\n\n  - compilation mode support\n\n  - which-function support\n\n  In other words, this is your typical Emacs major-mode.\n\n* A QuakeC project as seen by quakec-mode\n\n  =quakec-mode= understands QuakeC mode projects as a directory containing a file\n  specified in the =quakec-project-source= variable (=progs.src= by default).\n\n* Compiling with compilation-mode\n\n  QuakeC includes compilation diagnostic message highlighting for =FTEQCC= and =GMQCC=.\n  Custom compilation commands are provided in the mode map: =quakec-compile= (=C-c C-c=)\n  and =quakec-recompile= (=C-c C-r=). Custom compilation commands always run from the\n  QuakeC project root defined by the =quakec-project-source= file.\n\n* Completion and definition lookups\n\n  The default =completion-at-point= backend (provided by =quakec-completion-at-point=)\n  loads definitions from the current buffer and a few additional files listed in\n  =quakec-project-definition-files= variable (=defs.qc= and =world.qc= by default).\n\n  For best experience it makes sense to use an additional completion frontend such as\n  =company-mode=.\n\n* Flymake\n\n  Partial support for error highlighting with Flyamke by FTEQCC / GMQCC is provided. Its\n  usefulness is limited because of how both compilers don't support limiting compilation\n  errors to a single file and always try to compile the full project. Most of the time\n  this means that errors will only be shown for files listed early in the =progs.src=\n  file.\n\n  Flymake support can be added by running =(quakec-setup-flymake-fteqcc-backend)= or\n  =(quakec-setup-flymake-gmqcc-backend)= followed by the usual =(flymake-mode 1)=.\n\n* Setup\n\nExample setup:\n\n#+begin_src emacs-lisp\n  (defun my-quakec-mode-hook ()\n    ;; typical QuakeC conventions (makes sense to set through\n    ;; .dir-locals.el files)\n    (setq-local indent-tabs-mode t)\n    (setq-local tab-width 4)\n\n    ;; Company mode backend to for completion-at-point for local\n    ;; definition\n\n    ;; (setq-local company-backends '(company-capf))\n\n    ;; Limited Flymake support for error/warning inline highlighting\n\n    ;; (quakec-setup-flymake-fteqcc-backend)\n    ;; (flymake-mode 1)\n    )\n\n  (use-package quakec-mode\n    ;; drop the quakec-mode.el somewhere (or just install from MELPA)\n    :load-path \"path/to/quakec-mode\"\n    ;; run our configration\n    :hook (quakec-mode . my-quakec-mode-hook))\n#+end_src\n\n* Reference\n\n  - Classic [[https://pages.cs.wisc.edu/~jeremyp/quake/quakec/quakec.pdf][QuakeC reference manual]]\n\n  - [[https://www.fteqcc.org/dl/fteqcc_manual.txt][FTEQCC manual]], a popular QuakeC compiler\n\n  - [[https://graphitemaster.github.io/gmqcc/][GMQCC manual]], a deeply modernised standalone QuakeC compiler\n\n  - [[https://github.com/id-Software/Quake-Tools/tree/master/qcc][QCC]], the original QuakeC compiler, complete with all the bugs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvkazanov%2Fquakec-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvkazanov%2Fquakec-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvkazanov%2Fquakec-mode/lists"}