summaryrefslogtreecommitdiff
path: root/.config/bash/rc.d/emacs.sh
blob: 7e846519edff9ea42f1b3ae5053e04a3bae151db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
case "$TERM" in
	eterm*)
			SELECTED_EDITOR='emacsclient'
			EDITOR=$SELECTED_EDITOR
			VISUAL=$SELECTED_EDITOR
			export SELECTED_EDITOR EDITOR VISUAL
			_set_buffer_name() {
				local name="$*"
				local name_esc="${name//\\/\\\\}"
				name_esc="${name_esc//\"/\\\"}"
				emacsclient -e "
(with-current-buffer (window-buffer (selected-window))
  (if (not (string= \"${name}\" (buffer-name)))
    (rename-buffer (generate-new-buffer-name \"${name}\"))))
" &>/dev/null
			}
			_create_buffer_name() {
				local base=$PWD suffix=''
				if [[ $base =~ /(src|pkg|doc|pkg-libre|src-libre|trunk|tags|branches)$ ]]; then
					suffix=$BASH_REMATCH
					base=${base%$suffix}
				fi
				base=${base##*/}
				echo "*ansi-term*<${base}${suffix}>"
			}
			PROMPT_COMMAND='_set_buffer_name "$(_create_buffer_name)"'
			:;;
esac