2009-02-05 7 views
8

J'essaie de définir le numéro de ligne en cours dans une variable dans Elisp mais continue d'obtenir une erreur de variable vide!Définition du numéro de ligne à une variable dans Emacs

Le code est:

(setq x what-line)

Je voudrais également définir le nombre total de lignes dans la mémoire tampon à une variable aussi bien, mais je reçois la même erreur? !

+3

C'est juste une erreur de syntaxe. Envelopper 'what-line' entre parenthèses, car c'est une fonction pas une variable. –

+0

'(what-line)' renvoie 'Line 96' pas' 96' ... ce qui le rend idéal pour un affichage de mini-tampon. –

Répondre

13
(setq x (line-number-at-pos) 
     y (line-number-at-pos (point-max))) 

Comment savoir au sujet de ce genre de chose? Essayez M-xfind-functionRETwhat-lineRET pour voir le code source de what-line. La lecture simple.el (le fichier dans lequel what-line est défini) est un bon moyen de se familiariser avec la programmation Elisp élémentaire.

+2

Selon votre version d'Emacs, cette fonction peut ne pas être disponible. Vous pouvez l'approximer en grande partie avec cet extrait de code: '(1+ (count-lines 1 (point))) – tyree731

3
(setq x (what-line)) 
+0

Ce bon pour l'affichage, mais pas pour un nombre pur .. Il sort 'Line 54' .. ce qui est super pour ce que je veux parfois, donc +1. Merci. –

2

La fonction de numéro de ligne à la position mentionnée dans une réponse précédente ne considère que la partie accessible de la mémoire tampon. Si le tampon est "réduit", il ne comptera pas les lignes cachées, cela peut donc être plutôt déroutant.

Si vous lisez le code pour la fonction de ligne, vous pouvez voir comment il traite des tampons rétrécis (en effet, la ligne fonctionne en appelant line-number-at-pos).

Questions connexes