Thanks for wanting to download.

ICEcoder is completely free for you to download and use as you'd like.

Please enter your email address and hit the button to download. We'll send a welcome email and then only email occasionally about big ICEcoder news.

Enter your email address...

...then download:

Download ICEcoder v7.0

or you can...
Just download without entering email address

Thanks for wanting to download.

ICEcoder is completely free for you to download and use as you'd like.

Please enter your email address and hit the button to download. We'll send a welcome email and then only email occasionally about big ICEcoder news.

Note that this is an early version of ICEcoder Desktop and it may be buggy. Bug reports welcomed!

Enter your email address...

...then download:

Download ICEcoder Desktop v0.2

OK, just some feedback please.

(It's anonymous and helps us know how to improve ICEcoder for you)

I'm using ICEcoder for:

Will be installing on:

I'm a:

Industry I work in:

In future I'd consider paying for ICEcoder:

I'd like a mobile version:

Submit & download:

submit & download

Thanks for trialling ICEcoder!

To continue using it, simply donate $10 by credit card, debit card or Paypal you'll receive an email with your unlock code.

Benefits of donating:

An awesome browser based code editor for just $10!

New updates, features and releases often

Helping support an open source solution

Unlock code for all ICEcoder v5.x releases

Ready to get your unlock code?

Donate $10 by card SSL cert lock Visa & Mastercard

Payments powered by Stripe

...or by Paypal...

Not ready to buy or have thoughts on ICEcoder?

We'd love to get your feedback!

Thanks for donating!

ICEcoder relies entirely on donations to keep developing new features.

Your donation is very much appreciated!

Please check your email now for an unlock code...

Mobile nav display link
Try the online demo

ICEcoder v7.0

It's completely free!


ICEcoder has been created in a way that allows for easy customisation so you can make it your own. Most of the clever bits you can integrate with are JavaScript based and all contained within the lib/ice-coder.js file. You can dig through this, but below you can find a list of useful function calls you can make. This guide is particularly useful when writing your own plugins or customisations.

ICEcoder object

There is a single ICEcoder object and everything resides within it, variables and functions. There are also a number of settings within, followed by the functions themselves. The ICEcoder object also has aliases for header, files, account, fmLock, filesFrame, editor, tabsBar, findBar, content, footer, nestValid, nestDisplay and charDisplay which refer to those elements on the page by that id.


  • setLayout(dontSetEditor)
    This sets the layout of the page again, especially useful after you modify the size of an element. You can pass anything as the dontSetEditor argument to not resize the editor pane.

  • changeFilesW(expandContract)
    Pass an argument of expand or contract to respectively expand or contract the file manager.

  • lockUnlockNav()
    Calling this will toggle between locking & unlocking the file manager.


  • moveLine(dir)
    dir can be up or down to move the currently selected line in that direction.

  • highlightLine(line)
    Will select the given line.

  • goToLine(lineNo, charNo, noFocus)
    Will place the cursor on a line and also character if provided. If no line or character is provided it will set the cursor according to the value in the Go to Line textfield. noFocus is a bool, if true is passed the editpr won't be focused on, false means it will.

  • switchMode(mode)
    Switch the editors highlighting mode. The mode argument can be javascript, coffeescript, ruby, css, less or application/x-httpd-php. If no mode argument is given it will detect by file extension of .js, .coffee, .rb, .css, .less or other.

  • lineCommentToggle()
    Comment or uncomment the current line or text selection.

  • highlightBlock(nestPos,hide)
    This function works with the nesting display to highlight or deselect text according to a specified nest. nestPos is the position of the ICEcoder.htmlTagArray array to be selected. If the hide argument is passed, it will deselect the text and return to what was selected previously.

  • setPosition(nestPos,line,tag)
    This will set the cursor position according to the nestPos of ICEcoder.htmlTagArray on the given line number and tag.

  • tagWrapper(tag)
    This will wrap the selected text with tags according to the tag variable. Passing div as the tag will add line breaks & indents and passing a as the tag will also add href="" and set the cursor within the quotes.

  • addLineBreakAtEnd(line)
    Adds a <br> tag the end of the line. If line is not passed, it will add to the end of the current line.

  • duplicateLine(line)
    Creates a duplicate of the line. If line is not passed, it will duplicate the current line.

  • removeLine(line)
    Removes the line. If line is not passed, it will remove the current line.

  • jumpToDefinition()
    Will try to move the cursor to the definition for the string the cursor is currently on within the current document. Will attempt to find it through a number of common definition formats.


  • selectDeselectFile(action,file)
    The action argument can be either select or deselect and the file/folder with a matching id of the file argument will be highlighted as appropriate.

  • deselectAllFiles()
    Remove selection styling from all files.

  • newFile()
    Starts a new tab and prompts for a filename, saving it immediately.

  • newFolder()
    Prompts for a folder name then creates a folder with that name & path on the server.

  • openFile(fileLink)
    When called without an argument it will open the file selected in the file manager (if a single file is selected). If the fileLink argument is passed as a relative path, it will open that file.

  • openPrompt()
    Opens a dialog prompt asking user for file path or remote URL to open.

  • getRemoteFile(remoteFile)
    Gets the remote URL and opens in a new tab.

  • saveFile(saveAs)
    When called without an argument, it will save the current document. If a saveAs argument is passed, it will prompt the user for a filename and save as that.

  • renameFile(oldName,newName)
    Renames the oldName path as newName path.

  • deleteFile()
    Prompts to delete all currently selected files.

  • copyFile(selFile)
    Makes a note of which file is to be copied.

  • pasteFile(location)
    Pastes a copy of the file (path noted by the copyFile function) at the given location.

  • uploadFileSelect(location)
    Displays the multiple file select dialog for user to select files they wish to upload.

  • uploadFileSubmit(obj)
    Begins uploading the files set on the file input form object. This should be passed as obj.

  • showMenu()
    Show the file manager context menu. The position of the menu will depend on the ICEcoder.mouseX and ICEcoder.mouseY variables and the options shown depend on what is contained in ICEcoder.selectedFiles array.

  • hideFileMenu()
    Hides the file manager context menu.

  • updateFileManagerList(action,location,file,perms,oldName)
    Updates the file manager according to given arguments. action can be add, rename, chmod or delete. location is the relative path of the target. file is the filename, perms are the permissions to set and oldName is the current name (used when renaming).

  • refreshFileManager()
    Reloads the file manager.

find & replace

  • replaceInFile(fileRef,find,replace)
    Replaces find argument with replace argument in fileRef argument, which should be a relative path.

info & display

  • getNestLocation(updateNestDisplay)
    Update the ICEcoder.htmlTagArray array with values according to the current cursor position. updateNestDisplay should be passed to also update the nest display.

  • updateNestingIndicator()
    Indicate if the nesting structure of the code is OK or broken.

  • updateCharDisplay()
    Update the code type, line & character display.

  • updateByteDisplay()
    Update the number of bytes display.

  • showDisplay(show)
    Toggle the char/byte display. Pass 'char' or 'byte' to show that display and hide the other.

  • showHide(doVis,elem)
    Call this function with doVis set as show or hide and the DOM elem you'd like to show or hide. This will set the CSS visibility property on the element as visible or hidden respectively.

  • getcMInstance(newTab)
    This will return the DOM object for the CodeMirror instance of the current document. Now you have all of the CodeMirror API available to you. For instance cm = ICEcoder.getcMInstance() will set the var to the DOM object. You can now use say cm.setValue('New content') to set the content. Full CodeMirror API can be found at

  • getMouseXY()
    Call this to get the users absolute mouse X & Y positions. These values are stored in ICEcoder.mouseX and ICEcoder.mouseY.

  • serverMessage(message)
    Messages are shown at the bottom of the file manager as an indication to the user. The message argument should be short and HTML is accepted, so you can style what is displayed. Calling this function without a message argument will clear the message.

  • showColorPicker(color)
    Show the color picker on screen. You can pass a hex value as color to set that color in the picker on open.

  • fMIconVis(icon, vis)
    Change the CSS opacity of icon to the vis value.

  • isOpen(file)
    Check if the document in the file argument is open in the ICEcoder.openFiles array.

  • updateHints()
    If the JSHint plugin is available, this will update the hints you see in the current documemt.

  • outputMsg(msg)
    Send text to the output pane.


  • codeAssistToggle()
    Switch code assist on/off.

  • serverQueue(action,item)
    The server queue is where all interaction with the server begins. This means you can call many operations and they will be dealt with in turn to avoid jams or unexpected results. The action parameter should be either add or delete to add to the end of the queue or delete from the front. The item parameter should be a file control process currently used as standard by ICEcoder.

  • cancelAllActions()
    This will perform a window.stop call, remove everything but the running task from the server queue, hide the loading screen and show a server message to the user that tasks are being cancelled.

  • setPreviousFiles()
    Set the current previousFiles array in the settings file

  • autoOpenFiles()
    Opens all files in the previousFiles array.

  • settingsScreen(vis)
    Call this function with show as the vis argument and it will show the settings screen.

  • helpScreen()
    Show the help screen.

  • showManual()
    Show the ICEcoder manual.

  • propertiesScreen(fileName)
    Show the properties screen for the given fileName path.

  • fullScreenSwitcher()
    This will switch between full screen and standard view when called.

  • zipIt(tgt)
    Zip up the tgt path using the ZipIt plugin. If no tgt is given, it will zip up at the root level.

  • chmod(file,perms)
    Set the perms argument on the file argument path.

  • openPreviewWindow()
    Opens the current document as a new window to view as a webpage. Created as a named child window so live editing is possible.

  • openTerminal()
    Opens the inbuilt terminal as a new window.

  • logout()
    Log out of ICEcoder.

  • message(msg)
    Alert the msg argument.

  • ask(question)
    Confirm the question argument.

  • getInput(question,defaultValue)
    Prompt the user with a question and show the defaultValue argument as the answer.

  • dataMessage(message)
    Show a message on the data screen, shown when no documents are visible.

  • toolShowHideToggle(tool)
    Show or hide the requested tool, which can be a string of terminal, output, database or git.


  • switchTab(newTab)
    Call this function with a parameter to switch to that tab. Starts at 0.

  • newTab()
    Adds a new empty tab.

  • nextTab()
    Cycle to the next tab to the right or loop back to the first tab.

  • previousTab()
    Cycle to the next tab to the left or loop back to the last tab.

  • redoTabHighlight()
    Reset all tabs to be without a highlight and then highlight the tab as per value in ICEcoder.selectedTab.

  • closeTab(closeTabNum,dontSetPV)
    Closes the given closeTabNum argument. Add true as dontSetPV to not update & save the previously opened files array.

  • closeAllTabs()
    Closes all open tabs.

  • setTabWidths()
    Resize the tab widths according to the space available.

  • sortTabs(newOrder)
    Call this and pass through an array of tab numbers as newOrder to sort into that order. If you have 3 tabs open you could say pass [2,1,3] as newOrder.

  • alphaTabs()
    Sorts tabs into alphabetical order by filename.