GithubHelp home page GithubHelp logo

komodo / komodoedit Goto Github PK

View Code? Open in Web Editor NEW
2.1K 96.0 300.0 489.77 MB

Komodo Edit is a fast and free multi-language code editor. Written in JS, Python, C++ and based on the Mozilla platform.

Home Page: http://www.komodoide.com/komodo-edit

License: Other

Python 35.66% Perl 2.27% C 22.89% C++ 8.31% Clean 0.06% JavaScript 13.95% CSS 0.27% HTML 13.13% Makefile 0.54% Shell 0.58% Ruby 0.98% Objective-C 0.07% Objective-C++ 0.54% QMake 0.02% Lua 0.01% PHP 0.39% Tcl 0.25% OpenEdge ABL 0.01% Java 0.07% Fortran 0.01%
komodo-edit python mozilla editor ide cross-platform komodo-ide javascript xul xulrunner

komodoedit's Introduction

Komodo Edit

This readme explains how to get started building, using and developing with the Komodo Edit source base.

Whilst the main Komodo Edit source is hosted under this repository you may also want to check out the individual component/addon repositories under https://github.com/Komodo in case you only want to contribute to a specific component. This'll save you some time and hassle as you would not have to build the entire project.

Table of Contents

Screenshot

Screenshot

Download

You can download Komodo Edit here.

Feedback

There are several ways to get in contact with the Komodo devs:

Github: https://github.com/Komodo/KomodoEdit

Forums: http://forum.komodoide.com/

Bug Tracker: https://github.com/Komodo/KomodoEdit/issues

IRC: irc://irc.mozilla.org/#komodo

Mailing Lists: komodo-discuss & komodo-beta & komodo-announce

Building Komodo

Note that these are simplified steps of the building process, for a more in-depth guide check (outdated) BUILD.txt.

Building on Windows

Prerequisites

  • Python >=2.7 (but not Python 3.x yet). You can install ActivePython from here.

  • Visual C++ 11.0 (aka Visual Studio 2012) and all the Platform SDKs for building Mozilla with vc11 as described here.

  • Install version 1.9.0 of "MozillaBuild-$ver.exe" package into the default dir (i.e. "C:\mozilla-build").

    • Once installed remove the wget and hg directories
    • Download version 2.2.0 and install it to a temp directory, then copy the wget directory from 2.2 to the 1.9 install directory
  • Install the Perl <= 5.22

  • Install Mercurial

See http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites for more details on Windows build prerequisites. However, following the above steps is meant to be sufficient to get Komodo building.

Building Steps

  • Checkout Komodo Edit: git clone https://github.com/Komodo/KomodoEdit.git

  • Using the command line, enter your checkout directory and run:

     cd mozilla
     setenv-moz-msvc11.bat
     python build.py configure -k 11.10
     python build.py distclean all
    

    This will configure and build mozilla and can take anywhere from 30 minutes to several hours to complete (depending on your specs). For most modern machines it should be about an hour.

  • After mozilla is built successfully go back to the main repo directory and build komodo:

     cd ..
     set PATH=util\black;%PATH%
     bk configure -V 11.10.0-devel # --without-binary-dbgp-clients
     bk build
    

    This should take significantly less time than building Mozilla.

  • Once the build has completed you can simply run Komodo by executing bk run

Upon making any modifications to the source you will again have to run bk build, or simply bk build && bk run to quickly get back into Komodo. Subsequent builds should be a lot faster as much of the compiled data is cached.

Building on Mac

Mac Prerequisites

  • Python >=2.7 (but not Python 3.x yet). You can install ActivePython from here.

    If you prefer the Python builds from python.org should be sufficient as well.

  • Xcode 6.4(SDK 10.9 & 10.10). For 8.0 see below. You can get version 6.4 from the developer downloads site.

  • MacOSX10.10.sdk or older

  • IDE ONLY SDK 10.8 for Code Intel. Can be found in Xcode 5.1.1

  • If you have/need other versions of Xcode installed then you can use xcode-select to change the active Xcode:

    $ xcode-select -s /Path/To/Xcode\ 6.4.app/

  • Xcode Command Line Tools.

    Open the Xcode preferences, then in the Downloads tab, select and install the Command Line Tools.

  • MacPorts. (Note: Fink may work too but most of the build testing and instructions is done with MacPorts.)

  • autoconf v2.13. Once you have MacPorts installed you need just run sudo port install autoconf213

  • ensure you are using clang or gcc 4.2 (or higher)

