Bundles, Grammars and Injections

posted by Martin Cohen in Development  | March 14th, 2009  |

This week I’d like to talk about the news in bundles management. It’s been issue number one for last weeks and we’re finally went through it. The main issues touched were:

  • Built-in bundles vs. user bundles
  • Bundle editor
  • Grammars and injections
  • Parser

Built-in bundles vs. user bundles

As you may know, Intype has two bundle repositories: built-in one stored in /bundles and user one stored in /user/bundles. Built-in bundles are those you will get with the installation. Every installation package is overwriting the built-in repository so you’ll loose any changes if you won’t back it up before re/installing. The same will happen when bundle updater is implemented once our new site gains the feature. To protect your changes, Intype is also looking into user bundles repository. There is a simple rule that items in user repository have greater priority than in built-in one.

This results that you can override any built-in bundle or item without touching them. And this is where the changes were done. Previously, we have used path comparing to know which item is overriding which, but this was OK for times without fully functional bundle editor. Now every item is obliged to have it’s unique ID number. If there are two items with same ID: one in built-in folder, and one in user folder, then the user one wins and is installed. However, thanks to the bundle editor, you won’t have to care.

Bundle editor

Intype's Bundle Editor

As the new override rules were implemented, we started working on the bundle editor. The main advantage of the bundle editor now is that it’s using Intype’s native editing component not only allows syntax highlighting, but also using all the navigation commands, and snippets as well (yes you can use snippets when editing snippet or anything else in bundle editor).

Next important thing is that the bundle editor also allows editing of the source files of the items, which might be handy when there are errors on Jasmine level, or when the developers will decide that they’ll do fancy editors for the next release.

Grammars and injections

Fixing stuff and updating grammars was next big step. Due to caching, we’re going to introduce to speed up the loading process, we had to split the grammar compiler to smaller steps to be able to recompile grammars from a binary file (the cache). We’ve also changed how grammars are now handled to support our perhaps biggest feature for parsing: injections.

Until now, if you wanted to create for example HTML grammar that supports eRuby (Rails views templating), you had to go to HTML grammar and change it to allow transitions to Ruby. Injections allows you to create a grammar that has HTML in it’s base, but injects transitions (<% ... %>) to Ruby code. All without touching either HTML or Ruby grammar. We will describe the details in the documentation we’re also working on at the new site.

Although this feature will be experimental for few weeks, we have more plans with it. One of those is to enable injections of keywords. For example, if you’d like to have highlighted methods from Prototype JavaScript library, you don’t have to change the core JavaScript grammar, but create a new grammar, include the JavaScript and then just type keywords to be injected. The same goes for injecting JS with jQuery, Ruby with Rails, PHP with CakePHP, and even XML with XHTML.

Parser

Actually the feature we’re celebrating now the most, is that we finally have new and beautiful parser management. This piece is intended to manage parsing threads with pretty smart prioritization and smart reparsing policy. Among this, Intype gained readiness for your multi-core processors as well as possibility to use all the cool features in the dialogs like search dialog (highlighting in regular expressions and format strings) and bundle editor (highlighting of Jasmine source and snippets).

Our pipeline

As we’re getting close to the release, we have also gave the higher priority to documentation and new site projects, that are required to be launched (at least) with beta (0.5). We’re all kept busy with finalizing and polishing the stuff as the internal testing phase should start in couple of weeks. Next week, Ivan will tell you more about what the new site project is being about and reveal the new design. So here’s the short list of tasks in our pipeline:

  • Martin: Finalize bundles management, finalize project files management, recover the search features, help with new site, work on documentation in parallel
  • Juraj: Finalize the parser management, implement file change watcher, get back to JavaScript support (for next release)
  • Ivan: New site

Comments are locked

