2013-08-30 12 views
6

In Emacs, alcune variabili hanno comportamenti speciali se impostate tramite M-x personalizza che non vengono attivate quando si imposta la stessa variabile tramite setq. Esiste un modo programmatico per impostare tali variabili in modo tale che il comportamento speciale venga attivato come se l'utente avesse impostato la variabile attraverso la personalizzazione?Come imposto in modo programmatico una variabile personalizzata in Emacs Lisp?

Inoltre, esiste una funzione per salvare a livello di codice il valore nel file personalizzato dell'utente? Sto cercando di implementare una funzionalità per aggiungere nuovamente gli elementi predefiniti a un elenco, senza rimuovere anche gli elementi aggiunti dell'utente.

+1

Vuoi essere alla ricerca di 'custom-set-variables'? Questo è esattamente ciò che si ha normalmente nel file '.emacs'. – nickie

risposta

6

customize-set-variable è ciò che si desidera, non custom-set-variables (non è necessario che qui).

E in generale è una buona idea anche dare un'occhiata allo defcustom per la variabile (opzione utente), per vedere quale è lo slot :set ecc. Non necessario, ma buono a sapersi prima di provare a impostare il valore programmaticamente.

Questa risposta ad una domanda [email protected] potrebbe anche aiutare: http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html

+0

Sì, è quello che volevo, proprio perché utilizza la proprietà ': set' per impostare la variabile. –

+2

Nota per i posteri: se si desidera impostare una variabile personalizzata al livello di programmazione e salvare anche il nuovo valore per le sessioni future, 'custom-save-variable' è la funzione desiderata; la sua firma è identica a quella di 'custom-set-variable', e l'unica differenza nel suo comportamento sta anche nel scrivere il nuovo valore come un modulo' custom-set-variables' nel file di personalizzazione dell'utente. –

0

Utilizzare la funzione default-value seguita da menzionata custom-set-variable potrebbe farlo.

Problemi correlati