2012-03-26 23 views
26

Si, por ejemplo, escribo "Entero". y luego presione CTRL + SPACE, y ahora elija "valueOf" de la lista, Eclipse siempre agrega "()" después del nombre de la función. Eso es realmente molesto para mí porque muchas veces tengo un enunciado ya existente y quiero ajustar una función al respecto.¿Cómo evitar que Eclipse agregue paréntesis automáticamente?

Ejemplo: quiero cambiar

String x = "hello world"; 

a

String x = StringManipulator.uppercase("hello world"); 

Si escribo

String x = StringManipulator."hello world"; 

y pulsa CTRL + ESPACIO en el carácter de punto, se inserta

String x = StringManipulator.uppercase()"hello world"; 

¿Hay alguna manera de solucionar este problema? No necesito el cierre automático de la relación de parentesco, pero simplemente detener Eclipse de autoinsertarlos me ayudaría mucho.

+3

¿Cómo puede esta pregunta tener posiblemente menos de 100 votos positivos? – mafu

Respuesta

9

Ir a Preferencias en eclipse -> en el cuadro de búsqueda escriba: "principal" -> desactive las opciones que no le gustan. Eso es lo que busca en ese desastre (preferencias de eclipse).

+1

Gracias! Con la búsqueda de padre lo encontré en Editor-> Tipeo. Editar: No ayudó :-(Desmarqué "Cerrar automáticamente ..." (Paréntesis) ... "pero todavía los crea. –

+0

Intente reiniciar Eclipse y asegúrese de haberlo desmarcado en la sección derecha (Java, C/C++ etc). Debería funcionar a menos que algunos de sus complementos se lo estén metiendo. – AoeAoe

4

Cerrar automáticamente paréntesis es para cuando abre un paréntesis en este caso está autocompletando un método, en este caso cuando el método que está llamando tiene argumentos, creará automáticamente los paréntesis y los bloques donde se ubicarán los argumentos, allí hay manera de simplemente autocompletar el método sin los paréntesis, pero se puede crear una plantilla de autocompletar:

  1. Ir a Preferencias: Java => Editor => plantilla
  2. Nueva
  3. Escribe cualquier nombre relevante
  4. En contexto, elija las sentencias Java
  5. Escriba dentro de patrón: StringManipulator.uppercase ($ {line_selection} $ {cursor});
  6. Aceptar y en Aceptar nuevamente
  7. Ahora, cuando se desea agregar la función sólo tiene que seleccionar el texto para rodear, presione alt + shift + z, y elegir la plantilla que creó anteriormente

creo que sirve

+3

¡Gracias! Es tranquilizador que esto existe pero es demasiado complicado de hacer para todos los métodos API de Java :-) –

+0

Creo que esta es la respuesta correcta. parece que no hay forma de decirle a Eclipse que no cree '();' al autocompletar un método. A menos que, como @pescamillam, mencione que lo hace por cada método. Esto es un fastidio. – KevinO

8

Encuentro que esta configuración sin relación hace una gran diferencia, así que lo mencionaré.

La función de autocompletado en eclipse funciona de forma algo diferente si elige "Completar superposición" en lugar de "Completar inserciones" en las preferencias de "Ayuda de contenido".

wrappingMoriginalMethod()

con el cursor después de "GM" por encima de la aceptación de la propuesta de finalización da:

wrappingMethod()

wrappingM (originalMethod()

con el cursor después de "GM" sobre la aceptación de la propuesta de finalización da:

wrappingMethod (originalMethod()

Fíjate que tuve que agregar el paréntesis abierto para evitar la sobrescritura, pero no pares adicionales.

wrappingM originalMethod()

con el cursor después de "GM" por encima de la aceptación de la propuesta de finalización da:

wrappingMethod (parameterGuess) originalMethod()

esto me parece la opción más cómoda hasta el momento. Creo que sería bueno si hubiera una función de inserción de paréntesis "inteligente" que NO inserte los paréntesis si se completa justo antes de una tarjeta de memoria existente y dado que DESEO de todos modos ... sería aún más sorprendente si pudiera verificar esos parens existentes para ver si tienen los argumentos que busco o no y hacer algo inteligente O verificar el método después de mi punto de inserción para ver si debería ser un argumento para mi finalización y simplemente seguir adelante y HACER eso y poner una colisión después de esto y ANTES del punto y coma si ya había uno allí.

Que otra vez, si el IDE escribe TODO mi código, entonces me aburriré bastante rápido.

+0

¡Bueno! Y acordó - Es extraño que con la comprensión que tiene Eclipse de mi código fuente, no funcione que ya haya un "()" presente: / – cs94njw

Cuestiones relacionadas