2009-02-05 7 views
8

Sto cercando di impostare il numero di linea corrente su una variabile in Elisp, ma continuo a ricevere un errore di variabile vuota!Impostazione del numero di riga su una variabile in Emacs

Il codice è:

(setq x cosa-line)

Vorrei anche per impostare il numero totale di righe nel buffer a una variabile pure, ma ottenere lo stesso errore? !

+3

Si tratta solo di un errore di sintassi. Racchiude 'what-line' tra parentesi, in quanto è una funzione non una variabile. –

+0

'(what-line)' restituisce 'Linea 96' non' 96' ... che lo rende ottimo per la visualizzazione di un minibuffer. –

risposta

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

come scoprire su questo genere di cose? Prova M-xfind-functionRETwhat-lineRET per vedere il codice sorgente di what-line. Leggere simple.el (il file in cui è definito what-line) è un buon modo per familiarizzare con la programmazione Elisp elementare.

+2

A seconda della versione di Emacs, questa funzione potrebbe non essere disponibile. Puoi approssimarlo in gran parte con questo snippet di codice: '(1+ (count-lines 1 (point)))' – tyree731

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

Questo buono per la visualizzazione, ma non per un numero puro .. Emette 'Linea 54' .. che è grande per quello che a volte voglio, quindi +1. Grazie. –

2

La funzione numero-posizione-pos citato in una risposta precedente considera solo la parte accessibile del buffer. Se il buffer è "ristretto", non conteggia le linee nascoste, quindi può essere piuttosto confuso.

Se si legge il codice per la funzione what-line, è possibile vedere come si gestisce con i buffer ristretti (infatti, quale linea funziona chiamando numero di riga-at-pos).