mathworks / mathworks/Emacs-MATLAB-Mode

Switching back and forth quickly between matlab-shell and source buffer + Ctrl+Z on matlab repl completely freezes it

Open
#68 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement help wanted
Dominant language
Emacs Lisp
Stars
26
Forks
5
PR merge metrics
No merged PRs in 30d

Description

I've started using julia quite a lot recently using the package julia-snail on emacs. If the function (julia-snail) is called from a source code buffer, focus switches to the julia REPL buffer, and if it was called from the REPL buffer, focus switches to the source. It remembers the last source buffer from which the julia-snail function is called, making this super neat to work with.
By default I have this function mapped to Ctrl+Z so I'm hitting ctrl+z all the time, especially when I have 4 windows with different buffers open at the same time with only one being the repl.

In matlab mode, we have the function matlab-shell so I can go from source to matlab repl. But no function like this seems to exist for going back.
I have added personal frustration since I have matlab-shell bound to Ctrl+Z. And hitting Ctrl+Z in the matlab-repl freezes up the repl completely.
This is my second query in this sub issue The behavior of Ctrl+Z on the matlab-shell is confusing. Once I hit Ctrl+Z on the matlab-shell, I'm unsure just what I need to do to resume the session. So far I've been killing matlab-shell completely and continuing.

Here's the julia-snail code just in case:

(defun julia-snail ()
  "Start a Julia REPL and connect to it, or switch if one already exists.
The following buffer-local variables control it:
- `julia-snail-repl-buffer' (default: *julia*)
- `julia-snail-port' (default: 10011)
To create multiple REPLs, give these variables distinct values (e.g.:
*julia my-project-1* and 10012)."
  (interactive)
  (let ((source-buf (current-buffer))
        (repl-buf (get-buffer julia-snail-repl-buffer)))
    (if repl-buf
        ;; Julia session exists
        (progn
          (with-current-buffer repl-buf
            (setq julia-snail--repl-go-back-target source-buf))
          (pop-to-buffer repl-buf))
      ;; run a new Julia REPL in a terminal and load the Snail server file
      (julia-snail--start source-buf))))

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the matlab-shell entry point and trace how focus switches between MATLAB source and REPL buffers, including what Ctrl+Z does in the REPL. Define done as providing a reliable way to switch back to the prior source buffer and ensuring Ctrl+Z does not leave the MATLAB session apparently frozen.

Written by the indexing model from the issue text.

Assessment

Tech stack
emacs, emacs-lisp
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.