{"id":13769867,"url":"https://github.com/projectured/projectured","last_synced_at":"2026-03-14T19:54:17.318Z","repository":{"id":6757164,"uuid":"8003742","full_name":"projectured/projectured","owner":"projectured","description":"ProjecturEd is a generic purpose projectional editor.","archived":false,"fork":false,"pushed_at":"2022-09-22T09:53:57.000Z","size":6281,"stargazers_count":135,"open_issues_count":2,"forks_count":9,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-03T17:08:51.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.projectured.org","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/projectured.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}},"created_at":"2013-02-04T08:34:22.000Z","updated_at":"2024-07-06T05:10:26.000Z","dependencies_parsed_at":"2023-01-11T20:09:59.352Z","dependency_job_id":null,"html_url":"https://github.com/projectured/projectured","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/projectured%2Fprojectured","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectured%2Fprojectured/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectured%2Fprojectured/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectured%2Fprojectured/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/projectured","download_url":"https://codeload.github.com/projectured/projectured/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225004693,"owners_count":17405659,"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":[],"created_at":"2024-08-03T17:00:32.335Z","updated_at":"2025-12-18T16:25:55.544Z","avatar_url":"https://github.com/projectured.png","language":"Common Lisp","readme":"![My image](http://s9.postimage.org/mxnmsv4en/projectured.png)\n\n# Description #\n\nProjecturEd is a general purpose projectional editor written in Common Lisp.\n\nIt supports the integrated presentation and editing of arbitrary problem domains. These domains potentially include but not limited to: word processing, spreadsheets, markup languages, programming languages, modelling, graphs, graphics, etc. and any combination of them. The edited data is represented in their natural, domain specific data structures (as opposed to a flat string of characters), which accommodates for the implementation of many interesting, but yet to be explored features of structured editing.\n\nIt also supports multiple projections of the same data, and thus it can simultaneously provide different notations, potentially all of them editable. These views can be textual, fully graphical, or in between, and because of the internal architecture of the editor, the various projections combine well. It is expected that users would not only add new documents, but also new projections as needed.\n\n# Running the Editor #\n\nThe easiest way to run the editor is to install it using [Quicklisp](http://quicklisp.org).\n\n### 1. Get a reasonably fresh SBCL ###\n\nFor example, on Debian Stretch:\n\n```\nsudo apt-get install sbcl rlwrap git libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0\n```\n\nOtherwise visit the [SBCL website](http://sbcl.org/platform-table.html) for instructions, and make sure you have the right version of libSDL2 libraries installed for the SDL backend.\n\n### 2. Install Quicklisp ###\n\nOnce you have SBCL installed, you can continue with [installing Quicklisp](http://www.quicklisp.org/beta/#installation):\n\n```\ncd ~\nwget http://beta.quicklisp.org/quicklisp.lisp\n\nsbcl --load quicklisp.lisp --eval \"(quicklisp-quickstart:install)\" --eval \"(ql:add-to-init-file)\" --eval \"(exit)\"\n```\n\nTo finish the installation of Quicklisp approve the prompted question.\n\n### 3. Get ProjecturEd ###\n\n#### Get the latest from git (recommended) ####\n\nIf you want to play with the latest (and potentially less stable) version of ProjecturEd:\n```\ncd ~/quicklisp/local-projects/\ngit clone https://github.com/projectured/projectured.git\n```\n\n#### Or get it from Quicklisp ####\n\n```\nsbcl --eval \"(ql-dist:ensure-installed (ql-dist:find-system :projectured.executable))\" --eval \"(exit)\"\n```\n\n### 4. Build a standalone executable of ProjecturEd ###\n\nDepending on how you got ProjecturEd, run one of the following shell scripts:\n\n```\n~/quicklisp/local-projects/projectured/bin/build.sh\n```\n\nOr:\n\n```\nsh ~/quicklisp/dists/quicklisp/software/projectured*/bin/build.sh\n```\n\nNote: The build log will be saved next to the build.sh script.\n\n### 5. Run the editor executable ###\n\nAfter the build has been completed you can run the editor from the command line with:\n\n```\ncd ~/quicklisp/local-projects/projectured/\nbin/projectured -h\n```\n\nThere are a few small example documents that you can promptly start editing:\n\n```\ncd ~/quicklisp/local-projects/projectured/\nbin/projectured example/contact-list.json\n```\n\nAlternatively, you can run the editor by loading the project in your lisp. This allows experimentation with the code, changing this and that. Start SBCL with ```rlwrap sbcl```, and copy these into its REPL:\n\n```\n(ql:quickload :projectured.executable)\n(projectured::executable-toplevel)\n```\n\nIf everything went fine, then you should see a window presenting an empty generic document.\n\n```\n(ql:quickload :projectured.executable)\n(projectured::executable-toplevel \"~/quicklisp/local-projects/projectured/example/contact-list.json\")\n```\n\nThis last example will show a window presenting an example JSON document. You can always press Control + H to get context sensitive help in the editor.\n\n### Run some of the tests ###\n\nStart SBCL with `rlwrap sbcl`, and copy these into its REPL:\n\n```\n(ql:quickload :projectured.sdl.test)\n(projectured.test::test)\n```\n\nThis will run the automated test suite and print the result in the REPL.\n\n### Troubleshooting ###\n\n#### Isolate locally installed libraries ####\n\nIf you have some Common Lisp libraries installed somewhere on your system, then try to make sure that nothing besides what's in quicklisp gets loaded. You can achieve that by adding the following to the beginning of your .sbclrc:\n\n```\n(require :asdf)\n(funcall (read-from-string \"asdf:initialize-source-registry\")\n         '(:source-registry :ignore-inherited-configuration))\n```\n\n#### Too old ASDF ####\n\nIf you get ASDF realted errors then try to clone the latest ASDF release:\n```\ncd ~/quicklisp/local-projects/\ngit clone https://gitlab.common-lisp.net/asdf/asdf.git --branch release\n```\n\n#### Loading without building an executable ####\n\n```\n(ql:quickload '(:projectured.executable :hu.dwim.def+swank))\n(projectured::executable-toplevel)\n```\n\n\n# Collaboration #\n\nIt's an unfunded opensource project, under much slower development than we would like it to be. If you want to help us, either financially or with your patches, then feel free to get in touch at [projectured@gmail.com](mailto:projectured@gmail.com) or the [google group](http://groups.google.com/d/forum/projectured).\n\n### Donation ###\n\nThe less we need to work to pay our bills, the more we can work on ProjecturEd. Bitcoin donations are welcome to the following address: 15XjRQUnSy8U7j2EFZyGFAi2KFnDnTEwqZ\n\n### Wiki ###\n\nThere's a separate [**wiki**](https://github.com/projectured/projectured/wiki) with an increasing number of pages. It gives an overview of the whole idea, and it also allows contributing documentation to the project.\n\n### Documentation ###\n\nCurrently the best thing to do is to look at the source code. Luckily the codebase is relatively small (around 20k LoC).\n\n### Check out the latest version ###\n\nIf you want to try the latest version, then you should git clone the repository into ```~/quicklisp/local-projects/``` and Quicklisp will automatically use that version instead of the snapshot from its archives.\n\n# Status #\n\nProjecturEd is work in progress, and at this stage it's interesting primarily for programmers who are ready to experiment with it.\n\n### Screenshots ###\n\nIf you would like to take a look at the editor in action, then look at this [**page**](https://github.com/projectured/projectured/wiki/Screenshots). It contains a couple of screenshots showing various problem domains using different projections. Please note that these screenshots are somewhat outdated.\n\n### Videos ###\n\nThere are some [screencasts on youtube](http://www.youtube.com/user/projectured) that shows the editor in action and demonstrate certain features.\n\n### Performance ###\n\nThe printer and the reader are written using a \"purely functional\" constraint based change propagation algorithm that allows lazy and incremental computation of results. So, the infrastructure is in place to be fast enough to be useful one day...\n\n# License #\n\n[BSD License](https://github.com/projectured/projectured/wiki/License)\n\nHappy hacking!\n","funding_links":[],"categories":["Structural code editor projects","Applications"],"sub_categories":["Productivity"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprojectured%2Fprojectured","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprojectured%2Fprojectured","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprojectured%2Fprojectured/lists"}