*version5.txt* Pour Vim version 6.2. Dernière modification : 29 oct 2002
MANUEL de RÉFÉRENCE VIM - par Bram Moolenaar
Bienvenue dans Vim version 5.0 !
Ce document donne la liste des différences entre Vim 4.x et Vim 5.0.
Bien que le titre ne mentionne que Vim 5.0, cette liste concerne aussi les
versions 5.1, 5.2, etc..
Voir |vi_diff.txt| pour une vue d'ensemble des différences entre Vi et Vim
5.0.
Voir |version4.txt| pour les différences entre Vim 3.0 et Vim 4.0.
CHANGEMENTS INCOMPATIBLES
Valeur par défaut de 'compatible' modifiée |cp-default|
Commande de formatage de texte "Q" modifiée |Q-command-changed|
Arguments de la ligne de commande modifiés |cmdline-changed|
Autocommandes conservées |autocmds-kept|
Utilisation de 'hidden' modifiée |hidden-changed|
Commandes sur les objets textuels modifiées |text-objects-changed|
Ressources X-Windows supprimées |x-resources|
Utilisation de $VIM |$VIM-use|
Utilisation de $HOME pour MS-DOS et Win32 |$HOME-use|
Format des fichiers de marqueurs modifié |tags-file-changed|
Options modifiées |options-changed|
CTRL-B en mode Insertion supprimé |i_CTRL-B-gone|
NOUVELLES FONCTIONNALITÉS
Coloration syntaxique |new-highlighting|
Langage de script intégré |new-script|
Support de Perl et de Python |new-perl-python|
Version graphique Win32 |added-win32-GUI|
Version VMS |added-VMS|
Version BeOS |added-BeOS|
Version graphique Macintosh |added-Mac|
Compatibilité Vi renforcée |more-compatible|
Lire depuis l'entrée standard |read-stdin|
Motifs d'expressions rationnelles |added-regexp|
Marqueurs identiques |tag-overloaded|
Nouvelles commandes |new-commands|
Nouvelles options |added-options|
Nouveaux arguments de la ligne de commande |added-cmdline-args|
Ajouts divers |added-various|
AMÉLIORATIONS |improvements|
CHANGEMENTS À LA COMPILATION |compile-changes|
CORRECTIONS DE BOGUES |bug-fixes|
VERSION 5.1 |version-5.1|
Changements |changed-5.1|
Ajouts |added-5.1|
Corrections |fixed-5.1|
VERSION 5.2 |version-5.2|
Édition des lignes longues |long-lines|
Sélecteur de fichiers ajouté |file-browser-5.2|
Dialogues ajoutés |dialogs-added|
Menus contextuels ajoutés |popup-menu-added|
Mode Sélection ajouté |new-Select-mode|
Fichiers de session ajoutés |new-session-files|
Fonctions et commandes définies par l'utilisateur |new-user-defined|
Nouvelles interfaces |interfaces-5.2|
Nouveaux portages |ports-5.2|
Support du multi-octets |new-multi-byte|
Nouvelles fonctions |new-functions-5.2|
Nouvelles options |new-options-5.2|
Nouvelles commandes Ex |new-ex-commands-5.2|
Changements |changed-5.2|
Ajouts |added-5.2|
Corrections |fixed-5.2|
VERSION 5.3 |version-5.3|
Changements |changed-5.3|
Ajouts |added-5.3|
Corrections |fixed-5.3|
VERSION 5.4 |version-5.4|
Introduction du répertoire de support |new-runtime-dir|
Introduction des types de fichiers |new-filetype-5.4|
Continuation des lignes dans les scripts Vim |new-line-continuation|
Amélioration des fichiers de session |improved-sessions|
Amélioration des autocommandes |improved-autocmds-5.4|
Chiffrement |new-encryption|
Portage de l'IHM graphique vers GTK |new-GTK-GUI|
Modifications des menus |menu-changes-5.4|
Amélioration du viminfo |improved-viminfo|
Diverses nouvelles commandes |new-commands-5.4|
Diverses nouvelles options |new-options-5.4|
Scripts Vim |new-script-5.4|
Éviter l'invite Appuyez-sur-entrée |avoid-hit-enter|
Amélioration de quickfix |improved-quickfix|
Expressions rationnelles |regexp-changes-5.4|
Changements |changed-5.4|
Ajouts |added-5.4|
Corrections |fixed-5.4|
VERSION 5.5 |version-5.5|
Changements |changed-5.5|
Ajouts |added-5.5|
Corrections |fixed-5.5|
VERSION 5.6 |version-5.6|
Changements |changed-5.6|
Ajouts |added-5.6|
Corrections |fixed-5.6|
VERSION 5.7 |version-5.7|
Changements |changed-5.7|
Ajouts |added-5.7|
Corrections |fixed-5.7|
VERSION 5.8 |version-5.8|
Changements |changed-5.8|
Ajouts |added-5.8|
Corrections |fixed-5.8|
==============================================================================
Changements incompatibles
VALEUR PAR DÉFAUT DE 'compatible' MODIFIÉE *cp-default*
Vim version 5.0 tente d'être davantage compatible avec Vi. Cela rend service
aux personnes utilisant Vim en remplacement ponctuel de Vi, mais provoque
certaines incompatibilités avec la version 4.x.
Dans la version 4.x, 'compatible' est désactivée par défaut. Elle est à
présent activée. La première chose que vous remarquerez est que la commande
"u" s'annule elle-même. Parmi les autres effets de bord, il se peut que les
mappages se comportent différemment ou ne fonctionnent plus du tout.
Puisque nombre de personnes passant de Vim 4.x à 5.0 trouveront cela gênant,
l'option 'compatible' est désactivée quand Vim trouve un fichier vimrc. C'est
un petit tour permettant de s'assurer que 90 % des utilisateurs de Vim ne
seront pas dérangés par cette modification.
Qu'est-ce que cela signifie ?
- Si vous préférez travailler en mode 'compatible' et que vous n'avez pas de
fichier vimrc, vous n'avez rien à faire ;
- Si vous préférez travailler en mode 'nocompatible' et que vous avez un
fichier vimrc, vous n'avez rien à faire ;
- Si vous préférez travailler en mode 'compatible' et que vous avez un fichier
vimrc, vous devez ajouter cette ligne dans votre fichier vimrc :- Si vous préférez travailler en mode 'nocompatible' et que vous n'avez pas de
fichier vimrc, vous pouvez au choix :
- créer un fichier vimrc vide (par exemple : "~/.vimrc" pour Unix) ;
- ajouter cette commande dans votre fichier ".exrc" ou dans $EXINIT : - lancer Vim avec l'argument "-N".
Si vous débutez avec Vi et Vim, l'utilisation de 'nocompatible' est fortement
recommandée, car Vi possède de nombreux effets de bord inattendus, que vous
vous épargnerez avec ce réglage. Voir 'compatible'.
Si vous appréciez certaines aspects dans le mode 'compatible' et d'autres
moins, vous pouvez affiner la compatibilité avec 'cpoptions'.
Quand vous invoquez Vim avec "ex" ou "gex", Vim démarre toujours en mode
compatible.
COMMANDE DE FORMATAGE DE TEXTE "Q" MODIFIÉE *Q-command-changed*
Précédemment, la commande "Q" formatait les lignes à la largeur spécifiée dans
l'option 'textwidth'. La commande pour cela est maintenant "gq" (voir |gq|
pour plus d'informations). La raison de ce changement est que "Q" est la
commande Vi standard pour passer en mode "Ex", et que Vim dispose en fait
d'un mode "Ex" (voir |Q| pour plus d'informations).
Si vous souhaitez continuer à "Q" pour le formatage, utilisez ce mappage :Et si vous souhaitez également utiliser la fonctionnalité permise par "Q" :ARGUMENTS DE LA LIGNE DE COMMANDE MODIFIÉS *cmdline-changed*
Les arguments de type fichiers et de type options peuvent maintenant être
mélangés sur la ligne de commande. Vous pouvez spécifier des options après les
noms de fichiers. Exemple :Cela n'est pas possible pour l'édition d'un fichier dont le nom commence par
un '-'. Utilisez alors l'argument "--" |---| :"-v" permet maintenant le démarrage de Ex en mode Vi ; utilisez "-R" pour le
mode lecture seule (["Read-only"]).
ancien : "vim -v fichier" |-v|
nouveau : "vim -R fichier" |-R|
"-e" permet maintenant le démarrage de Vim en mode Ex ; utilisez "-q" pour
mise-au-point.
ancien : "vim -e fichiererreurs" |-e|
nouveau : "vim -q fichiererreurs" |-q|
"-s" en mode Ex permet maintenant le fonctionnement en mode (non-interactif)
silencieux. |-s-ex|
"-x" est réservé au chiffrement, utilisez "-f" pour éviter de démarrer une
nouvelle interface en ligne de commande (Amiga).
ancien : "vim -x fichier" |-x|
nouveau : "vim -f fichier" |-f|
Vim permet jusqu'à dix arguments "+cmd" et "-c cmd". Avant, Vim n'exécutait
que la dernière.
"-n" remplace maintenant tout réglage de 'updatecount' dans un fichier vimrc,
mais pas dans un fichier gvimrc.
AUTOCOMMANDES CONSERVÉES *autocmds-kept*
Avant la version 5.0, les autocommandes pour un même événement, motif de nom
de fichier et commande ne pouvaient exister qu'en un unique exemplaire. Cela
convenait pour des autocommandes simples (comme fixer des options), mais pour
des autocommandes plus complexes, dans lesquelles la même commande pouvait
apparaître plusieurs fois, cette limitation posait des problèmes. Par
conséquent, Vim mémorise toutes les autocommandes et les conserve dans l'ordre
dans lequel elles sont définies.
L'effet de bord le plus évident de cette modification est que lors du
sourcement d'un fichier vimrc deux fois, les autocommandes qu'il contient
seront définies deux fois. Pour éviter ceci, procédez de l'une de ces
manières :
- Supprimez toutes les autocommandes susceptibles d'être définies deux fois
avant de les définir. Exemple :- Placez les autocommandes dans une commande ":if". Exemple :- Placez vos autocommandes dans un groupe d'autocommandes différent, afin que
vous puissiez les supprimer avant de les définir |:augroup| :UTILISATION DE 'hidden' MODIFIÉE *hidden-changed*
Dans la version 4.x, seules quelques commandes utilisaient l'option 'hidden'.
Maintenant, toutes les commandes l'utilisent à chaque fois qu'un tampon
disparaît d'une fenêtre.
Avant, vous pouviez faire ":buf xxx" dans un tampon modifié, ce tampon
était alors caché (["hidden"]). Maintenant, vous devez activer l'option
'hidden' pour que cela fonctionne.
Le nouveau comportement est plus simple : le masquage des tampons par Vim ne
dépend plus de la commande utilisée.
- Avec 'hidden' désactivée, les tampons ne sont jamais cachés. Les commandes
":hide" et ":close!" sont les exceptions, et, dans de rares cas, lorsque
vous auriez perdu les modifications apportées au tampon.
- Avec 'hidden' activé, un tampon n'est quasiment jamais déchargé. Les
commandes ":bunload" et ":bdel" font exception.
":buffer" supporte à présent un "!" : elle abandonne alors les modifications
du tampon courant. Pareil pour ":bnext", ":brewind", etc.
COMMANDES SUR LES OBJETS TEXTUELS MODIFIÉES *text-objects-changed*
Les commandes sur les objets textuels ont de nouveaux noms. Elles autorisent
des objets textuels supplémentaires et rendent des caractères disponibles pour
les autres commandes du mode Visuel. Puisqu'aucun caractère unique n'était
disponible, les noms des objets textuels requiert à présent deux caractères.
Le premier est toujours 'i' ou 'a'.
ANCIEN NOUVEAU
a aw un mot |v_aw| ["a word"]
A aW un MOT |v_aW| ["a WORD"]
s as une phrase |v_as| ["a sentence"]
p ap un paragraphe |v_ap|
S ab un bloc () |v_ab|
P aB un bloc {} |v_aB|
Il existe un autre jeu d'objets textuels commançant par "i", pour "intérieur".
Ils sélectionnent les même objets, mais excluent les caractères blancs.
RESSOURCES X WINDOW SUPPRIMÉES *x-resources*
Vim ne supporte plus les ressources X suivantes :
- boldColor
- italicColor
- underlineColor
- cursorColor
Vim emploie à présent des groupes de surbrillance pour fixer les couleurs.
Cela évite la confusion d'utiliser une police grasse, qui impliquerait une
couleur particulière. Voir |:highlight| et |gui-resources|.
UTILISATION DE $VIM *$VIM-use*
Vim utilise à présent la variable d'environnement VIM pour trouver ses
fichiers système. Cela inclut les fichiers vimrc, gvimrc et menu.vim globaux,
ainsi que tous les fichiers d'aide en ligne et de syntaxe. Voir |$VIM|. A
partir de la version 5.4, |$VIMRUNTIME| est également disponible.
Sur Unix, Vim fixe une valeur par défaut pour $VIM lors du `make install`.
Quand $VIM n'est pas positionnée, sa valeur par défaut est basée sur
'helpfile', "/doc/help.txt" exclus.
UTILISATION DE $HOME POUR MS-DOS ET WIN32 *$HOME-use*
Les versions MS-DOS et Win32 de Vim vérifient maintenant $HOME lors de leur
recherche du fichier vimrc ou exrc et pour la lecture/écriture du fichier
viminfo. Avant, Vim utilisait $VIM sur ces systèmes, mais cela posait des
problèmes sur les systèmes avec plusieurs utilisateurs. À présent, Vim
n'utilise $VIM que lorsque $HOME n'est pas fixée ou que le fichier n'est pas
trouvé dans $HOME. Voir |_vimrc|.
FORMAT DES FICHIERS DE MARQUEURS MODIFIÉ *tags-file-changed*
Seules les tabulations sont permises pour séparer les champs dans les fichiers
de marqueurs. Cela autorise les espaces dans les noms de fichiers, tout en
restant compatible avec Vi. Dans les versions précédentes de Vim, n'importe
quel espace blanc permettait de séparer les champs. Si vous disposez d'un
fichier de marqueurs n'utilisant pas une tabulation unique entre chaque champ,
éditez-le et exécutez cette commande :OPTIONS MODIFIÉES *options-changed*
La valeur par défaut de 'errorfile' "errors.vim" a été changée en
"errors.err". La raison est que seuls les scripts Vim devraient avoir
l'extension ".vim".
La commande ":make" n'utilise plus l'option 'errorfile'. Cela évite que la
sortie de la commande ":make" n'écrase un fichier d'erreurs enregistré
manuellement. ":make" utilise l'option 'makeef' à la place. Cela permet
également de générer un nom unique, pour empêcher les commandes ":make"
s'exécutant de manière concurrentes d'écraser leurs fichiers entre elles.
Avec 'insertmode' activé, quelques petites choses supplémentaires changent :
- <Echap> en mode Normal retourne dans le mode Insertion.
- <Echap> en mode Insertion ne quitte pas le mode Insertion.
- Passage immédiat en mode Insertion lors d'un ":set im".
Vim considère qu'un tampon est modifié quand l'option 'fileformat' (format du
fichier, précédemment l'option 'textmode') est différente du format initial du
tampon.
CTRL-B EN MODE INSERTION SUPPRIMÉ *i_CTRL-B-gone*
Quand Vim a été compilé avec la fonctionnalité |+rightleft|, vous pouviez
utiliser CTRL-B pour basculer l'option 'revins'. Malheureusement, certaines
personnes tapaient accidentellement sur la touche 'B' en tentant de taper
CTRL-V ou CTRL-N, et ne savaient pas comment s'en sortir. Puisque le
basculement de l'option 'revins' peut être obtenu facilement avec le mappage
ci-dessous, l'usage de la touche CTRL-B a été désactivé. Vous pouvez toujours
utiliser la touche CTRL-_ pour cela |i_CTRL-_|.==============================================================================
Nouvelles fonctionnalités
COLORATION SYNTAXIQUE *new-highlighting*
Vim dispose à présent d'un système très flexible pour colorer à peu près
n'importe quel type de fichier. Voir |syntax|. En résumé :Les couleurs et les attributs peuvent être fixés pour colorer la syntaxe,
ainsi que pour d'autres éléments en surbrillance avec le drapeau ':' de
l'option 'highlight'. Tous les éléments colorisés sont affectés à un groupe de
surbrillance qui spécifie leur coloration. Voir |:highlight|. Les couleurs
par défaut ont été améliorées.
Vous pouvez utiliser le groupe "Normal" pour fixer les couleurs de fond et de
premier plan dans les terminaux couleurs. Pour les IHM graphiques, vous pouvez
utiliser aussi ce groupe pour spécifier une police.
Le script "2html.vim" permet de convertir n'importe quel fichier disposant de
la coloration syntaxique en HTML. Les couleurs seront exactement les mêmes que
celles que vous voyez dans Vim. Avec un afficheur HTML, vous pouvez également
imprimer le fichier en couleur.
LANGAGE DE SCRIPT INTÉGRÉ *new-script*
Quelques commandes supplémentaires ainsi qu'un évaluateur d'expressions vous
permettent d'écrire des scripts simples mais puissants. Ces commandes
comprennent notamment ":if" et ":while". Les expressions peuvent manipuler des
nombres et des chaînes. Le registre '=' vous permet d'insérer directement le
résultat d'une expression. Voir |expression|.
SUPPORT DE PERL ET DE PYTHON *new-perl-python*
Vim est capable d'appeler des commandes Perl avec ":perldo", ":perl", etc.
Voir |Perl|.
Rustines fournies par Sven Verdoolaege et Matt Gerassimoff.
Vim est capable d'appeler des commandes Python avec les commandes ":python" et
":pyfile". Voir |python|.
Ces deux fonctionnalités ne sont disponibles que si elles sont activées à la
compilation.
VERSION GRAPHIQUE WIN32 *added-win32-GUI*
L'IHM graphique a été portée sous MS-Windows 95 et NT. Toutes les
fonctionnalités de l'interface X11 sont maintenant disponibles sous Windows.
|gui-w32|.
Cela corrige également les problèmes lors de l'utilisation de Win32 en mode
console sous Windows 95, pour lequel le support de la console a toujours été
mauvais.
Il existe aussi une version supportant l'interface OLE. |if_ole.txt| Vim peut
être intégré dans Microsoft Developer Studio en utilisant la DLL VisVim. Il
est possible de produire une version DLL de Vim avec Borland C++ (Aaron).
VERSION VMS *added-VMS*
Vim fonctionne à présent sur les systèmes VMS. Portage effectué par Henk
Elbers.
Il n'a pas été testé intensivement, mais cela devrait fonctionner.
Désolé, pas de documentation !
VERSION BeOS *added-BeOS*
Vim fonctionne sur les systèmes BeOS (BeBox incluse). (Olaf Seibert)
Voir |os_beos.txt|.
VERSION GRAPHIQUE MACINTOSH *added-Mac*
Vim fonctionne à présent sur Macintosh. (Dany St-Amant)
Il n'a pas été testé intensivement, soyez prudent !
Voir |os_mac.txt|.
COMPATIBILITÉ VI RENFORCÉE
Un vrai mode Ex existe à présent. Vous pouvez le démarrer avec la commande
"Q", ou en invoquant l'exécutable "ex" ou "gex". |Ex-mode|
Il permet en permanence l'annulation multi-niveaux, y compris dans le mode
compatible Vi. Quand le drapeau 'u' est inclus dans 'cpoptions', CTRL-R permet
de répéter les annulations ou les restaurations (comme '.' avec Nvi).
LIRE DEPUIS L'ENTRÉE STANDARD *read-stdin*
Quand l'argument "-" est utilisé sur la ligne de commande, Vim prend l'entrée
standard comme source de texte. Cela permet d'utiliser Vim à la fin d'un
tube :Voir |--|.
MOTIFS D'EXPRESSIONS RATIONNELLES *added-regexp*
Possibilité de spécifier une plage pour le nombre de correspondances d'un
atome : "\{a,b}". |/\{|
Ajout de la correspondance « la plus courte » "\{-}" (Webb).
Ajout de "\s", correspondant aux caractères blancs. Peut remplacer "[ \t]".
|/\s|
Ajout de "\S", correspondant aux caractères non blancs. Peut remplacer
"[^ \t]". |/\S|
MARQUEURS IDENTIQUES *tag-overloaded*
Quand vous utilisez un langage tel que le C++, il existe souvent plusieurs
marqueurs pour un seul nom. Des commandes ont été ajoutées pour pouvoir sauter
vers n'importe lequel de ces marqueurs identiques :
|:tselect| Donne la liste des marqueurs correspondant puis saute vers
l'un d'entre eux.
|:stselect| Idem, et partage la fenêtre.
|g_CTRL-]| Effectue un ":tselect" avec le mot sous le curseur.
Après un ":ta {nommarqueur}" avec plusieurs correspondances :
|:tnext| Saute au marqueur correspondant suivant.
|:tprevious| Saute au marqueur correspondant précédent.
|:trewind| Saute au premier marqueur correspondant.
|:tlast| Saute au dernier marqueur correspondant.
La commande ":tag" accepte maintenant des jokers. Lors du complètement sue la
ligne de commande, la correspondance insensible à la casse est disponible (à
la fin).
NOUVELLES COMMANDES *new-commands*
|:amenu| Definit des menus pour tous les modes, insère un CTRL-O pour
le mode Insertion, un ESC pour le mode Visuel et CTRL-C pour
le mode Lignecmd. "amenu" est utilisé pour les menus par
défaut ainsi que le menu Syntaxe.
|:augroup| Fixe le groupe à utiliser pour les autocommandes qui suivent.
Cela permet de regrouper les autocommandes, ce qui facilite
leur suppression en effaçant un groupe particulier.
|:crewind| Saute à la première erreur.
|:clast| Saute à la dernière erreur.
|:doautoall| Exécute des autocommandes pour tous les tampons chargés.
|:echo| Affiche son argument, qui est une expression. Cela permet
d'afficher des messages comprenant des variables.
|:execute| Exécute son argument, qui est une expression. Cela permet de
construire une commande Ex avec n'importe quoi.
|:hide| Fonctionne comme ":close".
|:if| Exécution conditionnelle, pour le langage de script intégré.
|:intro| Affiche le message d'accueil. Toujours exécuté quand Vim est
démarré sans arguments de type fichier.
|:let| Assigne une valeur à une variable interne.
|:omap| Mappe uniquement dans le mode Opérateur-en-cours. Rend
possible le mappage de commandes de type objet textuel.
|:redir| Redirige la sortie des messages vers un fichier.
|:update| Enregistre si le tampon s'il est modifié.
|:while| Boucle « tant que » pour le langage de script intégré.
Mode Visuel :
|v_O| "O" en mode Visuel par blocs déplace le curseur vers le coin
horizontalement opposé.
|v_D| "D" en mode Visuel coupe jusqu'à la fin de la ligne.
Mode Insertion :
|i_CTRL-]| Déclenche une abréviation, sans insérer de caractère.
NOUVELLES OPTIONS *added-options*
'background' Permet de choisir la couleur de surbrillance par défaut.
Également utilisée dans "syntax.vim" pour choisir les couleurs
de la syntaxe. Souvent fixée automatiquement, selon le
terminal utilisé.
'complete' Spécifie comment le complètement fonctionne en mode Insertion.
'eventignore' Permet d'ignorer temporairement les autocommandes.
'fileformat' Format du fichier courant. Remplace 'textmode'.
'fileformats' Formats possibles du fichier. Remplace 'textauto'.
La nouveauté est le support du format Macintosh : un unique
<CR> sépare les lignes.
La valeur par défaut de 'fileformats' est "dos,unix" pour
MS-DOS, Win32 et OS/2, même 'compatible' quand est activé.
De tout façon, les fichiers de type Unix ne fonctionnaient pas
quand 'fileformats' était vide.
'guicursor' Fixe la forme et le clignotement du curseur dans différents
modes.
Par défaut, le curseur est modifié pour les mode Insertion et
Remplacement et quand un opérateur est en cours. Le
clignotement est activé par défaut.
'fkmap' Mappage des touches pour le Farsi.
'hlsearch' Met toutes les correspondances au dernier motif recherché en
surbrillance.
'hkmapp' Mappage pour l'hébreu phonétique (Ilya Dogolazky).
'iconstring' Definit le nom d'une icône, quand elle n'est pas vide.
(version 5.2 : la chaîne est utilisée littéralement, un
saut-de-ligne permet de faire deux lignes.)
'lazyredraw' Ne rafraîchit pas l'écran lors de l'exécution de macros, de
registres ou d'autres commandes non tapées.
'makeef' Fichier d'erreurs à utiliser pour ":make". "##" est remplacé
par un nombre unique. Évite que deux sessions Vim écrasent
entre elles leur fichier d'erreurs. La valeur par défaut pour
Unix est "/tmp/vim##.err" ; "t:vim##.Err" pour Amiga,
"vim##.err" pour les autres.
'matchtime' Dixièmes de seconde durant lesquels montrer la parenthèse
correspondante, quand 'showmatch' est activé. Comme Nvi.
'mousehide' Masque le curseur de la souris quand du texte est saisi.
'nrformats' Définit les bases dans lesquelles Vim pourra reconnaître les
nombres lors de l'utilisation de CTRL-A et CTRL-X. Valeur par
défaut : "hex,octal".
'shellxquote' Ajoute des délimiteurs supplémentaires autour des commandes
shell, redirection comprise.
'softtabstop' Permet à la saisie de se comporter comme si les taquets de
tabulation étaient fixés à cette valeur, sans modifier la
valeur de 'tabstop'. Facilite la conservation de 'ts' à 8,
tout en obtenant quatre espaces pour un <Tab>.
'titlestring' Chaîne de titre de la fenêtre, si elle n'est pas vide (version
5.2 : cette chaîne est prise littéralement, un saut-de-ligne
permet de faire deux lignes).
'verbose' Niveau de verbosité. Permet d'afficher quels fichiers .vimrc,
.exrc, .viminfo, etc. sont sourcés à l'initialisation. Montre
également les autocommandes en cours d'exécution. Peut aussi
être fixée en utilisant l'argument "-V" de la ligne de
commande.
NOUVEAUX ARGUMENTS DE LA LIGNE DE COMMANDE *added-cmdline-args*
|-U| Spécifie le fichier gvimrc à utiliser. Comme "-u" pour vimrc.
|-V| Fixe l'option 'verbose'. Par exemple "vim -V10".
|-N| Démarre en mode non-compatible.
|-C| Démarre en mode compatible.
|-Z| Démarre en mode restreint, n'autorise pas les commandes shell.
Également accessible en utilisant l'exécutable "rvim".
|-h| Donne le mode d'emploi et quitte.
AJOUTS DIVERS *added-various*
Ajout du support pour se connecter avec SNiFF+ (soumis par Toni Leherbauer).
Vim peut être utilisé comme éditeur pour SNiFF+. Aucun manuel disponible...
Pour la production des rapports de bogues, le script "bugreport.vim" a été
inclus. Vous pouvez l'utiliser avec ":so $VIMRUNTIME/bugreport.vim", qui crée
le fichier "bugreport.txt" dans le répertoire courant. |bugs|
Ajout d'une plage pour la commande ":normal". Vous pouvez à présent répéter la
même commande pour chaque ligne de la plage. |:normal-range|
Ajout du support de la langue farsi (Shiran). Uniquement si activé à la
compilation. Voir |farsi|.
==============================================================================
Améliorations *improvements*
Performances :
- Quand 'showcmd' était activé, les mappages s'exécutaient bien plus lentement
à cause du vidage très fréquent de la sortie. Aide considérablement lors de
l'exécution de la macro "life" avec 'showcmd' activé.
- Inclusion des rustines pour la recherche binaire dans les fichiers de
marqueurs (David O'Neill). Peut être désactivée en désactivant l'option
'tagbsearch'.
- La barre d'état n'est plus mise à jour lors de la répétition d'une insertion
(cela la ralentissait considérablement).
- Pour Unix, l'expansion des noms de fichiers est maintenant faite de manière
interne au lieu de démarrer un shell pour cela.
- Expansion des variables d'environnement avec expand_env(), au lieu d'appeler
le shell. Cela rend :so $VIMRUNTIME/syntax/syntax.vim" BEAUCOUP plus rapide.
- Trafic réduit pour le positionnement du curseur : utilisation de CR-LF pour
aller aux premières colonnes des quelques lignes suivantes ; ne pas produire
CR deux fois avec termios.
- Positionnement du curseur optimisé. Utilisation de CR, BS et NL quand c'est
plus court qu'un positionnement absolu.
- Rafraîchissement désactivé lors de la répétition d'une insertion
"1000ii<Esc>".
- Accélération de "d$" et "D" pour les lignes longues (efface tous les
caractères d'un coup plutôt que un par un).
- Tableau d'accès aux options par leur première lettre, plutôt qu'en cherchant
depuis le départ.
- Accélération importante des réglages des attributs de surbrillance spéciaux
en utilisant highlight_attr[] au lieu de chercher dans la chaîne
'highlight'.
- Le mode n'est pas affiché quand le rafraîchissement est désactivé.
- Lors de la modification d'une option, l'affichage n'est rafraîchi que si
c'est nécessaire.
- Amélioration des performances des commandes Ex en utilisant une table de
recherche sur le premier caractère.
Options :
'cinoptions' Ajout du drapeau 'g', pour les déclarations de portée C++.
'cpoptions' Ajout du drapeau 'E' : désactive la possibilité de copier,
couper, etc. des zones de texte vides. Par défaut, les copies
vides sont autorisées. Quand 'E' est inclus, "y$" sur une
ligne vide est maintenant considéré comme une erreur
(Compatible Vi).
Ajout du drapeau 'j' : ajoute deux espaces lors d'une fusion
uniquement après un '.', mais pas après un '?' ou un '!'.
Ajout du drapeau 'A' : ne produit pas le message ATTENTION.
Ajout du drapeau 'L' : si non inclus et que 'list' est activé,
le formatage à 'textwidth' fonctionne comme si 'list' était
désactivé.
Ajout du drapeau 'W' : permet à ":w!" de se comporter comme
Vi, c'est-à-dire de ne pas écraser les fichiers en lecture
seule ou appartenant à quelqu'un d'autre.
'highlight' Ajout du drapeau '@' : pour les caractères '@' après la
dernière ligne sur l'écran et '$' à la fin de la ligne quand
'list' est activé.
Ajout du drapeau 'i' : fixe la surbrillance pour 'incsearch'.
Par défaut, le groupe de surbrillance "IncSearch" est employé;
il est lié à "Visual".
Désactivation du drapeau 'h' dans 'highlight' (il n'était plus
utilisé depuis la version 3.0).
'guifont' IHMg Win32 seulement : ouvre le sélecteur de polices si fixé à
"*".
'guipty' Activé par défaut, car de nombreuses personnes en ont besoin.
'path' Peut contenir des jokers, et "**" pour une arborescence.
'shortmess' Ajout du drapeau 'I' : évite le message d'accueil.
'viminfo' Ajout du drapeau '%' : enregistre la liste des tampons dans le
fichier viminfo.
- Valeurs par défaut de 'maxmem' et 'maxmemtot' augmentées pour Unix et Win32.
La plupart des machines ont beaucoup plus de mémoire vive maintenant que les
prix ont chuté.
- Ajout de ":set all&", pour remettre toutes les options à leur valeur par
défaut. |:set|
Fichier d'échange :
- Aucun fichier d'échange n'est créé pour les fichiers en lecture seule. il
est créé lors du premier changement. Il est aussi créé quand la quantité de
mémoire utilisée depuis trop importante. |swap-file|
- Cacher le fichier d'échange, dans la mesure du possible. Sur Unix, le nom du
fichier d'échange est préfixé par un '.'. Lors de l'utilisation des noms de
fichiers longs, les versions DJGPP et Win32 ajoute également un '.', dans le
cas où un fichier serait édité sur un système de fichier monté sous Unix.
|:swapname| Sur MS-DOS, l'attribut de fichier "caché" n'est PAS activé, car
cela pose des problèmes avec share.exe.
- 'updatecount' est toujours non nul par défaut, même en mode compatible Vi.
Cela signifie que le fichier d'échange existe, et qu'il peut être utilisé
pour le recouvrement.
Marqueurs :
- Inclusion de ctags 2.0 (Darren Hiebert). La syntaxe pour les marqueurs
statiques est changée. Elle passe de
{marqueur}:{nomfich} {nomfich} {commande}
à
{marqueur} {nomfich} {commande};" fichier:
qui est à la fois plus rapide à analyser, plus concis et compatible Vi.
L'ancien format est toujours reconnu, à moins qu'il n'ait été désactivé dans
"src/feature.h" (voir OLD_STATIC_TAGS). |tags-file-format|
- Le complètement des marqueurs inclut maintenant les marqueurs statiques pour
d'autres fichiers, à la fin.
- Inclusion de "shtags" de Stephen Riehm.
- Quand un marqueur correspondant est trouvé, mais que le fichier n'existe
pas, la recherche d'une autre correspondance se poursuit. Pratique lors de
l'utilisation du même fichier de marqueurs (avec des liens) pour différentes
versions d'un code source.
- Une plus grande priorité est donnée à une correspondance globale dans le
fichier courant qu'à une correspondance globale dans un autre fichier.
Inclusion de xxd version 1.8 (Juergen Weigert).
Autocommandes :
- Les autocommandes VimLeave sont exécutées après l'écriture du fichier
viminfo plutôt qu'avant. |VimLeave|
- Possibilité de modifier les autocommandes durant leur exécution. Ceci permet
des autocommandes se modifiant elles-mêmes. (idée de Goldberg)
- Lors de l'utilisation d'autocommandes avec deux motifs ou plus, il n'était
pas possible d'étaler un ":if/:endif" sur deux lignes. Maintenant, toutes
les autocommandes correspondantes sont exécutées lors d'un seul
do_cmdline().
- Les autocommandes ne modifient plus les commandes répétées par ".".
- Les motifs de recherche sont restaurés après l'exécution des autocommandes.
Cela évite que la surbrillance 'hlsearch' soit modifiée par les
autocommandes.
- Lors de la tentative d'exécution d'une autocommandes, la correspondance du
motif est également testée avec le nom de fichier court. Utile quand le nom
de fichier court est différent du nom complet long (lien symbolique
expansé). |autocmd-patterns|
- Sortie affichée par ":autocmd" plus concise et plus claire.
- Expansion de <sfile> dans une autocommande lors de sa définition. |<sfile>|
- Ajout du drapeau "nested" à ":autocmd", autorisant l'imbrication.
|autocmd-nested|
- Ajout de l'argument [groupe] à ":autocmd". Prend la pas sur le groupe en
cours. |autocmd-groups|
- nouveaux événements :
|BufUnload| avant qu'un tampon soit déchargé ;
|BufDelete| avant qu'un tampon soit effacé de la liste des
tampons ;
|FileChangedShell| quand la date de modification d'un fichier a changé
suite à l'exécution d'une commande du shell ;
|User| autocommandes définies par l'utilisateur.
- Quand 'modified' était activé par une autocommande BufRead*, il était
ré-initialisé après coup. le ":set modified" est à présent mémorisé.
IHM graphique :
- Amélioration de la gestion des barres de défilement quand le
rafraîchissement est plus lent que la génération des événements les
concernant.
- "vim -u NONE" arrête aussi le chargement du gvimrc et des autres
initialisations de l'IHM. |-u|. Utilisez "-U" pour charger un autre fichier
gvimrc. |-U|
- Prise en charge de CTRL-C pour les commandes externes, ainsi que sur les
systèmes sur lesquels "setsid()" est supporté.
- Au démarrage de l'IHM graphique, la taille de la fenêtre est limitée à celle
de l'écran.
- Les menus par défaut sont lus depuis "$VIMRUNTIME/menu.vim". Cela permet la
personnalisation des menus par défaut. |menu.vim|
- Amélioration des menus par défaut. Ajout de Fichier/Imprimer, d'un menu
Fenêtre, d'un menu Syntaxe, etc.
- Ajout de priorité dans la commande ":menu". Vous pouvez maintenant placer
chaque élément de menu comme vous le souhaitez, indépendamment de l'ordre
dans lequel les menus sont définis. |menu-priority|
Affichage un avertissement dans l'écran d'accueil lors du lancement de la
version console Win32 sous Windows 95, car il y a des problèmes lors de
l'utilisation de cette version avec ce système. |win32-problems|
Ajout du drapeau 'e' à la commande ":substitute" : ne pas signaler l'absence
de correspondance (Campbell). |:s|
Lors de l'utilisation de commandes de recherche dans un mappage, seule la
dernière est conservée dans l'historique. Cela évite de remplir l'historique
avec des mappages un peu long.
Vim ignore les caractères après "ex", "view" et "gvim" lors de la
détermination du mode de démarrage. Cela autorise l'utilisation de "gvim5" et
similaires. |gvim| "gview" démarre l'IHM graphique en mode lecture seule.
|gview|
Lors du redimmensionnement des fenêtres, le curseur est conservé à la même
position relative, quand c'est possible. (Webb)
":all" et ":ball" ne ferment puis n'ouvrent plus la fenêtre pour un même
tampon. Cela évite de perdre les options, la liste des sauts et d'autres
infos.
L'argument "-f" de la ligne de commande est maintenant ignoré comme si Vim
était compilé sans l'IHM graphique.
En mode Visuel par bloc, le bouton droit de la souris repositionne le coin le
plus proche.
Modification des mappages par défaut pour MS-DOS et compagnie. Suppression des
mappages spécifiques à MS-DOS, utilisation des mappages Windows uniquement.
Ajout de Maj-Inser, Ctrl-Inser, Ctrl-Suppr et Maj-Suppr.
Modification des nombres dans la sortie produite par ":jumps", de façon à voir
où {quant} CTRL-O vous amène. |:jumps|
L'utilisation de "~" pour $HOME fonctionne maintenant pour tous les systèmes.
|$HOME|
Unix : en plus d'utiliser CTRL-C, Vim utilise également le caractère INTR pour
les réglages du tty. Certains ont INTR fixé à DEL.
Un <LF> est autorisé dans l'argument de la commande ":help" pour terminer
cette commande, afin qu'une autre commandes puisse suivre.
Taper "%" sur une ligne commençant par " #if" ne sautait pas au "#else"
correspondant. "#if", "#else", etc. ne sont plus reconnus pour '%' quand 'cpo'
contient le drapeau '%'. |%|
Amélioration du complètement avec CTRL-N, CTRL-P et CTRL-X en mode Insertion
|ins-completion| :
- Option 'complete' ajoutée ;
- Quand 'nowrapscan' est activé, et qu'aucune correspondance n'est trouvée,
rapporte le sens de la recherche dans le message d'erreur ;
- La répétition de CTRL-X ajoute les lignes/mots suivant la correspondance ;
- When adding-expansions XXX, accepte les correspondances d'un seul
caractère ;
- Les répétitions de CTRL-X CTRL-N ne gênent plus l'annulation, et "." répète
l'intégralité de l'insertion. Correction de l'impossibilité du retour
arrière sur un mot inséré avec CTRL-N.
Lors de la copie des caractères de la ligne suivante/précédente en mode
Insertion, avec CTRL-E ou CTRL-Y, 'textwidth' n'est plus utilisé. |i_CTRL-E|
Les commandes qui déplacent dans la liste des arguments, telles que ":n" ou
":rew", conservent la position sur curseur dans le fichier précédent
(essentiellement compatible avec Vi).
Vim mémorise maintenant les marques '< et '> pour chaque tampon. Cela corrige
le problème dû à l'effacement de lignes dans un tampon qui invalidait les
marques '< et '> dans un autre tampon. |'<|
Pour MS-DOS, Unix et OS/2 : quand $VIM n'est pas fixé, le chemin de
l'exécutable est utilisé. Quand le chemin de l'exécutable est utilisé pour
$VIM, "src/" est retiré s'il est présent. Cela doit permettre à Vim de trouver
les manuels et les fichiers de syntaxe quand il est démarré directement après
la compilation. |$VIM|
À la sortie du mode Visuel avec <Echap>, le curseur est placé au début de la
zone Visuel (comme après l'exécution d'un opérateur).
Versions Win32 et Unix : suppression de la limite des 1100 caractères pour les
commandes externes.
Ajout de la possibilité d'inclure un espace dans l'argument de la commande
":edit +commande", en le faisant précéder d'une contre-oblique. |+cmd|
Après un recouvrement, les autocommandes BufReadPost sont appliquées.
|:recover|
Ajout du support de la couleur pour "os2ansi", la console OS/2. (Slootman)
|os2ansi|
"%:p:h" est autorisé quand % est vide. |:_%|
Inclusion de "<sfile>" : nom du fichier dans la commande ":source". |<sfile>|
Ajout du caractère spécial "<Bslash>", qui constitue une facilité pour éviter
les contres-obliques multiples dans les mappages et les menus.
Dans une fenêtre d'aide, un double clic saute au marqueur sous le curseur
(comme CTRL-]).
<C-Left> et <C-Right> fonctionnement maintenant comme <S-Left> et <S-Right>,
avancant/reculant d'un mot (compatible avec Windows). |<C-Left>|
Suppression de la commande ":version" requise pour le fichier vimrc. Elle
n'était utilisée. Vous pouvez utiliser des ":if" pour prendre en charge les
différences entre les versions. |:version|
MS-DOS, Win32 et OS/2 : lors de la comparaison des noms de fichiers pour les
autocommandes, il n'est fait aucune différence entre les '/' et les '\' pour
les séparateurs de chemin.
Nouvelles options termcap :
"mb" : Clignotement. Uniquement disponible en l'assignant à l'une des autres
options de surbrillance. |t_mb|
"bc" : Caractère RetArr. |t_bc|
"nd" : Permet le déplacement du curseur vers la droite dans l'IHM graphique,
pour éviter la suppression d'une ligne de pixels dans le dernier
caractère gras. |t_nd|
"xs" : Surbrillance conservée malgré le remplacement des caractères, pour
htperm. Combinée avec 'weirdinvert'. Le mode Visuel fonctionne
maintenant pour hpterm. |t_xs|
Unix : l'horodatage des rustines et fichiers de sauvegarde est le même que
celui du fichier d'origine. (Hiebert)
Amiga : le mode Quickfix n'ouvre plus de nouvelle fenêtre. Les commandes shell
sont disponibles.
Ajout des rustines decmouse de David Binette. Il est maintenant possible
d'utiliser les souris Dec et Netterm, mais uniquement si cette fonctionnalité
est activée à la compilation.
Ajout du registre '#' : nom alternatif du fichier |quote#|. Affichage du
registre '#' avec la commande ":dis". |:display|
Suppression de ':' dans 'isfname' par défaut sur Unix. Vim vérifie tout de
même si le nom de fichier contient ":\\". Vérification pour MS-DOS également.
Ajout d'un quantificateur pour la commande "K" ; quand 'keywordprg' vaut
"man", le quantificateur est inséré dans la commande `man`. "2K" devient "!man
2 <cword>". |K|
Lors de l'utilisation de "gf" sur un nom avec un chemin relatif, "../" est
supprimé du nom du fichier, comme cela est déjà fait pour les noms de fichier
dans le fichier de marqueurs. |gf|
À la fin d'un enregistrement, le registre d'enregistrement n'est plus le
registre utilisé par défaut pour le collage.
Lors de l'utilisation de "!!", ne pas mettre ":5,5!" sur la ligne de commande,
mais plutôt ":.!". Ainsi que d'autres améliorations pour remplacer les numéros
de lignes par "." ou "$" quand c'est possible.
MS-DOS et compagnie : $VIM/viminfo renommé en $VIM/_viminfo. C'est plus
cohérent : .vimrc/_vimrc et .viminfo/_viminfo.
Pour les systèmes de fichiers insensibles à la casse pour les noms de fichiers
(MS-DOS, Amiga), la casse est ignorée lors du tri des noms de fichiers. Pareil
pour les noms de tampons.
Quand la lecture sur l'entrée standard ne fonctionne pas, lire sur la sortie
d'erreur (stderr) (utilise pour "foo | xargs vim").
Version MS-DOS 32 bits : remplacement de csdpmi3 par csdpmi4.
Modification de <C-Left> et <C-Right> pour passer un MOT au lieu d'un mot.
L'avertissement d'une modification de la date de dernière modification lors de
l'écrasement d'un fichier fonctionne également sur les systèmes non-Unix.
Unix : modification des paramètres par défaut de `configure` pour correspondre
aux valeurs par défaut du Makefile : inclusion de l'IHM graphique, de Perl et
de Python.
Certaines version de Motif nécessitent "-lXpm". Ajout de cette vérification
dans le `configure`.
"-L/usr/lib" n'est plus ajouté dans la commande d'édition de liens, elle pose
des problèmes sur certains systèmes.
==============================================================================
Changements à la compilation *compile-changes*
À la compilation, le choix d'un jeu de fonctionnalités minimal, normal ou
maximal est possible, en ne changeant qu'une seule ligne dans "src/feature.h".
La version Dos16 est compilée avec le minimum de fonctionnalités pour éviter
de manquer rapidement de mémoire. |dos16|
Les versions Win32, DJGPP et OS/2 disposent du maximum de fonctionnalités,
car ces systèmes ont suffisament de mémoire.
La version Amiga est disponible avec un jeu de fonctionnalités normal et
maximal.
Ajout de `make test` dans le Makefile de la version Unix. Cela permet une
vérification rapide du fonctionnement correct de la plupart de commandes
« normales ». Il teste également quelques commandes spécifiques.
Ajout de setlocale() avec le support des pages de codes pour la version DJGPP.
autoconf :
- Ajout de la vérification autoconf pour -lXdmcp ;
- Inclusion de la vérification pour -lXmu, il n'est plus nécessaire d'éditer
le Makefile pour cela ;
- Passage à autoconf 2.12 ;
- Ajout de la vérification pour <poll.h> dans `configure`. Il semble que cela
soit nécessaire pour inclure Perl sous Linux ?
- termlib est maintenant testé avant termcap ;
- Ajout des tests de `configure` pour strncasecmp(), stricmp() et strnicmp().
Ajout de vim_stricmp() pour le cas où aucune bibliothèque ne propose la
fonction stricmp() ;
- Utilisation de "datadir" dans `configure`, au lieu de notre propre
vérification pour HELPDIR.
Suppression de "make proto" dans "Makefile.manx". Impossible de le construire
sans de nombreux #ifdef.
Suppression de "proto/" dans les chemins de "proto.h". Nécessaire pour le
portage Mac.
Changement radical de "Makefile.mint". Il inclut à présent le Makefile Unix.
Ajout du support pour Dos16 dans "Makefile.b32" ("Makefile.b32" renommé en
"Makefile.bor").
Tous les fichiers sources sont à présent édités avec des tabulations de 8
espaces plutôt que 4, ce qui est préférable pour le débogage et l'utilisation
d'autres outils. 'softtabstop' est fixé à 4, pour faciliter l'édition.
Unix : ajout du script "link.sh", qui supprime quelques librairies superflues
de la commande d'édition de liens.
Les digrammes HPUX ne sont plus utilisés par défaut, mais uniquement si
HPUX_DIGRAPHS est défini. |digraphs-default|
==============================================================================
Corrections de bogues *bug-fixes*
NOTE : Certaines de ces corrections peuvent n'avoir été appliquées qu'aux
versions de tests crées après la version 4.6, mais avant la version
5.0.
Lors d'un ":bdel", essayer d'aller au prochain tampon chargé. Ne pas revenir
au début de la liste des tampons.
mch_isdir() sur Unix retournait TRUE pour "" sur certains systèmes.
Win32 : 'shell' fixé à "mksnt/sh.exe" perturbe les commandes ":!". Ne pas
utiliser de contres-obliques dans les noms de fichiers temporaires.
Sur Linux, avec un système de fichiers FAT, messages "file xxx changed since
editing started" fallacieux, car l'horodatage est arrondi à deux secondes de
manière inattendue.
Plantage dans l'IHM graphique, lors de la sélection d'un mot (double clic)
puis de son extension jusqu'à une ligne vide.
Sur les systèmes pour lesquels isdigit() ne prend pas en charge plus de 255
caractères, get_number() provoquait un plantage lors du déplacement de la
souris pendand l'invite pour le recouvrement.
En mode Insertion, "CTRL-O P" laissait le curseur sur le dernier caractère
inséré. Maintenant, le curseur est laissé après le dernier caractère collé.
Quand quickfix trouvait une erreur d'un type autre que 'e' ou 'w', cette
dernière n'était jamais affichée.
Fixer 'errorfile' dans un vimrc prenait le pas sur l'argument
"-q ficherreurs".
Certains systèmes créent un fichier lors de la génération d'un nom de fichier
temporaire. Le filtrage créait alors un fichier de sauvegarde pour cela, qui
n'était jamais effacé. A présent, aucun fichier de sauvegarde n'est produit
lors d'un filtrage.
simplify_filename() pouvait supprimer ".." après un lien, faussant le nom de
fichier résultant. simplify_filename() fonctionne aussi sur MS-DOS maintenant.
Ne pas l'utiliser sur Amiga, car il ne dispose pas de "../".
otherfile() n'était pas fiable avec les liens, il pouvait avoir l'impression
d'écrire/lire des fichiers différents, alors qu'il s'agissait du même.
Le collage avec la souris en mode Remplacement ne remplaçait rien du tout.
Calcul erroné de la hauteur de la fenêtre lors du redimensionnent de la
fenêtre avec une autocommande (pouvait provoquer un plantage).
":s!foo!bar!" était impossible (compatible Vi).
do_bang() libérait deux fois la mémoire lors d'appels récursifs, à cause des
autocommandes (test11). Merci Electric Fence !
"v$d" sur une ligne vide ne supprimait pas le message --VISUEL -- de la ligne
de commande, et inversait le curseur.
":mkexrc" ne testait pas l'échec de l'ouverture du fichier, provoquant un
plantage (Felderhoff).
mch_write() sur Win32 écrivait au delà du tampon statique, ce qui faisait que
des touches du terminal n'étaient plus reconnues. Concerne les versions
console et IHM graphique.
IHM graphique Athena : plantage lors de la suppression d'un élément de menu.
Vim ne plante plus, mais l'annulation d'un menu est toujours un problème.
Toujours désactiver l'option 'list' pour la fenêtre d'aide.
Quand 'scrolloff' était différent de zéro, 'showmatch' pouvait signaler la
correspondance sur la mauvaise ligne et le défilement de la fenêtre (Acevedo).
Après un ":set all&", 'lines' et 'ttytype' restaient inchangés, car les
valeurs par défaut n'étaient jamais fixées. Maintenant, les valeurs par défaut
de 'lines' et 'columns' sont fixées après la détection de la taille de la
fenêtre. 'term' et 'ttytype' par défaut sont fixées lors de la détection du
type de terminal.
Pour les systèmes non-Unix (la plupart), ne pas ajouter de caractères
invalides aux noms de fichiers lors de l'expansion. Correction de l'erreur
"cannot open swapfile" lors d'un ":e *.burp", et qu'ancune correspondance
n'existe.
Dans l'IHM graphique X11, le dessin d'une partie du curseur cachait le texte.
Maintenant, le texte est dessiné par dessus le curseur, comme lorsqu'il
remplit le bloc. (Seibert)
Lors d'un démarrage avec "-c cmd -q ficherreur", le curseur restait sur la
ligne 1. À présent, un ":cc" est effectué après l'exécution de "cmd".
":ilist" n'ignorait jamais la casse, même quand 'ignorecase' était activé.
Faire "vim -r file" pour un fichier en lecture seule puis faire une
modification sur-affichait le message ATTENTION en mode Insertion, avec un
affichage mélangé jusqu'à l'appui sur <Echap>. Ne plus afficher le message
ATTENTION après le recouvrement d'un fichier.
Impossible d'annuler l'abréviation ":ab #i #include".
Le complètement avec CTRL-L (correspondance la plus longue possible) sur la
ligne de commande ne fonctionnait pas correctement sur les systèmes
insensibles à la casse (MS-DOS, Windows, etc.). (Suggéré par Richard Kilgore)
Pour les terminaux pouvant masquer le curseur (entrée termcap "vi"), le
redimensionnement de la fenêtre provoquait la disparition du curseur.
L'utilisation d'une marque invalide dans une adresse Ex ne provoquait pas
l'abandon de la commande.
Avec 'smarttab' activé, 'shiftround' était utilisé lors de l'insertion d'une
tabulation après un espace. À présent, le décalage est toujours arrondi à un
taquet de tabulation.
Positionnement des marques '[ et '] pour les commandes ":copy", ":move",
":append", ":insert", ":substitute" et ":change". (Acevedo)
"d$" sur une ligne vide provoquait une erreur, même quand 'E' n'était pas
inclus dans 'cpoptions'.
Les fichiers de l'aide étaient enregistrés dans la liste des tampons du
fichier viminfo sans chemin.
IHM graphique : l'affichage du curseur n'était pas synchronisé avec les autres
affichages. cela provoquait de nombreuses erreurs d'affichage. Par exemple,
quand les deux dernières lignes d'un fichier commençaient avec des espaces,
"dd" sur la dernière ligne copiait le texte sur la (nouvelle) dernière ligne.
Win32 : il était nécessaire de taper CTRL-MAJ-- pour obtenir CTRL-_.
IHM graphique : faire avancer le curseur sur du texte gras retirait une
colonne de pixels gras.
IHM graphique X11 : quand un caractère gras dans la dernière colonne défilait
vers le haut ou le bas, une colonne de pixels n'était pas copiée.
L'utilisation de <BS> pour déplacer le curseur vers la gauche efface parfois
un caractère. Utilisation de l'entrée termcap "le" pour cela à présent.
Le complètement de mots-clefs avec les exprat ne fonctionnait pas, par
exemple : "b.*crat".
Correction : avec CTRL-O pour sauter dans un autre fichier, le curseur pouvait
se retrouver juste après la ligne.
Amiga : '$' ne faisait pas partie des caractères reconnus comme des jokers,
causant parfois la non-expansion de "$VIM".
":change" n'ajustait pas les marques destinées aux lignes effacées.
":help [range]" ne fonctionnait pas, de même que [pattern], [count] et
[quotex].
Lors de l'indentation automatique du C ('cindent'), la saisie de
"classe::méthode" n'alignait comme un label quand le second ':' était tapé.
Lors de l'insertion d'un <CR> avec 'cindent' activé (ainsi qu'un paquet
d'autres options), le curseur était placé au mauvais endroit.
'cindent' se trompait pour les lignes se terminant par '}'.
'cindent' se trompait après un "else {".
Lors de l'édition de la ligne de commande dans l'IHM graphique, il était
impossible d'utiliser la souris pour le texte de la ligne de commande.
Au coupage de lignes, les marques dans la pile des marqueurs étaient seulement
ajustées pour la fenêtre courante, pas pour les autres fenêtre sur le même
tampon.
La tentative de reconnaissance d'un marqueur pouvait trouver la fonction
"une_fonc" au lieu de "fonc", qui était en fait recherchée.
Les noms de fichiers des marqueurs relatifs au fichier courant ne
fonctionnaient pas.
":g/motif2/s//motif2/g", permettant de rapporter le nombre de substitutions,
provoquait le défilement vers le haut. À présent, il n'est plus nécessaire de
presser <CR>.
IHM graphique X11 : sélectionner un texte pouvait provoquer un plantage.
Version MS-DOS 32 bits : CTRL-C dans les commandes externes tuait Vim. Quand
SHELL valait "sh.exe", les commandes externes ne fonctionnait pas. Suppression
de l'utilisation de "command.com", plus besoin de 'shellquote'.
Correction du plantage lors d'un ":g/pat/i".
Correction du plantage (éventuel) de l'IHM graphique X11 lors de la sélection.
Un pointeur était retourné sur la pile vers une fonction de call-back, elle
est maintenant statique.
L'utilisation de "#" et "*" avec un opérateur ne fonctionnait pas. Par
exemple : "c#".
L'expansion de la ligne de commande ne fonctionnait pas correctement après
":*". (Acevedo)
Activer 'weirdinvert' provoquait une surbrillance erronée dans l'IHM
graphique.
":e +4 #" ne fonctionnait pas, car le "4" était dans de la mémoire non allouée
(pouvait provoquer un plantage).
La position du curseur était mauvaise pour "e #", après que ":e #" ait échoué,
à cause des modifications dans le tampon.
Lors d'un ":buf N", puis aller à un tampon qui était édité avec ":view", le
drapeau lecture seule était remis à zéro. À présent, une différence est faite
entre ":e fichier" et ":buf fichier" : ne (dés)activer 'ro' que pour la
première de ces deux commandes.
Éviter l'invite Appuyez-sur-Entrée quand il n'est pas possible d'écrire le
fichier viminfo en sortant.
Lors de l'affichage des messages d'erreur dans le terminal dans lequel l'IHM
graphique a été démarrée, les codes d'échappements étaient transmis au
terminal. Dans un xterm, c'était visible au '$' après le message.
La souris ne fonctionnait pas directement après ":gui", car full_screen
n'était pas activé, ce qui faisait que starttermcap() ne fonctionnait pas.
'incsearch' ne faisait pas défiler la fenêtre de la même manière que la
recherche en cours. Avec 'nowrap' activé, la recherche incrémentale ne
montrait pas une correspondance quand elle dépassait les bords de l'écran.
Maintenant, la totalité de la correspondance est montrée, plutôt que seulement
la position du curseur (quand c'est possible).
":unmap", ":unab" et ":unmenu" n'acceptaient pas de double-apostrophe, il
était reconnu comme le début d'un commentaire. C'est à présent compatible avec
Vi.
Utiliser <Up><Left><Left><Up> dans la ligne de commande quand il n'existe pas
de prédécesseur dans l'historique insère un NUL dans la ligne de commande.
"i<Esc>" sur une tabulation dans la colonne 0 laisse le curseur mal placé.
IHM graphique Motif : lors de l'ajout de beaucoup de menus, la barre des menus
passe sur deux lignes. Effacer les éléments de menu, réduire le nombre de
lignes fonctionne également à présent.
Avec ":g/pat/s//foo/c", une correspondance dans la première ligne se trouvait
défilée en dehors de l'écran, vous ne pouviez donc pas la voir.
Avec ":s//c" et 'nowrap' activé, une correspondance pouvait se trouver au-delà
du côté de l'écran, vous ne pouviez donc pas la voir.
Quand 'helpfile' était fixée à un chemin relatif de manière statique dans
"feature.h", Vim plantait. mch_Fullname peut maintenant prendre en charge des
noms de fichiers situés en mémoire en lecture seule. (Lottem)
Avec CTRL-A ou CTRL-@ en mode Insertion, il pouvait se produire des effets
étrange si CTRL-D suivait. Également, lors de la répétition du texte inséré
incluant "0 CTRL-D" ou "^ CTRL-D", cela ne fonctionnait pas. (Acevedo)
L'utilisation de CTRL-D après CTRL-E ou CTRL-Y en mode Insertion ayant inséré
un '0' ou un '^', supprimait le '0' ou '^' et diminuait le renfoncement.
La commande "2".p" provoquait l'exécution du texte précédemment inséré comme
une commande. (Acevedo)
La répétition de l'insertion de "CTRL-V 048" aboutissait à l'insertion de
"^@".
Répéter le complètement en Insertion pouvait échouer s'il se trouvait des
caractères spéciaux dans le texte. (Acevedo)
":normal /chaîne<CR>" provoquait le défilement de l'écran. À présent, toutes
les commandes normales sont exécutées sans message de défilement.
La restauration de CTRL-E ou CTRL-Y en mode Insertion interprétait les
caratères spéciaux comme des commandes.
L'enroulement des lignes avec 'tw' était effectué un caractère XXX off for
insert expansion.
La fonction buffer_exists() ne fonctionnait pas correctement pour les noms de
tampons contenant un lien symbolique (par exemple buffer_exists(#)).
Suppression de la construction "MOTIF_COMMENT" du Makefile. Cela fonctionne
maintenant avec le `make` de FreeBSD, et probablement avec celui de NeXT
également.
Les correspondances avec 'define' et 'include' prennent maintenant en compte
la valeur de 'ignorecase'. (Acevedo)
Quand un fichier est affiché dans deux fenêtres, la sélection Visuel
mélangeait la position du curseur entre la fenêtre courante et l'autre
fenêtre.
Lors d'un ":e file" dans un fichier de l'aide, l'option 'isk' n'était pas
réinitialisée correctement, à cause de la ligne de mode dans le fichier de
l'aide.
Lord d'un ":e!", un curseur dans une autre fenêtre sur un même tampon pouvait
devenir invalide, provoquant les erreurs "ml_get: invalid lnum".
Correspondance des noms de tampons quand l'expansion donne un chemin différent
que celui du nom non étendu. (Brugnara)
Les mappages du mode Normal ne fonctionnaient pas après un opérateur. Par
exemple, avec ":map Q gq", "QQ" ne fonctionnait pas.
Quand ":make" ne retournait aucune erreur, un message d'erreur "No Errors"
était affiché (ce qui cassait les mappages).
Lors du ":source"ment d'un fichier, la longueur des lignes était limitée à
1024 caractères. CTRL-V devant un <EOL> n'était pas pris en compte de manière
compatible avec VI. (Acevedo)
Sortie inattendue de l'IHM graphique X11, causée par l'événement
SAVE_YOURSELF. (Heimann)
CTRL-X CTRL-I ne trouvait qu'une seule correspondance par ligne. (Acevedo)
Lors de l'utilisation illégale de la touche CTRL-X en mode Insertion, le
message de mode CTRL-X restait à l'écran.
Finalement parvenu à ignorer l'élément de menu "Quit" du gestionnaire de
fenêtre ! À présent, Vim ne sort que s'il n'y a aucun tampon modifié.
Tenter de démarrer l'IHM graphique quand $DISPLAY n'est pas définie aboutit à
un plantage.
Quand $DISPLAY n'est pas fixée et que gvim démarre vim, le titre est restauré
à "Thanks for flying Vim".
Quand $DISPLAY n'est pas fixé, lancer "gvim" (se repliant sur vim) puis
sélectionner du texte avec la souris provoquait un plantage.
"J", avec 'joinspaces' activé, sur une ligne se terminant par ". ", provoquait
l'insertion d'un espace en trop. (Acevedo)
En mode Insertion, un CTRL-R {nomreg} n'insérant rien laissait le '"' à
l'écran.
":z10" ne fonctionnait pas. (Clapp)
"help "*" ne fonctionnait pas.
Renommage de nombreuses fonctions, pour éviter les problèmes avec l'espace de
nom POSIX.
Lors de l'ajout de caractères sur une ligne, puis de son enroulement, les
lignes suivantes n'était pas forcément décalées vers le bas (par exemple après
un saut de marqueur).
CTRL-E, avec 'so' activé et le curseur sur la dernière ligne, ne déplace plus
le curseur tant que la dernière ligne est à l'écran.
Quand il y a deux fenêtres, faire "^W+^W-" dans la fenêtre du bas pouvait
provoquer la duplication de la ligne de ligne de statut (rafraîchissement
incorrect).
Cette commande bloquait : ":n `cat`". Maintenant, stdin de la commande externe
est connectée à /dev/null, lors de l'expansion.
Correction de l'erreur lalloc(0,) pour ":echo %:e:r". (Acevedo)
L'argument "+commande" pour ":split" ne fonctionnait pas si aucun nom de
fichier n'était spécifié.
Lors de la sélection dans l'IHM graphique de texte étant la sortie d'une
ligne de commande ou d'une commande externe, l'inversion persistait parfois.
IHM graphique : l'argument "-mh 70" ne fonctionnait pas. Maintenant, quand
'menuheight' est spécifié, il n'est plus modifié.
IHM graphique : l'utilisation des barres de défilement ou de la souris pendant
l'exécution d'une commande externe affichait des caractères aléatoires.
'showmatch' sautait parfois à la mauvaise position. Cela était provoqué par un
appel à findmatch() durant le rafraîchissement de l'affichage (quand la
coloration syntaxique était activée).
Le motif de recherche "\(a *\)\{3}" ne fonctionnait pas correctement, et
correspondant avec "a a". Problème avec brace_count qui n'était pas
décrémenté.
L'expansion des jokers ajoutait trop de noms de fichiers ne correspondant pas.
Quand 'iskeyword' contient des caractères comme '~', '*' et '*', cela ne
fonctionne pas correctement. (Acevedo)
Sur Linux, sur un système de fichiers FAT, la date de modification peut varier
d'une seconde. Éviter un avertissement "fichier modifié" à cause d'une seule
seconde de différence.
Lors de l'utilisation du basculement de pages dans un xterm, Vim plaçait le
curseur sur la dernière ligne de la fenêtre lors de la sortie. Suppression du
placement du curseur pour les commandes ":!" également.
La commande ":g/pat/p" recouvrait (partiellement) la commande. À présent, la
sortie est sur une ligne distincte.
Quand 'ic' et 'scs' sont activés lors de la recherche de "Mot-clef", les
correspondances ignorant la casse étaient aussi en surbrillance.
"^" sur une ligne avec seulement des caractères blancs plaçait le curseur
au-delà de la fin de la ligne.
Lors de la suppression de caractères devant l'endroit où l'insertion avait
débuté ('bs' == 2), l'utilisation des abréviations était impossible.
CTRL-E à la fin du fichier plaçait le curseur en-dessous du fichier quand 'so'
était différent de zéro en mode Visuel. CTRL-E ne fonctionnait pas avec une
valeur importante pour 'so' et que la ligne sous la fenêtre était enroulée.
CTRL-E à la fin du fichier avec 'so' différent de zéro provoquait un saut
up-down XXX.
":retab" ne fonctionnait pas bien avec 'list' activé.
Amiga : lors de l'insertion de caractères dans la dernière ligne à l'écran,
provoquant son enroulement, l'écran était sali. Il apparaît qu'un '\n' sur la
dernière ligne de provoque pas toujours le défilement vers le haut.
En mode Insertion, "0<C-D><C-D>" effaçait un caractère supplémentaire, car Vim
supposait sur le "0" était toujours là. (Acevedo)
"z{quant}l" ignorait le quantificateur. Pareil pour "zh" et compagnie.
(Acevedo)
"S" avec 'autoindent' désactivé n'effaçait pas l'espace initial.
"/<Tab>" arrivait sur le mauvais caractère avec 'incsearch' activé.
Poser la question oui/non pouvait provoquer une invite Appuyez-sur-Entrée.
Lors de l'édition d'un fichier constitué d'une unique ligne longue (> 4100
caractères), faire des modifications provoquait diverses erreurs et plantages.
La version DJGPP ne pouvait pas mémoriser les lignes longues (> 64000) pour
l'annulation.
"yw" sur le dernier caractère du fichier ne fonctionnait pas. Correction aussi
de "6x" à la fin de la ligne. "6X" au début d'une ligne ne fonctionnait pas,
mais ne cassait aucun mappage. En général, un mouvement pour un opérateur ne
bippe pas ou ne casse pas de mappage, mais quand il n'y a rien à traiter un
bip est émis (compatible Vi).
"m'" et "m`" place maintenant la marque '' à la position du curseur.
Unix : la remise à zéro des signaux pour les programmes externes ne
fonctionnait pas car SIG_DFL et NULL sont les mêmes ! Avec
"!!yes|dd count=1|", la commande `yes` continuait de tourner.
Partiellement corrigé : IHM graphique Unix : la saisie en avance pendant
l'exécution d'une commande externe était perdue. À présent, elle n'est plus
perdue tant que la commande produit une sortie.
Taper <S-Tab> en mode Insertion, quand il n'est pas mappé, insérait "<S-Tab>".
À présent, cela fonctionne comme un <Tab> normal, tout comme <C-Tab> et
<M-Tab>.
Le rafraîchissement de la règle ne testait pas l'ancienne valeur correctement
(causant des avertissements UMR avec Purify).
Index de tableau négatif dans finish_viminfo_history().
":g/^/d|mo $" effaçait toutes les lignes. La commande ":move" retire à présent
la marque de ":global" des lignes déplacées.
L'utilisation de "vG" alors que la dernière ligne dans la fenêtre était une
ligne "@" ne mettait pas à jour l'affichage correctement. Seul "v" affichait
les lignes "~".
"daw" sur le dernier caractère du fichier, quand c'est un espace, déplaçait le
curseur au-delà de la fin de la ligne.
Quand 'hlsearch' était activé ou désactivé, seul le tampon courant était
rafraîchi, alors que cela concerne toutes les fenêtres.
CTRL-^, plaçant le curseur quelque part entre un demi et un écran et demi plus
bas dans le fichier, plaçait le curseur en bas de la fenêtre, au lieu de la
moitié.
Lors du défilement vers le haut pour la commande ":append", toutes les
fenêtres n'étaient pas rafraîchies correctement.
Avec 'hlsearch' activé, et une auto-indentation en surbrillance, presser
<Echap> ne retirait pas la surbrillance, malgré la suppression de
l'indentation.
Avec 'ru' activé et 'nosc', l'utilisation de "$j" affichait une règle erronée.
Sous Xfree 3.2, Maj-Tab ne fonctionnait pas (utilisation d'un mauvais symbole
de touche).
Mapper <S-Tab> ne fonctionnait pas. Modifications des traductions des touches
pour utiliser le code de touche le plus court possible. Cela rend les
translations termcode et les mappages plus cohérents. À présent, tous les
modificateurs fonctionnent dans toutes les combinaisons, pas seulement avec
<Tab>, mais aussi avec <Space>, <CR>, etc.
Sous Unix, restaurer trois signaux supplémentaires. Vim intercepte maintenant
SIGINT, par conséquent CTRL-C en mode Ex ne provoque plus la sortie de Vim.
""a5Y" copiait 25 lignes au lieu de 5.
"vrxxx<Esc>" sur une ligne vide ne pouvait pas être annulé.
Un CTRL-C interrompant un ":make" empêchait la lecture la lecture du fichier
des erreurs (gênant si vous vouliez consulter les erreurs produites
jusque-là).
":0;/motif" ne trouvait pas "motif" dans la ligne 1.
La recherche de "/test/s+1" au premier caractère du fichier affichait le
message de bouclage, ou ne fonctionnait pas du tout avec 'nowrapscan'.
Bogue dans l'historique de viminfo. Plantage possible lors de la sortie.
":print" ne plaçait pas le curseur sur le premier non-blanc dans la ligne.
":0r !cat </dev/null" laissait le curseur dans la ligne 0, avec des effets
bien étranges.
Avec 'showcmd' activé et 'timeoutlen' fixé à quelques secondes, l'astuce pour
déplacer le curseur vers la gauche ne fonctionnait pas.
Les tty AIX étaient restaurés en cs5 au lieu de cs8 (Winn).
Le complètement des noms de fichier ne fonctionnait pas pour les versions de
"zsh" mettant des espaces entre les noms de fichiers plutôt que des NUL.
"XawChain*", modifié en "XtChain*", devrait fonctionner sur plus de systèmes.
Ajout de quelques corrections pour le mode rightleft [N.D.T. : écriture de
droite à gauche] (Lottem).
Ne pas demander d'Appuyez-sur-Entrée quand l'IHM graphique est démarrée et que
des messages d'erreur sont affichés.
La tentative d'édition d'un fichier dans un répertoire n'existant pas revenait
à l'édition de "Pas de fichier".
"gqap" pour formater un paragraphe rafraîchissait trop.
Avec 'hlsearch' activé, seule la fenêtre courante était rafraîchie pour un
nouveau motif de recherche.
Parfois, les messages d'erreur au démarrage ne causait aucune invite
Appuyez-sur-Entrée, à cause d'autocommandes contenant une ligne vide.
Il était possible de sélectionner une partie de la fenêtre dans la bordure,
sous la ligne de commande.
Les marques '< et '> n'étaient pas placées correctement après une sélection en
mode Visuel par lignes.
Lors de la conversion d'un argument de l'aide vers "CTRL-x", préfixer ou
suffixer avec un '_', quand c'est possible.
Le mode Visuel par bloc devenait incorrect lors d'un déplacement vertical sur
un caractère spécial (affiché comme deux caractères d'écran).
"struct option" renommé en "struct vimoption" pour éviter les problèmes de
noms avec la fonction getopt() de GNU.
":abclear" ne fonctionnait pas (contrairement à "iabclear" et "cabclear").
Avec 'nowrap', l'écran n'était pas toujours rafraîchi correctement.
"vim -c split fichier" affichait des lignes supplémentaires.
Après le démarrage de l'IHM graphique, Vim recherchait "gui" dans termcap.
Avec 'hls' activé, la recherche de "^$" provoquait un plantage.
Avec 'hls' activé, une erreur dans la dernière exprat posait des problèmes.
Unix : ne produire un <EOL> supplémentaires à la sortie seulement quand
quelque chose a été produit dans l'écran alternatif, ou quand il y a un
message qui a besoin d'être effacé.
"/a\{" faisait des choses étranges, selon les recherches précédentes.
"c}" ne rafraîchissait qu'une seule ligne (avec -u NONE).
Avec les mappages, Ctrl-Alt-A était affiché <M-^A> au lieu de <MC-A>, tandis
que ":map" n'accepte que <MC-A>. À présent, <M-C-A> est affiché.
Unix : lors de l'utilisation de noms de fichiers complets dans un fichier de
marqueurs contenant un lien, avec 'hidden' activé, et qu'un saut a lieu vers
un marqueur du fichier courant, un message ATTENTION erroné était donné.
Résolu en étendant toujours les noms de fichiers, même ceux débutant par '/'.
La surbrillance 'hlsearch' des caractères spéciaux (par exemple une
tabulation) ne les mettait pas tous en surbrillance.
"r<CR>" ne fonctionnait pas correctement sur le dernier caractère d'une ligne.
Parfois, le redimensionnement de la fenêtre ou un autre signal provoquait une
boucle sans fin impliquant set_winsize().
"vim -r" ne fonctionnait pas, Vim se bloquait (utilisation de tgetent() alors
que 'term' est vide).
"gk" avec 'nowrap' activé déplaçait deux lignes vers le haut.
Quand les fenêtres étaient partagées, un message provoquant un défilement
salissait l'une des fenêtre, qui nécessitait alors un CTRL-L.
Boucle sans fin possible lors de l'utilisation de commandes shell dans l'IHM
graphique.
Les menus définis dans le vimrc étaient supprimés lors du démarrage de l'IHM
graphique.
Plantage lors du collage avec la souris en mode Insertion.
Plantage avec "unmenu *" dans le gvimrc sous Athena.
"5>>" décalait 5 lignes 5 fois, au lieu d'un seule fois.
CTRL-C lors d'une invite pendant un ":global" n'interrompait pas.
Avec 'so' différent de zéro, le défilement d'une barre de défilement
complètement vers le bas provoquait beaucoup de clignotement.
IHM graphique : l'ID d'une barre de défilement doit être "long" sur DEC Alpha.
Certaines fonctions appelait vim_regcomp() dans fixer reg_magic, ce qui
pouvait mener à une imprévisibilité sur le caractère « magic » de la fonction.
Plantage lors d'un clic autour de la ligne de statut, possibilité d'obtenir
une sélection avec une plage inversée.
Lors du coupage caractère par caractère de plus d'une ligne, le dernier
caractère n'était pas effacé.
IHM graphique : la ligne de statut pouvait se trouver recouverte lors du
déplacement rapide la barre de défilement (ou quand 'wd' est différent de
zéro).
Un <Echap> à la fin d'une commande ":normal" provoquait une attente de fin de
code de terminal. À présent, un code de terminal n'est pas reconnu quand son
émission provient d'un mappage ou d'une commande ":normal".
Inclusion des rustines de Robert Webb pour l'IHM graphique. La disposition des
fenêtres est maintenant réalisée dans Vim, au lieu de laisser le gestionnaire
de disposition le faire. Cela permet à Vim de fonctionner avec Lesstif !
Avertissement UMR dans set_expand_context().
Fuite de mémoire : la liste b_winlnum n'était jamais libérée.
Suppression du code TIOCLSET/TIOCLGET du fichier "os_unix.c". Cela modifiait
certains réglages du terminal, et il semble que cela ne faisait rien de bon.
(suggéré par Juergen Weigert)
La règle recouvrait le message "est un répertoire". Au démarrage, avec
'cmdheight' > 1, le premier message pouvait persister dans la dernière ligne.
Suppression du prototype de putenv() de "proto.h", elle est déjà définie dans
"osdef2.h.in".
En mode Remplacement, lors d'un mouvement du curseur suivi d'un retour
arrière, des caractères erronés étaient insérés.
L'IHM graphique Win32 testait trop souvent CTRL-C, ce qui la ralentissait.
Suppression des mappages MS-DOS qui étaient déjà couverts par des commandes.
Lors de la sélection Visuel de toutes les lignes d'un fichier, le curseur
étant sur la dernière ligne, la commande "J" provoque des erreurs ml_get. Dû à
un problème avec le défilement vers le bas lors du rafraîchissement.
Lors d'une opération sur des lignes, suivie par une opération avec un clic de
souris, cette dernière s'effectuait aussi ligne par ligne, au lieu de
caractère par caractère.
Avec 'list' activé, la colonne de la règle était fausse.
Message d'erreur fallacieux pour "/\(b\+\)*".
Lors de la sélection Visuel de plusieurs lignes, le message de ":w fichier"
disparaissait au rafraîchissement de l'écran.
":set <M-b>=^[b", suivi de l'insertion de "^[b", attendait un autre caractère.
Puis insérait "<M-b>" au lieu du vrai caractère <M-b>. Tentait d'insérer
K_SPECIAL x NUL.
CTRL-W ] n'utilisait pas le quantificateur pour fixer la hauteur de la
fenêtre.
IHM graphique : l'argument de la ligne de commande "-font" ne recouvrait pas
le réglage de 'guifont' par le gvimrc. (Acevedo)
IHM graphique : le presse-papiers n'était pas utilisé pour "*y". Ainsi que
d'autres différences entre Win32 et X11 pour le presse-papiers corrigées
(Webb).
Sauter d'un fichier d'aide à un autre, avec 'compatible' activé, retirait le
drapeau 'help' du tampon.
Le bit "droit d'écriture" pouvait changer lors de l'utilisation de ":w!" pour
un fichier en lecture seule.
Il y avait une attente avec CTRL-O n en mode Insertion, parce que le motif de
recherche était affiché.
Réduction de l'attente de 10 à 3 secondes, pour permettre la lecture du
message. Il semblait ne rien se passer.
":recover" trouvait deux fois le même fichier d'échange.
IHM graphique : "*yy ne fonctionnait que la deuxième fois (lors du collage
dans un xterm).
Version DJGPP (Dos32) : les drapeaux systèmes étaient effacés.
Version Dos32 : les caractères de soulignement étaient parfois remplacés par
des y-tréma (Levin).
La version 4.1 de ncurses ne prend pas en charge tputs("", ...). Éviter
d'appeler tputs() avec une chaîne vide.
<S-Tab> dans la ligne de commande fonctionnait comme CTRL-P quand aucun
complètement n'était commencé. Maintenant, cela provoque le complètement,
dernière correspondance d'abord.
Unix : après un "su", il était possible d'obtenir un message "Impossible
d'écrire viminfo" gênant. À présent, le fichier viminfo est écrasé, et
l'utilisateur retourne à son fichier original.
":set term=builtin_gui" démarrait l'IHM graphique de la mauvaise manière. Ce
n'est plus permis maintenant. Mais "vim -T gui" la démarre correctement.
IHM graphique : le triple clic après une ligne ne mettait que le dernier
caractère dans la sélection, quand il s'agit d'un mot d'un seul caractère.
Quand une fenêtre est plus grande que l'écran, le défilement des messages
était mauvais (par exemple ":vers" ou ":hi"). Même chose quand la partie basse
de la fenêtre était recouverte par une autre fenêtre.
Lors de l'utilisation d'une mauvaise option, seul un message d'erreur est
affiché, de façon à éviter le défilement de l'écran dû au manuel le sorte de
l'écran.
Lors d'une sortie suite à une incapacité à lire l'entrée standard, ne
conservait pas correctement les fichiers d'échange.
Sélectionner visuellement tous les caractères dans plus d'une ligne, puis
appuyer sur "x" ne laissait pas de ligne vide, alors qu'il en restait une avec
une seule ligne.
Le message avec lequel une autocommande s'exécutait parasitait le message
d'écriture du fichier (événement FileWritePost).
"vim -h" incluait "-U" même quand l'IHM graphique n'était pas disponible, et
"-l" quand lisp n'était pas disponible.
Plantage avec ":he <C-A>" (ligne de commande plus longue que l'écran).
":s/this/that/gc", suivi de deux fois "y", puis une annulation, réinitialisait
l'option 'modified', même si le fichier était toujours modifié.
Des lignes vides dans un fichier de marqueurs provoquait l'abondon de ":tag".
À la saisie de 'q' à l'invite --PLUS-- pendant un ":menu", le défilement
continuait sur plusieurs lignes.
Dans un xterm utilisant l'astuce pour le gras, une ligne de caractères pouvait
persister après l'effacement d'un caractère gras. Maintenant, efface un
caractère supplémentaire après le caractère gras, comme dans la version IHM
graphique.
":pop!" ne fonctionnait pas.
Quand la lecture d'un tampon était interrompue, ":w" n'était pas capable
d'écraser le fichier, ":w!" était nécessaire.
":cf%" provoquait un plantage.
":gui nomdefichierlong", avec le fork activé, pouvait laisser une partie du
nomdefichierlong à l'invite du shell.
==============================================================================
Version 5.1 *version-5.1*
Améliorations apportées entre les version 5.0 et 5.1.
Il s'agit principalement d'une version corrigeant des bogues, avec peu de
nouvelles fonctionnalités.
CHANGEMENTS *changed-5.1*
La fonction expand() sépare maintenant les noms de fichier avec des <NL>
plutôt que des espaces. Cela évite les problèmes avec les noms de fichiers
contenant des espaces. Pour obtenir l'ancien résultat, vous pouvez utiliser
substitute(expand(foo), "\n", " ", "g").
L'utilisation des contres-obliques est permise pour les jokers dans
l'expansion en mode Insertion avec dictionnaire. Autoriser l'expansion de
"ze\kra" quand 'isk' inclut une contre-oblique.
Nouvelles icônes pour l'IHM graphique Win32.
":tag", ":tselect", etc. ne considèrent leur argument comme une exprat
uniquement quand il commence par un '/'. Cela évite que ":tag xx~" donne un
message d'erreur : "No previous sub. regexp". De même, quand l'argument de
":tag" contenait un caractère joker, cela n'était pas compatible avec Vi.
En utilisant '/', l'argument est également pris littéralement, avec une
priorité supérieure, il est par conséquent trouvé avant les correspondances
avec les jokers.
Les correspondances avec une casse différente sont trouvées seulement quand le
'/' est utilisé, même si 'ignorecase' n'est pas activé.
Modification de "g^]" pour ne faire que ":tselect" quand il existe plusieurs
marqueurs correspondants.
Modifications de certaines des couleurs par défaut, car elles n'étaient pas
très lisibles sur un fond sombre.
Le décalage en caractère d'un motif de recherche peut déplacer le curseur sur
la ligne suivante ou précédente. Correction également de "/motif/e+2" qui
restait bloqué sur "motif" à la fin d'une ligne.
Les doubles clics dans la ligne de statut ne provoquent plus le passage dans
le mode Visuel. Déplacer une barre de statut ne sort plus du mode Visuel.
Interface Perl : Buffers() et Windows() utilisent à présent des arguments plus
logiques, tels qu'ils sont utilisés dans le reste de Vim (Moore).
La marque '" est initialisée sur le premier caractère de la première ligne.
Cela permet l'utilisation de '" dans une autocommande sans obtenir un message
d'erreur.
AJOUTS *added-5.1*
Variable interne "shell_error" : résultat de la dernière commande shell.
Commande ":echohl" : fixe la surbrillance pour ":echo".
Drapeau 'S' dans 'highlight' et groupe de surbrillance StatusLineNC :
surbrillance de la ligne de statut des fenêtre non-courante. Par défaut, le
gras est utilisé pour la fenêtre courante.
Ajout des fonctions buffer_name() et buffer_number() (Aaron).
Ajout du drapeau "g" à la fonction substitute() (Aaron).
Ajout de la fonction winheight().
Win32 : quand une commande externe commence par "start ", aucune console n'est
ouverte (Aaron).
Console Win32 : utilisation des codes termcap pour gras/inverse basé sur les
attributs actuels de la console.
Vérification pour "strip" dans `configure`. (Napier)
CTRL-R CTRL-R x en mode Insertion : insère littéralement le contenu d'un
registre, plutôt que tel qu'il a été tapé.
Quelques messages "motif introuvable" sont rendus un peu plus informatifs en
ajoutant le motif n'ayant aucune correspondance.
À présent, "make install" copie également les fichiers de macros.
tools/tcltags, un script shell pour générer un fichier de marqueurs depuis un
fichier Tcl.
Paramètre "--with-tlib" pour `configure`. Manière simple d'utiliser termlib :
"./configure --with-tlib=termlib".
Drapeau 'u' pour 'cino', pour l'indentation des parties contenues dans ().
Quand la version OLE Win32 ne parvient pas à charger la bibiothèque pour les
types enregistrés, demander à l'utilisateur s'il souhaite enregistrer Vim
maintenant (Erhardt).
Version Win32 avec OLE : lors d'un enregistrement automatique, sortir de Vim.
Inclusion de VisVim 1.1b, avec quelques améliorations et une nouvelle icône
(Heiko Erhardt).
Ajout de la rustine de Vince Negri pour le support de Win32s. VC 4.1
nécessaire pour compiler !
Interface Perl : ajout de $curbuf. Rationalisation de Buffers() et Windows()
(Moore). Ajout de l'argument "group" à Msg().
Inclusion de fichiers Perl dans l'archive MS-DOS des sources. Modification de
Makefile.bor et Makefile.w32 pour le support de la version Win32 avec Perl
inclus.
Inclusion d'un nouveau Makefile.w32 produit par Ken Scott. À présent, il est
capable de construire toutes les versions Win32, y compris OLE, Perl et
Python.
Ajout de CTRL-W g ] et CTRL-W g ^] : partager la fenêtre puis faire g] ou g^].
Ajout de "g]" pour toujours faire ":tselect" avec l'identifiant sous le
curseur.
Ajout des commandes ":tjump" et ":stjump".
Amélioration de la liste affichée par ":tselect" quand les noms des marqueurs
deviennent un peu longs.
Inclusion des rustines pour la version Macintosh. Ainsi que l'interface Python
(St-Amant).
À présent, ":buf plop" restaure aussi la colonne du curseur, si le tampon a
été utilisé auparavant.
Ajustement du Makefile pour différentes destinations finales pour les fichiers
de syntaxe et de scripts (pour Linux Debian).
Amiga : $VIM peut maintenant être utilisé partout. Quand $VIM n'est pas
défini, "VIM:" est utilisé. Cela corrige le problème de "VIM:" qui doit être
assigné aux fichiers d'aide, et $VIM aux fichiers de syntaxe. Maintenant, l'un
ou l'autre fonctionne.
Certains xterms envoient des touches de fonctions F1-F4 compatibles vt100.
Puisqu'il n'est pas possible de le détecter, les deux types de touches sont
reconnus et traduit en <F1>-<F4>.
Ajout de l'autocommande "VimEnter". Elle est exécutée après tout ce qui est
chargé lors du démarrage.
La version BeOS fonctionne maintenant sur les processeurs Intel (Seibert).
CORRECTIONS *fixed-5.1*
":ts" modifiait la position dans le pile des marqueurs si annulé par <CR>.
":ts" modifiait la position du curseur pour CTRL-T si annulé par <CR>.
":tn" sautait toujours à la deuxième correspondance. Elle utilisait la
mauvaise entrée dans la pile des marqueurs.
Faire ":tag plop" puis ":tselect" écrasait la position initiale du curseur
dans la pile de marqueurs.
"make install" modifiait la page de manuel vim.1 de la mauvaise manière,
provoquant l'apparition de "doc/doc" dans les fichiers de la documentation.
Lors de la compilation avec MAX_FEAT, la gestion de la souris avec xterm ne
fonctionnait pas. Cela était provoqué par la gestion de la souris DEC qui
interférait.
Fuite de mémoire lors de l'utilisation de la sélection sous X11.
CTRL-D à la moitié d'une ligne de commande laissait des caractères derrière
le(s) première(s) ligne(s) de la liste.
Lors de l'expansion des répertoires pour ":set path=", deux contres-obliques
supplémentaires étaient mises devant un espace dans le nom de répertoire.
Avec 'lisp' activé, la première ligne d'une fonction était renfoncée.
Maintenant, son indentation est nulle. Utilisation de l'indentation de la
ligne précédente pour le même niveau de parenthèses. Ajout de test33.
"so<Esc>u" dans un fichier vide ne fonctionnait pas.
MS-DOS : des erreurs "seek error in swap file write" lors de l'utilisation de
share.exe de MS-DOS 6.2, car le fichier d'échange était masqué. Il ne l'est
plus à présent.
Parfois, la commande ":global" ne s'exécutait pas sur une ligne ayant
correspondu. Cela se produisait quand un bloc de données était plein dans
ml_replace().
Sous AIX, utilisation d'un tampon de 2048 octets pour tgetent, au lieu de
1024.
La version Win32 de gvim ne fixait la taille de la console pour les commandes
externes à 25x80 que sous Windows 95, pas sous NT.
Console Win32 : les touches mortes pouvaient provoquer un plantage, à cause
d'un "WINAPI" manquant (Deshpande).
Le bouton droit de la souris démarrait le mode Visuel, même si 'mouse' était
vide, et dans la ligne de commande, un clic gauche déplaçait le curseur quand
'mouse' était vide. En mode Visuel, 'n' dans 'mouse' était utilisé au lieu de
'v'.
Un curseur clignotant ou un changement de focus effaçait une sélection
non-Visuel.
CTRL-Début et CTRL-Fin ne fonctionnait pas sur les versions MS-DOS.
Il était possible d'inclure NUL dans 'iskeyword', provoquant un plantage lors
du complètement en mode Insertion.
Utilisation de _dos_commit() pour vider le fichier d'échange vers le disque
pour les versions MS-DOS 16 bits.
Dans les mappages, CTRL-H était remplacé par le code de la touche RetArr. Cela
posait des problèmes quand il était utilisé en tant que texte, par exemple :
":map _U :%s/.^H//g<CR>".
":set t_Co=0" n'était pas pris en compte comme dans un terminal normal. À
présent, il est traduit en ":set t_Co=", qui fonctionne.
Avec ":syntax keyword", l'option "transparent" fonctionnait, bien que non
mentionné dans l'aide. Mais synID() retournait un nom erroné.
"gqG" dans un fichier avec un seul mot par ligne (par exemple un dictionnaire)
était très lent et non-interruptible.
L'opérateur "gq" insérait des lignes d'écran dans de mauvaises situations. À
présent, les lignes sont insérées ou effacées quand cela accélère l'affichage.
cindent se trompait quand "if" contenait "((".
Le drapeau 'r' de 'viminfo' n'était pas utilisé pour '%'. Il était possible
d'obtenir des fichiers sur des supports amovibles dans la liste des tampons.
IHM graphique Win32 avec OLE : "if_ole_vcmak" était impossible à convertir en
projet. Correction avec une édition manuelle...
Avec 'nosol', faire "$kdw" sous une ligne vide plaçait le curseur à la fin de
la ligne.
La version Dos32 changeait "\dir\file" en "/dir/file", pour contourner un
bogue DJGPP. Ce bogue semble être corrigé ; par conséquent, le contournement a
été supprimé.
"/^*" ne fonctionnait pas (trouvait '*' dans la première colonne).
"<afile>" n'était pas toujours fixé pour les autocommandes. Par exemple, avec
":au BufEnter * let &tags = expand("<afile>:p:h") . "/tags".
Dans un xterm, le fenêtre peut être un descendant de la fenêtre externe du
xterm. Utilisation de la fenêtre parent pour récupérer les titre et noms de
l'icônes. (Smith)
Au démarrage avec "gvim -bg black -fg white", la valeur de 'background' n'est
fixée qu'après la lecture du fichier gvimrc. Cela entraine un "syntax on" à
utiliser de mauvaises couleurs. À présent, ":gui" peut ouvrir la fenêtre d'IHM
graphique et fixer les couleurs. Avant, ":gui" dans un gvimrc plantait Vim.
tempname() retournait toujours le même nom de fichier, à moins que le fichier
ne soit finalement créé. Maintenant, au moins 26 noms différents existent.
Le nom de fichier utilisé pour <afile> était parfois absolu, parfois relatif
au répertoire courant.
Quand 'background' était fixé après l'ouverture de la fenêtre de l'IHM
graphique, cela pouvait modifier les couleurs fixées par l'utilisateur dans
sont fichier gvimrc. À présent, cela ne modifie que les couleurs qui n'ont pas
été fixées par l'utilisateur.
Ignorer les caractères spéciaux après un CSI dans la version IHM graphique.
Ils pouvaient être interprétés comme des caractères spéciaux de manière
erronée. (St-Amant)
Fuite de mémoire dans le code farsi, lors de l'utilisation de la commande de
recherche ou de ":s".
Le retournement farsi des chaînes pour un mappage n'était fait que pour les
nouveaux mappages. Maintenant, cela fonctionne également lors du remplacement
d'un mappage.
Plantage sous Win32 lors de l'utilisation d'un nom de fichier d'une longueur
supérieure à _MAX_PATH. (Aaron)
Lors de l'exécution de l'autocommande BufDelete, certaines choses liées au
tampon étaient déjà effacées (en particulier pour Perl).
Interface Perl : les éléments spécifiques au tampon étaient effacés trop tôt ;
Cela corrige les messages "screen no longer exists". (Moore)
Les fonctions Perl ne fixaient pas le drapeau 'modified'.
"link.sh" ne retournait pas de code d'erreur en sortant, ce qui faisait que
Vim démarrait l'installation, même s'il n'y avait aucun exécutable à
installer. (Riehm)
Incompatibilité Vi : sous Vi, "." répète la commande "y". Ajout du drapeau 'y'
dans 'cpoptions'. Uniquement pour le mode 'compatible'.
":echohl" définissait un nouveau groupe quand l'argument n'était pas un groupe
existant.
":syn on" et ":syn off" pouvaient déplacer le curseur s'il existait un tampon
caché plus court que la position actuelle du curseur.
La marque " n'était pas positionnée lors d'un ":b fichier".
Quand un "nextgroup" est utilisé avec "skipwhite" dans la coloration
syntaxique, les espaces à la fin de la ligne faisaient que le groupe suiveur
était également trouvé sur la ligne suivante.
":he g<CTRL-D>" puis ":" et RetArr pour retourner au début ne rafraîchissait
pas l'écran.
IHM graphique X11 : "gvim -rv" inversait deux fois les couleurs sur Sun.
Maintenant, Vim vérifie si le résultat est bien la vidéo inverse (fond plus
sombre que le premier plan).
"cat link.sh | vim -" ne fixait pas la coloration syntaxique.
Win32 : l'expansion de "fichier.sw?" correspondait avec ".fichier.swp". C'est
une erreur de FindnextFile() qu'il est nécessaire de contourner. (Kilgore)
"gqgq" affichait une erreur "Invalid lnum" sur la dernière ligne.
Le formatage avec "gq" ne formatait pas la première ligne après un changement
de début de commentaire.
Il n'y avait aucune vérification de la mémoire restante dans win_alloc().
"vim -h" ne mentionnait pas "-register" et "-unregister" pour le version OLE.
Impossible d'augmenter 'cmdheight' quand le dernière fenêtre ne faisait qu'une
seule ligne. Maintenant, les autres fenêtres sont également réduites si
nécessaire.
Ajout de quelques {} pour éviter les avertissements "suggest braces around" de
gcc 2.8.x. Changement du type retourné par main() de void en int. (Nam)
Utiliser deux fois '~' dans un motif de substitution provoquait un plantage.
":syn on" et ":syn off" pouvaient faire défiler la fenêtre, s'il existait un
tampon caché plus court que la position actuelle du curseur.
":if 0 | if 1 | endif | endif" ne fonctionnait pas. Pareil pour ":while" et
":elseif".
Avec deux fenêtres sur des fichiers modifiés, 'autowrite' activé, le curseur
dans la seconde fenêtre, "qa" affichait un avertissement pour le fichier de la
première fenêtre, mais écrivait alors automatiquement le fichier dans la
seconde fenêtre. (Webb)
La barre de défilement de l'IHM graphique Win32 ne peut gérer que 32767
lignes. Également permis à la roulette Intellimouse d'utiliser la
configuration du nombre de lignes à défiler. (Robinson)
Lors de l'utilisation de 'patchmode', et que le fichier de sauvegarde est sur
une autre partition, la copie du fichier salissait le message d'écriture du
fichier.
IHM graphique X11 : Alt-RetArr et Alt-Suppr ne fonctionnait pas.
"`0" pouvait placer le curseur après le dernier caractère de la ligne, ce qui
posait des problèmes aux autres commandes, telles que "i".
Lors du complètement des marqueurs en mode Insertion avec ^X^], certaines
correspondances étaient sautées, car la comparaison avec les autres marqueurs
était mauvaise. Par exemple, quand "mnuFileSave" était déjà présent, "mnuFile"
était sauté. (Negri)
Lors du défilement vers le haut/bas, un élément de syntaxe avec "keepend" ne
fonctionnait pas correctement. Maintenant, les drapeaux sont également
mémorisés avec l'état de la syntaxe au début de chaque ligne.
Quand 'ic' était modifié alors que 'hlsearch' était activé, il n'y avait aucun
rafraîchissement en montrant l'effet.
IHM graphique Win32 : ne pas afficher "No write since last chance" dans une
boîte de message, mais dans la fenêtre Vim.
==============================================================================
Version 5.2 *version-5.2*
Des améliorations ont été apportées entre les version 5.1 et 5.2.
ÉDITION DES LIGNES LONGUES *long-lines*
Une ligne longue, ne tenant pas dans la fenêtre, n'est plus affichée comme une
ligne de @@@. Le rafraîchissement démarre un caractère plus loin sur la ligne,
de sorte que le texte autour du curseur soit visible. Cela permet l'édition de
ces longues lignes quand l'enroulement est activé.
SÉLECTEUR DE FICHIER AJOUTÉ *file-browser-5.2*
Les IHM graphiques Win32, Athena et Motif ouvrent un sélecteur de fichier si
l'utilisateur demande à naviguer (":browse") pour les commandes ":e", ":w",
":r", ":so", ":redirect" et ":mkexrc/vimrc/vsess". ":browse e /zorg/lub" ouvre
le sélecteur dans le répertoire /zorg/lub, vous pouvez donc avoir de
sympathiques mappages tels que ":browse so $VIM/macros". Si aucun répertoire
n'est précisé pour ":browse e", un réglage à la compilation offre la
possibilité de débuter dans le répertoire courant ou dans celui du tampon
courant. (Negri et Kahn)
Ajout de l'option 'browsedir', avec les valeurs "current", "last" ou "buffer".
Elle précise si un sélecteur démarre dans le répertoire courant, le dernier
répertoire utilisé ou le répertoire du tampon courant. ":browse w" n'est pas
affecté.
Les menus par défaut ont été modifiés pour utiliser la commande ":browse".
DIALOGUES AJOUTÉS *dialogs-added*
Ajout de la commande ":confirm". Elle fonctionne avec ":e", ":q", ":w" et
":cl". Les IHM graphiques Win32, Athena et Motif utilisent une boîte de
dialogue. Toutes les autres plate-formes peuvent utiliser l'invite de la ligne
de commande. ":confirm qa" offre la possibilité d'enregistrer tous les
fichiers modifiés.
La fonction confirm() donne à l'utilisateur l'accès au moteur de confirmation.
Ajout du drapeau 'v' à 'guioptions'. Quand il est inclus, une disposition
verticale des boutons est toujours utilisée pour les dialogues Win32. Sinon,
une disposition horizontale est préférée.
IHM graphique Win32 : ":promptfind" et ":promptrepl" ouvre un dialogue pour
trouver/remplacer. Prévu pour l'utilisation depuis une entrée de menu. (Negri)
MENUS CONTEXTUELS AJOUTÉS *popup-menu-added*
Quand l'option 'mousemodel' est fixée à "popup", le bouton droit de la souris
affiche le menu principal de "PopUp" comme un menu contextuel. Le menu "PopUp"
n'est pas affiché dans la barre des menus normaux. Actuellement, cela ne
fonctionne que pour les IHM graphiques Win32 et Athena.
MODE SÉLECTION AJOUTÉ *new-Select-mode*
Un nouveau mode a été ajouté : le mode "Sélection". Il ressemble au mode
Visuel, mais la saisie d'un caractère imprimable remplace la sélection.
- CTRL-G permet de passer du mode Visuel au mode Sélection et inversement.
- CTRL-O permet de de passer du mode Sélection au mode Visuel le temps d'une
commande.
- Ajout de l'option 'selectmode' : précise quand il faut démarrer le mode
Sélection plutôt que le mode Visuel.
- Ajout de l'option 'mousemodel' : modifie l'utilisation des boutons de la
souris.
- Ajout de l'option 'keymodel' : permet d'utiliser des touches spéciales avec
Maj pour débuter une sélection dans le mode Visuel ou Sélection.
- Ajout de ":behave" : permet de fixer rapidement les options 'selectmode',
'mousemodel' et 'keymodel' pour obtenir le comportement de MS-Windows ou
d'un xterm.
- la sélection à la manière d'un xterm est à présent appelée sélection sans
mode, ou sélection amodale.
- Les mappages et les menus du mode Visuel sont utilisés pour le mode
Sélection. Ils passent automatiquement en mode Visuel d'abord. Après,
resélectionnez la zone, à moins qu'elle n'ait été effacée. La commande "gV"
dans les mappages permet d'éviter la resélection.
- Ajout des commandes "gh", "gH" et "g^H" : démarrer (la surbrillance du) mode
Sélection.
- RetArr dans le mode Sélection efface la zone sélectionnée.
Script "mswin.vim". Il fixe un comportement ressemblant à MS-Windows.
FICHIERS DE SESSION AJOUTÉS *new-session-files*
":mks[ession]" réagit comme ":mkvimrc", mais enregistre également le nom
complet des fichiers des tampons actuellement chargés et du répertoire
courant, de manière à ce que le sourcement du fichier recharge ces fichiers et
passe dans ce répertoire. Elle enregistre et restitue également les fenêtres.
Les noms de fichiers sont relatifs au fichier de session.
L'option 'sessionoptions' fixe le comportement de ":mksession". (Negri)
FONCTIONS ET COMMANDES DÉFINIES PAR L'UTILISATEUR *new-user-defined*
Possibilité d'ajouter des fonctions définies par l'utilisateur. Leur
définition débute par un ":function" et se termine au ":endfunction" suivant.
Ces fonctions sont appelées avec "Fonction()". Il est possible de leur passer
un nombre variable de paramètres.
Ajout du support des variables locales "l:nom". Une valeur de retour est
renvoyée avec ":return". Voir |:function|.
L'appel d'une fonction a lieu avec ":call". Si une plage est spécifiée, la
fonction est appelée pour chaque ligne de la plage. |:call|
"macros/justify.vim" est un exemple d'utilisation des fonctions définies par
l'utilisateur.
Les fonctions utilisateur ne changent pas le dernier motif de recherche ou la
commande à répéter avec ".".
Ajout de l'option 'maxfuncdepth'. Elle restreint la profondeur des appels de
fonction. Cela évite des problèmes (plantage à cause d'une saturation de la
mémoire) quand une fonction entre dans une récursion sans fin.
Les commandes permettant à l'utilisateur de définir ses propres commandes Ex
sont : ":command", ":delcommand" et ":comclear". (Moore) Voir |user-commands|.
NOUVELLES INTERFACES *interfaces-5.2*
Interface Tcl. (Wilken) Voir |tcl|.
Utilisez les commandes ":tcl", ":tcldo" et ":tclfile".
Support de cscope. (Kahn) (Sekera) Voir |cscope|.
Utilisez les commandes ":cscope" et ":cstag", les options 'cscopeprg',
'cscopetag', 'cscopetagorder' et 'cscopeverbose'.
NOUVEAUX PORTAGES *ports-5.2*
Portage vers l'IHM graphique de l'Amiga. (Nielsen) Pas encore testé
intensivement !
Version RISC OS. (Thomas Leonard) Voir |riscos|.
Cette version fonctionne soit en mode graphique, soit en mode texte, selon la
manière dont elle a été invoquée.
Les fichiers "os_archie" ont été effacés, de toute façon, ils ne
fonctionnaient pas.
SUPPORT DU MULTI-OCTETS *new-multi-byte*
Support du multi-octets pour l'IHM graphique Win32. (Baek)
L'option 'fileencoding' détermine la façon dont le texte est codé dans le
fichier.
":ascii" fonctionne pour les caractères multi-octets. Les caractères
multi-octets sont disponibles sous Windows 95, même avec la version US.
(Aaron)
L'activation dans le fichier "feature.h" est nécessaire.
Cette fonctionnalité n'a pas été testée intensivement.
NOUVELLES FONCTIONS *new-functions-5.2*
|browse()| Affiche un sélecteur de fichier si c'est possible. (Negri)
|escape()| Protège des caractères dans une chaîne avec une
contre-oblique.
|fnamemodify()| Modifie un nom de fichier.
|input()| Demande à l'utilisateur de saisir une ligne. (Aaron) Il existe
un historique séparé pour les lignes saisie avec la fonction
input().
|argc()|
|argv()| Permettent d'accéder à la liste des arguments.
|winbufnr()| Retourne le numéro de tampon d'une fenêtre. (Aaron)
|winnr()| Retourne le numéro de fenêtre. (Aaron)
|matchstr()| Retourne une chaîne correspondant à un motif.
|setline()| Fixe une ligne à la valeur d'une chaîne.
NOUVELLES OPTIONS *new-options-5.2*
'allowrevins' Active la commande CTRL-_ en mode Insertion and Ligne-de-cmd.
'browsedir' Spécifie dans quel répertoire un sélecteur doit s'ouvrir.
'confirm' Si activé, les commandes ":q", ":w" et ":e" se comportent
toujours comme si ":confirm" était spécifié. (Negri)
'cscopeprg'
'cscopetag'
'cscopetagorder'
'cscopeverbose' Fixent le comportement de |cscope|.
'filetype' Type de fichier spécifique RISC OS.
'grepformat'
'grepprg' Pour la commande |:grep|.
'keymodel' Force l'utilisation des touches spéciales avec Maj pour
débuter une sélection en mode Visuel ou Sélection.
'listchars' Fixe les caractères à afficher dans le mode 'list', pour les
fins-de-lignes, les tabulations et les espaces finaux. (en
partie par Smith). Fixe aussi le caractère à afficher si une
ligne ne rentre pas dans l'écran quand 'nowrap' est activé.
'matchpairs' Permet de trouver les '<' et '>' appariés, ainsi que pour
d'autres paires de caractères.
'mousefocus' La fenêtre ayant le focus suit la souris (en partie par
Terhaar). Changer le focus depuis une commande du clavier
déplace le pointeur vers la fenêtre correspondante. Le
pointeur est également déplacé quand la disposition des
fenêtres change (partage, changement de hauteur, ...).
'mousemodel' Modifie l'utilisation des boutons.
'selection' Si fixé à "inclusive" ou "exclusive", le curseur peut aller un
caractère au-delà de la fin de la ligne en mode Visuel ou
Sélection. Si fixé à "old", l'ancien comportement est
conservé. Avec "inclusive", le caractère sous le curseur est
inclus dans l'opération. Avec "exclusive", la nouvelle entrée
"ve" de 'guicursor' est utilisée. Par défault, c'est une barre
verticale.
'selectmode' Précise quand passer dans le mode Sélection plutôt que Visuel.
'sessionoptions' Fixe la comportement de ":mksession". (Negri)
'showfulltag' Lors du complètement d'un marqueur en mode Insertion, affiche
le motif de recherche du marqueur (arrangé) comme un choix
possible (s'il y en a un).
'swapfile' Précise s'il faut utiliser un fichier d'échange pour un
tampon.
'syntax' Si fixé, la syntaxe correspondant à ce nom est chargée. Permet
de fixer une syntaxe particulière depuis une ligne de mode.
'ttymouse' Permet l'utilisation des codes de souris xterm pour les
terminaux dont le nom ne commence pas par "xterm".
'wildignore' Liste des motifs pour les fichiers ne devant pas être
complétés du tout.
'wildmode' Permet de fixer un type d'extension pour 'wildchar'.
Remplace la commande CTRL-T pour le complètement de ligne de
commande.
Ne bippe pas quand toute les correspondances sont listées.
'winaltkeys' IHM graphique Win32 et Motif. Si "yes", les touches Alt sont
entièrement prises en charge par le système de fenêtre. Si
"no", les touches Alt ne sont jamais utilisées par le système
de fenêtres. Si "menu", cela dépend si la touche est le
raccourci clavier d'un menu ou non.
'winminheight' Hauteur minimale pour chaque fenêtre. 1 par défaut. Fixer à 0
pour obtenir des fenêtres sans ligne. La barre de défilement
est supprimée pour les fenêtres sans lignes. (Negri)
NOUVELLES COMMANDES EX *new-ex-commands-5.2*
|:badd| Ajoute un nom de fichier dans la liste des tampons sans effets
secondaires. (Negri)
|:behave| Fixe rapidement un comportement similaire à Windows ou xterm.
|:browse| Utilise un sélecteur de fichier.
|:call| Appelle une fonction, éventuellement avec une plage.
|:cnewer|
|:colder| Accède à une pile de listes d'erreurs quickfix.
|:comclear| Supprime toutes les commandes définies par l'utilisateur.
|:command| Définit une commande utilisateur.
|:continue| Reprend au ":while".
|:confirm| Demande une conformation si quelque chose d'inattendu
survient.
|:cscope| Exécute une commande cscope.
|:cstag| Utilise cscope pour sauter vers un marqueur.
|:delcommand| Supprime une commande définie par l'utilisateur.
|:delfunction| Supprime une fonction définie par l'utilisateur.
|:endfunction| Indique la fin une fonction définie par l'utilisateur.
|:function| Définit une fonction utilisateur.
|:grep| Fonctionne de manière similaire à ":make". (Negri)
|:mksession| Crée un fichier de session.
|:nohlsearch| Supprime temporairement la surbrillance de 'hlsearch'.
|:Print| Cela est compatible Vi. Fait la même chose que ":print".
|:promptfind| Dialogue pour la recherche (IHM graphique Win32).
|:promptrepl| Dialogue pour la recherche et le remplacement (IHM graphique
Win32).
|:return| Retourne d'une fonction définie par l'utilisateur.
|:simalt| IHM graphique Win32 : simule l'appui sur Alt. (Negri)
|:smagic| Comme ":substitute", mais utilise toujours 'magic'.
|:snomagic| Comme ":substitute", mais utilise toujours 'nomagic'.
|:tcl| Exécute une commande Tcl.
|:tcldo| Exécute une commande Tcl sur une plage de lignes.
|:tclfile| Exécute un fichier de script Tcl.
|:tearoff| Détache un menu (IHM graphique Win32).
|:tmenu|
|:tunmenu| IHM graphique Win32 : bulle d'aide pour le menu. (Negri)
|:star| :* Exécute un registre.
CHANGEMENTS *changed-5.2*
Fonctions renommées :
buffer_exists() -> bufexists()
buffer_name() -> bufname()
buffer_number() -> bufnr()
file_readable() -> filereadable()
highlight_exists() -> hlexists()
highlightID() -> hlID()
last_buffer_nr() -> bufnr("$")
Les anciennes sont toujours présentes, pour la compatibilité ascendante.
La commande CTRL-_ dans les mode Insertion et Ligne-de-commande n'est
disponible que si la nouvelle option 'allowrevins' est activée. Cela évite que
des personnes qui souhaite taper Maj-_ entre accidentellement dans le mode
Insertion inversé, sans savoir comment s'en sortir.
Quand le chemin d'un nom de fichier est très long dans la liste donnée par
":tselect", la partie centrale est supprimée et remplacée par "...".
IHM graphique Win32 : le sélecteur de police apparaît dans la fenêtre Vim, et
non à n'importe quel endroit incongru. (Negri)
":bn" saute les tampons d'aide, à moins d'être actuellement dans un tampon
d'aide. (Negri)
Quand il y a une barre de statut et une seule fenêtre, le '^' n'est pas
affiché dans la ligne de statut de la fenêtre courante.
":*" était précédemment utilisé pour "'<,'>", la zone Visuel. Mais dans Vi,
c'est utilisé comme alternative à ":@". Quand 'cpoptions' inclut '*', c'est
compatible Vi.
Quand 'insertmode' est activé, l'utilisation de CTRL-O pour exécuter un
mappage fonctionnera comme si 'insertmode' n'était pas activé. Cela permet au
mappage du mode Normal d'être utilisé même quand 'insertmode' est activé.
Si 'mouse' était déjà fixé (par exemple dans le fichier vimrc), ne pas fixer
automatiquement 'mouse' lors du démarrage de l'IHM graphique.
Suppression des drapeaux 'N', 'I' et 'A' de l'option 'mouse'.
Les « options basculables » sont renommées en « options booléennes ».
Certaines personnes pensaient que ":set xyz" inversait "xyz" à chaque fois.
La variable interne "shell_error" contient le code d'erreur du shell, au lieu
de simplement 0 ou 1.
Lors d'une insertion ou d'un remplacement, taper CTRL-V CTRL-<span class="Special"><CR> insérait
"<C-CR>". Cela n'était pas très utile. Maintenant, la touche Ctrl est ignorée
et un <CR> est inséré. Pareil pour toutes les autres touches « normales » avec
des modificateurs. Mapper ces combinaisons de touches modifiées est toujours
possible.
En mode Insertion, <C-CR> et <S-Espace> peuvent être insérés en utilisant
CTRL-K puis le caractère spécial.
Le fichier contenant les citations est déplacé dans "doc/quotes.txt" et le
fichier des tâches restantes dans "doc/todo.txt". Ils sont maintenant
installés comme n'importe quel autre fichier de la documentation.
La fonction winheight() retourne -1 pour une fenêtre non-existante. La valeur
0 était précédemment retournée, mais c'est maintenant une valeur valide pour
la hauteur.
La valeur par défaut de 'selection' est "inclusive", ce qui fait une
différence lors de l'utilisation de "$" ou de la souris pour déplacer le
curseur en mode Visuel.
":q!" ne quitte pas quand il existe des tampons modifiés qui sont cachés.
Utilisez ":qa!" pour sortir à coup sûr.
Les interfaces Perl/Python/Tcl sont désactivées par défaut. Assez peu de
personnes les utilisent et elles augmentent considérablement la taille de
l'exécutable. Le langage de script interne est maintenant assez puissant pour
la plupart des tâches.
Les chaînes des options 'titlestring' et 'iconstring' sont utilisée telles que
pour le titre et l'icône de la Fenêtre. Cela permet l'utilisation d'un <CR>.
Précédemment, un <CR> était affiché comme "^M" (deux caractères).
Quand un mappage est initié dans le mode Visuel ou Sélection, ce dernier était
démarré depuis le mode Insertion (le mode affiché est "(insertion) Visuel), le
retour dans le mode Insertion n'a lieu qu'à la fin du mappage. Cela rend
possible l'utilisation de mappages en mode Visuel qui fonctionnent également
quand le mode Visuel a été démarré depuis le mode Sélection.
Les menus dans "$VIMRUNTIME/menu.vim" ne remplacent plus les menus existants.
C'est utile quand des menus sont définis dans le fichier vimrc, ou lors du
sourcement de "mswin.vim".
Unix : utilisation de /var/tmp pour les fichiers .swp, s'il existe. Les
fichiers situés à cet endroit survive au redémarrage de la machine (au moins
sur Linux).
AJOUTS *added-5.2*
Argument "--with-motif-lib" pour `configure`. Il permet l'utilisation de la
bibliothèque Motif statique.
Support du mappages des touches +, -, * et / du pavé numérique. (Negri)
Lorsqu'elles ne sont pas mappées, elles produisent un caractère normal.
IHM graphique Win32 : quand un répertoire est déposé sur gvim, en faire le
répertoire courant et éditer un nouveau tampon. (Negri)
IHM graphique Win32 : CTRL-Attn se comporte comme une interruption, ce qui
fait que CTRL-C peut servir pour les mappages.
Dans la sortie produite par ":map", le "*" est mis en surbrillance pour
montrer qu'il ne fait pas partie du ctd. (Roemer)
Quand la zone Visuel est montrée, le curseur n'est pas masqué, de façon à
pouvoir le localiser. La zone Visuel est maintenant en surbrillance avec un
fond gris dans l'IHM graphique. Cela rend le curseur visible même quand il est
inversé.
Win32 : si Vim est démarré avec un nom de fichier unique et complet (par
exemple par un double clic sur un fichier), faire du répertoire de ce fichier
le répertoire courant. (Negri)
IHM graphique Win32 : menus détachables, avec la commmande ":tearoff
<nom-menu>". (Negri)
Drapeau 't' de l'option 'guioptions' : ajouter les éléments de menus
détachables pour les IHM graphique Win32 et Motif. Il est inclus par défaut.
IHM graphique Win32 : les menus détachables avec des sous-menus sont indiqués
avec un ">>". (Negri)
Ajout des digrammes ^Kaa et ^KAA.
Ajout du symbole "euro" dans "digraph.c". (Corry)
Support Motif des raccourcis clavier pour les menus, utilisant '&' comme
MS-Windows (Ollis). Les autres IHM graphique ignorent les '&' dans les noms de
menus.
DJGPP : rafraîchissement de l'écran plus rapide (John Lange).
Regroupement des groupes de syntaxes en grappes : ":syntax cluster". (Bigham)
Fichiers de syntaxe inclus : ":syntaxe include". (Bigham)
Conserver la colonne lors du changement de tampon, quand 'nosol' est activé
(Radics).
Fonction Number pour l'interface Perl.
Support d'Intellimouse dans l'IHM graphique Athena. (Jensen)
":sleep" accepte aussi un argument en millisecondes, quand "m" est spécifié.
Ajout du drapeau 'p' dans 'guioptions' : installe des callbacks pour les
événement d'entrée/sortie de la fenêtre. Rend fonctionnel le clignotement du
curseur pour Terhaar, mais pas pour moi.
Arguments de la ligne de commande "--help" et "--version".
La sortie de ":list" non imprimable est en surbrillance selon NonText.
Ajout d'objets textuels : "i(" et "i)", synomymes de "ib" ; "i{" et "i}",
synonymes de "iB". Nouveau : "i<" et "i>", pour sélectionner <quelquechose>.
Cela fonctionne pareil avec les objets "a".
Drapeau 'O' dans 'shortmess' : le message pour la lecture d'un fichier écrase
tout message précédent. (Negri)
IHM graphique Win32 : drapeau 'T' dans 'guioptions' : (dés)active la barre
d'outils.
Inclusion d'une liste avec des bitmaps pour la barre d'outils. (Negri)
Ajout de priorités pour les sous-menus dans les menus. Disponible pour les IHM
graphiques Win32 et Motif. Affichage de la priorité avec la commande ":menu".
Les menus par défaut et de syntaxe disposent maintenant de priorités pour
leurs éléments. Cela permet d'insérer des éléments de menus au milieu de ceux
par défaut.
Quand l'option 'number' est activée, les numéros de lignes sont mis en
surbrillance selon le groupe LineNr.
Groupe de surbrillance "Ignore" : le texte mis en surbrillance selon ce groupe
est masqué. Il permet notamment de cacher des caractères spéciaux dans le
texte de l'aide.
Inclusion de Exuberant Ctags version 2.3, avec le support de C++, Java et la
capacité de parcourir une arborescence. (Hiebert)
Quand un fichier de marqueurs n'est pas trié, et que cela est détecté (de
manière simpliste), un message d'erreur est émis.
":unlet" accepte un "!", pour ignorer les variables n'existant pas, et pour
accepter plusieurs arguments. (Roemer)
Complètement des noms de variables pour ":unlet". (Roemer)
Quand une erreur se produit dans une fonction appelée par une autre fonction,
la pile d'appel est affichée dans le message d'erreur.
Nouveaux modificateurs de noms de fichiers :
":." : réduit le nom du fichier pour qu'il soit relatif au répertoire courant.
":~" : réduit le nom du fichier pour qu'il soit relatif au répertoire $HOME.
":s?mot?sub?" : remplace "mot" par "sub" une seule fois.
":gs?mot?sub?" : remplace "mot" par "sub" pour chaque occurrence.
Nouveaux arguments pour `configure` : "--enable-min-features" et
"--enable-max-features". Moyen simple pour choisir un jeu minimal ou maximal
de fonctionnalités.
Nouvelle fonctionnalité à la compilation : modify_fname, pour les
modificateurs de noms de fichiers, par exemple : "%:p:h". Ils peuvent être
désactivés pour économiser du code (DOS 16 bits).
Lors du complètement d'une ligne entière en mode Insertion, l'indentation est
correcte quand 'cindent' est activé.
MS-DOS et console Win32 : 'guicursor' fixe aussi l'épaisseur du curseur.
(Negri)
Inclusion d'un nouveau jeu de polices farsi. (Shiran)
Le texte pour les accélérateurs (raccourcis clavier) fonctionne maintenant
aussi sous Motif. Tous les menus peuvent être définis avec un & comme
mnémonique et TAB pour le texte des accélérateurs. Ils sont ignorés sur les
systèmes ne les supportant pas.
Lors de la suppression ou du remplacement d'un menu, la comparaison du nom du
menu n'est faite que jusqu'au <Tab> situé avant le mnémonique.
Drapeaux 'i' et 'I' après ":substitute" : ignorer ou non la casse.
"make install" se plaint si les fichiers de support sont absents.
Unix : quand un fichier d'échange est trouvé et qu'il n'est pas possible de
l'ouvrir, son propriétaire est informé dans le message ATTENTION.
Les options 'i', 't' et 'k' de 'complete' affichent à présent l'endroit où
elles recherchent les correspondances. (Acevedo)
Commande "gJ" : fusionne sans insérer d'espace.
Fixer 'keywordprg' à "man -s" est traité spécifiquement. Quand un
quantificateur est donné, le "-s" est supprimé, sinon, le quantificateur est
ajouté. `configure` vérifie si "man -s 2 read" fonctionne et fixe 'keywordprg'
par défaut en conséquence.
Lors d'un ":bd" alors qu'il n'y a qu'une seule fenêtre, Vim tente d'aller dans
un tampon du même type (par exemple, aide vers aide, non-aide vers non-aide),
pour être cohérent avec le comportement de ":bnext"/":bprev". (Negri)
"<Nop>" est autorisé pour le ctd d'un mappage. ":map xx <Nop>" mappe "xx" à
rien du tout ([No OPeration]).
Dans une commande ":menu", "<Tab>" peut servir à la place d'une vrai
tabulation, dans le menu du chemin. C'est plus simple à saisir, pas de
contre-oblique nécessaire.
Classes de caractères compatibles avec POSIX pour les motifs d'exprat :
[:alnum:], [:alpha:], [:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:],
[:print:], [:punct:], [:space:], [:upper:] et [:xdigit:]. (Briscoe)
Classes de caractère pour les exprat (pour les correspondances rapides de la
coloration syntaxique) :
chiffres : \d [0-9] \D non chiffre (Roemer)
hexa : \x [0-9a-fA-F] \X non hexa
octal : \o [0-7] \O non octal
mot : \w [a-zA-Z0-9_] \W non mot
début de mot : \h [a-zA-Z_] \H non début de mot
alphabétique : \a [a-zA-Z] \A not alphabétique
minuscule : \l [a-z] \L not minuscule
majuscule : \u [A-Z] \U not majuscule
":set" accepte à présent "+=", "^=" et "-=" : ajoute ou retire une partie
d'une option-chaîne, ajout ou retranche un nombre d'un option-nombre. Une
virgule est automatiquement insérée ou effacée pour les options utilisant une
liste avec des virgules comme séparateurs.
Fonctionnalité filetype [N.D.T. : type de fichier] pour les autocommandes. Un
type de fichier est utilisé à la place d'un motif pour correspondre à un
fichier. Utilisé sur RISC OS uniquement pour le moment. (Leonard)
Dans le motif d'une autocommande, il est possible d'utiliser des variables
d'environnement. Elles sont étendues quand l'autocommande est définie.
Événements "BufFilePre" et "BufFilePost" pour les autocommandes : avant et
après la commande ":file" pour changer le nom d'un tampon.
Événement "VimLeavePre" pour les autocommandes : avant d'écrire le fichier
viminfo.
Pour les arguments des autocommandes : <abuf> est le numéro de tampon, à
la manière d'<afile>.
Coloration syntaxique un peu plus rapide lors d'un défilement vers l'arrière,
en gardant un contexte de synchronisation plus important.
IHM graphique Win32 : accélération du défilement en évitant un
rafraîchissement lors de l'effacement ou l'insertion des lignes à l'écran.
IHM graphique : accélération du défilement en ne redessinant pas le curseur de
la barre de défilement lorsqu'il bouge de moins d'un pixel.
Ajout de ":highlight" dans "bugreport.vim".
Création du programme "install.exe", pour une installation facile sur MS-DOS
et MS-Windows.
Nouveau registre : '_', le trou noir. Quand on y écrit, rien ne se passe.
Quand on y lit, il est toujours vide. Permet d'éviter qu'une suppression ou
une modification ne modifie les registres, ou de réduire la mémoire utilisée
lors de changements importants.
CTRL-V xff saisit un caractère par son numéro en hexadécimal. CTRL-V o123 par
son numéro en octal. (Aaron)
Amélioration des performances de la coloration syntaxique en évitant de
vérifier "keepend" quand il n'y a pas lieu.
Déplacement du message de mode ("-- INSERT --") sur la dernière ligne de
l'écran. Quand 'cmdheight' est supérieur à 1, les messages restent lisibles.
Quand les fichiers correspondants sont listés, ils sont également triés selon
'suffixes', de façon à ce qu'ils soient listés dans le même ordre quand CTRL-N
les parcours.
synIDattr() prend un troisième argument (optionnel), qui précise pour quel
type de terminal obtenir les attributs. Cela permet de faire fonctionner
"2html.vim" hors de gvim (en utilisant les noms de couleur au lieu de
#RRVVBB).
Profilage de la mémoire, uniquement pour le débogage. Affichage à la sortie,
avec la commande "g^A". (Kahn)
MS-DOS : lors de l'utilisation d'un fichier dans l'unité courante, suppression
du nom de l'unité : "A:\rep\fichier" -> "\rep\fichier". C'est utile quand un
fichier de session est déplacé de "A:\rep\" vers "B:\rep".
Augmentation du nombre de sauts mémorisés de 30 à 50 par fenêtre.
Commande pour désactiver temporairement la surbrillance 'hls' jusqu'à la
prochaine recherche : ":nohlsearch".
Commandes "gp" et "gP" : comme "p" et "P", mais laissent le curseur juste
après le texte inséré. Utilisées pour la commande CTRL-V dans le comportement
MS-Windows.
CORRECTIONS *fixed-5.2*
IHM graphique Win32 : texte d'un seul endroit parfois dessiné 2 fois, pour le
texte pseudo-gras. Supprimé, MS-Windows va gérer le texte gras de toute façon.
(Negri)
rustine 5.1.1 : IHM graphique Win32s : coller provoquait un plantage. (Negri)
rustine 5.1.2 : Lors de l'arrivée dans une autre fenêtre, où des caractères
avant le curseur ont été effacés, le curseur pouvait se trouver au-delà de la
fin de la ligne.
rustine 5.1.3 : IHM graphique Win32s : n'attendait pas la fin des commandes
externes. (Negri)
rustine 5.1.4 : Makefile.w32 permet maintenant de générer la version OLE.
(Scott).
rustine 5.1.5 : Plantage avec la coloration syntaxique : curseur sur une ligne
ne tenant pas dans la fenêtre, et couper cette ligne en deux.
rustine 5.1.6 : Bogue dans la surbrillance Visuel : après ":set nowrap", aller
à la fin de la ligne (pour que la fenêtre défile horizontalement), ":set
wrap". La sélection Visuel qui suit est fausse.
rustine 5.1.7 : Avec 'tagbsearch' et 'ignorecase' désactivés, la recherche
binaire était toujours possible.
rustine 5.1.8 : IHM graphique Win32 : bouger la barre de défilement ne mettait
pas à jour la règle.
rustine 5.1.9 : L'utilisation de ":gui" dans le vimrc provoquait la
disparition du curseur dans un xterm.
rustine 5.1.10 : Un CTRL-N en mode Insertion pouvait provoquer un plantage
quand il existait un tampon sans nom.
rustine 5.1.11 : "make test" ne fonctionnait pas pour le répertoire shadow XXX.
Ajustement de "make shadow" pour les liens dans le répertoire ctags.
rustine 5.1.12 : "buf 123foo" utilisait "123" comme quantificateur, au lieu de
le considérer comme le début du nom d'un tampon.
rustine 5.1.13 : Lors du complètement des noms de fichiers sur la ligne de
commande, la réallocation de la ligne de commande pouvait mal se passer.
rustine 5.1.14 : ":[nvci]unmenu" supprimaient les menus pour tous les modes,
quand le chemin complet du menu était spécifié.
Gestion élégante des NULL dans la liste des fichiers glissés/déposés. Prise en
compte du paramètre NULL dans Fullname_save(). (Negri)
Win32 : "!start" invoque un programme sans ouvrir de console, basculer l'écran
ou attendre un complètement aussi bien dans le version console que graphique.
Par exemple, vous pouvez taper ":start winfile". Cela corrige AUSSI le bogue
"can't delete swapfile after spawning a shell". (amélioration d'une rustine de
Aaron) (Negri)
IHM graphique Win32 : correction du mappage CTRL-X par défaut pour ressembler
davantage à Windows. (Negri)
Les noms de fichiers étaient raccourcis au démarrage. Dans le répertoire
/zorg/lub, taper "vim ../lub/plop.c" affichait "plop.c" dans la barre de
statut, et non "/zorg/lub/plop.c". (Negri)
IHM graphique Win32 : aucune copie vers le presse-papiers Windows quand cela
n'est pas souhaité.
Win32s : correction du collage depuis le presse-papiers -- formulation d'une
hypothèse non valide sous Win32s. (Negri)
IHM graphique Win32 : accélération des appels à gui_mch_draw_string() et des
fonctions de dessin du curseur. (Negri)
IHM graphique Win32 : l'émulation du bouton du milieu de la souris
fonctionne ! (Negri)
Il était possible de sauter des messages quand des commandes étaient combinées
sur une seule ligne, par exemple :
":echo "hello" | write".
L'interpréteur Perl était désactivé avant l'exécution des autocommandes
VimLeave, rendant impossible l'utilisation de ":perl" dans ces dernières.
(Aaron)
Inclusion de la rustine pour Intellimouse (Aaron/Robinson).
Impossible de fixer 'ls' à 1 quand la dernière fenêtre n'avait qu'une seule
ligne. (Mitterand)
Correction d'une fuite de mémoire lors de la suppression de menus.
Après ":only", la règle pouvait recouvrir un message.
Dos32 : suppression de la modification de __system_flags. Il semble que cela
fonctionne mieux quand il est laissé à sa valeur par défaut.
p_aleph était un int au lieu d'un long, ce qui posait des problèmes sur les
systèmes où sizeof(int) != sizeof(long). (Schmidt)
Correction de problèmes avec enum sur Ultrix. (Seibert)
Petit problèmes de rafraîchissement : "dd" sur la dernière ligne n'effaçait
pas la bonne ligne.
"cmd | endif" n'était pas interprété quand "cmd" commençait par une plage. Par
exemple : "if 0 | .d | endif".
La commandes "+|" sur la dernière ligne du fichier provoquait des erreurs
ml_get.
Sous-utilisation de la mémoire dans eval_vars(). (Aaron)
Ne pas renommer les fichiers d'une manière compliquée, à part sur MS-Windows
95 (c'était également le cas sur MS-Windows NT).
IHM graphique Win32 : une commande externe retournant un code d'erreur
provoquait un message dans une boîte de dialogue. Il fallait fermer la fenêtre
et la boîte de dialogue. À présent, le code d'erreur est affiché dans la
console. (Negri)
"comctl32.lib" était manquante parmi les bibliothèques graphiques dans
Makefile.w32. (Battle)
En mode Insertion, lors de l'arrivée dans une fenêtre en mode Insertion, allow
the cursor to be one char beyond the text.
autoriser le curseur à être un caractère au delà du texte. XXX
rename() dependant de la machine est renommé en mch_rename(). mch_rename() est
défini à rename() quand ce dernier fonctionne convenablement.
vim_chdir() renommé en mch_chdir(), car il dépend de la machine.
Lors de l'utilisation d'une liste d'arguments, et de l'édition du fichier 5
sur 4, ":q" pouvait provoquer un erreur "-1 more files to edit".
Dans if_python.c, VimCommand() provoquait l'échec d'une assertion quand
do_cmdline() échouait. Déplacement de Python_Release_Vim() avant
VimErrorCheck(). (Harkins)
Donner un message d'erreur pour un argument inconnu après "--". Par exemple
pour "Vim --xyz".
L'autocommande FileChangedShell ne fixait pas <afile> au nom du fichier
modifié.
Lors d'un ":e fichier" provoquant un message ATTENTION, l'invite
Appuyez-sur-Entrée n'était parfois pas disponible. Cela était causé par une
ligne vide ou un "endif" à la fin d'un fichier sourcé.
Un bon nombre de rustines pour la version VMS. (Hunsaker)
Quand le complètement avec CTRL-L (correspondance la plus longue) retourne
une chaîne plus courte, aucun complètement n'a lieu (se produit avec ":help").
Plantage dans la version IHM graphique Win32 lors de l'utilisation d'une
commande Ex "@", car LinePointers[] était utilisé sans être initialisé.
IHM graphique Win32 : mappage pour Alt-Espace permis.
La sortie de "vim -h" était envoyée sur stderr. L'envoyer sur stdout est
préférable, cela permet l'utilisation de "vim -h | more".
En mode Ligne-de-Commande, "vi[!]" devrait recharger le fichier, tout comme
":e[!]". En mode Ex, ":vi" sort du mode Ex, mais ne recharge pas le fichier.
Cela est compatible avec Vi.
Avec ":set ls=1" dans le fichier gvimrc, on obtenait une ligne de statut pour
une fenêtre seule. (Robinson)
N'émettait pas de message d'erreur pour ":set ai,xx". (Roemer)
N'émettait pas de message d'erreur pour ":set ai?xx", ":set ai&xx",
":set ai!xx".
Systèmes non-Unix : un fichier qui existe mais qui n'est pas lisible est
considéré comme un "Nouveau fichier". Vim vérifie à présent l'existence d'un
fichier quand il est impossible de l'ouvrir (comme pour Unix).
Unix : osdef.sh ne prenait pas en charge les déclarations où le nom des
fonctions est dans la première colonne de la ligne.
DJGPP : le raccourcissement des noms de fichiers ne fonctionnait pas
correctement, car get_cwd() retournait un chemin avec des contres-obliques.
(Negri)
Lors de l'utilisation d'une partie de 'comments'aire dans laquelle un espace
est nécessaire après la partie centrale, toujours insérer un espace quand une
nouvelle ligne commence. Utile pour les commentaires en C, sous une ligne avec
"/****".
Remplacer le chemin du répertoire utilisateur par "~/" pouvait être non valide
pour des noms de fichiers contenant des espaces ou des virgules.
Quelques corrections pour l'interface SNiFF. (Leherbauer)
Lors de l'invite à taper 'y' ou 'n' (par exemple pour :3,1d), utiliser la
souris posait des problèmes. Pareil pour l'invite ":/x/y/c".
Avec 'nowrap' et 'list', l'affichage d'une tabulation au milieu de l'écran
était constitué de blancs plutôt que des caractères spécifiés dans
'listchars'. Pareil pour d'autres caractères qui occupent plus d'un caractère
d'écran.
En fixant 'guifont' au nom d'une police inconnue, le police précédente était
perdue et une police par défaut était utilisée. (Steed)
MS-DOS : les noms de fichier dans le répertoire racine n'étaient pas
raccourcis correctement. (Negri)
DJGPP : trouver le chemin absolu d'un fichier depuis son nom ne fonctionnait
pas correctement quand la fonction _fullpath() n'était pas disponible. (Negri)
Console Win32 : ":sh" provoquait un plantage. (Negri)
Console Win32 : fixer 'lines' et/ou 'columns' dans le _vimrc échouait
lamentablement (pouvait planter MS-Windows 95). (Negri)
Win32 : la fonction pour changer d'unité n'était pas correcte et aboutissait à
la mauvaise unité. (Tsindlekht)
IHM graphique : lors de l'édition d'une ligne de commande en mode Ex, les
tabulations étaient parfois mal effacées par un retour arrière, et des
caractères non imprimables étaient affichés directement. Les version non
graphiques peuvent être encore affectée, car un appel système est utilisé pour
cela.
":set" ne s'arrêtait pas après une erreur. Par exemple, ":set no ai" émettait
une erreur pour "no", mais fixait ensuite 'ai'. À présent, ":set" s'arrête
après la première erreur.
Lors de l'exécution de `configure` pour ctags, $LDFLAGS n'était pas transmis,
posant des problèmes à Irix.
"@%" et "@#" émettait des messages d'erreur quand le nom de fichier n'était
pas fixé. À présent, ils retournent juste une chaîne vide. (Steed)
CTRL-X et CTRL-A ne fonctionnaient pas correctement avec des nombres
hexadécimaux et octaux négatifs. (Steed)
":echo" commençait toujours par un blanc.
Modifier la forme du curseur avec l'IHM graphique ne fonctionnait pas toujours
(par exemple quand le clignotement est désactivé).
En mode Ex silencieux ("ex -s" ou "ex < fichier"), ":s///p" n'affichait aucune
ligne. Pareillement, quelques autres commandes affichant explicitement des
lignes de texte ne fonctionnaient pas. Tout ceci a été rendu compatible avec
Vi.
La version Win32 de _chdrive() ne retournait pas une valeur correcte.
(Tsindlekht)
Lors de l'utilisation de 't' dans l'option 'complete', un fichier de marqueurs
manquant ne provoque plus l'émission d'un message d'erreur.
Unix : tgoto() peut retourner NULL, ce qui n'était pas pris en compte
correctement dans `configure`.
Lors d'un ":help" depuis un tampon quand 'binary' est activé, le fichier
d'aide était également édité en binaire. Cela affichait des ^M supplémentaires
sur les systèmes MS-DOS.
La position du curseur dans un fichier était remise à 1 lors de la fermeture
d'une fenêtre.
":!ls" en mode Ex désactivait l'écho.
Lors d'un double clic dans la fenêtre A, alors qu'actuellement dans la fenêtre
B, le premier clic réinitialisait la temporisation de double clic, entrainant
la nécessité de cliquer trois fois pour sélectionner un mot.
Lors de l'utilisation de <F11> dans les mappages, ":mkexrc" produisait un
fichier exrc qui ne pouvait pas être utilisé en mode compatible Vi. Ajout d'un
réglage dans 'cpoptions' pour éviter ce problème. Ajout également d'un CTRL-V
devant '<', pour éviter qu'une chaîne normale soit interprétée comme le nom
d'une touche spéciale.
Message d'erreur confus pour ":set guifont=-*-lucida-*" : d'abord "font is
not fixed width", puis "Unknown font".
Certaines options sont toujours complètement oubliées, au lieu d'être incluse
en tant qu'options cachées.
Lors de l'utilisation de l'IHM graphique X11, ignorer les signaux SIGHUP. Cela
évite un plantage après l'exécution d'une commande externe (dans de rares
cas).
Dans os_unixx.h, signal() était définie à sigset(), alors qu'elle l'était
déjà.
Fuite de mémoire lors de l'exécution d'autocommandes (a été rapporté comme une
fuite de mémoire dans la coloration syntaxique).
Pas d'affichage de la source des erreurs parfois, parce que les pointeurs
étaient les mêmes, alors que les noms étaient différents.
Nombreuses erreurs UMR de Purify évitées (troisième argument de open()).
Un fichier d'échange était toujours créé juste après avoir fixer 'updatecount'
à zéro, quand il existe un tampon vide et que l'on fait ":e fichier".
(Kutschera)
Le test 35 échouait sur les machines 64 bits. (Schild)
Le rafraîchissement était lent avec les commandes "p" et "P".
Le script awk pour la documentation HTML ne fonctionnait pas correctement avec
le awk de AIX. Remplacement de "[ ,.);\] ]" par "[] ,.); ]". (Briscoe)
Le script makehtml.awk avait un petit problème, provoquant l'insertion de
lignes supplémentaires. (Briscoe)
"gqgq" ne pouvait pas être répétée. La répétition de "gugu" et "gUgU"
fonctionnait de la mauvaise manière. "gqq" fonctionne de manière cohérente
avec "guu".
L'indentation C était fausse après "case ':':".
":au BufReadPre *.c put" : la ligne du texte du put était effacée, parce que
le tampon était encore supposé vide.
Le texte collé avec le menu Edition/Coller était soumis à 'textwidth' et
'autoindent'. C'est incohérent avec l'utilisation de la souris pour coller. À
présent, "*p est utilisé.
Lors de l'utilisation de CTRL-W CTRL-] sur un mot qui n'est pas un marqueur,
puis un CTRL-] sur un marqueur, la fenêtre était partagée.
":ts" restait bloqué sur une ligne de marqueurs avec deux champs
supplémentaires.
En mode Insertion, avec 'showmode' activé, le message <C-O><C-G> était
directement écrasé par le message de mode, si précédé par le message
d'avertissement de commande de recherche.
Lors du collage du résultat d'une expression avec "=<expr>p, les NL étaient
insérées comme des ^@ (NUL dans le fichier). Maintenant, la chaîne est
découpée en lignes au niveau du NL.
putenv() était déclaré avec "const char *" dans pty.c, mais avec "char *" dans
osdef2.h.in. Le second est maintenant un "const char *" aussi.
":help {mot}", où +{mot} est une fonctionnalité, sautait à la liste des
fonctionnalités plutôt qu'à l'endroit où la commande était expliquée. Par
exemple ":help browse", ":help autocmd".
L'utilisation de la forme "\<xx>" dans une expression donne un résultat sur un
seul octet, même si un caractère spécial occupant plusieurs octets est utilisé
(par exemple "\<F9>").
Modification de "\<BS>" pour qu'elle produise CTRL-H au lieu du code de la
touche spéciale de la touche Retour Arrière. "\<Del>" produit 0x7f.
":mkvimrc" n'écrivait pas de commande pour fixer 'compatible'.
La syntaxe du shell ne contenait pas de réglage de type "syn sync maxlines".
Dans un long fichier sans élément caractéristique, la synchronisation était
si lente que Vim donnait l'impression d'être bloqué. Ajout du réglage ;
possibilité d'interrompre la synchronisation.
La commande "gs" ne vidait pas les tampons de sortie avant d'attendre.
Fuite de mémoire pour :
":if 0 | let a = b . c | endif"
"let a = b[c]"
":so {fichier}" quand {fichier} contient un ":while"
IHM graphique : les polices allouées n'était jamais libérées. (Leonard)
Makefile.bor :
- Modification de $(DEFINES), devenu une liste d'options "-D", afin que cela
puisse être utilisé comme une ressource pour le compilateur. (non testé !)
- "bcc.cfg" était utilisé pour toutes les configurations. Lors de la
compilation pour une autre configuration, les paramètres pour la précédente
étaient conservés. "bcc.cfg" déplacé dans le répertoire de objets. (Geddes)
- Ajout de cibles pour vimrun, install, ctags and xxd. Modification du réglage
par défaut pour utiliser la Borland DLL Runtime Library, ce qui rend vim.exe
bien plus petit. (Aaron)
"2*" recherche le mot sous le curseur précédé de "2". (Leonard)
Lors du coupage vers un registre particulier, la sélection par une IHM
graphique non Win32 était toujours écrasée. Maintenant, ""x"*P fonctionne.
Lors d'un coupage vers le registre "", l'écriture se faisait toujours vers le
dernier registre utilisé. Maintenant, ""x écrit toujours dans le registre sans
nom.
IHM graphique Athena : les sous-menus contenant un '.' ne fonctionnaient pas.
Par exemple : ":amenu Syntax.XY\.Z.foo lll".
Lors d'un ":tag zorg", suivi d'un ":tnext" et/ou d'un ":tselect", l'ordre des
marqueurs correspondants pouvait changer, car le fichier courant n'est plus le
même. Maintenant, les marqueurs existants sont conservés dans le même ordre,
les correspondances nouvellement trouvées sont ajoutées à la suite,
indépendament du fichier courant.
":ta" ne trouvait pas la deuxième entrée du fichier de marqueurs quand sa
longueur était supérieure à celle de la première entrée.
Avec ":set si tw=7", insérer "zorg {^P}" causait l'insertion du "}" au mauvais
endroit. can_si valait encore TRUE alors que le curseur n'était pas dans
l'indentation de la ligne.
Utiliser une commande externe dans la version Win32 et la fermer en utilisant
le bouton X de la console (puis confirmer) causait la sortie de Vim. À
présent, la commande "vimrun" est utilisée pour démarrer indirectement la
commande externe. (Negri)
IHM graphique Win32 : lors d'un filtrage avec une commande externe,
miminisation de la fenêtre MS-DOS. (Negri)
":let" listait les variables sans les convertir en caractères imprimables.
Console Win32 : lors du redimensionnement de la fenêtre, le retour à la taille
d'origine (en sortant ou lors de l'exécution d'une commande externe) échouait
parfois. (Negri)
Il semble que cela corrige un problème « incorrigible » :
Console Win32 sous NT 4.0 : lors de l'utilisation de Vim dans une fenêtre cmd
avec une barre de défilement, cette dernière disparaissait et ne revenait pas
à la sortie de Vim. Cela fonctionne sous NT 3.51, il semble que cela ne soit
pas un problème dû à Vim.
Lors de l'exécution des autocommandes BufDelete et BufUnload pour un tampon
sans nom, le nom du tampon courant était utilisé pour <afile>.
Lors du saut vers un marqueur, "marqueur 1 sur >2" était affiché, alors qu'il
pouvait n'y avoir en fait que deux correspondances. Changé en "marqueur 1 sur
2 ou plus".
":tjump tag" faisait une recherche linéaire dans le fichier de marqueurs, ce
qui pouvait être lent.
`configure` ne trouvait pas "LibXm.so.2.0", une bibliothèque Xm avec un numéro
de version.
IHM graphique Win32 : lors de l'utilisation d'une touche avec Maj et Alt, le
modificateur Maj restait activé, même quand il était déjà utilisé par un autre
touche. Par exemple "<M-S-9>" aboutissait à "<M-S-(>", au lieu de "<M-(>".
(Negri)
Un appel à ga_init() était souvent suivi par l'affectation de growsize et
itemsize. Création de ga_init2() pour cette tâche, qui convient mieux. (Aaron)
La fonction filereadable() pouvait appeler fopen() avec une chaîne vide, ce
qui peut être interdit.
IHM graphique X Window : lors de l'exécution d'une commande externe produisant
du texte, l'écriture d'un caractère au delà de la fin du tampon était
possible, ce qui provoquait un plantage. (Kohan)
Lors de l'utilisation de "*" ou "#" sur une chaîne contenant '/' ou '?' (et
que ces derniers étaient inclus dans 'isk'), ces caractères n'étaient pas
déspécialisés. (Parmelan)
Lors de l'ajout d'un menu Toolbar dans l'IHM graphique Motif, le champ
submenu_id n'était pas effacé, provoquant des problèmes aléatoires.
Lors de l'ajout d'un menu, la vérification pour déterminer si ce menu (ou
sous-menu) existe déjà ne comparait pas la version courte (sans mnémonique ou
accélérateur) du nouveau menu. Il était possible d'obtenir deux menus avec le
même nom ; par exemple "Fichier" et "&Fichier".
La coupure d'une ligne par 'textwidth' sur le dernière ligne de la fenêtre
provoquait le rafraîchissement de toute la fenêtre au lieu d'un défilement.
Accélération sévère de la saisie avec 'textwidth' pour les terminaux lents.
Un numéro de ligne invalide produisait une erreur "invalid range", même quand
il n'était pas question de l'exécuter (dans un "if 0").
Quand le tout premier tampon sans nom était réutilisé, l'autocommande
BufDelete n'était pas appelée. Il restait dans le menu donnant la liste des
tampons.
Lors d'un "%" sur le NUL après une ligne, un "{" ou un "}" sur le dernier
caractère de la ligne n'était pas trouvé.
Le menu en mode Insertion n'était pas utilisé pour les commandes "s", le menu
Opérateur-en-cours était utilisé à la place.
Avec 'compatible' activé, certaines colorations syntaxiques n'étaient pas
correctes, à cause de l'utilisation d'un motif de recherche avec "[\t]".
Maintenant les exprat pour la coloration syntaxique sont utilisée comme si
l'option 'cpoptions' était vide (tel que cela avait été documenté).
Lors de l'utilisation de "map <M-Space> ms" ou de "map <Space> sss", la sortie
de ":map" n'affichait aucun ctg pour ces mappages (quand 'isprint' contient
160). Maintenant, <Space> et <M-Space> sont toujours utilisés, même quand ils
sont imprimables.
Ajustement du menu Syntaxe, afin que son entrée la plus basse tienne dans un
petit écran (pour Athena, où les menus ne défilent pas).
Lors de l'utilisation de CTRL-E et CTRL-Y en mode Insertion pour des
caractères tels que 'o', 'x' et les chiffres, la répétition de l'insertion ne
fonctionnait pas.
Le fichier "tools/ccfilter.README.txt" était impossible à désarchiver à cause
de l'utilisation de deux points. Renommé en "tools/ccfilter_README.txt".
Avec un fond ('background') sombre, l'utilisation de Blue pour les groupes de
surbrillance Directory et SpecialKey n'était pas très lisible. Utilisation de
Cyan à la place.
Dans la fonction uc_scan_attr() de ex_docmd.c se trouvait un goto qui sautait
dans un bloc contenant une variable locale. C'est interdit par certains
compilateurs.
IHM graphique Win32 : une rangée de pixels en bas de la fenêtre n'était pas
dessinée. (Aaron)
Sous MS-DOS, éditer "nomfich/" créait un fichier d'échange "nomfich/.swp", au
lieu de "nomfich/_swp".
IHM graphique Win32 : le pointeur était caché durant l'exécution d'une
commande externe.
Quand 'so' vaut 999, "J" à proximité de la fin du fichier ne rafraîchissait
pas correctement l'affichage.
":0a" insérait après la dernière ligne, au lieu d'avant.
Unix : l'expansion des jokers ne prenait pas en compte les apostrophes et les
motifs {}. Maintenant, ":file 'window.c'" retire les apostrophes et
":e 'main*.c'" fonctionne (* littéralement). ":file {u}{n}{e}" donne le nom de
fichier "une".
Fuite de mémoire quand une option-chaîne est remise à sa valeur par défaut.
==============================================================================
Version 5.3 *version-5.3*
La version 5.3 corrige les bogues de la version 5.2. Elle apporte peu de
changements.
Améliorations apportées entre les version 5.2 et 5.3 :
CHANGEMENTS *changed-5.3*
Menu "IDE" renommé en menu "Tools" ([Outils]).
AJOUTS *added-5.3*
IHM graphique Win32 : émettre un avertissement quand Vim est ouvert, et que
l'un des fichiers a été modifié depuis le début de l'édition. (Negri)
CORRECTIONS *fixed-5.3*
5.2.1 : IHM graphique Win32 : l'espace pour les commandes externes n'était pas
alloué correctement, ce qui pouvait provoquer un plantage. (Aaron) Ce problème
explique la disponibilité si rapide de la version 5.3 après la version 5.2.
5.2.2 : Certaines commandes ne se plaignaient pas d'être appelées sans
argument, alors qu'elles en avait besoin : ":badd", ":browse", ":call",
":confirm", ":behave", ":delfunction", ":delcommand" and ":tearoff".
":endfunction" à l'extérieur d'une fonction donnait un message erroné :
"Command not implemented", au lieu de ":endfunction not inside a function".
5.2.3 : IHM graphique Win32 : quand Vim était installé dans "Program files",
ou tout autre chemin contenant un espace, l'exécution des commandes externes
avec vimrun ne fonctionnait pas.
5.2.4 : Le collage avec la souris en mode Insertion laissait le curseur sur le
dernier caractère collé, au lieu du caractère qui le suit.
5.2.5 : En mode Insertion, le curseur placé après la fin de la ligne, un
Maj-Flèche-gauche n'incluait pas le dernier caractère dans la sélection.
5.2.6 : Lors de la suppression d'un texte qui inclut le dernier caractère de
la ligne depuis le mode Insertion (avec "<C-O>D" ou la souris), le curseur
pouvait se retrouver sur le dernier caractère de la ligne plutôt que juste
après.
5.2.7 : IHM graphique Win32 : la barre de défilement était trop grosse d'un
pixel.
5.2.8 : Le complètement du menu "PopUp" affichait les dérivés "PopUpc",
"PopUpi", etc. Pareil pour ":menu".
5.2.9 : Lors de l'utilisation de deux input() sur une ligne, l'invite n'était
pas dessinée dans la colonne 0.
5.2.10 : Une boucle contenant un input() ne pouvait pas être interrompue avec
CTRL-C.
5.2.11 : ":call asdf" et ":call asdf(" n'émettaient pas de message d'erreur.
5.2.12 : L'utilisation récursive de ":normal" plante Vim au bout d'un certain
temps. Par exemple : ":map gq :normal gq<CR>"
5.2.13 : La coloration syntaxique utilisait 'iskeyword' du mauvais tampon,
lors d'un ":help", puis d'un "/\k*" dans une autre fenêtre avec 'hlsearch'
activé.
5.2.14 : Lors de l'utilisation de ":source" depuis une fonction, une variable
globale n'était pas disponible à moins d'utiliser "g:".
5.2.15 : Les fichiers XPM peuvent avoir l'extension ".pm", qui est la même que
pour les modules Perl. Ajout de "syntax/pmfile.vim" pour prendre ce cas en
charge.
5.2.16 : Sur Win32 et Amiga, "echo expand("%:p:h")" supprimait un nom de
répertoire dans un tampon vide. mch_Fullname() n'ajoutait pas d'oblique à la
fin du nom d'un répertoire.
Le caractère sous le curseur dans la zone Visuel devrait être inclus quand
'selection' vaut "exclusive". Ce n'était pas le cas pour "%", "e", "E", "t" et
"f".
""p collait toujours le registre 0, au lieu du (dernier) registre sans nom
utilisé. Annuler la modification ""x n'écrivait pas dans le (dernier) registre
sans nom. Cela écrivait toujours dans le registre 0, ce qui n'était pas très
utile. Utilisez "-x pour les mappages du collage en mode Visuel.
Quand une longue ligne est présente à l'écran, et que 'showcmd' est désactivé,
"0$" ne rafraîchissait pas l'écran.
IHM graphique Win32 : lors de l'utilisation de 'mousehide', le pointeur
clignotait quand la forme du curseur était modifiée. (Negri)
Lors de l'annulation du mode Visuel, et que le curseur se déplaçait au début,
la colonne voulue n'était pas atteinte, "k" et "j" déplaçait vers la mauvaise
colonne.
Lors de l'utilisation de ":browse" ou ":confirm", la vérification pour un
commentaire ou une barre de séparation empêchait le fonctionnement de
certaines commandes.
Inclusion des corrections pour Macintosh. (Kielhorn)
==============================================================================
Version 5.4 *version-5.4*
La version 5.4 inclut de nouvelles fonctionnalités, des changements utiles et
de nombreuses corrections de bogues.
INTRODUCTION DU RÉPERTOIRE DE SUPPORT *new-runtime-dir*
Les fichiers de support distribués sont maintenant dans $VIMRUNTIME, ceux de
l'utilisateur dans $VIM. Normalement, vous ne fixez pas $VIMRUNTIME mais
laissez Vim la déterminer, en utilisant $VIM/vim{version} ou $VIM si le
précédent n'existe pas. Cela permet la séparation des fichiers de
l'utilisateurs et des fichiers de la distribution, et facilite la migration
vers une autre version. Cela permet également de conserver deux versions
différentes de Vim, chacune utilisant leurs propres fichiers de support.
Dans la distribution Unix, les fichiers de support ont été déplacés dans le
répertoire "runtime". Cela permet la copie de tous les fichiers de support en
une seule fois, dans savoir précisement ce qu'il est nécessaire de copier.
Les archives pour MS-DOS, MS-Windows, Amiga et OS/2 ont à présent un
répertoire racine "vim" supplémentaire. Cela pour indiquer que les fichiers
modifiés par l'utilisateur doivent y être placés. Le répertoire contenant les
exécutables ne contient pas de caractères '-' ou '.'. Cela évite les
extensions bizarres.
Les variables $VIM et $VIMRUNTIME sont fixées lors qu'elles sont utilisées
pour la première fois. Cela leur permet d'être utilisées par Perl, par
exemple.
Les fichiers de support sont également placés dans un répertoire nommé
"$VIM/runtime". Cela est utile quand vous lancez Vim juste après la
décompression de l'archive de support. Lors de l'utilisation de l'exécutable
dans le répertoire "src", Vim vérifie si "vim54" ou "runtime" peuvent être
ajoutés après avoir retiré "src". Cela permet de trouver les fichiers de
support juste après la compilation.
Une valeur par défaut pour $VIMRUNTIME peut être spécifiée dans le Makefile
Unix. C'est utile si $VIM ne pointe pas vers le répertoire parent du
répertoire de support mais, par exemple, vers "/etc/".
INTRODUCTION DES TYPES DE FICHIERS *new-filetype-5.4*
Les fichiers de syntaxe sont maintenant chargés avec la nouvelle autocommande
Filetype. Les anciens fichiers "mysyntaxfile" ne fonctionneront plus.
|filetypes|
Les scripts pour le chargement de la coloration syntaxique ont été modifiés
pour utiliser le nouvel événement d'autocommande Syntax.
La combinaison des événements Filetype et Syntax permet d'affiner davantage la
coloration syntaxique, y compris quand elle est invoquée depuis le menu
Syntaxe. L'autocommande Filetype permet également de fixer des options et des
mappages spécifiques aux types de fichiers.
Le fichier "$VIMRUNTIME/filetype.vim" n'est pas chargé automatiquement. La
commande ":filetype on" a été ajoutée pour cela. ":syntax on" le charge aussi.
L'option 'filetype' a été ajoutée. Elle permet de déclencher l'événement
d'autocommande Filetype, tout comme l'option 'syntax' le fait pour l'événement
Syntax.
":set syntax=OFF" et ":set syntax=ON" peuvent être utilisés (dans une ligne de
mode) pour (dés)activer la coloration syntaxique dans le fichier courant.
Les commandes du menu Syntaxe ont été déplacées dans $VIMRUNTIME/menu. Le menu
Syntaxe est ajouté aussi bien avec ":filetype on" qu'avec ":syntax manual".
l'ancienne option 'filetype' est renommée 'osfiletype'. Elle ne servait que
sous RISC OS. 'filetype' est maintenant utilisée pour les types de fichiers
traditionnels.
Ajout de la commande ":syntax manual", permettant la sélection manuelle de la
syntaxe à utiliser, par exemple depuis une ligne de mode.
CONTINUATION DES LIGNES DANS LES SCRIPTS VIM *new-line-continuation*
Quand un ligne Ex commence par une contre-oblique, elle est fusionnée avec
la précédente. Cela évite le recours aux longues lignes. |line-continuation|
(Roemer) Exemple :AMÉLIORATION DES FICHIERS DE SESSION *improved-sessions*
Nouveaux arguments pour 'sessionoptions' :
- "help" Restaure la fenêtre d'aide.
- "blank" Restaure les fenêtres vides.
- "winpos" Restaure la position de la fenêtre Vim. Utilise la nouvelle
commande ":winpos".
- "buffers" Restaure les tampons cachés et déchargés. Sans cet argument,
seuls les tampons dans des fenêtres sont restaurés.
- "slash" Remplace les contres-obliques par des obliques dans les noms
de fichiers.
- "globals" Enregistre les variables globales.
- "unix" Utilise le format de fichier Unix (<NL> au lieu de <CR><NL>)
":mksession" et 'sessionoptions' sont maintenant regroupées dans la
fonctionnalité +mksession.
La première ligne de la fenêtre est également restaurée lors de l'utilisation
d'un fichier de session.
":mksession" et ":mkvimrc" n'enregistrent pas 'fileformat', ce dernier étant
normalement détecté au chargement d'un fichier.
(En grande partie réalisé par Vince Negri et Robert Webb)
AMÉLIORATION DES AUTOCOMMANDES *improved-autocmds-5.4*
Nouveaux événements :
|FileType| Quand un type de fichier a été détecté.
|FocusGained| Quand Vim obtient le focus de la saisie. (Negri)
|FocusLost| Quand Vim perd le focus de la saisie. (Negri)
|BufCreate| Émis juste après la création ou le renommage d'un nouveau
tampon. (Madsen)
|CursorHold| Émis quand aucune touche n'a été tapée pendant 'updatetime'.
Permet l'utilisation du mot sous le curseur. (Negri)
Implémentation sous Unix de cet événement d'autocommande
(Zellner). Également sous Amiga et MS-DOS.
|GUIEnter| Permet un traitement de la fenêtre d'IHM graphique après
qu'elle ait été crée (par exemple ":winpos 100 50").
|BufHidden| Quand un tampon est masqué. Utilisé pour effacer les options
de la fenêtre après qu'il ait été caché.
Émission de |BufDelete| juste avant qu'un tampon soit renommé. (Madsen)
Le motif "<amatch>" peut être utilisé comme "<afile>" pour les autocommandes,
sauf qu'il s'agit d'une correspondance pour les événements FileType et Syntax.
Quand ":let @/ = <string>" est utilisé dans une autocommande, le dernier motif
de recherche sera utilisé après la fin des autocommandes.
Le chargement des autocommandes est plus rapide, en évitant un strlen() sur
chaque motif sortant pour chaque nouveau motif en mémorisant la longueur.
CHIFFREMENT *new-encryption*
Les fichiers peuvent être chiffrés lors de l'écriture et déchiffrés lors de la
lecture. Ajout de l'option 'key', de l'argument de ligne de commande "-x" et
de la commande ":X". |encryption| (basé sur une rustine de Mohsin Ahmed)
Lors de la lecture d'un fichier, le chiffrement est automatiquement détecté.
Vim demandera alors une clef.
NOTE : La méthode de chiffrement n'est pas compatible avec Vi. Ce chiffrement
n'est pas inviolable. Cela lui permet d'être exporté en dehors des É.U.A.
PORTAGE DE L'IHM GRAPHIQUE VERS GTK *new-GTK-GUI*
Nouveau portage de l'IHM graphique vers GTK+. Inclut la barre de menu, les
menus détachables, etc. |gui-gtk|
Ajout de la commande |:helpfind|. (Kahn et Dalecki)
MODIFICATIONS DES MENUS *menu-changes-5.4*
Les menus peuvent également être utilisés en mode console. L'option 'wildmenu'
permet d'activer cette fonctionalité. Cela affiche les correspondances pour le
complètement de la ligne de commande comme un menu. Cela fonctionne comme un
sélecteur de fichier minimal.
La nouvelle commande |:emenu| permet d'exécuter un élément de menu.
Utilisation de la ligne de statut pour afficher les éléments, ou insertion
d'une ligne juste au-dessus de la ligne de commande. (Negri)
L'option 'wildcharx' permet de déclencher le complètement 'wildmenu' depuis un
mappage.
Une compilation sans les menus peut être détectée avec has("menu"). La sortie
de ":version" affiche également cette information. Il est possible de compiler
l'IHM graphique sans le support des menus. Le support de la barre d'outils
n'est possible qu'avec le support des menus.
Déplacement du menu "Windows" vers la droite (priorité 70). Cela semble plus
familier pour les personnes travaillant avec MS-Windows, sans que cela soit
gênant pour les autres.
Ajout du menu "Tampons". Il fonctionne avec les autocommandes et les fonctions
existantes. Il est possible de le désactiver en fixant la variable
"no_buffers_menu". (Aaron et Madsen)
Win32 supporte les séparateurs dans un menu : "-.*-". (Geddes)
Les séparateurs pour menus fonctionnent aussi sous Motif maintenant.
Le menu Popup fonctionne maintenant avec l'IHM graphique Motif. (Madsen)
Drapeau 'M' dans 'guioptions' : ne pas sourcer le menu système.
Tout le code a été déplacé de "gui.c" vers "menu.c".
AMÉLIORATION DU VIMINFO *improved-viminfo*
Nouveaux drapeaux pour 'viminfo' :
'!' Enregistre les variables globales dans le fichier viminfo si elles
sont en lettres majuscules. (Negri)
'h' Faire un ":nohlsearch" lors du chargement d'un fichier viminfo.
Les motifs de recherche sont enregistrés dans le fichier viminfo avec leur
décalage, leur "magic", etc. Enregistrement aussi du drapeau indiquant si la
surbrillance 'hlsearch' est activée ou non (et qui n'est pas utilisé si le
drapeau 'h' est dans 'viminfo').
Affichage d'un message d'erreur quand 'viminfo' est fixé sans virgules.
DIVERSES NOUVELLES COMMANDES *new-commands-5.4*
Operateur |g?| : codage rot13. (Negri)
Commandes |zH| et |zL| : défilement horizontal d'une demi-page.
|gm| place le curseur au milieu de la ligne d'écran. (Idées de Campbell)
Operations sur les blocs Visuel : |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|,
|v_b_<| et |v_b_>|. (Kelly)
Nouvelles commandes : CTRL-\ CTRL-N, qui ne font rien en mode Normal, et vont
dans mode Normal depuis les modes Insertion et Ligne-de-commande. Peut être
utilisé dans Vim ou d'autres programmes OLE pour s'assurer que Vim est en mode
normal, sans provoquer l'émission d'un bip. |CTRL-\_CTRL-N|
Commande ":cscope kill" pour utiliser le nom de fichier de la connexion.
|:cscope| (Kahn)
Commande |:startinsert| : démarre le mode Insertion.
Commande |:history|, pour afficher les quatre types d'historiques. (Roemer)
Commandes |[m|, |[M|, |]m| et |]M|, pour sauter vers l'avant/arrière au
début/fin d'une méthode dans une classe (Java).
":@*" exécute le registre *. |:@| (Acevedo)
Commandes |go| et |:goto| : saute au décalage en octets dans la fichier.
Commandes |gR| et |gr| : mode Remplacement Virtuel. Remplace les caractères
sans changer la disposition. (Webb)
":cd -" change de répertoire vers celui précédant la dernière commande ":cd".
|:cd-| (Webb)
Commandes de prévisualisation des marqueurs |:ptag|. Affichage du résultat
d'un ":tag" dans une fenêtre dédiée. Permet de voir le contexte du marqueur
(par exemples les paramètres d'une fonction). (Negri)
Commande |:pclose| et CTRL-W CTRL-Z : ferme la fenêtre de prévisualisation.
(Moore.)
Option 'previewheight' : hauteur de la fenêtre de prévisualisation.
Aussi |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|.
Commandes |:find| et |:sfind| : recherche un fichier dans 'path', (partage la
fenêtre) et l'édite.
La commande |:options| ouvre une fenêtre contenant les valeurs courantes de
toutes les options. ":browse set" l'ouvre également. Les options sont
regroupées par fonctionnalités. Une aide concise est donnée pour chaque
option. Tapez <CR> pour obtenir une aide supplémentaire. Éditez la valeur de
l'option et tapez <CR> sur une ligne "set" pour fixer une nouvelle valeur.
DIVERSES NOUVELLES OPTIONS *new-options-5.4*
Verrouillage du défilement : options 'scrollbind' et 'scrollopt'. Ajout de la
commande |:syncbind|. Les fenêtres concernées défilent pareillement (que ce
soit horizontalement ou verticalement). (Ralston)
Option 'conskey' pour MS-DOS. Utilisation directe des E/S de la console. Cela
devrait fonctionner avec telnet (non testé !).
Option 'statusline' : configuration du contenu de la ligne de statut. Permet
aussi d'afficher la position en octets dans le fichier. Surbrillance avec %1*
jusqu'à %9*, en utilisant les nouveaux groupes de surbrillance User1 à User9.
(Madsen)
Option 'rulerformat' : configuration du contenu de la règle, comme
'statusline'. (Madsen)
Option 'write' : quand elle est désactivée, l'écriture des fichiers n'est pas
autorisée. Permet d'éviter l'écrasement d'un fichier, même avec ":w!".
L'option |-m| de la ligne de commande réinitialise 'write'.
Option 'clipboard' : comment utiliser le presse-papiers. "unnamed" : utiliser
le registre sans nom comme "*. (Cortopassi) "autoselect" : comme avec 'a' dans
'guioptions', mais fonctionne également dans un terminal.
Option 'guifontset' : précise les polices pour la fonctionnalité +fontset dans
les versions IHM graphique X11. Permet l'utilisation de polices normales quand
Vim est compilé avec cette fonctionnalité. (Nam)
Option 'guiheadroom' : quel espace laisser au-dessus et en dessous de la
fenêtre de l'IHM graphique. Utile pour Motif, Athena et GTK.
Option 'tagstack' disponible : quand elle est désactivée, empiler un marqueur
est impossible (compatible Vi). Utile pour les mappages.
Option 'shellslash' : uniquement pour les systèmes utilisant la contre-oblique
comme séparateur dans les noms de fichiers. Cette option permet d'utiliser des
oblique normale dans les noms de fichiers lors de leur expansion. Utile quand
'shell' vaut "sh" ou "csh".
Option 'pastetoggle' : séquence de touches permettant de (dés)activer 'paste'.
Contournement du problème des mappages ne fonctionnant pas en mode Insertion
quand 'paste' est activé.
Option 'display' : quand elle vaut "lastline", la dernière ligne remplit
l'écran au lieu d'être remplacée par des lignes "@". Seuls les trois derniers
caractères sont remplacés par "@@@", pour indiquer que la ligne n'est pas
terminée.
Option 'switchbuf' : autorise la réutilisation d'une fenêtre existante pour un
tampon vers lequel on saute, ou partage la fenêtre pour ouvrir un nouveau
tampon. (Roemer)
Option 'titleold' : remplace la chaîne fixe "Thanks for flying Vim", qui était
habituellement utilisée pour fixer le titre lors de la sortie. (Schild)
SCRIPTS VIM *new-script-5.4*
La fonction |exists()| permet aussi de vérifier l'existence d'une fonction.
(Roemer) Les fonctions internes sont maintenant cherchées avec une recherche
binaire, qui est théoriquement un peu plus rapide. (Roemer)
Nouvelles fonctions :
- |getwinposx()| et |getwinposy()| : renvoient la position de la fenêtre.
(Webb)
- |histnr()|, |histadd()|, |histget()| et |histdel()| : donnent accès à
l'historique. (Roemer)
- |maparg()| : retourne le ctd d'un mappage. Basé sur une rustine de Vikas.
- |mapcheck()| : vérifie si un nom de mappage correspond avec un mappage
existant.
- |visualmode()| : retourne dans le précédent type de mode Visuel. (Webb)
- |libcall()| : appelle une fonction d'une bibliothèque. Uniquement pour Win32
pour le moment. (Negri)
- |bufwinnr()| : retrouve la fenêtre contenant le tampon spécifié. (Roemer)
- |bufloaded()| : indique si un tampon existe et est chargé.
- |localtime()| et |getftime()|: heure courante et date de dernière
modification d'un fichier. (Webb)
- |glob()| : expansion des jokers des noms de fichiers seulement.
- |system()| : récupère la sortie brute d'une commande externe (basé sur une
rustine de Aaron).
- |strtrans()| : convertit une chaîne en caractères imprimables. Utilisée dans
le script 2html.vim.
- |append()| : moyen simple pour ajouter une ligne de texte dans un tampon.
Fonctions modifiées :
- Argument optionnel pour |strftime()|, donnant un horodatage à la seconde.
(Webb)
- |expand()| fonctionne également pour des noms de fichiers n'existant pas.
Les chiffres sont autorisés dans les noms des commandes de l'utilisateurs.
(Webb)
Utilisation de "v:" pour les variables internes de Vim : "v:errmsg",
"v:shell_error", etc. Celles de la version 5.3 sont aussi accessibles sans le
"v:", pour la compatibilité ascendante.
Nouvelles variables :
Variables internes "v:warningmsg" et "v:statusmsg". Elles contiennent les
derniers messages d'avertissement et de statut émis. |v:warningmsg|
|v:statusmsg| (Madsen)
Variable "v:count1" : comme "v:count", mais vaut 1 par défaut quand aucun
quantificateur n'est utilisé. |v:count1|
Lors d'une compilation sans l'évaluation des expressions, "if 1" peut être
utilisé pour entourer les commandes non supportées, afin qu'elles ne soient
pas exécutées. Cela fonctionne comme dans Vim 4.x.
Certains scripts de support provoquaient des erreurs quand ils étaient
utilisés avec un Vim compilé avec un minimum de fonctionnalités. À présent,
"if 1" est utilisé autour de chaque code susceptible de ne pas être supporté.
Lors de l'évaluation d'une expression avec && et ||, la partie ne changeant
pas le résultat final n'est pas évaluée. Cela accélère l'évaluation et évite
des messages d'erreur. (Webb) Optimisation pour sauter les expressions
contenues dans un "if 0".
ÉVITER L'INVITE APPUYEZ-SUR-ENTRÉE *avoid-hit-enter*
Ajout du drapeau 'T' dans 'shortmess' : troncature de tous les messages qui
aurait causé une invite Appuyez-sur-entrée (unless that would happen anyway
XXX).
Le drapeau 'O' dans 'shortmess' s'applique maintenant aussi aux messages
quickfix, c'est-à-dire à la commande ":cn".
La valeur par défaut de 'shortmess' est maintenant, "filnxtToO", pour que la
plupart des messages tiennent dans la ligne de commande et ne provoque pas
d'invite Appuyez-sur-entrée.
Les messages précédent sont visibles avec la nouvelle commande |:messages|.
Certains messages sont affichés intégralement, même quand 'shortmess' demande
leur raccourcissement, car il est très problable que l'utilisateur souhaite
les voir entièrement : c'est le cas de CTRL-G et de plusieurs commandes
quickfix.
AMÉLIORATION DU MODE MISE-AU-POINT *improved-quickfix*
Analyse des lignes changement-de-répertoire de `gmake` : "make[1]: Entering
directory 'name'" : "%D" et "%X" dans 'errorformat'.
Analyse aussi des messages "Making {target} in {dir}" de make. Utile pour les
`make` non GNU. (Schandl)
Utilisation de 'isfname' pour "%f" dans 'errorformat'.
Analyse des messages multi-lignes. |errorformat-multi-line|
La commande |:clist| accepte une plage. (Roemer)
Support des noms de fichiers « globaux », pour les format d'erreurs dans
lesquels le nom du fichier n'est précisé qu'une seule fois pour plusieurs
erreurs. (Roemer)
|:cnfile| saute à la première erreur du fichier suivant.
"$*" dans 'makeprg' est remplacé par les arguments de ":make". (Roemer)
EXPRESSIONS RATIONNELLES *regexp-changes-5.4*
Dans une exprat, un '$' avant un "\)" est également considéré comme une
fin-de-ligne. |/$|
Dans les motifs, "^" après "\|" ou "\(" est un début-de-ligne. |/^| (Robinson)
Dans une exprat, devant un "\)" et un "\|", "$" comme "\$" étaient considérés
comme des fins-de-lignes. Maintenant, "$" est utilisé comme fin-de-ligne, et
"\$" pour un dollar littéralement. Pareil pour '^' après "\(" et "\|". |/\$|
|/\^|
Certains motifs de recherche sont extrêmement lents, même s'ils ne sont pas
vraiment illégaux, par exemple : "\([^a-z]\+\)\+Q". Il est possible
d'interrompre n'importe quelle recherche avec une exprat en utilisant CTRL-C.
Registre "/ : dernière chaîne recherchée (en lecture seule). (Kohan) Modifié
pour utiliser le dernier motif de recherche (celui qu'utilise 'hlsearch'). Il
est possible de fixer le motif de recherche avec ":let @/ = {expr}".
Ajout de classes de caractères aux motifs de recherche, pour éviter d'avoir à
supprimer le drapeau 'l' de 'cpoptions' : |[:tab:]|, |[:return:]|,
|[:backspace:]| et |[:escape:]|.
En ajoutant un '?' après un opérateur de comparaison dans une expression, le
comparaison est réalisée en ignorant la casse. |expr-==?|
Autres améliorations apportées entre les versions 5.3 et 5.4 :
CHANGEMENTS *changed-5.4*
Unix : utilise $TMPDIR pour les fichiers temporaires, si elle est fixée et
que le répertoire existe.
Suppression du message "Tampon vide". Il n'est pas utile et peut provoquer une
invite Appuyez-sur-entrée. (Negri)
"ex -" lit maintenant les commandes sur l'entrée standard et fonctionne en
mode silencieux. Cela permet la compatibilité avec la commande "ex" d'origine
qui est utilisée dans des scripts.
La plage par défaut pour ":tcldo" est le fichier entier.
L'annulation du mode Visuel avec <Echap> déplaçait le curseur. Il semble qu'il
n'y ait aucune bonne raison pour cela. Maintenant, le curseur est laissé où il
est.
Les commandes "grep" et ":make" voyaient " comme une partie de leurs
arguments, au lieu d'y voir le début d'un commentaire.
Dans les expressions, les opérateurs "=~" et "!~" ne sont plus affectés par
'ignorecase'.
"vimrc_example" renommé en "vimrc_example.vim", "gvimrc_example" en
"gvimrc_example.vim". Ils sont maintenant reconnus comme des scripts Vim.
"gd" ne démarre plus la recherche à la fin de la fonction précédente, mais à
la première ligne blanche au-dessus du début de la fonction courante. Cela
évite que l'utilisation de "gd" dans le première fonction trouve une variable
globale.
La valeur par défaut de 'complete' passe de ".,b" à ".,w,b,u,t,i". Bien plus
de correspondances sont trouvées, aux dépends du temps passé à les rechercher
(la recherche peut être interrompue).
Il n'est plus possible de fixer les options 'shell*' dans une ligne de mode.
Avant, un message d'avertissement était émis. Cela réduit les risques pour la
sécurité.
L'agencement de l'index des fichiers de la documentation a été modifié pour
faciliter la recherche d'un sujet.
Sur MS-DOS et Win32, quand $VIM n'était pas fixé, $HOME était utilisé. Cela
posait des problèmes quand $HOME était par exemple fixé à "C:\" pour d'autres
programmes, les fichiers de support n'étant plus trouvés. Maintenant, $HOME
n'est utilisé que pour trouver "_vimrc", "_gvimrc", etc., mais pas pour
trouver les fichiers de support.
Quand 'tags' vaut "./{nomfich}" et qu'il n'y a aucun nom de fichier pour le
tampon courant, ce nom est utilisé. Avant, il était ignoré, ce qui faisait que
"vim -t {tag}" ne trouvait pas bon nombre de marqueurs.
Lors d'une tentative pour sélectionner du texte dans la région 'scrolloff' en
faisant glisser la souris, le défilement qui en résultait rendait la
manipulation délicate. À présent, 'scrolloff' est temporairement fixé à 0 ou 1
pour éviter ce phénomène. Mais il est toujours possible de défiler vers les
lignes du haut pour étendre la sélection au-dessus du texte affiché.
La valeur par défaut de 'comments' inclut à présent "sl:/*,mb: *,ex:*/", pour
fonctionner avec les commentaires javadoc. Utile aussi pour les commentaires C
débutant par "/*******".
Le complètement des marqueurs en mode Insertion CTRL-X CTRL-] essayait tous
les marqueurs quand il était utilisé après un caractère non-identifiant, ce
qui pouvait prendre un temps considérable. Il est maintenant limité à 200
correspondances. Pareil pour le complètement de la ligne de commande.
La distribution OS/2 a été séparée en deux fichiers. Elle était trop grosse
pour tenir sur une disquette. L'archive des fichiers de support est maintenant
la même que celle utilisée pour les PC.
Dans la documentation, les éléments tels que <a-z> ont été remplacés par {a-z}
pour les arguments non-optionnels. Cela évite la confusion avec les noms des
combinaisons de touches : <C-Z> signifie CTRL-Z, et non pas un caractère
compris entre C et Z, qui s'écrit {C-Z}.
AJOUTS *added-5.4*
Support de la couleur pour les entrées termcap iris-ansi intégrées. (Tubman)
Intégration de VisVim version 1.3a. (Erhardt)
Portage Win32 de l'interface SNiFF+. (Leherbauer)
Fichier de documentation pour l'interface sniff : if_sniff.txt. (Leherbauer)
Ajout des programmes "SendToVim" et "OpenWithVim" dans le répertoire OleVim. À
utiliser avec la version OLE de gvim sous MS-Windows. (Schaller)
Intégration de Exuberant Ctags version 3.2.4 avec le support de Eiffel.
(Hiebert)
Quand un fichier en cours d'édition est effacé, émission d'un avertissement
(comme pour quand l'horodatage d'un fichier est modifié).
Intégration de versions plus récentes des scripts Awk et Perl pour générer du
HTML. (Colombo)
Support de la souris sous la console Linux avec "gpm". (Tsindlekht)
Correction sur la sécurité : interdiction de modifier 'secure' et 'exrc' dans
une ligne de mode. Quand 'secure' est activé, émission d'un avertissement lors
de la modification d'une option contenant le nom d'un programme.
L'interface Perl fonctionne maintenant avec Perl 5.005 et les threads.
(Verdoolaege)
Lors de l'affichage d'un message d'erreur à propos d'un mappage ambigu,
inclusion du mappage incriminé. (Roemer)
Édition de la ligne de commande :
- Complètement des mappages sur la ligne de commande. (Roemer)
- Complètement pour ":function", ":delfunction", ":let", ":call", ":if", etc.
sur la ligne de commande. (Roemer)
- Lors de l'utilisation du complètement CTRL-D pour les commandes utilisateur
ayant "-complete=tag_listfiles", lister également les noms de fichiers.
(Madsen)
- Complètement des argument de la commande ":command". (Webb)
- CTRL-R . en mode Ligne-de-commande insère le dernier texte inséré. CTRL-F,
CTRL-P, CTRL-W et CTRL-A après CTRL-R permettent d'insérer un objet
provenant de l'emplacement du curseur. XXX (Madsen)
Clarification du texte dans uganda.txt concernant la copie de Vim.
Mise à jour du tutoriel. Ajout de la commande "vimtutor", qui copie le
tutoriel et démarre Vim avec. `make install` copie aussi le tutoriel à
présent.
Dans la sortie de ":clist", l'entrée courante est mise en surbrillance, selon
la surbrillance 'i' (celle de 'incsearch').
Avec la commande ":clist", vous pouvez défiler vers l'arrière avec "b"
(contenu d'un écran), "u" (la moitié d'un écran) et "k" (une ligne).
Support multi-octets :
- Méthode de saisie X (XIM) pour les caractères multi-octets. Divers
corrections portant sur le support multi-octets. (Nam)
- Fonctionnalité pour les méthodes de saisie de l'hangul : |hangul|. (Nam)
- Nettoyage de la configuration pour le support multi-octects, XIM, les jeux
de polices et la saisie de l'hangul. Chacun est maintenant configurable
séparément.
- Vérification pour GTK_KEYBOARD changée en HANGUL_KEYBOARD_TYPE. (Nam)
- Ajout de doc/hangulin.txt : documentation sur le code pour la saisie de
l'hangul. (Nam)
- Support XIM pour GTK+. (Nam)
- Première tentative pour intégrer le support du codage SJIS. (Nagano)
- Quand un caractère de largeur double ne tient pas à la fin d'une ligne, un
'~' est mis à la place et la caractère est affiché sur la ligne suivante.
- Optimisation de l'affichage du texte multi-octets. (Park)
- Win32 IME : preedit style is like over-the-spot. (Nagano) XXX
- Win32 IME : IME mode change now done with ImmSetOpenStatus. (Nagano) XXX
- IHM graphique Athena : le sélecteur de fichiers peut afficher des caractères
multi-octets. (Nagano)
- Selection reply for XA_TEXT as XA_STRING. (Nagano) XXX
"runtime/macros/diffwin.vim". Mappages pour faire une fenêtre diff. (Campbell)
Ajout de ".obj" à l'option 'suffixes'.
Réduction de la taille de syntax/synload.vim en utilisant la commande
utilisteur ":SynAu".
Numérotation automatique des entrées du menu Syntax dans menu.vim.
Dans le menu Syntax, insertion de séparateurs entre les noms de syntaxe
débutant avec des lettres différentes. (Geddes)
Xterm :
- Support du presse-papiers lors de l'utilisation de la souris dans un xterm.
(Madsen)
- Lors de l'utilisation de la souris xterm, un suivi du glissement de la
souris est réalisé. Utilisation des séquences d'échappement xterm quand
c'est possible. C'est plus précis que les autres méthodes, mais requiert une
version assez récente de xterm. Activation avec "xterm2" dans 'ttymouse'.
(Madsen)
- Vérification du niveau de rustines de xterm. pour fixer la valeur de
'ttymouse'. Cette fonctionnalité n'a été ajoutée que récemment à xterm
(niveau de rustines ([patchlevel]) > 95). Utilisation de la nouvelle option
termcap 't_RV'. L'option 'ttymouse' est fixée à "xterm2" quand une réponse
valable est reconnue. Cela rend l'utilisation de la souris bien meilleure
avec un xterm.
- Support des combinaisons de touches de fonction avec Maj sous xterm.
Modification des codes pour les touches fléchées avec Maj pour correspondre
à ce que produit réellement xterm. Ajout des codes pour Maj + <Fin> et Maj +
<Debut>.
- Ajout de 't_WP' pour fixer la position de la fenêtre en pixels et de 't_WS'
pour fixer la taille de la fenêtre en caractères. Les xterms peuvent être
déplacés (utilisé pour ":winpos") et redimensionnés (utilisé pour ":set
lines=" et ":set columns=").
X11 :
- Quand on ne possède pas la sélection en mode Visuel, la zone Visuel est
affichée selon le groupe VisualNOS pour l'indiquer. (Madsen)
- Support des requêtes pour le type de presse-papiers. Utilisé sous AIX et par
dtterm. (Wittig)
- Support de la sélection de texte composé XXX (même avec une compilation sans
le multi-octets).
Fichier d'échange :
- Nouvelle variation pour le nommage des fichiers d'échange : remplacement de
séparateurs de chemin par %, tous les fichiers d'échange sont dans le même
répertoire. Utilisé quand un nom dans 'dir' se termine par deux séparateurs
de chemin. (Madsen)
- Quand un fichier d'échange est trouvé, afficher s'il contient des
modifications ou non dans le message d'information. (Madsen)
- Quand les dialogues sont supportés, un dialogue est utilisé pour demander à
l'utilisateur ce qu'il faut faire quand un fichier d'échange existe déjà.
"popup_setpos" dans l'option 'mousemodel'. Permet de déplacer le curseur lors
de l'utilisation du bouton droit de la souris.
Quand un tampon est effacé, la sélection du tampon à afficher à sa place
utilise se base maintenant sur l'entrée la plus récente de la liste des sauts.
(Madsen)
Les commandes CTRL-O et CTRL-I évitent les tampons effacés.
Un pourcentage est affiché dans la règle, s'il y a de la place.
Utilisation de autoconf 1.13 pour générer le "configure".
Intégration de get_lisp_indent() de Dirk van Deun. Produit une meilleure
indentation quand le drapeau 'p' n'est pas inclus dans 'cpoptions'.
Accélération sensible du script 2html.vim. (basée sur des idées de Geddes)
Unix :
- Ajout dans le message de version du nom de l'utilisateur ayant compilé le
système et le nom du système sur lequel il a été compilé.
- `make install` installe aussi le répertoire "tools" ([Outils]). Ils sont
maintenant disponible pour tout le monde.
- `make check` fait maintenant la même chose que `make test`. `make test`
vérifie l'indentation, l'insertion, le remplacement et le changement en mode
Visuel.
- Accélération de la comparaison d'un nom de fichier avec les tampons
existants en mémorisant le device et le numéro d'inode avec le tampon.
- Ajout des arguments "--disable-gtk", "--disable-motif" et "--disable-athena"
à `configure`, pour pouvoir désactiver une IHM graphique spécifique (quand
elle ne fonctionne pas).
- Renommage des arguments de `configure` permettant de désactiver les
vérifications pour des IHM graphique spécifiques. Cela devrait être plus
clair à présent. (Kahn)
- Sur un système Unix Digital ("OSF1"), la vérification pour la bibliothèque
ncurses a lieu avant celles pour termlib et termcap. (Schild)
- `make uninstall_runtime` n'effacera que les fichiers spécifiques à la
version. Cela permet d'effacer les fichiers de support d'une version
précédente.
Macintosh : (St-Amant)
- Glissement de la barre de défilement, comme cela a lieu sous Win32.
Déplacement du code en commun "gui_w32.c" vers "gui.c".
- Ajout des dialogues et du sélecteur de fichiers.
- fork des ressources préservé, avertissement quand il risque d'être perdu.
- Copie des attributs du fichier original au fichier nouvellement écrit.
- Bogue ":set title/notitle" résolu.
- Amélioration du complètement des noms de fichiers.
- Cadre de redimensionnement limité aux tailles caractères par caractères.
- Utilisation de rgb.txt pour davantage de couleurs (mais peut retourner de
mauvaises couleurs).
- Le menu Apple fonctionne (à côté de About...). XXX traduction About... ?
- Bordure interne compatible avec Vim.
- Supprimer un menu ne provoque plus de plantage.
- Lien faible avec Python 1.5.1 (uniquement sur PPC). Python est supporté
quand la librairie est disponble.
- Si une erreur se produit durant le sourcement du vimrc de l'utilisateur, un
dialogue d'alerte est immédiatement affiché avec le bouton OK par défaut. Il
n'y a plus de symbole de la touche "Effacer" au début de chaque ligne.
- Meilleur gestion des variables d'environnement. $VIM est maintenant
déterminée une seule fois, et non pas régénérée à chaque utilisation.
- En tâche de fond, le processeur n'est plus monopolisé.
- Dans un fichier sourcé, le format de fichier Mac est reconnu, tout comme
l'est le format de fichier MS-DOS.
Quand "unix" et "mac" sont présents dans 'fileformats', le format "mac" est
préféré quand il y a plus de caractères CR que de NL.
Lors de l'utilisation du format de fichier "mac", des CR sont utilisés au lieu
de NL, car les NL sont utilisés pour les NUL. Tous les caractères du fichier
seront préservés dans le fichier. (Madsen)
"install.exe" sous MS-DOS vérifie maintenant la présence d'une précédente
installation. Il évite de fixer $VIM et $PATH à nouveau.
Le programme d'installation pour MS-DOS/Windows peut maintenant installer Vim
dans le menu contextuel, en ajoutant deux clefs dans la base de registres.
Portage vers EGCS/mingw32. Nouveau Makefile.ming. (Aaron)
MS-DOS 16 bits : ne pas inclure les fonctionnalités pour la forme du curseur.
Cela économise quelques octets.
Support TCL pour Makefile.w32. (Duperval)
OS/2 : utilisation de argv[0] pour trouver les fichiers de support.
Quand "gf" est utilisé pour aller vers un tampon qui a déjà été utilisé, le
saut a lieu vers la ligne où le curseur se trouvait la dernière fois.
Coloration supplémentaire pour la sortie de ":tselect". Surbrillance
différente entre le nom des marqueurs et le nom des fichiers. Surbrillance du
nom des champ différente ("struct:") séparément de l'argument.
Expansion des contres-apostrophes pour les systèmes non-Unix. Basé sur une
rustine de Aaron. Permet ce genre de chose : ":n `grep -l test *.c`" et
"echo expand('`ls m*`')".
Vérification de l'option 'complete' quand elle est fixée. (Acevedo)
Le drapeau 'd' dans 'complete' recherche les macros et les noms définis.
Lors de la recherche dans les fichiers inclus et les fichiers de marqueurs
pour le complètement du mode Insertion, tester les caractères saisis en
avance, pour déterminer les correspondances au plus tôt. (Webb)
Le drapeau '.' dans 'complete' analyse entièrement le tampon courant, sans
tenir compte de 'nowrapscan'. (Webb)
Ajout du drapeau '~' à 'whichwrap'. (Acevedo)
Quand on quitte le mode Visuel (par exemple avec Echap), ne pas récupérer la
propriété de la sélection.
Dans un terminal couleur, "fg" et "bg" peuvent être utilisées en tant que noms
de couleurs. Elles représentent les couleurs de "Normal".
Nettoyage léger dans cscope. (Kahn)
Intégration du "vimspell.sh" modifié de Schemenauer.
La concaténation des chaînes dans une expression à l'aide de "." est un poil
plus rapide. (Roemer).
La commande "redir" peut rediriger vers un registre : ":redir @r". (Roemer)
Les sorties de ":marks" et ":jumps" se ressemblent. Quand une marque est dans
le fichier courant, le texte de la marque est affiché. Pareil pour ":tags".
Quand `configure` trouve ftello() et fseeko(), ils sont utilisés dans "tag.c"
(pour le cas des fichiers de marqueurs extrêmement gros).
`configure` teste l'argument "-FOlimit,2000" du compilateur. (Borsenkow)
IHM graphique :
- Lors de l'utilisation de ":gui" dans un Vim non graphique, afficher un
message d'erreur clair.
- "gvim -v" ne démarre pas l'IHM graphique (si le support de la console est
présent).
- En mode Ex, utilisation de la sélection non Visuel pour la totalité de
l'écran.
- Lors d'un démarrage avec "gvim -f" puis d'un ":gui" dans le fichier gvimrc,
Vim forkait de toute façon. Maintenant, le drapeau 'f' est mémorisé pour
":gui". Ajout de "gui -b" pour pour lancer Vim en tâche de fond quoi qu'il
advienne.
IHM graphique Motif :
- `configure` vérifie la bibliothèque "-lXp" (mais cela ne fonctionne pas
encore...).
- `configure` vérifie la présence de Lesstif dans "/usr/local/Lesstif/Motif*".
Modification de l'ordre pour laisser une version locale de Motif prendre le
pas sur la version standard du système.
IHM graphique Win32 :
- Émission d'un message d'erreur lors de l'utilisation de "-register" ou
"-unregister" avec une version non OLE.
- Utilisation des icônes de la barre d'outil GTK. La bordure de la fenêtre a
un meilleur aspect. Utilisation des poignées de redimensionnement dans les
coins inférieurs droit et gauche de la fenêtre. (Negri)
- Quand une commande externe est lancée avec ":!start" et que la commande ne
peut pas être exécutée, un message d'erreur est affiché. (Webb)
- Utilisation des poignées de redimensionnement pour les rectangles gris
situés sous les barres de défilement. Il est maintenant possible de dessiner
les barres d'outils en mode "flat", qui leur donne une meilleure apparence.
(Negri)
- Préparation pour l'ajout de MS-Windows 3.1. Principalement des changements
de WIN32 en MSWIN et USE_GUI_WIN32 en USE_GUI_MSWIN. (Negri)
Éviter d'allouer quatre fois la même chaîne dans buflist_findpat(). (Williams)
Réglage du titre et du texte de l'icône avec les options termcap 't_ts',
't_fs', 't_IS' et 't_TE'. Cela permet de le faire sur n'importe quel terminal
supportant cette méthode de réglage pour le titre et/ou le texte de l'icône.
(Schild)
Nouveau drapeau 'x' dans 'comments' : insertion automatique de la partie
finale quand son dernier caractère est tapé. Utile pour fermer un commentaire
/* */ en C. (Webb)
Quand expand() dispose d'un second argument différent de zéro, ne pas utiliser
'suffixes' et 'wildignore', retourner toutes les correspondances.
Drapeau 'O' dans 'cpoptions' : quand il n'est pas inclus, Vim n'écrasera pas
un fichier s'il n'existait pas quand l'édition a commencé mais qu'il existe au
moment de l'écriture du tampon dans le fichier. Le fichier a dû être créé en
dehors de Vim, possiblement sans que l'utilisateur le sache. Quand ce cas est
détecté après une commande shell, un message d'avertissement est émis.
Lors de l'édition d'un nouveau fichier, CTRL-G affichera [New file]. Quand des
erreurs ont eu lieu lors de la lecture du fichier, CTRL-G affichera [Read
errors].
":wall" emploie à présent un dialogue et un sélécteur de fichiers quand c'est
nécessaire.
Regroupement de certaines fonctions en fonctionnalités, principalement pour
réduire la taille de la version minimale :
+linebreak: 'showbreak', 'breakat' et 'linebreak'
+visualextra: "I"nsertion et "A"jout en mode Visuel par blocs, "c"hange
toutes les lignes d'un bloc ">" et "<" : renfoncement d'un
bloc, "r" : remplacement de la zone Visuel par un caractère.
+comments: 'comments'
+cmdline_info: 'ruler' et 'showcmd'. Remplace +showcmd.
"+title" Ne pas ajouter le code pour fixer le titre et les icônes sous
MS-DOS, cela n'est pas possible de toute façon.
+cmdline_compl Désactive le complètement de la ligne de commande à la
compilation, à l'exception des fichiers, des répertoires et
des sujets de l'aide.
Les fonctionnalités sont déplacées d'une liste d'appels de fonction vers un
tableau. Cela devrait économiser un peu d'espace.
Lors de l'entrée dans le corps d'une fonction, ajustement de l'indentation en
cohérence avec les commandes "if" et "while".
VMS : ajustement léger de os_vms.mms d'après les suggestions de Arpadffy.
Les drapeaux de l'option 'comments' acceptent maintenant un décalage. Cela
permet d'aligner les commentaires "/*****", "/* xxx" et "/*" avec le même
réglage pour 'comments'. La valeur par défaut de 'comments' les utilise.
Ajout du drapeau 'O' : ne pas utiliser cette partie pour les commandes "O".
Utile pour ":set com=sO:*\ -,mO:*\ \ ,exO:*/"
Les autocommandes FileType reconnaissent les extensions ".bak", ".orig" et "~"
et les retirent pour trouver l'extension pertinente.
Le tutoriel pour écrire un fichier de script Vim a été allongé.
Quelques éléments supplémentaires mis en surbrillance dans les fichiers de
l'aide, notamment ceux qui ne sont pas tapés littéralement.
Possibilité d'utiliser "CTRL-W CTRL-G" comme "CTRL-W g".
"make test" pour OS/2.
Ajustement de `configure` pour utiliser automatiquement l'IHM graphique sous
BeOS.
CORRECTIONS *fixed-5.4*
5.3.1 : lors de l'utilisation d'une autocommande BufWritePre qui change le nom
du tampon, de la mémoire libérée était utilisée. (Geddes)
Mac : le compilateur ne comprenait pas le début de skip_class_name().
IHM graphique Win32 :
- Lors d'une annulation dans le sélecteur de polices, ne pas émettre de
message d'erreur.
- Plantage de Vim quand un menu détachable est ouvert et que son menu est
effacé. (Negri)
- Problème avec Windows 95 lors de la restauration de la taille originale de
la fenêtre. (Williams)
- Avec 'mousehide' activé, la souris restait cachée quand un menu était appelé
avec le clavier. (Ralston)
- La fonction tempname() créait déjà un fichier. Cela posait des problèmes
lors de l'utilisation de ":w". Maintenant, le fichier est effacé.
- Le curseur disparaissait quand il finissait dans le coin supérieur gauche de
l'écran suite à un défilement. (Webb)
- Lors de l'ajout d'un sous-menu dans un menu détaché, ce dernier n'était pas
mis à jour.
- la bulle d'aide des menus utilisait celle des la barre d'outil. (Negri)
- activer 'notitle' ne retirait pas le titre. (Steed)
- Utiliser ":!start cmd" faisait défiler l'écran d'un ligne vers le haut, et
n'attendait pas de retour quand la commande n'était pas trouvée.
Interface cscope : le tri des correspondances était faux. Le démarrage de
l'interface pouvait échouer. (Kahn)
IHM graphique Motif : impossible de compiler avec Motif 1.1, car certaines
fonctionnalités pour les menus détachables n'était pas dans des #ifdef.
`configure` pouvait parfois ne pas compiler ou lier correctement le programme
de test de sizeof(int). Cela posait des problèmes d'alignement dans
l'allocation des structures pour l'annulation. Ajout d'une vérification pour
s'assurer que SIZEOF_INT est non nul.
Ajout d'une vérification dans `configure` pour voir si "strings.h" peut être
inclus après "string.h". Certains systèmes ne le supportent pas.
Certains systèmes ont besoin d'inclure les deux fichiers. Ajustement de vim.h
en conséquence. Suppression de l'inclusion de "string.h" dans "os_unixx.h",
puisqu'il l'est déjà dans "vim.h". (Savage)
AIX : la définition de _NO_PROTO dans "os_unix.h" provoquait un conflit entre
"string.h" et "strings.h", mais après que la vérification de `configure` l'ait
annoncée comme OK. Définition de _NO_PROTO pour AIX dans la vérification de
`configure`. (Winn)
Lors de la fermeture d'une fenêtre CTRL-W c, la valeur de 'hidden' n'était pas
prise en compte, le tampon était toujours déchargé. (Negri)
Makefile Unix : "make install" essayait toujours de renommer l'ancien
exécutable et de le supprimer. Cela causait l'émission d'un message d'erreur
lorsqu'il n'existait pas. Ajout d'un test d'existence pour l'ancien
exécutable.
La ligne de commande pour "make install" pouvait devenir trop longue, à cause
des nombreux fichiers de syntaxe. Un "cd" est effectué auparavant pour en
réduire la longueur.
Sur RISC OS et MS-DOS, la lecture d'un fichier pouvait échouer à cause de
l'utilisation du nom court du fichier, qui pouvait être faux après un ":!cd".
Dans les versions MS-DOS, le mauvais "install.exe" était inclus (il
nécessitait MS-Windows). À présent, la version d'"install.exe" incluse est la
même que la version de Vim. Il supporte maintenant les noms de fichiers longs
quand cela est possible.
Pendant l'enregistrement, lors de son arrêt au milieu du mode Insertion avec
CTRL-O q, le CTRL-O était également enregistré.
Version MS-DOS 32 bits : "vim \fichier" dans un sous-répertoire aboutissait à
"Nouveau fichier" pour "fichier" dans le répertoire courant, alors que
"\fichier" existe. Quand "fichier" existait dans le répertoire courant, cela
n'arrivait pas.
MS-DOS : la souris ne pouvait pas aller au-delà de la colonne 80 en mode 132
colonnes. (Young)
"make test" échouait dans le RPM RedHat car 'compatible' est désactivé par
défaut.
En mode Insertion, <C-O><C-W><C-W> change de fenêtre, mais la barre de statut
n'est pas mise à jour tant qu'un caractère n'a pas été tapé.
MS-DOS : les options d'environnement en minuscule ne fonctionnaient pas, alors
que c'était le cas avec les version Win32. (Negri)
Après ":nohlsearch", une commande de marqueurs réactivait la surbrillance.
Lors de l'utilisation de la commande "append" sur la dernière ligne dans une
autocommande, Vim plantait.
RISC OS : les bumpers (?) de défilement ne fonctionnaient pas correctement.
(Leonard)
"zl" et "zh" pouvaient déplacer le curseur, mais ne fixaient pas la colonne
dans laquelle "k" (par exemple) aurait placé le curseur.
lors d'un ":set all&", la valeur de 'scroll' n'était pas fixée correctement.
Cela provoquait un message d'erreur lors du réglage suivant de n'importe
quelle option numérique.
Quand la surbrillance de 'hlsearch' avait été désactivée avec ":nohlsearch",
la recherche incrémentale la réactivait trop tôt.
Lors du listage des marqueurs avec ":tselect", puis l'utilisation d'une
commande différente d'une recherche, et que le dernier caractère était égal au
premier (par exemple "99"), le dernier caractère n'était pas affiché.
Lors de la recherche de marqueurs avec ":tag", Vim supposait que toutes les
correspondances étaient trouvées alors qu'il y en avait encore (par exemple
dans un autre fichier de marqueurs).
Win32 : "c:\" (par exemple dans un fichier de marqueurs) n'était pas reconnu
comme un chemin absolu quand la casse était différente.
Certains xterm (Debian) envoient <Esc>OH pour HOME et <Esc>OF pour END. Ajout
de ces codes dans le terminal intégré.
En mode Ex, tout CR était perçu comme une fin de ligne. Seuls les NL devraient
être pris en compte de cette manière. Cela pose problème avec
":s/zorg/du^Mtexte/".
Dans "menu.vim", un vmenu était utilisé pour recouvrir un amenu. Cela ne
fonctionnait pas, car le fichier des menus du système ne recouvre pas les
menus existants. Ajout d'un vunmenu explicite pour résoudre ce problème.
La vérification de `configure` pour la bibliothèque du terminal pouvait
trouver une bibliothèque ne fonctionnant pas à l'exécution (Solaris :
librairie partagée non trouvée). Ajout d'un test pour vérifier qu'un programme
avec tgoto() fonctionne correctement.
Unix : "echo -n" dans le Makefile ne fonctionne pas sur tous les systèmes,
provoquant des erreurs de compilation dans "pathdef.c". Il est remplacé par
"tr".
Perl : DO_JOIN était redéfini par Perl. Il est « dé-définit » dans les
fichiers pour Perl.
Diverses corrections pour XIM et le multi-octets :
- Correction du problème où l'utilisateur ne peut pas voir la langue dans
laquelle il tape avec la méthode XXX off-the-spot. (Nagano)
- Correction de la position de pré-édition en utilisant la text/edit area XXX
(using gui.wid). (Nagano)
- Suppression des codes 'fix dead key' (correction pour les touches mortes).
Ils étaient nécessaires car XNFocusWindow valait "x11_window", il vaut
maintenant gui.wid. (Nagano) XXX
- Suppression de plusieurs avertissements du compilateurs et correction
d'erreurs de frappe. (Namsh)
- Pour la barre de statut, vérification de la version de GTK+ à l'exécution.
Cela semble préférable à une vérification à la compilation. (Namsh)
- Suppression d'un FIXME pour GTK+-XIM. (Namsh)
- XIM : les touches mortes ne fonctionnaient pas pour le Tchèque. (Vyskovsky)
- Multi-octets : Si l'utilisateur ne saisit que des trois-octets, comme
mb1_mb2_eng ou eng_mb1_mb2, Vim pouvait les convertir en caractères
spéciaux. (Nam)
- Athena / Motif avec XIM : correction de la zone de pré-édition. (Nam)
- XIM : les chaînes composées étaient parfois ignorées. Vim plantait quand une
chaîne composée dépassait 256 octets. Le contrôle de la géométrie pour la
Méthode de Saisie (IM) est corrigé. (Nam, Nagano)
- Multi-octets : la largeur du curseur désactivé sur un caractère de largeur
double était fausse. (Nagano)
- Avec aucune IHM graphique, sélectionner XIM posait des problèmes à la
compilation. XIM est automatiquement désactivé quand aucune IHM graphique
n'est choisie par `configure`.
- Motif et Athena : quand XIM était compilé, mais qu'aucune méthode de saisie
n'était activé, une ligne de statut était quand même affichée. À présent, la
ligne de statut n'est pas affichée si la méthode de saisie ne fonctionne
pas. (Nam)
Win32 : le bulle d'aide n'était pas effacée lors de la sélection d'un menu
parent (elle l'était seulement à la sélection d'une entrée de menu). (Negri)
X sous Unix : certains systèmes plantaient à la sortie, à cause de l'appel
XtCloseDisplay(). Il est supprimé, n'étant pas vraiment nécessaire lors de la
sortie.
Win32 : plantage lors de l'appui sur une touche quand compilé avec Borland
C++. (Aaron)
Lors du tests pour les fichiers de la librairie Motif, préférer le même
emplacement que celui des fichiers inclus (avec "include" remplacé par "lib")
plutôt que d'autres.
IHM graphique Athena : "XtOffset()" changé en "XtOffsetOf() dans
"gui_at_fs.c", comme utilisé dans "gui_x11.c".
Win32 : lors du test de l'horodatage d'un fichier sur une disquette, une boîte
de dialogue apparaîssait après le retrait de la disquette. Retourne maintenant
une erreur. (Negri)
Win32 OLE : quand elle était forcée à venir au premier-plan, une fenêtre
minimisée restait minimisée. Maintenant, sa taille est restaurée. (Zivkov)
Il n'y avait aucune vérification de 'shiftwidth' pour une valeur positive. Une
valeur négative pouvait causer un blocage et une valeur nulle un plantage.
IHM graphique Athena : la barre de défilement horizontale n'était pas
rafraîchie correctement lors d'un clic gauche ou droit sur le curseur.
Lors d'une sélection Visuel par bloc dans une fenêtre, et du défilement d'une
autre fenêtre, des erreurs d'accès à des numéros de lignes non existantes
pouvaient être émises.
Quand 'matchpairs' contenait "`:'", sauter du ` au ' ne fonctionnait pas
correctement.
Changement des '\"' en '"' pour les rendre compatibles avec les vieux
compilateurs C.
L'expansion de la ligne de commande pour les mappages causait l'échec des
commandes de mappages dans des scripts quand une tabulation sépare le ctg du
ctd. La tabulation est supposée séparer le ctg et le ctd quand il n'y a aucun
mappage à développer.
Lors de l'édition d'un fichier contenant de très longues lignes avec
'scrolloff' activé, "j" amenait parfois à une ligne non affichée.
Lors de l'édition d'un fichier en lecture seule, il était intégralement lu et
mis en mémoire, même s'il ne rentrait pas. À présent, un fichier d'échange est
créé pour les fichiers en lecture seule quand la mémoire manque lors de la
lecture de ce fichier.
Lors de l'utilisation de ":set cino={s,e-s", une ligne suivant un "} else {"
n'était pas indentée correctement. Ajout d'une vérification dans "test3.in".
Le mappage hébreu pour la ligne de commande était mémorisé pour la ligne de
commande suivante. Cela n'est pas très utile, la commande n'étant pas en
hébreu. (Kol)
Lors du complètement de noms de fichiers avec des espaces, comme "Program\
files", cela ne fonctionne pas. Pareil pour les commandes utilisateur.
Déplacement de backslash_halve() vers mch_expandpath().
Lors de l'utilisation de "set mouse=a" en mode Ex, les événements de la
souris étaient gérés comme du texte tapé. Taper "quit" ensuite perturbait le
comportement de la souris du xterm.
Lors de la répétition d'une insertion avec "." contenant un CTRL-Y, le chiffre
5 était inséré "053".
Copier une zone Visuel, avec le curseur au-delà de la ligne, ne déplaçait pas
le curseur sur la ligne. Pareil pour "~", "u", "U" et "g?".
Win32 : la valeur par défaut pour 'grepprg' pouvait être "findstr /n", même
quand il n'existe aucun findstr.exe (Windows 95). Sa présence est maintenant
vérifiée, et la valeur par défaut devient "grep -n" s'il n'existe pas.
Comme gui_mouse_moved() insérait un clic gauche de la souris dans le tampon
d'entrée, le remappage du clic gauche provoquait des phénomènes étranges. À
présent, un autre code est inséré dans le tampon d'entrée. Insertion aussi de
l'événement bouton gauche relaché, pour éviter un problème avec
":map <LeftMouse> l" avec lequel le relâchement suivant est perçu comme le
relâchement d'un clic pour obtenir le focus.
Avec 'wrap' activé, lors de l'utilisation d'une ligne qui ne tient pas sur
l'écran, si le début d'une zone Visuel était avant le haut de l'écran, il n'y
avait pas de surbrillance. De même, 'showbreak' ne fonctionnait pas
correctement.
MS-DOS, Win32 : le motif "[0-9]\+" ne fonctionnait pas dans les autocommandes.
Lors de la création d'un fichier d'échange pour un tampon qui n'était pas le
tampon courant, il pouvait y avoir un mélange avec le nom de fichier court,
aboutissant à un nom long là où un nom court était nécessaire. makeswapname()
appelait modname() au lieu de buf_modname().
Quand une fonction provoquait une erreur, et que le message d'erreur était
très long à cause d'une récursivité, cela pouvait provoquer un plantage.
La comparaison des 'suffixes' était toujours sensible à la casse. Cette
dernière est maintenant ignorée pour MS-DOS, Win32 et OS/2.
L'utilisation de CHARBITS dans "regexp.c" ne fonctionnait pas sur certains
Linux. Il n'est plus utilisé.
Lors de la génération d'un fichier de script, 'cpo' était vidé. Cela
provoquait la disparition des contres-obliques dans les mappages. Fixez-la à
"B" pour éviter ce problème.
Beaucoup d'erreurs de frappe dans la documentation. (Campbell)
Lors de l'édition d'un tampon (caché) existant, sauter vers la dernière
position occupée par le curseur. (Madsen)
Sur une Sun, l'écran du xterm n'était pas restauré correctement lors d'une
suspension. (Madsen)
Lors du traitement d'un $VIMINIT, 'nocompatible' n'était fixée qu'après ce
traitement.
Unix : l'attente d'un caractère n'était pas unifiée pour GPM, SNiFF et le
presse-papiers du xterm. Mise à niveau du code pour utiliser select()
également.
Lors de l'exécution de commandes externes depuis l'IHM graphique, les
caractères tapés en avance était perdus. Ajout de code pour en conserver
autant que possible.
Quand la hauteur d'une fenêtre faisait moins de 5 lignes, <PageSuiv>
n'utilisait pas le recouvrement d'une ligne, tandis que <PagePrec> le faisait.
<PagePrec> utilise maintenant le même recouvrement que <PageSuiv>, de façon à
ce que l'utilisation des deux affiche toujours les mêmes lignes.
Suppression de quelques fonctions et variables inutilisées (trouvées avec
lint).
Le complètement avec le dictionnaire n'utilisait pas 'infercase'. (Raul)
Les tests de `configure` échouaient quand la bibliothèque Perl n'était pas
dans LD_LIBRARY_PATH. La librairie Perl n'est plus utilisée pour les tests de
`configure`, elle est ajoutée sur la ligne de l'éditeur de lien uniquement à
l'édition des liens de Vim.
Lors de l'utilisation de ncurses/terminfo, il était possible d'obtenir "%d" au
lieu de "%p1%d" pour les entrées termcap 't_Sf' et 't_Sb'. Dans ce cas, les
couleurs d'arrière-plan claires ne fonctionnaient pas.
IHM graphique GTK avec ncurses : plantage dans tputs() lors du démarrage.
tputs() n'est plus utilisée quand l'IHM graphique est active.
Il était possible d'utiliser la commande ":let" pour fixer les variables
"count", "shell_error" et "version", mais cela ne fonctionnait pas. Un message
d'erreur est émis lors d'une tentative pour les fixer.
Sur FreeBSD 3.0, tclsh s'appelle tclsh8.0. Ajustement de "configure.in" pour
le trouver.
Quand Vim est construit avec -lncurses, mais que python utilise -ltermcap,
cela pose des problèmes : "OOPS". `configure` retire maintenant le -ltermcap.
:@" et :*" ne fonctionnaient pas correctement, parce que le " était reconnu
comme un début de commentaire.
IHM graphique Win32 : minimiser la console dans laquelle s'exécutait une
commande de filtrage posait des problèmes pour déterminer quand cette commande
prenait fin. (Negri)
Après l'exécution d'une commande de filtrage depuis un xterm, la souris était
désactivée. Cela recommençait à fonctionner après un changement de mode.
IHM graphique Mac : plantage dans newenv(). (St-Amant)
Les menus et mappages de "mswin.vim" ne prenaient pas en charge correctement
les textes se terminant par un NL.
La commande ":k" ne vérifiait pas si ses arguments étaient valides, ni la
présence de caractères supplémentaires. À présent, un message explicite est
donné. (Webb)
Sur SGI, la fonction signal() n'a pas toujours trois arguments. Test de
"struct sigcontext" pour le déterminer. Cela peut rester incorrect
toutefois...
Plantage possible lors de l'utilisation de 'hlsearch' et que le motif de
recherche est "^".
Quand des motifs de recherche étaient enregistrés puis restaurés, le statut de
no_hlsearch ne l'était pas (depuis la commande ":nohlsearch").
Lors de l'utilisation de setline() pour raccourcir une ligne, la position du
curseur n'était pas ajustée.
MS-DOS et Win95 : lors d'une tentative pour éditer un fichier et de l'ajout
accidentel d'une oblique ou d'un contre-oblique à la fin, le fichier était
effacé. Probablement en essayant de créer le fichier d'échange. Vérification
explicite d'une oblique ou contre-oblique finale avant de tenter la lecture
d'un fichier.
IHM graphique X11 : quand le démarrage de l'IHM graphique échoue et qu'un
signal mortel est reçu pendant le réglage du titre, un blocage se produit
quand l'application tente de quitter, car le titre est à nouveau réinitialisé.
Maintenant, mch_settitle() n'est plus utilisable récursivement.
IHM graphique X11 : quand le démarrage de l'IHM graphique échoue, la tentative
suivante pour la démarrer provoque un plantage car argv[] a été libéré et
x11_display est remis à NULL.
Win32 : quand $HOME était fixé, "~user" était écrit dans le fichier d'échange,
comme il n'est pas comparable à un nom de fichier, le message d'attention
n'était jamais affiché. À la place, le chemin complet est écrit dans le
fichier d'échange.
Console Win32 : des caractères surprenants se trouvaient à la fin du message
du fichier d'échange de "vim -r" (sortie directe de CR CR LF).
MS-DOS 32 bits : "vim -r" mettait le texte en haut de la fenêtre.
IHM graphique : avec 'mousefocus' activé, les codes obtenus avec la souris
étaient du texte tel que "!sleep 100" ou "Q".
IHM graphique Motif et Win32 : lors de la modification de 'guifont' en une
police de la même taille, l'écran n'était pas rafraîchi.
Unix : lors de l'utilisation de ":make" et d'un saut vers un fichier "b.c"
déjà ouvert au travers du lien symbolique "a.c", un nouveau tampon était
ouvert plutôt qu'utiliser l'existant.
L'insertion de texte dans le tampon courant pendant le sourcement du fichier
vimrc provoquait un plantage ou un blocage. Le fichier d'échange pour le
tampon courant n'était jamais alloué. À présent, il est alloué dès qu'une
écriture a lieu dans le tampon.
MS-DOS 32 bits : le fond "lightblue" fonctionnait pour le texte, mais pas pour
les parties non dessinées, qui restaient noires.
MS-DOS : les couleurs de la console n'étaient pas restaurées lors de la
sortie.
Lors de l'enregistrement, avec 'cmdheight' valant 2, taper <Echap> en mode
Insertion provoquait le doublement du message d'enregistrement.
Des messages "file changed" fallacieux était émis sous MS-Windows. À présent,
un écart d'une seconde est toléré, comme pour Linux.
IHM graphique : lors de la sortie du mode Ex, les barres de défilement
n'étaient pas mise à jour.
Win32 : la copie vers le presse-papiers d'un texte contenant un <CR>, suivie
par un collage, remplaçait le <CR> par un <NL> et oubliait le caractère
suivant.
La saisir d'un caractère de largeur double ne fonctionnait pas quand le second
octet était compris dans [xXoO]. (Eric Lee)
vim_realloc était défini et disposait aussi d'un prototype dans
"proto/misc2.pro". Cela provoquait des conflits sous Solaris.
Les motifs dans les autocommandes étaient traités de manière différente sous
MS-DOS et Cie que sous Unix. Maintenant, le traitement est identique, même
quand des contres-obliques sont utilisées.
Lors d'une double pression sur <Tab> pour le complètement de la ligne de
commande, alors qu'il n'y a aucune correspondance, la tabulation était
insérée. (Negri)
Bogue avec MS-Visuel C++ 6.0 lors de la compilation avec optimisation de
"ex_docmd.c". (Negri)
Le test du résultat de mktemp() était mauvais. Il pouvait causer un plantage.
(Peters)
IHM graphique : lors de la vérification du fichier ".gvimrc" dans le
répertoire courant, la présence d'un fichier "_vimrc" n'était pas testée.
IHM graphique Motif : lors de l'utilisation du menu contextuel et de l'ajout
d'un élément dans la barre de menu, cette dernière se retrouvait très high
XXX.
Les clics de la souris et les touches spéciales (par exemple les touches
fléchées) quittait l'invite Appuyez-sur-entrée. Ils sont maintenant ignorés.
À l'invite Appuyez-sur-entrée, la sélection xterm ne fonctionnait pas. Le
drapeau 'r' de 'mouse' est maintenant utilisé aussi pour l'invite
Appuyez-sur-entrée.
Lors de la sélection d'une zone Visuel de plus de 1023 lignes, avec
'guioptions' valant 'a', l'affichage pouvait être sali à cause d'un message
dans free_yank(). Suppression de ce message, sauf pour Amiga.
Déplacement de la sélection automatique de ui_write() vers les fonctions de
mise à jour de l'écran. Cela évite des comportements inattendus dans les
fonctions de bas-niveau. Cela autorise aussi différents retours visuels sur
l'appropriation de la sélection.
Incompatibilité Vi : l'utilisation de "i<CR>" dans une indentation, avec 'ai'
activé, conservait l'indentation originale au lieu de la réduire à la position
du curseur. (Webb)
":echo x" ne s'arrêtait pas avec "q" à l'invite Appuyez-sur-entrée.
Diverses corrections sur Macintosh. (St-Amant)
Avec 'selectmode' valant "exclusive", la sélection d'un mot suivie de CTRL-]
incluait le caractère sous le curseur.
Utiliser ":let a:name" dans une fonction pouvait provoquer un plantage. (Webb)
Lors de l'utilisation de ":append", un ligne vide n'était pas décalée vers le
haut.
MS-DOS et Cie : un nom de fichier commençant par '!' ne fonctionnait pas.
Ajout de '!' dans la valeur par défaut de 'isfname'.
BeOS : problème de compilation avec le prototype de skip_class_name. (Price)
Après le coupage de plusieurs lignes, avec "de" par exemple, l'utilisation de
"U" était toujours possible et ne fonctionnait pas correctement.
Amiga : impossible de compiler "ex_docmd.c", devenu trop gros. Plusieurs
fonctions déplacées vers "ex_cmds.c".
La fonction expand() ajoutait une oblique finale aux répertoires.
Ne plus afficher de message d'erreur lors de la tentative d'assigner une
valeur à l'argument d'une fonction. (Webb)
Déplacement de l'inclusion de "sys/ptem.h" après celle de termios. Nécessaire
pour Sinix.
Interface OLE : ne pas effacer l'objet dans CVimCF::Release() quand le
compteur de référence devient nul. (Cordell).
VisVim pouvait encore planter à la sortie. (Erhardt)
"case a: case b:" (deux instructions "case" sur une seule ligne) provoquait
l'alignement sur la seconde. Un 'sw' est maintenant utilisé pour cette
indentation. (Webb)
L'initialisation de la police n'était pas correcte pour l'IHM graphique
Athena/Motif. Déplacement de l'appel highlight_gui_started() de gui_mch_init()
vers gui_mch_open(). (Nam)
En mode Remplacement, un retour arrière sur une tabulation placée en amont de
l'endroit où le mode Remplacement a débuté, alors que 'sts' est différent de
'ts', effaçait la tabulation.
Console Win32 : lors de l'exécution de commandes externes et du passage d'une
console à l'autre, Vim copiait le texte entre les tampons. Cela provoquait un
salissement de l'écran quand l'expansion des contres-apostrophes était
utilisée.
":winpos -1" suivi de ":winpos" donnait un mauvais message d'erreur.
Windows Commander crée des fichiers appelés c:\tmp\$wc\abc.txt. Ne pas retirer
la contre-oblique avant le '$'. Les variables d'environnement n'étaient
développées de toute façon, à cause de la contre-oblique avant le dollar.
L'utilisation de "-=" avec ":set" pouvait retirer la moitié de la valeur de
l'option quand elle contenait un "\,". Par exemple ":set path+=a\\,b" suivi de
"set path-=b" supprimait ",b".
Lors de la sélection Visuel de lignes, avec 'selection' valant "inclusive", en
incluant le dernier caractère de la ligne, "<<" décalait une ligne en trop.
Pareil pour les autres opérateurs travaillant toujours sur des lignes.
"link.sh" modifiait "-lnsl_s" en "_s" lors de la recherche de "nsl" pour le
supprimer. Maintenant, seul le mot concerné est supprimé.
Lors d'un saut vers une marque ou d'un "fz", et qu'une erreur se produit, la
colonne courante était perdue. Par exemple en faisant "$fzj".
Il n'était pas possible d'interrompre la commande "g CTRL-G", alors qu'elle
peut prendre un certain temps.
Certains terminaux distinguent <F4> et <xF4>. <xF4> était toujours interprété
comme <F4>. À présent, <xF4> est mappé à <F4>, pour que l'utilisateur puisse
passer outre.
Lors de la compilation de "os_win32.c" avec MIN_FEAT, apply_autocmds() ne
devrait pas être utilisée. (Aaron)
Cette autocommande bouclait sans fin :
":au FileChangedShell * nested e <afile>". Maintenant, "nested" est impossible
pour FileChangedShell. (Roemer)
Lors de l'évaluation d'un ":elseif" non exécuté de toute façon, ignorer les
erreurs. (Roemer)
IHM graphique Lesstif : la barre détachable était le dernier élément, au lieu
d'être le premier.
IHM graphique Motif : les couleurs des éléments détachables étaient fausses
quand le drapeau 't' était ajouté à 'guioptions' après coup. Quand le drapeau
't' était exclus de 'guioptions', les nouveaux menus présentaient toujours un
éléments détachable.
Un numéro d'inode peut être "long long". Utiliser "ino_t" au lieu d'un "long".
Ajout du test pour "ino_t" dans `configure`.
La recherche binaire des marqueurs utilisait une position dans le fichier de
type "long" plutôt que "off_t".
Le complètement des marqueurs en mode Insertion n'utilisait pas 'ignorecase'
correctement.
En mode Insertion, les touches <xFn> n'étaient pas mappées correctement au
<Fn> pour les mappages par défaut. Cela provoquait des erreurs avec ":mkvimrc"
et ":mksession".
Lors d'un saut vers une autre fenêtre pendant le mode Insertion, un
avertissement "warning: changing readonly file" était émis, même si aucun
changement n'avait eu lieu.
Une '(' ou une '{' dans un commentaire final "//" perturbait l'indentation C.
Lors de l'utilisation de deux étiquettes l'une sous l'autre, la seconde
n'était pas indentée correctement. Les commentaires pouvait corrompre
l'indentation C en de nombreux endroits. (Roemer)
Il était possible d'effacer ou de redéfinir une fonction alors qu'elle était
utilisée. Cela pouvait provoquer un plantage.
Dans une fonction, il semble logique de préfixer "g:" pour une variable
système, mais cela ne fonctionnait pas. (Roemer)
Saisie de l'hangul : le tampon subissait un débordement quand l'utilisateur
saisissait une séquence de touches invalide. (Nam)
Quand les autocommandes BufLoad et BufEnter modifiaient la première ligne du
tampon de la fenêtre, elle était outrepassée et le curseur était placé à la
moitié de la fenêtre. À présent, le curseur n'est placé à la moitié de la
fenêtre uniquement si les autocommandes n'ont pas changé la première ligne.
L'appel à exists("&option") retournait toujours 1. (Roemer)
Win32 : la mémoire disponible n'était pas vraiment prise en compte. (Williams)
Un espace blanc après le début d'un commentaire automatiquement inséré n'était
pas supprimé quand 'ai' était désactivée et que <CR> était pressé juste après
son insertion. (Webb)
Quelques menus possédaient des accélérateurs dupliqués. (Roemer)
Coquilles dans la documentation, quelques doublons "the the". (Roemer)
Prototypes manquants pour Macintosh. (Kielhorn)
Win32 : lors de l'utilisation de 'shellquote' et 'shellxquote', "!start cmd"
n'était pas exécuté dans un processus séparé.
Lors du redimensionnement d'une fenêtre, provoquant l'enroulement ou le
désenroulement de la ligne avant le curseur, ce dernier était affiché au
mauvais endroit.
Il restait une bonne quantité de code inutile lors de la compilation avec un
minimum de fonctionnalités.
Lors d'une commande ":%s///" réduisant la longueur des lignes, de sorte que
les ligne se trouvant au-dessus de la position du curseur n'étaient plus
enroulées, la position du curseur n'était pas mise à jour.
get_id_list() pouvait allouer un tableau trop petit d'un élément, quand
l'élément "contains=" comprenait un joker correspondant avec un nom de groupe
ajouté juste après. Par exemple : "contains=a.*b,axb". Un message d'erreur est
émis.
Plantage lors du copiage d'une zone Visuel suivie de l'utilisation du bouton
du milieu de la souris. Quand le presse-papiers ne fonctionne pas, "* utilise
toujours "" à présent.
Win32 : ":buf a\ b\fichier" ne fonctionnait pas, il était interprété
"ab\fichier".
"ts ident", suivi de <CR>, avec 'cmdheight' valant 2 : la ligne de commande
n'était pas effacée, l'invite de tselect se trouvait alors sur
l'avant-dernière ligne.
mksession ne restaurait pas la colonne du curseur correctement quand il se
situait après une tabulation. Il était impossible de récupérer toutes les
fenêtres dans un terminal plus petit. Les fenêtres n'étaient pas toutes
restaurées quand "winsize" n'était pas inclus dans 'sessionoptions'. (Webb)
Le complètement de la ligne de commande pour ":buffer" dépendait de la casse
sur Unix, mais pas sur MS-DOS et Cie. 'ignorecase' n'est plus utilisée, la
sensibilité à la casse dépend maintenant de celle des noms de fichiers (comme
lors de l'expansion des noms de fichiers).
IHM graphique Win32 : (Negri)
- Le rafraîchissement du fond provoquait un clignotement lors du
redimensionnement de la fenêtre. Suppression de _OnEraseBG(). Suppression
des drapeaux CS_HREDRAW et CS_VREDRAW pour sndclass.style.
- Certaines parties de la fenêtre était dessinées en gris, au lieu de la
couleur prévue par le jeu de couleurs de l'utilisateur.
- Déposer un fichier sur gvim n'activait pas la fenêtre.
- Quand il n'y a pas de menu ('m' absent de 'guioptions'), ne jamais utiliser
la touche Alt.
IHM graphique : lors du redimensionnement, la hauteur de la fenêtre était
toujours un peu plus petite. Maintenant, elle est arrondie à la taille de
cellule la plus proche. (Negri)
Dans Vi, les commandes ")" et "(" ne s'arrêtent pas sur un espace unique après
un point. Ajout du drapeau 'J' dans 'cpoptions' pour assurer la compatibilité
avec Vi. (Roemer)
Lors de l'enregistrement d'une session sans tampon chargé, une commande
":normal" se retrouvait sans argument. (Webb)
Fuites de mémoire corrigées : (Madsen)
- eval.c : libération de structures func oubliée lors de l'effacement de la
fonction.
- ex_docmd.c : libération de la chaîne après "<sfile>" oubliée.
- misc1.c : fuite quand le complètement n'avait aucune correspondance.
- os_unix.c : libération de l'exprat oubliée après le complètement de
fichiers.
Plantage possible lors de l'utilisation d'un tampon sans nom. (Madsen)
Plantage possible lors du complètement d'un nom de fichier, à cause de
backslash_halve(). (Madsen)
":@a" faisait des mappages avec le registre a, ce qui n'est pas compatible
avec Vi. (Roemer)
":g/foo.*()/s/foobar/_&/gc" fonctionnait correctement, mais le "n" suivant
cherchait "foobar" et affichait "/foo.*()". (Roemer)
OS/2 : get_cmd_output() n'était pas inclus. Le fichier $VIM/.vimrc n'était pas
vérifié.
Le complètement des options sur la ligne de commande ne fonctionnait pas après
"+=" et "-=".
`configure` Unix : les tests de memmove(), bcopy() et memcpy() tentaient de
redéfinir ces fonctions, ce qui pouvait échouer si elles étaient déjà
définies. Utilisation de mch_memmove() pour les redéfinir.
Unix : ":let a = expand("`xterm`&")" démarrait un xterm de manière asynchrone,
mais ":let a = expand("`xterm&`")" générait un message d'erreur, car la
redirection se trouvait après le '&'.
IHM graphique Win32 : les boutons des dialogues n'étaient pas sélectionnés
correctement avec les touches fléchées quand le bouton par défaut n'est pas le
premier. (Webb)
Le message "File has changed since editing started" (quand le fenêtre récupère
le focus) n'était pas toujours visible. (Webb)
Lors d'une invocation avec "ex nomfich", le message donnant le nom du fichier
était écrasé par le message "entering Ex mode".
La sortie de ":tselect" listait les noms de fichiers directement depuis le
fichier de marqueurs. Maintenant, cette liste est corrigée selon l'emplacement
du fichier de marqueurs.
Quand 'backspace' valait 0, il était possible de faire un retour arrière
malgré l'autoindentation. Cela n'est plus permis (compatible Vi).
En mode Remplacement, quand 'noexpandtab' et 'smarttab' étaient activés, à
l'insertion de tabulations, le retour arrière ne fonctionnait pas correctement
pour les tabulations insérées au début de la ligne (à moins d'avoir aussi
fixé 'sts'). De même, lors du remplacement des premiers caractères non-blancs
juste par un espace, le calcul de l'indentation était effectué sur le premier
caractère non-blanc plutôt que sur le caractère sous le curseur.
Avec 'sw' à 4, 'ts' à 8 et 'smarttab' activé : quand une tabulation était
ajoutée à la suite de quatre espaces (remplacés par une tabulation), il était
impossible de faire un retour arrière sur cette tabulation.
En mode Insertion, avec 'bs' à 0, il était impossible de faire un retour
arrière en amont de l'autoindentation, même quand elle était supprimée avec
CTRL-D.
Lors de la répétition d'une commande d'insertion où un <BS>, un <Left> ou une
autre touche avait provoqué une erreur, les tampons étaient vidés et Vim
passait en mode Insertion. Les tampons ne sont plus vidés, un signal sonore
est émis et la commande d'insertion continue.
MS-DOS et console Win32 : fixer 't_me' ne fonctionnait pas pour obtenir une
autre couleur. Maintenant, cela fonctionne, tout en conservant la
compatibilité ascendante.
Pour la langue turque (LANG = "tr"), la majuscule de "i" n'est pas "I".
Utilisation de la transposition ASCII de vim_strup() pour éviter les problèmes
liés aux langues. (Komur)
Unix : utiliser usleep() ou nanosleep() pour mch_delay() quand c'est possible.
Cela devrait éviter le blocage du select(0, ...) sous Solaris 2.6.
Vim plantait lors de l'utilisation d'un fichier de script contenant
'let sp = "| tee"', invoqué "vim -u test", suivi de ":set sp=". Le drapeau
P_WAS_SET n'était pas positionné pour les options de type chaîne, ce qui
posait des problèmes avec n'importe quelle option de type chaîne.
Lors de l'utilisation de "cmd | vim -", stdin n'est pas un terminal. Cela pose
des problèmes avec GPM (souris sous la console Linux) et pendant l'exécution
de commandes externes. Maintenant, stdin est fermée et réouverte en tant que
copie de stderr.
Coloration syntaxe : un élément "nextgroup" n'était pas correctement mémorisé
dans la liste des états. Cela provoquait l'oubli des groupes suivants quand le
rafraîchissement ne se faisait pas du début à la fin, mais depuis une position
intermédiaire.
La validité des valeurs de 'ttymouse' n'était pas vérifiée.
Lors de l'exécution d'une commande externe dans l'IHM graphique, pendant
l'attente de la terminaison du fils, un blocage se produisait. (Parmelan)
"make uninstall" n'effaçait pas les fichiers "vimrc_example.vim" et
"gvimrc_example.vim", ni vimtutor.
Win32 : "expand("%:p:h")" sans nom de tampon supprimait le nom du répertoire.
"fnamemodify("", ":p")" n'ajoutait pas d'oblique finale, car fname_case() la
supprimait.
Correction : avec 'hlsearch' activé et le drapeau 'c' absent de 'cpoptions',
la surbrillance était incorrecte. À présent, les correspondances qui se
chevauchent sont convenablement prises en compte.
IHM graphique Athena, Motif et GTK : lors d'un démarrage sans le focus,
le curseur était affiché comme si Vim avait le focus.
Ne pas inclure 'shellpipe' quand quickfix n'est pas compilé, elle est inutile.
Ne pas inclure l'option 'dictionary' quand la fonctionnalité +insert_expand
n'est pas compilée.
N'inclure l'option 'shelltype' que pour Amiga.
Quand la modification d'une ligne, avec 'hlsearch' activé, provoquait son
enroulement pendant l'exécution d'un registre, l'écran n'était pas rafraîchi
correctement. C'était dû à un problème générique dans update_screenline(),
appelée alors que must_redraw valait VALID.
L'utilisation de ":bdelete" dans une autocommande BufUnload pouvait provoquer
un plantage. La hauteur de la fenêtre était ajoutée deux fois à la hauteur
d'une autre fenêtre dans close_window().
IHM graphique Win32 : lors de la suppression d'un élément de menu, le menu
détaché n'était pas mis à jour. (Negri)
Suppression de certains goulots d'étranglement en terme de performances.
L'allocation de la mémoire n'était pas efficace. Sur Win32, la vérification de
la mémoire disponible était lente, elle n'est plus vérifiée à chaque fois
maintenant. Sur NT, la récupération du nom de l'utilisateur prenait beaucoup
de temps, le résultat est mis en cache (sur tous les systèmes).
fnamemodify() avec l'argument ":~:." ou ":.:~" ne fonctionnait pas
correctement.
Lors de l'édition d'un nouveau fichier suivie de la sortie de Vim , les
marques du tampon n'étaient pas enregistrées dans le fichier viminfo.
":confirm only" n'affichait pas de dialogue.
Ces objets textuels ne fonctionnaient pas quand 'selection' valait
"exclusive" : va( vi( va{ vi{ va< vi< vi[ va[.
Le dialogue pour l'écriture d'un fichier en lecture seule avait une valeur
par défaut invalide. (Negri)
Le numéro de ligne utilisé pour les messages d'erreur lors du sourcement d'un
fichier était réinitialisé quand les lignes de modes étaient analysées. Il
était faux lors de l'exécution d'une fonction.
Le nom de fichier et le numéro de ligne d'un message d'erreur n'étaient pas
affichés quand ils étaient les mêmes que pour l'erreur précédente, même si
elle s'était produite bien plus tôt. Maintenant, le nom et le numéro sont
réinitialisés après une invite Appuyez-sur-entrée.
Dans un fichier de session, un "%" dans un nom de fichier posait des
problèmes, à cause de l'utilisation de fprintf() pour écrire le fichier.
Quand des déclarations étaient ignorées, une marque dans une adresse n'était
pas sautés correctement : "ka|if 0|'ad|else|echo|endif". (Roemer)
":wall" pouvait écraser des fichiers non édités sans demander avant.
IHM graphique : quand $DISPLAY n'était pas fixée ou que l'IHM graphique
échouait à démarrer pour tout autre raison, le mode console démarrait alors
avec de mauvaises couleurs et sans effectuer les initialisations. À présent,
une vérification a lieu très tôt pour tester si l'IHM graphique peut être
démarrée. Ne pas soucer "menu.vim" et le gvimrc si ce n'est pas le cas.
Effectuer également les initialisations normales du terminal quand l'IHM
graphique ne peut pas être démarrée.
Lors de l'utilisation d'une autocommande BufEnter pour placer le curseur et
faire défiler la fenêtre, le curseur était toujours placé sur la dernière
ligne utilisée et à la moitié de la fenêtre de toute façon.
Quand 'wildmode' était fixé à "longest,list:full", ":e *.c<Tab><Tab>" ne
donnait pas la liste des correspondances. Éviter que le listage après un
"longest" ne donne de mauvaises correspondances quand une première expansion a
modifié la chaîne devant le curseur.
Lors de l'utilisation d'un ":insert", d'un ":append" ou d'un ":change" dans
une boucle ":while", il était impossible de l'interrompre avec CTRL-C.
Win32: : "e ." prenait un temps considérable avant d'émettre un message
d'erreur quand il était utilisé dans "C:\". Cela était dû à l'ajout d'une
contre-oblique supplémentaire suivi par la tentative d'obtenir le nom complet
pour "C:\\".
":winpos -10 100" fonctionnait comme ":winpos -10 -10", car le pointeur
n'était pas décalé au delà du caractère '-'.
Récupérer la valeur d'une option cachée provoquait l'émission d'un message
d'erreur. Maintenant, la valeur 0 est retournée.
OS/2 : argv[0] était toujours utilisé, même quand il n'était pas un nom
exploitable. Il pouvait être simplement "vim", se trouvant le chemin de
recherche.
Xterm : ":set columns=78" ne rafraîchissait pas correctement (avec des lignes
enroulées) tant que le délai 'updatetime' n'était pas écoulé. Le signal
size-changed (taille modifiée) n'était pas pris en compte.
'scrollbind' ne fonctionnait pas en mode Insertion.
Le verrouillage du défilement horizontal ne fonctionnait pas toujours avec les
commandes "0" et "$" (par exemple quand 'showcmd' était désactivé).
Lors de la compilation de la version minimale mais avec l'IHM graphique,
basculer à l'aide de la souris dans un xterm posait des problèmes, car les
codes de la souris n'étaient pas reconnus. Ne plus activer la souris quand Vim
n'a pas les moyens de la prendre en charge. Cela ne fonctionnait pas non plus
dans l'IHM graphique, les arguments de la souris n'étaient pas interprétés.
Avec 'showbreak', en mode Insertion, quand le curseur est juste après le
dernier caractère de la ligne, et que cette position correspond à la colonne
la plus à droite, le position du curseur était comme si la chaîne de
'showbreak' était affichée, alors qu'elle ne l'est pas.
Les autocommandes pouvaient déplacer le curseur dans un nouveau fichier, de
sorte que CTRL-W i n'affichait pas la bonne ligne. Pareil lors de
l'utilisation de marques pour passer d'un fichier à un autre.
Lors de la redéfinition de la liste des arguments, le titre utilisé pour les
autres fenêtres pouvaient indiquer une information erronée au sujet de la
position dans la liste des arguments. Mise à jour également suite à une
commande ":split" sans argument.
Lors de l'édition du fichier 97 sur 13, ":Next" ne fonctionnait pas. À
présent, elle passe au dernier fichier de la liste d'arguments.
Le complètement en mode Insertion (par dictionnaire et fichiers inclus) ne
pouvait pas être interrompu en tapant <Echap>. Il était possible d'obtenir une
invite Appuyez-sur-entrée après le complètement d'une ligne, ou lorsque le
message d'information était trop long.
Lors de l'utilisation de la commande ":edit" pour rééditer le même fichier,
une autocommande pour sauter à la dernière position du curseur provoquait le
déplacement du curseur. Maintenant, la dernière position du curseur est fixée
pour éviter cela.
Quand 'comments' possédait une partie débutant par un espace blanc, le
formatage du commentaire ne fonctionnait pas.
Les mappages du mode Normal étaient utilisés à l'invite de ":tselect". Ceci
est maintenant désactivé.
Quand 'selection' était différent de "old", certaines commandes ne
permettaient toujours pas au cuseur d'aller au-delà de la fin-de-ligne en mode
Visuel.
Athena : quand un menu était supprimé, il apparaîssait encore (sans être
fonctionnel) lors de l'ajout d'un autre menu. Maintenant, ils ne
réapparaîssent plus (bien qu'ils ne soient pas vraiment effacés).
Borland C++ 4.x avait un problème d'optimisation avec fill_breakat_flags().
(Negri)
"ze" ne fonctionnait pas quand 'number' était activé. (Davis)
IHM graphique Win32 : le code Intellimouse ne fonctionnait pas correctement
sur MS-Windows 98. (Robinson)
Quelques fixhiers incluaient "proto.h" une seconde fois, après que "vim.h"
l'ait fait, ce qui pouvait poser des problèmes avec la macro vim_realloc().
Console Win32 : <M-x> ou Alt-x n'était pas reconnu. Pareil pour les touches
'+', '-' et '*' du pavé numérique. (Negri)
MS-DOS : <M-x> ne fonctionnait pas et produisait un code sur deux octets.
Maintenant, les touches alpha-numériques fonctionnent. (Negri)
À la découverte de nombreuses correspondances pour le complètement d'un
marqueur, la vérification pour éviter les doublons pouvait prendre beaucoup de
temps. Ajout d'un line_breakcheck() pour pouvoir l'interrompre. (Deshpande)
Quand la ligne de commande devenait plus longue que l'écran, l'invite Plus
arrivait régulièrement, et la position du curseur était fausse. Maintenant,
seule la partie tenant à l'écran de la ligne de commande est affichée et le
curseur est forcé à une position comprise dans cette partie visible. Il peut
se trouver du texte non éditable après le curseur.
À l'invite Plus et dans un dialogue de la console, une touche fléchée était
interprétée comme <Echap> et OA. À présent, ces touches spéciales sont
reconnues dans get_keystroke(). Les événements de la souris et des barres de
défilement sont ignorés.
Lors de la saisie d'un retour arrière après l'insertion d'un indicateur de
milieu de commentaire, taper le dernier caractère de l'indicateur de fin de
commentaire le changait encore en début de fin de commentaire. (Webb)
Quand un fichier système était plein, l'écriture vers un fichier d'échange
échouait. Maintenant, tentative d'écrire un bloc dans le fichier. Essai de
l'entrée suivante dans 'dir' en cas d'échec.
Quand 'whichwrap' contenait "~", faire "~" sur le dernier caractère d'une
ligne ne rafraîchissait pas l'affichage.
Unix : l'expansion des jokers pour ":file {\\}" ne fonctionnait pas, car "\}"
était transformé en "}" avant que le shell n'en dispose. Ne pas retirer les
contres-obliques quand les jokers vont être étendus.
Unix : ":e /tmp/$uid" ne fonctionnait pas. Quand l'expansion des variables
d'environnement dans un nom de fichier ne fonctionnne pas, utiliser le shell
pour étendre le nom de fichier. Toutefois, ":e /tmp/$tty" ne fonctionne
toujours pas.
"make test" ne fonctionnait pas toujours pour test30 sur MS-DOS/Windows, car
il dépend de la commande externe "echo".
Le script "link.sh" utilisait "make" au lieu de $MAKE du Makefile. Cela posait
des problèmes pour générer "pathdef.c" quand "make" ne fonctionnait pas
correctement.
Sur les version disposant d'une console et d'une IHM graphique : dans la
console, taper un code CSI pouvait provoquer des problèmes.
Les motifs dans l'évaluation d'expressions n'ignoraient pas le drapeau 'l' de
'cpoptions'. Cela perturbait le fonctionnement de <CR> dans la fenêtre des
options.
Avec 'hls' désactivé et 'ai' activé, "O<Esc>" supprimait bien l'indentation,
mais elle restait colorée en rouge comme espaces blancs finaux.
IHM graphique Win32 : déposer un fichier chiffré dans un gvim déjà ouvert ne
fonctionnait pas bien. Vim bouclait en émettant des caractères "*". vgetc()
était appelée récursivement, bien que retournant NUL. Ajout de safe_vgetc(),
lisant directement la saisie de l'utilisateur dans cette situation.
Lors de la lecture depuis l'entrée standard, seul un écran vide était affiché.
À présent, Vim affiche ce qu'il lit.
La forme du curseur n'était pas réinitialisée correctement lors du retour au
mode Insertion après l'utilisation d'une commande CTRL-O /asdf ayant échoué.
Elle n'était rétablie qu'après quelques secondes. Maintenant, c'est OK
immédiatement.
La valeur par défaut de 'isfname' sur MS-DOS/Windows n'incluait pas le
caractère '@'. Les noms de fichiers en contenant "rep\@fichier" ne pouvaient
pas être édités.
Console Win32 : <C-S-Left> pouvait provoquer un plantage quand Vim était
compilé avec Borland ou egcs. (Aaron)
Unix et VMS : "#if HAVE_DIRENT_H" posait des problèmes pour certains
compilateurs. Utilisation de "#ifdef HAVE_DIRENT_H" à la place. (Jones)
Quand un marqueur correspondant était dans le fichier courant mais que son
motif de recherche ne correspondait pas, le curseur sautait à la première
ligne.
Unix : les dépendances de "pty.c" n'étaient pas incluses dans le Makefile. La
dépendance ctags/config.h n'était pas incluse (utile pour un make parallèle).
Suppression de quelques Unitialized Memory Reads (plantage potentiel) : dans
do_call() appelant clear_var() sans évaluation ; dans win32_expandpath() et
dos_expandpath() appelant backslash_halve() après la fin du nom du fichier.
Suppression de fuites de mémoire : Set_vim_var_string() ne libérait jamais la
valeur. next_list d'un mot-clef de syntaxe n'était jamais libéré.
Sur les systèmes non-Unix, l'utilisation d'un nom de fichier avec des jokers
sans correspondances échouait silencieusement. Par exemple : ":e *.sh".
Maintenant, un message "No match" est émis.
Les fichiers life/life.mac, urm/urm.mac et hanoi/hanoi.mac n'étaient pas
reconnus comme des scripts Vim. Ils sont renommés en *.vim.
[NOTE : Certaines rustines ne sont pas utiles pour mettre à jour depuis la
version 5.3, elles ont été supprimées.]
Rustine 5.4m.1
Problème : Lors de l'édition d'un fichier avec un nom long, obtention d'une
invite Appuyez-sur-entrée, même si tous les réglages sont adaptés
pour que le noms soit tronqué pour éviter cela. filemess()
affichait le nom du fichier sans le tronquer.
Solution : Tronquer le message dans filemess(). Utilisation du même code que
pour msg_trunc_attr(), qui est maintenant dans la nouvelle
fonction msg_may_trunc().
Fichiers : src/message.c, src/proto/message.pro, src/fileio.c
Rustine 5.4m.3
Problème : Les bibliothèques Motif n'étaient pas trouvées par `configure`
avec Digital Unix.
Solution : Ajout de "/usr/shlib" dans le chemin de recherche. (Andy Kahn)
Fichiers : src/configure.in, src/configure
Rustine 5.4m.5
Problème : IHM graphique Win32 : lors de l'utilisation de l'entrée de menu
Save-As et de la sélection d'un fichier existant dans le sélecteur
de fichiers, double obtention du dialogue pour confirmer
l'écrasement du fichier. (Ed Krall)
Solution : Suppression du dialogue du sélecteur de fichiers. Il serait plus
sympa de fixer le drapeau '!' ("forceit") et éviter le dialogue
":confirm" de Vim, mais cela nécessite une quantité certaine de
modifications.
Fichiers : src/gui_w32.c
Rustine 5.4m.6
Problème : IHM graphique Win32 : lors de la lecture d'un texte depuis stdin,
par exemple "cat foo | gvim -", une boîte de dialogue apparaîssait
avec "-stdin-" (à la sortie). (Michael Schaap)
Solution : Ne pas désactiver le mode termcap pour les versions exclusivement
graphiques. Elles utilisent un autre terminal pour lire depuis
stdin.
Fichiers : src/main.c, src/fileio.c
Rustine 5.4m.7
Problème : Unix : lancer `configure` avec --enable-gtk-check,
--enable-motif-check, --enable-athena-check ou --enable-gtktest
avait l'effet contraire. (Thomas Koehler)
Solution : Utiliser la variable $enable_gtk_check correctement dans
AC_ARG_ENABLE().
Fichiers : src/configure.in, src/configure
Rustine 5.4m.9
Problème : Multi-octets : lors de l'enroulement de lignes, le curseur se
retrouvait parfois 2 caractères à gauche. La coloration syntaxique
était fausse quand un caractère de deux octets était coupé pour
enrouler une ligne. Avec 'showbreak' activé, la coupure ne
fonctionnait pas non plus.
Solution : Ajustements dans getvcol() et win_line(). (Chong-Dae Park)
Fichiers : src/charset.c, src/screen.c
Rustine 5.4m.11
Problème : La commande ":call" ne testait pas d'éventuels caractères finaux
illégaux. (Stefan Roemer)
Solution : Ajout de la vérification dans do_call().
Fichiers : src/eval.c
Rustine 5.4m.13
Problème : Avec la commande ":s" :
1. Lors de l'exécution d'une commande de substitution, la souris
était désactivée puis activée à chaque substitution.
2. Le curseur pouvait se trouver au-delà de la fin de la ligne.
Appeler line_breakcheck() pouvait tenter de placer le curseur,
ce qui provoquait un plantage dans l'IHM graphique Win32.
3. Lors de l'utilisation de ":s" dans une commande ":g", le
curseur n'était pas placé sur le premier non-blanc de la ligne.
4. Une invite Appuyez-sur-entrée arrivait quand la confirmation
d'une substitution ou d'un remplacement était un peu long.
Solution : 1. Ne (dés)activer la souris qu'à la demande de conformation.
2. Toujours placer le curseur que le premier caractère, il sera
déplacé au premier non-blanc de tout manière.
Ne pas utiliser la position du curseur dans
gui_mch_draw_hollow_cursor(), récupérer le caractère depuis le
tampon de l'écran.
3. Ajout d'un drapeau global_need_beginline pour appeler
beginline() après que ":g" ait fini toutes les substitutions.
4. Réinitialiser le drapeau need_wait_return après la demande à
l'utilisateur.
Fichiers : src/ex_cmds.c, src/gui_w32.c
Rustine 5.4m.14
Problème : Lors d'un "vim xxx", suivi de ":opt", ":only" et enfin ":e xxx",
on aboutit à deux fichiers d'échange pour "xxx". Cela est dû à la
commande ":bdel" qui est exécutée lors du déchargement de la
fenêtre des options.
Aussi, aucun test n'avait lieu pour vérifier si la fermeture d'un
tampon rendait le nouveau invalide, ce qui pouvait provoquer un
plantage.
Solution : Quand la fermeture d'un tampon provoque la destruction du tampon
courant, utiliser un nouveau tampon pour le remplacer. Détecter
également que le nouveau tampon est invalide à cause de la
fermeture du tampon courant. Imbrication de l'autocommande
appelant ":bdel" dans optwin.vim, de sorte que le chargement du
tampon qu'elle produit exécute aussi les autocommandes.
Ajout d'un test pour cela dans test13.
Fichiers : runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h
src/testdir/test13.in, src/testdir/test13.ok
Rustine 5.4m.15
Problème : Lors de l'utilisation d'une autocommande BufEnter pour recharger
un fichier de syntaxe, la conversion en HTML provoquait un
plantage. (Sung-Hyun Nam)
Solution : Lors de l'utilisation de ":syntax clear", la pile des éléments de
syntaxe n'était pas réinitialisée. Cela provoquait la
réutilisation de mémoire pourtant libérée. Ajout d'un appel à
invalidate_current_state() dans syntax_clear().
Fichiers : src/syntax.c
Rustine 5.4m.17
Problème : Lors de l'omission d'une ')' dans une expression, cela n'était pas
perçu comme une erreur.
Lors de la détection d'une erreur dans (), un message d'erreur
pour une ')' manquante était aussi émis.
Lors d'un ":echo 1+|echo 2", aucun message d'erreur. (Roemer)
Lors d'un ":exe 1+", aucun message d'erreur n'était émis.
Lors d'un ":return 1+", aucun message d'erreur n'était émis.
Solution : Correction de do_echo(), do_execute() et do_return() pour émettre
un message d'erreur quand eval1() retourne FAIL.
Correction de eval6() pour prendre correctement en charge les ')'
finales et retourner FAIL quand il en manque.
Fichiers : src/eval.c
Rustine 5.4m.18
Problème : Lors de l'utilisation de input() depuis une expression entrée avec
CTRL-R = sur la ligne de commande, un plantage pouvait survenir.
Et le résultat de la commande était faux.
Solution : Ajout de getcmdline_prompt(), qui prend correctement en charge
l'utilisation récursive de getcmdline(). Elle fixe également
l'invite de la ligne de commande.
Suppression de cmdline_prompt(). Utilisation de
getcmdline_prompt() pour saisir la clef de chiffrement dans
get_crypt_key().
Fichiers : src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c
Rustine 5.4m.21
Problème : Lors du démarrage, les structures pour l'écran étaient toujours
allouées avec la taille minimale, puis les initialisations étaient
faites avec Rows potentiellement différent de screen_Rows.
Plantage dans de rares situations (GTK+ avec XIM et fontset)
Solution : Appel de screenalloc() dans main() après l'appel de
ui_get_winsize().
Évitement du délai potentiellement dû à l'appel de screenclear()
alors que "starting" est différent de zéro.
Fichiers : src/main.c
Rustine 5.4m.22
Problème : Dans l'IHM graphique, il était possible que l'écran soit
redimensionné et que les structures pour l'écran soient réallouées
durant le rafraîchissement de l'écran. Cela pouvait provoquer un
plantage (difficile à reproduire). La séquence d'appels est la
suivante : update_screen() .. syntax_start() .. ui_breakcheck() ..
gui_resize_window() .. screenalloc().
Solution : Positionner updating_screen lors du rafraîchissement. Si la
fenêtre est redimensionnée, mémoriser la nouvelle taille et la
prendre en compte correctement un fois que le rafraîchissement est
terminé.
Cela corrige également le fonctionnement incorrect du
redimensionnement de l'écran pendant un rafraîchissement
(coloration syntaxique lente).
Suppression de display_hint, il n'était jamais utilisé.
Fichiers : src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro
Rustine 5.4m.23
Problème : Lors de l'utilistion de expand("<cword>") quand il n'y avait aucun
mot sous le curseur, obtention d'un message d'erreur. Pareil pour
<cWORD> et <cfile>.
Solution : Ne pas émettre de message d'erreur, retourner une chaîne vide.
Fichiers : src/eval.c
Rustine 5.4m.24
Problème : ":help \|" ne trouvait rien du tout. Il était converti en "/\\|".
Solution : Conversion de "\|" en "\\bar". Vérifier d'abord la table pour les
conversions spécifiques avant de vérifier pour "\x".
Fichiers : src/ex_cmds.c
Rustine 5.4m.25
Problème : Unix : lors de l'utilisation du complètement de la ligne de
commande sur des fichiers contenant des ''', des '"' ou des '|',
les noms de fichiers n'étaient pas utilisables.
Leur ajout dans le menu Tampons provoquait un message d'erreur.
Solution : Insertion d'une contre-oblique avant ces trois caractères.
Ajustement de la fonction Mungename() pour insérer une
contre-oblique avant '|'.
Fichiers : src/ex_getln.c, runtime/menu.vim
Rustine 5.4m.26
Problème : Dans un mappage de deux touches de fonctions, par exemple
<F1><F1>, et que seul le premier caractère de la deuxième clef a
été lu, le mappage n'était pas reconnu. Constaté sur certains
systèmes Unix avec xterm.
Solution : Ajout du drapeau 'K' à 'cpoptions' pour attendre le code complet
de la touche, même dans un mappage en cours.
Fichiers : src/option.h, src/term.c
Rustine 5.4m.27
Problème : Le déroulement de test33 sans la fonctionnalité lisp bloque.
L'interruption d'un script pouvait alors provoquer un plantage.
Solution : Dans inchar(), après la fermeture d'un script, ne plus utiliser
buf[]. closescript() a libéré typebuf[] et buf[] peut pointer dans
typebuf[].
Éviter que test33 bloque quand la fonctionnalité lisp est absente.
Fichiers : src/getchar.c src/testdir/test33.in
"os2" était manquant dans la liste des fonctionnalités. Nécessaire pour
has("os2").
BeOS :
- Inclusion des rustines de Richard Offer pour BeOS R4.5.
- Le code pour les menus ne fonctionnait pas correctement. Plantage dans le
menu Tampons. Le titre de la fenêtre n'était pas fixé. (Offer)
Rustine 5.4n.3
Problème : L'indentation C était fausse après " } else". L'espace blanc
n'était pas ignoré. Visible avec 'cino' à "+10".
Solution : Ignorer l'espace blanc avec l'appel à cin_iselse(). (Norbert Zeh)
Fichiers : src/misc1.c
Rustine 5.4n.4
Problème : Quand le drapeau 't' était inclus dans 'cpoptions', après un
":nohlsearch", la surbrillance du motif n'était pas réactivée
après la recherche d'un marqueur. (Norbert Zeh)
Solution : Lors de l'affectation du nouveau motif dans jumpto_tag(), ne pas
restaurer no_hlsearch.
Fichiers : src/tag.c
Rustine 5.4n.5
Problème : L'utilisation de ":normal" dans une autocommande CursorHold bloque
Vim. L'autocommande est exécutée depuis vgetc(). L'appel récursif
à vgetc() pour exécuter la commande ne fonctionne plus alors.
Solution : Interdire l'utilisation de ":normal" quand vgetc_busy est
positionné. Émettre un message d'erreur quand cela se produit.
Fichiers : src/ex_docmd.c, runtime/doc/autocmd.txt
Rustine 5.4n.6
Problème : "gv" pouvait resélectionner une zone Visuel débutant/finissant
au-delà de la fin d'une ligne. (Robert Webb)
Solution : Vérifier que le début et la fin de la zone Visuel sont sur un
caractère valide avant d'appeler adjust_cursor().
Fichiers : src/normal.c
Rustine 5.4n.8
Problème : Quand une marque se trouvait sur une ligne n'existant pas (par
exemple parce que le .viminfo a été édité), y sauter causait des
erreurs dans ml_get. (Alexey Marinichev).
Solution : Ajout de check_cursor_lnum() dans nv_gomark().
Fichiers : src/normal.c
Rustine 5.4n.9
Problème : ":-2" déplaçait le curseur dans un numéro de ligne négatif. (Ralf
Schandl)
Solution : Émettre un message d'erreur pour les numéros de ligne négatif.
Fichiers : src/ex_docmd.c
Rustine 5.4n.10
Problème : IHM graphique Win32 : à l'invite Appuyez-sur-entrée, il était
possible de faire défiler le texte. Cela effaçait l'invite et
laissait à penser que Vim se trouvait dans le mode Normal, alors
qu'il se trouvait toujours en attente d'un <CR>.
Solution : Désactiver le défilement à l'invite Appuyez-sur-entrée pour les
systèmes utilisant le défilement au vol. XXX
Fichiers : src/message.c
Rustine 5.4n.14
Problème : IHM graphique Win32 : avec ":winsize 80 46" et une hauteur
supérieure à ce que l'écran était capable de contenir, la taille
de la fenêtre était plus petite que demandé (c'est bien) et Vim
plantait (c'est moins bien).
Solution : Appeler check_winsize() depuis gui_set_winsize() pour
redimensionner la fenêtre.
Fichiers : src/gui.c
Rustine 5.4n.16
Problème : IHM graphique Win32 : la touche <F10> sélectionnait le menu et
était prise en compte comme si elle était saisie (les deux à la
fois).
Solution: Appliquer 'winaltkeys' à <F10>, comme si elle était utilisée avec
Alt.
Fichiers : src/gui_w32.c
Rustine 5.4n.17
Problème : Les variables locales au tampon étaient libérées au déchargement
du tampon. Ce n'est pas logique, puisque les options ne le sont
pas. (Ron Aaron)
Solution : Libérer les variables locales au tampon seulement lors de sa
destruction.
Fichiers : src/buffer.c
Rustine 5.4n.19
Problème : Faire ":e" (sans argument) dans la fenêtre des options posait des
problèmes.
Les mappages de <CR> et <Space> ne sont pas supprimés. Quand il
existe un autre tampon chargé, son fichier d'échange se retrouve
mélangé. (Steve Mueller)
Solution : Supprimer aussi les mappages pour l'événement BufUnload, s'ils
existent toujours.
Quand la réédition d'un même fichier provoque l'effacement du
tampon courant, ne pas tenter de l'éditer.
Ajout d'un test pour cette situation.
Fichiers : runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in,
src/testdir/test13.ok
Rustine 5.4n.24
Problème : BeOS : `configure| n'activait jamais l'IHM graphique, car $with_x
valait "no".
Les prototypes Unix posaient des problèmes, car Display et Widget
étaient indéfinis.
La libération des polices à la sortie provoquait un plantage.
Solution : Ne désactiver l'IHM graphique que si $with_x vaut "no" et que
$BEOS est différent de "yes".
Ajouter des définitions pipos pour Display et Widget dans proto.h.
Ne pas libérer les polices dans gui_exit() pour BeOS.
Fichiers : src/configure.in, src/configure, src/proto.h, src/gui.c.
L'icône runtime/vim48x48.xpm n'avait pas de fond transparent. (Schild)
Certaines versions du compilateur mingw32/egcs ne définissait pas WINBASEAPI.
(Aaron)
VMS :
- mch_setenv() avait deux arguments au lieu de trois.
- Les fichiers vimrc et gvimrc du système étaient nommés ".vimrc" and
".gvimrc". Suppression du point.
- L'appel à RealWaitForChar() avait un argument en trop. (Campbell)
- WaitForChar() est static, suppression du prototype dans proto/os_vms.pro.
- Beaucoup d'accès aux fichiers échouaient, parce que des noms de fichiers de
type Unix étaient utilisés.
Conversion des noms de fichiers en style VMS en utilisant vim.fopen().
- Le filtrage ne fonctionnait pas, car le nom du fichier temporaire était mal
généré.
- Il y avait un saut-de-ligne supplémentaire tous les 9192 caractères lors de
l'écriture d'un fichier. Contournement en écrivant ligne par ligne.
(Campbell)
- os_vms.c contenait "# typedef int DESC", plutôt que "typedef int DESC;".
Gênant pour la génération des prototypes uniquement.
- Ajout de noms de fichiers convertis en de nombreux endroits. Facilité par
la définition des macros mch_access(), mch_fopen(), mch_fstat(), mch_lstat()
et mch_stat().
- Désactivation de 'tagbsearch' par défaut, car la recherche binaire des
marqueurs ne semble pas fonctionner sous VMS.
- mch_get_host_name() fonctionne maintenant avec /dec et /standard=vaxc.
(Campbell)
Rustine 5.4o.2
Problème : Plantage lors de l'utilisation de "gf" sur
"fichier.c://commentaire". (Scott Graham)
Solution : Correction de l'utilisation erronée de pointeurs dans
get_file_name_in_path().
Fichiers : src/window.c
Rustine 5.4o.3
Problème : La barre de défilement horizontale n'était pas dimensionnée
correctement avec 'number' activé et 'wrap' désactivé.
Athena : La barre de défilement horizontale n'était pas mise à
jour par un clic de souris juste après un glissement.
Solution : Soustraire 8 de la taille quand 'number' est activé et 'wrap' ne
n'est pas.
Réinitialiser gui.dragged_sb quand un clic de souris est reçu.
Fichiers : src/gui.c
Rustine 5.4o.4
Problème : Lors d'une exécution dans un xterm et que $WINDOWID était fixée à
une valeur illégale, Vim sortait sur "Vim: Got X error".
Solution : Lors de l'utilisation d'un affichage qui a été ouvert pour le
presse-papiers du xterm, vérifier si x11_window est valide en
tentant d'obtenir le titre de la fenêtre.
Ajour d'un test dans setup_xterm_clip(), dans le cas de
l'utilisation d'appels X pour récupérer la position du pointeur
dans le xterm.
Fichiers : src/os_unix.c
Rustine 5.4o.5
Problème : Version Motif avec Lesstif : lors de la suppression de la barre de
menu suivie de l'utilisation d'un raccourci de menu, Vim plantait.
(raf)
Solution : Désactiver les mnémoniques des menus quand la barre est supprimée.
Fichiers : src/gui_motif.c
Rustine 5.4o.9
Problème : Le programme d'installation "install.exe" pour MS-DOS utilisait le
programme "move". Il ne fonctionne pas sur MS-Windows NT, sur
lequel "move" est interne à "cmd.exe".
Solution : Ne pas utiliser une commande externe pout déplacer les
exécutables. Utiliser les fonctions C pour copier le fichier et
effacer l'original.
Fichiers : src/dosinst.c
Motif et Athena récupèrent la hauteur de la zone de statut différemment de
GTK. Déplacement de status_area_enabled de global.h vers gui_x11.c et appel de
xim_get_status_area_height() pour récupérer la hauteur de la zone de statut.
Rustine 5.4p.1
Problème : Lors de l'utilisation d'auto-select, et que la commande "gv" est
employée, la propriété de la sélection n'était pas forcément
acquise. La zone Visuel était bien la même, mais un autre
programme se l'appropriait.
Solution : Réinitialiser le presse-papiers du mode Visuel pour forcer la mise
à jour de la sélection.
Fichiers : src/normal.c
Rustine 5.4p.2
Problème : Motif et Athena avec XIM : la saisie des trois octets
<multioctet><multioctet><espace> ne fonctionnait pas correctement
avec XIM Ami.
Solution : Éviter d'utiliser le key_sym XK_VoidSymbol. (Nam)
Fichiers : src/multbyte.c, src/gui_x11.c
Rustine 5.4p.4
Problème : IHM graphique Win32 : les valeurs de la barre de défilement
étaient réduites pour un fichier de plus de 32767 lignes. Mais
cette information était globale pour toutes les barres, causant
un mélange entre les fenêtres.
Utiliser la flêche vers le bas d'une barre de défilement dans un
gros fichier ne faisait rien défiler du tout. Aucun défilement
n'avait lieu, à cause de l'imprécision de l'arrondi.
Solution : Fournir à chaque barre de défilement son propre champ
scroll_shift. Quand la flêche vers le bas est utilisée, défiler
plusieurs lignes.
Fichiers : src/gui.h, src/gui_w32.c
Rustine 5.4p.5
Problème : Lors d'un changement de tampon dans une autocommande BufDelete, il
pouvait se produire des erreurs ml_line et/ou un plantage.
(Schandl) Cela était dû à l'effacement du tampon courant.
Solution : Quand un tampon candidat à l'effacement devient de manière
inattendu le tampon courant, ne pas l'effacer.
Ajout d'une vérification pour ce cas dans test13.
Fichiers : src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok
Rustine 5.4p.7
Problème : IHM graphique Win32 : lors de l'utilisation de 'mousemodel' valant
"popup_setpos" et d'un clic droit de la souris hors de la zone
sélectionnée, cette dernière n'était pas supprimée tant que le
menu contextuel n'avait pas disparu. (Aaron)
Solution : Placer le curseur et rafraîchir l'affichage avant d'afficher le
menu contextuel.
Fichiers : src/normal.c
Rustine 5.4p.8
Problème : Le rapport de bogue généré via le script ne contenait pas
d'informations à propos de $VIMRUNTIME et de l'existence des
différents fichiers de support.
Solution : Ajout de quelques vérifications au script de rapport de bogue.
Fichiers : runtime/bugreport.vim
Rustine 5.4p.9
Problème : Le programme "install.exe" pour MS-Windows créait une mauvaise
entrée dans le menu contextuel. Le "%1" devenait "". Le chemin
complet était inclus, même quand l'exécutable avait été déplacé
autre part. (Ott)
Solution : Doubler le '%' pour en laisser un à printf. N'inclure le chemin de
"gvim.exe" uniquement quand il n'a pas été déplacé et qu'il n'est
pas dans $PATH.
Fichiers : src/dosinst.c
Rustine 5.4p.10
Problème : Win32 : basé sur 5.4p.9 : l'entrée "Edit with Vim" utilisait
parfois un nom de fichier court comme répertoire.
Solution : Changer le "%1" en "%L" dans l'entrée du registre.
Fichiers : src/dosinst.c
Rustine 5.4p.11
Problème : Motif, Athena et GTK : lors de la fermeture de la fenêtre de l'IHM
graphique dans laquelle il existait un tampon modifié, il n'y
avait qu'un message d'erreur et Vim ne sortait pas.
Solution: Afficher un dialogue, comme celui de ":confirm qa". Utiliser le
code déjà utilisé pour MS-Windows.
Fichiers : src/gui.c, src/gui_w32.c
Rustine 5.4p.12
Problème : Win32 : tenter d'étendre une chaîne de plus de 256 caractères
pouvait aboutir à un plantage. (Steed)
Solution: Pour le tampon de win32_expandpath(), ne pas utiliser un tableau
de taille fixe, mais plutôt l'allouer.
Fichiers : src/os_win32.c
MS-DOS : ajout de "-Wall" dans les drapeaux de compilation de Makefile.djg.
Les prototypes des fonctions fname_case() et mch_update_cursor() étaient
manquants. "fd" n'était pas utilisé dans mf_sync(). "puiLocation" n'était pas
utilisé dans myputch(). "newcmd" inutilisé dans mch_call_shell() pour la
version DJGPP.
==============================================================================
Version 5.5 *version-5.5*
La version 5.5 corrige les bogues de la version 5.4.
CHANGEMENTS *changed-5.5*
La version DJGPP est maintenant compilée avec "-O2" au lieu de "-O4" pour
réduire la taille des exécutables.
Déplacement du fichier src/STYLE vers runtime/doc/develop.txt. Les règles
de conception à observer y ont été ajoutées.
'backspace' est maintenant une option de type chaîne. Voir la rustine 5.4.15.
AJOUTS *added-5.5*
Inclusion de Exuberant Ctags version 3.3. (Darren Hiebert)
Dans runtime/mswin.vim, mappage de CTRL-Q à CTRL-V, de sorte que CTRL-Q
puisse être utilisé pour faire par ailleurs ce que CTRL-V permettait de faire.
Support de la décompression des fichiers bzip2 dans vimrc_example.vim.
Quand une rustine est incluse, son numéro est entré dans une table de
version.c. Cela permet de sauter une rustine sans perturber la suivante.
Support de la molette sur les souris pour X11. Voir la rustine 5.5a.14.
line2byte() permet de connaître la taille d'un tampon. Voir la rustine 5.4.35.
Les commandes CTRL-R CTRL-O r et CTRL-R CTRL-P r en mode Insertion permettent
d'insérer littéralement un registre. Voir la rustine 5.4.48.
Programme de désinstallation pour MS-Windows. Cela permet de retirer les
entrées du registre concernant "Edit with Vim". Il est maintenant enregistré
auprès de l'application "Ajout/Suppression de programmes". Voir la rustine
5.4.x7.
CORRECTIONS *fixed-5.5*
Lors de l'utilisation de vimrc_example.vim : un message d'erreur apparaîssait
quand le curseur était sur une ligne dont le numéro est plus important que le
nombre de lignes dans le fichier compressé. Déplacement de l'autocommande
sautant à la dernière position connue du curseur après les autocommandes de
décompression.
":mkexrc" et ":mksession" écrivaient la valeur courante de 'textmode'. Cela
peut signaler le fichier comme modifié, ce qui pose problème. Il s'agit d'un
réglage spécifique à un tampon, il ne devrait pas affecter tous les fichiers.
"vim --version" affichait deux lignes vides.
Unix : le signal d'alarme pouvait tuer Vim. Il est généré par la fonction Perl
alarm(). SIGALARM est ignoré.
IHM graphique Win32 : la barre d'outils affichait encore l'icône jaune pour
l'exécution d'un script Vim.
BeOS : "tmo" doit être de type bigtime_t, plutôt que double. (Seibert)
Rustine 5.4.1
Problème : Test11 échoue quand $GZIP vaut "-v". (Matthew Jackson)
Solution : Fixer $GZIP à une chaîne vide.
Fichiers : src/testdir/test11.in
Rustine 5.4.2
Problème : Taper <Echap> à l'invite pour la clef de chiffrement provoquait un
plantage. (Kallingal)
Solution : Tester si le pointeur retourné par get_crypt_key() est NULL.
Fichiers : src/fileio.c
Rustine 5.4.3
Problème : Python : utiliser un nom pour un tampon non nommé aboutissait à un
plantage. (Daniel Burrows)
Solution : Tester si b_fname est un pointeur NULL.
Fichiers : src/if_python.c
Rustine 5.4.4
Problème : Win32 : quand Vim était compilé sans la barre d'outils, mais que
le drapeau 'T' était compris dans 'guioptions', un espace vide se
trouvait à la place de la barre d'outils.
Solution : Ajout de deux #ifdefs à l'endroit où le drapeau 'T' est testé.
(Vince Negri)
Fichiers : src/gui.c
Rustine 5.4.5
Problème : IHM graphique Athena : l'utilisation de l'entrée de menu
Buffers.Refresh provoquait un plantage.
Il semble que toute commande ":unmenu" puisse poser problème.
Solution : Désactiver ":unmenu" pour la version Athena. Désactiver le menu
Buffers, car l'élément Refresh ne fonctionne pas.
Fichiers : src/menu.c, runtime/menu.vim
Rustine 5.4.6
Problème : IHM graphique GTK : l'utilisation de ":gui" dans le fichier
gvimrc causait une erreur. Cette dernière ne se produisait que
pour le fork de l'IHM graphique.
Solution : Ne pas forker dans un appel récursif à gui_start().
Fichiers : src/gui.c
Rustine 5.4.7
Problème : Taper 'q' à l'invite Plus du message ATTENTION provoquait
l'interruption du chargement du fichier. (Will Day)
Solution : Réinitialiser got_int après l'affichage du message ATTENTION.
Fichiers : src/memline.c
Rustine 5.4.8
Problème : Éditer plusieurs fichiers, ":he", ":opt" : les options de la
fenêtre d'aide sont affichées, mais appuyer sur espace change
celles des autres fenêtres. (Phillipps)
Quand il y a des modifications dans la fenêtre option-window,
":q!" retourne un message d'erreur.
Solution : Aller dans une fenêtre qui n'est pas celle de l'aide avant de
créer la fenêtre option-window.
Utiliser ":bdel!" pour supprimer le tampon.
Fichiers : runtime/optwin.vim
Rustine 5.4.9
Seulement des modifications de version.h. La vraie rustine est
5.4.x1. Cette rustine permet juste de conserver une numérotation
cohérente.
Rustine 5.4.10
Problème : IHM graphique GTK : quand $DISPLAY n'est pas valide, "gvim -f"
quitte. Il devrait se lancer dans le terminal.
Solution : Utiliser gtk_init_check() au lieu de gtk_init().
Fichiers : src/gui_gtk_x11.c
Rustine 5.4.11
Problème : Quand 'cpoptions' contient 'S', 'tabstop' n'est pas copié vers le
tampon suivant pour certaines commandes, par exemple ":buffer".
Solution : Quand le drapeau BCO_NOHELP est spécifié dans buf_copy_options(),
toujours copier les options utilisées par do_help() quand ni le
tampon de départ ni le tampon d'arrivée ne sont des tampons
d'aide.
Fichiers : src/option.c
Rustine 5.4.12
Problème : Avec 'smartindent', il n'y avait aucune indentation supplémentaire
si la ligne courante ne contenait pas déjà d'indentations. (Hanus
Adler)
Solution : Un "else" était mal placé, correspondant précédemment avec le "if"
fixant trunc_line. Suppression du "else" et ajout d'une
vérification pour tester si trunc_line est faux.
Fichiers : src/misc1.c
Rustine 5.4.13
Problème : Les nouveaux compilateurs C de SGI nécessitent une autre option
pour l'optimisation.
Solution : Ajout d'un test pour "-OPT:Olimit" dans `configure`.
(Chin A Young)
Fichiers : src/configure.in, src/configure
Rustine 5.4.14
Problème : IHM graphique Motif : quand le menu contextuel est présent, une
petite fenêtre apparaît sur le bureau de certains utilisateurs.
Solution : Fixer l'ID du widget à 0 pour un menu contextuel. (Thomas Koehler)
Fichiers : src/gui_motif.c
Rustine 5.4.15
Problème : Puisque 'backspace' fixé à 0 est maintenant compatible Vi, il
n'est plus possible d'autoriser seulement l'effacement de
l'autoindentation. XXX
Solution : 'backspace' est maintenant une liste, permettant de fixer les
comportements du retour arrière séparément.
Fichiers : src/edit.c, src/option.c, src/option.h, src/proto/option.pro,
runtime/doc/option.txt, runtime/doc/insert.txt
Rustine 5.4.16
Problème : Multi-octets : la région linguistique zh_TW.Big5 n'était pas
testée dans `configure`.
Solution : Ajout de zh_TW.Big5 dans les tests de `configure`. (Chih-Tsun
Huang)
Fichiers : src/configure.in, src/configure
Rustine 5.4.17
Problème : IHM graphique : lancé depuis gvim avec ":!gvim", Vim ne démarrait
pas. Pas de problème avec ":!gvim -f".
Solution : Après le fork, attendre un peu dans le processus père, pour que le
fils ait le temps de mettre en place son propre groupe.
Fichiers : src/gui.c
Rustine 5.4.18
Problème : Python : la fonction clear_history() existait déjà dans une
bibliothèque.
Solution : Renommer clear_history() en clear_hist().
Fichiers : src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro
Rustine 5.4.19
Problème : Dans un terminal avec 25 lignes, une invite Plus survenait après
le message ATTENTION. Taper 'q' à cette invite n'affichait pas le
dialogue et le chargement du fichier était interrompu. (Will Day)
Solution : Ne pas autoriser à quitter l'affichage du message en faveur de
l'affichage du dialogue. Ajout du drapeau msg_noquit_more pour
cela.
Fichiers : src/message.c
Rustine 5.4.20
Problème : GTK : lors du démarrage de gvim, des séquences d'échappement
étaient envoyées au terminal pour activer et désactiver le
curseur.
Solution : Ne pas appeler msg_start() si l'IHM graphique est censée démarrer.
Fichiers : src/main.c
Rustine 5.4.21
Problème : Motif : l'ordre du menu de plus haut niveau devenait faux lors de
l'utilisation des éléments détachables.
Solution : Ne pas ajouter une unité à l'index du menu de plus haut niveau.
Fichiers : src/gui_motif.c
Rustine 5.4.22
Problème : En mode Insertion, <C-Left>, <S-Left>, <C-Right> et <S-Right> ne
mettaient pas à jour la colonne utilisée pour les déplacements
verticaux.
Solution : Fixer curwin->w_set_curswant pour ces commandes.
Fichiers : src/edit.c
Rustine 5.4.23
Problème : Quand la sélection Visuel était perdue en faveur d'un autre
programme, et que le même texte était Visuellement resélectionné,
la propriété du presse-papiers n'était pas récupérée.
Solution : Fixer clipboard.vmode à NUL pour forcer l'obtention du
presse-papiers.
Fichiers : src/normal.c
Rustine 5.4.24
Problème : Chiffrement : lors d'un ":r fichier" alors que 'key' avait déjà
été saisie, l'option 'key' était corrompue. L'écriture du fichier
avait alors lieu avec une clef inconnue et son contenu était perdu
! (Brad Despres)
Solution : Ne pas libérer cryptkey quand elle vaut l'option 'key'.
Fichiers : src/fileio.c
Rustine 5.4.25
Problème : Quand 'cindent' est activé, mais pas 'autoindent', les
commentaires ne sont pas correctement indentés lors d'une nouvelle
ligne. (Mitterand)
Solution : Quand un indicateur de commentaire est présent sur la nouvelle
ligne, mais que 'autoindent' n'est pas activé, indenter comme du
C.
Fichiers : src/misc1.c
Rustine 5.4.26
Problème : Multi-octets : un caractère multi-octets n'etait jamais reconnu
dans un nom de fichier, ce qui fait que les contres-obliques les
précédant étaient supprimées par MS-Windows.
Solution : Supposer que le premier octet du caractère est un caractère valide
pour un nom de fichier dans vim_isfilec().
Fichiers : src/charset.c
Rustine 5.4.27
Problème : Les entrées des menus PopUp[nvic] étaient ajoutées pour plusieurs
modes, mais n'étaient effacées que pour les modes dans lesquels
elles servaient. Cela aboutissait à persistance de l'entrée dans
le menu PopUp.
La suppression d'un menu PopUp[nvic] dont le nom a été tronqué
pouvait aboutir à la désactivation complète du menu PopUp.
Solution : Supprimer les entrées des menus popUp[nvic] pour tous les modes.
Supprimer d'abord les entrées du menu PopUp[nvic], avant que le
nom soit modifié.
Fichiers : src/menu.c
Rustine 5.4.28
Problème : Lors de l'utilisation d'une autocommande BufWritePre pour changer
'fileformat', la nouvelle valeur n'était pas utilisée pour écrire
le fichier.
Solution : Tester 'fileformat' après l'exécution des autocommandes plutôt
qu'avant.
Fichiers : src/fileio.c
Rustine 5.4.29
Problème : IHM graphique Athena : lors de la suppression du drapeau 'g' de
'guioptions', utiliser un menu pouvait aboutir à un plantage.
Solution : Toujours griser les menus sous Athena, ne pas les cacher.
Fichiers : src/menu.c
Rustine 5.4.30
Problème : BeOS : suspendre Vim avec CTRL-Z ne fonctionnait pas (Vim était
tué). Le premier caractère tapé après ":sh" allait à Vim, au lieu
du shell nouvellement démarré.
Solution : Ne pas suspendre Vim, lancer un nouveau shell. Tuer le thread de
lecture asynchrone lors du lancement d'un nouveau shell. Il sera
redémarré plus tard. (Will Day)
Fichiers : src/os_unix.c, src/ui.c
Rustine 5.4.31
Problème : IHM graphique : quand 'mousefocus' est activé, déplacer la souris
sur la bordure d'une fenêtre provoque la fin de l'invite
Appuyez-sur-entrée. (Jeff Walker)
Solution : Ne pas utiliser 'mousefocus' lors de cette invite. L'ignorer aussi
lors de l'invite Plus et quelques autres situations. Quand un
opérateur est en cours, le désactiver au préalable.
Fichiers : src/gui.c
Rustine 5.4.32
Problème : Unix : $LDFLAGS n'était pas transmis à `configure`.
Solution : Passer $LDFLAGS à `configure` tout comme $CFLAGS. (Jon Miner)
Fichiers : src/Makefile
Rustine 5.4.33
Problème : Unix : après l'expansion d'une variable d'environnement avec le
shell, l'expansion suivante utilisait aussi le shell, même si cela
n'était nécessaire.
Solution : Réinitialiser "recursive" avant de revenir de
gen_expand_wildcards().
Fichiers : src/misc1.c
Rustine 5.4.34 (also see 5.4.x5)
Problème : Lors de l'édition d'un fichier, dont le nom était relatif au
répertoire à un répertoire parent du répertoire courant, le nom du
fichier était rendu absolu. (Gregory Margo)
Solution : Ajouter un argument à shorten_fnames() pour indiquer si tous les
noms de fichiers doivent être raccourcis ou seulement les noms
abolus. Dans main(), n'utiliser que shorten_fnames() pour
raccourcir les noms absolus.
Fichiers : src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro
Rustine 5.4.35
Problème : Il n'existe pas de fonction pour connaître la taille du fichier
courant.
Solution : Permettre l'utilisation de line2byte() avec le nombre total de
lignes dans le fichier plus un. Cela retourne la position de la
ligne au-delà du fichier, c'est-à-dire la taille du fichier plus
un.
Fichiers : src/eval.c, runtime/doc/eval.txt
Rustine 5.4.36
Problème : la comparaison de chaînes en ignorant la casse ne fonctionnait pas
correctement sur certaines machines. (Mide Steed)
Solution : vim_stricmp() et vim_strnicmp() ne retournaient que 0 ou 1.
Modifications pour qu'elles retournent -1 quand le premier
argument en plus petit.
Fichiers : src/misc2.c
Rustine 5.4.37 (voir aussi 5.4.40 et 5.4.43)
Problème : Les chaînes longues du fichier viminfo sont tronquées.
Solution : Lors de l'écriture d'une longue chaîne dans le fichier viminfo,
d'abord écrire la longueur dans une première ligne, puis écrire la
chaîne elle-même dans une seconde ligne.
Fichiers : src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c,
src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim
Rustine 5.4.38
Problème : Dans la fenêtre des options (option-window), ":set go&"
aboutissait à la prise en compte de 'go' comme une option
booléenne.
Les mappages de <Space> et <CR> étaient recouverts par ceux de la
fenêtre option-window.
Solution : Quand la valeur d'une option n'est ni 1 ni 0, ne pas la considérer
comme une option booléenne.
Enregistrer et restaurer les mappages de <Space> et <CR> à
l'entrée et à la sortie de la fenêtre option-window.
Fichiers : runtime/optwin.vim
Rustine 5.4.39
Problème : Lors du réglage d'une option cachée, les espaces avant le signe
égal n'étaient pas ignorés et provoquait un message d'erreur. Par
exemple ":set csprg =cmd".
Solution : Lors de l'analyse d'une option cachée, vérifier la présence d'une
éventuelle "=valeur" et l'ignorer.
Fichiers : src/option.c
Rustine 5.4.40 (basée sur 5.4.37)
Problème : Erreur de compilation pour "atol(p + 1)". (Axel Kielhorn)
Solution : Ajouter un transtypage : "atol((char *)p + 1)".
Fichiers : src/ex_cmds.c
Rustine 5.4.41
Problème : Certaines commandes qui n'étaient pas incluses donnaient un
message d'erreur, même après un "if 0".
Solution : Ne pas émettre de message d'erreur pour des commandes non
supportées quand elles ne sont pas exécutées.
Fichiers : src/ex_docmd.c
Rustine 5.4.42
Problème : ":w" provoquait aussi l'apparition de messages tronqués dans
l'historique des messages.
Solution : Ne pas mettre un message conservé dans l'historique des messages
s'il commence par "<".
Fichiers : src/message.c
Rustine 5.4.43 (basée sur 5.4.37)
Problème : Mélanger des lignes longues avec des lignes multiples dans un
registre provoquait des erreurs lors de l'écriture du fichier
viminfo. (Robinson)
Solution : Lors de la lecture du fichier viminfo pour avoir le contenu des
registres, sauter les ligne commençant par "<".
Fichiers : src/ops.c
Rustine 5.4.44
Problème : Quand 'whichwrap' incluait '~', une commande "~" se poursuivant
sur la ligne suivante n'était pas annulable correctement.
(Zellner)
Solution : Mémoriser chaque ligne pour l'annulation dans n_swapchar().
Fichiers : src/normal.c
Rustine 5.4.45 (voir aussi 5.4.x8)
Problème : Quand expand("$ASDF") échoue, un message d'erreur est émis.
Solution : Supprimer le expand_interactively global. Désactiver le drapeau
pour éviter le message d'erreur.
Aussi : expand("$ASDF") retourne une chaîne vide si $ASDF n'est
pas fixées. Avant, elle retrounait "$ASDF" quand 'shell' valait
"sh".
Aussi : system() n'affiche pas une erreur quand la commande
retourne un code d'erreur.
Fichiers : beaucoup
Rustine 5.4.46
Problème : Le retour arrière n'utilisait pas toujours 'softtabstop' après une
pression sur <CR>, l'insertion d'un registre, le déplacement du
curseur, etc.
Solution : Réinitialiser inserted_space bien plus souvent dans edit().
Fichiers : src/edit.c
Rustine 5.4.47
Problème : Lors de l'exécution des autocommandes BufWritePre ou BufWritePost
sur un tampon caché, le curseur pouvait être déplacé vers une
position invalide. (Vince Negri)
Solution : Mémoriser et restaurer le curseur et la ligne supérieure de la
fenêtre courante quand elle s'apprêtre à subir l'exécution
d'autocommandes pour un tampon caché. Utiliser une fenêtre
existante pour le tampon quand il n'est pas caché.
Fichiers : src/fileio.c
Rustine 5.4.48
Problème : Un collage avec la souris en mode Insertion n'était pas répété
exactement à l'identique avec ".". Par exemple, quand 'autoindent'
était fixé et qu'un texte avec une indentation était collé.
(Perry)
Solution : Ajout des commandes CTRL-R CTRL-O r et CTRL-R CTRL-P r en mode
Insertion, qui insèrent littéralement le contenu des registres.
Fichiers : src/edit.c, src/normal.c, runtime/doc/insert.txt
Rustine 5.4.49
Problème : Lors du collage d'un texte avec [ <MiddleMouse>, le curseur
pouvait se retrouver après le dernier caractère de la ligne.
Solution : Corriger la position du curseur selon le changement de
l'indentation.
Fichiers : src/ops.c
Rustine 5.4.x1 (NOTE : Remplace la rustine 5.4.9)
Problème : IHM graphique Win32 : les aides aux menus n'étaient jamais
utilisées, car WANT_MENU n'était pas défini avant que vim.h soit
inclus.
Solution : Déplacer #ifdef WANT_MENU de là où MENUHINTS est défini vers là où
il est utilisé.
Fichiers : src/gui_w32.c
Rustine 5.4.x2
Problème : BeOS : lors du collage de texte, un caractère était amené à la
fin.
Solution : Réactiver le code BeOS de fill_input_buf(), et corriger la
minuterie avec acquire_sem_etc(). (Will Day)
Fichiers : src/os_beos.c, src/ui.c
Rustine 5.4.x3
Problème : IHM graphique Win32 : le dépôt d'un répertoire sur un gvim déjà
lancé provoquait un plantage.
Solution : Éviter l'utilisation du nom de fichier NULL. Émettre un message
indiquant que le répertoire courant a été modifié.
Fichiers : src/gui_w32.c
Rustine 5.4.x4
Problème : IHM graphique Win32 : supprimer un élément du menu contextuel ne
fonctionnait pas.
Solution : Ne pas supprimer l'élément de la barre de menu, mais du menu
contextuel parent.
Fichiers : src/gui_w32.c
Rustine 5.4.x5 (supplément pour 5.4.34)
Fichiers : src/gui_w32.c
Rustine 5.4.x6
Problème : Win32 : l'expansion de (rep)nom commençant par un point ne
fonctionnait pas. (McCormack) Uniquement s'il se trouve un chemin
devant.
Solution : Corriger le test fait avant l'expansion, vérifiant si le nom de
fichier commence par un point.
Fichiers : src/os_win32.c
Rustine 5.4.x7
Problème : IHM graphique Win32 : supprimer "Edit with Vim" du registre est
pénible.
Solution : Ajouter un programme de désinstallation pour supprimer les clefs
de registre. Il est installé dans la liste "Add/Remove programs"
pour faciliter l'utilisation.
Ne pas fixer $VIM quand l'exécutable est avec les fichiers de
support.
Ajouter un fichier texte décrivant point par point les étapes à
suivre pour désinstaller Vim pour MS-DOS et MS-Windows.
Fichiers : src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt
Rustine 5.4.x8 (supplément pour 5.4.45)
Fichiers : beaucoup
Rustine 5.4.x9
Problème : IHM graphique Win32 : après l'exécution d'une commande externe, le
focus n'est pas toujours récupéré (lors de l'utilisation de
focus-follows-mouse).
Solution : Ajouter SetFocus() dans mch_system(). (Mike Steed)
Fichiers : src/os_win32.c
Rustine 5.5a.1
Problème : ":let @* = @:" ne fonctionnait pas. Le texte n'était pas copié
dans le presse-papiers. (Fisher)
Solution : Disposer du presse-papiers et y coller le texte.
Fichiers : src/ops.c
Rustine 5.5a.2
Problème : append() ne signalait pas le tampon comme modifié. Les marques
sous la nouvelle ligne n'était pas ajustées.
Solution : Corriger la fonction f_append().
Fichiers : src/eval.c
Rustine 5.5a.3
Problème : L'édition de fichiers compressés ".gz" ne fonctionnait pas sur les
systèmes non-Unix, car ils n'ont pas de commande "mv".
Solution : Ajout d'une fonction rename() à utiliser au lieu de ":!mv".
Désactiver le saut automatique à la dernière position, car il
modifie la liste des sauts.
Fichiers : src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim
Rustine 5.5a.4
Problème : Lors du complètement d'une ligne entière en mode Insertion, quand
le curseur se trouve dans l'indentation, une erreur "out of
memory" se produisait. (Stekrt)
Solution : Ne pas allouer une quantité négative de mémoire dans
ins_complete().
Fichiers : src/edit.c
Rustine 5.5a.5
Problème : Win32 : l'option 'path' ne peut contenir que 256 caractères, car
_MAX_PATH vaut 256. (Robert Webb)
Solution : Utiliser une longueur fixe de 1024.
Fichiers : src/os_win32.h
Rustine 5.5a.6
Problème : La compilation avec gcc sous Win32 avec le Makefile Unix ne
fonctionnait pas.
Solution : Ajouter $(SUFFIX) partout où un exécutable est utilisé. Le passer
aussi à ctags. (Reynolds)
Fichiers : src/Makefile
Rustine 5.5a.7
Problème : Lors d'un "cat | vim -" dans un xterm, la réponse de la version
xterm se retrouvait dans le fichier.
Solution : Lire le fichier depuis stdin avant de basculer le terminal en mode
RAW. Cela devrait aussi éviter des problèmes avec les programmes
utilisant des réglages de terminal spécifiques.
Lors de l'utilisation de l'IHM graphique, afficher "Reading from
stdin..." dans la fenêtre, pour indiquer pourquoi Vim ne fait
rien.
Fichiers : src/main.c, src/fileio.c
Rustine 5.5a.8
Problème : Sur les Solaris multi-threadés, la suspension ne fonctionnait pas.
Solution : Appeler pause() quand le signal SIGCONT n'est pas reçu après
l'émission du signal SIGTSTP signal. (Nagano)
Fichiers : src/os_unix.c
Rustine 5.5a.9
Problème : 'winaltkeys' pouvait être fixé à un argument vide.
Solution : Émettre un message d'erreur lors d'un ":set winaltkeys=".
Fichiers : src/option.c
Rustine 5.5a.10
Problème : console Win32 : l'utilisation de AltGr sur un clavier allemand
pour obtenir "}" ne fonctionnait pas, car le 8-ième bit est fixé
quand Alt est pressé.
Solution : Ne pas fixer le 8-ième bit quand Alt ou Ctrl sont utilisés.
(Leipert)
Fichiers : src/os_win32.c
Rustine 5.5a.11
Problème : Tcl : `configure` utilise toujours tclsh8.0.
Charger une bibliothèque ne fonctionnait pas.
Solution : Ajouter l'argument "--with-tclsh" à `configure`, permettant de
spécifier un autre nom pour le shell tcl.
Appeler Tcl_Init() dans tclinit() pour que le chargement des
bibliothèques fonctionne. (Johannes Zellner)
Fichiers : src/configure.in, src/configure, src/if_tcl.c
Rustine 5.5a.12
Problème : La fonctionnalité "user_commands" est appelée "user-commands".
Solution : Remplacer "user-commands" par "user_commands". (Kim Sung-bom)
Conserver "user-commands" dans la fonction has(), pour assurer la
compatibilité avec la version 5.4.
Fichiers : src/eval.c, src/version.c
Rustine 5.5a.13
Problème : OS/2 : quand $HOME n'est pas définie, le fichier viminfo utilise
"C:/". C'est très mauvais quand OS/2 travaille sur une autre
partition.
Solution : Utiliser $VIM quand il est défini pour le fichier viminfo, comme
pour MS-DOS.
Makefile.os2 n'était pas basé sur os_unix.h.
Fichiers : src/os_unix.h, src/Makefile.os2
Rustine 5.5a.14
Problème : Athena, Motif et GTK : la molette de la souris ne fonctionne pas.
Solution : Interpréter les clics de la molette comme une pression sur les
touches <MouseDown> ou <MouseUp>. Par défaut, le défilement est de
3 lignes, ou d'une pleine page si Maj est enfoncé.
Fichiers : src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c,
src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c,
src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h,
runtime/doc/scroll.txt
Rustine 5.5a.15
Problème : L'utilisation de CTRL-A en mode Insertion ne fonctionnait pas
correctement quand l'insertion était déclenchée avec la touche
<Insert>. (Andreas Rohrschneider)
Solution : Remplacer <Insert> par "i" avant de paramétrer le tampon
de restauration.
Fichiers : src/normal.c
Rustine 5.5a.16
Problème : VMS : l'IHM graphique ne compilait et ne démarrait pas.
Solution : Diverses corrections. (Zoltan Arpadffy)
Déplacement de fonctions os_unix.c vers ui.c, pour que VMS puisse
les utiliser aussi : open_app_context(), x11_setup_atoms() et les
fonctions clip_x11*.
xterm_dpy est maintenant global, il est utilisé dans ui.c et
os_unix.c.
Toujours utiliser gethostname(), sys_hostname n'existe pas.
Fichiers : src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
AdjustCursorForMultiByteCharacter() renommé en AdjustCursorForMultiByteChar()
pour éviter au symbole la limite des 31 caractères. (Steve P. Wall)
Rustine 5.5b.1
Problème : SASC se plaint d'affectations mortes et de conversions implicites
de types.
Solution : Suppression des affectations mortes. Ajout de transtypages
explicites.
Fichiers : src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c,
src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c,
src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c,
src/screen.c
Rustine 5.5b.2
Problème : Lors de l'utilisation de "CTRL-O O" en mode Insertion, taper
<Echap> puis "o" dans une autre ligne tronquait cette dernière.
(Devin Weaver)
Solution : Lors de l'utilisation d'une commande lancée depuis le mode
Insertion avec CTRL-O, d'abord réinitialiser "restart_edit". Cela
évite que edit() soit appelé avec un mélange des arguments de la
nouvelle commande et de l'ancienne.
Fichiers : src/normal.c
==============================================================================
Version 5.6 *version-5.6*
La version 5.6 corrige les bogues de la version 5.5.
CHANGEMENTS *changed-5.6*
Modifications minimes des fichiers de OleVim. (Christian Schaller)
Insertion de "/**/" entre les numéros de rustines dans src/version.c. Cela
fournit une ligne de contexte, nécessaire à certaines versions de `patch`.
Réorganisation du menu Syntaxe pour éviter des sous-menus interminables.
Suppression des raccourcis claviers pour les éléments alphabétiques, pour
éviter des conflits avec les éléments fixes.
AJOUTS *added-5.6*
Inclusion de Exuberant Ctags version 3.4. (Darren Hiebert)
OpenWithVim dans Python. (Christian Schaller)
IHM graphique Win32 : gvimext.dll, pour l'entrée "Edit with Vim" du menu
contextuel. Évite le problème rapporté avec la barre MS-Office. Il s'agit
maintenant d'un Shell Extension. (Tianmiao Hu)
Nouveaux fichiers de syntaxe :
abel Abel (John Cook)
aml Arc Macro Language (Nikki Knuit)
apachestyle Fichier de configuration de type Apache (Christian Hammers)
cf Cold Fusion (Jeff Lanzarotta)
ctrlh fichiers de séquences CTRL-H (Bram Moolenaar)
cupl CUPL (John Cook)
cuplsim CUPL simulation (John Cook)
erlang Erlang (Kresimir Marzic)
gedcom Gedcom (Paul Johnson)
icon Icon (Wendell Turner)
ist MakeIndex style (Peter Meszaros)
jsp Java Server Pages (Rafael Garcia-Suarez)
rcslog Rcslog (Joe Karthauser)
remind Remind (Davide Alberani)
sqr Structured Query Report Writer (Paul Moore)
tads TADS (Amir Karger)
texinfo Texinfo (Sandor Kopanyi)
xpm2 X Pixmap v2 (Steve Wall)
Le drapeau 'C' de 'cpoptions' permet de désactiver la concaténation des lignes
sourcées. Voir la rustine 5.5.013 ci-dessous. |line-continuation|
Argument "excludenl" pour la commande ":syntax". Voir la rustine 5.5.032
ci-dessous. |:syn-excludenl|
Ajout des commandes |z+| and |z^|. Voir la rustine 5.5.050 ci-dessous.
Logo Vim au format Corel Draw. Adaptable à n'importe quelle résolution.
CORRECTIONS *fixed-5.6*
L'utilisation de ce mappage en mode Sélection mettait fin au complètement :
":vnoremap <C-N> <Esc>a<C-N>". (Benji Fisher) Ignorer K_SELECT dans
ins_compl_prep().
VMS (Zoltan Arpadffy, David Elins):
- ioctl() posait des problèmes dans pty.c, ajout de #ifndef VMS.
- Incohérence du copier/coller corrigée.
- Plantage de la ligne du menu Popup corrigé. (Rustine 5.5.047)
- Répertoires Motif pendant l'ouverture et l'"enregistrement sous" corrigés.
- Prise en compte des noms de fichiers complets avec leurs numéros de version.
(Rustine 5.5.046)
- Prise en charge des répertoires (commande CD, etc.)
- Correction de la conversion des noms de fichiers VMS vers Unix et
vice-versa.
- Le recouvrement ne fonctionnait pas.
- La gestion du terminal et des signaux était obsolète comparée à os_unix.c.
- Amélioration de os_vms.txt.
`configure` utilisait fprintf() au lieu de printf() pour tester __DATE__ et
__TIME__. (John Card II)
BeOS : ajuster le calcul de char_height et char_ascent. Les arrondir
séparément pour éviter les artefacts au rafraîchissement. (Mike Steed)
Corrections de quelques problèmes avec le multi-octets dans menu_name_skip(),
set_reg_ic(), searchc() et findmatchlimit(). (Taro Muraoka)
IHM graphique GTK :
- Avec GTK 1.2.5 ou ultérieur, les barres de défilement n'était pas
rafraîchies correctement.
- Ajustement de la fonction gtk_form_draw().
- le connexion SNiFF ne fonctionnait pas.
- 'mousefocus' ne fonctionnait pas. (Dalecki)
- Certaines touches ne fonctionnaient pas avec des modificateurs : Maj-Tab,
Ctrl-Space and Ctrl-@.
Rustine 5.5.001
Problème : `configure` dans le répertoire racine ne passait pas les arguments
contenant un espace correctement. Par exemple "./configure
--previs="/My home". (Stephane Chazelas)
Solution : Utiliser '"$@"' au lieu de '$*' pour passer les arguments.
Fichiers : configure
Rustine 5.5.002
Problème : Erreur de compilation avec "fds[] & POLLIN". (Jeff Walker)
Solution : Utiliser "fds[].revents & POLLIN".
Fichiers : src/os_unix.c
Rustine 5.5.003
Problème : La vérification de sizeof(int) par autoconf est fausse sur les
machines où sizeof(size_t) != sizeof(int).
Solution : Utiliser notre propre test `configure`. Correction des
avertissements lors d'une compilation croisée.
Fichiers : src/configure.in, src/configure
Rustine 5.5.004
Problème : Sur Unix, impossible d'interrompre ":sleep 100".
Solution : Basculer le terminal en mode "cooked", pour permettre au signal
SIGINT de nous réveiller. Mais désactivation de l'écho, ajout de
TMODE_SLEEP.
Fichiers : src/term.h, src/os_unix.c
Rustine 5.5.005
Problème : Lors de l'utilisation de <f-args> avec une commande utilisateur,
un argument vide aboutissait à une chaîne vide, alors qu'aucune
chaîne n'était attendue.
Solution : Intercepter l'argument vide et ne passer aucun argument à la
fonction. (Paul Moore)
Fichiers : src/ex_docmd.c
Rustine 5.5.006
Problème : Python : quand les fichiers dépendant de la plate-forme sont dans
un répertoire différent des fichiers indépendant de la
plate-forme, cela ne fonctionne pas.
Solution : Vérifier aussi le répertoire de l'exécutable, et l'ajouter à
CFLAGS. (Tessa Lau)
Fichiers : src/configure.in, src/configure
Rustine 5.5.007 (extra)
Problème : Win32 OLE : plantage occasionnel lors d'une sortie alors que OLE
utilise toujours Vim.
Solution : Déplacer OleUninitialize() avant la suppression de
l'objet-application. (Vince Negri)
Fichiers : src/if_ole.cpp
Rustine 5.5.008
Problème : 10000@@ est très long et impossible à interrompre.
Solution : Tester CTRL-C dans la boucle exécutant le registre.
Fichiers : src/normal.c
Rustine 5.5.009
Problème : les machines Sequent récentes ne lient pas avec "-linet". (Kurtis
Rader)
Solution : Supprimer le test Seqent de `configure`.
Fichiers : src/configure.in, src/configure
Rustine 5.5.010
Problème : Ctags libérait deux fois un bloc de mémoire avant de sortir. En
cas de mémoire saturée, un message trompeur était émis.
Solution : Mise à jour vers ctags 3.3.2. Cela corrige également d'autres
problèmes. (Darren Hiebert)
Fichiers : src/ctags/*
Rustine 5.5.011
Problème : Après "CTRL-V s", le curseur retounait au début, alors que tous
les autres opérateurs le laissent sur le dernier caractère
modifié. (Xiangjiang Ma)
Solution : Placer le curseur sur le dernier caractère modifié, quand c'est
possible.
Fichiers : src/ops.c
Rustine 5.5.012
Problème : L'utilisation de CTRL-] en mode Visuel ne fonctionnait pas quand
le texte contenait un espace (justement là où c'est utile).
(Stefan Bittner)
Solution : Ne pas déspécialiser les caractères spéciaux avec une
contre-oblique dans les marqueurs.
Fichiers : src/normal.c
Rustine 5.5.013
Problème : Les commandes ":append" et ":insert" permettent l'utilisation de
la contre-oblique dans une ligne. La commande ":source" concatène
ces lignes. (Heinlein)
Solution : Ajout du drapeau 'C' dans 'cpoptions' pour désactiver la
concaténation.
Fichiers : src/ex_docmd.c, src/option.h, runtime/doc/options.txt,
runtime/filetype.vim, runtime/scripts.vim
Rustine 5.5.014
Problème : Lors de l'exécution d'un registre avec ":@", la commande ":append"
se retrouvait avec ses lignes de textes précédées d'un ':'.
(Heinlein)
Solution : Supprimer les ':'.
Fichiers : src/ex_docmd.c, src/ex_getln.c, src/globals.h
Rustine 5.5.015
Problème : Avec ":g/pat/p", il est difficile de voir où commence la sortie,
la commande ":g" étant recourverte. Vi conserve la commande ":g".
Solution : Conserver la commande ":g", mais permettre son recouvrement par le
rapport du nombre de changements.
Fichiers : src/ex_cmds.c
Rustine 5.5.016 (extra)
Problème : Win32 : regedit, utilisé pour installer Vim dans le menu
contextuel, demande une confirmation à l'utilisateur.
Solution : Utiliser "regedit /s" pour éviter le dialogue.
Fichiers : src/dosinst.c
Rustine 5.5.017
Problème : Si une erreur se produisait lors de la fermeture d'une fenêtre,
Vim pouvait rester bloqué dans le gestionnaire d'erreur.
Solution : Ne pas fixer curwin à NULL lors de la fermeture de la fenêtre
courante.
Fichiers : src/window.c
Rustine 5.5.018
Problème : Les chemins absolus dans les scripts shell ne fonctionnent pas
toujours.
Solution : Utiliser /usr/bin/env pour déterminer le chemin.
Fichiers : runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl,
runtime/tools/shtags.pl
Rustine 5.5.019
Problème : L'appel d'une fonction dans 'statusline' interrompt la possibilité
de quitter en faisant deux fois ":q", quand le dernier argument
n'a pas été modifié.
Solution : Ne pas décrémenter quitmore lors de l'exécution d'une fonction.
(Madsen)
Fichiers : src/ex_docmd.c
Rustine 5.5.020
Problème : Quand la sortie du complètement de la ligne de commande avec
CTRL-D dépasse la dernière colonne, un ligne vide apparaît.
Solution : Ne pas ajouter de NL quand le curseur est déjà sur la ligne
suivante. (Madsen)
Fichiers : src/ex_getln.c
Rustine 5.5.021
Problème : Lors du test pour savoir si un nom de fichier du fichier de
marqueurs est relatif, les variables d'environnement n'étaient pas
étendues.
Solution : Étendre les noms de fichiers avant de vérifier s'ils sont
relatifs. (Madsen)
Fichiers : src/tag.c
Rustine 5.5.022
Problème : À la modification de 'paste', la règle n'était pas mise à jour.
Solution : Mettre la ligne de statut à jour quand 'ruler' change à cause de
'paste'.
Fichiers : src/option.c
Rustine 5.5.023
Problème : Lors de l'édition d'un nouveau fichier et que des autocommandes
changeaient la position du curseur, ce dernier retournait au
premier non-blanc, à moins que 'startofline' ne soit réinitialisé.
Solution : Conserver la nouvelle colonne, comme le numéro de la ligne.
Fichiers : src/ex_cmds.c
Rustine 5.5.024 (extra)
Problème : IHM graphique Win32 : lors de l'utilisation de confirm() pour
afficher un dialogue sans bouton par défaut, le dialogue
n'obtenait pas le focus. (Krishna)
Solution : Toujours donner le focus à la fenêtre du dialogue. Ne donner le
focus à un bouton que s'il est spécifié comme défaut.
Fichiers : src/gui_w32.c
Rustine 5.5.025
Problème : Avec "keepend" dans une région de syntaxe, une correspondance
contenue contenant une fin-de-ligne pouvait toujours étendre la
région, si une autre correspondance contenue existait à
l'intérieur.
Solution : Vérifier keepend_level dans check_state_ends().
Fichiers : src/syntax.c
Rustine 5.5.026
Problème : Au démarrage de Vim dans un xterm blanc sur noir, alors que 'bg'
vaut "dark", et que l'IHM graphique est lancée avec ":gui", ce qui
fixe 'bg' à "light" avec le gvimrc, la surbrillance n'est pas
activée. (Tsjokwing)
Solution : Fixer la surbrillance quand 'bg' est modifié dans le gvimrc, même
si full_screen n'est pas positionné.
Fichiers : src/option.c
Rustine 5.5.027
Problème : Unix : os_unix.c ne compile pas quand XTERM_CLIP est utilisé mais
pas WANT_TITLE. (Barnum)
Solution : Déplacer quelques fonctions utilisées par le titre et le
presse-papiers X11 et mettre un autre "#if" autour.
Fichiers : src/os_unix.c
Rustine 5.5.028 (extra)
Problème : IHM graphique Win32 : quand un fichier est déposé sur un gvim
Win32 à l'invite ":", le fichier est édité mais la ligne de
commande persiste, le curseur retourne à la ligne de commande pour
la commande suivante. (Krishna)
Solution : Au dépôt d'un fichier ou d'un répertoire lors de l'invite ":",
insérer le nom du fichier/répertoire. Permettre l'utilisation des
noms de fichiers/répertoires pour n'importe quelle commande Ex.
Fichiers : src/gui_w32.c
Rustine 5.5.029
Problème : "das" à la fin d'un fichier n'effaçait pas le dernier caractère de
la phrase.
Solution : Quand aucun caractère ne suit la phrase, rendre l'opération dans
current_sent() inclusive.
Fichiers : src/search.c
Rustine 5.5.030
Problème : Unix : dans os_unix.c, "term_str" est employé, alors qu'il est
défini en tant que macro dans vim.h. (wuxin)
Solution : Renommer "term_str" en "buf" dans do_xterm_trace().
Fichiers : src/os_unix.c
Rustine 5.5.031 (extra)
Problème : IHM graphique Win32 : en quittant MS-Windows, gvim laisse le
fichier d'échange derrière lui et est tué un peu sauvagement
(Krishna)
Solution : Intercepter les messages WM_QUERYENDSESSION et WM_ENDSESSION et
tenter de quitter proprement. Permettre l'interruption de
l'extinction s'il reste un tampon modifié.
Fichiers : src/gui_w32.c
Rustine 5.5.032
Problème : La rustine 5.5.025 est incorrecte. La coloration syntaxique du C
était encore erronée pour #define.
Solution : Ajouter l'argument "excludenl" à ":syntax", pour ne pas étendre
un élément contenu quand une correspondance existe avec une
fin-de-ligne.
Fichiers : src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim
Rustine 5.5.033
Problème : Lors de la lecture de stdin, une ligne longue dans le viminfo
corrompait le message du fichier. readfile() utilise IObuff dans
keep_msg, qui pouvait être écrasé par n'importe qui.
Solution : Copier le message de IObuff vers msg_buf et fixer keep_msg en
conséquence. Modifier vim_fgets() pour ne plus utiliser IObuff.
Fichiers : src/fileio.c
Rustine 5.5.034
Problème : "gvim -rv" causait un plantage, en utilisant 't_Co' avant qu'il ne
soit fixé.
Solution : Ne pas tenter l'initialisation de la surbrillance avant qu'il ne
soit initialisé dans main().
Fichiers : src/syntax.c
Rustine 5.5.035
Problème : GTK avec XIM : le redimmensionnement avec une zone de statut était
peu soigné, et ":set guioptions+=b" ne fonctionnait pas.
Solution : Faire de la zone de statut un widget séparé, mais pas une fenêtre
à part. (Chi-Deok Hwang)
Fichiers : src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c
Rustine 5.5.036
Problème : La fonction GZIP_read() dans $VIMRUNTIME/vimrc_example.vim, qui
décompresse un fichier, n'effectuait pas de détection pour
'fileformat', car le filtrage était fait avec 'binary' activé.
Solution : Séparer le filtrage en commandes distinctes d'écriture, de
filtrage et de lecture.
Fichiers : runtime/vimrc_example.vim
Rustine 5.5.037
Problème : La commande "U" ne signalait pas le tampon comme modifié.
(McCormack)
Solution : Positionner le drapeau 'modified' lors de l'utilisation de "U".
Fichiers : src/undo.c
Rustine 5.5.038
Problème : Lors de la saisie d'une longue commande ":", provoquant le
défilement de l'écran, une invite Appuyez-sur-entrée se
produisait, même si l'utilisateur venait de taper <Entree> pour
exécuter la commande.
Solution : Réinitialiser need_wait_return quand (une partie de) la commande
est tapée dans getcmdline().
Fichiers : src/ex_getln.c
Rustine 5.5.039
Problème : Avec une ligne de statut personnalisée, "%a" (file # of #)
rapporte l'index de le fenêtre courante pour toutes les fenêtres.
Solution : Passer un pointeur de fenêtre à append_arg_number(), et passer la
fenêtre en cours de mise à jour depuis build_stl_str_hl().
(Stephen P. Wall)
Fichiers : src/buffer.c, src/screen.c, src/proto/buffer.pro
Rustine 5.5.040
Problème : Multi-octets : quand il se produit des erreurs dans
xim_real_init(), XIM peut être fermé et quitter. Un SEGV peut
alors se produire.
Solution : Tester la non-NULLité de "xic", ne pas fixer "xim" à NULL. Tenter
aussi de trouver plus de correspondances pour les styles
supportés. (Sung-Hyun Nam)
Fichiers : src/multbyte.c
Rustine 5.5.041
Problème : IHM graphique X11 : CTRL-_ ne nécessite Maj que sur certaines
machines.
Solution : Convertir CTRL-- en CTRL-_. (Robert Webb)
Fichiers : src/gui_x11.c
Rustine 5.5.042
Problème : IHM graphique X11 : les touches avec Alt étaient supposées être
destinées au menu, même quand le menu a été désactivé (suppression
de 'm' dans 'guioptions')
Solution : Ignorer les touches avec Alt seulement quand gui.menu_is_active
est positionné. (Raf)
Fichiers : src/gui_x11.c
Rustine 5.5.043
Problème : GTK : la gestion des polices contenues dans un jeu n'était pas
correcte quand 'guifontset' contenait précisement 14 fois '-'.
Solution : Éviter de fixer une police quand on travaille avec un jeu de
polices. (Sung-Hyun Nam)
Fichiers : src/gui_gtk_x11.c
Rustine 5.5.044
Problème : pltags.pl contient un chemin absolu "/usr/local/bin/perl". Cela ne
fonctionne sans doute pas partout.
Solution : Utiliser "/usr/bin/env perl" à la place.
Fichiers : runtime/tools/pltags.pl
Rustine 5.5.045
Problème : L'utilisation de la variable "this_session" ne fonctionne pas,
elle doit être précédée de "v:". Le nom par défaut pour
":mksession" n'est pas mentionné dans les manuels. (Fisher)
Solution : Supporter "this_session" pour assurer la compatibilité.
Fichiers : src/eval.c, runtime/doc/options.txt
Rustine 5.5.046 (extra)
Problème : VMS : problèmes avec les chemins et les noms de fichiers.
Solution : Tronquer les noms de fichier au dernier ';' etc. (Zoltan Arpadffy)
Fichiers : src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c,
src/proto/os_vms.pro
Rustine 5.5.047
Problème : VMS : plantage lors de l'utilisation du menu contextuel.
Solution : Changer me #define MENU_MODE_CHARS en tableau. (Arpadffy)
Fichiers : src/structs.h, src/menu.c
Rustine 5.5.048
Problème : HP-UX 11 : impossible de compiler, car string.h et strings.h sont
tous les deux inclus. (Squassabia)
Solution : Le test de `configure` pour l'inclusion des deux précédents doit
d'abord inclure <Xm/Xm.h>, car il pose problème.
Fichiers : src/configure.in, src/configure, src/config.h.in
Rustine 5.5.049
Problème : Unix : lors de l'installation de Vim, les bits de permission des
fichiers pouvaient être influencés par umask.
Solution : Ajouter $(FILEMOD) au Makefile. (Shetye)
Fichiers : src/Makefile
Rustine 5.5.050
Problème : Les commandes "z+" et "z^" sont manquantes.
Solution : Ajouter "z+" and "z^".
Fichiers : src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt
Rustine 5.5.051
Problème : Plusieurs systèmes Unix ont un problème avec la vérification de la
limite d'optimisation de `configure`.
Solution : Supprimer le test `configure`, laisser à l'utilisateur le soin de
l'ajouter manuellement dans le Makefile ou l'environnement.
Fichiers : src/configure.in, src/configure, src/Makefile
Rustine 5.5.052
Problème : Plantage avec les touches fléchées lors de l'invite ATTENTION.
(Alberani)
Solution : Ignorer les touches spéciales pendant le dialogue de la console.
Ignorer aussi les caractères > 255 pour les autres usages que
tolower() et toupper().
Fichiers : src/menu.c, src/message.c, src/misc2.c
Rustine 5.5.053
Problème : L'indentation est fausse après une fonction quand 'cino' contient
"fs". Problème quand 'cino' contient "{s".
Solution : Ajouter une ligne après la fermeture "}" d'une fonction sur la
marge gauche.
Appliquer ind_open_extra de la bonne façon après une '{'.
Fichiers : src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
Rustine 5.5.054
Problème : Unix : ":e #" ne fonctionne pas si le nom de fichier alternatif
contient un espace ou une contre-oblique. (Hudacek)
Solution : Lors du remplacement de "#", "%" ou des autres jokers mis à la
place des noms de fichiers, ajouter une contre-oblique devant les
caractères spéciaux.
Fichiers : src/ex_docmd.c
Rustine 5.5.055
Problème : Utiliser "<C-V>$r-" en mode Visuel par bloc remplace un caractère
au-delà de la fin de la ligne. (Zivkov)
Solution : Ne remplacer que des caractères existants.
Fichiers : src/ops.c
Rustine 5.5.056
Problème : Après "z20<CR>", les messages étaient affichés une unique fois à
l'ancienne position de la ligne de commande. (Veselinovic)
Solution : Fixer msg_row et msg_col lors de la modification de cmdline_row en
win_setheight().
Fichiers : src/window.c
Rustine 5.5.057
Problème : Après "S<Esc>", "U" devrait pouvoir restaurer la ligne.
(Veselinovic)
Solution : Ne pas appeler u_clearline() dans op_delete() quand une seule
ligne est modifiée.
Fichiers : src/ops.c
Rustine 5.5.058
Problème : L'utilisation d'un motif de recherche long puis de "n" provoque
des erreurs avec l'invite Appuyez-sur-entrée. (Krishna)
Solution : Tronquer le motif affiché, comme les autres messages. Déplacement
du code pour tronquer de msg_attr() vers msg_strtrunc().
Fichiers : src/message.c, src/proto/message.pro, src/search.c
Rustine 5.5.059
Problème : IHM graphique GTK : quand $term est invalide, lancer "gvim" donne
un message d'erreur, même si $term n'est pas vraiment utilisé.
(Robbins)
Solution : Quand l'IHM graphique est sur le point de démarrer, ignorer les
messages d'erreur pour $term erroné.
Fichiers : src/term.c
Rustine 5.5.060 (extra)
Problème : MS-DOS 32 bits : quand un répertoire de 'backupdir' n'existe pas,
":w" provoque le renommage du fichier en "axlqwqhy.ba~".
(Matzdorf)
Solution : Le code pour contourner le bogue des noms de fichiers longs sous
MS-Windows 95 ne prend en charge correctement un nom de
fichier/répertoire non-existant. Quand le renommage échoue,
s'assurer que le fichier a son nom original. Faire la même chose
pour la version Win32, bien qu'il soit assez peu probable que ce
problème soit rencontré.
Fichiers : src/os_msdos.c, src/os_win32.c
Rustine 5.5.061
Problème : Lors de l'utilisation de "\:" dans une ligne de mode, la
contre-oblique est incluse dans la valeur de l'option. (Mohsin)
Solution : Supprimer une contre-oblique avant ':' dans une ligne de mode.
Fichiers : src/buffer.c, runtime/doc/options.txt
Rustine 5.5.062 (extra)
Problème : Console Win32 : les fichiers temporaires sont créés à la racine de
l'unité courante, qui peut être en lecture seule. (Peterson)
Solution : Utiliser le même mécanisme que pour la version graphique :
utiliser $TMP, $TEMP ou le répertoire courant. Nettoyage de
vim_tempname().
Fichiers : src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt
Rustine 5.5.063
Problème : Lors du complètement d'une ligne entière en mode Insertion,
'cindent' est appliqué, même après avoir changé l'indentation de
la ligne.
Solution : Ne pas réindenter la ligne complétée après l'insertion/suppression
de l'indentation. (Robert Webb)
Fichiers : src/edit.c
Rustine 5.5.064
Problème : has("sniff") ne fonctionne pas correctement.
Solution : Retourner 1 quand Vim inclut la fonctionnalité +sniff. (Pruemmer)
Fichiers : src/eval.c
Rustine 5.5.065
Problème : Lors du dépôt d'un fichier sur Vim, l'option 'shellslash' n'est
pas opérationnelle. (Krishna)
Solution : Corriger les obliques selon 'shellslash' dans le nom du fichier
déposé.
Fichiers : src/ex_docmd.c, runtime/doc/options.txt
Rustine 5.5.066
Problème : Pour les systèmes utilisant les contres-obliques dans les noms de
fichiers : fixer la valeur d'une option à un nom de fichier
commençant par "\\machine" supprimait la première contre-oblique.
Solution : Conserver la double contre-oblique "\\machine", mais changer
"\\\\machine" en "\\machine" pour la compatibilité ascendante.
Fichiers : src/option.c, runtime/doc/options.txt
Rustine 5.5.067
Problème : Avec 'hlsearch' activé, le motif "\>" ne met pas en surbrillance
la première correspondance de la ligne. (Benji Fisher)
Solution : Corriger la surbrillance pour les correspondances vides. Mettre le
premier caractère d'une ligne en surbrillance pour "$".
Fichiers : src/screen.c
Rustine 5.5.068
Problème : Plantage quand un ":while" a un argument contenant une erreur.
(Sylvain Viart) Utilisation d'un index non-initialisé dans le
tableau cs_line[]. Le plantage survenait quand l'index débordait
copieusement.
Solution : S'assurer que l'index non-initialisé n'est pas utilisé.
Fichiers : src/ex_docmd.c
Rustine 5.5.069
Problème : Décaler des lignes en mode Visuel par bloc ne positionnait pas le
drapeau 'modified'.
Solution : Positionner le drapeau 'modified'.
Fichiers : src/ops.c
Rustine 5.5.070
Problème : Lors de l'édition d'un nouveau fichier, puis la création de ce
fichier hors de Vim, puis de son édition à nouveau, ":w" avertit
toujours de l'écrasement d'un fichier existant. (Nam)
Solution : Le drapeau BF_NEW du champ "b_flags" n'était pas effacé
correctement.
Fichiers : src/buffer.c, src/fileio.c
Rustine 5.5.071
Problème : L'utilisation de matchgroup dans un ":syn region", qui est le même
groupe de syntaxe que la région, n'empêchait pas un élément
contenu de correspondre avec le motif start.
Solution : Empiler aussi un élément sur la pile quand l'ID de syntaxe pour
matchgroup est le même que l'ID de la région.
Fichiers : src/syntax.c
Rustine 5.5.072 (extra)
Problème : MS-DOS 32 bits : fixer 'columns' à une trop grande valeur peut
planter Vim et la console DOS.
Solution : Vérifier que la valeur de 'columns' est inférieure au nombre de
colonnes rapporté par le BIOS.
Fichiers : src/os_msdos.c, src/proto/os_msdos.pro, src/option.c
Rustine 5.5.073 (extra)
Problème : IHM graphique Win 32 : les dialogues Find et Find/Replace
n'affichaient pas la case à cocher "match case". Le dialogue
Find/Replace ne prenait pas en charge la case à cocher
"match whole word".
Solution : Prendre en charge "match case" et "match whole word".
Fichiers : src/gui_w32.c
Rustine 5.6a.001
Problème : Utiliser <C-End> avec un quantificateur n'est pas identique à "G".
(Benji Fisher)
Solution : Accepter un quantificateur pour <C-End> et <C-Home>.
Fichiers : src/normal.c
Rustine 5.6a.002
Problème : Le script de conversion en HTML était une ancienne version.
Solution : Ajouter le support de 2html.vim pour les terminaux couleur.
Fichiers : runtime/syntax/2html.vim
Rustine 5.6a.003
Problème : Définir une fonction dans une fonction ne produisait pas de
message d'erreur. Un ":endfunction" manquant ne produisait pas de
message d'erreur.
Solution : Permettre la définition d'une fonction dans une fonction.
Fichiers : src/eval.c, runtime/doc/eval.txt
Rustine 5.6a.004
Problème : Omettre un ":endwhile" ou un ":endif" ne produisait pas de
message d'erreur. (Johannes Zellner)
Solution : Vérifier les ":endwhile" et ":endif" manquants dans les fichiers
sourcés.
Ajouter les ":endif" manquants dans les macros de sélection de
fichier.
Fichiers : src/ex_docmd.c, runtime/macros/file_select.vim
Rustine 5.6a.005
Problème : 'hlsearch' n'était pas listée alphabétiquement. La valeur de
'toolbar' était modifiée quand 'compatible' était activé.
Solution : Déplacement de l'entrée de 'hlsearch' dans le tableau options[].
Ne pas réinitialiser 'toolbar' à sa valeur par défaut quand
'compatible' est activé.
Fichiers : src/option.c
Rustine 5.6a.006
Problème : L'utilisation d'une plage inversée dans un ":if 0" produisait un
message d'erreur.
Solution : Ne pas se plaindre d'une plage si elle ne va pas être utilisée.
(Stefan Roemer)
Fichiers : src/ex_docmd.c
Rustine 5.6a.007
Problème : ":let" n'affichait pas les variables internes. (Ron Aaron)
Solution : Afficher les variables "v:" avec ":let" et ":let v:name".
Fichiers : src/eval.c
Rustine 5.6a.008
Problème : Sélectionner une syntaxe depuis le menu Syntaxe produisait une
erreur.
Solution : Replacer "else if" par "elseif" dans SetSyn(). (Ronald Schild)
Fichiers : runtime/menu.vim
Rustine 5.6a.009
Problème : À la compilation avec +extra_search mais sans +syntax, une erreur
de compilation se produit dans screen.c. (Axel Kielhorn)
Solution : Adjuster le #ifdef pour la déclaration et l'initialisation de
"line" dans win_line(). Problème de la compilation de +statusline
sans +eval résolu. Pareil pour +cmdline_compl sans +eval.
Fichiers : src/screen.c, src/misc2.c
Rustine 5.6a.010
Problème : Dans une fonction, ":startinsert!" ne place pas le curseur à la
fin de la ligne si une commande ":normal" a été utilisée pour
déplacer le curseur. (Fisher)
Solution : Réinitialiser "w_set_curswant" pour éviter que w_curswant soit
changé à nouveau.
Fichiers : src/ex_docmd.c
Rustine 5.6a.011 (basé sur 5.6a.004)
Problème : Un ":endif" ou un ":endwhile" manquant dans une fonction ne
produit pas de message d'erreur.
Solution : Émettre ce message d'erreur.
Fichiers : src/ex_docmd.c
Rustine 5.6a.012 (basé sur 5.6a.008)
Problème : Certaines entrées du menu Syntaxe affichait l'invite
Appuyez-sur-entrée.
Solution : Appeler une fonction pour raccourcir la commande. Renommer
quelques fonctions pour éviter des collisions entre les noms.
Fichiers : runtime/menu.vim
Rustine 5.6a.013
Problème : Le complètement de la ligne de commande fonctionne différemment
quand un autre complètement a eu lieu auparavant. (Johannes
Zellner)
Solution : Réinitialiser wim_index lors d'un nouveau complètement.
Fichiers : src/ex_getln.c
Rustine 5.6a.014
Problème : Divers messages d'avertissement de la part de lint avec
différentes combinaisons de fonctionnalités.
Solution : Corriger les problèmes signalés.
Fichiers : src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c,
src/option.c, src/screen.c, src/search.c, src/syntax.c,
src/feature.h, src/globals.h
Rustine 5.6a.015
Problème : La commande vimtutor ne connaît pas toujours $VIMRUNTIME.
Solution : Laisser Vim étendre $VIMRUNTIME, plutôt que le shell.
Fichiers : src/vimtutor
Rustine 5.6a.016 (extra)
Problème : Mac : la taille de la fenêtre est limitée au démarrage. Impossible
de glisser la fenêtre sur la totalité du Bureau.
Solution : Récupérer la taille réelle de l'écran au lieu de supposer 640x400.
Ne pas utiliser un nombre fixe pour les limites du glissage. (Axel
Kielhorn)
Fichiers : src/gui_mac.c
Rustine 5.6a.017
Problème : L'entrée "Paste" du menu contextuel pour les modes Visuel,
Insertion et Ligne-de-commande n'est pas à la bonne place. (Stol)
Solution : Ajouter des priorités pour toutes les entrées de menu "Paste".
Fichiers : runtime/menu.vim
Rustine 5.6a.018
Problème : IHM graphique GTK : les priorités dans les sous-menus ne
fonctionnent pas
Le dialogue d'aide peut être détruit trop tôt.
À la fermeture d'une fenêtre de dialogue, (par exemple
"ATTENTION"), Vim pouvait se bloquer.
Quand le thème GTK change, Vim ne s'adapte pas aux nouvelles
couleurs.
L'argument de ":promptfind" n'est pas utilisé.
Solution : Correction des problèmes ci-dessus.
Amélioration du Look'n Feel des dialogues.
Fonctions déplacées pour éviter les déclarations amont.
Correction de la réentrance du sélecteur de fichiers.
Ajout du support du glisser/déposer pour GNOME.
Initialisation du texte pour le dialogue Find/replace avec la
dernière chaîne cherchée. "match whole word" se comporte
correctement.
La vitesse de répétition pour un glissement hors de la fenêtre
dépend de la distance avec la fenêtre. (Marcin Dalecki)
Le glissement fonctionne en mode Visuel.
Suppression de la protection anti-recursion dans
gui_mch_get_rgb(), elle semble poser plus de problèmes qu'elle
n'en résoud.
Fichiers : src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c,
src/proto/ui.pro, src/misc2.c
Rustine 5.6a.019
Problème : Lors d'un tentative de recouvrement avec NFS utilisant une grande
taille de bloc, Vim peut avoir l'impression que le fichier
d'échange est vide, car mf_blocknr_max vaut zéro. (Scott
McDermott)
Solution : Lors du calcul du nombre de blocs du fichier dans mf_open(),
arrondir au supérieur plutôt qu'à l'inférieur.
Fichiers : src/memfile.c
Rustine 5.6a.020
Problème : IHM graphique GTK : impossible de fixer le display pour gvim.
Solution : Ajouter les arguments "-display" et "--display". (Marcin Dalecki)
Fichiers : src/gui_gtk_x11.c
Rustine 5.6a.021
Problème : Le recouvrement peut ne pas fonctionner quand la taille de blocs
du périphérique où le fichier d'échange est situé est supérieure à
4096.
Solution : Lire le bloc 0 avec la taille de bloc minimale.
Fichiers : src/memline.c, src/memfile.c, src/vim.h
Rustine 5.6a.022 (extra)
Problème : IHM graphique Win32 : quand une erreur dans le vimrc provoque
l'affichage d'un dialogue (par exemple l'existence d'un fichier
d'échange), Vim plante. (David Elins)
Solution : Ouvrir la fenêtre principale avant d'afficher le dialogue.
Fichiers : src/gui_w32.c
Rustine 5.6a.023
Problème : Utiliser expand("%:gs??/?") provoque un plantage. (Ron Aaron)
Solution : Tester si la fin de la chaîne est atteinte dans do_string_sub().
Fichiers : src/eval.c
Rustine 5.6a.024
Problème : Utiliser une autocommandes pour effacer un tampon à sa sortie
peut provoquer un plantage lors d'un saut vers un marqueur. (Franz
Gorkotte)
Solution : Dans do_tag(), mémoriser tagstacklen avant de sauter dans un autre
tampon.
Vérifier tagstackidx avant de sauter dans un autre tampon.
Ajouter une vérification supplémentaire dans win_split() pour
tester si tagname n'est pas NULL.
Fichiers : src/tag.c, src/window.c
Rustine 5.6a.025 (extra)
Problème : IHM graphique Win32 : les tables pour toupper() et tolower() sont
initialisées trop tardivement. (Mike Steed)
Solution : Déplacer les initialisations dans win32_init() et les appeler
depuis main().
Fichiers : src/main.c, src/os_w32.c, src/proto/os_w32.pro
Rustine 5.6a.026
Problème : Quand la connexion avec SNiFF est ouverte, les commandes shell
bloquent. (Pruemmer)
Solution : Éviter un deuxième appel à wait() quand waitpid() a déjà détecté
la terminaison du processus fils.
Fichiers : src/os_unix.c
Rustine 5.6a.027 (extra)
Problème : IHM graphique Win32 : l'entrée "Edit with Vim" du menu contextuel
posait des problèmes avec la barre d'outils MS-Office.
Solution : Utiliser une DLL d'extension du shell. (Tianmiao Hu)
Ajoutée aux programmes d'installation et de désinstallation, elle
remplace les anciennes entrées du registre.
Fichiers : src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
Rustine 5.6a.028 (extra)
Problème : IHM graphique Win32 : les dialogues et les menus détachables ne
prennent pas en charge les caractères multi-octets.
Solution : Ajuster nCopyAnsiToWideChar() pour les prendre en compte
correctement.
Fichiers : src/gui_w32.c
==============================================================================
Version 5.7 *version-5.7*
La version 5.7 corrige les bogues de la version 5.6.
CHANGEMENTS *changed-5.7*
src/INSTALL.mac renommé en INSTALL_mac.txt pour éviter qu'il ne soit reconnu
comme un type de fichier erroné. Pareil pour src/INSTALL.amiga renommé en
INSTALL_ami.txt.
AJOUTS *added-5.7*
Nouveau fichiers de syntaxe :
stp Stored Procedures (Jeff Lanzarotta)
snnsnet, snnspat, snnsres SNNS (Davide Alberani)
mel MEL (Robert Minsk)
ruby Ruby (Mirko Nasato)
tli TealInfo (Kurt W. Andrews)
ora Fichier de configuration Oracle (Sandor Kopanyi)
abaqus Abaqus (Carl Osterwisch)
jproperties Java Properties (Simon Baldwin)
apache Apache config (Allan Kelly)
csp CSP (Jan Bredereke)
samba Configuration Samba (Rafael Garcia-Suarez)
kscript KDE script (Thomas Capricelli)
hb Hyper Builder (Alejandro Forero Cuervo)
fortran Fortran (rewritten) (Ajit J. Thakkar)
sml SML (Fabrizio Zeno Cornelli)
cvs CVS commit (Matt Dunford)
aspperl ASP Perl (Aaron Hope)
bc BC calculator (Vladimir Scholtz)
latte Latte (Nick Moffitt)
wml WML (Gerfried Fuchs)
Inclusion de Exuberant ctags 3.5.1. (Darren Hiebert)
Arguments "display" et "fold" pour les éléments de syntaxe. Ils sont destinés
à des extensions futures et sont actuellement ignorés.
Fonction strftime() pour Macintosh.
macros/explorer.vim : un explorateur de fichiers en script. (M A Aziz Ahmed)
CORRECTIONS *fixed-5.7*
La version MS-DOS 16 bits est maintenant compilée avec Bcc 3.1 plutôt que 4.0.
L'exécutable est plus petit.
Quand "make test" échouait, le fichier de sortie était perdu. Le renommer en
test99.failed pour pouvoir voir ce qui s'est mal passé.
Après le sourcement de bugreport.vim, il n'est pas très clair que
bugreport.txt est écrit dans le répertoire courant. Édition de bugreport.txt
pour clarifier.
L'ajout du support de IME avec Makefile.w32 ne fonctionnait pas. (Taro
Muraoka)
Console Win32 : des événements de glissement de la souris étaient envoyés même
quand la souris ne bougeait pas.
Interface Perl : dans Buffers(), l'argument de SvPV() était de type int, alors
qu'il aurait dû être STRLEN. (Tony Leneis)
Problème avec le prototype de index() sur AIX 4.3.0. Ajout d'une vérification
de _AIX43 dans os_unix.h. (Jake Hamby)
Les mappages de mswin.vim pouvaient être masqués quand certaines commandes
étaient mappées. Ajout de "nore" à la plupart de mappages pour éviter un
re-mappage.
modify_fname() faisait la copie du nom de fichier avec ":p" même quand le
chemin était déjà complet, ce qui était assez lent.
Win32 avec Borland C++ 5.5 : passer le chemin du compilateur à xxd et à ctags,
pour éviter de dépendre de $PATH. Correction de "make clean".
Nombreuses corrections des parties spécifiques au Macintosh : (par Dany
StAmant principalement)
- Un seul menu Help.
- Plus de plantage lors de la suppression d'un élément de menu.
- Support de External Editor pour Codewarior (quelques petits pb subsistent).
- Support du menu contextuel.
- Plantage du collage suivant un basculement d'application corrigé.
- Affichage correct des couleurs de rgb.txt.
- 'isprint' inclut par défaut tous les caractères après '~'. (Axel Kielhorn)
- mac_expandpath() avait une fuite de mémoire.
- Ajout de la table des digrammes. (Axel Kielhorn)
- Support multi-octets : (Kenichi Asai)
(Dés)activer keyscript avec le mode Insertion.
Affichage correct des caractères multi-octets.
Ne pas utiliser mblen() mais le bit de poids fort du char pour détecter un
caractère multi-octets.
Afficher la valeur du multi-octets dans la ligne de statut (pour tous les
systèmes).
- Le bouton de la souris n'était pas initialisé correctement à MOUSE_LEFT
quand USE_CTRLCLICKMENU n'était pas défini.
- Avec les caractères japonais SJIS : faire "w", "b", et "e" fonctionne
correctement. (Kenichi Asai)
- Remplacer l'ancien fichier CodeWarrior os_mac.CW9.hqx par
os_mac.cw5.sit.hqx.
Corrections pour VMS : (Zoltan Arpadffy) (voir aussi la rustine 5.6.045
ci-dessous)
- Ajout de Makefile_vms.mms et vimrc.vms dans src/testdir pour pouvoir jouer
les tests.
- Diverses corrections.
- Fixer 'undolevels' à 1000 par défaut.
- Rendre mch_settitle() equivalent à celui de os_unix.c.
RISC-OS : quelques prototypes de os_riscos.c étaient obsolètes. Générer
automatiquement les prototypes.
Rustines précédemment publiées :
Rustine 5.6.001
Problème : Avec "set bs=0 si cin", insérer "#<BS>" ou "}<BS>" réduit
l'indentation mais n'efface pas le "#" ou la "}". (Lorton)
Solution : Adjuster ai_col dans ins_try_si().
Fichiers : src/edit.c
Rustine 5.6.002
Problème : Avec le fichier de syntaxe vim.vim, un commentaire dont tous les
caractères sont en majuscule provoque un blocage.
Solution : Adjuster le motif de vimCommentTitle. (Charles Campbell)
Fichiers : runtime/syntax/vim.vim
Rustine 5.6.003
Problème : IHM graphique GTK : charger une barre d'outils personnalisée
produit un avertissement à propos de la palette de couleurs. Sans
doute parce que la fenêtre n'est pas encore ouverte.
Solution : Utiliser gdk_pixmap_colormap_create_from_xpm() pour convertir le
fichier xpm. (Keith Radebaugh)
Fichiers : src/gui_gtk.c
Rustine 5.6.004 (extra)
Problème : IHM graphique Win32 avec IME : le sélecteur de polices apparaît
deux fois quand on fixe 'guifont' à "*".
Solution : Dans gui_mch_init_font(), ne pas appeler get_logfont(), mais
copier norm_logfont depuis fh. (Yasuhiro Matsumoto)
Fichiers : src/gui_w32.c
Rustine 5.6.005
Problème : Quand 'winminheight' vaut zero, CTRL-W - avec un quantificateur
élevé provoque un plantage. (David Kotchan)
Solution : Tester une hauteur négative de fenêtre dans win_setheight().
Fichiers : src/window.c
Rustine 5.6.006
Problème : IHM graphique GTK : Il n'est pas toujours possible d'utiliser les
polices grasses. La mémoire est libérée trop tôt dans
gui_mch_init_font().
Solution : Déplacer l'appel à g_free() après l'endroit où sdup est utilisé.
(Artem Hodyush)
Fichiers : src/gui_gtk_x11.c
Rustine 5.6.007 (extra)
Problème : IHM graphique Win32 : la police affichée n'est pas modifiée quand
la police d'écran est changée. Et la fenêtre de composition IME ne
dessine pas le curseur.
Solution : Initialiser les polices IME. Quand le curseur est déplacé, fixer
la fenêtre de composition avec ImeSetCompositionWindow(). Ajout
d'appels à ImmReleaseContext() à plusieurs endroits. (Taro
Muraoka)
Fichiers : src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro
Rustine 5.6.008 (extra)
Problème : Win32 : Quand deux fichiers ont le même nom mais avec une casse
différente (avec NFS ou Samba), rectifier le nom de fichier
pouvait aboutir à l'édition du mauvais fichier.
Solution : Préférer une correspondance parfaite à une correspondance à la
casse près dans fname_case(). (Flemming Madsen)
Fichiers : src/os_win32.c
Rustine 5.6.009 (extra)
Problème : IHM graphique Win32 : salissure dans la ligne d'aide du Windows
Explorer lors de sélection de l'entrée "Edit with Vim" du menu
contextuel.
Solution : Ne retourner la ligne d'aide que si l'appel contient le drapeau
GCS_HELPTEXT. (Tianmiao Hu)
Fichiers : GvimExt/gvimext.cpp
Rustine 5.6.010
Problème : Un nom de fichier contenant une tabulation n'était pas
correctement lu dans le fichier viminfo et ":ls" n'alignait pas
correctement.
Solution : Analyse les lignes de la liste des tampons à l'envers en partant
de la fin. Compter deux caractères pour une tabulation pour que la
liste rendue ":ls" soit alignée.
Fichiers : src/buffer.c
Rustine 5.6.011
Problème : Avec 'columns' très grand (et une police minuscule) et que
'statusline' est utilisé, Vim peut planter.
Solution : Limiter maxlen à MAXPATHL dans win_redr_custom(). (John Mullin)
Fichiers : src/screen.c
Rustine 5.6.012
Problème : Quand /bin/sh est "zsh", toolcheck peut bloquer jusqu'à ce que
"exit" soit tapé. (Kuratczyk)
Solution : Ajouter "-c exit" lors du test de la version du shell.
Fichiers : src/toolcheck
Rustine 5.6.013
Problème : Les bulles d'aide ne fonctionnent pas en multi-octets.
Solution : Gérer les caractères multi-octets dans replace_termcodes().
(Taro Muraoka)
Fichiers : src/term.c
Rustine 5.6.014
Problème : Quand le curseur est à la fin de la ligne et que le caractère sur
lequel il se trouve est multi-octets, "yl" ne copie pas un
caractère multi-octets. (Takuhiro Nishioka)
Solution : Reconnaître correctement un caractère multi-octets à la fin d'une
ligne dans oneright(). (Taro Muraoka)
Faire apparaître "+quickfix" à sa place alphabétique dans
":version".
Fichiers : src/edit.c
Rustine 5.6.015
Problème : La touche Suppr des nouveaux xterm envoie <Esc>[3~ par défaut.
Solution : Ajouter <kDel> et <kIns> pour rendre complet le jeu de touches du
pavé numérique.
Fichiers : src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c,
src/misc2.c, src/normal.c, src/os_unix.c, src/term.c
Rustine 5.6.016
Problème : Lors de l'effacement d'une chaîne de recherche de l'historique
depuis un mappage, une autre entrée est aussi effacée. (Benji
Fisher)
Solution : Réinitialiser last_maptick quand la dernière entrée est effacée
dans l'historique des recherches. Incrémenter maptick au démarrage
d'un mappage déclenché au clavier pour éviter qu'une chaîne de
recherche fraichement ajoutée ne soit écrasée ou retirée de
l'historique.
Fichiers : src/ex_getln.c, src/getchar.c
Rustine 5.6.017
Problème : ":s/e/\^M/" devrait remplacer "e" par CTRL-M, et non couper la
ligne en deux. (Calder)
Solution : Remplacer de façon interne la contre-oblique par un CTRL-V.
(Stephen P. Wall)
Fichiers : src/ex_cmds.c
Rustine 5.6.018
Problème : ":help [:digit:]" mettait longtemps à sauter au mauvais endroit.
Solution : Insérer une contre-oblique pour éviter la signification spéciale
de '[]'.
Fichiers : src/ex_cmds.c
Rustine 5.6.019
Problème : "snd.c", "snd.java", etc. étaient reconnu selon le type "mail".
Solution : Rendre le motif pour le type de fichier "mail" plus sélectif.
Fichiers : runtime/filetype.vim
Rustine 5.6.020 (extra)
Problème : La version DJGPP consomme du temps processeur (Walter Briscoe).
Solution : Appeler __dpmi_yield() dans la boucle d'attente.
Fichiers : src/os_msdos.c
Rustine 5.6.021
Problème : Quand 'selection' vaut "exclusive", un double clic en mode
Insertion ne sélectionne pas le dernier caractère de la ligne.
(Lutz)
Solution : Permettre au curseur de se trouver sur le NUL de la ligne dans ce
cas.
Fichiers : src/edit.c
Rustine 5.6.022
Problème : ":e \~<Tab>" est étendu en ":e ~\$ceelen", ce qui ne fonctionne
pas.
Solution : Réinsérer une contre-oblique avant le '~'.
Fichiers : src/ex_getln.c
Rustine 5.6.023 (extra)
Problème : Divers avertissements du compilateur Ming.
Solution : Modifications pour éviter ces avertissements. (Bill McCarthy)
Fichiers : src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c,
src/syntax.c, src/vim.rc
Rustine 5.6.024 (extra)
Problème : Console Win32 : la saisie de CTRL-_ nécessite la touche Maj.
(Kotchan)
Solution : Intercepter spécifiquement le code 0xBD, comme dans l'IHM
graphique.
Fichiers : src/os_win32.c
Rustine 5.6.025
Problème : IHM graphique GTK : le démarrage de l'IHM graphique pouvait être
interrompu par un SIGWINCH. (Nils Lohner)
Solution : Répéter l'appel à read() pour récupérer la valeur de gui_in_use
lors de l'interruption par le signal.
Fichiers : src/gui.c
Rustine 5.6.026 (extra)
Problème : IHM graphique Win32 : les images de la barre d'outils sont
recherchées dans $VIMRUNTIME/bitmaps, tandis que GTK les recherche
dans $VIM/bitmaps. (Keith Radebaugh)
Solution : Utiliser $VIM/bitmaps pour les deux, car ils ne font pas partie de
la distribution, ils sont définis par l'utilisateur.
Fichiers : src/gui_w32.c, runtime/doc/gui.txt
Rustine 5.6.027
Problème : Tcl : plantage à l'utilisation d'un script Tcl (constaté sous
Win32).
Solution : Appeler Tcl_FindExecutable() dans main(). (Brent Fulgham)
Fichiers : src/main.c
Rustine 5.6.028
Problème : Xterm patch level 126 émet des codes pour la molette de la souris.
Pleinement opérationnel avec xterm patch level 131.
Solution : Reconnaître les codes pour les boutons 4 (0x60) et 5 (0x61).
Fichiers : src/term.c
Rustine 5.6.029
Problème : IHM graphique GTK : les raccourcis clavier sont inutilisables dans
les dialogues. (Johannes Zellner)
Solution : Ajouter le support des raccourcis clavier. (Marcin Dalecki)
Fichiers : src/gui_gtk.c
Rustine 5.6.030
Problème : Lors de la fermeture d'une fenêtre avec 'ea' activé, Vim peut
planter. (Yasuhiro Matsumoto)
Solution : Fixer "curbuf" à une valeur valide dans win_close().
Fichiers : src/window.c
Rustine 5.6.031
Problème : Multi-octets : quand un caractère double-octets se termine par
CSI, Vim attend la saisie d'un autre caractère.
Solution : Reconnaître CSI comme le second octets d'un caractère et ne pas en
attendre d'autres. (Yasuhiro Matsumoto)
Fichiers : src/getchar.c
Rustine 5.6.032
Problème : Les fonctions dont l'argument est un numéro de ligne n'acceptent
pas toutes ".", "$", etc. (Ralf Arens)
Solution : Ajouter get_art_lnum() et l'utiliser pour setline(), line2byte()
et synID().
Fichiers : src/eval.c
Rustine 5.6.033
Problème : Multi-octets : "f " saute parfois le second espace. (Sung-Hyun
Nam)
Solution : Modifier la logique de searchc() pour sauter les octets
supplémentaires des caractère doubles-octets.
Demander un second octet lors de la recherche de caractères
doubles-octets. (Park Chong-Dae)
Fichiers : src/search.c
Rustine 5.6.034 (extra)
Problème : La compilation avec Borland C++ 5.5 échoue pour tolower() et
toupper().
Solution : utiliser TO_LOWER() et TO_UPPER() à la place. Ajuster le
Makefile pour simplifier l'utilisation de bcc 5.5.
Fichiers : src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor
Rustine 5.6.035
Problème : L'affichage de la fonctionnalité "+comments" dans la sortie de
":version" était basée sur un ID erroné. (Stephen P. Wall)
Solution : Remplacer "CRYPTV" par "COMMENTS".
Fichiers : src/version.c
Rustine 5.6.036
Problème : IHM graphique GTK : copier/coller du texte ne fonctionnait pas
entre gvim et Eterm.
Solution : Supporter les cibles de sélection TEXT et COMPOUND_TEXT. (ChiDeok
Hwang)
Fichiers : src/gui_gtk_x11.c
Rustine 5.6.037
Problème : Multi-octets : impossible d'utiliser la commande "f" avec un
fichier multi-octets dans l'IHM graphique.
Solution : Activer XIM en mode Normal pour l'IHM graphique. (Sung-Hyun Nam)
Fichiers : src/gui_gtk_x11.c, src/multbyte.c
Rustine 5.6.038
Problème : Les clics multiples dans l'IHM graphique étaient interprétés comme
un coup de molette. Quand 'ttymouse' vaut "xterm", un clic de
souris est interprété comme un clic de molette.
Solution : Ne pas reconnaître la molette dans check_termcode() avec l'IHM
graphique.
Utiliser 0x43 pour un glissement de souris dans do_xterm_trace(),
et non 0x63.
Fichiers : src/term.c, src/os_unix.c
Rustine 5.6.039
Problème : IHM graphique Motif sous KDE : quand on tente de se déloguer, Vim
bloque le système. (Hermann Rochholz)
Solution : Lors de la prise en compte de l'événement WM_SAVE_YOURSELF, fixer
la propriété WM_COMMAND de la fenêtre pour faire savoir au
gestionnaire de fenêtres que nous avons fini d'enregistrer.
Fichiers : src/gui_x11.c
Rustine 5.6.040
Problème : Avec la commande ":s", la correspondance avec l'exprat est faite
deux fois.
Solution : Après la copie de la ligne correspondant, ajuster les pointeurs au
lieu de chercher la correspondance à nouveau. (Loic Grenie) Ajout
de vim_regnewptr().
Fichiers : src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro
Rustine 5.6.041
Problème : IHM graphique : Athena, Motif et GTK ne permettent pas plus de 10
boutons pour les dialogues.
Solution : Supprimer la limite sur le nombre de boutons.
Ajout du support du drapeau 'v' dans 'guioptions'.
Pour GTK : centrer les boutons.
Fichiers : src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c
Rustine 5.6.042
Problème : Lors d'un "vim -u vimrc" et que vimrc contient ":q", le curseur
peut rester désactivé dans le terminal.
Solution : Appeler cursor_on() dans mch_windexit().
Fichiers : src/os_unix.c
Rustine 5.6.043 (extra)
Problème : IHM graphique Win32 : lors de la sélection de la police de l'IHM
graphique avec le sélecteur, 'guifont' ne comprend pas les
attributs gras ou italiques.
Solution : Ajouter ":i" et/ou ":b" à 'guifont' dans gui_mch_init_font().
Fichiers : src/gui_w32.c
Rustine 5.6.044 (extra)
Problème : MS-DOS et MS-Windows : la ligne que dosinst.exe ajoute dans
l'autoexec.bat pour fixer PATH est fausse quand Vim est dans un
répertoire contenant un espace.
Solution : Utiliser des apostrophes-doubles pour les valeurs quand elles
contiennent des espaces.
Fichiers : src/dosinst.c
Rustine 5.6.045 (extra) (version corrigée)
Problème : VMS : divers petits problèmes.
Solution : Beaucoup de petites modifications. (Zoltan Arpadffy)
Le modificateur ":h" conserve le séparateur de chemin.
Le modificateur ":e" supprime aussi la version.
Compilation avec MAX_FEAT par défaut.
Pour les autocommandes, ignorer la version dans les noms de
fichier.
Prendre en compte l'insensibilité à la casse des noms de fichiers.
Ajout de de termcap vt320 intégré.
Prendre en charge un éventuel default_vim_dir vide.
Fichiers : runtime/gvimrc_example.vim, runtime/vimrc_example.vim,
runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c,
src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c,
src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c,
src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c
Rustine 5.6.046
Problème : systèmes avec des contres-obliques dans les noms des fichiers :
avec 'shellslash' activé, "vim */*.c" n'utilise une oblique que
pour le premier nom de fichier. (Har'El)
Solution : Mettre les obliques dans les noms de fichiers en argument après la
lecture du vimrc.
Fichiers : src/option.c
Rustine 5.6.047
Problème : $CPPFLAGS n'est pas transmis au `configure` de Ctags.
Solution : L'ajouter. (Walter Briscoe)
Fichiers : src/config.mk.in, src/Makefile
Rustine 5.6.048
Problème : Le manuel indique que CTRL-R en mode Ligne-de-cmd insère le texte
tel qu'il est tapé, mais il est inséré littéralement.
Solution : Insérer le texte tel qu'il est tapé pour CTRL-R, utiliser CTRL-R
CTRL-R pour l'insérer littéralement. Cela est cohérent avec le
mode Insertion. Mais les caractères mettant fin au mode
Ligne-de-cmd sont insérés littéralement.
Fichiers : runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c,
src/ops.c, src/proto/ops.pro
Rustine 5.6.049
Problème : Le manuel est faux quant au [!] après ":ijump". (Benji Fisher)
Solution : Corriger la documentation. Améliorer le code pour chercher une
correspondance après un commentaire /* */.
Fichiers : runtime/doc/tagsearch.txt, src/search.c
Rustine 5.6.050
Problème : Le remplacement est faux quand un caractère simple-octet
remplace un caractère double-octets ou le contraire.
Solution : Décaler le texte après le caractère quand il est remplacé.
(Yasuhiro Matsumoto)
Fichiers : src/normal.c, src/misc1.c
Rustine 5.6.051
Problème : ":tprev" et ":tnext" ne donnent aucun message d'erreur lors d'une
tentative pour aller avant le premier ou après le dernier
marqueur. (Robert Webb)
Solution : Ajouter des messages d'erreur. Attendre une seconde quand un
message de lecture de fichier risque de recouvrir un message
d'erreur, sinon il ne sera pas visible.
Fichiers : src/fileio.c, src/tag.c
Rustine 5.6.052
Problème : Multi-octets : quand le second octet d'une commande Ex est un '|'
ou un '"', elle se termine.
Solution : Sauter le second octet des caractères multi-octets lors du test de
'|' ou '"'. (Asai Kenichi)
Fichiers : src/ex_docmd.c
Rustine 5.6.053
Problème : CTRL-] ne fonctionne pas quand le marqueur contient un '|'. (Cesar
Crusius)
Solution : Déspécialiser '|', '"' et '\' dans les noms de marqueurs lors de
l'utilisation de CTRL-] et du complètement de la ligne de
commande.
Fichiers : src/ex_getln.c, src/normal.c
Rustine 5.6.054
Problème : Lors de l'utilisation de ":e" et de ":e #", le curseur est placé
sur la première colonne quand 'startofline' est activé. (Cordell)
Solution : Utiliser la dernière colonne connue quand 'startofline' est
activé.
Utiliser ECMD_LAST plus souvent pour simplifier le code.
Fichiers : src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro
Rustine 5.6.055
Problème : Quand 'statusline' ne contient que du texte sans "%" et ne tient
pas dans la fenêtre, Vim plante. (Ron Aaron)
Solution : Ne pas utiliser le pointeur vers le premier élément s'il n'y a
aucun élément.
Fichiers : src/screen.c
Rustine 5.6.056 (extra)
Problème : MS-DOS : F11 et F12 ne fonctionnent pas quand 'bioskey' est
activé.
Solution : Utilisation des fonctions étendues du clavier. (Vince Negri)
Détecter la présence de claviers étendus et fixer bioskey_read et
bioskey_ready.
Fichiers : src/os_msdos.c
Rustine 5.6.057 (extra)
Problème : IHM graphique Win32 : les caractères multi-octets sont faux dans
les dialogues et les menus détachables.
Solution : Utiliser les polices du système au lieu d'une police fixée.
(Matsumoto, Muraoka)
Fichiers : src/gui_w32.c
Rustine 5.6.058
Problème : Quand 'guioptions' ne contient pas 'a', les systèmes non-Windows
copient toujours le texte de la zone Visuel vers le presse-papiers
lors d'une commande de copiage ou de coupage. Sur MS-Windows, ce
n'est pas le cas même quand le drapeau 'a' n'est pas inclus.
Solution : Respecter la présence du drapeau 'a' dans 'guioptions' sur tous
les systèmes.
Fichiers : src/normal.c
Rustine 5.6.059 (extra)
Problème : Quand le curseur est déplacé sur du texte en italique et que les
caractères déborde sur la cellule de droite, la partie débordant
est effacée.
Constaté sur l'IHM graphique Win32, peut aussi se produire sur
d'autres systèmes.
Solution : Redessiner le texte en italique en partant d'un blanc, comme cela
est fait actuellement pour les caractères en gras. (Vince Negri)
Fichiers : src/gui.c, src/gui.h, src/gui_w32.c
Rustine 5.6.060
Problème : Certains caractères en gras débordent sur la cellule de gauche, et
ce débordement persiste parfois.
Solution : Redessiner un caractère quand le caractère suivant est en gras et
qu'il nécessite un rafraîchissement. (Robert Webb)
Fichiers : src/screen.c
Rustine 5.6.061
Problème : Quand xterm envoie des codes sur 8 bits, la reconnaissance de la
version de la réponse ne fonctionne pas.
Lors de l'utilisation de CSI au lieu de <Esc>[ pour les codes de
couleur termcap, l'utilisation de 16 couleurs n'est pas possible.
(Neil Bird)
Solution : Accepter aussi CSI à la place de <Esc>[ pour la chaîne de version.
Tester aussi CSI pour les couleurs 8 à 15 dans term_color().
Utiliser CSI pour les entrées termcap intégrées à xterm quand
'term' contient "8bit".
Fichiers : runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c,
src/os_unix.c, src/proto/option.pro, src/proto/term.pro
Rustine 5.6.062
Problème : La documentation dit qu'activer 'smartindent' n'a aucun effet
quand 'cindent' est activé, mais il existe une différence pour les
lignes commençant par "#". (Neil Bird)
Solution : Vraiment ignorer 'smartindent' quand 'cindent' est activé.
Fichiers : src/misc1.c, src/ops.c
Rustine 5.6.063
Problème : L'utilisation de "I" en mode Visuel par bloc ne supporte pas de
quantificateur. (Johannes Zellner)
Solution : Passer le quantificateur à do_insert() et edit(). (Allan Kelly)
Fichiers : src/normal.c, src/ops.c, src/proto/ops.pro
Rustine 5.6.064
Problème : Console MS-DOS et Win32 : la souris ne fonctionne plus
correctement après la rustine 5.6.28. (Vince Negri)
Solution : Ne pas tester la molette quand le code de la souris contient le
nombre de clics.
Fichiers : src/term.c
Rustine 5.6.065
Problème : Après un déplacement du curseur en mode Insertion, taper un espace
peut encore déclencher une abréviation. (Benji Fisher)
Solution : Ne pas déclencher d'abréviations après un déplacement en mode
Insertion.
Fichiers : src/edit.c
Rustine 5.6.066
Problème : Quelques débordements de caractères gras subsistent après la
rustine 5.6.060.
Solution : Effacer le caractère juste devant l'effacement du reste de la
ligne. (Robert Webb)
Fichiers : src/screen.c
Rustine 5.6.067
Problème : Quand un nom de fichier contient un NL, le fichier viminfo est
corrompu.
Solution : Utiliser viminfo_writestring() pour convertir le NL en CTRL-V n.
Corriger le menu Tampons et la liste des menus avec NL.
Fichiers : runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c
Rustine 5.6.068
Problème : La compilation de l'interface Perl est impossible avec Perl 5.6.0.
(Bernhard Rosenkraenzer)
Solution : Vérifier aussi le numéro de version de xs_apiversion lors des
#define des PL_*.
Fichiers : src/Makefile
Rustine 5.6.069
Problème : "go" ne va pas toujours au bon caractère quand 'fileformat' vaut
"dos". (Bruce DeVisser)
Solution : Corriger le calcul dans ml_find_line_or_offset().
Fichiers : src/memline.
Rustine 5.6.070 (basée sur 5.6.068)
Problème : La compilation de l'interface Perl est impossible avec Perl 5.6.0.
(Bernhard Rosenkraenzer)
Solution : Simplification de la vérification de la rustine 5.6.068.
Fichiers : src/Makefile
Rustine 5.6.071
Problème : "A" en mode Visuel par bloc sur une tabulation place le curseur un
caractère vers la droite. (Michael Haumann)
Solution : Corriger le calcul de la colonne dans op_insert().
Fichiers : src/ops.c
Rustine 5.6.072
Problème : Lors du lancement de Vim avec "vim +startinsert", il passe en mode
Insertion seulement après qu'une première commande ait été tapée.
(Andrew Pimlott)
Solution : Insérer une commande bidon dans le tampon générique.
Fichiers : src/main.c
Rustine 5.6.073 (extra) (basée sur 5.6.034)
Problème : IHM graphique Win32 : les menus ne fonctionnent pas quand Vim est
compilé avec Bcc 5.5.
Dans dosinst.c, toupper() et tolower() donne une erreur "internal
compiler error" avec Bcc 5.5.
Solution : Définir WINVER à 4 pour éviter de compiler pour MS-Windows 2000.
(Dan Sharp) Nettoyage des arguments de compilation.
Utilisation de notre propre implémentation de toupper() dans
dosinst.c. Utiliser mytoupper() au lieu de tolower().
Fichiers : src/Makefile.bor, src/dosinst.c
Rustine 5.6.074 (extra)
Problème : La saisie directe de CSI ne fonctionne pas toujours, car il est
reconnu comme le début d'un caractère spécial. Problème concernant
principalement l'IHM graphique en multi-octets.
Solution : Utiliser K_CSI pour un caractère CSI tapé. Utiliser <CSI> pour un
CSI normal, <xCSI> pour un CSI tapé dans l'IHM graphique.
Fichiers : runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c,
src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c,
src/keymap.h, src/misc2.c
Rustine 5.6.075
Problème : Lors de l'utilisation de "I" ou "A" en mode Visuel par bloc et que
'sts', fixé, peut changer des espaces en tabulations, le texte
inséré est incorrect. (Mike Steed) D'autres problèmes avec "A"
pour ajouter du texte à la fin de la ligne.
Solution : Vérifier les changement espaces/tabulation après l'insertion de
texte. Ajouter des espaces pour remplir l'espace entre la fin de
la ligne et le bord droit du bloc.
Fichiers : src/ops.c
Rustine 5.6.076
Problème : IHM graphique GTK : mapper <M-Space> ne fonctionne pas.
Solution : Ne pas utiliser deux fois le modificateur "Alt" dans
key_press_event().
Fichiers : src/gui_gtk_x11.c
Rustine 5.6.077
Problème : IHM graphique : lors de l'interruption d'un programme externe avec
CTRL-C, gvim peut planter. (Benjamin Korvemaker)
Solution : Éviter d'utiliser un pointeur NULL dans ui_inchar_undo().
Fichiers : src/ui.c
Rustine 5.6.078
Problème : La localisation linguistique ne fonctionne pas toujours sur
FreeBSD. (David O'Brien)
Solution : Lier avec la bibliothèque "xpg4" quand elle est disponible.
Fichiers : src/configure.in, src/configure
Rustine 5.6.079
Problème : Vim pouvait planter quand plusieurs interpréteurs Tcl étaient
créés ou détruits.
Solution : Mieux prendre en charge la commande "exit" et les commandes ":tcl"
imbriquées. (Ingo Wilken)
Fichiers : runtime/doc/if_tcl.txt, src/if_tcl.c
Rustine 5.6.080
Problème : Lors du saut vers un marqueur, générer le fichier de marqueurs
puis sauter vers le même marqueur à nouveau utilise le même ancien
motif de recherche. (Sung-Hyun Nam)
Solution : Vider le cache des correspondances de marqueurs lors de
l'exécution d'une commande externe.
Fichiers : src/misc2.c, src/proto/tag.pro, src/tag.c
Rustine 5.6.081
Problème : ":syn include" utilisait un niveau pour le fichier inclus, cela
perturbe les éléments contenus inclus dans le même niveau.
Solution : Utiliser un marqueur unique pour chaque fichier inclus.
sp_syn_inc_lvl changé en sp_syn_inc_tag. (Scott Bigham)
Fichiers : src/syntax.c, src/structs.h
Rustine 5.6.082
Problème : Vim peut planter lors de l'utilisation de cscope.
Solution : Initialiser tag_fname dans find_tags(). (Anton Blanchard)
Fichiers : src/tag.c
Rustine 5.6.083 (extra)
Problème : Win32 : le signal visuel n'est pas visible. (Eric Roesinger)
Solution : Vider la sortie avant d'attendre dans GdiFlush(). (Maurice S.
Barnum) Permettre de préciser le délai dans 't_vb' pour l'IHM
graphique.
Fichiers : src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c,
src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc,
src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro,
src/proto/gui_mac.pro, src/proto/gui_riscos.pro,
src/proto/gui_w32.pro, src/proto/gui_x11.pro,
src/proto/gui_beos.pro
Rustine 5.6.084 (basée sur 5.6.074)
Problème : IHM graphique : taper CSI ne fonctionne pas toujours pour Athena
et Motif.
Solution : Considérer les CSI tapés comme des <xCSI> (petit oubli de
5.6.074).
Fichiers : src/gui_x11.c
Rustine 5.6.085
Problème : Multi-octets : l'utilisation de "r" pour remplacer un caractère
double-octets par un caractère simple-octet déplaçait le curseur
d'un caractère. (Matsumoto) De même, l'utilisation d'un
quantificateur lors du remplacement d'un caractère simple-octet
par un caractère double-octets ne fonctionne pas.
Solution : Ne pas utiliser del_char() pour effacer le second octet.
Récupérer "ptr" à nouveau après l'appel à ins_char().
Fichiers : src/normal.c
Rustine 5.6.086 (extra)
Problème : Win32 : Lors de l'utilisation de libcall() et que la valeur
retournée est invalide, Vim plante.
Solution : Utiliser IsBadStringPtr() pour vérifier la validité du pointeur.
Fichiers : src/os_win32.c
Rustine 5.6.087
Problème : Multi-octets : les commandes et messages avec des caractères
multi-octets ne sont pas affichés correctement.
Solution : Détecter les caractères doubles-octets. (Yasuhiro Matsumoto)
Fichiers : src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
Rustine 5.6.088
Problème : Multi-octets avec Motif ou Athena : le message "XIM requires
fontset" est pénible quand Vim est compilé avec le support de XIM
mais qu'il n'est pas utilisé.
Solution : Supprimer ce message.
Fichiers : src/multbyte.c
Rustine 5.6.089
Problème : Sur les systèmes non-Unix, il est possible d'écraser un fichier en
lecture seule sans utiliser "!".
Solution : Vérifier si les permissions autorisent l'écrasement avant de
déplacer le fichier pour en faire une sauvegarde.
Fichiers : src/fileio.c
Rustine 5.6.090
Problème : Lors de l'édition d'un fichier dans "/home/rep/home/rep", ce
dernier était remplacé par "~~". (Andreas Jellinghaus)
Solution : Ne remplacer le répertoire HOME qu'une seule fois dans
home_replace().
Fichiers : src/misc1.c
Rustine 5.6.091
Problème : Lors de l'édition de nombreux fichiers "no file", impossible de
créer un fichier d'échange car tous les .sw[a-z] sont utilisés.
(Neil Bird)
Solution : Utiliser aussi ".sv[a-z]", ".su[a-z]", etc.
Fichiers : src/memline.c
Rustine 5.6.092
Problème : FreeBSD : quand $TERM est fixé à un nom de terminal non valide,
Vim bloque dans tputs().
Solution : Après que tgetent() retourne un code d'erreur, l'appeler encore
avec le nom de terminal "dumb". Cela semble créer un environnement
dans lequel tputs() n'échoue pas.
Fichiers : src/term.c
Rustine 5.6.093 (extra)
Problème : IHM graphique Win32 : "ls | gvim -" affiche une boîte de message à
propos de la lecture de stdin quand Vim sort. (Donohue)
Solution : Ne pas écrire de message à propos du fichier lu tant que l'IHM
graphique n'est pas démarrée.
Fichiers : src/fileio.c
Rustine 5.6.094
Problème : Problème avec les chaînes multi-octets pour ":echo var".
Solution : Vérifier la longueur dans msg_outtrans_len_attr(). (Sung-Hyun Nam)
Rendre do_echo() sensible aux caractères multi-octets.
Fichiers : src/eval.c, src/message.c
Rustine 5.6.095
Problème : Avec un fichier de marqueurs Emacs en incluant un autre, les
chemins relatifs ne fonctionnent pas toujours.
Solution : utiliser expand_tag_fname() sur le nom du fichier inclus. (Utz-Uwe
Haus)
Fichiers : src/tag.c
Rustine 5.6.096
Problème : Unix : lors de l'édition de nombreux fichiers, le démarrage peut
être lent. (Paul Ackersviller)
Solution : Réduire de moitié les appels à stat() pour ajouter un fichier à la
liste des tampons.
Fichiers : src/buffer.c
Rustine 5.7a.001
Problème : GTK ne répond pas au glisser/déposer du ROX-Filer.
Solution : Ajouter la cible "text/uri-list". (Thomas Leonard)
Corriger le problème du test d'arguments invalides.
Fichiers : src/gui_gtk_x11.c
Rustine 5.7a.002
Problème : Multi-octets : 'showmatch' est accompli quand le second octet d'un
caractère double-octets inséré est une parenthèse.
Solution : Vérifier IsTrailByte() avant l'appel à showmatch(). (Taro Muraoka)
Fichiers : src/misc1.c
Rustine 5.7a.003
Problème : Multi-octets : Après un CTRL-O en mode Insertion avec le curseur à
la fin de la ligne sur un caractère multi-octets, le curseur est
déplacé à gauche.
Solution : Tester les caractères multi-octets aux fins-de-lignes. (Taro
Muraoka)
Corriger cls() pour détecter les caractères doubles-octets.
(Chong-Dae Park)
Fichiers : src/edit.c, src/search.c
Rustine 5.7a.004
Problème : Lors du rapport du décalage d'un motif de recherche, la chaîne
pouvait être indéterminée, ce qui pouvait provoquer un plantage.
Solution : Clore la chaîne du décalage de la recherche. (Stephen P. Wall)
Fichiers : src/search.c
Rustine 5.7a.005
Problème : Quand ":s//~/" ne trouve aucune correspondance, il rapporte
"[NULL]" pour le motif.
Solution : Utiliser get_search_pat() pour obtenir le motif en cours
d'utilisation.
Fichiers : src/ex_cmds.c, src/proto/search.pro, src/search.c
Rustine 5.7a.006 (extra)
Problème : VMS : Divers problèmes, notamment avec le compilateur VAXC.
Solution : À plusieurs endroits, utiliser le code Unix pour VMS.
Ajout de l'heure, de la date et de la version du compilateur dans
le message de version. (Zoltan Arpadffy)
Fichiers : src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c
Rustine 5.7a.007
Problème : IHM graphique Motif et Athena : CTRL-@ est interprété comme
CTRL-C.
Solution : N'utiliser "intr_char" que quand il a été fixé.
Fichiers : src/gui_x11.c
Rustine 5.7a.008
Problème : IHM graphique GTK : lors de l'utilisation de CTRL-L, l'écran est
rafraîchi deux fois, ce qui pose problème pour les caractères
gras. Cela se produit aussi quand on manipule la barre de
défilement. Cela se passe mieux quand 'writedelay' est non nul.
Quand l'IHM graphique est lancée avec ":gui", l'écran est
redessiné une fois avec de mauvaises couleurs.
Solution : Ne fixer les coordonnées géométriques que quand la taille de la
fenêtre est modifiée. Cela évite de les fixer à chaque fois que la
barre de défilement est redessinée.
Ne pas redessiner dans expose_event() tant que gui.starting est
fixé.
Fichiers : src/gui_gtk_x11.c
==============================================================================
Version 5.8 *version-5.8*
La version 5.8 corrige les bogues de la version 5.7.
CHANGEMENTS *changed-5.8*
Ctags n'est plus intégré à Vim. Il est devenu un projet à part entière. Vous
pouvez le trouver sur http://ctags.sf.net. Il est hautement recommandé comme
compagnon de Vim quand vous écrivez des programmes.
AJOUTS *added-5.8*
Nouveaux fichiers de syntaxe :
acedb AceDB (Stewart Morris)
aflex Aflex (Mathieu Clabaut)
antlr Antlr (Mathieu Clabaut)
asm68k Assembleur 68000 (Steve Wall)
automake Automake (John Williams)
ayacc Ayacc (Mathieu Clabaut)
b B (Mathieu Clabaut)
bindzone Zone BIND (glory hump)
blank Blank (Rafal Sulejman)
cfg Fichiers de configuration (Igor Prischepoff)
changelog ChangeLog (Gediminas Paulauskas)
cl Clever (Phil Uren)
crontab Crontab (John Hoelzel)
csc Script Essbase (Raul Segura Acevedo)
cynlib Cynlib(C++) (Phil Derrick)
cynpp Cyn++ (Phil Derrick)
debchangelog Debian Changelog (Wichert Akkerman)
debcontrol Debian Control (Wichert Akkerman)
dns Fichier de zone DNS (Jehsom)
dtml Zope's DTML (Jean Jordaan)
dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham)
ecd Embedix Component Description (John Beppu)
fgl Informix 4GL (Rafal Sulejman)
foxpro FoxPro (Powing Tse)
gsp GNU Server Pages (Nathaniel Harward)
gtkrc GTK rc (David Necas)
hercules Hercules (Avant! Corporation) (Dana Edwards)
htmlos HTML/OS by Aestiva (Jason Rust)
inittab SysV process control (David Necas)
iss Inno Setup (Dominique Stephan)
jam Jam (Ralf Lemke)
jess Jess (Paul Baleme)
lprolog LambdaProlog (Markus Mottl)
ia64 Intel Itanium (parth malwankar)
kix Kixtart (Nigel Gibbs)
mgp MaGic Point (Gerfried Fuchs)
mason Mason (HTML with Perl) (Andrew Smith)
mma Mathematica (Wolfgang Waltenberger)
nqc Not Quite C (Stefan Scherer)
omnimark Omnimark (Paul Terray)
openroad OpenROAD (Luis Moreno Serrano)
named Configuration BIND (glory hump)
papp PApp (Marc Lehmann)
pfmain Configuration principale de Postfix (Peter Kelemen)
pic Assembleur PIC (Aleksandar Veselinovic)
ppwiz PPWizard (Stefan Schwarzer)
progress Progress (Phil Uren)
psf Product Specification File (Rex Barzee)
r R (Tom Payne)
registry Registres MS-Windows (Dominique Stephan)
robots Robots.txt (Dominique Stephan)
rtf Rich Text Format (Dominique Stephan)
setl SETL (Alex Poylisher)
sgmldecl SGML Declarations (Daniel A. Molina W.)
sinda Sinda input (Adrian Nagle)
sindacmp Sinda compare (Adrian Nagle)
sindaout Sinda output (Adrian Nagle)
smith SMITH (Rafal Sulejman)
snobol4 Snobol 4 (Rafal Sulejman)
strace Strace (David Necas)
tak TAK input (Adrian Nagle)
takcmp TAK compare (Adrian Nagle)
takout TAK output (Adrian Nagle)
tasm Turbo assembleur (FooLman)
texmf Configuration TeX (David Necas)
trasys Trasys input (Adrian Nagle)
tssgm TSS Geometry (Adrian Nagle)
tssop TSS Optics (Adrian Nagle)
tsscl TSS Command line (Adrian Nagle)
virata Virata Configuration Script (Manuel M.H. Stol)
vsejcl VSE JCL (David Ondrejko)
wdiff Wordwise diff (Gerfried Fuchs)
wsh Windows Scripting Host (Paul Moore)
xkb X Keyboard Extension (David Necas)
php3 renommé en php, il supporte aussi php4. (Lutz Eymers)
Rustine 5.7.015
Problème : Les fichiers de syntaxe de Vim 6.0 ne sont pas utilisables avec
Vim 5.x.
Solution : Ajouter l'argument "default" à la commande ":highlight" : ignorer
cette commande si la surbrillance a déjà été spécifiée.
Fichiers : src/syntax.c
Générer le menu Syntaxe avec makemenu.vim, de façon à ce qu'il n'y ait pas à
le faire quand Vim démarre. Cela réduit le temps de démarrage de l'IHM
graphique.
CORRECTIONS *fixed-5.8*
La conversion des manuels en HTML ne convertissait pas les "|marqueurs|" en
hyperliens.
Compilation sur NeXT corrigée. (Jeroen C.M. Goudswaard)
optwin.vim produisait une erreur en mode compatible Vi ('cpo' contenant 'C').
Interpréteur Tcl : la commande "buffer" ne vérifiait pas la présence d'un
argument. (Dave Bodenstab)
dosinst.c : ajout d'une vérification pour les noms de fichiers trop longs.
Amiga : un nom de fichier débutant par ":" était considéré comme absolu alors
qu'il ne l'est pas.
Amiga : ":pwd" ajoutait une oblique à la racine du lecteur.
Macintosh : avertissements pour des variables inutilisées. (Bernhard Pruemmer)
Unix : lors de l'interception d'un signal mortel, le traiter de façon à ce que
Vim ne se bloque pas. Appeler _exit() au lieu de exit() en cas de problème
sérieux.
Passer d'un titre de fenêtre vide à un titre non-vide ne fonctionnait plus
après la rustine 29.
La vérification du propriétaire des fichiers .exrc et .vimrc était réalisée
avec stat(). Utiliser lstat() également comme sécurité supplémentaire.
IHM graphique Win32 : l'impression d'un fichier dont 'fileformat' valait
"unix" ne fonctionnait pas. Fixer 'fileformat' à "dos" avant d'écrire le
fichier temporaire.
Unix : possibilité d'amorcer l'attente d'un caractère lors du test pour
vérifier si un CTRL-C a été tapé quand un événement X est reçu.
Impossible d'utiliser Python et Perl en même temps sur FreeBSD, car Perl
utilisait "-lc", et Python, la librairie C threadée.
Win32 : le compilateur Mingw donnait quelques messages d'avertissement.
Lors de l'utilisation de "ZZ" alors qu'une autocommande d'écriture utilisait
une abréviation, cela ne fonctionnait pas. Ne pas stuff XXX la commande ":x"
mais l'exécuter directement. (Mikael Berthe)
VMS ne dispose pas toujours de lstat(), ajout de #ifdef autour.
Ajout de quelques corrections pour Macintosh. (Axel Kielhorn)
Win32 : Gvimext ne pouvait pas éditer plus de quelques fichiers à la fois, la
longueur de l'argument était fixe.
Rustines précédemment publiées pour Vim 5.7 :
Rustine 5.7.001
Problème : Quand le tampon courant est chiffré et qu'un autre ne l'est pas,
":wall" chiffrera cet autre tampon.
Solution : Utiliser "buf" au lieu "curbuf" dans buf_write() pour vérifier la
clef de chiffrement.
Fichiers : src/fileio.c
Rustine 5.7.002
Problème : Avec 'showmode' activé, faire "CTRL-O :r file" attend trois
secondes avant d'afficher le texte lu. (Wichert Akkerman)
Solution : Fixer "keep_msg" pour le message de fichier afin que l'écran soit
rafraîchi avant l'attente de trois secondes pour le message de
mode.
Fichiers : src/fileio.c
Rustine 5.7.003
Problème : Rechercher "[[:cntrl:]]" ne fonctionne pas.
Solution : Exclure NUL des caractères correspondants, il met fin à la liste.
Fichiers : src/regexp.c
Rustine 5.7.004
Problème : GTK : Vim plante lors de la sélection d'une nouvelle police.
Solution : Dans gui_mch_init_font(), déréférencer l'ancienne police, pas la
nouvelle.
Fichiers : src/gui_gtk_x11.c
Rustine 5.7.005
Problème : Multi-octets : l'insertion d'une ligne enroulée corrompt l'écran
de kterm.
Coller du TEXT/COMPOUND_TEXT dans Vim ne fonctionne pas.
Avec Motif, aucune ligne de statut XIM n'est affichée même quand
elle est disponible.
Solution : Ne pas utiliser les astuces xterm pour enrouler les lignes en mode
multi-octets.
Corriger un "break" manquant, ajout de la requête de sélection
TEXT/COMPOUND_TEXT.
Ajouter du code de repli pour XIMStatusArea.
(Katsuhito Nagano)
Fichiers : src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c
Rustine 5.7.006
Problème : IHM graphique : le rafraîchissement de la sélection non-Visuel est
faux quand la fenêtre est démasquée. (Jean-Pierre Etienne)
Solution : Rafraîchir la sélection correctement et ne pas l'effacer. Ajout de
l'argument "len" dans clip_may_redraw_selection().
Fichiers : src/gui.c, src/ui.c, src/proto/ui.pro
Rustine 5.7.007
Problème : Python : plantage quand le tampon courant est utilisé deux fois.
Solution : Augmenter le compteur de références pour les objets tampons et
fenêtres. (Johannes Zellner)
Fichiers : src/if_python.c
Rustine 5.7.008
Problème : En mode Ex, un retour arrière sur la première tabulation ne
fonctionne pas correctement. (Wichert Akkerman)
Solution : Activer le curseur avant d'afficher le saut-de-ligne.
Fichiers : src/ex_getln.c
Rustine 5.7.009 (extra)
Problème : Mac : plantage lors de l'utilisation d'un fichier long.
Solution : Ne pas redéfinir malloc() et free(), car cela perturbe
l'utilisation de realloc().
Fichiers : src/os_mac.h
Rustine 5.7.010
Problème : Utiliser CTRL-A sur un nombre très long fait planter Vim. (Michael
Naumann)
Solution : Tronquer la longueur du nouveau nombre pour éviter un débordement
de tampon.
Fichiers : src/ops.c
Rustine 5.7.011 (extra)
Problème : IHM graphique Win32 sur NT5 et Win98 : l'affichage de l'hébreu est
inversé.
Solution : Afficher les caractères séparément, pour éviter que Windows
inverse le texte avec certaines polices. (Ron Aaron)
Fichiers : src/gui_w32.c
Rustine 5.7.012
Problème : Une commande utilisateur échouait quand ":command" était spécifié
avec "-complete=buffer".
Solution : Dans une commande utilisateur, ne pas remplacer le nom du tampon
par un compteur pour le numéro de tampon.
Fichiers : src/ex_docmd.c
Rustine 5.7.013
Problème : "gD" ne trouvait pas toujours une correspondance sur la première
ligne, selon la colonne sur laquelle la recherche a débuté.
Solution : Réinitialiser la colonne à zéro avant de démarrer la recherche.
Fichiers : src/normal.c
Rustine 5.7.014
Problème : Le codage rot13 était effectué sur les caractères accentués, ce
qui est mauvais. (Sven Gottwald)
Solution : Ne coder que les caractères ASCII en rot13.
Fichiers : src/ops.c
Rustine 5.7.016
Problème : Lors d'un 'n' après une commande ":s///c", le drapeau
d'insensibilité à la casse n'était pas restauré, des
correspondances étaient sautées. (Daniel Blaustein)
Solution : Restaurer la variable reg_ic quand 'n' est tapé.
Fichiers : src/ex_cmds.c
Rustine 5.7.017
Problème : Lors de l'utilisation d'un script pour Vim 6.0 avec <SID> devant
un nom de fonction, un message d'erreur est émis même quand elle
se trouve dans un "if version >= 600". (Charles Campbell)
Solution : Ignorer les erreurs dans dans les noms de fonctions quand la
fonction ne va pas être définie.
Fichiers : src/eval.c
Rustine 5.7.018
Problème : Lors de l'exécution de "rvim" ou "vim -Z", il était encore
possible d'exécuter une commande shell avec system() et
l'expansion des contres-apostrophes. (Antonios A. Kavarnos)
Solution : Désactiver l'exécution de commandes shell dans get_cmd_output() et
mch_expand_wildcards().
Fichiers : src/misc1.c, src/os_unix.c
Rustine 5.7.019
Problème : Multi-octets : dans une chaîne de substitution, un caractère
multi-octets n'est pas sauté correctement, ce qui peut poser
problème quand le second octet est une contre-oblique.
Solution : Sauter l'octet supplémentaire d'un caractère double-octets.
(Muraoka Taro)
Fichiers : src/ex_cmds.c
Rustine 5.7.020
Problème : La compilation ne fonctionne pas sous MacOS X.
Solution : Ajouter quelques #ifdefs. (Jamie Curmi)
Fichiers : src/regexp.c, src/ctags/general.h
Rustine 5.7.021
Problème : Vim émet parfois un bip lors du démarrage dans un xterm.
Uniquement quand le support de la souris n'est pas compilé.
Solution : Demander la version de xterm retournait un K_IGNORE, qui n'était
pas pris en charge quand le support de la souris est désactivé.
Toujours accepter K_IGNORE.
Fichiers : src/normal.c
Rustine 5.7.022
Problème : %v dans 'statusline' n'est pas affiché quand il est égal à %c.
Solution : Vérifier si %V ou %v est utilisé et les prendre en charge
différemment.
Fichiers : src/screen.c
Rustine 5.7.023
Problème : Plantage quand une autocommande WinLeave efface le tampon d'une
autre fenêtre.
Solution : Vérifier qu'il reste une fenêtre à fermer après l'exécution des
autocommandes WinLeave. Mettre à jour le test supposé vérifier ce
problème.
Fichiers : src/window.c, testdir/test13.in, testdir/test13.ok
Rustine 5.7.024
Problème : L'évaluation d'une expression pour 'statusline' peut avoir des
effets secondaires.
Solution : Évaluer l'expression dans un bac à sable.
Fichiers : src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
src/screen.c, src/undo.c
Rustine 5.7.025 (corrigé)
Problème : La création d'un fichier temporaire pose des problème d'accès
concurrents.
Solution : Créer un répertoire privé pour y écrire les fichiers temporaires.
Fichiers : src/fileio.c, src/misc1.c, src/proto/misc1.pro,
src/proto/fileio.pro, src/memline.c, src/os_unix.h
Rustine 5.7.026 (extra)
Problème : La création d'un fichier temporaire pose des problème d'accès
concurrents.
Solution : Créer un répertoire privé pour y écrire les fichiers temporaires.
Partie supplémentaire de la rustine 5.7.025.
Fichiers : src/os_msdos.h
Rustine 5.7.027
Problème : Débuter l'édition d'un fichier peut provoquer un plantage. Par
exemple en mode Insertion, utiliser CTRL-O :help abbr<Tab> pour
faire défiler l'écran puis <CR>, pour ouvrir un fichier de l'aide.
(Robert Bogomip)
Solution : Vérifier si keep_msg est NULL avant de le copier.
Fichiers : src/fileio.c
Rustine 5.7.028
Problème : La création d'un fichier de sauvegarde ou d'échange pouvait
échouer dans de rares cas.
Solution : utiliser O_EXCL dans open().
Fichiers : src/fileio.c, src/memfile.c
Rustine 5.7.029
Problème : Éditer un fichier avec un nom extrêmement long plantait Vim.
Solution : Tester la longueur du nom lors de la modification du titre de la
fenêtre.
Fichiers : src/buffer.c
Rustine 5.7.030
Problème : Une commande ":make" ou ":grep" avec un argument très long pouvait
provoquer un plantage.
Solution : Allouer un tampon pour la commande shell.
Fichiers : src/ex_docmd.c
vim:tw=78:ts=8:ft=help:norl: