Sublime Forum

Dev Build 2030

#35

Here is the full PHP function list with snippets for every function:

bitbucket.org/vostok4/sublimeph … ompletions

0 Likes

#36

[quote=“ilya”]New completion system is very cool!

But wrapping selection with html tags is not working?[/quote]

Yes. I miss that very much :frowning:

Edit:

Umm, I cant even trigger paragraph, p->tab gives me (v2032) :astonished:

0 Likes

#37

Jon, I cannot get what you wrote to work.

I created a Headers ©.sublime-completions with (shortened) the following contents:

[code]
{
“scope”: “string.quoted.other.lt-gt.include.c meta.preprocessor.c.include source.c”,

"completions":

	"assert.h",
	"complex.h"
]

}[/code]
I cannot get this to work. If I take out the parts in scope before “source.c” then I can get it to complete. I have set the syntax explicitly to C in the View menu. So what obvious thing am I doing wrong here? It should be similar to your C++ example. I’ve tried “meta.preprocessor.c.include source.c” as well as “string.quoted.other.lt-gt.include.c source.c” as well, but they also failed.

Also, my question before was actually different. Since I communicated the idea across badly, let me try again. Within the scope of the source file if you would allow all completion tokens it would be incredibly bloated. So depending on which #include files are included at the top I would like to limit the tokens. E.g. if #include <stdio.h> is included I want fclose() to be available in autocompletion, but if #include <stdio.h> is not present, I don’t want to offer the possibility.

0 Likes

#38

I think a plugin could be what you want here. Using Jon’s example plugin as a starting point:

[code]import sublime
import sublime_plugin

class C_Completions(sublime_plugin.EventListener):
all_completions = {“string.h”:
(“sl”, “strlen($1)”),
],
“stdio.h”:
(“pf”, “printf($1)”),
]}

def on_query_completions(self, view, prefix, locations):
if not view.match_selector(locations[0], “source.c”):
return ]
filenames = ]
regions = view.find_all(r"#include +"<](.+)">]", 0, “$1”, filenames)
completions = ]
for f,r in zip(filenames, regions):
if (f in self.all_completions and
view.syntax_name(r.begin()).strip().endswith(“preprocessor.c.include source.c”)):
completions += self.all_completions[f]
return completions[/code]

0 Likes

#39

Is there a way to get the scope name in a plugin

I tried

view.run_command('show_scope_name')

and theres view.scope_name() but I can’t tell what args it takes or even if it does what i need (grab the the file source type eg: source.css.less) so i can check against it.

We really really need some api docs for ST2.

0 Likes

#40

I believe view.syntax_name and view.scope_name are identical. They both take a text_point as an argument and return a string containing the name of the scope at the text point.
If a function exists in both ST1 and ST2, it tends to take the same arguments and have the same effect, so the API docs for ST1 are actually pretty helpful.

0 Likes

#41

adzenith thanks for the quick reply.

this seems to work

view.scope_name(view.text_point(0,0)).split(' ')-2]
0 Likes

#42

[quote=“atomi”]adzenith thanks for the quick reply.

this seems to work

view.scope_name(view.text_point(0,0)).split(' ')-2] [/quote]

view.text_point(0,0) will always just be 0, I believe.
You can also call view.settings().get(“syntax”) in order to figure out which syntax file is being used.

0 Likes

#43

I don’t understand… “will always just be 0”
Sorry.

Are you talking about the return value?
I’m getting as the return value fwiw punctuation.definition…

0 Likes

#44

view.text_point() returns a a text_point, which is really just an integer index of the indicated character in the buffer. Because the character at row 0, col 0 is always the character at buffer index 0, view.text_point(0,0) will always return 0.
Let me know if I’m not making any sense.

0 Likes

#45

Oh I understand now.
So,

view.scope_name(0)

would work just the same.

Thanks again.

0 Likes

#46

Right, yeah, I should have just said that. :
Good luck with your plugin!

0 Likes

#47

Yeah!

I just found this too (in case it helps someone passing through here)

sublimetext.info/docs/reference/api.html

Cheers!

0 Likes

#48

Thanks! I’ll take a look at integrating it

This will be because it remembers your selection when using ctrl+space: what you’re seeing is the expected behaviour if, at some point you have typed ‘p’, hit ctrl+space, and selected option. To revert this, do the same thing, and select p as the completion.

Ah, I see: I thought you were talking about including the header file names themselves.

This sort of functionality would have to be done by a plugin, although looking for stdio.h or cstdio isn’t enough: you’d also have to search through all included files, recursively, in case any of those files happen to include stdio.h. It may make more sense to look at integrating something like cx4a.org/software/gccsense/ via a plugin, to have GCC to tell you what the completion options are.

0 Likes

#49

This thread seems as good a place as any to ask, is there any way to change the font the default theme uses in ST2? Not talking about for the actual file area, but for the tabs, status bar, sidebar, etc.

0 Likes

#50

Is it just me of is Go to symbol broken for CSS?

0 Likes

#51

Also has “New view on current file” made it into ST2 yet? I haven’t been able to find it.

0 Likes

#52

It’s presently hard coded to use the default UI font on each platform. I’m planning on reworking some of the theming stuff soon, I may be able to squeeze it in then.

It’s working for me.

It’s not in yet.

0 Likes

#53

[quote=“vostok4”]Here is the full PHP function list with snippets for every function:

bitbucket.org/vostok4/sublimeph … ompletions[/quote]

I took a quick look at this, a couple of things I noticed:

  • Arguments with spaces appear to have the closing curly bracket in the wrong spot, e.g.:
{ "trigger": "yaz_es", "contents": "yaz_es(${1:id\n   }, ${2:type\n   }, ${3:args\n   })" },

When triggered, this would select the parameter, and the whitespace on the following line

  • It contains function names like “ZipArchive::addEmptyDir”, which doesn’t appear to be something that should be completed. Better to just leave them out?
0 Likes

#54

[quote=“jps”]

[quote=“vostok4”]Here is the full PHP function list with snippets for every function:

bitbucket.org/vostok4/sublimeph … ompletions[/quote]

I took a quick look at this, a couple of things I noticed:

  • Arguments with spaces appear to have the closing curly bracket in the wrong spot, e.g.:
{ "trigger": "yaz_es", "contents": "yaz_es(${1:id\n   }, ${2:type\n   }, ${3:args\n   })" },

When triggered, this would select the parameter, and the whitespace on the following line

  • It contains function names like “ZipArchive::addEmptyDir”, which doesn’t appear to be something that should be completed. Better to just leave them out?[/quote]

Good eyes. I’ll adjust the generating script to fix up that error case, and I’ll omit static functions from classes. Will update later today, thanks!

0 Likes