aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emacs')
-rw-r--r--app-emacs/vterm/Manifest1
-rw-r--r--app-emacs/vterm/files/50vterm-gentoo.el2
-rwxr-xr-xapp-emacs/vterm/files/bashrc26
-rw-r--r--app-emacs/vterm/files/config.fish30
-rw-r--r--app-emacs/vterm/files/zshrc25
-rw-r--r--app-emacs/vterm/metadata.xml26
-rw-r--r--app-emacs/vterm/vterm-20200504.544.ebuild61
7 files changed, 171 insertions, 0 deletions
diff --git a/app-emacs/vterm/Manifest b/app-emacs/vterm/Manifest
new file mode 100644
index 000000000..0fa0a8c1c
--- /dev/null
+++ b/app-emacs/vterm/Manifest
@@ -0,0 +1 @@
+DIST vterm-20200504.544.tar 184320 BLAKE2B 9a705ef3e36b8b1991e9b152b59a40f5d784631ee613056ccedffc85c690c83b0860f900d1494388047b2fec8ef7803adc7c5550b2d210e3cda95ebd8894be5c SHA512 c2971628778e9128efae5c567bd0e9453a8260032d0c220e4348e135e2d2c1af56429eebe613641bd13a148dec53e10c4604dd93a0261f2db74a1bcb8a240ff8
diff --git a/app-emacs/vterm/files/50vterm-gentoo.el b/app-emacs/vterm/files/50vterm-gentoo.el
new file mode 100644
index 000000000..a050b7a5d
--- /dev/null
+++ b/app-emacs/vterm/files/50vterm-gentoo.el
@@ -0,0 +1,2 @@
+(add-to-list 'load-path "@SITELISP@")
+(load "vterm-autoloads" nil t)
diff --git a/app-emacs/vterm/files/bashrc b/app-emacs/vterm/files/bashrc
new file mode 100755
index 000000000..bafa9f16e
--- /dev/null
+++ b/app-emacs/vterm/files/bashrc
@@ -0,0 +1,26 @@
+function vterm_printf(){
+ if [ -n "$TMUX" ]; then
+ # Tell tmux to pass the escape sequences through
+ # (Source: http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324)
+ printf "\ePtmux;\e\e]%s\007\e\\" "$1"
+ elif [ "${TERM%%-*}" = "screen" ]; then
+ # GNU screen (screen, screen-256color, screen-256color-bce)
+ printf "\eP\e]%s\007\e\\" "$1"
+ else
+ printf "\e]%s\e\\" "$1"
+ fi
+}
+
+if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
+ function clear(){
+ vterm_printf "51;Evterm-clear-scrollback";
+ tput clear;
+ }
+fi
+
+PROMPT_COMMAND='echo -ne "\033]0;\h:\w\007"'
+
+vterm_prompt_end(){
+ vterm_printf "51;A$(whoami)@$(hostname):$(pwd)"
+}
+PS1=$PS1'\[$(vterm_prompt_end)\]'
diff --git a/app-emacs/vterm/files/config.fish b/app-emacs/vterm/files/config.fish
new file mode 100644
index 000000000..ce47d71af
--- /dev/null
+++ b/app-emacs/vterm/files/config.fish
@@ -0,0 +1,30 @@
+function vterm_printf;
+ if [ -n "$TMUX" ]
+ # tell tmux to pass the escape sequences through
+ # (Source: http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324)
+ printf "\ePtmux;\e\e]%s\007\e\\" "$argv"
+ else if string match -q -- "screen*" "$TERM"
+ # GNU screen (screen, screen-256color, screen-256color-bce)
+ printf "\eP\e]%s\007\e\\" "$argv"
+ else
+ printf "\e]%s\e\\" "$argv"
+ end
+end
+
+function fish_title
+ hostname
+ echo ":"
+ pwd
+end
+
+function vterm_prompt_end;
+ vterm_printf '51;A'(whoami)'@'(hostname)':'(pwd)
+end
+functions -c fish_prompt vterm_old_fish_prompt
+function fish_prompt --description 'Write out the prompt; do not replace this. Instead, put this at end of your file.'
+ # Remove the trailing newline from the original prompt. This is done
+ # using the string builtin from fish, but to make sure any escape codes
+ # are correctly interpreted, use %b for printf.
+ printf "%b" (string join "\n" (vterm_old_fish_prompt))
+ vterm_prompt_end
+end
diff --git a/app-emacs/vterm/files/zshrc b/app-emacs/vterm/files/zshrc
new file mode 100644
index 000000000..eb9255ad5
--- /dev/null
+++ b/app-emacs/vterm/files/zshrc
@@ -0,0 +1,25 @@
+function vterm_printf(){
+ if [ -n "$TMUX" ]; then
+ # Tell tmux to pass the escape sequences through
+ # (Source: http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324)
+ printf "\ePtmux;\e\e]%s\007\e\\" "$1"
+ elif [ "${TERM%%-*}" = "screen" ]; then
+ # GNU screen (screen, screen-256color, screen-256color-bce)
+ printf "\eP\e]%s\007\e\\" "$1"
+ else
+ printf "\e]%s\e\\" "$1"
+ fi
+}
+
+if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
+ alias clear='vterm_printf "51;Evterm-clear-scrollback";tput clear'
+fi
+
+autoload -U add-zsh-hook
+add-zsh-hook -Uz chpwd (){ print -Pn "\e]2;%m:%2~\a" }
+
+vterm_prompt_end() {
+ vterm_printf "51;A$(whoami)@$(hostname):$(pwd)";
+}
+setopt PROMPT_SUBST
+PROMPT=$PROMPT'%{$(vterm_prompt_end)%}'
diff --git a/app-emacs/vterm/metadata.xml b/app-emacs/vterm/metadata.xml
new file mode 100644
index 000000000..a9708bd94
--- /dev/null
+++ b/app-emacs/vterm/metadata.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+ <email>arjan@adriaan.se</email>
+ <name>Arjan Adriaanse</name>
+</maintainer>
+<longdescription>
+ Emacs-libvterm (vterm) is fully-fledged terminal emulator inside GNU
+ Emacs based on libvterm, a C library. As a result of using compiled
+ code (instead of elisp), emacs-libvterm is fully capable, fast, and
+ it can seamlessly handle large outputs.
+
+ This package automatically compiles the needed module and provides
+ configurations for better integration with some shells.
+</longdescription>
+<upstream>
+ <maintainer status="active">
+ <email>fuermetz@mailbox.org</email>
+ <name>Lukas Fürmetz</name>
+ </maintainer>
+ <doc>https://github.com/akermu/emacs-libvterm/blob/master/README.md</doc>
+ <bugs-to>https://github.com/akermu/emacs-libvterm/issues</bugs-to>
+ <remote-id type="github">akermu/emacs-libvterm</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/app-emacs/vterm/vterm-20200504.544.ebuild b/app-emacs/vterm/vterm-20200504.544.ebuild
new file mode 100644
index 000000000..6de8fb88a
--- /dev/null
+++ b/app-emacs/vterm/vterm-20200504.544.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit elisp cmake
+
+DESCRIPTION="Emacs libvterm integration"
+HOMEPAGE="https://github.com/akermu/emacs-libvterm"
+SRC_URI="https://melpa.org/packages/${PN}-${PV}.tar -> ${P}.tar"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ app-editors/emacs[dynamic-loading]
+ dev-libs/libvterm
+"
+
+ELISP_REMOVE="${PN}-pkg.el"
+SITEFILE="50${PN}-gentoo.el"
+
+src_configure() {
+ elisp-make-autoload-file
+
+ local mycmakeargs=( "USE_SYSTEM_LIBVTERM=yes" )
+ cmake_src_configure
+}
+
+src_compile() {
+ elisp_src_compile
+
+ cmake_src_compile
+}
+
+src_install() {
+ elisp_src_install
+
+ dodoc README.md
+
+ # install vterm module
+ elisp-install ${PN} *.so
+
+ # add shell config files
+ if has_version app-shells/bash; then
+ elog "Adding configuration for bash."
+ exeinto /etc/bash/bashrc.d/
+ newexe "${FILESDIR}/bashrc" bash-emacs-vterm.sh
+ fi
+ if has_version app-shells/zsh; then
+ elog "Adding configuration for zsh."
+ exeinto /etc/profile.d/
+ newexe "${FILESDIR}/zshrc" zsh-emacs-vterm.sh
+ fi
+ if has_version app-shells/fish; then
+ elog "Adding configuration for fish."
+ exeinto /etc/fish/conf.d/
+ newexe "${FILESDIR}/config.fish" emacs-vterm.fish
+ fi
+}