Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Ymacs - Emacs in the browser with Dropbox, GDrive, etc (tageorgiou.github.com)
125 points by tagx on Aug 13, 2012 | hide | past | favorite | 45 comments



It's not emacs (I guess it's "an emacs"). It's an editor that does syntax coloring, handles the core emacs keystrokes, and implements the subset of GNU emacs functionality that the author uses in a routine manner.

Right off the bat, I hit the following speedbumps:

  + No replace-regexp
  + No set-fill-prefix (or it's unbound)
  + Default fill prefix detection doesn't work like GNU emacs (e.g. no
    way to fill a long paragraph with a prefix of "> " for quoting
    email)
  + No ispell-word (or any spell checker) on C-$
  + C-x b tab doesn't give me the list of buffers I expect
  + No keyboard navigability in file selection dialog!  I hit C-x C-f
    and end up in this weird web 2.0 world where I'm (no joke) prompted to
    "Drag files here".
So.. it's cute. But other than the author (or someone else willing to reimplement the bits of emacs they need) I don't see to whom it's going to appeal. Serious emacs users aren't the target demographic.


An excellent, informative, high value comment!

Someone could host emacs in virtual machines that have a bunch of real emacsen hosted with TTYs implemented in Javascript and a virtual filesystem that actually writes to Dropbox. Someone could probably make good lifestyle-business money doing that.


If you're going to go to that much trouble, you might as well just compile Emacs to Javascript with enscripten and run it natively in the browser. The download time might be painful, but then we'd have a web editor actually worth using.


You might not even need to implement all of emacs, just emacsclient and have the emacs daemon running on the server.

But why does everything need to run in the browser? You have a perfectly good OS and you can run Emacs natively and use tramp to open remote files over ssh. I do it every day, it's awesome because I'm using my local emacs configured the way I like it and I can edit files on any server that has sshd running. Problem solved.


It'd be nifty if I could have the power of Emacs available to me on a tablet. Since I don't imagine anyone's going to port it soon, being able to use it in a browser seems like the only way that's going to happen.


It's running right now on Android: https://play.google.com/store/apps/details?id=com.zielm.emac...

It's even 24.1. I only have patchy wifi now so I haven't been able to finish the install yet on my tablet but it installed and ran M-x tetris just fine on my phone.


I stand corrected and am looking forward to giving it a spin--thanks for pointing this out!


Better just to do a smaller editor like Vim.


There's more value in having Emacs cloud hosted, I think. The old joke that it's an OS masquerading as a text editor is actually somewhat true. Hosted in the cloud, you have really great bandwidth to other cloud environments, all accessible through low-bandwidth requirement TTY.


Yes, the core C part of Emacs is actually surprisingly small.

Sadly the vast majority of the C emacs core is platform-specific code, the sort of thing that emscripten would be worthless at.

That being said, a manual port of the VM and C modules is not inconceivable.


Shortcut (i.e. key binding) conflicts with the web browser like C-n (new-line) make it unusable for me.


C-k (the most useful command ever) is captured by my browser. Google Chrome.


I'm inclined to think that that's more a bug on their part since Ctrl+K isn't one of those unstoppable key combinations (Ctrl+W, Ctrl+Tab, Ctrl+T, Ctrl+N, Shift+Esc as far as I'm aware are the only ones). Perhaps they just aren't calling e.preventDefault() on their event handlers.

And even for the combinations which can't be captured, the new Chrome platform app API lets you stop those.


In an effort not to totally derail the conversation I guess I'll mention that nearly every browser is going to have some shortcut keys that would map to common emacs functions that will get swallowed by the browser.

But what I'm really wondering: what makes you say C-k (kill-line) is the most useful command ever? This is slightly inconvenient with basic Windows shortcuts (shift+end ctrl+x, approximately). I tend to think one of the functions which isn't trivially replicated in other environments is more useful. Just curious...


what makes you say C-k (kill-line) is the most useful command ever

A little bit of a joke, but it's based on a bias that the best thing you can do to source code is make it smaller. To its ridiculous conclusion wiping out every line leaves you with a program with no bugs. :)


That's actually a pretty big problem with the whole "browser app" thing, isn't it... there are certain key bindings that you just can't have. I wonder if there'll ever be a solution for that. Anything I can think of sounds like it would be a security issue, or annoying. (Having to answer pages asking for permission for certain keybindings... ugh.)


There's actually a simple workaround for that:

See http://support.google.com/chrome/bin/answer.py?hl=en&ans... (Create shortcuts for other apps) which I found via http://stackoverflow.com/questions/7295508/javascript-captur...

All Google Chrome keyboard shortcuts are now not interfering when used in ymacs (C-j, C-k, C-n, C-p, C-t, C-w).


I suppose it could have been developed on a Mac, where a bunch of emacs keybindings are integrated into the OS itself.

I had no problem deleting and re-inserting that above sentence with C-k and C-y, in the textfield, for example. Hell, even C-t works.