See http://developer.mozilla.org/en/docs/Mac_OS_X_Build_Prerequisites for more details on Mac OS X build prerequisites. However, following the above steps is meant to be sufficient to get Komodo building.

Xcode 8 Prerequisites

Officially we do not support Xcode 8, however it is possible to build Komodo under Xcode 8 using a new extra steps.

  • Copy over the 10.8 and 10.9 SDK's from an older XCode install, they should be in: Xcode.app/Contents/Developer/Platforms/macOSX.platform/
  • Set MinimumSDKVersion to 10.9 in Xcode.app/Contents/Developer/Platforms/macOSX.platform/Info.plist
  • Ensure you are using ccache 3.1 (later versions will break)
  • Configure Mozilla with --options=disable-webrtc

Building Steps

  • Checkout Komodo Edit: git clone https://github.com/Komodo/KomodoEdit.git

  • Using the terminal, enter your checkout directory and run:

     1) cd komodo/mozilla
     
     2) python build.py configure -k 10.10
     
     3) python build.py all
     
        or 
     
        python build.py distclean all
        (to delete and re-download Mozilla again)
    

    This will configure and build mozilla and can take anywhere from 30 minutes to several hours to complete (depending on your specs). For most modern machines it should be about an hour.

** Building with GCC 5.0 and higher **

If you are using GCC 5.0, the build may fail. If it does, there are changes that need to be made to two files. However, if you are running a clean build for the first time, you need to allow this part of the build to fail first. This is because the files are in the Mozilla part of the build which has to be downloaded first.

These files need to be changed:
  1. /KomodoEdit/mozilla/build/moz3500-ko9.10/mozilla/configure.in
 @@ -7509,8 +7509,6 @@
 eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
+   CXXFLAGS="$CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
+   HOST_CXXFLAGS="$HOST_CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
fi

See bug #1153109 in Mozilla's bug database for more information.

  1. /KomodoEdit/mozilla/build/moz3500-ko9.10/mozilla/dom/ipc/Blob.cpp
@@ -3874,7 +3874,7 @@
// Make sure we can't overflow.
if (NS_WARN_IF(UINT64_MAX - aLength < aStart)) {
  ASSERT_UNLESS_FUZZING();
-    return nullptr;
+    return false;
}

ErrorResult errorResult;
@@ -3883,7 +3883,7 @@

if (NS_WARN_IF(aStart + aLength > blobLength)) {
  ASSERT_UNLESS_FUZZING();
-    return nullptr;
+    return false;
}

See Porting to GCC 5 for more information.

  • After mozilla is built successfully, go back to the main repo directory and build komodo:

     cd ..
     export PATH=`pwd`/util/black:$PATH   # Komodo's "bk" build tool
     git submodule update --init
     git submodule update --remote
     bk configure -V 10.10.0-devel
     bk build
    

    This should take significantly less time than building Mozilla.

  • Once the build has completed you can simply run Komodo by executing bk run

Upon making any modifications to the source you will again have to run bk build, or simply bk build && bk run to quickly get back into Komodo. Subsequent builds should be a lot faster as much of the compiled data is cached.

Building on Linux

Linux instructions

Building with Docker

The easiest way to get started is to use our Docker image, this will basically provide you with a Ubuntu 12.04 based build of Komodo.

After cloning the repository simply navigate into {repo}/util/docker and check out ./docklet --help

To use the docker image you need to of course have Docker installed as well as have X11 forwarding enabled in your SSH client (should work by default on most linux distros).

Prepare Docker Image

  • Build the docker image: ./util/docker/docklet image
  • Start your container: ./util/docker/docklet start
  • SSH into your container to start working: ./util/docker/docklet ssh

Your project files will be mounted at /komodo/dev

NOTE - if you are updating from a previous version where your project files were at /root/komodo you will need to fix permissions on your Komodo project and profile folders. Ie:

chown -R <my-username>:<my-group> <my-project-location>
chown -R <my-username>:<my-group> ~/.komodoide

You will also need to redo your build (distclean mozilla and komodo).

Building Steps

