6
$\begingroup$

Make cursor stay in input cell provides a function for keeping the cursor in a cell after it was evaluated. I tried adding that function directly into KeyEventTranslations.tr to create a keyboard shortcut but that led to Mathematica sending an error when loading. I tried wrapping it in KernelExecute but that did not work. I would also like to modify shift plus enter to remove the setting from the function in the link when I want the standard way of evaluating a cell.

$\endgroup$

1 Answer 1

10
+100
$\begingroup$

The following adds a new menu item "Evaluate Cells (Keep Selection)" with shortcut "Alt+Shift+Return" that keeps the cursor where it is:

FrontEndExecute@FrontEnd`AddMenuCommands[
    If[$OperatingSystem == "Windows", "EvaluateCells", "HandleShiftReturn"], {
      MenuItem["Evaluate Cells (Keep Selection)",
        KernelExecute@evaluateKeepSelection[],
        System`MenuKey[
          "Return",
          System`Modifiers -> {"Shift", "Option"}
          ],
        System`MenuEvaluator -> Automatic
        ]}]
 
evaluateKeepSelection[] := 
 With[{nb := EvaluationNotebook[], c := EvaluationCell[]}, 
  With[{cv := 
     CurrentValue[nb, {"TaggingRules", "LastCursorPosition"}], 
    pos := FrontEndExecute@
      FrontEnd`UndocumentedGetSelectionPacket[nb]}, 
   cv = "CharacterRange" /. pos;
   FrontEndExecute@FrontEndToken["EvaluateCells"]; 
   SetOptions[nb, 
    CellEpilog :> 
     If[ListQ[cv], SelectionMove[c, Before, CellContents]; 
      SelectionMove[nb, Next, Character, First[cv]]; 
      SelectionMove[nb, After, Character]; 
      FrontEndExecute@
       Table[FrontEndToken["SelectNext"], -Subtract @@ cv];
      cv = False]]]
  ]

enter image description here

Note that this keeps the usual behavior of "Shift+Return" as it is, it just adds an additional shortcut that keeps the selection.

$\endgroup$
9
  • $\begingroup$ I do not see a menu item either on Linux with version 13.2. Maybe I could use resources.wolframcloud.com/FunctionRepository/resources/… somehow to add the menu item ? (I did not try using that function i just saw it in the past) $\endgroup$ Apr 16, 2023 at 14:13
  • $\begingroup$ @MichaelE2 Can you try again? I tweaked the call to AddMenuCommands slightly, hopefully that makes it more robust... $\endgroup$
    – Lukas Lang
    Apr 16, 2023 at 14:38
  • $\begingroup$ @userrandrand That resource function does nothing else than call FrontEndExecute@FrontEnd`AddMenuCommands, so I am a bit surprised my code didn't work for you (or MichaelE2). As I already mentioned, I tweaked the call slightly in the hopes to make the call work now $\endgroup$
    – Lukas Lang
    Apr 16, 2023 at 14:39
  • $\begingroup$ @MichaelE2 Looks like the relevant token is "HandleShiftReturn" instead of "EvaluateCells" on Linux for some reason (I assume it's the same on macOS as well). I updated the answer to include a check for the OS, and it works now for a fresh install on Ubuntu for me. Can you check again on macOS? $\endgroup$
    – Lukas Lang
    Apr 16, 2023 at 16:21
  • $\begingroup$ Success! It works. (+1) $\endgroup$
    – Michael E2
    Apr 16, 2023 at 18:12

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .