quickscript
play

Quickscript A plugin to enhance DrRacket A plugin to enhance - PowerPoint PPT Presentation

Quickscript A plugin to enhance DrRacket A plugin to enhance DrRacket Laurent Orseau RacketCon 2018 Laurent Orseau RacketCon 2018 Thanks to Stephen de Gabrielle for the name and some help Thanks to Stephen de Gabrielle for the name and


  1. Quickscript A plugin to enhance DrRacket A plugin to enhance DrRacket Laurent Orseau — RacketCon 2018 Laurent Orseau — RacketCon 2018 Thanks to Stephen de Gabrielle for the name and some help Thanks to Stephen de Gabrielle for the name and some help Laurent Orseau Quickscript 1

  2. A simple use case Suppose for your current project you often need to reverse text strings Laurent Orseau Quickscript 2

  3. A simple use case Suppose for your current project you often need to reverse text strings First idea: Laurent Orseau Quickscript 3

  4. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Laurent Orseau Quickscript 4

  5. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Then just a matter of select and perform keyboard shortcut Laurent Orseau Quickscript 5

  6. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Then just a matter of select and perform keyboard shortcut Need to deal with keymaps Laurent Orseau Quickscript 6

  7. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Then just a matter of select and perform keyboard shortcut Need to deal with keymaps Need to remember keybinding No menu item Laurent Orseau Quickscript 7

  8. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Then just a matter of select and perform keyboard shortcut Need to deal with keymaps Need to remember keybinding No menu item Limited number of keybindings Need to resort to unintuitive combinations Hard to have many variants of the script Laurent Orseau Quickscript 8

  9. DrRacket keybindings Purpose: Often reverse strings in the de fi nitions window Second idea: Use DrRacket keybindings Then just a matter of select and perform keyboard shortcut Need to deal with keymaps Need to remember keybinding No menu item Limited number of keybindings Need to resort to unintuitive combinations Hard to have many variants of the script → Not very friendly to short-lived scripts Laurent Orseau Quickscript 9

  10. DrRacket plugins Third idea: DrRacket plugin Can do anything Menu items and more Laurent Orseau Quickscript 10

  11. DrRacket plugins Third idea: DrRacket plugin Can do anything Menu items and more Need to deal with the plugin system Laurent Orseau Quickscript 11

  12. DrRacket plugins Third idea: DrRacket plugin Can do anything Menu items and more Need to deal with the plugin system Need to restart DrRacket Long development/debugging process Laurent Orseau Quickscript 12

  13. DrRacket plugins Third idea: DrRacket plugin Can do anything Menu items and more Need to deal with the plugin system Need to restart DrRacket Long development/debugging process → Not very friendly to short-lived scripts Laurent Orseau Quickscript 13

  14. Quickscript A plugin for DrRacket For small to medium scripts No need to restart DrRacket Menu items + keybindings Easy to organize Laurent Orseau Quickscript 14

  15. Install Quickscript raco pkg install quickscript New 'Script' menu Laurent Orseau Quickscript 15

  16. A quick Quickscript script Scripts > Manage Scripts > New script (meta-S M N) Laurent Orseau Quickscript 16

  17. A quick Quickscript script Scripts > Manage Scripts > New script (meta-S M N) Enter: string-reverse Laurent Orseau Quickscript 17

  18. A quick Quickscript script Scripts > Manage Scripts > New script (meta-S M N) Enter: string-reverse New menu item: Scripts > string-reverse Laurent Orseau Quickscript 18

  19. A quick Quickscript script (define-script string-reverse #:label "String Reverse" ( λ (selection) (apply string (reverse (string->list selection))))) Save Laurent Orseau Quickscript 19

  20. A quick Quickscript script (define-script string-reverse #:label "String Reverse" ( λ (selection) (apply string (reverse (string->list selection))))) Save Scripts > Manage Scripts > Reload menu (meta-S M R) Laurent Orseau Quickscript 20

  21. A quick Quickscript script (define-script string-reverse #:label "String Reverse" ( λ (selection) (apply string (reverse (string->list selection))))) Save Scripts > Manage Scripts > Reload menu (meta-S M R) Select a string, and click on Scripts > String Reverse Laurent Orseau Quickscript 21

  22. String Reverse quick script: Menu hotkey (define-script string-reverse #:label "String &Reverse" ( λ (selection) (apply string (reverse (string->list selection))))) Select a string, then meta-S R Laurent Orseau Quickscript 22

  23. String Reverse quick script: Reorganize menu (define-script string-reverse #:label "String &Reverse" #:menu-path ("Sele&ction") ( λ (selection) (apply string (reverse (string->list selection))))) Select a string, then meta-S C R Laurent Orseau Quickscript 23

  24. String Reverse quick script: Keyboard shortcut (define-script string-reverse #:label "String &Reverse" #:menu-path ("Sele&ction") #:shortcut #\r #:shortcut-prefix (ctl alt) ( λ (selection) (apply string (reverse (string->list selection))))) Select a string, then ctl-alt-R Laurent Orseau Quickscript 24

  25. Procedure arguments Unusual: Callee can request arguments (require quickscript/script racket/class) (define-script copy-to-interactions #:label "Copy selection to interactions" ( λ (selection #:interactions ints) (send* ints (begin-edit-sequence) (insert selection) (end-edit-sequence)) #f)) Laurent Orseau Quickscript 25

  26. Procedure arguments Callee can request arguments #:interactions ints The current interactions editor Laurent Orseau Quickscript 26

  27. Procedure arguments Callee can request arguments #:interactions ints The current interactions editor #:definitions defs The current de fi nitions editor Laurent Orseau Quickscript 27

  28. Procedure arguments Callee can request arguments #:interactions ints The current interactions editor #:definitions defs The current de fi nitions editor #:editor ed The current editor, either de fi nitions or interactions Manipulate contents (text, snips, etc.) of the editor Laurent Orseau Quickscript 28

  29. Procedure arguments Callee can request arguments #:interactions ints The current interactions editor #:definitions defs The current de fi nitions editor #:editor ed The current editor, either de fi nitions or interactions Manipulate contents (text, snips, etc.) of the editor #:frame fr Manipulate DrRacket’s frame (menus, tabs, ...) Laurent Orseau Quickscript 29

  30. Procedure arguments Callee can request arguments #:interactions ints The current interactions editor #:definitions defs The current de fi nitions editor #:editor ed The current editor, either de fi nitions or interactions Manipulate contents (text, snips, etc.) of the editor #:frame fr Manipulate DrRacket’s frame (menus, tabs, ...) #:file f File path of the current tab Laurent Orseau Quickscript 30

  31. Script properties (script-help-string "A description of the script") (define-script a-complete-script ; Properties: #:label "Full script" #:menu-path ("Submenu" "Subsubmenu") #:shortcut #\a #:shortcut-prefix (ctl shift) #:output-to selection ; (one-of/c selection new-tab message-box clipboard #f) #:persistent #:os-types (unix macosx windows) ; Procedure with its arguments: ( λ (selection #:frame fr #:editor ed #:definitions defs #:interactions ints #:file f) "Hello world!")) Laurent Orseau Quickscript 31

  32. Persistent scripts By default, scripts are non-persistent Namespace lives only the time of the execution Persistent script Namespace lives longer Script > Unload persistent scripts Laurent Orseau Quickscript 32

  33. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Laurent Orseau Quickscript 33

  34. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Laurent Orseau Quickscript 34

  35. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Provided by Laurent Orseau Quickscript 35

  36. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Provided by Dynamic completion Laurent Orseau Quickscript 36

  37. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Provided by Dynamic completion Lots of snippets Laurent Orseau Quickscript 37

  38. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Provided by Dynamic completion Lots of snippets Reorganize tabs Laurent Orseau Quickscript 38

  39. Quickscript extra A bundle of third party scripts Sample scripts: Regex Replace Table formatter Provided by Dynamic completion Lots of snippets Reorganize tabs Open terminal here ... Laurent Orseau Quickscript 39

  40. The library Scripts > Manage scripts > Library Add/remove user or third-party script directories Enable/disable/edit scripts Shadow third-party scripts Laurent Orseau Quickscript 40

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend