diff --git a/vim.csh b/vim.csh index 1ccfb37..3534be2 100644 --- a/vim.csh +++ b/vim.csh @@ -1,7 +1,20 @@ -if ( -x /usr/bin/id ) then - if ( "`/usr/bin/id -u`" > 200 ) then - alias vi vim - alias view 'vim -R' - endif -endif +# we need to use which twice - first for checking if +# the command doesn't fail, the use it if doesn't fail +set vim_cond = `which vim >& /dev/null && which vim` +set vi_cond = `which vi >& /dev/null && which vi` +switch ( $vim_cond-$vi_cond ) + case /usr/bin/vim-/usr/bin/vi: + # apply only when founded vim and vi are in expected dirs from distro + alias vi vim + alias view 'vim -R' + breaksw + case -/usr/bin/vi: + # apply only if founded vi is in expected dir from distro + alias vim "read -rep 'No vim found, using vi, press ENTER to continue' -n1 -t 20 -s && vi" + breaksw +endsw + +# just in case +unset vim_cond +unset vi_cond diff --git a/vim.sh b/vim.sh index dc3df47..45a35be 100644 --- a/vim.sh +++ b/vim.sh @@ -1,6 +1,14 @@ if [ -n "${BASH_VERSION-}" -o -n "${KSH_VERSION-}" -o -n "${ZSH_VERSION-}" ]; then - [ "`/usr/bin/id -u 2>/dev/null || echo 0`" -le 200 ] && return - # for bash and zsh, only if no alias is already set - alias vi >/dev/null 2>&1 || alias vi=vim - alias view >/dev/null 2>&1 || alias view="vim -R" + # This will avoid user defined aliases and possibly stuff defined earlier in the PATH. + case "$(which vim 2> /dev/null)-$(which vi 2> /dev/null)" in + /usr/bin/vim-/usr/bin/vi) + # apply only when founded vim and vi are in expected dirs from distro + alias vi=vim + alias view="vim -R" + ;; + -/usr/bin/vi) + # apply only if founded vi is in expected dir from distro + alias vim="read -rep $'No vim found, using vi, press ENTER to continue\n' -n1 -t 20 -s && vi" + ;; + esac fi diff --git a/vim.spec b/vim.spec index 4060e42..f696dc1 100644 --- a/vim.spec +++ b/vim.spec @@ -98,8 +98,8 @@ Summary: The common files needed by any version of the VIM editor Conflicts: man-pages-fr < 0.9.7-14 Conflicts: man-pages-it < 0.3.0-17 Conflicts: man-pages-pl < 0.24-2 -Requires: %{name}-filesystem Conflicts: %{name}-minimal < %{epoch}:8.1.1-1 +Requires: %{name}-filesystem %description common VIM (VIsual editor iMproved) is an updated and improved version of the @@ -122,10 +122,14 @@ many different languages. %package minimal Summary: A minimal version of the VIM editor -Provides: vi -Provides: %{_bindir}/vi # conflicts in package because of manpage move (bug #1599663) Conflicts: %{name}-common < %{epoch}:8.1.1-1 +# now vim-minimal ships vim.sh, vim.csh and vim.fish too, so we need to conflict +Conflicts: vim-enhanced < 2:8.2.1815-2 +Provides: vi +Provides: %{_bindir}/vi +# needed for profile script +Requires: which %description minimal VIM (VIsual editor iMproved) is an updated and improved version of the @@ -138,10 +142,17 @@ only available when the vim-common package is installed. %package enhanced Summary: A version of the VIM editor which includes recent enhancements -Requires: vim-common = %{epoch}:%{version}-%{release} which +# now vim-minimal ships vim.sh, vim.csh and vim.fish too, so we need to conflict +Conflicts: vim-minimal < 2:8.2.1815-2 +# vim bundles libvterm, which is used during build - so we need to provide +# bundled libvterm for catching possible libvterm CVEs +Provides: bundled(libvterm) Provides: vim Provides: %{_bindir}/mergetool Provides: %{_bindir}/vim +Requires: vim-common = %{epoch}:%{version}-%{release} which +# needed for profile script +Requires: which # suggest python3, python2, lua, ruby and perl packages because of their # embedded functionality in Vim/GVim Suggests: python3 python3-libs @@ -152,9 +163,6 @@ Suggests: ruby-libs ruby %if "%{withlua}" == "1" Suggests: lua-libs %endif -# vim bundles libvterm, which is used during build - so we need to provide -# bundled libvterm for catching possible libvterm CVEs -Provides: bundled(libvterm) %description enhanced VIM (VIsual editor iMproved) is an updated and improved version of the @@ -181,6 +189,7 @@ packages that add vim files, p.e. additional syntax files or filetypes. Summary: The VIM version of the vi editor for the X Window System - GVim # needed in configure script to have correct macros enabled for GUI (#1603272) BuildRequires: gtk3-devel +BuildRequires: libappstream-glib # for sound support BuildRequires: libcanberra-devel BuildRequires: libX11-devel @@ -189,12 +198,11 @@ BuildRequires: libXt-devel BuildRequires: libXpm-devel BuildRequires: libICE-devel -Requires: vim-common = %{epoch}:%{version}-%{release} libattr >= 2.4 gtk3 Provides: gvim Provides: %{_bindir}/mergetool Provides: %{_bindir}/gvim -BuildRequires: gtk3-devel libSM-devel libXt-devel libXpm-devel libappstream-glib Requires: hicolor-icon-theme +Requires: vim-common = %{epoch}:%{version}-%{release} libattr >= 2.4 gtk3 # suggest python3, python2, lua, ruby and perl packages because of their # embedded functionality in Vim/GVim Suggests: python3 python3-libs @@ -221,12 +229,12 @@ vim-common package. %package default-editor Summary: Set vim as the default editor -Requires: vim-enhanced BuildArch: noarch -Provides: system-default-editor Conflicts: system-default-editor # conflict with nano-default-editor which doesn't provide system-default-editor Conflicts: nano-default-editor < 5.3-3 +Provides: system-default-editor +Requires: vim-enhanced %description default-editor This subpackage contains files needed to set Vim as the default editor. @@ -532,15 +540,12 @@ chmod 644 %{buildroot}/%{_datadir}/%{name}/%{vimdir}/doc/vim2html.pl \ chmod 644 ../runtime/doc/vim2html.pl mkdir -p %{buildroot}/%{_sysconfdir}/profile.d -cp %{SOURCE1} %{buildroot}/%{_sysconfdir}/profile.d/vim.sh -cp %{SOURCE2} %{buildroot}/%{_sysconfdir}/profile.d/vim.csh -cp %{SOURCE16} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.sh -cp %{SOURCE17} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.csh -chmod 0644 %{buildroot}/%{_sysconfdir}/profile.d/vim.* -chmod 0644 %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.* +install -p -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/profile.d/vim.sh +install -p -m644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/profile.d/vim.csh +install -p -m644 %{SOURCE16} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.sh +install -p -m644 %{SOURCE17} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.csh mkdir -p %{buildroot}/%{_datadir}/fish/vendor_conf.d/ -cp %{SOURCE18} %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish -chmod 0644 %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish +install -p -m644 %{SOURCE18} %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish install -p -m644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/virc install -p -m644 %{SOURCE5} %{buildroot}/%{_sysconfdir}/vimrc @@ -739,6 +744,8 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags %endif %files minimal +%dir %{_sysconfdir}/profile.d/ +%config(noreplace) %{_sysconfdir}/profile.d/vim.* %config(noreplace) %{_sysconfdir}/virc %{_bindir}/ex %{_bindir}/vi @@ -753,11 +760,12 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags %{_mandir}/man5/virc.* %files enhanced +%dir %{_sysconfdir}/profile.d/ +%config(noreplace) %{_sysconfdir}/profile.d/vim.* %{_bindir}/vim %{_bindir}/rvim %{_bindir}/vimdiff %{_bindir}/vimtutor -%config(noreplace) %{_sysconfdir}/profile.d/vim.* %files filesystem %{_rpmconfigdir}/macros.d/macros.vim @@ -807,14 +815,15 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags %{_datadir}/icons/locolor/*/apps/* %files default-editor +%dir %{_datadir}/fish/vendor_conf.d +%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish %dir %{_sysconfdir}/profile.d %config(noreplace) %{_sysconfdir}/profile.d/vim-default-editor.* -%dir %{_datadir}/fish/vendor_conf.d -%config(noreplace) %{_datadir}/fish/vendor_conf.d/vim-default-editor.fish %changelog * Thu Oct 15 2020 Zdenek Dohnal - 2:8.2.1815-2 - vim-default-editor.fish - dont give EDITOR universal scope +- vim.sh, vim.csh - set aliases only for OS default vi and vim * Mon Oct 12 2020 Zdenek Dohnal - 2:8.2.1815-2 - fix installing fish profile, set virtual provide for default editor