fichier tex.vim (macros personnelles) non pris en compte

Pourquoi?

a marqué ce sujet comme résolu.

Bonjour,

nouveau sur ce forum, mais expérimenté sur l’usage de vim (et de LaTeX) sous Linux, moins sur les taches d’administration.

J’ai du installer un nouveau système Debian stable (Bookworm) sur un nouvel ordinateur, le précédent agonisant.

Je pense avoir recopié l’arborescence ~/.vim/ du Bullseye (version Debian précédente), mais mon fichier de macros personnelles tex.vim pour éditer des fichiers *.tex n’est pas pris en compte.

Voici mon ~/.vimrc :

set matchpairs=(:),{:},[:],<:>,«:»,":",
set title           " met à jour le titre de la fenêtre ou du terminal
set scrolloff=3     " affiche au moins 3 lignes autour du curseur
set incsearch       " affiche la chaine recherchée pendant sa frappe
syntax on
filetype plugin indent on
call pathogen#infect()
set ignorecase
syntax on
set number
set lbr
set wildmode=longest,list
set tw=96
set display+=lastline
filetype plugin on
set grepprg=grep\ -nH\ $*
filetype indent on
let g:Tex_SmartQuoteOpen="«"
let g:Tex_SmartQuoteClose="»"
let g:tex_flavor='latex'
set foldcolumn=4
highlight NoSpacesEOL ctermbg=red ctermfg=white guibg=#592929
match NoSpacesEOL / \+$/
highlight NoTabs ctermbg=red ctermfg=white guibg=#592929
match NoTabs /\t/
set spelllang=fr
set cryptmethod=blowfish2
set mouse=a
set expandtab
set sw=2
set smartindent
set tabstop=2
set softtabstop=2
set printoptions=paper:A4,duplex:off,collate:n,syntax:n
set printfont=courier\11

Et l’arborescence de ~/.vim/

./autoload
./compiler
./doc
./ftplugin
./indent
./perso
./plugin
./spell
./syntax_checkers
./template

J’ai mis mon tex.vim à la racine de cette arborescence et dans divers sous-répertoires du 1er degré (ceux listés ci-dessus), en vain.

Qu’ai-je-bien pu oublier?

+0 -0

Peux-tu regarder l’aide pour les blocs de code ? Là c’est difficile à lire-et-comprendre…

Quand tu lances Vim, tape « :version⏎ » et recherche la ligne « user vimrc file » pour voir. Exemple de sortie :

 system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"

Si le chemin correspond, vérifie la permission de ton fichier : est-ce lisible par ton compte ? Vérifie dans ton shell par un « ls -l ~/.vimrc »
D’ailleurs tu écris (qui laisse entendre que tu soupçonne un problème avec la copie …dont la bonne réalisation est pourtant le prérequis)

Je pense avoir recopié l’arborescence ~/.vim/ du Bullseye (version Debian précédente),

Si les points précédents sont OK, il faut taper dans ton Vim « :scriptnames⏎ » pour voir si ton fichier est bien parmi ceux lus au démarrage.

+1 -0

Salut, je mets la version bloc de code en attendant, j’éditerai pour l’enlever quand le premier post aura corriger. EDIT : post corrigé.

Est-ce que pathogen a été réinstallé ? ce ne serait pas l’appel à infect qui échoue et interrompt la configuration / n’appelle pas tex.vim ?

il n’y a que tex.vim qui ne fonctionne pas ? tu as d’autres configurations installées de façon similaires qui s’applique bien ?

+0 -0

La bonne place pour des définitions liées au type de ficher c’est dans …. {rtp}/ftplugin/. Dedans il faut que des définitions locales au buffer.

Et dans le vimrc, pas oublier d’activiter le support des ftplugins. D’ailleurs tu as plusieurs version de la meme ligne, n’en garde qu’une =>

  " Dans le .vimrc
  filetype plugin indent on

EDIT: Si jamais ton script utilise le meme garde anti-réinclusion que des ftplugins chargés par pathogen, tu peux te retrouver à ce que l’un des deux soit inhibé — piège classique où plus d’un ftplugin distribué sur le net fait l’erreur de vérifier & positionner b:did_ftplugin.

Merci @romantik ; c’est plus clair du coup et on voit effectivement qu’il y a du pathogen …qu’il faut avoir réinstallé (il n’y a pas de répertoire ~/.vim/bundle dans ton arborescence.)

Note pour @Jo2125 :

  • la ligne 6 est déjà la combinaison des lignes 15 et 17 (que tu peux donc virer) ; et la doc de configuration de pathogen dit de la placer après.
  • la ligne 5, à placer aussi après la ligne execute pathogen#infect(), est dupliquée en ligne 9
+0 -0

