JQL expression editor and tester

This document describes the JQL expression editor and tester. It is available from the Link issues to current issue post-function only.

On this page:

JQL expression editor

JQL expression features

The JQL expression editor has the ability to:

  • Check for syntax errors in the Nunjucks code

  • Colorize keywords, comments, variables and so on

The editor also provides advanced features, such as find and replace, that are available through keyboard shortcuts.

JQL expression editor keyboard shortcuts

You can use the following shortcut keys as an alternative to the mouse when working in this editor, while the cursor is active in the editor: 


Opens the search box. Use /re/ syntax for regexp search

findNextPost a search, finds the next occurrence of the searchCtrl-GCmd-G
findPrevPost a search, finds the previous occurrence of the searchShift-Ctrl-GShift-Cmd-G

Opens the Replace window.

replaceAllOpens the Replace all windowShift-Ctrl-RShift-Cmd-Alt-F
selectAllSelect the whole content of the editorCtrl-ACmd-A
singleSelectionWhen multiple selections are present, this deselects all but the primary selectionEscEsc
killLineDeletes the part of the line after the cursor. If that consists only of whitespace, the newline at the end of the line is also deleted.
deleteLineDeletes the whole line under the cursor, including newline at the end.Ctrl-DCmd-D
delWrappedLineLeftDelete the part of the line from the left side of the visual line the cursor is on to the cursor.
delWrappedLineRightDelete the part of the line from the cursor to the right side of the visual line the cursor is on.
undoUndo the last changeCtrl-ZCmd-Z
redoRedo the last undone changeCtrl-YShift-Cmd-Z or Cmd-Y
undoSelectionUndo the last change to the selection, or if there are no selection only changes at the top of the history, undo the last change.Ctrl-UCmd-U
redoSelectionRedo the last change to the selection, or the last text change if no selection changes remain.Alt-UShift-Cmd-U
goDocStartMove the cursor to the start of the document.Ctrl-HomeCmd-Up or Cmd-Home
goDocEndMove the cursor to the end of the document.Ctrl-EndCmd-End or Cmd-Down
goLineStartMove the cursor to the start of the line.Alt-LeftCtrl-A
goLineStartSmartMove to the start of the text on the line, or if we are already there, to the actual start of the line (including whitespace).HomeHome
goLineEndMove the cursor to the end of the line.Alt-RightCtrl-E
goLineRightMove the cursor to the right side of the visual line it is on.
goLineLeftMove the cursor to the left side of the visual line it is on. If this line is wrapped, that may not be the start of the line.
goLineUpMove the cursor up one line.UpCtrl-P
goLineDownMove down one line.DownCtrl-N
goPageUpMove the cursor up one screen and scroll up by the same distance.PageUpShift-Ctrl-V
goPageDownMove the cursor down one screen and scroll down by the same distance.PageDownCtrl-V
goCharLeftMove the cursor one character left, going to the previous line when hitting the start of the line.LeftCtrl-B
goCharRightMove the cursor one character right, going to the next line when hitting the end of the line.RightCtrl-F
goWordLeftMove the cursor to the start of the previous word.
goWordRightMove the cursor to the end of the next word.
goGroupLeftMove to the left of the group before the cursor. Ctrl-LeftAlt-Left
goGroupRightMove to the right of the group after the cursor.Ctrl-RightAlt-Right
delCharBeforeDelete the character before the cursor.Shift-BackspaceCtrl-H
delCharAfterDelete the character after the cursor.DeleteCtrl-D
delWordBeforeDelete up to the start of the word before the cursor.
delWordAfterDelete up to the end of the word after the cursor.
delGroupBeforeDelete to the left of the group before the cursor.Ctrl-BackspaceAlt-Backspace
delGroupAfterDelete to the start of the group after the cursor.Ctrl-DeleteCtrl-Alt-Backspace or Alt-Delete
indentAutoAuto-indent the current line or selection.Shift-TabShift-Tab
indentMoreIndent the current line or selection by one indent unit.Ctrl-]Cmd-]
indentLessDedent the current line or selection by one indent unit.Ctrl-[Cmd-[
defaultTabIf something is selected, indent it by one indent unit. If nothing is selected, insert a tab character.TabTab
transposeCharsSwap the characters before and after the cursor.
newlineAndIndentInsert a newline and auto-indent the new line.EnterEnter
toggleOverwriteFlip the overwrite flag.InsertInsert

A group is a stretch of word characters, a stretch of punctuation characters, a newline, or a stretch of more than one whitespace character.

Lookup user

By 29 April 2019, Atlassian will remove personal data from the API that is used to identify users, such as username and userKey, and instead, use the Atlassian account ID (accountId). These are the impacts on JMWE:

  • If the JQL in your existing "Link issue to current issue" post-functions are using the username or the userkey they need to be replaced with the accountId.
  • If you are adding/modifying the JQL in the Link issues to current issue post-function you should not anymore specify the username or userkey but only the accountId. For example, JQL return the issues assigned to a specific user

However, the accountId is not obvious in Jira. You can use this Lookup user feature in the Nunjucks editor to find the accountId of a user. To know the accountId of a user:

  1. Click on the Lookup user button
  2. Select the user from Search for user
  3. Click on Insert accountId

JQL expression tester

The JQL expression tester lets you test your expression against any issue. You can quickly test and debug your expression and make changes without having to actually trigger the transition and/or look at the JMWE logs to see the result.

Using the JQL expression tester

After writing your JQL expression in the editor, click on Test JQL expression. A window opens, asking you to input an issue to run the JQL expression against. The issue variable used in your annotations will point to this issue.

The transition variable will not reflect transition information during testing.

Testing your JQL expression

After selecting an issue against which the JQL expression should be tested, click on Test. The following information will be displayed. This information can be used for debugging.

  1. Message: Success/error message based on the test result.

  2. Parsed JQL query: The parsed JQL query
  3. Issues: The result of the JQL query which is an array of issues.


Test a JQL expression that fetches issues in a project that are assigned to the current user.

  • Add the Link issues to current issue post-function to a transition.
  • In the JQL editor, write the following lines of code:

    project = TEST and assignee = {{currentUser.accountId}}
  • Select maximum number of issues in Max. Issues.
  • Click on Test JQL expression
  • Type the Issue key of an issue.
  • Click on Test.
  • The following result is displayed:

Debugging your JQL expression

If you encounter an error during testing or your JQL expression doesn't seem to fetch expected results, you will need to debug your expression. The information displayed in the result panel aids in debugging the expression.

In the above example if you provided "==" instead of "=":

project = TEST and reporter == {{currentUser.accountId}}
  • Test the JQL expression, as explained above. The following result will be displayed.

  • Identify the problem, from the Message that displayed an error that, there is an error in the JQL query
  • Correct the problem, by modifying the expression

    project = TEST and reporter = {{currentUser.accountId}}
  • Retest the expression, by clicking on Test again and verify the result in the template test panel.