Code Monkey home page Code Monkey logo

clyde's Introduction

Clyde

A Clean IDE for Mac OS X

This is a work in progress towards an integrated development environment for Clean similar to the CleanIDE for Windows.

Goal

Create a functional Clean development environment for Mac OS

Non-Goal

Port object i/o library to Cocoa

Status

Version 0.1 is a very rough round the edges first alpha release.
Hopefully future releases improve on this!

Using

  • Clyde is automatically bound to files of type *.prj, *.icl and *.dcl
  • Clyde needs to know the path to your Clean installation. Use defaults write com.mac.dvanarkel.Clyde CLEAN_HOME <path> from your Terminal to inform it of the correct path.

Mac OS X version supported?

  • No Mac OS supported version is currently explicitly set, therefore the built application will default to requiring the OS version on which it was built.
  • No explicit testing has been done on OS versions prior to OS X 10.11 (El Capitan), or later for that matter :-)

Reuse

We currently include

  • prebuilt static libraries for dyncall v0.9 <www.dyncall.org>
  • relevant sources from 'clean tools' development repository from the Clean team
  • Titto icons from Alejandro Lopez

Contributing

Contributions welcome (code, comments, suggestions, issue reports,...)

Building

Building Clyde requires

  • installation of a recent Nightly build of Clean for Mac OS X (http://clean.cs.ru.nl/Download_Clean).
  • installation of the Xcode command line tools, if you don't have these already you can install them by running xcode-select --install from a Terminal session and following the prompts
  • open the Terminal in the Clyde.git directory
  • Run .\cpm Clyde.prj (note the .\ in order to pick up the local copy of cpm)
  • Run lsregister -f Clyde.app in order to have the OS pick up any changes to the Clyde.app properties when it doesn't do so automatically
  • Append StdEnvClyde.env to the IDEEnvs file in your Clean installation

Working With Git

Append the following to your .git/config in order to clean out Clean project files automatically when committing to the repository:

[filter "vacuum"]
	clean = sed '/^OtherModules$/,$d'
	smudge = cat

Where the filter is triggered as the .gitattributes has been modified to include:

# hook to vacuum Clean projects on commit
*.prj	filter=vacuum

Roadmap

v0.1

  • get Run functioning (as well as Build & Run)
  • figure out if code signing required
  • get Build functioning
  • cleanup Project menu
  • upload to github
  • fix hardcoding to Clean installation
  • aborts when trying to open file it can't find
  • do something about writing debug logs to hardcoded location
  • don't die when reading invalid project file
  • weird line wrapping on new files
  • cascade windows when opening
  • add line numbers
  • paste styled text as plain (for Paste command from main menu)
  • jump to line... (should be easy with added NSTextView++)

v0.2

  • update project window after build
  • save all before Build
  • edit project options
  • console redirection for launched processes
  • distinguish console vs standalone apps for launch
  • paste styled text as plain (e.g. when drag 'n drop text into IDE window)
  • still some paste issues for styled text (NS substring out of range.. so looks like an issue with syntax colouring)
  • New should allow you to choose prj/dcl/icl/txt
  • after first save it appears later edit's do not immediately mark file as dirty
  • shift-doubleclick doesn't have desired effect in project window (should open definition module)
  • error, message and type windows for build output
  • column sizes & resizing in project window

Unplanned

  • still some issues with syntax colouring vs unicode
  • project global Clean sensitive search
  • allow opening project files 'as text'
  • enable project menu items at all times.. probably requires restricting ourselves to a single project window?
  • update module mangling so that hierarchical modules are part of directory name instead of module name eg {Project}.Cocoa dyncall rather than {Project} Cocoa.dyncall
  • integrate cloogle
  • api documentation
  • xref
  • cross compilation
  • consider moving to collection of *.env files under /etc instead of monolithic IDEEnvs
  • edit IDE options (CLEAN_HOME)
  • edit module options
  • store build artefacts in a per-project hierarchy (as opposed to current per source directory Clean System Files)
  • include clean system for a one-step install
  • git integration (include 'modified upstream' alerting)
  • interactive clean

Others

  • Update .gitignore

clyde's People

Contributors

dvanarkel avatar

Watchers

James Cloos avatar

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.