Coder Social home page Coder Social logo

coderibbon / coderibbon Goto Github PK

View Code? Open in Web Editor NEW
163.0 163.0 5.0 23.63 MB

Navigate your code in an infinite timeline of code patches!

Home Page: https://coderibbon.github.io/CodeRibbon/

License: Other

JavaScript 96.18% Less 3.82%
atom-package code-editor

coderibbon'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's People

Contributors

azhenley avatar dependabot[bot] avatar robobenklein avatar tkeyes25 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  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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

coderibbon's Issues

Stretch: Vertical Ribbons

Just spent the last few hours with this layout and only just now noticed my 2x3:

image

Really hard to scroll left/right with a mouse, but perhaps we can add options for vertical history and horiz/vert scroll switching.

Offscreen patch cache

Will need to be serializable along with the Atom workspace layout... requires an abstract ribbon to be serializable as well

JS/TS/Coffee decision

Decide which language to develop primarily in.

For dev speed sake, I am leaning towards raw JS since that will eliminate the need for the compile step, but Atom may have higher class support for Coffee as an install-time autoload.

I will vote against TypeScript since the 340 project had problems with people committing code that hadn't been transpiled.

Event Behavior: Dragging from file list to filled patch

Need to determine the desired behavior for a user dragging a new item onto a patch which is already filled.

Probably it should just replace the editor in the patch, but then need to also ensure hooks for unsaved file prompt.

Another behavior could be to relocate the old patch to a nearby patch if there's an empty one to the right or left of the target patch. (Would be user preference: "Relocate patch instead of Replacing")

Proper failover when Fuzzy Finder is not available

Currently we depend on the 3rdparty package too much and cannot operate without it. Need a good failover for when it doesn't work...

  • Make our own fuzzy drop in replacement?
  • Supply some other view for when we don't have a fuzzy finder pview

Overview: highlight pane on hover

RIght now it is purple borders with blue borders on an active pane. If a user hovers over a pane, maybe shadow it or somthing, or have all other non-active patches be slightly darker

Overview visual

Needs investigation on how far we can stretch Atom's virtual DOM with hopefully just CSS.

Error clicking on an empty patch

I just installed the extension. It opened with 6 empty patches and whenever I click on one I get:

Uncaught TypeError: Cannot read property 'incrementCounter' of undefined
C:\Users\t-auhenl\AppData\Local\atom\app-1.38.2\resources\app.asar\node_modules\fuzzy-finder\lib\experiment-prompt.js:129

insert / remove patch column

In the end I wonder if it would have been easier to have ribbons of patch columns...

that probably would have made wayyyyy more sense

Initial Startup Patch Number Not Filled

Kinda buggy when I start it up with the new patch number calc on cr_update. I was on my empty-patch branch if that is the problem and i am behind on functionality (although, I remember quota being merged before I made my branch)

Screen Shot 2019-03-31 at 11 11 18 PM

Horizontal spacing style application

Found this one by experimentation:

width = 100% * (number of total patches / number of visible patches)

Makes them scale nicely and we don't have to pixel-count.

Adding New Patches discoloring

Seems like it is buggy when I toggle the command to add patches now with the new empty patch design. I add some, and the patches are back to the purple border. Let me know if you were aware of this and need videos @robobenklein

I did the following and got different results

atom -d  . --clear-window-state

This created however many patches I had serialized or saved (with the correct form of an empty patch), then when I add/ close patches, the patches turn purple.

atom -d .

This mainly just made all of my previous empty patches purple.

I am on the dev branch

Core: Next Available Patch Space

Needing an algorithm for locating the optimal nearest patch to a currently-focused patch.

Needs to be

  • Accessible by a specific patch
  • Configurable by heuristic research
  • Portable to N dimensions
  • Aware of neighbors in directions not currently being processed (45-deg square search problem)

Idea: Interleave / Zipper Patch Reflow

When the number of Ribbons changes (vertical resize, etc) we might remove or add Ribbons.

Patches that were in Ribbons that got downDropped (serialized into offline state objects) perhaps should be reflowed into the remaining visible Ribbons.

By interleave, I mean that the Patches from the removed Ribbon would be interleaved into the remaining patches. Ex. if 2 Ribbons merged into one it would be like a zipper merging, where every other patch was from the different Ribbon.

If we add a Ribbon, we'll want a setting saying whether or not to reflow the existing patches into the new Ribbon. This would be the unzip routine.

This would require doing N-Ribbon calculations for both zipping and unzipping.

Horizontal Scrolling

Horizontal scrolling seems to be buggy. Does not know whether to scroll over entire code ribbon or scroll within whatever patch the mouse is over

May need to address this before #22

horizontal_scrolling (1)

Metrics events tracking items

The following events I think should be part of a metrics reporter:

  • Opens item in patch:
    • Which visual location on screen
    • Which location in whole ribbon
    • Which initiator of open (in-patch, drag, or out-of-patch)
  • Total length of ribbon
  • Fill percentage of ribbon
    • Extra: Bias between rows? (prefer top, etc?)
  • Drags item between patches
    • Which event handler? (html5 vs atom swap)
    • If drag was to offscreen patch from start of drag
  • Closes patch
  • Uses overview mode
  • Uses a single patch column

Empty Patch Display

Thoughts on what an empty patch should like besides what we have right now?

Atom: Hide tabs

Hide the tabs of a pane so that we can put our own stuff there.

Metrics reporting backend

Google Analytics for Apps vs Roll-our-own vs Atom Telemetry?

Analytics for Apps (GAfA) is already a solution that fits the use case but data export and access is trickier.

Rolling our own would take a lot of development and analysis time, but wouldn't have to deal with format conversions for getting complete export data.

Multi-instance backend

For multiple monitor/window/instance support, ribbons will need to communicate out-of-band with other instances of the plugin.

Command/Cntl-W breaks Atom

Key combination closes out a tab, which then breaks our application.

AZH and I talked about it the last meeting, and we thought all we had to do was capture the command event, and simply ignore it

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.