{"id":13804389,"url":"https://github.com/nobody-famous/alive","last_synced_at":"2025-10-20T20:47:11.189Z","repository":{"id":38302957,"uuid":"247301340","full_name":"nobody-famous/alive","owner":"nobody-famous","description":"Common Lisp Extension for VSCode","archived":false,"fork":false,"pushed_at":"2025-05-11T18:25:11.000Z","size":15041,"stargazers_count":231,"open_issues_count":42,"forks_count":24,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-11T19:31:20.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nobody-famous.png","metadata":{"files":{"readme":"README-dev.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2020-03-14T15:24:31.000Z","updated_at":"2025-04-30T21:19:03.000Z","dependencies_parsed_at":"2022-07-12T17:24:10.715Z","dependency_job_id":"c32d4816-c2f4-4e51-9850-bd5572382fd6","html_url":"https://github.com/nobody-famous/alive","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobody-famous%2Falive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobody-famous%2Falive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobody-famous%2Falive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobody-famous%2Falive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nobody-famous","download_url":"https://codeload.github.com/nobody-famous/alive/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253993170,"owners_count":21996252,"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-04T01:00:46.932Z","updated_at":"2025-10-20T20:47:06.142Z","avatar_url":"https://github.com/nobody-famous.png","language":"TypeScript","funding_links":[],"categories":["VSCode","TypeScript","VSCode ##"],"sub_categories":["Third-party APIs"],"readme":"# Alive Development\n\nNotes on making changes to the Alive codebase.\n\n## Basic Knowledge\n\nAlive is primarily constructed using TypeScript.\nBasic knowledge of this language or JavaScript is necessary.\nFamiliarity with\n[`npm`](https://nodejs.dev/en/learn/an-introduction-to-the-npm-package-manager/)\nis recommended.\n\nAlive provides a language extension to support Common Lisp.\nBasic understanding of that language and the Lisp REPL is assumed.\nThe specific Common Lisp implementation is Steel Bank Common Lisp.\n\nThe Alive codebase is hosted on\n[github](https://github.com/nobody-famous/alive).\nBasic understanding of `git` and `github` usage\nincluding branches and forking is necessary.\n\n### VSCode Extension Development\n\nDeveloping extensions for VSCode is quite involved.\nStart learning with the\n[Extension API](https://code.visualstudio.com/api) page.\n\n## Startup\n\n### Install Tools\n\nInstall the following tools:\n* `git`\n* `npm` JavaScript package manager (`yarn` might also work)\n* Steel Bank Common Lisp (SBCL)\n\nYou should be able to execute the following programs:\n* `git` (or whatever tool you prefer to use)\n* `npm` JavaScript package manager\n* `sbcl` Common Lisp REPL\n\nThe rest of this document assumes the command-line use of `git`.\nYou may prefer a different tool (including VSCode).\n\n### Acquiring the Code\n\nAlive development is done on a fork of the repository.\nPull Requests (PRs) are made from a branch in that fork\ninto the Alive repository.\n\n* [Create a fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo)\n  of the Alive code into your own `github` account.\n* [Clone your fork](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)\n  onto your development machine.\n\n### Inital Steps\n\nAfter changing directory into the cloned development directory there are a few first steps.\n\n#### Install JavaScript Modules\n\nRun the command\n```\nnpm install\n```\nin order to acquire necessary JavaScript modules\nspecified in the `package.json` file.\n\nFailing to do this will result in hundreds of errors\nas the Alive code will not be able to link to\nthe VSCode Extension API.\n\n#### Compile Code\n\nAt this point it should be possible to execute\n```\nnpm run compile\n```\nwithout any errors.\n\n_If there are errors_ something bad happened.\n\n## Development and Debugging\n\n### Development Branch\n\nAlways work on a development branch, not the main branch:\n```\ngit checkout -b \u003cbranch-name\u003e\n```\n\n### Development\n\nMake whatever changes seem appropriate on your development branch.\nUse VSCode in order to get the debugger support for VSCode extension development.\n\nCompilation of the extension code is not done automatically by VSCode.\nIt can be done manually by hitting `\u003cctrl\u003e-\u003cshift\u003e-B` and choosing\nan appropriate task.\n\nThe recommended task is `npm:watch` which will start a process that\nwill automatically compile and build anytime a file changes.\nThe process will run forever in the VSCode Terminal window once started.\n\nThe same thing can be done in a shell window by executing\n```\nnpm run watch\n```\n\n### Debugging\n\nThe simplest way to launch the debugger is with the `F5` key.\nThis should bring up a VSCode Extension Development Host -- another VSCode window with the modified Alive extension.\nTest the extension within this window.\n\nStandard VSCode debugging features (e.g. breakpoints, stepping through code) are available in the development VSCode window.\nA floating button bar on the upper right has icons for\nstepping through code and a red square outline\nwhich will kill the testing window.\n\nYou can also start the debugger from the `Run and Debug` panel\nthat you can start from the Activity Bar on the left.\nWhen this is showing there will be a small green triangle outline at the top of the panel which launch the Extension Development Host\nthe same as the `F5` key.\n\n#### Output Panel\n\nIn addition to the more sophisticated debugging features available from VSCode\nit is possible to view various types of output data.\n\nShow the `Output` view at the bottom of the screen (`\u003cctrl-K\u003e\u003cctrl-H\u003e` or\nthe **Output: Focus on Output View** command) or just select the `Output` tab on the bottom panel.\nOn the right part of the title bar there is a dropdown to choose output from different threads.\n\nFor Alive development the following are available (from the extension host only):\n\n* `Alive LSP` shows the output of the SBCL process running the Alive-lsp server.\n* `Alive Log` shows the typescript logging statements.\n\n#### Log Statements\n\nIn order to send log statements to the `Alive Log` it is necessary to use the logging\nmechanism defined in `vscode/Log.ts`.[^1]\n\nImport the necessary package:\n```\nimport { log, toLog } from './vscode/Log'\n```\nwhere the specific relative path varies depending on the calling file.\n\nLog statements are very simple:\n```\nlog(\"Hello world!\")\n```\nInsert variable(s) into the log statement using javascript template strings:\n```\nlog(`Failed to init ASDF tree: ${err}`)\n```\n\n[^1]: Using `console.log()` will work, but the output goes to a different place.\nUse the command **Developer: Toggle Developer Tools** and then switch to the `Console` tab.\nWhen running in debug mode it also goes to the debug console on the parent\n(as opposed to the extension host) window.\nUsing the `vscode/Log.ts` mechanism is preferred.\n\n## Submitting Pull Requests\n\nAfter your changes are working properly it is time to submit a PR from your development branch.\n[Submit the PR from your fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)\nto the [Alive repository](https://github.com/nobody-famous/alive) on `github`.\n\n## VSCode Extension Language Server\n\nVSCode language extensions depend upon a separate [Language Server Protocol](https://code.visualstudio.com/api/language-extensions/language-server-extension-guide) (LSP) which understands the language and provides support to the language extension itself. For the Alive extension this code is provided in the\n[Alive-lsp](https://github.com/nobody-famous/alive-lsp) repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobody-famous%2Falive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnobody-famous%2Falive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobody-famous%2Falive/lists"}