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

From TotalcmdWiki
Jump to navigation Jump to search
No edit summary
(modified to work also from within archives)
Line 24: Line 24:
  ;! \brief  pressing Alt+\\ should land in drive root rather than tab root
  ;! \brief  pressing Alt+\\ should land in drive root rather than tab root
  ;
  ;
  ;  Assumes that the status-bar is accessible (TMyPanel2)
  ;  Assumes that the panel title-paths are accessible (TMyPanel5/TMyPanel9)
  ;
  ;
  ;  Computes the number of different parts separated by \\,
  ;  Computes the number of different parts separated by \\,
Line 33: Line 33:
   ; only when the actual TC panels are active
   ; only when the actual TC panels are active
   ControlGetFocus, tcFocus
   ControlGetFocus, tcFocus
   If(  RegExMatch( tcFocus, "^TMyListBox(1|2)$" )  )
   If(  RegExMatch( tcFocus, "^TMyListBox1$" )  )
   {
    tcPath = TMyPanel9
    ControlGetText,  tcStatus, TMyPanel2
   Else
    RegExReplace( tcStatus, "[^\\>]+",  "$1",  tcBack )
  If( RegExMatch( tcFocus, "^TMyListBox2$" ) )
    tcPath = TMyPanel5
  Else
    Return
   
   
    tcBack-- ; minus the drive root itself
  ControlGetText,  tcStatus, %tcPath%
    IfRegExMatch( tcStatus, "^.\\[^\\]" ) )
  RegExReplace(  tcStatus, "[^\\>]+",  "$1", tcBack  )
      tcBack-- ; minus the server root for network drives
   
   
     If(  tcBack > 0  )
  tcBack--  ; minus the drive root itself
      Loop, %tcBack%
  If(  RegExMatch( tcStatus, "^.\\[^\\]" )  )
        PostMessage, 1075, 2002  ; cm_GoToParent
     tcBack--  ; minus the server root for network drives
  }
  If(  tcBack > 0  )
    Loop, %tcBack%
      PostMessage, 1075, 2002  ; cm_GoToParent
  Return
  Return



Revision as of 10:32, 6 September 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 panel title-paths are accessible (TMyPanel5/TMyPanel9)
;
;  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, "^TMyListBox1$" )  )
    tcPath = TMyPanel9
  Else
  If(  RegExMatch( tcFocus, "^TMyListBox2$" )  )
    tcPath = TMyPanel5
  Else
    Return

  ControlGetText,  tcStatus,  %tcPath%
  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