Skip to content

Special repl modes and sending code #32

Open

Description

@gdkrmr

When in any special repl mode, such as shell, pkg, etc. sending code to the repl does not make sense. I propose to simply snap out of the special mode, as this is usually what you want.

Activity

  1. tpapp commented on Jul 7, 2018

    @tpapp
    Owner

    Any suggestions for implementation?

  2. gdkrmr commented on Jul 7, 2018

    @gdkrmr
    Author

    Good question :-), I just started digging into the julia-repl source code a little bit yesterday, I will tell you if I come up with an idea.

  3. gdkrmr commented on Jul 9, 2018

    @gdkrmr
    Author

    Solution 1: simply prepend "\^H" to each command you send to the repl, this shouldn't do any harm.
    Solution 2: do some matching, e.g.:

    (defun julia-repl--quit-repl-mode-maybe ()
      (interactive) 
      (with-current-buffer "*julia*"
        (save-excursion
          (goto-char (point-max))
          (when (not (string-match-p "^julia>.*" (thing-at-point 'line t)))
            (term-send-raw-string "\^H")))))

    Something like this would also be useful, for the following case:

    send

    x = collect(1:100)

    to the repl containing a command:

    julia> y

    then there is no variable x, but yx. So generally deleting commands from the repl may be a good idea.

  4. tpapp commented on Jul 9, 2018

    @tpapp
    Owner

    Thanks for the ideas, I will explore these.

  5. self-assigned this
    on Jul 9, 2018
  6. MasonProtter commented on Jul 30, 2018

    @MasonProtter

    This isn't a huge deal but I thought I'd chime in: I sometimes find it helpful to be able to send code while in other REPL modes, especially since I have to leave char-mode in the REPL buffer in order to paste. Sometime I will enter the Pkg mode and then send over code like add Plots or whatever.

  7. tpapp commented on Jul 31, 2018

    @tpapp
    Owner

    @MasonProtter: just to clarify, you have

    add Plots
    

    in a buffer and you want to use julia-repl to send that to the inferior process?

  8. MasonProtter commented on Jul 31, 2018

    @MasonProtter

    Yes.

    As a more realistic example, I’ve been playing around lately with creating my own repl modes for DSLs and so it’s helpful to just open my special repl mode and then write and use julia-repl to send DSL code from my .jl buffer straight into my other repl mode.

    This works fine now but if the proposed change goes through, it would limit the usefulness of alternate repl modes.

  9. tpapp commented on Jul 31, 2018

    @tpapp
    Owner

    Good to know. I will hold off this change and think about it.

  10. MasonProtter commented on Aug 24, 2018

    @MasonProtter

    @tpapp Interestingly, if I use julia-repl to send code to the pkg> repl mode, the command does not get run unless I press enter again in the term buffer. Do you have any idea why this behaviour is happening?

  11. gdkrmr commented on Aug 24, 2018

    @gdkrmr
    Author

    what about a shortcut for sending something in a certain mode:
    C-c C-s C-c: send line or region in shell mode
    C-c C-p C-c: send line or region in pkg mode

    or

    C-c C-s to send in "special mode":
    C-c C-s C-s C-c: send line or region in shell mode
    C-c C-s C-p C-c: send line or region in pkg mode

    you could also do C-c C-S for locking into the special mode and then the normal key bindings for sending to the REPL send in that mode.

    There could be a variable that binds a key to a prefix:

    (setq julia-repl-special-mode-key-map '(("C-s" . ";")
                                            ("C-p" . "]")))
    

    this would be easily extensible and you just have to pre-pend the letter to each line before sending.

  12. tpapp commented on Aug 25, 2018

    @tpapp
    Owner

    @MasonProtter: could be the bracketed paste, but I am not sure.

  13. tpapp commented on Aug 25, 2018

    @tpapp
    Owner

    @gdkrmr: I will think about this, but I am finding it hard to find a use case. I think of shell and pkg modes as convenience features for interactive use. If I found, for example, that I am composing something complex in a buffer and sending it to the shell, I would just write a shell script.

  14. gdkrmr commented on Aug 25, 2018

    @gdkrmr
    Author

    A DLS that is built on top of julia? For Pkg and shell you are probably right.

  15. tpapp commented on Sep 2, 2018

    @tpapp
    Owner

    To everyone interested: #36 is an attempt to fix the most obvious case, ie clear the prompt by default by sending a C-a C-a [backspace]. C-u before should override (disable it). Testing and comments are welcome, this is about the 6th variation that I am trying out, but it seems to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions