Komodo

Komodo breakpoints do not work

Question: 

My Komodo breakpoints do not work. Why is that?

Answer: 

There are a few common reasons why breakpoints may not work when debugging inside of Komodo:

  • symbolic links - ensure that the file is not a symlinked location, as this can cause the breakpoints to be ignored - you must set the breakpoint in the real filepath
  • mapped URIs - sometimes an incorrect mapped URI can cause the breakpoint location to be changed - thus never matching the executed lines - try removing any mapped URIs in Komodo's preferences.

Another Ruby debugging FAQ: the .gem directory

Question: 

Why do I get the error message "ruby-debug-base could not be loaded", even after I've run `gem install ruby-debug-base`?

Answer: 

First, make sure that you've removed Komodo's own ruby-debug-base. You'll find it at /.../dbgp/rubylib/1.8 -- You can either rename that directory to something like "hide-1.8", or remove it. If you're running Ruby 1.9, this won't be an issue. We shipped ruby-debug-base as a favor, but with hindsight, I've begun to think this was the wrong decision. Back in the days of Ruby 1.8.4, not everyone had gem installed. Now it's standard issue on OS X, and easy enough to install.

Second, make sure there aren't any ruby-debug-base instances lurking in your .gem directory -- Ruby picks these in preference to the global gems.

If that doesn't help get your debugger working, along with the other tip in
http://community.activestate.com/faq/rails-debugging-triggers-internal-e...,
please drop me a line via support@activestate.com.

- Eric

Debugging Ruby 1.9.1+ in Komodo 5.2

Question: 

How do I debug with Ruby 1.9 in Komodo?

Answer: 

We put the wrong gem install instructions in Komodo 5.2 -- it should be:

gem install ruby-debug-base19

First, the gem doesn't work with Ruby 1.9.0. As I write this, version 1.9.1 is the most recent, but I expect this gem will work with future 1.9 versions.

Second, you *can* use earlier versions of Komodo to debug Ruby 1.9 -- simply edit
/.../support/dbgp/rubylib/rdbgp.rb, and change this line:

elsif ver == 1 && subver == 9

to

elsif ver == 1 && subver == 9 && teeny == 0

Rails debugging triggers an internal error message

Question: 

When I try to debug Rails apps or unit tests in Komodo, I get an error message "INTERNAL ERROR!!! You have a nil object when you didn't expect it!" instead of breaking.

Answer: 

The problem is that a couple of Rails files are now loading ruby-debug-base whether it's requested or not. The result is that a mixture of objects in the Debugging module are loaded, and they conflict.

I submitted a patch at https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2895 requesting that Rails loads the debugging environment only if it hasn't been loaded yet. I don't know if the patch has been applied to trunk yet, but it's an easy fix:

Find the two files in either your gem or vendor area:

actionpack/test/abstract_unit.rb
railties/lib/test_help.rb

Find these lines:

begin
  Debugger.start
rescue LoadError
  # Debugging disabled. `gem install ruby-debug` to enable.
end

and change the 'end' to

end unless defined? Debugger

Getting Komodo to remember the Debugging Options fields

Question: 

Every time I debug the same file, I have to re-enter the
directory in the Debugging Options field. How can I get
Komodo to remember it?

Answer: 

This is due to bug http://bugs.activestate.com/show_bug.cgi?id=80940,
in which Komodo uses the project's specific configurations, rather
than the "global" ones associated with each file.

The usual workaround is to make sure that you select a different
project, so the active project doesn't contain the file you're
trying to debug.

Komodo 5.2 features

Product: Komodo | tags: komodo 5.2 release features

This is an overview of the major items included in the Komodo 5.2 release.

Performance and Stability Improvements

The underlying Mozilla source code has been updated in Komodo, which has led to better security and stability of the Komodo platform as a whole.

Numerous performance improvements have been made to Komodo, in order to make Komodo speedier in the tasks it performs, such as when working on large files:

  • Komodo will now automatically style very large html documents as text in order to support faster edits and re-displaying of the document
  • the find search speed has been increased, making it faster to search your documents
  • the Rx Toolkit is now much faster when parsing results

PHP 5.3 support

Komodo now has started supporting PHP 5.3 in the following ways:

  • Code Intelligence
    • Code browser and sectionlist support for namespaces (IDE only)
    • Code completions for /Namespaces
    • Syntax colorizing of latest keywords ("namespace", "use", "as", etc...)
  • PHP Debugging
    • Improved debugger wizard for the first time setup
    • Updated xdebug builds to support PHP 5.3

