Estoy tratando de verificar si server-running-p
está disponible en mi archivo .emacs antes de llamarlo. Ya tengo el siguiente:¿Cómo comprobar si una función (por ejemplo, server-running-p) está disponible en Emacs?
(if (not (server-running-p))
(server-start))
Pero en algunos equipos donde uso de Emacs, llamando (server-running-p)
da un error porque la citada llamada no está disponible. Así que quiero verificar si server-running-p
está disponible antes de llamarlo. Pensé que boundp
haría la prueba, pero llamar a (boundp 'server-running-p)
devuelve nil
aunque la llamada (server-running-p)
se realiza correctamente. ¿Cuál es la forma correcta de verificar que la llamada al server-running-p
no fallará ... o al menos para suprimir el error si dicha llamada falla? (¿Y qué tipo de objeto extraño es que de todos modos server-running-p
boundp
vuelve nil
, pero llamar tiene éxito?)
Esto está en Emacs 23.2.1, si hace alguna diferencia.
Realmente encontró la respuesta. Tiene que usar fboundp
para esto en lugar de boundp
, por alguna razón.
La razón es que puede tener una función y una variable con el mismo nombre (por ejemplo, 'font-lock-mode'). Por lo tanto, necesita diferentes funciones para preguntar "¿Es esto una variable?" y "¿Es esto una función?" – cjm
Gracias. Me había olvidado por completo de la particularidad de algunos lenguajes Lisp. Tiene más sentido ahora. –