Debug.ALT_KEY_PRESSED_DISABLED = false;
jEdit conditional line deleting with regex
TweetPosted on Sunday Jan 31, 2016 at 06:03PM in Technology
How to delete lines that contains a keyword?
Open Search And Replace
dialog and turn Regular expressions
on then put ^.*KEYWORD.*$\n
to Search for
box, leave Replace with
blank then hit Replace All
.
How to delete lines that NOT contains a keyword?
With ^((?!KEYWORD).)*$\n
do the same to the above. for detail check http://stackoverflow.com/questions/406230/regular-expression-to-match-line-that-doesnt-contain-a-word
My jEdit setup on OS X
TweetPosted on Sunday Jan 31, 2016 at 04:00PM in Technology
Make Option key work
Put a file contains following line to $HOME/Library/jEdit/startup
so shortcuts that used Option
work.
Check http://www.nailedtothex.org/roller/kyle/entry/installing-and-configuring-jedit-5 for further information about setup jEdit on OS X.
Basic configurations
Just for my preferences:
-
Go to View section
-
check Show full path of buffer in title bar
-
-
Go to Editing section
-
set Word wrap to soft
-
set Wrap margin to
100
-
check Soft (emulated with spaces) tabs
-
-
Go to Toolbar
-
uncheck Show tool bar
-
-
Go to Text Area
-
check Caret: thick
-
Customize shortcut
First, choose keymap Mac OS X
. Then customize maps that unusable by default because OS X takes precedence.
-
Incremental Search:
CMD+,
launches application’s preferences window. so I bind it toOption+,
instead.
Note: Draw multi-key shortcuts on screen menu bar option makes some shortcut such as move to dockables unusable, I don’t know why.
Basic operations
-
According to http://comments.gmane.org/gmane.editors.jedit.user/6251 ,
C+c C+j
: (Scroll to Current Line) can be used as "Back To Text Area" equivalent.
Macros
From Macros ⇒ New Macro
, you can create a BeanShell macros. For example, the macro below puts current date to the position of caret:
textArea.setSelectedText(java.time.LocalDate.now().toString());
Recommended plugins
Project Viewer
This plugin enables managing set of files in a unit named project. imagine the same name thing that implemented in some IDEs for Java development such as Eclipse or NetBeans.
There are some plugin that requires it. For example, FastOpen is a companion plugin for Project Viewer that enables open files fast with keyboard. I’ve set Delay before searching option to the smallest value (0.5sec).
The documentation of this plugin can be obtained from http://plugins.jedit.org/plugindoc/ProjectViewer/
Console
This plugin integrates console as a jEdit dockable.
Its advantages are commands that for invoking jEdit’s functionalities. for example, %edit foo.txt
opens a file as a jEdit buffer. another useful one is redirecting output to a new jEdit buffer. for example, typing echo hello, jEdit
in the console and hitting Ctrl+ENTER
yields a new jEdit buffer with contents of hello, jEdit
. also there are many useful variable syntax. e.g. ${f}
for the current buffer’s path name. BeanShell console is available as well.
Also SshConsole Plugin extends its functionality to support remote hosts can be connected with SSH.
I recommend that check all three options in Console ⇒ System Shell ⇒ Events to chdir at Plugin Options.
The documentation of this plugin can be obtained from http://plugins.jedit.org/plugindoc/Console/
WhiteSpace
As its name states it make whitespaces, tabs or control characters visible. I recommend you to set to show leading and trailing tabs / spaces by this plugin.
TextTools
It provides some useful text operations, such as Toggle Range Comment. I recommend you to replace shortcuts for built-in ones by this plugin.
jDiff Plugin
It shows difference between two files pretty nicely as IntelliJ.
Others
Some worth considering plugins are:
-
FTP
-
SQL
-
XML
-
MarkerSets
BeanShell recipies
TweetPosted on Sunday Jan 24, 2016 at 04:00PM in Technology
BeanShell is a handy lightweight scripting language for Java. In this entry, I’ll introduce you some useful snippets powered by BeanShell, and some recipies about it.
Setup and hello world
Grab a copy of bsh-2.0b4.jar
from http://www.beanshell.org and put following shell script named bsh
into your PATH:
#!/bin/sh BEANSHELL_JAR=$HOME/Downloads/bsh-2.0b4.jar # replace path to suit your environment java -cp $BEANSHELL_JAR bsh.Interpreter $@
Then fire up bsh
from your console then just put print("hello, world!");
to confirm it works.
$ bsh BeanShell 2.0b4 - by Pat Niemeyer (pat@pat.net) bsh % print("hello, world!"); hello, world!
Hit Ctrl+D
to exit interpreter.
You can launch your BeanShell script in a file as follows:
$ echo 'print("hello, world!");' > hello.bsh $ bsh hello.bsh hello, world!
Stdin
Text filtering script can be written as follows:
Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String line = scanner.nextLine(); System.out.println(line.toUpperCase()); }
Save this script as toUpperCase.bsh
. The script can be executed as follows:
$ echo foo | bsh toUpperCase.bsh FOO
Command line arguments
Command line arguments can be used as follows:
sb = new StringBuilder(); for (arg : bsh.args) { sb.append(arg); } print(sb);
Save this script as args.bsh
. The script can be executed as follows:
$ bsh args.bsh foo bar foobar
Use of external jar
Any external jar can be added via addClassPath clause dynamically. For example, a SQL beautifier script powered by a Hibernate class can be written as follows:
addClassPath("/path/to/hibernate-core-4.3.7.Final.jar"); // replace path to suit your environment import org.hibernate.engine.jdbc.internal.BasicFormatterImpl; scanner = new Scanner(System.in); sb = new StringBuilder(); while (scanner.hasNextLine()) { sb.append(scanner.nextLine()).append('\n'); } beautifized = new BasicFormatterImpl().format(sb.toString()); print(beautifized);
Save this script as sql-beautifier.bsh
then execute following command:
$ SQL="SELECT t0.content AS a2, t0.contenttype AS a3, t0.email AS a4 FROM roller_comment t0, weblogentry t1 WHERE ((t1.websiteid = 'f0588427-f2ca-4843-ac87-bbb31aa6013c') AND (t1.id = t0.entryid)) ORDER BY t0.posttime DESC LIMIT 31 OFFSET 0;" $ echo $SQL | bsh sql-beautifier.bsh
This yields nicely formatted SQL:
SELECT t0.content AS a2, t0.contenttype AS a3, t0.email AS a4 FROM roller_comment t0, weblogentry t1 WHERE ( ( t1.websiteid = 'f0588427-f2ca-4843-ac87-bbb31aa6013c' ) AND ( t1.id = t0.entryid ) ) ORDER BY t0.posttime DESC LIMIT 31 OFFSET 0;
Maven plugin
If you have Maven installed, you can execute any BeanShell script without obtaining bsh-2.0b4.jar
by hand. Maven and the beanshell-maven-plugin takes care of it instead of you:
$ mvn com.github.genthaler:beanshell-maven-plugin:1.0:run -Dbsh.file="hello.bsh" ... [INFO] --- beanshell-maven-plugin:1.0:run (default-cli) @ standalone-pom --- [INFO] Executing Script [INFO] file class java.lang.String [INFO] script class java.lang.Object [INFO] interpreting file hello.bsh hello, world!
Note that you don’t need to create pom.xml
to execute a simple BeanShell script.
For managing complex dependencies, you can leave that duty to Maven with pom.xml
:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sql-beautifier</groupId> <artifactId>sql-beautifier</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>com.github.genthaler</groupId> <artifactId>beanshell-maven-plugin</artifactId> <version>1.0</version> <configuration> <script><![CDATA[ import java.nio.charset.Charset; import org.apache.commons.io.FileUtils; import org.hibernate.engine.jdbc.internal.BasicFormatterImpl; file = new File(System.getProperty("sql")); sql = FileUtils.readFileToString(file, Charset.defaultCharset()); result = new BasicFormatterImpl().format(sql); print(result); ]]></script> </configuration> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.7.Final</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
Save the SQL you want to beautify as original.sql
and executing following command yields similar result:
$ mvn bsh:run -Dsql=original.sql
jEdit integration
jEdit has pretty nice integration with BeanShell. You can integrate that SQL beautifier as a jEdit macro. Put following snippet as ~/Library/jEdit/macros/FormatSQL.bsh
(for OS X) or create it with Macros → New Macro
from jEdit menu bar:
addClassPath("/path/to/hibernate-core-4.3.7.Final.jar"); // replace path to suit your environment import org.hibernate.engine.jdbc.internal.BasicFormatterImpl; sql = textArea.getSelectedText(); beautifized = new BasicFormatterImpl().format(sql); textArea.setSelectedText(beautifized);
Paste SQL to any jEdit buffer, and select SQL statement and execute the macro with Macros → FormatSQL
to trigger formatting.