Once your image is prepared you can follow the building steps for linux as described above. You will be running these from the docker container, so ssh into it using the command above and then run the commands from /komodo/dev

Running

Once your build is complete you exit out of the container (exit) and can then run Komodo with

./util/docker/docklet run

To rebuild Komodo (after making changes) and run it again you can use

./util/docker/docklet build run

If your changes are not being reflected you may need to clean your build, to do this use

./util/docker/docklet clean

Or to do it all at once (clean, build and run)

./util/docker/docklet clean build run

Building Complications

If any errors occur during your first built-time and it is not obvious how to fix the issue on your own please refer to the Feedback section on how to get in contact with us.

Note that if building complications arise after you updated your repo with the latest changes you might need to clear your local cache as it might be conflicting with the new changes, to do this run bk distclean before running your build steps.

Pro-Tips

Build a single piece

Sometimes bk build is too much and bk build quick isn't enough. If bk build quick doesn't appear to pickup your changes, try pointing bk build at the piece in question.

Example

bk build build/release/modules/places #this will build the places module only

NOTE: Do not rely on this method as bk build quick is faster and in some cases does some steps that the above example won't perform. Use it as a last ditch effort before you try bk distclean && bk build.


komodoedit's People

Contributors

adriank avatar babobski avatar cegard avatar defman21 avatar i-shenl avatar jeteon avatar kekepower avatar lagbox avatar mamat-rahmat avatar mitchell-as avatar naatan avatar pageer avatar robinmalfait avatar sbmthakur avatar sedabull avatar smehrbrodt avatar smpeters avatar ssigwart avatar th3coop avatar timgates42 avatar twhiteman avatar we3geeks avatar wizza-smile 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  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

komodoedit's Issues

sdk/icons is accessing files in a redundant manner

Icons are often created/deleted multiple times, possibly because the protocol handler is not confined to the main thread (assumption). This causes issues with files being deleted/accessed when they no longer exists. Workarounds are in place but they are not ideal, this needs to be properly fixed.

Wrong directory in places when opening a project in a new window

When we choose to open an existing project in a new window (by choosing the menu "Open a project in a new window" or "Open project in a new window" in the projects list), a new window appears, with all previously opened files. But the folder root in places is a random root directory of an other project. We have to double click on the project in places to have the right root folder.

Python module with __init__

If I have a python module such as:

models
├── __init__.py
└── enum.py

and inside init.py, I have something like

from .enum import MyEnum

and in another file I type

from .models import ?

the auto complete does not have MyEnum

v9.0.0 Publishing context menu grayed out when local path has spaces

To recreate:

  1. Plug a USB thumb drive into a Mac OS X machine.
  2. From a terminal "sudo /usr/sbin/diskutil rename /Volumes/<usb_name> name\ with\ spaces".
    2a. It will respond with something like "Volume at disk04 renamed to name with spaces"
  3. Go to Preferences->Users and right-click your user. Select "Advanced options".
  4. Change your user directory to the USB drive by using the "Choose" button to select it.
  5. Restart the computer and build a project, Server pref, and Publishing pref.
  6. Right-click on any file in the "Places" panel. Select Publishing->Push - it will be grayed out.

Komodo IDE css autocompletion not working with dashes

Hi!

On Komodo IDE 9 mac, autocompletion for CSS doesn't seem to be entirely functional - typing in "font" will bring up the font-family, font-size, float, etc. suggestions like it should, however, once you add a dash ('-'), then the autocompletion should narrow down it's suggestions to things like font-family, font-size... however this is not the case: there is simply no autocompletion after a dash is appended..

install in custom directory failed

Komodo IDE, version 9.0.0-rc1, build 87122, platform linux-x86_64.
Built on Thu Mar 12 01:38:38 2015.

How to reproduce fail:
Install in a custom path.
Nothing happens et process end shortly

As opposite default config install in ~/Komodo-IDE-9, works nicely
Really good job of the komodo team. Thanks a lot: really nice new feature and now autocompletion really works

Commando: Doesn't work with relative paths.

Entering ".." or "...." to ascend directories in commando results in "No Results". This using the Files scope and the Everything scope, where I would expect them to work.

Build repeating Mozilla download

