{"id":13863026,"url":"https://github.com/purescript-emacs/psc-ide-emacs","last_synced_at":"2025-07-14T13:33:15.721Z","repository":{"id":43291588,"uuid":"41870579","full_name":"purescript-emacs/psc-ide-emacs","owner":"purescript-emacs","description":"Emacs integration for PureScript's psc-ide tool.","archived":false,"fork":false,"pushed_at":"2024-01-13T12:24:00.000Z","size":315,"stargazers_count":131,"open_issues_count":15,"forks_count":31,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-05T06:06:37.002Z","etag":null,"topics":["emacs","emacs-mode","ide","purescript"],"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/purescript-emacs.png","metadata":{"files":{"readme":"README.org","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}},"created_at":"2015-09-03T16:26:16.000Z","updated_at":"2024-05-30T19:14:13.000Z","dependencies_parsed_at":"2023-12-19T04:11:07.944Z","dependency_job_id":"7a792ce8-1b00-4ff8-ba61-3d656560235e","html_url":"https://github.com/purescript-emacs/psc-ide-emacs","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/purescript-emacs%2Fpsc-ide-emacs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-emacs%2Fpsc-ide-emacs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-emacs%2Fpsc-ide-emacs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-emacs%2Fpsc-ide-emacs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purescript-emacs","download_url":"https://codeload.github.com/purescript-emacs/psc-ide-emacs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225980898,"owners_count":17554919,"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","emacs-mode","ide","purescript"],"created_at":"2024-08-05T06:02:00.003Z","updated_at":"2024-11-22T23:30:38.898Z","avatar_url":"https://github.com/purescript-emacs.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"[[http://melpa.org/#/psc-ide][file:http://melpa.org/packages/psc-ide-badge.svg]]\n\n* psc-ide-emacs\n\n  Emacs integration for [[https://github.com/purescript/purescript/tree/master/psc-ide][psc-ide]]\n\n** Installation\n\n   The package is available on [[http://melpa.org/#/psc-ide][MELPA]]. Please read the MELPA's [[http://melpa.org/#/getting-started][Getting Started]] guide\n   for more information. Once you have MELPA configured install psc-ide-emacs\n   via =package.el=:\n\n   #+BEGIN_SRC elisp\n   M-x package-install RET psc-ide RET\n   #+END_SRC\n\n** Configuration\n\n   Add the following to your =~/.emacs=:\n\n   #+BEGIN_SRC elisp\n\n   (require 'psc-ide)\n\n   (add-hook 'purescript-mode-hook\n     (lambda ()\n       (psc-ide-mode)\n       (company-mode)\n       (flycheck-mode)\n       (turn-on-purescript-indentation)))\n   #+END_SRC\n\n   If you want to use the psc-ide server that is relative to your ~npm bin~\n   directory, e.g. ~./node_modules/.bin/purs~, add this line to your\n   config:\n\n   #+BEGIN_SRC elisp\n   (setq psc-ide-use-npm-bin t)\n   #+END_SRC\n\n   If you would like to use a custom codegen target for your rebuild. (default\n   is \"js\")\n\n   There is a `psc-ide-codegen` option that can be set globally in your user config:\n\n   #+BEGIN_SRC elisp\n   (setq psc-ide-codegen '(\"corefn\"))\n   #+END_SRC\n\n   or in specific files by addind this to the top of file:\n\n   #+BEGIN_SRC elisp\n   -- -*- psc-ide-codegen: (\"corefn\") -*-\n   #+END_SRC\n\n\n** Usage\n\n*** Start the Server ~C-c C-s~\n\n*** Load all the modules ~C-c C-l~\n    This isn't usually necessary, as the start server command sends a load all\n    command after starting the server.\n*** Get completions from the modules you imported while you type (through ~company-mode~)\n    [[http://i.imgur.com/8WnRh0s.gif]]\n\n*** Get completions from all modules in your project with ~company-complete~\n    This was bound to ~C-SPC~ in earlier versions but was too intrusive for\n    usual emacs users so you'll have to bind it to a key of choice.\n\n    eg. ~(global-set-key (kbd \"C-SPC\") 'company-complete)~\n\n    [[http://i.imgur.com/LR69MdN.gif]]\n\n*** Show type for identifier under cursor ~C-c C-t~\n    [[http://i.imgur.com/A8cXe9t.gif]]\n\n    Prepending the universal argument expands type synonyms in the displayed\n    type.\n\n    For example:\n    ~C-c C-t~ might return ~getName :: Person -\u003e String~\n\n    If ~Person~ is a type synonym for a record you can use the universal\n    argument to inspect that record:\n\n    ~C-u C-c C-t~ will then return ~getName :: { name :: String, age :: Int } -\u003e\n    String~\n\n*** Go to definition =M-.=\n    You can use M-, to jump back to where you came from . If your sourcefiles\n    are not captured by the default globs you can add a ~.dir-locals.el~ file to\n    the root of your project, like so:\n\n    #+BEGIN_SRC elisp\n      ((purescript-mode\n        . ((psc-ide-source-globs\n            . (\"src/**/*.purs\" \"test/**/*.purs\" \"examples/**/*.purs\")))))\n    #+END_SRC\n    Modify the globs accordingly and don't worry about dependency\n    globs for bower, psc-package or spago projects. The plugin picks\n    these up by default. Check the doc-string for\n    `psc-ide-source-globs` for some advanced options.\n\n*** Add an import for the identifier under cursor ~C-c C-i~\n\n    If the import is ambiguous you will get a selection of modules, from which\n    you can choose the identifier you want.\n\n    [[http://i.imgur.com/VBXDvPg.gif]]\n\n*** Add an import on completion (turned on by default)\n    Can be turned off with:\n    #+BEGIN_SRC elisp\n    (customize-set-variable 'psc-ide-add-import-on-completion nil)\n    #+END_SRC\n\n    [[http://i.imgur.com/r6rl2lT.gif]]\n\n*** Case Split the given type under cursor ~C-c C-c~\n    [[http://i.imgur.com/hTnHxhK.gif]]\n*** Add a clause for the function definition under cursor ~C-c C-a~\n    [[http://i.imgur.com/VNeC3z8.gif]]\n\n*** Rebuild the current module and get quick error reporting ~C-c C-b~\n    If you set ~(customize-set-variable 'psc-ide-rebuild-on-save t)~ psc-ide will\n    try to rebuild your module on every save.\n\n    [[http://i.imgur.com/c0L6C4B.gif]]\n\n*** Flycheck Support\n**** Ignore certain errors or warnings\nThis is determined by the variable ~psc-ide-flycheck-ignored-error-codes~. It can be configured\nwith ~customize-option~ or similar methods.\n\n**** Insert suggestion from error ~C-c M-s~\n     When the cursor is placed over an error that includes suggestion information, use ~C-c M-s~ to\n     apply the suggestion.\n\n*** Keybindings\n\n   | Key         | Function                             |\n   |-------------+--------------------------------------|\n   | ~C-c C-s~   | ~psc-ide-server-start~               |\n   | ~C-c C-q~   | ~psc-ide-server-quit~                |\n   | ~C-c C-t~   | ~psc-ide-show-type~                  |\n   | ~C-c C-i~   | ~psc-ide-add-import~                 |\n   | ~C-c C-a~   | ~psc-ide-add-clause~                 |\n   | ~C-c C-c~   | ~psc-ide-case-split~                 |\n   | ~C-c C-l~   | ~psc-ide-load-all~                   |\n   | ~C-c C-b~   | ~psc-ide-rebuild~                    |\n   | ~C-c C-S-l~ | ~psc-ide-load-module~                |\n   | ~C-c M-s~   | ~psc-ide-flycheck-insert-suggestion~ |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-emacs%2Fpsc-ide-emacs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurescript-emacs%2Fpsc-ide-emacs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-emacs%2Fpsc-ide-emacs/lists"}