2012-05-30 34 views
5

¿Hay alguna manera automática de recuperar el tamaño de pestañas del editor de Matlab y la ventana de comandos? Sí, puede abrir la ventana de preferencias y buscarla usted mismo, pero la quiero automatizada. En realidad, creo que esto podría generalizarse para recuperar cualquier de esas preferencias de usuario en la siguiente captura de pantalla.Obtener tamaño de pestañas a través de la línea de comandos

enter image description here

Respuesta

7

he encontrado la solución con bastante rapidez y después de cavar en el pensamiento que lo mejor es compartir este enlace:

http://undocumentedmatlab.com/blog/changing-system-preferences-programmatically/

Así que lo que haces es:

  1. abierto subir el archivo de preferencias y buscar la preferencia que desea leer:

    edit(fullfile(prefdir,'matlab.prf')); 
    

    En mi caso fueron las líneas CommandWindowSpacesPerTab=I4 y EditorSpacesPerTab=I4 las que parecían prometedoras. Creo que el I representa el tipo (entero).

  2. probarlo cargando el valor:

    com.mathworks.services.Prefs.get<type>Pref(<pref-name>) 
    

    En mi caso:

    >> com.mathworks.services.Prefs.getIntegerPref('EditorSpacesPerTab') 
    ans = 
    
        4 
    

También hay una pequeña superposición con esta pregunta: Saving settings in matlab

EDITAR: Aparentemente, al usar este f unction, no lee el valor predeterminado de la preferencia. es decir: cuando aún no ha cambiado el valor de la preferencia, el valor no se guarda en el archivo de preferencias y, por lo tanto, no se puede cargar de esta manera. Las funciones sólo devuelve 0. Por ahora, estoy detectar este caso de forma manual:

if loadedpref==0 
    set default 
end 

Edit2: también uso de MATLAB en la línea de comandos de Linux, que tiene su propia configuración de la ficha (por lo general por defecto en 8). Para detectar esta situación, utilicé lo siguiente:

function retval = isCommandWindowOpen() 
    jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance; 
    retval = ~isempty(jDesktop.getClient('Command Window')); 
end 
Cuestiones relacionadas