When attempting to build per the instructions on the main page https://github.com/Komodo/KomodoEdit I'm making it progressively further through, but have yet to get all the way through "python build.py distclean all".

I assume it's intended to be the safest way to try again, wiping all the build files. Admitting that "python build..." is the last in a long string of build syntaxes I've learned, does it have to wipe the Mozilla download? Could it ask to keep it (if it's valid) or even be resumable?

Though I did check for dependencies ahead of time ('hg' and 'python27 not in the path' were the last two fatal errors), and fixing the dependencies hasn't been that hard (only a few minutes each time) the biggest problem has been the formidable package size combined with network bumps.

Thanks for any ideas, even if it's correcting how I'm trying to do this.

Publishing configurations are not shown in menu

I added some configurations for publishing.
When I open right menu (with 3-bars icon) and choose Tools->Publishing there are no saved configurations.

In top menu (open with Alt) Tools->Publishing shows configurations properly

Can`t add custom Linter.

Custom Linter modules are not working with Komodo 9.
In log we get:

[2015-03-09 08:17:36,684] [ERROR] lint:
-- EXCEPTION START --
[Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [koILintService.addRequest]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: chrome://komodo/content/lint/lint.js :: this.lintBuffer.prototype._issueRequest :: line 477" data: no]

  • toString (function) 3 lines
  • message (string) 'Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [koILintService.addRequest]'
  • result (number) 2147549183
  • name (string) 'NS_ERROR_UNEXPECTED'
  • filename (string) 'chrome://komodo/content/lint/lint.js'
  • lineNumber (number) 477
  • columnNumber (number) 0
  • inner (object) null
    | + data (object) null
    | + stack (string) 'this.lintBuffer.prototype._issueRequest@chrome://komodo/content/lint/lint.js:477:12
    this.lintBuffer.prototype._continueRequest@chrome://komodo/content/lint/lint.js:421:8
    '
  • location (object) JS frame :: chrome://komodo/content/lint/lint.js :: this.lintBuffer.prototype._issueRequest :: line 477
    | + QueryInterface (function) 3 lines
    | + language (number) 2
    | + languageName (string) 'JavaScript'
    | + filename (string) 'chrome://komodo/content/lint/lint.js'
    | + name (string) 'this.lintBuffer.prototype._issueRequest'
    | + lineNumber (number) 477
    | + columnNumber (number) 12
    | + sourceLine (string) ''
    | + caller (object) JS frame :: chrome://komodo/content/lint/lint.js :: this.lintBuffer.prototype._continueRequest :: line 421
    | + formattedStack (string) 'this.lintBuffer.prototype._issueRequest@chrome://komodo/content/lint/lint.js:477:12
    this.lintBuffer.prototype._continueRequest@chrome://komodo/content/lint/lint.js:421:8
    '
    | + stack
    this.lintBuffer.prototype._issueRequest@chrome://komodo/content/lint/lint.js:477:12
    this.lintBuffer.prototype._continueRequest@chrome://komodo/content/lint/lint.js:421:8
    -- EXCEPTION END --

Sample project can be found:
http://s000.tinyupload.com/?file_id=53559971691208244892

There`s also problem with importing Code Intel cile file:

[2015-03-09 08:17:36,993] [ERROR] codeintel.citadel: unexpected error scanning `main.ts'
Traceback (most recent call last):
File "C:\Program Files (x86)\ActiveState Komodo Edit 9 nightly\lib\mozilla\python\komodo\codeintel2\citadel.py", line 266, in scan
scan_tree = cile_driver.scan_purelang(self)
File "C:\Users\sssss\AppData\Local\ActiveState\KomodoEdit\9.0\XRE\extensions\[email protected]\pylib\codeintel_ts.py", line 258, in scan_purelang
import cile_ts
ImportError: No module named cile_ts

but for that we can move content of file to the codeintel scan_purelang class

Update "Komodo Bugzilla database" pharse

This button refers to the Issues and not to the Bugzilla anymore but it's still have a bad description. (I think alt tag) (the button available under View - Toolbars - Customize... - Komodo Resources Toolbar)

floating panes: In customize mode, can't combine tabs by drag and drop

  • Right click pane tab icon, click customize
  • try to drag and drop different tabs into other tabs.

Expect: dragged tab to merge into receiving tab in the indicated space (indicated by dotted line box)
Actual: Nothing happens

Functionality remains by using right click tab icon > Combine tab with

Run COmmand MRU not saving

It looks like this might just be on Windows. Nathanr can't reproduce on his machine.

  • Run a command in Run Command
  • Open Run Command again

Expect: Previous command to be in Run field, when I type should offer suggestions of possible commands, clicking dropdown should show me all previous commands
Actual: All of the above is not happening.

Tried restarting with KOMODO_USERDATADIR set but made no difference.

Lag when opening/saving over FTP.

When I edit files over FTP I frequently have to wait for what seems to be around 5-10 seconds. It seems to be happening when the current connection has been active for what seems to be 5 minutes, tops.

floating panes: In customize mode, "detach pane" breaks things.

Most noticeable

  • Open a project
  • Right click a tab icon and click "customize"
  • Right click Places tab icon and "Detach Pane"

Expect: My very own, brand new, Place tab window
Actual:

  • Places tab content disapears
  • Komodo offers to close my open project files
  • When I close the window, it adds an new Place icon to the left pane

NOTE: Also happens using Move to Pane > New Floating Pane

Those don't need to be enabled in that mode. We could just disable them.

Running Macro From Commando Fast Open

I am just wondering if I can run macro from commando, so far I can search a macro via commando but whenever I press enter the macro will be opened in edit mode instead of being run. I know I can assign shortcuts, but sometimes some macros are only relevant to certain projects, therefore these shortcuts will be redundant for any other projects. Commando is so great that now I am too lazy to leave my keyboard and click the toolbox.

Add "BugSnag" integration (or similar)

In order to be more proactive with our error tracking we should use a service like bugsnag to aggregate errors and show us a "heatmap" of problem areas.

Can't see hidden folders in Places or Commando

Wasn't sure if they are related that tightly but going with saving my self writing two bug reports.

  • Open a git repo in Places
  • Make sure you have "View All" enabled in the Places options.

Expect: to be able to see .git folder in Places, or navigate to a folder in Commando inside the .git folder
Actual: Neither of the above are possible.

Duplicated entries in Places view

When Click to Expand is enabled, sometimes after expanding directory, I have duplicated entries.

Screenshot of the issue.
komodo

I do not know exact steps for reproduce, it looks totally randomly. But I am sure that with Click to Expand disabled, issue is not present.

Found on:

OS: elementary OS 0.3 Freya (based on Ubuntu 14.04 LTS Trusty)
Komodo: Komodo IDE, version 9.0.0, build 87165, platform linux-x86_64. Built on Wed

but it may be not OS-related

Support 'require_relative' in codeintel

Perfect example from OTRS:

Contents of code_intel.rb

class CodeIntel
  def find_me
    puts "I'm found!"
  end
end

Contents of the_script.rb

require_relative 'code_intel.rb'
t = CodeIntel.new()
t.find_me

What I'm seeing is that in the_script.rb file, I don't get any code completion on the
"find_me" method. If I try using the "go to definition" functionality on the find_me
method in the_script.rb file I get an error of "No Definition Found".

Modularize File Status Icons

Right now these are handled independently wherever they appear, with some global CSS trying to tie it all together. This is very error prone and creates a lot of maintenance overhead when we try to make changes to them.

We should create one XUL binding that is used everywhere. This already exists but doesnt cover all the use-cases we have, so we should simply extend upon the existing implementation.

Unfortunately this won't cover trees, those will have to remain independent.

Find in Files failing

Reference: https://bugs.activestate.com/show_bug.cgi?id=106442

[2015-03-25 14:15:41,467] [ERROR] console-logger: TypeError: widget is null (2)
in chrome://komodo/content/find/find2.js:1428
Traceback (most recent call last):
  File "chrome://komodo/content/find/find2.js", line 1428, in 

[2015-03-25 14:16:03,298] [ERROR] find.dialog: 
-- EXCEPTION START --
TypeError: widget is null
+ stack
    _collapse_widget@chrome://komodo/content/find/find2.js:1428:9
    update@chrome://komodo/content/find/find2.js:268:1
    _init@chrome://komodo/content/find/find2.js:1149:5
    on_load@chrome://komodo/content/find/find2.js:89:9
    onload@chrome://komodo/content/find/find2.xul:1:1
-- EXCEPTION END --

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.