Giter VIP home page Giter VIP logo

isend-mode.el's People

Contributors

albertstartup avatar blade6570 avatar ffevotte avatar porterjamesj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

isend-mode.el's Issues

How to skip comment lines?

I use the variable isend-skip-empty-lines, which makes walking through long scripts easy. I would also like to skip comment lines (# in bash). Is there something like isend-skip-comment-lines?

Testing term-send-input with IPython 5

As I reported in this other issue #6 I am having problems getting isend to work with the latest IPython 5 terminal. I thought this would be a good opportunity for me to try contribute to this great package, since it has been a life saver since I started using it!

I have a relatively basic knowledge of Elisp, but I was able to follow most of the logic in isend-mode.el. I suspect part of the problem that I am having is coming from what's being sent to the terminal, since the IPython 5 interpreter works perfectly fine otherwise running within my ansi-term buffers.

The key seems to be these lines: https://github.com/ffevotte/isend-mode.el/blob/master/isend-mode.el#L278-L282 which read:

  (cond
    ;; Terminal buffer: specifically call `term-send-input'
    ;; to handle both the char and line modes of `ansi-term'.
    ((eq major-mode 'term-mode)
     (term-send-input))

What does (eq major-mode 'term-mode) do? Is it a comparison to make sure that it's a term-mode before we invoke term-send-input ?

How does term-send-input know what to send to what buffer? I know that it's wrapped up within two statements:

  • (with-temp-buffer ...
  • (with-current-buffer destination ... where destination holds the buffer we associate beforehand.

Also, how can I test interactively sending a simple string to a given buffer (called "ipy" in my case) where I have an IPython terminal running?

skip-empty-lines doesn't work

With isend-skip-empty-lines set to t, when I run C-RET on an empty line, it is still sent to the shell. I looked at the code to try and fix it myself, but I'm not familiar enough with elisp to completely understand what you're doing, so I figured I'd let you know it wasn't working (for me at least). This is on Cocoa emacs on OSX, version 24.2.1.

Can't send blocks in selected region

I'm using isend in a Python buffer, with isend-default-python-setup, and it seems to be unable to deal with indentation when sending a region.

If I select a single line
1-2

it removes any of whitespace preceding it, in this case 8 spaces, and it works
2

If I select two lines instead
3

it complains that I'm sending multiple statements
4

And with more than 2 lines
5

gives a message regarding tabs and spaces, even though all of the indentation uses spaces.
6

Navigating to the end of line (C-e) first will execute the following line (on C-RET)

Hi,

Say you have the following in foo.sh (with ansi-term as associated buffer):

cd
ls

If the point is before the 'c' or between 'c' and 'd', the cd command is executed on C-RET. But if the point is after 'd', for example when navigating to the end of the line with 'C-e' (or simply moving the point there with the arrow keys), then the ls command is executed. It would be great if there was an option to allow you to also execute the cd command in this case, which would also be how, for example, ESS (Emacs Speaks Statistics) works.

Thanks & cheers,
Marius

cpaste issue in ipython 5.1

After #9, everything works fine.
Although i use %paste, there seems to be some problems with cpaste.
First top level ipython input (i.e. not %cpaste input) doesn't understand "\n". That is fixed in the code below.
Second it is hard to deal with indent levels. I don't have a easy fix for that.
Feel free to close this issue, its just here for reference.

Working with IPython

Note: This issue is a follow up on this StackOverflow thread

@ffevotte You mentioned there is a way of sending %paste commands to an IPython session (which would effectively make the IPython interpreter run the most recent item in the kill ring) . I think you said there is a hook we can use for this, but I could not find the info on the documentation. Would you mind elaborating more on this? Thanks!

For reference: I git cloned the repository and am working on the ipython branch and with the most recent commit as of today (Jan. 24, 2013):

commit 8bf12cfb81bb64977b682f47e4140e774bc000d1
Author: François Févotte <[email protected]>
Date:   Tue Dec 18 11:03:41 2012 +0100

    Prepared packaging with MELPA

error with emacs 26.1: Symbol’s value as variable is void: term-last-input-start

Since commit 55244c3, isend doesn't work with emacs 26.1 anymore. M-x isend-send gives the following error:

isend-send: Symbol’s value as variable is void: term-last-input-start

Since this commit is a major rewrite (for emacs 27, it seems), is support for stable/previous emacs versions planned? Otherwise, you might consider setting the required emacs version in the package header.

'Move to next line' -> Making it optional

It would be great to modify isend-send() so that the last line of the function:

 ;; Move point to the next line
 (isend--next-line))

is optional depending on a boolean variable the user can set. I am trying to learn elisp but I am still unsure how to do this. Any thoughts?

Interesting recommendation: a defadvice to have code be executed automatically?

I found this article which includes some recommended modifications to isend-mode.el.

Specifically it recommends defining advice for isend. Quoting literally:

But there is another annoying problem, isend only sends the code to a
specified buffer, but the code won’t be executed automatically.

With the following advice (with an advice you could run some commands before/after a specified function is invoked), after sending code, Emacs will switch to the destination buffer, execute the code that is sent and switch back to the original buffer.

1:  (defadvice isend-send (after advice-run-code-sent activate compile)
2:    "Execute whatever sent to the (Python) buffer"
3:    (interactive)
4:    (let ((old-buf (buffer-name)))
5:      (progn
6:        (switch-to-buffer isend--command-buffer)
7:        (goto-char (point-max))
8:        (comint-send-input)
9:        (switch-to-buffer old-buf))))

What do you think of this suggest this @ffevotte ? Is it really needed?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.