Giter Site home page Giter Site logo

class method name generation error about riml HOT 6 OPEN

tek avatar tek commented on August 20, 2024
class method name generation error

from riml.

Comments (6)

luke-gru avatar luke-gru commented on August 20, 2024

Hi @tek,

Thanks for the detailed report. The s: is superfluous, but to my knowledge it does no harm. I'm not sure if that's what the problem is here or not.

Can you paste a small standalone example that will reproduce this error so I can have a better idea of what's going on?

Thanks,

from riml.

tek avatar tek commented on August 20, 2024

@luke-gru

class MyClass
  defm foo
  end
end

foo = new MyClass()

Then doing runtime autoload/foo.vim would be enough.
The output file:

function! s:MyClassConstructor()
  let myClassObj = {}
  let myClassObj.foo = function('<SNR>' . s:SID() . '_s:MyClass_foo')
  return myClassObj
endfunction

function! <SID>s:MyClass_foo() dict
endfunction

let s:foo = s:MyClassConstructor()

s:SID() obviously can't be there, do I miss an import or something?

btw, I wrote 'excluded' in the first post when I meant 'included'.

from riml.

luke-gru avatar luke-gru commented on August 20, 2024

Ah I see, thanks. Are you compiling from the commandline, or running riml interactively (riml -i)?

I get the following output when saving your example in a file foo.riml and running riml -c foo.riml

function! s:SID()
  if exists('s:SID_VALUE')
    return s:SID_VALUE
  endif
  let s:SID_VALUE = matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
  return s:SID_VALUE
endfunction

function! s:MyClassConstructor()
  let myClassObj = {}
  let myClassObj.foo = function('<SNR>' . s:SID() . '_s:MyClass_foo')
  return myClassObj
endfunction

function! <SID>s:MyClass_foo() dict
endfunction

let s:foo = s:MyClassConstructor()

When running riml interactively, the generated s:SID function is left off, but maybe that is confusing behaviour.

from riml.

tek avatar tek commented on August 20, 2024

ah, alright. I am using guard-shell with a Guardfile I created some months ago, that was using riml -s < #{infile} > ${outfile}â€ĻI guess SID() is being omitted in stdin mode, too. using -c, I get the correct results.

from riml.

tek avatar tek commented on August 20, 2024

After updating vim today, the <sid>s: seems to be illegal now.

from riml.

tek avatar tek commented on August 20, 2024

FWIW, this is working at first glance: https://github.com/tek/riml/commit/9d2131f1ceb1ca5e4a6cfc14d4d56bbdeea4c3dd

from riml.

Related Issues (20)

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.