[Python-mode] edit or navigate code by feature

Eric S. Johansson esj at harvee.org
Mon Jun 27 15:37:32 CEST 2011


On 6/27/2011 3:07 AM, Andreas Röhler wrote:
> Am 26.06.2011 21:44, schrieb Andreas Röhler:
>> [ ... ]
>>> notation: Spoken -- Emacs -- results
>>>
>>> given a line like:
>>>
>>> self.calories = self.calories + food_record["calories"]*grams
>>> ^
>>> ^ = cursor position
>>>
>>> "get method" -- (result-to-knp(ar-method-copy-apt)) -- returns copy of
>>> method name and places it in the cut and paste buffer (is region defined
>>> here?).
>>>
>
> py-copy-of-def-or-class will do that. Region is marked than.
> Will put alias `py-copy-method' onto that.
>
> Would you want to get the whole class too, when below a class and above a 
> method definition?
>
> Understand strictly speaking "method" only inside a class.
> However, for your purposes, if cursor is between the opening of a class and 
> its first method, dealing with class variables for example, "get method" would 
> cover the whole class. Thats the question so far.
>
> BTW what about return values? Is it good enough as `py-copy-of-def-or-class' 
> does? Would an explicit sending of the beginning and and of the region then be 
> of interest?

Okay, I think I understand some of the trouble.

When I said something like  "get method", I'm using a shorthand that I think you 
would call "get method name". The vocal command for what you are describing 
would be "get entire method". Using the totally fictitious method:

def simple_method (self, index, string, instance):
     oil_type = string[3:7]
     oil_level = self.tank [index]
     lubricated_device = instance.motor

when I say "get entire method", I expect the entire method to be returned.  when 
I say:

  "get method"  Return one of the following (tank, motor).
  "get instance" Return one of the following (self, instance).
  "get method definition" Return the following name (simple_method)
  "get first argument Return self if this command is used while the cursor is on 
the same line as "simple_method"
  "get index" returns one of the following (3:7, index)

slightly more complicated versions:

If the cursor sits on the word type of oil_type and I say "get index" it should 
return a string "3:7" leaving mark at '3' and the cursor (point) after '7'.
 From the same starting point, if I say "get next index", it should return the 
word "index" leaving the mark on "i" and point after "x"
from the same starting point, if I say "get last argument" it should return the 
word "instance" leaving mark on'i' of instance and point after the 'n'

I am on the fence about whether or not to return information or strictly use 
these new routines to mark a region and then use the region retrievals and 
change functions. What do you think about that?  I'm also missing some 
pronounceable and unique shorthand names for other features.

--- eric


More information about the Python-mode mailing list