diff --git a/tcshrc.cmd.cwd b/tcshrc.cmd.cwd index c86a2e9..0e9e634 100644 --- a/tcshrc.cmd.cwd +++ b/tcshrc.cmd.cwd @@ -1,25 +1,63 @@ -#if ( ! $?cshenv_gitdirs ) -set cshenv_gitdirs=( /home/adam/cshenv:/home/adam/cshenv/.git ) +_debug "chdir handler called" + +if( ! $?cshenv_gitdirs ) then + set cshenv_gitdirs=() +endif + +if( ! $?cshenv_nogitdirs ) then + set cshenv_nogitdirs=() +endif + +if( ! $?cshenv_gitdir_cache_size ) set cshenv_gitdir_cache_size=32 set _masked_cwd=$cwd:as/ // -#echo "${_masked_cwd}" -set _search_key="${_masked_cwd}" -#echo "${_search_key}" -#echo "dirs $cshenv_gitdirs" -#echo "cache-match $cshenv_gitdirs:as/${_masked_cwd}//" -#echo "cache-match $cshenv_gitdirs:gx/^${_search_key}*/" -#set _cache_match = ( $cshenv_gitdirs:gx^${_search_key}* ) -#if ( ${#_cache_match} == 1 ) then - #echo "Found ${_cache_match}" -#else +unset _git_dir_found + +foreach dir ( ${cshenv_nogitdirs} ) + _debug "Indir check: ${dir}" + set _dirname="${dir}" + if( "${_masked_cwd}" == "${_dirname}" ) then + _debug "In Table" + set _git_dir_found + unset _git_check + break + endif +end + +foreach dir ( ${cshenv_gitdirs} ) + if( $?_git_dir_found ) break + + _debug "Indir check: ${dir}" + set _dirarray=(${dir:s// /} ) + set _dirname="${_dirarray[1]}" + set _dirstore="${_dirarray[2]}" + if( "${_masked_cwd}" == "${_dirname}" ) then + _debug "In Table" + set _git_check="${_dirstore:as// /}" + break + endif +end + + +if( ! $?_git_dir_found ) then set _git_check=( `git rev-parse --git-dir |&cat` ) - #if ( -d "${_git_check}" ) then - #echo "Found and installed ${_git_check} git dir" - #set _masked_git=$_git_check:as/ // - #set cshenv_dirs=( ${cshenv_dirs} "${_masked_cwd}${masked_git}" ) - #else - #echo "Found no git dir for ${_masked_cwd}" - #set cshenv_dirs=( ${cshenv_dirs} "${_masked_cwd}" ) - #endif -#endif + + if( $#_git_check == 1 ) then + set _load="${_git_check:as/ //}" + set cshenv_gitdirs=( ${cshenv_gitdirs} ${_masked_cwd}${_load} ) + while( $#cshenv_gitdirs > ${cshenv_gitdir_cache_size} ) + shift cshenv_gitdirs + end + else + unset _git_check + set cshenv_nogitdirs=( ${cshenv_nogitdirs} ${_masked_cwd} ) + while( $#cshenv_nogitdirs > ${cshenv_gitdir_cache_size} ) + shift cshenv_nogitdirs + end + endif +endif + + +_debug ${cshenv_gitdirs} +_debug ${cshenv_nogitdirs} diff --git a/tcshrc.prompt.final b/tcshrc.prompt.final index be1e3e2..366f622 100644 --- a/tcshrc.prompt.final +++ b/tcshrc.prompt.final @@ -207,7 +207,7 @@ endif set git_prompt="" set git_prefix="" set git_tracking_stat="" -if( ${#_git_check} <= 1 ) then +if( $?_git_check ) then set git_branch_text=( `cat ${_git_check}/HEAD` ) set git_branch=${git_branch_text[2]:s.refs/heads/..} _debug "We see git branch |${git_branch}|" diff --git a/tcshrc.system b/tcshrc.system index 1822e82..6cf8b3b 100644 --- a/tcshrc.system +++ b/tcshrc.system @@ -13,6 +13,8 @@ _debug 'Initially detected that you are running on a "'${CSHENV_SYSTEM}'" system _debug 'Detected that you are running on a "'${CSHENV_SYSTEM}'" system' +set cshenv_gitdir_cache_size=16 + # Source the common bits, since many systems often have lots in common. # For the moment, everything is in here. diff --git a/tcshrc.system.FreeBSD b/tcshrc.system.FreeBSD index 1b2c1b1..a0460d2 100644 --- a/tcshrc.system.FreeBSD +++ b/tcshrc.system.FreeBSD @@ -2,6 +2,13 @@ _debug "Sourcing tcshrc.system.FreeBSD..." set cshenv_sort_can_shuffle +set cshenv_speed_estimate=( `sysctl dev.cpu.0.freq` ) +set cshenv_speed_estimate="${cshenv_speed_estimate[2]}" + +if( ${cshenv_speed_estimate} > 400 ) then + set cshenv_gitdir_cache_size=256 +endif + # Set the acknowledgement bit, essentially setenv CSHENV_SYSTEM_CONFIGURED FreeBSD diff --git a/tcshrc.system.Linux b/tcshrc.system.Linux index 7e0770d..55ee948 100644 --- a/tcshrc.system.Linux +++ b/tcshrc.system.Linux @@ -2,6 +2,14 @@ _debug "Sourcing tcshrc.system.Linux..." set cshenv_sort_can_shuffle +set cshenv_speed_estimate=( `cat /proc/cpuinfo | grep bogomips | head -1` ) +set cshenv_speed_estimate=(${cshenv_speed_estimate:as/./ /}) +set cshenv_speed_estimate="${cshenv_speed_estimate[3]}" + +if( ${cshenv_speed_estimate} > 800 ) then + set cshenv_gitdir_cache_size=256 +endif + unset cshenv_battery_device unset cshenv_show_battery_level