Kohei Nozaki's blog 

Installing and Configuring jEdit 5.2pre1 on OS X


Posted on Friday Jan 30, 2015 at 10:59PM in Technology


Recently I installed jEdit 5.2pre1 to OS X 10.9 and got stucked in some problems so leave some notes. I’m using Japanese environment and front end processor so some situation may vary for each environment such as about option keys.

Force jEdit.app to use Java7

UPDATE: now jEdit 5.2.0 is released and it runs fine with Java8, so this workaround is no longer needed.

UPDATE2: I have some problems on jEdit 5.2.0 on Java8 such as keyboard tester or tab moving (dragging) so I recommend OS X users to use jEdit with Java7 at the moment.

First, jEdit 5.2pre1 requires Java7, and currently it doesn’t work with Java8 on OS X. the problem seems fixed in trunk though. so we need to run jEdit with Java7, but the mechanism named appbundle which used in jEdit.app, enables standalone Java application to run as OS X application, it uses Java8 unexpectedly on my environment. the cause seems to that it uses JRE installed under /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home as default. you better to check the version of JRE as follows:

kyle-no-MacBook:~ kyle$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
kyle-no-MacBook:~ kyle$

So, I need to force jEdit.app to use Java7. my solution is following:

  1. Create a directory named Plugins inside jEdit.app/Contents

    $ pwd
    /Applications/jEdit.app/Contents
    $ mkdir Plugins
  2. Create a symbolic link to JRE as follows:

    $ cd Plugins/
    $ ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk jdk7
    $ tree
    .
    └── jdk7 -> /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk
    
    1 directory, 0 files
  3. Put following definition to Info.plist:

    <key>JVMRuntime</key>
    <string>jdk7</string>

Also replacing the stub at /Applications/jEdit.app/Contents/MacOS/jEdit with alternative one would be an another solution.

Prevent blurry rendering in Retina Macs

  1. Put following definition to Info.plist:

    <key>NSHighResolutionCapable</key>
    <true/>
  2. Run following command:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/jEdit.app

Make CMD+ENTER work as show Action Bar

There are 2 solutions:

  • Use Metal theme instead of OS X theme

  • Delete CMD+ENTER from primary shortcut of Action Bar, then set it to alternative shortcut instead

The issue is filed but left open. anyway it mentioned more about the workaround so check it: jEdit / Bugs / #3863 Mac OS X L&F: problems with Action Bar

UPDATE

I’ve confirmed that CMD+ENTER is working as Show Action Bar on my environment (OS X theme, jEdit 5.3.0, Oracle JRE8u71 and OS X 10.11.3), BufferTabs tab replacing with mouse dragging as well.

Make Option key work

In OS X, option key is reserved for special symbols but I’ve never used option keys for such purpose, just want to use other purpose like binding a function as keyboard shortcut. so following procedure is needed:

  1. Put https://github.com/kenfox/intellij-emacs/blob/master/Coding.keylayout into $HOME/Library/Keyboard Layouts

  2. Register Coding keyboard layout which just downloaded at OS X’s System Preferences - Keyboard. this discussion may helps.

  3. Put a BeanShell script contains a line Debug.ALT_KEY_PRESSED_DISABLED = false; to $HOME/Library/jEdit/startup/startup.bsh

  4. Select Coding keymap in the icon which is placed upper right on OS X’s menu bar

  5. Test if option key works as expected in Utilities - Troubleshooting - Keyboard tester.

Some key mnemonic such as ones available in Search and Replace dialog will work with the combination of Option + Control + [mnemonic]. it not works with Option + [mnemonic]. for example you can toggle Regular expressions with Option + Control + x.

Notes about Mac OS X Support plugin

I disabled all of 4 functions of Mac OS X Support v1.3, but it’s still necessary because it handles quit event triggered by Cmd+Q. when I unloaded it then Cmd+Q stop asking whether I’m sure to quit with unsaved files.

Shell script for launching from CLI

Put this into your PATH as jedit.

#!/bin/sh
open -a /Applications/jEdit.app $@

If the one above doesn’t work, Try following instead:

#!/bin/sh
app_bundle=/Applications/jEdit.app
settings_dir=${HOME}/Library/jEdit
port_file=${settings_dir}/server

# Make sure that jEdit is running
if [ ! -f ${port_file} ]; then
    open -a jEdit
    while [ ! -f ${port_file} ]
    do
        sleep 1
    done
fi

# Pass the list of files to the running instance
$JAVA_HOME/bin/java \
    -jar ${app_bundle}/Contents/Java/jedit.jar \
    -nosplash \
    -reuseview \
    -settings="${settings_dir}" \
    "$@"

# Bring to front
open -a jEdit