Giter VIP home page Giter VIP logo

alm's Introduction

FUTURE

This project is archived.

Building on the TypeScript developer experience (DX) offered by ALM, I’m creating a new product that offers a unique UI development experience for designers/developers. Signup for the Beta: https://designtsx.com

DesignTSX


ARCHIVE

The best IDE for TypeScript

Join the chat at  gitter

This project is powered by GitHub 🌟s ^ go ahead and star it please.

Build Status NPM version

With great languages come great development tools 🌹.

Why

Check out the website and if you need more reasons we have them.

Requirements

  • Chrome
  • NodeJS v6

Usage

Get it:

npm install alm -g

Run it passing in the directory you want to serve up:

alm.

Now open it in chrome at the URL mentioned in your console. (protip use alm -o if your default browser is Chrome)

main

Features

We work hard πŸ‘· on our πŸ“ so please jump to the book.

But since its good to show a list so in no particular order and incomplete list:

  • Super slick syntax highlighting just for TypeScript
  • Tabs
  • Panes
  • Live file linting
  • Project wide linting
  • AST viewer
  • Dependency viewer / analyzer
  • Typescript Build
  • Live incremental TypeScript compile
  • Cursor History
  • Clipboard ring
  • Git Status gutter
  • Git Status scroll bar
  • Git reset file
  • Find in project
  • Find and replace in file (with regex support)
  • Multi Cursor
  • Rectangular selections
  • Command Search
  • TypeScript symbol search
  • TypeScript project selector
  • Live TypeScript ouput JavaScript preview
  • Multi monitor
  • Super friendly error panel with f8 error cycling
  • Copy paste buttons when they make sense (so you don't need to select stuff)
  • Type info / errors on hover
  • TypeScript doctor so you don't need to hover
  • Code folding
  • Bracket and tag matching
  • Matching bracking jumping
  • TypeScript formatting
  • editorconfig support
  • HTML to TSX/JSX
  • CSS to TS/JS
  • File Tree
  • On screen hints around current options (e.g. tree view)
  • Snippets
  • Add the feature you liked the most 🌹

And of course my favorite:

  • Code blaster

Contributing

A key motivation for this project is to educate the community about creating great TypeScript tools. So we would love to help you understand how the project works. Checkout the developer / contributor docs.

License

MIT

alm's People

Contributors

amitse avatar anumanjooran avatar basarat avatar greenkeeperio-bot avatar wmaurer 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  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

alm's Issues

Notify Updates

See sample code

var pkg = JSON.parse(fs.readFileSync(__dirname + '/../package.json'));

require('update-notifier')({
  pkg,
}).notify();

OmniSearch symbol search

Thinking it should be a modal (checkout https://github.com/rackt/react-modal).

I definitely want it to be wider than what we have with atom / vs code. Should be pinned to top as people are used to that now

Also I want it to be more omni i.e. have simple prefix switches (like vs code) for the following:

  • Find file (ctrl + p) no prefix
  • Find command (ctrl + shift + p) prefix : >
  • Project (ctrl + alt + p): <
  • Find symbol (ctrl + t) prefix : #
  • Find symbol in file (ctrl + shift + o) prefix : @

Should support arrow keys to nav between items

Main configuration file (tsb.json)

People need multiple tsconfig.json files, but its difficult to know without user intervention what their plan is with all these files.

Spec out (and use) something like a tsproject.json (or call it tsb.json?)

Also support other things like:

  • tslint.json
  • package.json
  • tsd.json
  • formatCodeOptions
  • webpack config
  • launch.json

Refs (Most tsconfig issues):

Heirarchical tsconfig : microsoft/TypeScript#1928
Mutiple tsconfig : microsoft/TypeScript#4714
Medium sized projects dependencies : microsoft/TypeScript#3469
name property : microsoft/TypeScript#2938

Publicity / Public Relations / PR when ready

An open source IDE written in TypeScript for TypeScript

Also https://twitter.com/basarat/status/654457986543255552?cn=cmVwbHk%3D&refsrc=email

Web sections

  • Editor features ... all the keyboard goodness you already know from sublime text (list them all out)
  • Syntax Highlighter ... not just another slow and buggy TextMate grammar. The same syntax tokenizer that your typescript compiler uses
  • Code analysis ... dependency viewer.
  • Multi window, multi client

Feature List

Add to readme at some point

Working on

TypeScript

  • Auto detection of all available tsconfig.json projects + project list + project selector
  • Live error panel

Code Mirror

  • State synced between browser tabs
  • Autocomplete
  • Autocomplete docs
  • Live linting
  • Expand errors inline #8
  • type info on hover

Overall

  • Find in file
  • Find in project / files / glob filter + replace
  • Goto list (references, find etc)
  • rename refactoring
  • File rename refactoring
  • File explorer aka tree view

Omni search

  • file list
  • project list
  • Command list
  • Symbols in file search
  • Symbols in project search

Deploy

  • Basic compile test
  • Setup automatic NPM deploy on tagged versions using Travis

TODO:

  • Autocomplete snippets
  • list commands supported by CM in command list

Error when navigating to tsb in browser

Uncaught TypeError: item.commandName.split is not a function

image

As you can see, Ctrl+/ maps to a function, rather than a string

Trace:

addEditorMapToCommands  @   commands.js:325
(anonymous function)    @   commands.js:336
(anonymous function)    @   bundle.js:2129
__webpack_require__ @   bundle.js:521
fn  @   bundle.js:76
(anonymous function)    @   ui.js:13
(anonymous function)    @   bundle.js:1955
__webpack_require__ @   bundle.js:521
fn  @   bundle.js:76
(anonymous function)    @   root.js:17
(anonymous function)    @   bundle.js:1013
__webpack_require__ @   bundle.js:521
fn  @   bundle.js:76
(anonymous function)    @   main.js:2
(anonymous function)    @   bundle.js:1007
__webpack_require__ @   bundle.js:521
fn  @   bundle.js:76
(anonymous function)    @   multi_main:3
(anonymous function)    @   bundle.js:551
__webpack_require__ @   bundle.js:521
(anonymous function)    @   bundle.js:544
(anonymous function)    @   bundle.js:547

The problem appears when it tries to add the sublimeMap

If you need any more info, let me know

Git history for a file

Have a scrubber that allows you to look at the history for a file

Ignore whitespace and renames

http://stackoverflow.com/a/5493663/390330 (also good to show a continuous blame on the file) git log --follow -p <file>

Think of alt+g for all git commands. Here alt+g+h for history

Research

.bin/tsb broken

1.0.1 installed by npm has broken by following carrage return with hash bang.

It is known issue of npm with Windows. npm/npm#2097
Sound familiar?

$ tsb
env: node\r: No such file or directory
heyPro:edge-ui kson$ tsb
env: node\r: No such file or directory
heyPro:edge-ui kson$ tsb .
env: node\r: No such file or directory
heyPro:edge-ui kson$ tsb -v
env: node\r: No such file or directory

Autocomplete

Park on NPM

Since we don't want to give the people false impression of readiness: Replace the version on NPM with a parked version till the project is ready.

Find In Files

This is one the last big features that need to be implemented.

Research

Going through other solutions:

Nuclide

Shells out to git grep or just grep : https://github.com/facebook/nuclide/blob/dbaac5108fdf18eb42bd19e760051b9a41ac92b2/pkg/nuclide/remote-search/lib/scanhandler.js#L76-L78

Atom core

This package does it : https://github.com/atom/find-and-replace

It redirects to atom.workspace.scan : https://github.com/atom/find-and-replace/blob/fa4af2db1ce3612c81a55d25821424899b141c18/lib/project/results-model.coffee#L98-L118

workspace.scan is in atom core https://github.com/atom/atom/blob/28517563ebb6a73da1e7b03d1c7fe36ae8d0e611/src/workspace.coffee#L886

It uses scandal : https://www.npmjs.com/package/scandal

scandal depends on git-utils : https://www.npmjs.com/package/git-utils < sadly this requires a working node-gyp toolchain and that is not a dependency I want :-/

NPM Packages

no clear winner : https://www.npmjs.com/browse/keyword/grep

Setting panel

Ctrl + , seems a very consistent keyboard shortcut across IDEs

fail safe install - tsb error examples

This might be related to my system (I guess tsb didn't install properly. Had to do a 'npm cache clean' first). I have the error output below if I do the following steps

  • create and go into a new folder
  • git init OR touch test.ts
  • tsb

"
Dashboard at http://localhost:4444
CHILD ERR STDERR: /usr/local/lib/node_modules/tsb/src/server/workers/fileListing/fileListingWorker.js:25
.filter(function (x) { return !x.includes('/.git/'); })
^
TypeError: undefined is not a function
at /usr/local/lib/node_modules/tsb/src/server/workers/fileListing/fileListingWorker.js:25:50
at Array.filter (native)
at sendNewFileList (/usr/local/lib/node_modules/tsb/src/server/workers/fileListing/fileListingWorker.js:25:18)
at /usr/local/lib/node_modules/tsb/src/common/utils.js:88:27
at EventEmitter.fileAdded (/usr/local/lib/node_modules/tsb/src/server/workers/fileListing/fileListingWorker.js:53:17)
at EventEmitter.emit (events.js:110:17)
at EventEmitter. (/usr/local/lib/node_modules/tsb/node_modules/chokidar/index.js:169:15)
at EventEmitter.FSWatcher._emit (/usr/local/lib/node_modules/tsb/node_modules/chokidar/index.js:206:5)
at EventEmitter. (/usr/local/lib/node_modules/tsb/node_modules/chokidar/lib/fsevents-handler.js:288:12)
at EventEmitter. (/usr/local/lib/node_modules/tsb/node_modules/chokidar/lib/fsevents-handler.js:331:11)

ts worker restarting. Don't know why it stopped with code: 1
"

Key map resolver

Atom's core : https://github.com/atom/atom-keymap (can't use as depends on fs plus)
This in turn is used within atom to map commands to command watchers

Also checkout the keybinding resolver : https://github.com/atom/keybinding-resolver

MORE

There is also : https://craig.is/killing/mice and https://github.com/dmauro/Keypress/ and https://github.com/madrobby/keymaster

Which shortcuts

Web has a few challenges e.g. ctrl+tab will not work in chrome. Some IDE's that tackle such issues : https://docs.c9.io/docs/keybindings and https://msdn.microsoft.com/en-us/library/dd380652.aspx#vso

Find / Replace

See : https://codemirror.net/demo/search.html

  • ctrl/cmd+f works at a global level to call search for current tab (which just returns search results). If user changes active tab we get new search results!
  • ctrl+shift+f works and just adds a where which is just a list of glob matchers (by default *.ts).

Missing dependencies

We have missing dependencies to launch

  • http-proxy
  • webpack
  • webpack-dev-server

to run

  • style-loader
  • css-loader

Dirty file handling

Here is what atom does:

  • if the file is same as disk ... and disk changes the updates are silently applied
  • if the file has unsaved changes ... and the disk changes ... the updates are completely ignored.

I think this is a good first cut to aim for.

Autocomplete Filtering

E.g.

  • tap the ctrl key to see options
  • then m for methods, p for properties etc

This is very much a wishlist item 🌹

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.