In the April update, Datalore gained some code editing features from PyCharm: inspections and quick-fixes. Today we are coming back to you with more updates in code insight and some other new useful features.

## Intentions

Intention is a special action that can be executed on code. The concept is similar to quick-fix, with the difference that while quick-fix is applied to erroneous code, intention is a way to modify valid code to make it express what you mean even better.

## Magics

The Datalore kernel is now fully compatible with the IPython kernel, which means that all the features of the IPython kernel work the same way when you use the incremental Datalore kernel. This includes IPython magic commands.

## Command mode

Some of you are probably familiar with the concept of Command Mode from editors like Vim and Jupyter Notebook. We find this feature very helpful since it allows users to quickly navigate between cells, and select multiple cells to cut/delete/paste.

Now we have implemented Command Mode in Datalore, so why not give it a try?

The basic keystrokes are:

• Esc - enable Command Mode (editor loses focus and caret disappears)
• Enter - disable Command Mode and return to Edit Mode (brings the caret back to the editor)
• Up / k - select previous block
• Down / j - select next block
• Shift + j / Shift + Down - extend selected blocks downwards
• Shift + k / Shift + up - extend selected blocks upwards
• copy/cut/paste selected blocks (hotkeys: c, x, v correspondingly)
• Delete or Backspace - delete block

If you did something wrong - don’t forget that Undo (Ctrl + z) works from Command Mode as well.

If you forget the shortcuts - you can always find them in the Help -> Shortcuts menu.

The Datalore kernel preserves the consistency of workbook cells by incremental updates - after you’ve made an edit, only the code cells that depend on this edit will be recalculated. However, in some cases you may want to tell the Datalore kernel that the variables in a particular cell shouldn’t be changed during execution - in other words, they are read-only variables. To do this you can use the readonly annotation to signify that these variables are not to be changed during cell execution. Subsequent cells that use these variables will not be recalculated, and so computation time is reduced and your experiments iterate more quickly:

By using readonly you can skip unnecessary recalculations.

Please note that readonly won’t “freeze” the value of the variable - it should be used only when you’re sure that the variable will remain unchanged during the cell execution.

## Distraction free mode

Distraction free mode (View -> Distraction free mode) hides the menu, status bar, and the editor tabs allowing you to focus on the editor content.

In distraction free mode you can still access the menu and editor tabs by hovering over where they would normally be.