Git Product home page Git Product logo

coderibbon-theia's Introduction

CodeRibbon

A reimplementation of Patchworks for the Atom Editor.

Overmode Mode Demo

Patchworks was a 2014 research project into better navigation and organization of code in IDEs. It's core concept consisted of an infinite 'Ribbon' of Patches in which code was displayed.

As you open code to edit, your Ribbon grows to accommodate more active patches, leaving a timeline-like history of recently used files.

Currently Working Features

  • 99.9% of other Atom plugins are still supported and work as usual
    • If you find one that doesn't, please leave an issue for it!
  • Patch grid layout and dynamic growth of the Ribbon.
  • Configurable, dynamic size for number of Patches per screen
  • Ctrl-Alt-O to look at all the Patches in Overview mode
  • Drag files from the project tree view onto Patches to open the file
  • Swap Patches by dragging one item onto the other patch
  • Keyboard shortcuts for navigating the ribbon
  • Quick Fuzzy search files in the project for blank patches
  • Drag and drop patches onto eachother to create new patches and columns

A research project from UTK

CodeRibbon is a research project from the University of Tennessee, Knoxville.

The research is supported by Austin Henley. (one of Patchwork's original authors)

For the contributors of CodeRibbon, see https://github.com/utk-se/CodeRibbon/graphs/contributors

coderibbon-theia's People

Contributors

benroberson avatar robobenklein avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

argvrutter

coderibbon-theia's Issues

Release name

"Visual Studio Code" is obviously a trademark, so Visual Studio CodeRibbon would likely step too far into Microsoft's ownership territory.

Taking suggestions for application names, right now the default will likely just be "CodeRibbon", but it's not the best because there are multiple implementations of CodeRibbon.

Rework tab bar into patch controls / handle

Extra controls that appear when the pane is active need to be overwritten / replaced or just removed altogether to make room since they will not function after VSCR changes.

Check composition of over-patch rendered elements

Elements such as autocomplete suggestions or documentation hovercards need their logic updated to work depending on if their hierarchy in the DOM causes their positioning to be offset from the Ribbon Container or from the Ribbon itself.

Breadcrumbs in patch titles?

We could embed the class/function breadcrumbs in addition to the file name and path if there's room in the title of a patch. Just have to make sure there's still enough room to use it as the grab handle.

Context menu operations for ribbon layout management

  • Close patch
  • Close Column
  • Split patch:
    • Left
    • Right
    • Up? (do people use this, is there a reason?)
    • Down
  • Move column or patch: (swapping, only displayed when possible? e.g. at top/bottom/left/right edges)
    • column right/left
    • patch up/down
  • New:
    • patch above/below
    • column left/right

I realize nobody ever actually used "split patch up" in all my testing... maybe just remove it? It's basically the same result as down.

Overlays in overview mode

Autocompletion, documentation, etc... need to be hidden on overview and re-shown on exit (assuming the active patch was not changed)

PhosphorJS status tracking

Tracking eclipse-theia/theia#6501

Doesn't look like https://github.com/jupyterlab/lumino includes any of the CR-required additions like save/restore layouts for non-Dock types of panels, think they'd be interested in those features getting upstreamed? Also still need to investigate if it's any better at providing drag/drop/hover/data events than the current phosphor.

IBL/IBP and similar might even be classified as upstreamable, not sure who else would use them yet though.

save/restore of widget content

https://github.com/eclipse-theia/theia/blob/v1.29.0/packages/core/src/browser/shell/application-shell.ts#L604

getLayoutData still contains unserialized widgets, so conversion happens outside the application-shell scope, therefore we need to be compatible enough with DockPanel that the outer code behaves the same.

https://github.com/eclipse-theia/theia/blob/v1.29.0/packages/core/src/browser/shell/shell-layout-restorer.ts#L156

getLayoutData from the AS is called by restorer

deflate: https://github.com/eclipse-theia/theia/blob/v1.29.0/packages/core/src/browser/shell/shell-layout-restorer.ts#L191

Assumes property names must match exactly widget or widgets by isWidget(s)Property...

Widget itself if stateful should provide storeState(), but looks like CR Patches will mostly be subject to the widget manager's whims: https://github.com/eclipse-theia/theia/blob/v1.29.0/packages/core/src/browser/widget-manager.ts

So in the end maybe a patch should not be reported as a first-class widget? (We could dig into it via our own serializer)

CR-Theia on CodeRibbon website

VSCodeRibbon needs to have at least a little bit of information added to the website ( https://utk-se.github.io/CodeRibbon/ ) so people know what the actual longer-term plans are.

Also will probably involve adding a short/micro blog to the site for general CodeRibbon updates in either implementation. (Plus is a good venue to allow for more user comments on development ideas.)

Drag whole column

Something that still was never properly implemented in the Atom version.

Look for existing fuzzy match indexes

CR's most used feature is probably the fuzzy open in blank patches, Atom already had the index of the project files, need to find where VSCode stores it's list that can be matched against.

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.