aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Siteshwar Vashisht <siteshwar@gmail.com>2012-02-09 01:18:51 +0530
committerGravatar Siteshwar Vashisht <siteshwar@gmail.com>2012-02-09 01:18:51 +0530
commitbc8a28838640ad6d816641fa108f1e40edfe15bd (patch)
treec4968241e91fa461250c8d8d816b8de3561f00a5
parent3dc56de0ae42b40104337803c392f506491b30d6 (diff)
Got rid of multiple cd paths, only current directory will be searched while changing directories, implicit cd (entering directory just by typing it's name) is removed.
-rw-r--r--builtin_set.cpp4
-rw-r--r--complete.cpp4
-rw-r--r--env.cpp2
-rw-r--r--highlight.cpp10
-rw-r--r--parser.cpp27
-rw-r--r--path.cpp14
-rw-r--r--path.h1
7 files changed, 12 insertions, 50 deletions
diff --git a/builtin_set.cpp b/builtin_set.cpp
index 19297eaf..4ac6e92e 100644
--- a/builtin_set.cpp
+++ b/builtin_set.cpp
@@ -48,8 +48,8 @@ Functions used for implementing the set builtin.
static int is_path_variable( const wchar_t *env )
{
return contains( env,
- L"PATH",
- L"CDPATH" );
+ L"PATH"
+ );
}
/**
diff --git a/complete.cpp b/complete.cpp
index c0c3095d..9aca350f 100644
--- a/complete.cpp
+++ b/complete.cpp
@@ -1035,9 +1035,7 @@ static void complete_cmd( const wchar_t *cmd,
std::vector<completion_t> possible_comp;
wchar_t *nxt_completion;
- const env_var_t cdpath = env_get_string(L"CDPATH");
-// wchar_t *cdpath_cpy = wcsdup( cdpath?cdpath:L"." );
- wchar_t *cdpath_cpy = wcsdup( !cdpath.missing()?cdpath.c_str():L"." );
+ wchar_t *cdpath_cpy = wcsdup(L".");
if( (wcschr( cmd, L'/') != 0) || (cmd[0] == L'~' ) )
{
diff --git a/env.cpp b/env.cpp
index a3e8d4f4..23e971c7 100644
--- a/env.cpp
+++ b/env.cpp
@@ -1715,4 +1715,4 @@ const wchar_t *env_vars::get(const wchar_t *key) const
return (iter == vars.end() ? NULL : iter->second.c_str());
}
-const wchar_t * const env_vars::highlighting_keys[] = {L"PATH", L"CDPATH", L"HIGHLIGHT_DELAY", L"fish_function_path", NULL};
+const wchar_t * const env_vars::highlighting_keys[] = {L"PATH", L"HIGHLIGHT_DELAY", L"fish_function_path", NULL};
diff --git a/highlight.cpp b/highlight.cpp
index 89bbb0ec..421ba96c 100644
--- a/highlight.cpp
+++ b/highlight.cpp
@@ -722,16 +722,6 @@ static void tokenize( const wchar_t * const buff, int * const color, const int p
is_cmd |= !!path_get_path_string( cmd, tmp, vars );
}
- /*
- Could not find the command. Maybe it is
- a path for a implicit cd command.
- */
- if( use_builtin || (use_function && function_exists( L"cd") ) )
- {
- wcstring tmp;
- is_cmd |= !!path_get_cdpath_string( cmd, tmp, vars );
- }
-
if( is_cmd )
{
color[ tok_get_pos( &tok ) ] = HIGHLIGHT_COMMAND;
diff --git a/parser.cpp b/parser.cpp
index 3db44d47..fdffcffb 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -1930,31 +1930,7 @@ int parser_t::parse_job( process_t *p,
if( p->actual_cmd == NULL )
{
- /*
- That is not a command! Test if it is a
- directory, in which case, we use 'cd' as the
- implicit command.
- */
- if(path_can_get_cdpath(args.at(0).completion))
- {
- wcstring tmp = args.at(0).completion;
-// al_truncate( args, 0 );
- args.clear();
-// al_push( args, halloc_wcsdup( j, L"cd" ) );
- args.push_back(completion_t(L"cd"));
- args.push_back(completion_t(tmp));
- /*
- If we have defined a wrapper around cd, use it,
- otherwise use the cd builtin
- */
- if( use_function && function_exists( L"cd" ) )
- p->type = INTERNAL_FUNCTION;
- else
- p->type = INTERNAL_BUILTIN;
- }
- else
- {
- int tmp;
+ int tmp;
const wchar_t *cmd = args.at( 0 ).completion.c_str();
/*
@@ -2038,7 +2014,6 @@ int parser_t::parse_job( process_t *p,
job_set_flag( j, JOB_SKIP, 1 );
event_fire_generic(L"fish_command_not_found", (wchar_t *)( args.at( 0 ).completion.c_str() ) );
proc_set_last_status( err==ENOENT?STATUS_UNKNOWN_COMMAND:STATUS_NOT_EXECUTABLE );
- }
}
}
}
diff --git a/path.cpp b/path.cpp
index 930f8563..7b56388a 100644
--- a/path.cpp
+++ b/path.cpp
@@ -291,11 +291,8 @@ bool path_get_cdpath_string(const wcstring &dir_str, wcstring &result, const env
}
else
{
- const wchar_t *path = vars.get(L"CDPATH");
- if( !path || !wcslen(path) )
- {
- path = L".";
- }
+
+ const wchar_t *path = L".";
wcstokenizer tokenizer(path, ARRAY_SEP_STR);
wcstring next_path;
@@ -340,6 +337,7 @@ bool path_get_cdpath_string(const wcstring &dir_str, wcstring &result, const env
return res;
}
+
wchar_t *path_allocate_cdpath( const wchar_t *dir )
{
wchar_t *res = 0;
@@ -371,9 +369,7 @@ wchar_t *path_allocate_cdpath( const wchar_t *dir )
wchar_t *state;
wchar_t *whole_path;
- env_var_t path = env_get_string(L"CDPATH");
- if( path.missing_or_empty() )
- path = L".";
+ env_var_t path = L".";
nxt_path = path.c_str();
path_cpy = wcsdup( path.c_str() );
@@ -439,6 +435,7 @@ wchar_t *path_allocate_cdpath( const wchar_t *dir )
return res;
}
+
bool path_can_get_cdpath(const wcstring &in) {
wchar_t *tmp = path_allocate_cdpath(in.c_str());
bool result = (tmp != NULL);
@@ -486,6 +483,7 @@ wchar_t *path_get_config( void *context)
}
}
+
bool path_get_config(wcstring &path)
{
int done = 0;
diff --git a/path.h b/path.h
index d4169e11..39918382 100644
--- a/path.h
+++ b/path.h
@@ -53,6 +53,7 @@ bool path_get_path_string(const wcstring &cmd, wcstring &output, const env_vars
\param in The name of the directory.
\return 0 if the command can not be found, the path of the command otherwise. The path should be free'd with free().
*/
+
wchar_t *path_allocate_cdpath( const wchar_t *in );
bool path_can_get_cdpath(const wcstring &in);
bool path_get_cdpath_string(const wcstring &in, wcstring &out, const env_vars &vars);