2012-11-12 10 views
5

Sto tentando di utilizzare le funzioni org-entry-properties e org-id-get, entrambi utilizzano un argomento facoltativo pom. Ad esempio, la documentazione org-entry-properties indica:POM (point-or-marker) in org-mode

Ottiene tutte le proprietà della voce in POM punto o indicatore.

Emacs manual quasi non menziona la parola "marker", tuttavia ci sono diverse funzioni che terminano con -marker. Ora ho diverse domande a riguardo.

  1. Che cos'è quel point-or-marker?
  2. È uguale al contrassegno in un anello di spunta?
  3. Come ottengo un indicatore in un buffer in modalità org?
  4. Come si utilizza questo indicatore nell'invocazione delle funzioni sopra?

risposta

9

Una posizione (assoluta) in un buffer è data da un numero, che è grosso modo il numero di caratteri che si trovano prima di quella posizione. I marker, d'altra parte, consentono di contrassegnare una "posizione relativa" nel buffer: se si aggiunge del testo prima, si sposta in avanti (come se fosse un carattere invisibile, di larghezza 0,).

In qualsiasi momento, è possibile convertire un marcatore in una posizione (assoluta) (un numero intero). Questo è il motivo per cui molti argomenti vogliono un POM: vogliono una posizione, ma accettano che sia dato come un indicatore.

Il "contrassegno" in emacs, è un indicatore specifico che è facilmente accessibile da appositi accordi di tasti (C-SPC lo imposta, C-x C-x scambia il segno e il punto, ecc.). /"ring" è la cronologia di tutti i precedenti marcatori "mark" (in un dato buffer, che è l'anello del marker locale, o globalmente, per il cosiddetto ring del marker globale).

Maggiori informazioni nel manuale elisp:

2

Al posto del Manuale Emacs, un'occhiata al Emacs Lisp Reference Manual per ulteriori informazioni sui marcatori:

Un marker è un oggetto Lisp utilizzato per specificare una posizione in un buffer rispetto al testo circostante . Un marcatore cambia il suo offset dall'inizio del buffer automaticamente ogni volta che il testo viene inserito o eliminato, in modo che rimanga con i due caratteri su entrambi i lati di esso.

L'elemento POM delle funzioni che si menziona può quindi essere un marker, ovvero un oggetto lisp che contiene sia un buffer e una posizione in quel buffer, sia semplicemente una posizione. Nel primo caso, le funzioni passeranno prima al buffer del marker e spostano point nella posizione del marker prima di eseguire il resto della funzione.

Nel secondo caso, rimane nel buffer corrente, ma sposta point nella posizione specificata prima di eseguire il resto della funzione.

Ovvero, la funzione viene eseguita rispetto al buffer/posizione specificato. Alla fine del corpo della funzione, viene ripristinata la posizione originale di point.

Problemi correlati