Désolé pour ce si long délai, j’ai corrigé la mise en forme, et surtout apprécié votre aide. (@lgmhs, je n’ai pas tout compris l’explication concernant «le meme garde anti-réinclusion que des ftplugins chargés par pathogen» —- d’ailleurs j’ai oublié comment se servir de pathogen, je viens d' ajouter bundle à ~/.vim/ et verrai plus tard)

Je vais également chercher à comprendre: vérifier & positionner b:did_ftplugin

merci à tous

+0 -0

Ce que je veux dire, c’est que si ton ftplugin vérifie et positionne b:did_ftplugin cela va le rendre exclusif avec les ftplugins standards distribués avec vim (i.e. $VIMRUNTIME/ftplugin/tex.vim). Pareil si jamais tu utilises (via le gestionnaire de plugins de ton choix. pathogen?) d’autres plugins qui auraient des ftplugins pour (La)TeX qui auraient la mauvaise idée de toucher à b:did_ftplugin.

la liste affichée par :scriptnames contient:

~/.vim/compiler/tex.vim

qui est un lien vers /usr/share/vim/addons/compiler/tex.vim

Ce fichier contient les lignes suivantes:

if exists('b:suppress_latex_suite') && b:suppress_latex_suite == 1
	finish
endif

if exists('did_latexSuite_disabled')
 finish
endif

" avoid reinclusion for the same buffer. keep it buffer local so it can be
" externally reset in case of emergency re-sourcing.
if exists('b:doneTexCompiler') && !exists('b:forceRedoTexCompiler')
	finish
endif
let b:doneTexCompiler = 1

je suppose qu’elles répondent à votre recommandation «vérifier & positionner b:did_ftplugin»

et que je peux alors mettre mes macros à la fin de ce fichier (copié au lieu du lien)

+0 -0

:/ Je ne vois pas l’intérêt de faire un lien entre ~/.vim/compiler/tex.vim et $VIMRUNTIME/compiler/tex.vim. Bizarre.

Quant à b:did_ftplugin, ma recommendation est de ne pas y toucher sauf si on veut que notre ~/.vim/ftplugin/ inhibe celui distribué dans $VIMRUNTIME/ftplugin. Au passage, cela ne concerne que les fichiers dans les répertoires {rtp}/ftplugin/ (où par {rtp} je désigne tous les chemins enregistrés dans l’option &rtp — cf :h 'rtp')

Merci lmghs,

j’avoue que ceci me dépasse et nécessite un apprentissage que je ne suis pas en mesure de faire en l’état actuel.

Je ne vois pas de variable VIMRUNTIME (ni aucune variable d’environnement VIM…).

Je crois (?) que le fichier ~/.vim/compiler/tex.vim n’est un lien vers le fichier dans /usr/share/vim/... (non modifiable par l’utilisateur) que comme modèle proposé par le paquet Debian de vim-latexsuite, sans doute comme précautions.

J’ignore le rôle de la variable b:did_ftplugin, et ne cherche qu’à rendre accessibles, actives, quelques vielles macros personnelles, simples, à utiliser spécifiquement avec les fichiers *.tex, en complément de la suite vim-latex et de syntastic.

+0 -0

$VIMRUNTIME est définie… dans vim. Si tu lances vim et que tu demandes :echo $VIMRUNTIME tu verras sa valeur pour ton installation de vim.

Bizarre pour le choix de l’installation de vim-latexsuite.

b:did_ftplugin est une variable locale à un buffer. Quand tu ouvres un fichiers toto.tex, toute une série de commandes est exécutée automatiquement. Dans le lot, les ftplugins qui matchent {rtp}/ftplugin/tex*.vim et {rtp}/ftplugin/tex/*.vim seront chargés dans l’ordre des chemins présents dans 'rtp' (-> :echo &rtp; ou pour une version plus lisibles avec des vims récents: echo &rtp->split(',')->join("\n")).

Les ftplugins qui contiennent

if exists('b:did_ftplugin') | finish | endif
let b:did_ftplugin = 1

testeront si la variable est définie pour empêcher leur chargement. Et la positionnent ensuite. Tous les ftplugins standards ont ce garde anti-inclusion pour nous permettre d’inhiber leur chargement (profitant que $HOME est toujours présent avant $VIMRUNTIME dans 'rtp’). Certains ftplugins distribués sur internet utilisent aussi ce garde, mais à tord. Je doute que vim-latesuite fasse cette erreur. Mais j’avoue avoir oublié. Cela aurait pu être une piste qui fait que ton (ft)plugin n’est pas chargé correctement.

Le fait que vim-latexsuite soit installé avec un apt-get au lieu d’un gestionnaire de plugins est pour moi une autre interrogation. J’utilise un gestionnaire de plugins qui s’occupe de télécharger si besoin (dépendances comprises), et de positionner correctement 'rtp' pour tous les plugins que j’ai installés. Sans lien symbolique.

Encore merci lmghs pour votre patience et votre pédagogie.

Si je comprends bien, il serait préférable d’utiliser un gestionnaire de plugins (lequel?), après avoir purger les paquets de Debian?

Mon vieux fichier de macros, concaténé après la copie du tex.vim en remplacement du lien sur /usr/share/vim... fonctionne correctement.

Je dirai que si pathogen est déjà employé, autant continuer avec lui. Mais… comme l’indique son mainteneur, autant le remplacer avec le système de paquets natifs de vim 8+.

Dans les 2 cas, il s’agit de faire des git clone à la main dans un répertoire ou un autre dont le nom est indiqué dans la documentation de chacun.

Perso j’utilise une solution beaucoup plus complexe (et plus maintenue non plus)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte