{"id":17214312,"url":"https://github.com/metaxal/quickscript-extra","last_synced_at":"2026-02-17T11:02:48.021Z","repository":{"id":45483890,"uuid":"115354720","full_name":"Metaxal/quickscript-extra","owner":"Metaxal","description":"Scripts for Quickscript","archived":false,"fork":false,"pushed_at":"2025-03-24T10:13:32.000Z","size":107,"stargazers_count":10,"open_issues_count":12,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-24T15:56:01.771Z","etag":null,"topics":["drracket","racket"],"latest_commit_sha":null,"homepage":null,"language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Metaxal.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-12-25T17:51:06.000Z","updated_at":"2025-04-29T04:02:06.000Z","dependencies_parsed_at":"2024-06-19T04:08:38.213Z","dependency_job_id":"914381b2-180c-4ccb-ac6e-dcb04e5c32c0","html_url":"https://github.com/Metaxal/quickscript-extra","commit_stats":{"total_commits":87,"total_committers":5,"mean_commits":17.4,"dds":"0.26436781609195403","last_synced_commit":"55e476c1be8552165e8b0dfba4db9b6e4dcf741f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Metaxal/quickscript-extra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaxal%2Fquickscript-extra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaxal%2Fquickscript-extra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaxal%2Fquickscript-extra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaxal%2Fquickscript-extra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Metaxal","download_url":"https://codeload.github.com/Metaxal/quickscript-extra/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaxal%2Fquickscript-extra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278925602,"owners_count":26069726,"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-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["drracket","racket"],"created_at":"2024-10-15T03:02:31.865Z","updated_at":"2025-10-08T10:13:37.075Z","avatar_url":"https://github.com/Metaxal.png","language":"Racket","readme":"# Quickscript Extra\n\nSome scripts for [Quickscript](https://github.com/Metaxal/quickscript).\n\n## 1. Installation\n\nIn DrRacket, in `File|Package manager|Source`, enter\n`quickscript-extra`.\n\nOr, on the command line, type: `raco pkg install quickscript-extra`.\n\nIf DrRacket is already running, click on `Scripts|Manage scripts|Compile\nscripts and reload menu`.\n\n## 2. Scripts\n\n* **abstract-variable**: Create a variable from the selected expression\n  [video](https://www.youtube.com/watch?v=qgjAZd4eBBY)\n\n* **add-menu**: \\(Example\\) Shows how to dynamically add a menu to\n  DrRacket.\n\n* **all-tabs**: Have a menu that displays all open tabs in DrRacket.\n\n* **author-date**: Insert text snippets with author, date, time, and\n  licence.\n\n* **backup-file**: Copies the current file in the ’backups’ subdirectory\n  with a time stamp\n\n* **bookmarks**: Quickly navigate between lines and headlines\n\n* **color-chooser**: Pick a color in the palette and insert it in\n  DrRacket’s current file.\n\n* **color-theme**: Display information about the current color theme.\n\n* **complete-word**: Word completion from a given user dictionary\n\n* **current-file-example**: \\(Example\\) Displays the current file and\n  the current selected string in a message box.\n\n* **def-signatures**: Displays the signature of the procedure under the\n  cursor (like DrRacket’s blue box but works also when the file does not\n  compile).\n\n* **dynamic-abbrev**: Cyclic word completion using the words of the\n  current file.\n\n* **enter-submod**: Easily enter a submodule (main, test, drracket,\n  etc.) in the interaction window.\n\n* **extract-function**: Extracts a block of code out of its context and\n  generates a function and a call\n  [video](https://www.youtube.com/watch?v=XinMxDLZ7Zw)\n\n* **filepath-to-clipboard**: Write the path of the current file in the\n  clipboard.\n\n* **git**: Some git commands (linux only). Currently meant as a demo.\n\n* **goto-line**: Jump to a given line number in the current editor.\n\n* **gui-tools**: Code snippets for racket/gui widgets. Meant as a demo.\n\n* **indent-table**: Indent rows on double-space-separated columns\n  [video](https://www.youtube.com/watch?v=KJjVREsgnvA)\n\n* **insert-pict**: \\(Example\\) Insert a ‘pict‘ at the current position.\n\n* **number-tabs**: \\(Example\\) displays the number of opened tabs in a\n  message box.\n\n* **open-collect-file**: Open a file in DrRacket, starting in racket’s\n  collections base path.\n\n* **open-dir**: Open the system’s file browser in the current directory.\n\n* **open-terminal**: Open a terminal in the directory of the current\n  file.\n\n* **pasterack**: Opens Pasterack in the browser.\n\n* **persistent-counter**: \\(Example\\) Shows how the ‘\\#:persistent‘\n  property works.\n\n* **provided-by**: Displays a list of modules that ‘provide‘ the\n  procedure under the cursor.\n\n* **regexp-replace**: Replace patterns in the selected text using\n  regular expressions.\n\n* **reorder-tabs**: \\(Example\\) Move DrRacket’s tabs around.\n\n* **reverse-selection**: \\(Example\\) The simplest script example:\n  reverse the selected string.\n\n* **sections**: Surrounds the selected text by comments ASCII frames.\n\n* **sort-lines**: Sorts the selected lines in (anti-)alphabetical order.\n\n* **surround-selection**: \\(Example\\) Surround the selected text with\n  various characters.\n\n* **tweet**: \\(Example\\) Tweet the current selection. See the script\n  file for configuration details.\n\n* **url2script**: Fetches a quickscript at a given url and adds it to\n  the library.\n\n## 3. url2script\n\nThe `url2script` script is special: it allows you to easily fetch\nsingle-file quickscripts from anywhere on the internet by providing the\nurl to the raw code. It is actually a little smarter than that because\nit understands non-raw urls from [github\ngists](https://gist.github.com), [gitlab\nsnippets](https://gitlab.com/snippets), [pastebin](https://pastebin.com)\nand [pasterack](http://pasterack.org).\n\nSome single-file scripts can be found on the [Racket\nwiki](https://github.com/racket/racket/wiki/Quickscript-Scripts-for-DrRacket).\n\nA script previously fetched with url2script can also be easily updated\nby first opening it via `Scrits|Manage|Open script…` then clicking on\n`Scripts|url2script|Update current script`.\n\nWhen a script is fetched by `url2script`, a `\"url2script-info\"`\nsubmodule is automatically added (unless one already exists) with\ninformation about the filename in which the script is to be saved (or\nhas been saved), and the original url of the script. The latter is used\nfor updating the script as described above. The submodule looks like\nthis:\n\n```racket\n(module url2script-info racket/base                             \n (provide url filename)                                         \n (define filename \"the-default-filename-to-save-the-script.rkt\")\n (define url \"https://url.of.the/script.rkt\"))                  \n```\n\nIf you want to publish a single-file quickscript without making a\npackage, consider adding this submodule so as to provide a default\nfilename (otherwise the user who fetches your script will have to type\none themselves, and may be unsure what name to pick).\n\nAlso consider adding a permissive license. We recommend a dual license\nApache 2.0 / MIT:\n\n```racket\n;;; Copyright \u003cyear\u003e \u003cemail or name or entity\u003e                        \n;;; License: [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) or                   \n;;;          [MIT license](http://opensource.org/licenses/MIT) at your option.                                                               \n```\n\nScripts fetched by `url2script` are added to the default script\ndirectory. They can be modified as desired (as long as the license\npermits it)\n\n## 4. Customizing\n\nScripts can be selectively deactivated from the library\n\\(`Scripts|Manage scripts|Library`).\n\nIf you change the source code of a script installed from the\n`quickscript-extra` package \\(or from any package containing\nquickscripts\\), you will lose all your modifications when the package is\nupdated. To avoid this, you can use Quickscript’s [shadow\nscripts](https://docs.racket-lang.org/quickscript/index.html?q=quickscripts#%28part._.Shadow_scripts%29):\nThe shadow script calls the original script without modifying it, and\ncan be modified to your taste without being modified when the original\nscript is updated.\n\nIn particular, if you want to change the default label, menu path or\nkeybinding of a script installed from `quickscript-extra`, go to\n`Scripts|Manage|Library…`, select the `quickscript-extra` directory,\nthen the script you want, and click on `Shadow`. This opens a new\n(shadow) script that calls the original script where you can change what\nyou want.\n\nNote that the shadowed script is deactivated so as to avoid duplicate\nmenu entries and keybindings.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaxal%2Fquickscript-extra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaxal%2Fquickscript-extra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaxal%2Fquickscript-extra/lists"}