Create a gist now

Instantly share code, notes, and snippets.

Start from CLI
# Emacs starter for Emacs mac port
# Thanks to Aquamacs Project and David Reitter
my $args = "";
my $tmpfiles = "";
for my $f (@ARGV) {
$args .= '"'.$f.'" ';
$tmpfiles .= '"'.$f.'" ' if (! -e $f);
system("touch $args") if ($tmpfiles);
system("open -a /Applications/ $args");
# delay deletion because AE drag&drop doesn't work with non-existing documents
system("(sleep 3; rm $tmpfiles) &") if ($tmpfiles);

I rewrote this as a shell script and added the capability to accommodate filenames with spaces:


if [ -e '/Applications/' ]; then

  if [ ${#@} -ne 0 ]; then
    while IFS= read -r file; do
      [ ! -f "$file" ] && t+=("$file") && /usr/bin/touch "$file"
      file=$(echo $(cd $(dirname "$file") && pwd -P)/$(basename "$file"))
      $(/usr/bin/osascript <<-END
        if application "" is running then
          tell application id (id of application "") to open POSIX file "$file"
          tell application ((path to applications folder as text) & "")
            open POSIX file "$file"
          end tell
        end if
      ) &  # Note: END on the previous line may be indented with tabs but not spaces
    done <<<"$(printf '%s\n' "$@")"

  if [ ! -z "$t" ]; then
    $(/bin/sleep 10; for file in "${t[@]}"; do
      [ ! -s "$file" ] && /bin/rm "$file";
    done) &
  vim -No "$@"

Since I switched from vi, I can't help but to type vi filename every time, so I saved this script as /usr/local/bin/vi. In the off chance I haven't yet installed, it uses the built in system vim instead.


Thanks @ptb :)


Sorry to ask guys, how can I install this?


@lmartins Paste into a file named emacs (or whatever you want the command to be) in a directory in your path (ahead of the location of the existing emacs command). Then chmod +x /path/to/emacs.


It'd be better to use emacsclient (and kick off as the alternate editor if it's not running already.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment