DataSpell 2024.1 Help

Write and edit source code

When you work with code, DataSpell ensures that your work is stress-free. It offers various shortcuts and features to help you add, select, copy, move, edit, fold, find occurrences, and save code.

Use DataSpell editor, the main part of the IDE, to create, read and modify code.

A Jupyter notebook opened in the editor has its specific UI elements:

  • Jupyter notebook toolbar: provides quick access to the most popular actions. The rest of the notebook-specific actions are available in the Cell menu.

  • Code cell: a notebook cell that contains an executable code

  • Cell output: results of the code cell execution; can be presented by a text output, table, or plot.

For navigation inside the editor, refer to Editor basics.

Find action

  • If you do not remember a shortcut for the action you want to use, press Ctrl+Shift+A to find any action by name.

Transpose characters

  1. In the editor, place the caret at the characters you want to swap.

  2. Go to Edit | Transpose.

    There is no default shortcut for this action. You can assign a custom shortcut.

Lines of code

DataSpell offers several useful shortcuts for manipulating code lines.

  • To add a line after the current one, press Ctrl+Shift+Enter. DataSpell moves the caret to the next line.

  • To add a line before the current one, press Ctrl+Alt+Enter. DataSpell moves the caret to the previous line.

  • To duplicate a line, press Ctrl+D.

  • To sort lines alphabetically in the whole file or in a code selection, go to Edit | Sort Lines or Edit | Reverse Lines. These actions might be helpful when you work with property files, data sets, text files, log files, and so on. If you need to assign shortcuts to those actions, refer to Configure keyboard shortcuts for more information.

  • To delete a line, place the caret at the line you need and press Ctrl+Y.

  • To join lines, place the caret at the line to which you want to join the other lines and press Ctrl+Shift+J. Keep pressing the keys until all the needed elements are joined.

    You can also join string literals, a field or variable declaration, and a statement. Note that DataSpell checks the code style settings and eliminates unwanted spaces and redundant characters.

  • To split string literals into two parts, press Enter.

    DataSpell splits the string and provides the correct syntax. You can also use the Break string on '\n' intention to split string literals. Press Alt+Enter or click the Intention action button to select this intention.

  • To comment a line of code, place the caret at the appropriate line and press Ctrl+/. Press Ctrl+/ again on the same line to uncomment it.

  • To move a line up or down, press Alt+Shift+Up or Alt+Shift+Down respectively. When moving lines in Jupyter notebooks, the selected line is transferred to code cells ignoring any Markdown cells in between.

  • To move (swap) a code element to the left or to the right, place the caret at it, or select it and press Ctrl+Alt+Shift+Left for left or Ctrl+Alt+Shift+Right for right.

Copy and paste code

You can use the standard shortcuts to copy Ctrl+C and paste Ctrl+V any selected code fragment. If nothing is selected, DataSpell automatically copies as is the whole line where the caret is located.

By default, when you paste anything in the editor, DataSpell performs "smart" paste, for example, pasting multiple lines in comments will automatically add the appropriate markers to the lines you are pasting. If you need to paste just plain text, press Ctrl+Alt+Shift+V.

  • When you copy (Ctrl+C) or cut (Ctrl+X) a line without any code selected, the paste action will add the contents of the clipboard to above the current line, not at your caret.

    If you want to paste your copied code at the caret, select the Paste at the caret position option in the advanced settings.

  • Place the caret at a line or a symbol, right-click to open the context menu, select Copy/Paste Special | Copy Reference. When you select the Copy Reference (Ctrl+Alt+Shift+C) option, DataSpell creates a reference string that includes the line number of the selected line or symbol. You can press Ctrl+V to paste the copied reference anywhere.

  • DataSpell keeps track of everything you copy to the clipboard. To paste from history, in the editor, from the context menu, select Copy/Paste Special | Paste from History (Ctrl+Shift+V). In the dialog that opens, select your entry and click Paste.

  • When you copy and paste code to the editor, DataSpell displays the hidden (special) characters represented by their Unicode name abbreviation.

Code selection

Select code constructs

  • In the editor, place the caret at the item you want to select and press Ctrl+W/Ctrl+Shift+W to extend or shrink your selection.

    For example, in a plain text file, the selection starts within the whole word then extends to the sentence, paragraph, and so on.

  • If you need just to highlight your braces, place the caret immediately after the block closing brace/bracket or before the block opening brace/bracket.

