Git Product home page Git Product logo

etable's Introduction

ETable Paypal logo

Note

This package was an experiment to bring some structured table rendering to Emacs. The interface ended up being too complicated (direct port from Java) and un-Emacsy and didn't gain a lot of traction. I am archiving this repository for future inspiration, but won't work on this anymore (with the recent changes to EIEIO it no longer works without tweaking the code somewhat). If anyone is interested, drop me an email and we can discuss further work around the subject.

A JTable for emacs, because it's about time there's a solid, reusable, and flexible enough table rendering package for emacs.

Many packages in emacs simply show you tabular data (ibuffer, dired, many help views). If a third party wants to implement a table view, they also have to reimplement all the formatting, sorting, column ordering, editing features, because the existing solutions are utterly inflexible. This package is modeled after JTable and friends, a part of Java swing GUI system. Swing has a fame of being overly abstract and difficult to use, but with proper default implementations (and it provides plenty) it is very simple to use and very flexible to extend, just in the emacs spirit!

How to use

ETable uses strict separation of view and data. Views are only concerned with displaying "abstract data", while these are provided by Model objects. This can be viewed as a variation of MVC design pattern.

Here's a screenshot showing off some features:

Demo1

Relation to org-mode tables, orgtbl-mode and similar

This package is not concerned with tables in the org mode sense (that is to serve as an intermediate format for tabular data for later export/processing). The first and foremost goal is to provide a framework to present data to the user, enable her to filter, sort, search, select and copy the data, edit cells, reorder columns and just do all the things we are used to from the classic GUI interfaces. A possible use-case is display of directory data (aka dired), buffers (aka ibuffer), or any other tabular data, where the org markup would be needless and outright confusing/inconvenient.

How to contribute

If you are familiar with JTable and swing (or philosophically similar framework) and want to contribute to this project, please email me or start an issue so we can dicuss what work needs to be done to minimze the possibility of several people doing the same work.

etable's People

Contributors

fuco1 avatar silex avatar youngfrog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

etable's Issues

MELPA? :)

Hey,

What do you think about it? I'll need etable as a dependency somewhat soonish and putting ETable in MELPA would simplify that.

Can't create table, to do with emacs 25 incompatibility?

Hi,

I tried to test this out with a couple of examples from: https://github.com/Silex/ETable/tree/master/examples

But haven't been able to create any tables

Tested on emacs 24.5 and 25.1 on OS X and Win.

When i first install the package, I get these compilation warnings:
Warning (bytecomp): ‘call-next-method’ is an obsolete function (as of 25.1); use ‘cl-call-next-method’ instead.
Warning (bytecomp): ‘object-p’ is an obsolete function (as of 25.1); use ‘eieio-object-p’ instead.

Then when i try to create a simple table, I get the error 'void-variable table data'; I can provide backtrace if needed.

Sample table creation elisp: (let ((commands-table (etable-create-table [["forward-char" "Move point right N characters" "C-f"]
["backward-char" "Move point left N characters" "C-b"]])))
(with-current-buffer-window "etable-simple"
nil
nil
(etable-draw commands-table (point))))

Support multi-line cells

Title says it all. At the moment ETable seems to support only dired-style tables with one visual line high cells. It would be nice if it could support cells with different height and adjust their common height, that would allow building things like calendars with 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.