aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsanmiguel <[email protected]>2016-09-30 17:13:57 +0200
committerGitHub <[email protected]>2016-09-30 17:13:57 +0200
commit7017f09958bc43fae93d57faa821c10f15104502 (patch)
tree95bfa4da042fba7158db316179496137fb5c060c
parent462f9554488d98509508c119a95b7f79a14effef (diff)
parent9a9a5d1867431782037555dec6afb322edb9c22e (diff)
downloadkerl-7017f09958bc43fae93d57faa821c10f15104502.tar.gz
kerl-7017f09958bc43fae93d57faa821c10f15104502.tar.bz2
kerl-7017f09958bc43fae93d57faa821c10f15104502.zip
Merge pull request #155 from ZeWaren/c-shells-support
Add support for C shells.
-rw-r--r--README.md18
-rwxr-xr-xkerl50
2 files changed, 68 insertions, 0 deletions
diff --git a/README.md b/README.md
index 4b65f31..e49648b 100644
--- a/README.md
+++ b/README.md
@@ -215,6 +215,24 @@ Deactivation is the same as in other shells:
Please note: if you've installed a build with an older version of kerl
(1.2.0 older) it won't have the `activate.fish` script.
+C shell support
+---------------
+
+kerl has basic support for the C shells (csh/tcsh/etc.).
+
+To activate an installation:
+
+ source /path/to/install/dir/activate.csh
+
+The activation script sources file .kerlrc.csh instead of .kerlrc.
+
+Deactivation is the same as in other shells:
+
+ kerl_deactivate
+
+Please note: if you've installed a build with an older version of kerl
+it won't have the `activate.csh` script.
+
Glossary
--------
diff --git a/kerl b/kerl
index 89d042c..dbd767a 100755
--- a/kerl
+++ b/kerl
@@ -768,6 +768,56 @@ if set --query KERL_ENABLE_PROMPT
end
end
ACTIVATE_FISH
+
+ cat <<ACTIVATE_CSH > "$absdir/activate.csh"
+# This file must be used with "source bin/activate.csh" *from csh*.
+# You cannot run it directly.
+
+alias kerl_deactivate 'test \$?_KERL_SAVED_PATH != 0 && setenv PATH "\$_KERL_SAVED_PATH" && unset _KERL_SAVED_PATH; rehash; test \$?_KERL_SAVED_MANPATH != 0 && setenv MANPATH "\$_KERL_SAVED_MANPATH" && unset _KERL_SAVED_MANPATH; test \$?_KERL_SAVED_REBAR_PLT_DIR != 0 && setenv REBAR_PLT_DIR "\$_KERL_SAVED_REBAR_PLT_DIR" && unset _KERL_SAVED_REBAR_PLT_DIR; test \$?_KERL_ACTIVE_DIR != 0 && unset _KERL_ACTIVE_DIR; test \$?_KERL_SAVED_PROMP != 0 && set prompt="\$_KERL_SAVED_PROMP" && unset _KERL_SAVED_PROMP; test "\!:*" != "nondestructive" && unalias deactivate'
+
+# Unset irrelevant variables.
+kerl_deactivate nondestructive
+
+if ( \$?REBAR_PLT_DIR ) then
+ set _KERL_SAVED_REBAR_PLT_DIR = "\$REBAR_PLT_DIR"
+else
+ set _KERL_SAVED_REBAR_PLT_DIR=""
+endif
+
+set _KERL_PATH_REMOVABLE = "$absdir/bin"
+set _KERL_SAVED_PATH = "\$PATH"
+setenv PATH "\${_KERL_PATH_REMOVABLE}:\$PATH"
+
+if ( ! \$?MANPATH ) then
+ set MANPATH = ""
+endif
+set _KERL_MANPATH_REMOVABLE = "$absdir/lib/erlang/man:$absdir/man"
+set _KERL_SAVED_MANPATH = "\$MANPATH"
+setenv MANPATH "\${_KERL_MANPATH_REMOVABLE}:\$MANPATH"
+
+setenv REBAR_PLT_DIR "$absdir"
+
+set _KERL_ACTIVE_DIR = "$absdir"
+
+if ( -f "$KERL_CONFIG.csh" ) then
+ source "$KERL_CONFIG.csh"
+endif
+
+if ( \$?KERL_ENABLE_PROMPT ) then
+ set _KERL_SAVED_PROMP = "\$prompt"
+
+ if ( \$?KERL_PROMPT_FORMAT ) then
+ set FRMT = "\$KERL_PROMPT_FORMAT"
+ else
+ set FRMT = "(%BUILDNAME%)"
+ endif
+
+ set PROMPT = \`echo "\$FRMT" | sed 's^%RELEASE%^$rel^;s^%BUILDNAME%^$1^'\`
+ set prompt = "\$PROMPT\$prompt"
+endif
+
+rehash
+ACTIVATE_CSH
if [ -n "$KERL_BUILD_DOCS" ]; then
DOC_DIR="$KERL_BUILD_DIR/$1/release_$rel/lib/erlang"
if [ -d "$DOC_DIR" ]; then