Primary language preferences

It is now possible configure your primary languages that you use inside of Komodo.

Komodo's "Languages" preferences provides the interface to change the primary/secondary languages which are shown in the various language menus.

Sub-language background colors

It is now possible to give sub-languages a different background color. For example, when editing a HTML file you can set the JavaScript background color to be green and all the JavaScript code will appear as green section block:

In Komodo's "Fonts and Color" preferences, in the "Lang-Specific" tab navigate to the sub-language you wish to customize (in this example it's JavaScript) and then enable the "Use a different background color when used as a sub-language" checkbox and change the color appropriately.

View HTML Source

If you drag/drop a web url onto Komodo (http://, https://), Komodo now offers to view the source contents of this web page. This is convenient for checking the underlying HTML source code of web pages.

When you select the "View Source" button, the web URL will be downloaded and then opened in a Komodo editor tab as a read-only file.

SCC History searching (IDE only)

The SCC history dialog now has a search facility:

This search textbox filters the history items, word-by-word, matching on any field (date, user, message, etc...) of the visible history columns.

Bug Fixes

A lot of commonly requested/encountered Komodo bugs have been fixed in this release, such as:

  • can now "chmod" remote files
    (bug 29688)

    The file-properties page now has a "Change" button in order to change the file permissions.

  • scc: commit dialog now remembers previous commit messages
    (bug 29688)

    There is now a drop-down menu in the top-right of the commit dialog that provides the ability to select a previous commit message.

  • scc: support for using external diff tools
    (bug 74288)

    There are now per scc preferences to state whether the scc diff is handled through an external editor - so that Komodo does not show it's own internal diff dialog and/or wait until external diff is completed.

  • can now choose the color of find highlighting (and other indicators)
    (bug 81899)

    In Komodo's "Fonts and Colors" preferences, there is now an "Indicators" tab in which you can change the color of various Komodo indicators, such as the find highlighting color.

  • scc: the add new file operation will also add any necessary parent directories
    (bug 74774)
  • null bytes: Komodo can again open edit and save files that contain null bytes
    (bug 35678)

Getting your hands on the 5.2 Komodo release

You can download the Komodo releases here:
http://downloads.activestate.com/Komodo/releases/

Other Komodo releases

Setting up a new Komodo IDE formatter

Question: 

How do I create a new Komodo code formatter for a given language?

Answer: 

Komodo's code formatting system can be used to launch external code formatting applications on your source code.

  • Go to Komodo's formatter preferences
    You can use Komodo's Edit->Preferences to bring up the Komodo preferences dialog, then select the Formatters category.
  • Create new formatter
    Use the green (+) button to start creating a new formatter. Fill in the Name and Language fields and then in the Formatter menu select the Other Formatters->Generic command-line formatter. This will show further configurable options to customize the formatter command. Generally this will be the name of the executable (example "tidy") and the options that are passed to this executable. The actual code to be formatted will be passed via stdin.
  • Example Language Formatters

How to change Komodo auto updating

Question: 

How do I change Komodo to use a different build, such as a nightly build?

Answer: 

The simplest way to change Komodo builds is through the Komodo auto-update facility, where you can update between the latest "release", "beta" and "nightly" versions of Komodo. To do this, you'll need to locate the channel-prefs.js file in your Komodo installation, on Windows and Linux this file is here:

INSTALLDIR/lib/mozilla/defaults/pref/channel-prefs.js

and on Mac OS X here:

INSTALLDIR/Contents/MacOS/defaults/pref/channel-prefs.js

It is a very simple file that looks like this:

// Valid values are "release", "beta" and "nightly".
pref("app.update.channel", "release");

Change the value to whatever you wish to use (i.e. "nightly"), restart Komodo and then use Komodo's Check for Updates menu to update to the required build.

Note: You can change back your auto-update channel at anytime, but there is no un-update functionality, example:

  • You start at Komodo release 5.1.0 (build 27487)
  • Change to "nightly" channel, restart and auto-update to nightly 5.1.1 (build 27621)
  • Change to "release" channel, restart. Your still at build 27621, the auto-update will only trigger again when the next release build of Komodo is made (i.e. 5.1.1 final)

More information on the Komodo auto-update system is available in Trent's blog:
http://trentm.com/blog/archives/2008/03/03/komodo-aus/

Adding a Komodo hyperlink handler

Product: Komodo | tags: hyperlink

The Komodo hyperlink handling is useful for providing a customized action for the given text underneath the Komodo cursor, see here for an overview:
http://community.activestate.com/komodo-51-features#hyperlinks

You can also add your own customized hyperlink handler. Below is an example of adding a custom regular expression hyperlink handler to Komodo.

You will need to create a Komodo JavaScript macro that triggers on Komodo startup, with the following base contents:

// This handler will match the given pattern and when clicked, will
// try to open the URL: "http://foo.com/$1", where $1 is the regular
// expression match group 1. You can use $0 through to $9.
var myRegexHandler = new ko.hyperlinks.RegexHandler(
      "Name of your handler",
      new RegExp("pattern\\s(.*)", "i")  /* pattern match */,
      ko.browse.openUrlInDefaultBrowser  /* function, action taken */,
      "http://foo.com/$1"                 /* replacement string */,
      null                               /* Supported language names */,
      Components.interfaces.ISciMoz.INDIC_PLAIN, /* indicator style */
      RGB(0x60,0x90,0xff));                      /* indicator color */
ko.hyperlinks.addHandler(myRegexHandler);

Now, the goto definition handler may be beating you to the punch (because hyperlink handlers are checked in the order they were originally added and only one can win). So, you may want to bump up your handlers place in line, example:

var gotoHandler = ko.hyperlinks.getHandlerWithName("Goto Defintion");
ko.hyperlinks.removeHandler(gotoHandler);
ko.hyperlinks.addHandler(myRegexHandler);
ko.hyperlinks.addHandler(gotoHandler);

For further details on the regular expression hyperlink class, see the source code:
http://svn.openkomodo.com/openkomodo/view/openkomodo/trunk/src/chrome/ko...

Komodo 5.1 features

Product: Komodo | tags: komodo 5.1 release features

This is an overview of the major items included in the Komodo 5.1 release.

Find Highlighting

Komodo will now highlight the search term (in yellow), indicating where the matches are in your document(s). Komodo will also highlight the replacements that you make when using the find and replace dialog.

See Trent's blog to see a short screencast and more details on this feature.

History

The "History" feature for Komodo is similar to a web browser's history, it allows you to quickly walk between your code movements and actions.

See Trent's blog post for additional information:
http://trentm.com/blog/archives/2009/02/04/history-feature-in-komodo-510...

Hyperlinks

When you hold down the Ctrl key (Cmd key on the Mac) and move the mouse around, Komodo will underline the interesting (interactable) points under your mouse cursor. This can be used for showing things like the goto definition search term, and when clicking on the hyperlink it will perform the goto definition command. Other cool uses for this feature are CSS color previewing and color picker interaction (screenshot below) as well as being able to click on a http link in the editor and have it open inside your browser.

Check out Trent's blog for more details on the Komodo hyperlink handler:
http://trentm.com/blog/archives/2009/03/13/hyperlinks-in-komodo-510b1/

as well, you can also add your own custom hyperlink handlers, check out this article:
http://community.activestate.com/adding-komodo-hyperlink-handler

Fast Open

The fast open dialog provides a quick and easy way to access your files. You can use the dialog to list and filter the files within your current working directory, files within the current project, recently opened/closed files as well as being able to switch to a currently opened file.

The default key bindings for the fast open dialog are:
* Ctrl+Shift+O (on Windows and Linux)
* Cmd+Shift+O (on the Mac)

A Fast Open screencast is shown here:
http://www.vimeo.com/3825622

Linux 64-bit (x86_64) builds

Finally Komodo has builds for running natively on 64-bit Linux. This means no more mucking around trying to find 32-bit compatibility libraries on Linux, yay!

Better localization support

Davide Ficano (aka Dafi) has been working hard in the previous months on adding better localization support for Komodo, involving a number of patches to the OpenKomodo tree. These have now been checked in to the Komodo trunk and improved Komodo localization is now possible. Thanks for the great work Dafi!

Download it

Komodo downloads are available here:
http://downloads.activestate.com/Komodo/releases/
There are also nightly updated builds available here:
http://downloads.activestate.com/Komodo/nightly/

Documentation and Bug fixes

For a full set of release notes and Komodo 5.1 documentation, see the online pages:
http://docs.activestate.com/komodo/5.1/

Other Komodo releases