Open zeleznypa opened 2 years ago
the templates should be https://freemarker.apache.org/ templates.
I haven't tried it but it should already work, no?
e.g: https://freemarker.apache.org/docs/ref_builtins_string.html#ref_builtin_c_lower_case
@mbien It will be nice but I don't know how to use them :(
I have tried the following codes:
${PARAMETER newVarName default="Parameter"}
${PARAMETER editable=false?uncap_first}
${PARAMETER newVarName default="Parameter"}
${${PARAMETER editable=false}?uncap_first}
And then use them in the code, but it will lead in exception:
java.lang.NullPointerException: Cannot invoke "String.hashCode()" because "<local4>" is null
at org.netbeans.modules.php.editor.codegen.SemiAttribute.visit(SemiAttribute.java:534)
at org.netbeans.modules.php.editor.parser.astnodes.StaticConstantAccess.accept(StaticConstantAccess.java:90)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.visit(SemiAttribute.java:397)
at org.netbeans.modules.php.editor.parser.astnodes.FunctionInvocation.accept(FunctionInvocation.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:492)
at org.netbeans.modules.php.editor.parser.astnodes.MethodInvocation.accept(MethodInvocation.java:57)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:491)
at org.netbeans.modules.php.editor.parser.astnodes.MethodInvocation.accept(MethodInvocation.java:57)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:341)
at org.netbeans.modules.php.editor.parser.astnodes.ExpressionStatement.accept(ExpressionStatement.java:51)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:212)
at org.netbeans.modules.php.editor.parser.astnodes.Block.accept(Block.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:423)
at org.netbeans.modules.php.editor.parser.astnodes.IfStatement.accept(IfStatement.java:85)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:424)
at org.netbeans.modules.php.editor.parser.astnodes.IfStatement.accept(IfStatement.java:85)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:212)
at org.netbeans.modules.php.editor.parser.astnodes.Block.accept(Block.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:372)
at org.netbeans.modules.php.editor.parser.astnodes.ForEachStatement.accept(ForEachStatement.java:96)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:212)
at org.netbeans.modules.php.editor.parser.astnodes.Block.accept(Block.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:397)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.visit(SemiAttribute.java:205)
at org.netbeans.modules.php.editor.parser.astnodes.FunctionDeclaration.accept(FunctionDeclaration.java:144)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:486)
at org.netbeans.modules.php.editor.parser.astnodes.MethodDeclaration.accept(MethodDeclaration.java:73)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:212)
at org.netbeans.modules.php.editor.parser.astnodes.Block.accept(Block.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:253)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.visit(SemiAttribute.java:453)
at org.netbeans.modules.php.editor.parser.astnodes.ClassDeclaration.accept(ClassDeclaration.java:140)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:212)
at org.netbeans.modules.php.editor.parser.astnodes.Block.accept(Block.java:70)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:687)
at org.netbeans.modules.php.editor.parser.astnodes.NamespaceDeclaration.accept(NamespaceDeclaration.java:88)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:150)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.visit(DefaultVisitor.java:518)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.visit(SemiAttribute.java:140)
at org.netbeans.modules.php.editor.parser.astnodes.Program.accept(Program.java:67)
at org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor.scan(DefaultVisitor.java:143)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.scan(SemiAttribute.java:128)
at org.netbeans.modules.php.editor.codegen.SemiAttribute.semiAttribute(SemiAttribute.java:826)
at org.netbeans.modules.php.editor.codegen.ASTNodeUtilities.getVariablesInScope(ASTNodeUtilities.java:49)
at org.netbeans.modules.php.editor.codegen.PHPCodeTemplateProcessor.newVarName(PHPCodeTemplateProcessor.java:254)
at org.netbeans.modules.php.editor.codegen.PHPCodeTemplateProcessor.getProposedValue(PHPCodeTemplateProcessor.java:163)
at org.netbeans.modules.php.editor.codegen.PHPCodeTemplateProcessor.updateDefaultValues(PHPCodeTemplateProcessor.java:85)
at org.netbeans.lib.editor.codetemplates.CodeTemplateInsertHandler.processTemplate(CodeTemplateInsertHandler.java:226)
at org.netbeans.lib.editor.codetemplates.CodeTemplateManagerOperation.insert(CodeTemplateManagerOperation.java:273)
at org.netbeans.lib.editor.codetemplates.api.CodeTemplate.insert(CodeTemplate.java:82)
at org.netbeans.lib.editor.codetemplates.AbbrevDetection.expand(AbbrevDetection.java:517)
at org.netbeans.lib.editor.codetemplates.AbbrevDetection.expand(AbbrevDetection.java:411)
at org.netbeans.lib.editor.codetemplates.AbbrevDetection.checkExpansionKeystroke(AbbrevDetection.java:315)
at org.netbeans.lib.editor.codetemplates.AbbrevDetection.keyPressed(AbbrevDetection.java:267)
at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:258)
at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:257)
at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:257)
at java.desktop/java.awt.Component.processKeyEvent(Component.java:6579)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2905)
at java.desktop/java.awt.Component.processEvent(Component.java:6398)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1942)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Description
Netbeans contains great tool „code templates“ that allows me to simplify my work.
For many years I missed last functionality for the perfection, which is some additional string function.
Use case/motivation
For example, I have at this time the following code template:
That allows me to quickly generate the code of generic getter & setter and simply replace the name
${PARAMETER}
with the real one. After that I have to replace the name${PROPERTY}
which should be the same like${PARAMETER}
but with the first letter lowercase.Will it be possible please to add functionalities like:
Related issues
No response
Are you willing to submit a pull request?
I want to, but I'm not a Java developer
Code of Conduct
Yes