commit:     316d2cee8734dbc22f0a1a1e5d4debac89c8cbce
Author:     Arjan Adriaanse <arjan <AT> adriaan <DOT> se>
AuthorDate: Tue May  5 09:05:49 2020 +0000
Commit:     Arjan Adriaanse <arjan <AT> adriaan <DOT> se>
CommitDate: Tue May  5 09:05:49 2020 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=316d2cee

app-emacs/vterm: add new package

Package-Manager: Portage-2.3.89, Repoman-2.3.20
Signed-off-by: Arjan Adriaanse <arjan <AT> adriaan.se>

 app-emacs/vterm/Manifest                  |  1 +
 app-emacs/vterm/files/50vterm-gentoo.el   |  2 +
 app-emacs/vterm/files/bashrc              | 26 +++++++++++++
 app-emacs/vterm/files/config.fish         | 30 +++++++++++++++
 app-emacs/vterm/files/zshrc               | 25 +++++++++++++
 app-emacs/vterm/metadata.xml              | 26 +++++++++++++
 app-emacs/vterm/vterm-20200504.544.ebuild | 61 +++++++++++++++++++++++++++++++
 7 files changed, 171 insertions(+)

diff --git a/app-emacs/vterm/Manifest b/app-emacs/vterm/Manifest
new file mode 100644
index 0000000..0fa0a8c
--- /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 0000000..a050b7a
--- /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 0000000..bafa9f1
--- /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 0000000..ce47d71
--- /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 0000000..eb9255a
--- /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 0000000..a9708bd
--- /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>ar...@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>fuerm...@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 0000000..6de8fb8
--- /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
+}

Reply via email to