; 'raw' aliases
alias -l home return $shortfn($mircdir)
alias -l current {
  if (!%con.cdir) set %con.cdir $home
  return %con.cdir
}
; end

; more pleasant output
alias fcurrent return $qt($longfn($current)) 
alias con {
  if ($window(@c)) window -c @c
  window -daCek0w1 +ts @c -1 -1 400 300
  titlebar @c - Console v1.0
}
alias set.current {
  ; Check to see if there is spaces
  var %1 = $iif($2-,$qt($noqt($1-)),$1)
  ;echo -a %1
  if ($isdir(%1)) {
    set %con.cdir $shortfn(%1) $+ $iif($right($shortfn(%1),1) != \,\)
    return Set current dir to $current
  }
  else return Invalid directory
}
alias con.s { aline -ip @c $$1- | aline -ip @c $crlf }
alias -l cf { 
  var %d = $noqt($fcurrent) 
  return $gettok(%d,$numtok(%d,92),92) $+ \> 
}
alias ls {
  var %fn = 1,%line,%d = $iif($isdir($1),$1,$current),%s = $iif($isdir($1) && $2,$2-,$iif(!$isdir($1) && $1,$1,*)),%t = $findfile($current,%s,0,1)
  while ($findfile(%d,%s,%fn,1)) {
    var %file = $v1
    if ($numtok(%line,32) < 5) var %line = %line $nopath(%file)
    if ($numtok(%line,32) >= 5) { con.s %line | var %line }
    inc %fn
  }
  var %dn = 1,%t = $finddir(%d,%s,0,1)
  while ($finddir(%d,%s,%dn,1)) {
    var %dir = $v1
    if ($numtok(%line,32) < 5) var %line = %line $nopath(%dir) $+ \
    if ($numtok(%line,32) >= 5) { con.s %line | var %line }
    if (%dn >= %t) con.s %line
    inc %dn
  }
}
alias adparse {
  var %d = $iif($1-,$1-,$current)
  if ($prop == up) {
    var %t = $numtok($longfn(%d),92)
    var %up = $gettok($longfn(%d),$+(1-,$calc(%t - 1)),92)
    return %up
  }
}
alias cd {
  if ($1 == ..) set.current $shortfn($adparse().up)
  else {
    var %s = $iif(*:* !iswm $1-,$longfn($current)) 
    var %dir = %s $+ $1-
    set.current %dir
    ;echo -a $1- : $longfn($1-) : $shortfn($1-)
  }
}
on *:INPUT:@c:{
  con.s $cf  $1- 
  if ($1 == ls) ls $2-
  elseif ($1 == pwd) con.s $longfn($current)
  elseif ($1 == cd) cd $2-
}