Select code according to capitalization

  1. In the Settings dialog (Ctrl+Alt+S) , go to Editor | General | Smart Keys.

  2. Select the Use "CamelHumps" words checkbox.

If you want to use double-click when selecting according to capitalization, make sure that the Honor "CamelHumps" words settings when selecting on double click checkbox right below is selected.

CamelHumps woeds settings

Select occurrences

You can quickly locate all occurrences of the selected element in a file, make a multiple selection, or select the next or the previous occurrences.

  • To make a multiple selection of occurrences in a file, select the needed element in your code, then press Alt+J. Press the same key to find the next occurrence.

    Alternatively, keeping Shift+Alt pressed, double-click or drag over the text you want to add to the selection.

  • To move the caret to the next or the previous occurrence, press F3/Shift+F3.

    When you press F3, DataSpell automatically removes the selection of the current occurrence and selects the next one.

  • To select all occurrences in the file, press Ctrl+Alt+Shift+J.

Code fragments

  • Move and copy code fragments by dragging them in the editor.

    • To move a code fragment, select it and drag the selection to the target location.

    • To copy a code selection, keeping Ctrl pressed, drag it to the target location.

    The drag functionality is enabled by default. To disable it, in the Settings dialog (Ctrl+Alt+S) , go to Editor | General and clear the Move code fragments with drag-and-drop checkbox in the Mouse Control section.

  • To toggle between the upper and lower case for the selected code fragment, press Ctrl+Shift+U.

    Note that when you apply the toggle case action to the CamelCase name format, DataSpell converts the name to the lower case.

  • To comment or uncomment a code fragment, select it and press Ctrl+Shift+/.

    To configure settings for commenting behavior, use options in the Comment Code section, on the Code Generation tab located in the language-specific pages under File | Settings | Editor | Code Style.

Code completion

Context-aware code completion allows you to speed up your coding process.

Basic code completion helps you complete the names of classes, methods, and keywords within the visibility scope. When you invoke code completion, DataSpell analyzes the context and suggests the choices that are reachable from the current caret position.

To invoke basic completion, start typing a name. If automatic completion is disabled, press Ctrl+Space or select Code | Code Completion | Basic from the main menu.

The images below show basic code completion for the following cases:

Function completion
Class variable completion
Path completion
Package completion
DataFrame column name completion

Whenever you open a curly brace in an ordinary string literal, DataSpell provides the same completion suggestions as for an f-string. When you select one of the suggested options, the IDE automatically converts the literal into an f-string by adding a missing f prefix and a closing curly brace.

F-string completion

DataSpell allows you to prioritize completion suggestions based on choices that other users made in similar situations.

The ML completion mechanism doesn't add any new elements but orders the elements retrieved from code. Data is not exposed anywhere; it is collected locally.

Enable ML completion

  1. Press Ctrl+Alt+S to open settings and select Editor | General | Code Completion.

  2. Under Machine Learning Completion Ranking, enable the Sort completion suggestions based on machine learning option, and select the languages for which you want to use ML completion.

Enable relevance markers

  1. Press Ctrl+Alt+S to open settings and select Editor | General | Code Completion.

  2. Enable the following options:

    • Mark position changes in the completion popup: use the Machine Learning ranking Up and Machine Learning ranking Down icons to indicate whether the relevance of a suggestion is increasing or decreasing and therefore the suggestion has moved up or down the suggestion list.

    • Mark the most relevant item in the completion popup: use the ML relevant proposal icon to indicate the most suitable suggestion on the list.

    The suggestion list will look as follows with the icons marking reordered and the most relevant items.

    ML completion is enabled

Multiple carets

You can edit multiple lines simultaneously. For example, you can add comment markers to multiple lines, or remove some characters in several occurrences of a word.

  • To add or remove multiple carets, press and hold Shift+Alt and click at the next location of the caret.

    Alternatively, to add multiple carets, you can press Ctrl twice, and then without releasing it, press the Up or Down arrow keys. You can also make a multiple selection by pressing Shift+Alt and dragging the caret.

  • To delete all added carets, press Escape.

  • You can make a multiple selection of code in columns. To enable or disable the column selection mode, press Alt+Shift+Insert or use the context menu of the editor.

    This mode is helpful when you want to edit several lines of code simultaneously. Place the caret at a symbol you need and either drag it up or down, or select a block of code and press the specified shortcut to achieve the same result.

    You can change the behavior of the caret move when you press Alt+↑/↓. The default behavior is to move the caret to the end of the current word. To change this setting, open settings Ctrl+Alt+S and navigate to Editor | General. In the Caret Movement section, select an appropriate behavior from the list.

    Multiple caret

