summaryrefslogtreecommitdiff
path: root/.config/bash/rc.d/emacs.sh
blob: 838c0a40fbedcf9c3a2523dff906b18c3ee0865a (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
29
30
#!/bin/bash

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