Here are some of the features of Ex.Co.

Free-form windowing system

  • Ex.Co. uses a free-form windowing system. Any component can be placed into any configuration that is needed.
  • Moving components around is done by clicking and dragging the component's tab.
  • Any of the windows can contain components of every type available like: editor, text differ, node tree display, file explorer, ...




Customize the look of Ex.Co.

  • Configure editors / explorers /... completely free-form.
  • From multi-window appearance with a custom layout, to a single window style.
  • Any tab can be put into any window with clicking and dragging a component's tab into another docking position. Windows are created as needed.




Choose or create your theme

  • Ex.Co. has four preset color themes:
    • Air
    • Earth
    • Water
    • MC
  • Update the theme and just reload it to see the results.
  • If your favourite theme is missing, you can simply copy an existing theme, modify it, give it an icon, and you are done!


Python built in

  • Not only is Ex.Co. written in Python, it has direct access to Python built into it.
  • Python is accessible through the REPL (Read-Eval-Print Loop). This is the textbox at the bottom of the editor into which you can input Python code. You also have a multiline REPL in case you wish to write multiple lines of code.
  • Python can be used to program, edit text, enhance Ex.Co., ...
  • For example:
    • You can add/edit/append lines to any editing tab using the REPL
    • You can access the editing or any other functionality using Python code
    • ...


Syntax highlighting

  • Many supported languages from Ada all the way to YAML.
  • If your favourite programming language is missing, raise an issue on Github and I'll add it!




Text diffing

  • Compare text between two editors. Editors can be in different windows.
  • Select a tab as a base and right-click on the tab you wish to compare the base to and select "Text diff to focused window".
  • Side-by-side view of the diffed documents.
  • Quick scroll buttons to jump directly to diffed lines.




Node trees for various programming languages

  • Build Node trees for quick navigation of various programming languages. More programming languages will be added in time.
  • Creates a special tab which holds the node tree which you can use to navigate to for example:
    • Python - classes, functions, global variables, ...
    • Nim - procedures, types, constants, macros, ...
    • Assembly - defines, macros, labels, types, ...
    • C - functions, prototypes, typedefs, macros, ...
    • C++ - functions, classes, prototypes, typedefs, macros, ...
    • D - functions, classes, prototypes, typedefs, macros, ...
    • Pascal - functions, procedures
    • Javascript - functions, classes, methods, properties, globals, ...
    • Many more languages to come - raise an issue on Github, if you want me to add your prefered language sooner.




Function wheel

  • Graphical grid for quick visual access to most of the Ex.Co. functions.
  • I call it a function wheel in reference to the similar thing in video games.




Customize the context menu

  • The context menu is the menu that appears when the right mouse button is clicked in an editor.
  • You can Click&Wait-1-second&Drag functions from the menubar into the context menu.
  • Don't forget to save the settings after you customize the context menu or your changes will be lost when Ex.Co. closes!




Direct terminal access

  • Access the terminal directly with a single REPL command.
  • Executing the command opens a new terminal window (outside of Ex.Co.), executes it and waits for a key press. You can spawn as many terminals as you like.
  • It can be used to build, compile, test or run any other command that you need the terminal for.
  • The default terminal on Linux is XTerm and on Windows it is the Window Command Line.
  • The used terminal can be easily changed in the settings file.
  • If anyone needs this functionality on MAC OS, raise an issue on Github and provide the details on how the terminal accepts commands as arguments.
  • The image on the right shows me building the nim_lexers.pyd module for Ex.Co. with the Nim programming language.