Parameter hints

Parameter hints show the names of parameters in methods and functions to make your code easier to read. By default, parameter hints are enabled and shown only for values that are literals or function expressions but not for named objects.

Configure parameter hints

  1. Open the Settings dialog (Ctrl+Alt+S) and go to Editor | Inlay Hints.

  2. Expand <required language> under Parameter names.

  3. Specify the context in which you want parameter hints shown by selecting the corresponding checkboxes.

    The preview shows how the changes you make in the settings affect the code appearance.

  4. For some methods and functions, DataSpell does not show parameter hints in any context. Click Exclude list... to view these methods and functions, possibly enable parameter hints for them, or add new items to the list.

Code folding

Folded code fragments are shown as shaded ellipses (Folded fragment). If a folded code fragment contains errors, DataSpell highlights the fragment in red.

To configure the default code folding behavior, in the Settings dialog (Ctrl+Alt+S) , go to Editor | General | Code Folding.

Expand or collapse code elements

  • To fold or unfold a code fragment, press Ctrl+NumPad -/Ctrl+NumPad +. DataSpell folds or unfolds the current code fragment, for example, a single method.

  • To collapse or expand all code fragments, press Ctrl+Shift+NumPad -/Ctrl+Shift+NumPad +.

    DataSpell collapses or expands all fragments within the selection, or, if nothing is selected, all fragments in the current file, for example, all methods in a file.

  • To collapse or expand code recursively, press Ctrl+Alt+NumPad -/Ctrl+Alt+NumPad +. DataSpell collapses or expands the current fragment and all its subordinate regions within that fragment.

  • To fold blocks of code, press Ctrl+Shift+.. This action collapses the code fragment between the matched pair of curly braces {}, creates a custom folding region for that fragment, and makes it "foldable".

  • To collapse or expand doc comments in the current file, in the main menu select Code | Folding | Expand doc comments/Collapse doc comments.

  • To collapse or expand a custom code fragment, select it and press Ctrl+..

    You can fold or unfold any manually selected regions in code.

Fold or unfold nested fragments

  • To expand the current fragment and all the nested fragments, press Ctrl+NumPad *, 1. You can expand the current fragment up to the specified nesting level (from 1 to 5).

  • To expand all the collapsed fragments in the file, press Ctrl+Shift+NumPad *, 1. You can expand the collapsed fragments up to the specified nesting level (from 1 to 5).

Use the Surround With action

You can collapse or expand code using the Surround With action.

  1. In the editor, select a code fragment and press Ctrl+Alt+T.

  2. From the popup menu, select <editor-fold...> Comments or region...endregion Comments.

  3. Optionally, specify a description under which the collapsed fragment will be hidden.

  4. To collapse or expand the created region, press Ctrl+..

  5. To navigate to the created custom region, press Ctrl+Alt+..

Disable code folding outline

You can hide the code folding arrow icons that appear in the gutter.

  1. In the Settings dialog (Ctrl+Alt+S) , go to Editor | General | Code Folding.

  2. Clear the Show code folding arrows checkbox.


DataSpell automatically saves changes that you make in your files. Saving is triggered by various events, such as compiling, running, debugging, performing version control operations, closing a file or a project, or quitting the IDE. Saving files can be also triggered by third-party plugins.

Most of the events that trigger auto-save are predefined and cannot be configured, but you can be sure that changes will not be lost and you can find all of them in local history.

Configure autosave behavior

  1. Press Ctrl+Alt+S to open settings and then select Appearance and Behavior | System Settings.

  2. Under Sync external changes, configure the following options:

    • Save files when switching to a different application or a built-in terminal

    • Save files if the IDE is idle for N seconds

If you use version control integration, names of all modified files will be marked with a dedicated color on the file tab. But you can also mark unsaved files with an asterisk (*) on the file tab.

Mark files with unsaved changes

  1. Press Ctrl+Alt+S to open settings and then select Editor | General | Editor Tabs.

  2. Select the Mark modified (*) checkbox.