The fact that OSX native doesn't use C-??? keybindings for non-unixy behavior is one of the greatest advantages IMO. It's even better than Linux in that regard, because CMD-C/V even copies/pastes from OSX clipboard in the terminal.


EmacsLisp is also missing.



Wait... that first link in your list from a month ago... that was actually forked to make the one for this thread. They appear to be identical. So if I fork it, can I post it too like I made it? I don't get it. I'm guessing there is some reason somewhere that makes this not a rip off? What am I missing?


In fact, it was forked about an hour ago, and the only changes seem to be the gh-pages branch, and are pretty much summed up by:

    -    <title>Ymacs by brettcvz</title>
    +    <title>Ymacs by tageorgiou</title>


I posted this a month ago but it never reached the front page. tagx emailed me about it asking if he could post it and I said it was fine. More distribution is better, right?


More distro is fine, sure... but the OP's comment seems to be taking credit for this entirely. Is that still better? http://news.ycombinator.com/item?id=4377752


The core of the editor is YMacs (http://www.ymacs.org/).

I just integrated filepicker.io. The source is at https://github.com/tageorgiou/ymacs


I understand the technical challenge, but the Emacs-y way would be to run the browser inside Emacs. Not the other way around.


You might want to use "text/*" as the mimetype argument to filepicker.getFile to filter out sources like webcam and Instagram.


I noticed it doesn't choke when you upload a binary to it, but sadly doesn't have `hexl-mode` to do anything useful with it.


My feedback is targeted at the ymacs demos giving a better "first impression", which at this point might be the only one allowed for many.

I am taking the time because that's the most emacsy (unintended bun) experience I've had in a web editor and to me that is a compliment.

I had to "Load its own code!" and read it to jump over these brick walls:

* C-x C-b is undefined

* C-h gives me a chrome://chrome/history/ lesson, but that might be chrome's fault

* M-x sounds the bell (why?) but "that's all she wrote". Neiter ? nor SPC do more than insert themselves in the minibuffer. Reading sources I find M-x switch_to_buffer (C-x b) would work, if only by keyboard (the menu does not allow one to actually pick an entry).

Why not implement C-x C-b? Would it be that hard? Or just let it do what C-x b does for now?

M-x ? and M-x SPC listing all available commands would be a big win too.

But a commad like M-x switch_to_buffer should not really be presented to an emacs user, make that M-x switch-to-buffer, even if some internal mapping may be needed.

This HN article links to http://tageorgiou.github.com/ymacs/ and [Try Out] there links to http://tageorgiou.github.com/ymacs/demo/

* It seems to have some character encoding issues in the modeline:

ymacs.frames[0].getModelineElement().innerHTML

"-- <b>test.js</b>Â&nbsp;Â&nbsp;49% of 1.35kÂ&nbsp;Â&nbsp;(13,3) "

[Live demo] at http://www.ymacs.org/ links to http://www.ymacs.org/demo/

* Modeline looks good in this one:

ymacs.frames[0].getModelineElement().innerHTML

"-- <b>test.lisp</b> (1,0) "

brettcvz, mishoo, tomelam, keep up the good work, I really like this!


Pretty Cool. I hate having to download files from Dropbox just to upload again when I need to save. I think this might do the trick.

EDIT: I just realized that it's not clear. I do use the client and it works really well from my computer. It doesn't work very well from a computer lab.


That's why dropbox app has an automatically synced folder. Just edit the files there, and they'll automatically be uploaded.

That's the entire point of the dropbox model. It's a folder. That syncs automatically. No crappy upload pages needed.


Ah. Sorry. I was talking about when I'm working in computer labs. Unfortunately, I can't download the client. Comment edited.


Just curious, any reason you don't install the dropbox client? You can selectively sync specific directories.

I keep all my code on a folder in Dropbox, and it's the only folder that I sync. (I don't want large images, PSD's, etc getting synced on my MB Air)


M-x doctor: No such command: doctor. You should just call that "yet another online editor", really.


I am sad, there is no M-x tetris...

In seriousness, this is quite a cool attempt. For some reason, using an international keyboard with the application prevents me from ever getting the ' character to appear. I'm not sure why this is the case.


Very nice! I was seriosuly missing something like this, especially for my org-files. A few times a week I want to add or change something to my todo.org but I can't because I'm at some corporate computer. At the moment I try to remember and make my changes when I can, far from ideal.

My plan is to use parenscript to convert the org elisp code to Javascript and provide some extra functionality such as document export through a webserver running headless emacs. Any opinions on this idea? Could this be possible with YMacs?


Good start. What's the timeline for the elisp interpreter? :-)



Not working in my browser. When looking at the source I see it probably only works in FF. But I also noticed you've included "ymacs-mode-markdown.js" twice.

Edit... ok refreshed the page a few times and it seems to be working now. Cool.


Now how about Vim?


Saw something on HN a couple weeks ago. http://mit.edu/~georgiou/www/vi/


Wouldn't mind seeing Emacs ported to NaCl. That would be a fun project, I think.


man great but control-w close the browser window not cool!


mind blown




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: