J'utilise line-number-mode
pour avoir un indicateur de la ligne actuelle dans ma modélisation, cependant pour les fichiers volumineux ou plutôt les fichiers avec de longues lignes, il commence à afficher deux points d'interrogation au lieu d'un numéro de ligne. J'ai creusé un peu et découvert que tandis que line-number-mode
est défini dans simple.el
, les variables personnalisables (et probablement toute la logique impliquée) sont définies dans xdisp.c
. Changer la line-number-display-width
variable en un nombre arbitrairement élevé pourrait résoudre ce problème, mais je suis beaucoup plus intéressé par le morceau de code et la logique qui le fait imprimer les deux points d'interrogation. Ce serait très utile si l'un d'entre vous pouvait le trouver pour moi, peut-être même expliquer la logique derrière cela.
la source
M-: (format-mode-line "%l")
- t -il également des points d'interrogation?format-mode-line
.Réponses:
Grâce aux suggestions de @ lunaryorn, j'ai pu localiser le morceau de code à l'origine de cela. Il ressemble
format-mode-line
éventuellement à des appelsdecode_mode_spec
pour transformer les codes de format donnés en valeurs. Pour le cas de%l
cette fonction, fait quelques vérifications d'intégrité pour éviter de passer trop de temps à calculer, puis vérifie si la ligne actuelle dépasseline-number-display-limit-width
. Comme c'est le cas pour mon fichier en question, il saute sur uneno_value
étiquette qui renvoie une??
valeur rembourrée ."Résoudre" cela implique de régler la variable sur une valeur suffisamment élevée:
Cette valeur a été dérivée en regardant l'heuristique correspondante dans
xdisp.c
laquelle prend la hauteur de la fenêtre fois deux plus trente et la multiplie avecline-number-display-limit-width
, pour éviter de débordermost-positive-fixnum
sur un système 32 bits, une valeur de 2000000 serait une valeur sûre.la source
M-x set-variable <RET> line-number-display-limit-width <RET> 2000000 <RET>