Revert changes

  • For most recent changes, including refactorings, press Ctrl+Z or choose Edit | Undo from the menu.

  • For a more detailed view of past changes, use Local History.

  • For the most robust tracking of all changes, use a version control system.

Run actions on save

  1. To configure autosave actions for the current project, in the Settings dialog (Ctrl+Alt+S) , open Tools | Actions on Save.

    To configure the actions for new projects, go to File | New Projects Setup | Settings/Preferences for New Projects | Tools | Actions on Save in the main menu.

  2. Select the checkboxes next to the actions that you want to trigger on save:

    • Reformat code: reformat your code according to your current code style settings.

    • Optimize imports: remove unused imports and organize import statements according to your current code style settings.

    • Upload to default server: upload modified files to your default deployment server.

  3. For some actions, you can configure the settings more precisely. To do so, hover over an action and click the configuration link.

    For example, for code reformatting, you can specify files and folders that you don't want to change. Hover over the action and click Configure scope to exclude specific files and folders from reformatting.

    You can also select whether to reformat the whole file or only modified lines.

  4. Apply the changes and close the dialog.

Once the necessary actions are enabled, they will be automatically triggered on every save (autosave, explicit save invoked with Ctrl+S or by selecting File | Save All) as you work with your project.


Use the Rename refactoring to change names of symbols, files, and all the references to them throughout code.


  1. In the editor, select an element you want to rename. If you need to rename a file, select one in the Project tool window.

  2. Press Shift+F6 or go to Code | Refactor | Rename.

  3. In the Rename dialog, enter a new name of the element to enable the Preview and Refactor buttons.

    Rename dialog

    You can specify additional options. For example, specify where to search for element occurrences, or what else to rename. You can also specify a scope for the refactoring.

  4. Click Preview to see the potential changes or click Refactor.

    When you click Preview, DataSpell opens the Find tool window with the results of found usages where you can check the results and confirm the refactoring (Do Refactor).

    All the occurrences of the element will be renamed.

    Rename results

Next time you invoke the Rename refactoring, DataSpell remembers the options you have specified inside the Rename dialog.

With Extract and Introduce refactorings you can quickly declare variables, constants, parameters, fields, and methods:

  • Extract/Introduce Constant: makes your source code easier to read and helps you avoid using hardcoded constants without any explanations about their values or purpose.

  • Extract/Introduce Variable: places a complex or duplicated expression into a separate variable that is less complex and easier to understand.

  • Extract/Introduce Field: lets you declare a new field and initialize it with the selected expression.

  • Extract/Introduce Parameter: adds a new parameter to a function declaration.

  • Extract/Introduce Method: lets you take a code fragment that can be grouped, move it into a separated method, and replace the old code with a call to the method.

Extract and Introduce

  1. Select a code element to refactor. Go to Code | Refactor this....

  2. In the Refactor This popup window, select the target refactoring, for example, Introduce Variable...

    Invoking refactorings
  3. DataSpell provides you with the list of possible variable names. You can pick one or type a name of your choice.

    Introducing a variable

Reformat code

DataSpell lets you reformat your code according to the requirements you've specified in the Code Style settings.

To access the settings, in the Settings dialog (Ctrl+Alt+S) , go to Editor | Code Style. For more information, refer to Configuring code style.

Reformat a code fragment in a file

  1. In the editor, select a code fragment you want to reformat.

  2. Go to Code | Format | Reformat Code or press Ctrl+Alt+L. The IDE notifies you on the result of reformatting.

    The number of reformatting lines

    If you don't select a code fragment, DataSpell will reformat the whole file.

Reformat a file

  1. Either open your file in the editor and press Ctrl+Alt+Shift+L or in the Workspace tool window, right-click the file and select Reformat Code.

    Keep pressing Shift and select additional files for a group reformatting.

  2. In the dialog that opens, if you need, select the following reformatting options:

    • Optimize imports: select this option if you want to remove unused imports, add missing ones, or organize import statements.

    • Rearrange entries: select this option if you need to rearrange your code based on the arrangement rules specified in the code style settings.

    • Only VSC changed text: select this option to rearranged only fragments that have been modified in the version control system.

    • Cleanup code: select this option to run the code cleanup inspections.

    If you want to see the exact changes made to your code during the reformatting, use the Local History feature.

Last modified: 26 May 2024