variable the read print permanent make environmental entorno end configurar below java emacs elisp dot-emacs cc-mode

java - the - read environment variable



Java Coding Style y Emacs configuraciĆ³n de modo cc (1)

Yo diría que Emacs hace lo correcto. Considere este caso:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName)) || otherCondition) { doSomethingAboutIt(); }

Si la condición anidada estuviera sangrada 8 caracteres, sería una variante confusa:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName)) || otherCondition) { doSomethingAboutIt(); }

Estoy usando GNU / Emacs HEAD con el modo cc incluido (c-versión 5.32.2) en una máquina Debian de GNU / Linux.

Estoy tratando de definir un estilo personalizado para administrar las Convenciones de código para el lenguaje de programación Java , las Pautas de estilo de código de Android para contribuyentes y algunas reglas personalizadas.

Como principiante, no parece prudente comenzar desde cero. Como consecuencia, utilicé google-c-style como punto de partida y logré obtener el comportamiento deseado para las reglas más sangrantes, con una excepción en condición anidada (consulte el fragmento de código a continuación).

Desde esa publicación , he definido (arglist-cont-nonempty . ++) en mi estilo personalizado (código completo: custom-java-style.el ). Desafortunadamente, aunque la mayoría de los casos se sangran según lo previsto

if ((condition1 && condition2) || (condition3 && condition4) ||!(condition5 && condition6)) { doSomethingAboutIt(); someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5); }

Las condiciones anidadas están mal escritas:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName))) { doSomethingAboutIt(); }

Ctrl-c Ctrl + s informe Syntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452)) en la segunda línea y obviamente tengo una sangría de 16 espacios (2 veces ++ ) en lugar de 8 ( ++ ).

Me gustaría obtener la siguiente sangría:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName))) { doSomethingAboutIt(); }

Intenté definir una condición (,(when (fboundp …))) como la que se usa para la statement-cont pero sin éxito (mi falta de conocimiento claro tampoco ayuda).

Ahora, la pregunta: ¿Es mi enfoque correcto o incorrecto? ¿Cómo podría / debería implementar el comportamiento deseado (es decir, detectar cuándo estoy en una condición anidada para obtener la sangría correcta)?

(No quiero usar el modo malabar o JDEE, así que no me digas que los use).

Aclamaciones,

Renaud

Actualización 2011/12/06 (en respuesta a los comentarios)

No comenzaríamos una guerra santa aquí. Los que quieran usar Emacs, por sus propias razones, pueden quedarse con Emacs, los demás harán lo que quieran ...

Dicho esto, trabajo en un equipo en el que soy el único que usa Emacs, a los demás les gusta Eclipse. Como estoy a cargo de las reglas de codificación, he trabajado con mis colegas para obtener las acciones de guardado correctas y ayudar a configurar el formateador de Eclipse. Todo lo que puedo decir es que: las acciones de guardado de Eclipse y el formateador no son fáciles de configurar ... La principal diferencia es que tiene una interfaz gráfica de usuario agradable con casillas de verificación agradables, pero no ayuda mucho a reducir la complejidad.

Me quedo con Emacs ...