Giter VIP home page Giter VIP logo

sauron's Introduction

sauron

Test Coverage Status

Sauron is a plugin of DrRacket to make it be a better Racket IDE, see more in user guide, the following shows something you can do with the plugin.

  1. Refactoring
  2. File explorer
  3. Auto formatting
  4. Jump to definition
  5. ...

Install

raco pkg install --auto sauron

After installation, restart your DrRacket is required, then go to user guide to see how to use it.

Other plugins

  • drcomplete: this plugin can help you get better completion, with sauron, completion would be triggered by default gives you a better experience. NOTE: only recommend for >=8.0 users since performance issue

Development

Install Git Hooks

ln -sf $(pwd)/.hooks/pre-commit $(pwd)/.git/hooks/pre-commit

sauron's People

Contributors

bogdanp avatar dannypsnl avatar smallfont00 avatar spdegabrielle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sauron's Issues

add contribution guidelines

Should include

I think as a minimum

  • Contribution Licence terms
  • Code of Conduct
  • Coding Standards
  • PR Standards

My suggestions;

To be compatible with Racket I'd suggest the following for Licence terms;

By making a contribution, you are agreeing that your contribution is licensed under the Apache 2.0 and MIT licenses. Those licenses are available in this repository in the files LICENSE-APACHE.txt and LICENSE-MIT.txt.

Follow the GitHub guidance on Code of Conduct.

Follow the Racket Style Guide and Contribution Guide for the last two.

[Release] v0.2.0

  • update info.rkt
    • update description
    • update version
  • update CHANGELOG.md
  • update scribblings

[Feature] Auto complete for define form

when user type in define, the editor should pop up options, once select the option by moving between them and press enter(selected) the editor should insert define form:

;;; variable
(define dummy 'dummy)
;;; or function version
(define (dummy)
  'dummy)

[Feature] Load a project, not single file

First, a stable project path is nice. Second, the current path getter has a bug, if I open a file under another directory rather than where I invoke racket -l sauron, the path of the file is incorrect, it becomes <command-dir>/<file-name>.

[Dev] Consider state machine for editor

Current keybinding behavior in the editor is hard to manage since some keybinding inherits from base-class, observed base-class state to decide trigger or not trigger behavior quite an error-prone. This issue wants to point out a way is define a state machine for the keybinding handler to have better control.

For example, in the text:common% we have LaTeX input when \ get typed state move into where enter behave as latex input complete rather than newline. With the state machine, we have a concept handler like this:

(match event-key
  ['enter #:when (state=? cur-state state:normal)
    'newline]
  ['enter #:when (state=? cur-state state:latex)
    'latex-complete]
  ...)

[Feature] c+f searching text

  • create a free(free means no parent) frame with editable text
  • when focusing on the free frame, enter would jump to the next occurs, shift+enter jump to the previous occurs
  • when left the free frame, should remove all draw circles

NOTE: Create a new component for these

[Feature] Improve auto-complete

Currently, auto-complete can be annoying since it would leave tons of frames on the windows in certain situations.

For example:

image

[editor] Auto save

Hope this also can solve the auto checking problem. Let auto-saving triggers auto checking.

[Feature] Always show first line

Because all languages in Racket use the first line to distinguish, show this information can help users figure out what are they handling.

[Research] Understand snip

I guess snip can me create a small editor in the editor, by this I can control auto-completion and jumping scope without full-scope analysis and tons of cache.

'product roadmap'

Something like;

  • keyboard shortcuts
  • autocomplete
  • LaTeX input
  • Scripting functionality like Quickscript in DrRacket (but with event triggers)
  • ...

[Feature] c+; improve un/comment behavior

Currently, comment key binding would use multiple ”;” to comment selected code. However, Racket can use ”#;” to comment a S expression, which can be modified simpler, therefore, I thought an improvement was use ”#;” when the following expression after the cursor was a S expression.

[Feature] Version Control Panel

Only work with Git for now.

NOTE:

  • git remove --cached <file> would only untrack file, not remove it.
  • git add <file> would track file

Details

  • ready zone
  • changes zone
  • changes files can move to ready, ready files can move to changes
  • editor for the commit message
    • c+enter commits message
    • enter changes line
  • would be a right panel(REPL side)

[Feature] editor tab

  • at most 10 editors, for c+0..9
    • mapping: c+1 is first editor, c+0 is last editor
    • if editors are max(10), open new file not in them would replace the first editor(related with project files)
  • c+w close editor

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.