{"id":18274015,"url":"https://github.com/raymo111/cs135-drtools","last_synced_at":"2026-01-19T23:35:27.610Z","repository":{"id":40005410,"uuid":"296789683","full_name":"Raymo111/cs135-drtools","owner":"Raymo111","description":"DrRacket Tools for CS 135 course at UWaterloo","archived":false,"fork":false,"pushed_at":"2022-05-19T04:43:48.000Z","size":1407,"stargazers_count":26,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-14T22:17:24.009Z","etag":null,"topics":["autocomplete","cs135","cs135-tools","drracket","drracket-customization","drracket-dark-mode","drracket-preferences","drracket-theme","hacktoberfest","htdp","keybindings","keyboard-shortcuts","racket","racket-lang","racket-language","racket-teachpack","raco","shortcut","shortcuts","uwaterloo"],"latest_commit_sha":null,"homepage":"","language":"Racket","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/Raymo111.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["Raymo111"]}},"created_at":"2020-09-19T04:59:31.000Z","updated_at":"2024-10-12T12:47:29.000Z","dependencies_parsed_at":"2022-07-23T14:46:33.449Z","dependency_job_id":null,"html_url":"https://github.com/Raymo111/cs135-drtools","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/Raymo111%2Fcs135-drtools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raymo111%2Fcs135-drtools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raymo111%2Fcs135-drtools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raymo111%2Fcs135-drtools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Raymo111","download_url":"https://codeload.github.com/Raymo111/cs135-drtools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247974595,"owners_count":21026742,"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":["autocomplete","cs135","cs135-tools","drracket","drracket-customization","drracket-dark-mode","drracket-preferences","drracket-theme","hacktoberfest","htdp","keybindings","keyboard-shortcuts","racket","racket-lang","racket-language","racket-teachpack","raco","shortcut","shortcuts","uwaterloo"],"created_at":"2024-11-05T12:08:20.557Z","updated_at":"2026-01-19T23:35:27.604Z","avatar_url":"https://github.com/Raymo111.png","language":"Racket","funding_links":["https://github.com/sponsors/Raymo111"],"categories":[],"sub_categories":[],"readme":"# CS 135 DrTools\nDrRacket Tools for CS 135 course at UWaterloo\n\n\u003cimg src=\"demo/demo.gif\" alt=\"Autocomplete Demo\" title=\"Autocomplete Demo\" /\u003e\n\n## Disclaimers\n- **The authors are NOT responsible for any issues using any part of this repository will cause you. ALWAYS back up your files, preferences and code!**\n- **Though it may not be necessary in all cases, DrRacket should be restarted after most customizations to allow all changes to take effect.**\n\n## Acknowledgements\n- Autocomplete was adapted from *complete-word* in [Quickscript Extra](https://github.com/Metaxal/quickscript-extra)\n- Keybindings was adapted from [Racket-lang.org](https://docs.racket-lang.org/drracket/Keyboard_Shortcuts.html#%28part._defining-shortcuts%29) documentation\n\n### Contributors\n- Creator and Maintainer: [Raymond Li](https://github.com/Raymo111) ([https://Raymond.Li](https://raymond.li))\n- Co-creator: [Kaustubh Prabhakar](https://github.com/SantaKaus) ([https://KaustubhPrabhakar.tech](https://kaustubhprabhakar.tech))\n- Contributors: [Thomas Park](https://github.com/ThomasPark20), [Devon Mack](https://github.com/devonpmack), [Kaifee Haque](https://github.com/kaifee-haque)\n\n## Installation\nThere are 2 parts of this package that you can install. By following the steps below, you will get autocomplete and additional keybindings. To install the preferences, follow the installation section under [Racket Preferences](#installation-1). Default Racket keybindings will continue to work after installation.\n1. Go to `File \u003e Install Package...` from the menubar.\n2. Put `cs135-drtools` in the input field beside `Package Source:`, and click `Install`.\n4. Restart DrRacket.\n\n## Tools\n### Autocomplete\n- `Ctrl+Space` trigger (**Will NOT work in comments!**) just hit enter and remove the newline after completion, we're working on making these work in comments)\n- Completion for the following:\n\n| Shortcut | Generates               |\n|----------|-------------------------|\n| cx       | check-expect            |\n| cw       | check-within            |\n| ce       | check-error             |\n| df       | define function         |\n| d        | define                  |\n| ds       | define structure        |\n| m        | make structure          |\n| c        | cond with else          |\n| if       | if statement            |\n| con      | list in cons notation   |\n| li       | abbreviated list        |\n| dsp      | display                 |\n| t        | true                    |\n| f        | false                   |\n| e        | empty                   |\n| hdr      | file header             |\n| cmt      | comment                 |\n| l        | `;;   `                 |\n| ll       | 3-line comment          |\n| pa       | 3-line \"Part a\" comment |\n| pb       | 3-line \"Part b\" comment |\n| pc       | 3-line \"Part c\" comment |\n| pd       | 3-line \"Part d\" comment |\n| pe       | 3-line \"Part e\" comment |\n| pf       | 3-line \"Part f\" comment |\n| ppe      | Purpose and examples    |\n| ctr      | Contract                |\n| req      | Requires                |\n| tst      | Tests                   |\n| lox      | list-of-X Template      |\n| nelox    | ne-List-of-X Template   |\n| lo       | (listof )               |\n| nelo     | (ne-listof )            |\n| lost     | (listof Str)            |\n| nelost   | (ne-listof Str)         |\n| lob      | (listof Bool)           |\n| nelob    | (ne-listof Bool)        |\n| loc      | (listof Char)           |\n| neloc    | (ne-listof Char)        |\n| losy     | (listof Sym)            |\n| nelosy   | (ne-listof Sym)         |\n| lonu     | (listof Num)            |\n| nelonu   | (ne-listof Num)         |\n| lona     | (listof Nat)            |\n| nelona   | (ne-listof Nat)         |\n\n#### Usage:\n1. Type a shortcut\n2. Press `Ctrl+Space`\n3. The shortcut will be replaced with generated code\n\n### Keybindings\n- Works out of the box after installing the package\n- **Note: No commonly-used original keybindings are overwritten.** (i.e. The DrRacket default keybindings still do what they used to. This package simply adds more.)\n- Provides the following keybindings:\n\n| Keybinding     | What it does                                      | DrRacket default |\n|----------------|---------------------------------------------------|------------------|\n| Alt+R          | Run the program                                   | Ctrl+R or F5     |\n| Ctrl+Shift+F   | Indent all lines                                  | Ctrl+I           |\n| Ctrl+H         | Show Replace                                      | Ctrl+Shift+R     |\n| Ctrl+Shift+R   | Replace All                                       | *None*           |\n| Ctrl+/         | Comment out line with `;`                         | *None*           |\n| Ctrl+Backspace | Delete word left of cursor                        | Alt+Backspace    |\n| Ctrl+Delete    | Delete word right of cursor                       | Alt+Delete       |\n| Alt+Up/Down    | Switch between Interactions and Definitions panes | Ctrl+F6          |\n\n\u003c!--\n| Up             | Previous command in Interactions panes            | Ctrl+up          |\n| Down           | Next command in Interactions panes                | Ctrl+down        |\nKnown issue:\nUp/Down messes up multi-line inputs in the interactions window. I've chosen to leave this in because multiline interactions input that needs to be edited is uncommon and can simply be navigated via a mouse or Ctrl+Left/Right, whereas the terminal/shell/console-like up for previous command is used more often. Users that are unused to this or require multiline interactions input navigation can comment out the last two lines of the file, while I come up with a better way to implement this.\n--\u003e\n\n### Racket Preferences\n\u003c!--- **Note: Your preferences will NOT be overwritten upon installing this package, as long as you don't follow the installation instructions below.**--\u003e\n- Dark mode based on [Monokai v2.1](http://www.eclipsecolorthemes.org/?view=theme\u0026id=52794)\n- `[` (left square bracket) will automatically determine the right bracket for you (no need to `Shift+9` anymore!) and insert a close bracket for you as well\n- In addition to the notable ones mentioned here, all the features we found useful have been enabled. The default language for new files is set to `Beginning Student Custom`, the starting language for CS 135 at UWaterloo. This may change as we progress through the course, or it may not.\n\n#### Installation\n- **!Important! BACK UP your existing preferences file FIRST, just in case you don't like ours.**\n- Unix: Download [`racket-prefs.rktd`](https://raw.githubusercontent.com/Raymo111/cs135-drtools/master/racket-prefs.rktd) to `$HOME/.racket` and reload DrRacket\n- Windows: Download [`racket-prefs.rktd`](https://raw.githubusercontent.com/Raymo111/cs135-drtools/master/racket-prefs.rktd) to `%appdata%\\Racket` (paste that into the File Explorer location bar and hit enter) and reload DrRacket\n- Mac OS: Download [`racket-prefs.rktd`](https://raw.githubusercontent.com/Raymo111/cs135-drtools/master/racket-prefs.rktd) to your preferences folder, rename the file to `org.racket-lang.prefs.rktd`, and reload DrRacket. You might find these links helpful:\n  - https://www.syniumsoftware.com/support-article/how-do-i-navigate-to-the-preferences-folder\n  - https://discussions.apple.com/thread/5804600\n\n### Additional Tips\nInstalling the `drcomplete` raco package (**not part of this package**) will provide automated completion of variables and functions. You can install `drcomplete` the same way you installed `cs135-drtools`. After restarting DrRacket, click `Edit \u003e Enable Automatic Autocompletion` (last item) in the menubar to enable it, if it isn't already enabled.\n\n##### We accept Pull Requests! If you have a template or shortcut you think is useful and should be added, contribute to our repo on [GitHub](https://github.com/Raymo111/cs135-drtools)!\n\n![Hits](https://hitcounter.pythonanywhere.com/count/tag.svg?url=https%3A%2F%2FGitHub.com%2FRaymo111%2Fcs135-drtools)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraymo111%2Fcs135-drtools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraymo111%2Fcs135-drtools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraymo111%2Fcs135-drtools/lists"}