AutoHotkey: With Alt - \ always to root: Difference between revisions

From TotalcmdWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 19: Line 19:




Here's a variant by '''ND''', which ensures that the script is only launched when one the TC panels is active and which leaves the command-line history unmodified (tested in TC 5.50 and TC 7.01 on WinXP SP2)
Here's a variant by '''ND''', which ensures that the script is only launched when one of the TC panels is active and which leaves the command-line history unmodified (tested in TC 5.50 and TC 7.01 on WinXP SP2)


  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Revision as of 20:39, 8 August 2007

If you are working with 'softlocked' Tabs (locked but dir change allowed) it's most time useful to change with [Ctrl]+[\] to the root of the locked Tab instead root of the drive. You can achieve this with the key LockedGoToDriveRoot=0 in the wincmd.ini.


However, sometimes it is useful to go instead to the root of the drive. That's what this script is for:


;Alt \ leads to root of drive
!\::
IfWinActive ahk_class TTOTAL_CMD
    {
; activate the command line
    PostMessage, 1075, 4003, , , ahk_class TTOTAL_CMD
; type cd \
    sendraw, cd \
;   send it
    send, {ENTER}
    }
return


Here's a variant by ND, which ensures that the script is only launched when one of the TC panels is active and which leaves the command-line history unmodified (tested in TC 5.50 and TC 7.01 on WinXP SP2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;! \brief  pressing Alt+\\ should land in drive root rather than tab root
;
;  Assumes that the status-bar is accessible (TMyPanel2)
;
;  Computes the number of different parts separated by \\,
;  then goes-up the appropriate number of parent dirs (cm_GoToParent)
;
#IfWinActive, ahk_class TTOTAL_CMD
~!\::
  ; only when the actual TC panels are active
  ControlGetFocus, tcFocus
  If(  RegExMatch( tcFocus, "^TMyListBox(1|2)$" )  )
  {
    ControlGetText,  tcStatus,  TMyPanel2
    RegExReplace(  tcStatus,  "[^\\>]+",  "$1",  tcBack  )

    tcBack--  ; minus the drive root itself
    If(  RegExMatch( tcStatus, "^.\\[^\\]" )  )
      tcBack--  ; minus the server root for network drives

    If(  tcBack > 0  )
      Loop, %tcBack%
        PostMessage, 1075, 2002  ; cm_GoToParent
  }
Return



Back to AutoHotkey