Loading ...
Sorry, an error occurred while loading the content.

134126Re: What do I need to read to understand g: and s: VIM variable prefixes?

Expand Messages
  • Tony Mechelynck
    Nov 1, 2012
      On 31/10/12 21:02, Dotan Cohen wrote:
      > On Wed, Oct 31, 2012 at 9:52 PM, donothing successfully
      > <donothingsuccessfully@...> wrote:
      >> On 31 October 2012 19:15, Dotan Cohen <dotancohen@...> wrote:
      >>> […]
      >>> #include <stdio.h>
      >>> int foo();
      >>>
      >>> int main() {
      >>> int x = 42;
      >>> printf("%d", x);
      >>> foo();
      >>> return 0;
      >>> }
      >>>
      >>> int foo() {
      >>> printf("%d", x);
      >>> }
      >>> […]
      >> Here x is a local variable of the function *main*.
      >> I think the "global" keyword is more of a weirdism of PHP than
      >> standard practise.
      >> http://en.wikipedia.org/wiki/Global_variable#C_and_C.2B.2B
      >>
      >
      > Exactly. However, there is no flow control outside of main(), so I
      > don't account for variables declared outside of main(). If someone is
      > declaring a variable in an area of the program with no flow control,
      > then they are explicitly declaring their intentions that the variable
      > will be global. In other words, it is not a surprise or a gotcha when
      > the variable is available in a different scope.
      >
      >

      In Vimscript, an interpreted language, there are no "declarations": any
      command needs to be "executed" in order to have an effect. It is when
      flow control goes through the :au, :map, :abbrev, :function or :command
      command, for instance, that the autocommand, mapping, abbreviation,
      function definition or user-command definition are stored in interpreter
      memory; before that, Vim doesn't "know" anything about them. Similarly,
      the type of a variable is set by the latest :let command affecting that
      variable, you cannot "declare" a variable except by giving that variable
      a value (possibly an empty value such as "", [] or {}).


      Best regards,
      Tony.
      --
      Vote for ME -- I'm well-tapered, half-cocked, ill-conceived and
      TAX-DEFERRED!

      --
      You received this message from the "vim_use" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    • Show all 15 messages in this topic