We are sorry, but comments for this post are locked. This post is outdated.

  • 1 BoTi  | 14.03.2009 at 12:25 pm

    Things are looking good. Thanks for the update.

  • 2 dflock  | 14.03.2009 at 12:30 pm

    Sounds Great! I really like the grammar injection stuff - this sounds like an excellent addition!

  • 3 Deadelus  | 14.03.2009 at 12:55 pm

    Nice! Very nice work guys, can’t wait ^.^!

  • 4 Sebastian  | 14.03.2009 at 2:20 pm

    Will the new Version come this year?

  • 5 Martin Cohen  | 14.03.2009 at 2:40 pm

    Sebastian: Yes. We’re planning to move to internal testing phase in couple of weeks and that means end of feature development, and start of testing and fixing critical bugs. This should take few weeks, and then we’re going to release it and continue work on 0.4 which will be all about JavaScript and only a few more features that we will skip due to time pressure for upcoming 0.3.5. I’ll let you know when we move to the internal testing phase.

  • 6 NoWhereMan  | 14.03.2009 at 2:54 pm

    w00t! awesome!

  • 7 smash  | 14.03.2009 at 3:03 pm

    Good news everyone :)

  • 8 Ali B.  | 14.03.2009 at 3:16 pm

    Brilliant! Things are shaping and it’s getting close. I, like all others, can’t wait :)
    Grammar injection is such a genius idea. It’s going to prove handy more than anybody would imagine.

  • 9 Adam  | 14.03.2009 at 4:06 pm

    I can’t believe it. Intype really is coming! :)

    Martin, thank you very much for the much improved communication via your blog and twitter.

    I just can’t wait to see that download link one day soon!

    Thanks!

  • 10 Przemyslaw Bajno  | 14.03.2009 at 4:10 pm

    Things are great. But srsly, release this nightly for internested people. The more people will be testing this, the better.

    Peace.

  • 11 Joan Piedra  | 14.03.2009 at 6:03 pm

    Sounds great! Good luck in all the processes, looking forward to the next release.

  • 12 Rogério  | 14.03.2009 at 8:16 pm

    Amazing!

  • 13 oxman  | 15.03.2009 at 12:10 am

    Thanks, but don’t forget something :
    Users like lots of update with very few modifications, or with bugged function if the status of software is alpha/beta.
    Users hate wait a long time to have a big release even the software is bug free.

  • 14 dijon  | 15.03.2009 at 2:48 am

    Keep the updates coming, this is great :)

  • 15 phestehog  | 16.03.2009 at 5:21 pm

    Спасибо!
    Огромное!

  • 16 Brendon Kozlowski  | 16.03.2009 at 5:31 pm

    Martin, I hope you still plan to discuss your own CSS framework used to help create the new site (unless Ivan will describe it next week?). :)

  • 17 Shyam Balu  | 17.03.2009 at 2:25 am

    Will Intype get code-hinting aka auto-completion?

  • 18 Andrew Dotson  | 17.03.2009 at 4:40 am

    Thanks for the update!

  • 19 Robin Drost  | 17.03.2009 at 11:33 am

    Thanks for the update :)

    Intype is a great piece of software!

  • 20 Anonymous Hero  | 17.03.2009 at 3:04 pm

    How will Intype manage huge files (64mb and up), will it be smart and load only relevant parts (64mb is a lot of text, I surely can’t be working on all of it at the same time) or will it do what every other editor and their dog does, by loading the whole thing into RAM?

  • 21 jbeduya  | 17.03.2009 at 3:56 pm

    Great! Great! Great! Can’t wait…

  • 22 Herr-Vorragend  | 17.03.2009 at 4:46 pm

    Why is everyone talking about big huge files?
    I think if you have to open a 64mb file with a code editor you did something wrong with your software architecture!

  • 23 Anonymous Hero  | 17.03.2009 at 8:53 pm

    Because I’m kind of hoping that Intype will be able to replace Wordpad for plain-text/unstyled editing as much as a code editor. As of now Wordpad stands triumphant, there are editors that can do it as good (or is it “as bad”?), but none can do it better… and we get Wordpad by default = autowin to team MS.

    Also I am flattered that you consider me everyone (as I’ve never seen anyone in the blog or on the forums ever ask this question). I feel big :)

  • 24 Anonymous Hvge  | 18.03.2009 at 10:04 am

    Anonymour Hero: Intype loads whole file into the memory at once and I think that big files are handled pretty nice. Of course, it depends on size of file and how much RAM you have:)

    Herr-Vorragend: You’re right but it’s better to handle them. People always do mistakes (it’s nice to see a really huge binary file in intype:) or sometimes they want to open their log files.

    Anyway, we decided to not use file to ram mappings, because we have a relatively slow and complex parser which works on the background. It’s almost impossible to do editor like Intype which will be able to edit large files in effective way:)

  • 25 Martin Cohen  | 18.03.2009 at 10:12 am

    Also, a new Unicode layer is now working much better with long lines. We also will be optimizing parser and it’s output to both consume less memory and work better with longer lines.

    There was also an idea at one of brainstorming sessions, that we can add something called “Large File Mode” that will be enabled in case the file is too big to be handled effectively and will perhaps switch off some Unicode features and parsing. This is just an idea and research (as well as planning) has not been done yet.

    As the parser is the main reason now, we will be working on a new one (sometime after 1.0) which will reflect all needs we collect during the beta stage.

  • 26 Deadelus  | 18.03.2009 at 12:03 pm

    Haven’t had any problems with long files/lines so far.. So you must be talking about REALLY long lines ( > 500 chars).

  • 27 Martin Cohen  | 19.03.2009 at 7:58 pm

    Deadelus: 64k+ :)

  • 28 pit  | 19.03.2009 at 10:11 pm

    @Deadelus
    Last week my Intype hung on attempt to open a file with just one line that was 83Kb long (sort of some minified CSS file).

  • 29 Mick  | 20.03.2009 at 10:45 am

    EmEditor has a ‘large file controller’ (up to 248Gb!!!!!) - have a look at http://www.emeditor.com/modules/feature1/ - that allows you to specify the beginning, end and range of the file to be opened.

    I have a thing about text editors and I think Intype is up there with the best so if you could do something like this, that’d be really cool

  • 30 No downloads.  | 20.03.2009 at 11:38 am

    I see a lot of hype, but no download for the product(not even a alpha quality) since more than a year.

  • 31 Joel Drapper  | 20.03.2009 at 11:50 pm

    Looks really good. It’ll probably come out just as I get my mac so I can use textmate, and coda. :P

  • 32 Shyam Balu  | 21.03.2009 at 12:24 am

    Guess not.

  • 33 Sammy  | 21.03.2009 at 6:33 pm

    @Joel Drappe

    I was just thinking the same thing.

  • 34 Anonymous coward  | 22.03.2009 at 11:17 pm

    come on, release it !!

  • 35 Sabeur  | 23.03.2009 at 1:09 am

    I just want to say what you guys are doing is amazing. Maybe letting user add addon down the line.

  • 36 Deadelus  | 23.03.2009 at 3:13 pm

    64k…. damn.. yea i can understand minified css would act like that.

  • 37 hello  | 26.03.2009 at 1:59 pm

    Tell us please release date of next intype, so i don’t visit this page everyday…

  • 38 razz  | 26.03.2009 at 7:50 pm

    very nice guys :)

  • 39 hello +1  | 27.03.2009 at 5:18 am

    +1

  • 40 Anonymous coward  | 27.03.2009 at 4:34 pm

    съедает нетерпение :’(

  • 41 intype newbie  | 27.03.2009 at 6:10 pm

    Guys…

    How do you get the project/file manager to show up? I downloaded the latest version, but it’s not showing up.

    Thanks!

  • 42 baael  | 28.03.2009 at 12:21 am

    ctrl+f9

  • 43 known Coward  | 28.03.2009 at 1:50 am

    What is the release date I like to have this software and I’m waiting for years

  • 44 Rawr  | 28.03.2009 at 5:47 am

    I know the outcome will be [so] worth the wait.

  • 45 intype newbie (again)  | 30.03.2009 at 7:09 pm

  • 46 Anonymous coward  | 30.03.2009 at 9:39 pm

    RELEASE!!!!!!

  • 47 known coward  | 04.04.2009 at 1:16 am

    Between built in ftp and version control integration would be a good Idea.

  • 48 Anonymous coward  | 21.04.2009 at 2:31 pm

    I totally love the idea of editing it in that way :)

  • 49 moose2004  | 04.05.2009 at 11:00 pm

    Does Intype ver. 0.3.1.547 support Prado?? I have been reading some blogs/forums and have found that all links to the Prado bundle file are dead links. Whats going on??

 

Categories

What is Intype?

Intype is a powerful and intuitive code editor for Windows with lightning fast response.

It is easily extensible and customizable, thanks in part to its support for scripting and native plug-ins. It makes development in any programming or scripting language quick and easy.

Where can I get it?

Intype is still in development, but the current alpha release is available for download here.

© 2006 Intype Team