<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Gregory</title>
	<atom:link href="http://blog.simongregory.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.simongregory.com</link>
	<description>Flash, Flex and TextMate</description>
	<lastBuildDate>Tue, 27 Jul 2010 08:12:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Static code validation with FlexPMD</title>
		<link>http://blog.simongregory.com/07/static-code-validation-with-flexpmd/</link>
		<comments>http://blog.simongregory.com/07/static-code-validation-with-flexpmd/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 08:12:02 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[actionscript3 flex textmate]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=185</guid>
		<description><![CDATA[A code validator was for a long time one of the tools missing from the ActionScript developers toolbox. Last year that changed and we can now benefit by keeping a robotic eye on our projects. One that helps improve style and consistency, and avoid complexity. Something even more important in team or distributed code environments. [...]]]></description>
			<content:encoded><![CDATA[<p>A code validator was for a long time one of the tools missing from the ActionScript developers toolbox. Last year that changed and we can now benefit by keeping a robotic eye on our projects. One that helps improve style and consistency, and avoid complexity. Something even more important in team or distributed code environments. Hooking validation up to a continuous integration server is even better as the audit triggers automatically, problems get reported and graphed, and builds can be failed when maximum limits are breached &#8211; a clear signal that it&#8217;s time to review and refactor.</p>

<p><a href="http://blog.joa-ebert.com/">Joa Ebert</a> was first to the market with <a href="http://blog.joa-ebert.com/2008/10/06/as3v/">AS3V</a> and I quickly <a href="http://github.com/simongregory/actionscript3-validator.tmbundle">wired it up</a> to run with <a href="http://macromates.com/">TextMate</a>. AS3V is 90% to 95% there, but still needs a couple of features. My guess is that Joa is now focusing on <a href="http://code.google.com/p/apparat/">other things</a>.</p>

<p>Since then <a href="http://www.adobe.com/">Adobe</a> have open sourced <a href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD">FlexPMD</a>. After a couple of false starts I was able run the RC4 build against the codebase I was working with at the time. Even though we&#8217;d been through and fixed most of the 3,000 odd issues reported by <a href="http://blog.joa-ebert.com/2008/10/06/as3v/">AS3V</a>, <a href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD">FlexPMD</a> kicked out over 5,000 &#8216;violations&#8217;. The code had been worked on by around 20 developers over a 3 year period so it&#8217;s likely to be an extreme case, but still my advice is to use it from the start of a project.</p>

<p>For <a href="http://macromates.com/">TextMate</a> users the <a href="http://github.com/simongregory/flexpmd.tmbundle">FlexPMD.tmbundle</a> should help make the process easier. Installation and usage details are covered in the <a href="http://github.com/simongregory/flexpmd.tmbundle/blob/master/README.mdown">README</a>. They boil down to using <strong>⇧⌃v</strong> then selecting &#8216;Project&#8217;, &#8216;Document&#8217; or &#8216;Show Report&#8217;.</p>

<p>Finally its worth saying that being pragmatic is a sensible option when working with validation tools. They aren&#8217;t a substitute for a good programmer. So blindly accepting the default ruleset and fixing everything won&#8217;t necessarily be productive. You can and should consider modifying the rules to get what suits you and your team, and there&#8217;s always going to be exceptions to the rule. Which is what <code>//NO PMD</code> is for.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/07/static-code-validation-with-flexpmd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test driving Maven for Flex, AIR and ActionScript projects.</title>
		<link>http://blog.simongregory.com/07/test-driving-maven-for-flex-air-and-actionscript-projects/</link>
		<comments>http://blog.simongregory.com/07/test-driving-maven-for-flex-air-and-actionscript-projects/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 23:07:02 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=225</guid>
		<description><![CDATA[Being a Ruby lover I&#8217;ve always intended on using Sprouts for project management. But when I was last looking for a solution you couldn&#8217;t easily specify which revision of a Flex SDK a project should be built with. This was something we needed to do. Access to the continuos integration box was limited which also [...]]]></description>
			<content:encoded><![CDATA[<p>Being a <a href="http://www.ruby-lang.org/">Ruby</a> lover I&#8217;ve always intended on using <a href="http://projectsprouts.org/">Sprouts</a> for project management. But when I was <a href="http://en.wikipedia.org/wiki/2008">last</a> looking for a solution you couldn&#8217;t easily specify which revision of a Flex SDK a project should be built with. This was something we needed to do. Access to the continuos integration box was limited which also caused problems, so we went with <a href="http://ant.apache.org/">ant</a>. I&#8217;ve been rolling out the same ant scripts and associated libraries into projects ever since. Code should be <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a>, so why not your projects?</p>

<h2>Minimalism in action</h2>

<p><a href="http://maven.apache.org/">Maven</a> has always been on the radar, but <a href="http://flexmojos.sonatype.org/">Flexmojos</a> has made it all the more attractive to flash developers so there&#8217;s been more and more chatter about it recently. At <a href="http://www.bbc.co.uk/iplayer">work</a> it&#8217;s been talked about for while, and after a sales pitch from <a href="http://github.com/freeformsystems">Mischa</a>, I&#8217;ve finally started to put it into action. So far it&#8217;s really cool, simple, clean, and consistent. The projects I&#8217;ve converted just end up with test and src directories. A lot of junk is gone, reduced to a few lines in a pom.xml file. They&#8217;re smaller and easier to understand. Just the kind of minimalism I like.</p>

<h2>Getting an overview</h2>

<p>Starting by understanding how Maven works is a sensible idea, for this try <a href="http://www.sonatype.com/books/mvnref-book/reference/public-book.html">Maven:The Complete Reference</a>. Then, for flex related tasks the <a href="http://flexmojos.sonatype.org/">Flexmojos</a> site is a good source of information. Keeping an eye on the <a href="http://groups.google.com/group/flex-mojos">Flexmojos mailing list</a> also helps.</p>

<h2>Installing maven 2 + 3</h2>

<p><a href="http://maven.apache.org/">Maven</a> comes preinstalled on OS X so type <code>mvn --version</code> into the <a href="http://en.wikipedia.org/wiki/Apple_Terminal">Terminal</a> and you&#8217;re likely to see this:</p>

<pre><code>Apache Maven 2.2.1 (r801777; 2009-08-06 20:16:01+0100)
Java version: 1.6.0_20
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Default locale: en_GB, platform encoding: MacRoman
OS name: "mac os x" version: "10.6.4" arch: "x86_64" Family: "mac" 
</code></pre>

<p>This means you&#8217;re good to go with all versions of <a href="http://flexmojos.sonatype.org/">Flexmojos</a> prior to 4.x but you&#8217;ll need to install <a href="http://maven.apache.org/">Maven</a> 3 if you need to use any of the features in 4, as I&#8217;m after <a href="http://www.adobe.com/products/air/">AIR</a> compilation, and ASDOC builds against <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK">Flex SDK</a> 4 I needed to install the <a href="http://maven.apache.org/download.html">Maven 3 beta</a>.</p>

<p>To start with <a href="http://maven.apache.org/download.html">download it</a>, then unzip to <code>/usr/local/apache-maven/apache-maven-3.0-beta-1</code>. You&#8217;ll then need to edit your <code>~/.profile</code> to include the following:</p>

<pre><code>export M2_HOME=/usr/local/apache-maven/apache-maven-3.0-beta-1
M2="$M2_HOME/bin"
PATH="$M2:$PATH"
MAVEN_OPTS=-Xmx1024m
</code></pre>

<p>The last line isn&#8217;t necessary, but I added it to give Maven a little more memory to work with. The install notes also say you need to set <code>JAVA_HOME</code>. I didn&#8217;t find it necessary, but if you want to then finding out where <code>JAVA_HOME</code> is on a mac means running <code>/usr/libexec/java_home</code> (should be the same as what Maven&#8217;s just told you above) and adding the results to your <code>~/.profile</code>. For me this was:</p>

<pre><code>export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
</code></pre>

<p>Running tests also meant doing a little bit of work. If they don&#8217;t work for you then you may need to tell <a href="http://flexmojos.sonatype.org/">Flexmojos</a> where to find your install of the standalone flash player. So going back to your <code>~/.profile</code> you will need add the following:</p>

<pre><code>PATH="$PATH:/Applications/Flash Player Debugger.app/Contents/MacOS/"
</code></pre>

<p>Then your pom file needs the following added to the <code>flexmojos-maven-plugin</code> configuration node. </p>

<pre><code>&lt;flashPlayerCommand&gt;Flash Player Debugger&lt;/flashPlayerCommand&gt;
</code></pre>

<p>There&#8217;s a full example of this <a href="http://github.com/simongregory/hel-log/blob/master/pom.xml">here</a></p>

<h2>Concluding with poms</h2>

<p>Once installed maven is designed to automatically fetch all the resources it needs. This is done via configuring your pom files to reference the right artifacts so that maven can retrieve them. Where a dependency can&#8217;t be found online you have the opportunity to install it locally. So far I&#8217;ve used the documentation and found example files and have been reasonably productive. This <a href="http://github.com/simongregory/hel-log/blob/master/pom.xml">example pom</a> tests, compiles, validates and generates asdocs for a swc library I&#8217;m experimenting with. I&#8217;m looking to expand this to include swf + air compilation, and test coverage reports.</p>

<p>As <a href="https://docs.sonatype.org/display/FLEXMOJOS/Release+4.x">Flexmojos 4.x</a> is still under active development it can be tricky to get something to work as expected, you do need a little patience. But that is to be expected with alpha software. Version 3 doesn&#8217;t offer the full feature set I&#8217;d like so at the moment maven doesn&#8217;t feel like the complete solution. But as the source is now on <a href="http://github.com/velo/Flexmojos">github</a> so maybe I can find some time to help out. Overall I&#8217;m totally sold on the concept and am looking forward to 4.x moving into stability.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/07/test-driving-maven-for-flex-air-and-actionscript-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Missing &#8216;locate&#8217; in Snow Leopard</title>
		<link>http://blog.simongregory.com/04/missing-locate-in-snow-leopard/</link>
		<comments>http://blog.simongregory.com/04/missing-locate-in-snow-leopard/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:44:50 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=221</guid>
		<description><![CDATA[Re-enabling the 'locate' command line utility on OS X 10.6 'Snow Leopard'.]]></description>
			<content:encoded><![CDATA[<p>When I upgraded to Snow Leopard a few months ago I found out quite quickly that <code>locate</code> didn&#8217;t work on the command line. Why <code>locate</code> is missing I don&#8217;t know, maybe <code>find</code> was supposed to replace it. But <code>find</code> doesn&#8217;t look deep enough into the system files to be useful for me. I finally got round to looking into the problem. </p>

<p>Using <code>locate file.txt</code> get&#8217;s us this:</p>

<pre><code>WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
</code></pre>

<p>Ok. So it&#8217;s easy enough to run:</p>

<pre><code>sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
</code></pre>

<p>But that didn&#8217;t do anything for me. Locate still threw the same error and <code>top</code> didn&#8217;t reveal any processes that appeared to be working overtime to build the database(<code>*</code>see below). Trying the <code>launchctl load</code> command again says it&#8217;s already loaded, and using <code>start com.apple.locate</code> via a launchctl daemon gets a <code>start error:No such process</code> message. So I opened <code>/System/Library/LaunchDaemons/com.apple.locate.plist</code> which revealed the task that actually does the work is <code>locate.updatedb</code>, so I tried:</p>

<pre><code>sudo /usr/libexec/locate.updatedb
</code></pre>

<p>Which successfully built the database and <code>locate</code> now works. The one question remaining is wether the database will be updated automatically every Saturday at 3am as the plist file suggests. Maybe not, if the <code>&lt;key&gt;Disabled&lt;/key&gt;&lt;true/&gt;</code> in the plist is to be believed &#8211; so I&#8217;ve blindly switched it to false and am hoping for the best.</p>

<p><code>*</code> I ran through this process again on a second machine, and it appears that I jumped the gun on this as I just left the machine be for half an hour and came back to it and the database worked.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/04/missing-locate-in-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Moving the Ant.tmbundle</title>
		<link>http://blog.simongregory.com/02/moving-the-ant-tmbundle/</link>
		<comments>http://blog.simongregory.com/02/moving-the-ant-tmbundle/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:23:50 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=208</guid>
		<description><![CDATA[Moving TextMate's Ant Bundle around on github (a git puzzle solved).]]></description>
			<content:encoded><![CDATA[<p>Initially I set out with the aim to switch from <a href="http://subversion.tigris.org/">Subversion</a> to <a href="http://git.or.cz">Git</a> before
there was an official plan from the <a href="http://macromates.com/">TextMate</a> crew. This has now 
<a href="http://old.nabble.com/The-GitHub-Mirror-p25941986.html">changed</a>, and all bundles that show <a href="http://github.com">Github</a> activity are being
removed from the TextMate <a href="http://svn.textmate.org/">svn repository</a>. Which means that the official
bundles I mirrored now have a duplicate Github <a href="http://github.com/textmate/">mirror</a>, and one that is more
central for TextMate users and should be the root of all development. The Apache bundle was easy to sort, as there were no forks I could simply delete my copy. The Ant bundle wasn&#8217;t so straightforward.</p>

<p>Theoretically there&#8217;s no reason why two mirrored repositories couldn&#8217;t be used as each can be
added as a <code>remote</code>. But because of their independent initialisation against the 
svn repo their histories aren&#8217;t identical this doesn&#8217;t work correctly in practice. Even though the file contents are identical at each commit git still recognises separate commits because git-svn appends unique metadata. So you end up with a lot of messy duplication in the history tree.</p>

<p>The fastest solution is to <code>rebase</code> one mirror into the other. Public rebasing 
isn&#8217;t the done thing as it&#8217;s bad practice to be changing the repository history 
when others could be working against it. However in this case we are looking to
retire one history completely. I think, given that there&#8217;s only a little work
in the forks, and the file content is the same it is the right solution.</p>

<p>So here are the steps I took to merge my mirror into the official one</p>

<ul>
<li>Forked and cloned the <a href="http://github.com/textmate/ant.tmbundle/master">official</a> bundle on <a href="http://github.com">github</a></li>
<li><code>cd</code>&#8216;d to the root of the clone</li>
<li>Added new remote using <code>git remote add old-origin git@github.com:simongregory/ant-tmbundle.git</code></li>
<li>Fetch the remote data <code>git fetch old-origin</code></li>
<li>Created old-master branch from the old-origin/master with <code>git br old-master old-origin/master</code></li>
<li>Checked out old-master <code>git co old-master</code></li>
<li>Rebased old-master onto master using <code>git rebase master</code></li>
<li>Switched back to master <code>git co master</code></li>
<li>Merged master with old-master <code>git merge old-master</code> </li>
<li>Deleted the old-master branch <code>git br -D old-master</code></li>
<li>Created new sg branch <code>git co -b sg</code></li>
<li>Cherry picked the one commit I needed <code>git cherry-pick 91f598</code></li>
<li>Pushed the branch <code>git push origin sg</code></li>
<li>Removed the old-origin remote using <code>git remote rm old-origin</code></li>
</ul>

<p>Then to linked to the official <a href="http://github.com/textmate/ant.tmbundle/master">TextMate</a> remote using</p>

<ul>
<li>git remote add tm git@github.com:textmate/ant.tmbundle.git</li>
<li>Fetched the remote data <code>git fetch tm</code></li>
<li>Checked master out <code>git co master</code></li>
<li>Synced master branches by pushing <code>git push tm</code> (only possible if you have write access)</li>
</ul>

<p>One extra thing to note is the change from the old naming convention using a hyphen to a period.</p>

<p>There&#8217;s likely to be a better way of achieving this, but this is what worked for 
me. It won&#8217;t work if you have any private branches as you wouldn&#8217;t be able to 
pull them across. In this case I&#8217;d look at inverting the process and adding the 
new fork as a remote to the existing repository and merging from there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/02/moving-the-ant-tmbundle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going Git</title>
		<link>http://blog.simongregory.com/02/going-git/</link>
		<comments>http://blog.simongregory.com/02/going-git/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 00:22:49 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=126</guid>
		<description><![CDATA[The TextMate Flex and ActionScript 3 bundles are now available for forking, improving, personalising, and sharing on github. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://git-scm.com/">Git</a> is one of the tools I&#8217;ve been meaning to try for a while now. It&#8217;s a version control systems that offers a distributed model, is fast, light and perfect for branching and merging.</p>

<p>I was pretty confident I&#8217;d be up and running quickly with git as I&#8217;m used to <a href="http://subversion.tigris.org/">subversion</a>. But given the past few days experience I wouldn&#8217;t say it&#8217;s been easy. It may have been, but I decided my way in would be to mirror both the <a href="http://github.com/simongregory/flex-tmbundle/tree/master">Flex</a> and <a href="http://github.com/simongregory/actionscript3-tmbundle/tree/master">ActionScript 3</a> <a href="http://macromates.com">TextMate</a> <a href="http://manual.macromates.com/en/bundles">Bundles</a> over on <a href="http://github.com/">github</a> &#8211; which meant using <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html"><code>git svn</code></a>. In principle it looked straightforward, but after a few clumsy maneuvers I was quickly disorientated (mainly because <code>git svn dcommit</code> happens to <code>rebase</code> on the quiet). I don&#8217;t think I&#8217;m out of the woods yet but am really beginning to see what all the noise over git is about. It&#8217;s well worth the initial steep learning curve.</p>

<p>What I&#8217;m hoping to see are <a href="http://github.com/guides/fork-a-project-and-submit-your-modifications">forks</a> of the bundles, new features, feedback, and maybe one or two bug fixes ;) There are some branches to try as well. One or two build solutions have been cooked up but not quite finished. Alongside a basic attempt to integrate <code>fdb</code>, but it still needs a UI bolting on the front to offer true integration.</p>

<p>Oh, and for those of you who&#8217;ve been waiting for the <strong>auto-completion</strong> alpha then that&#8217;s in the main bundle now. Take a look at the &#8216;Auto Complete&#8217; command &#8211; I&#8217;ll post a little more about it soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/02/going-git/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Improved Auto Import for ActionScript 3 in TextMate</title>
		<link>http://blog.simongregory.com/02/improved-auto-import-for-actionscript-3-in-textmate/</link>
		<comments>http://blog.simongregory.com/02/improved-auto-import-for-actionscript-3-in-textmate/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 13:28:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=120</guid>
		<description><![CDATA[Auto importing of classes in TextMate now works from anywhere within a public class.]]></description>
			<content:encoded><![CDATA[<p>The ActionScript 3 bundles had the ability to auto import a class for a long time, but the functionality has been limited to the area of the document between the package and class declarations. There have been some <a href="http://parallaxdenigrate.net/?p=381">interesting</a> solutions to improve this workflow, but ultimately it needed a more elegant solution. </p>

<p>If you grab the most recent version of the bundle you&#8217;ll now find that <b>⇧⌘I</b> can be invoked from a wider scope and will present you with a list of possible classes to import based on the current word. Select one and an import statement for the class will be generated and injected into the document (or a tooltip saying the class is already imported). </p>

<p>I ought to stress that the importing is <em>improved</em>, but needs more work. The command is scoped to work within a public class, so any private classes hiding beneath your package block won&#8217;t benefit. You&#8217;re also likely, if you&#8217;re tidy, to want to organise the imports statements later on. But what is great about this is it let&#8217;s you skip a repetitive task and focus on higher level logic.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/02/improved-auto-import-for-actionscript-3-in-textmate/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>AS3 Autocompletion in TextMate</title>
		<link>http://blog.simongregory.com/09/as3-autocompletion-in-textmate/</link>
		<comments>http://blog.simongregory.com/09/as3-autocompletion-in-textmate/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 16:37:20 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Autocomplete]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=102</guid>
		<description><![CDATA[Here&#8217;s a little teaser showing autocompletion for ActionScript 3 in action using TextMate.It&#8217;s work in progress and I&#8217;m planning on releasing it for testing once Dialog 2 moves out of review. I also need to add the functionality to search multiple ancestors in interfaces to resolve the type of an item. Click to play.]]></description>
			<content:encoded><![CDATA[<p></p><p>Here&#8217;s a little teaser showing <a href="http://en.wikipedia.org/wiki/Autocomplete">autocompletion</a> for <a href="http://www.adobe.com/devnet/actionscript/articles/actionscript3_overview.html">ActionScript 3</a> in action using <a href="http://macromates.com/">TextMate</a>.</p><p>It&#8217;s work in progress and I&#8217;m planning on releasing it for testing once <a href="http://blog.macromates.com/2006/new-dialog-system-for-commands/">Dialog 2</a> moves out of review. I also need to add the functionality to search multiple ancestors in interfaces to resolve the type of an item.</p>

<p><a href="http://blog.simongregory.com/wp-content/assets/movies/completions.mov" rel="enclosure"><img src="http://blog.simongregory.com/wp-content/assets/movies/completions2.png"/></a></p>

<div class="hvlog">
<a href="http://blog.simongregory.com/wp-content/assets/movies/completions.mov" rel="enclosure">Click to play</a>.
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/09/as3-autocompletion-in-textmate/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
<enclosure url="http://blog.simongregory.com/wp-content/assets/movies/completions.mov" length="1289143" type="video/quicktime" />
		</item>
		<item>
		<title>TextMate JavaScript Flash Bundle</title>
		<link>http://blog.simongregory.com/07/textmate-jsfl-bundle/</link>
		<comments>http://blog.simongregory.com/07/textmate-jsfl-bundle/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 16:33:56 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[flash javascript]]></category>
		<category><![CDATA[jsfl]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/?p=36</guid>
		<description><![CDATA[I&#8217;ve quickly put together a bundle for working with JSFL, or the Flash JavaScript API. If you&#8217;re not familiar with JSFL it is used to automate and extend the Flash IDE. The bundles language grammar relies on the JavaScript bundle being installed (which is one of TextMates default bundles) as it extends it and adds [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve quickly put together a bundle for working with JSFL, or the Flash JavaScript API. If you&#8217;re not familiar with JSFL it is used to automate and extend the <a href="http://www.adobe.com/products/flash/">Flash IDE</a>. The bundles language grammar relies on the JavaScript bundle being installed (which is one of <a href="http://macromates.com">TextMates</a> default bundles) as it extends it and adds all of the JSFL objects, methods and properties. You also get:</p>

<h2>Run (⌘R)</h2>

<p>Runs the current document in Flash.</p>

<h2>Documentation (⌃H)</h2>

<p>Searches the documentation and presents a list of matches. As I only have access to machines with Flash CS3 installed I don&#8217;t know the alternative paths to the documentation previous (and later) versions of Flash use so please drop me a line and I&#8217;ll include them.</p>

<h2>Auto Complete Method / Property (⌥⎋)</h2>

<p>Provides a pop-up list of the available method and property completions based on the current word.</p>

<p>I&#8217;d recommend checking out the bundle from <a href="http://svn.textmate.org/trunk/Bundles/">here</a> for the most up to date version, otherwise you can download it as a zip <a href="http://blog.simongregory.com/wp-content/assets/bundles/JSFL.tmbundle.zip" >here</a>.</p>

<p><a href="http://blog.simongregory.com/wp-content/assets/bundles/JSFL.tmbundle.zip" title="JSFL.tmbundle"><span class="shift_for_inline_bundle_icon_32">JSFL Bundle </span><img src="/wp-content/assets/images/tm/tm_bundle_32x32.png"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/07/textmate-jsfl-bundle/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Apache Bundle Upgrade</title>
		<link>http://blog.simongregory.com/02/apache-bundle-upgrade/</link>
		<comments>http://blog.simongregory.com/02/apache-bundle-upgrade/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 22:23:21 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bundle]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/02/apache-bundle-upgrade/</guid>
		<description><![CDATA[The Apache bundle, which I originally contributed in the early days of TextMate, was due an upgrade. So I&#8217;ve made a few improvements&#8230; Start, Stop, Restart and Graceful commands (⌘R) These commands, which all target apachectl, are now bound to ⌘R under the source.apache-config scope which makes it more convenient to directly control httpd from [...]]]></description>
			<content:encoded><![CDATA[<p>The Apache bundle, which I originally contributed in the early days of TextMate, was due an upgrade. So I&#8217;ve made a few improvements&#8230; </p>

<h2>Start, Stop, Restart and Graceful commands (⌘R)</h2>

<p>These commands, which all target apachectl, are now bound to ⌘R under the source.apache-config scope which makes it more convenient to directly control httpd from TextMate. </p>

<p>As apachectl requires sudo privileges I used applescript for authentication. For reasons only known to Apple the password request dialog would launch but not get focus &#8211; leaving you to reach for the mouse to target the input field. Moving away from the keyboard is slow so this was something that really annoyed me. I&#8217;ve now switched to using the excellent <a href="http://macromates.com/blog/2006/new-dialog-system-for-commands/" title="TextMate Dialog System">tm_dialog</a> system which makes things much smoother.</p>

<p>It is also possible to store your admin password in your Keychain, this is done by selecting the &#8220;Add to Keychain&#8221; toggle in the password request dialog box. I&#8217;m more than happy with the security implications of this as I&#8217;m fairly good at keeping my machines locked. If you do choose to do this then the command line security app will have access to the keychain item and is the only way someone could gain access. </p>

<h2>Documentation (⌃H)</h2>

<p>This now searches a documentation index file for the current word/selection then redirects or presents a list of matches as appropriate. If you appear to have the documentation installed locally then the script favours it over the apache website.</p>

<h2>Open Include (⇧⌘D)</h2>

<p>The language definition has been improved to add a scope for Includes. Using the key combination apple-shift-D on this scope opens the file referenced by the inlcude, or directory if it is wild carded.</p>

<h2>Open Config&#8230; (⇧⌘C)</h2>

<p>Previously there were various commands to open the apache.conf files these have now been consolidated into one command which searches the apache install directory, either <code>/etc/apache2</code> or  <code>/private/etc/httpd</code> depending on your version of OS X and the <code>/users</code>, <code>/extra</code> and <code>/other</code> subdirectories. All the conf files found are presented in pop-up from which  one can be choosen to open.</p>

<h2>Bundle Configuration</h2>

<p>It is now possible to override the default bundle behaviour by setting the following environmental variables. <code>TM<em>APACHE</em>DIRECTORY</code>, <code>TM<em>APACHE</em>ACCESS<em>LOG</em></code>, <code>TMAPACHE<em>ERROR</em>LOG</code> and
<code>TM<em>APACHE</em>MANUAL_URI</code> all allow the custom targeting of files and directories. See the bundle help for a detailed explanation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/02/apache-bundle-upgrade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Open Bundle as Project&#8230;</title>
		<link>http://blog.simongregory.com/01/open-bundle-as-project/</link>
		<comments>http://blog.simongregory.com/01/open-bundle-as-project/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 10:30:13 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[TextMate]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[bundle development]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.simongregory.com/01/open-bundle-as-project/</guid>
		<description><![CDATA[I&#8217;m often opening the bundles I develop &#8211; and nosing through the others &#8211; as projects, and doing so via the Finder or the File > Open menu is long winded. To speed up the process here&#8217;s a small command which searches the default bundle locations and presents all the bundles in a dialog. Pick [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m often opening the bundles I develop &#8211; and nosing through the others &#8211; as projects, and doing so via the Finder or the File > Open menu is long winded. To speed up the process here&#8217;s a small command which searches the default bundle locations and presents all the bundles in a dialog. Pick the one you&#8217;re interested in and TextMate opens it as a project. That&#8217;s if it&#8217;s enabled, when it&#8217;s not the default behavior is to enable it, second time round it will open as a project.</p>

<p><a href="/wp-content/assets/commands/Open_Bundle_as_Project___.tmCommand.zip" title="Open Bundle as Project Command"><span class="shift_for_inline_32">Download </span><img src="/wp-content/assets/images/tm/tm_commands_32x32.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simongregory.com/01/open-bundle-as-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
