Skip to content

Commit b51ac1d

Browse files
committed
feat: request.render
1 parent f6cd07c commit b51ac1d

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

examples/two/test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ class Moo(models.Model):
2121
_name = 'moo'
2222
_inherit = ['quux']
2323

24-
what = fields.Many2one(comodel_name='bar')
24+
what = fields.Many2one(comodel_name='bar')
25+
def foo():
26+
request.render('generic_tax_report')

src/main.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -709,10 +709,10 @@ impl Backend {
709709
current_module: &str,
710710
items: &mut Vec<CompletionItem>,
711711
) -> miette::Result<()> {
712-
let range = char_range_to_lsp_range(range, rope).ok_or_else(|| diagnostic!("(complete_inherit_id) range"))?;
712+
let range = char_range_to_lsp_range(range, rope).ok_or_else(|| diagnostic!("(complete_xml_id) range"))?;
713713
let by_prefix = self.module_index.records.by_prefix.read().await;
714-
fn to_completion_items(entry: &Record, current_module: &str, range: Range) -> CompletionItem {
715-
let label = if entry.module == current_module {
714+
fn to_completion_items(entry: &Record, current_module: &str, range: Range, scoped: bool) -> CompletionItem {
715+
let label = if entry.module == current_module && !scoped {
716716
entry.id.to_string()
717717
} else {
718718
entry.qualified_id()
@@ -732,8 +732,8 @@ impl Backend {
732732
let completions = by_prefix.iter_prefix(needle.as_bytes()).flat_map(|(_, keys)| {
733733
keys.iter().flat_map(|key| {
734734
self.module_index.records.get(key.as_str()).and_then(|entry| {
735-
(entry.module == module && entry.model.as_deref() == model_filter)
736-
.then(|| to_completion_items(&entry, current_module, range))
735+
(entry.module == module && (model_filter.is_none() || entry.model.as_deref() == model_filter))
736+
.then(|| to_completion_items(&entry, current_module, range, true))
737737
})
738738
})
739739
});
@@ -742,8 +742,8 @@ impl Backend {
742742
let completions = by_prefix.iter_prefix(needle.as_bytes()).flat_map(|(_, keys)| {
743743
keys.iter().flat_map(|key| {
744744
self.module_index.records.get(key.as_str()).and_then(|entry| {
745-
(entry.model.as_deref() == model_filter)
746-
.then(|| to_completion_items(&entry, current_module, range))
745+
(model_filter.is_none() || entry.model.as_deref() == model_filter)
746+
.then(|| to_completion_items(&entry, current_module, range, false))
747747
})
748748
})
749749
});

src/python.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,12 @@ impl Backend {
122122
cursor.set_byte_range(range.clone());
123123
let mut items = vec![];
124124
'match_: for match_ in cursor.matches(query, ast.root_node(), &bytes[..]) {
125+
let mut model_filter = None;
125126
for capture in match_.captures {
126127
if capture.index == 2 {
128+
// @_request
129+
model_filter = Some("ir.ui.view");
130+
} else if capture.index == 4 {
127131
// @xml_id
128132
let range = capture.node.byte_range();
129133
if range.contains(&offset) {
@@ -135,14 +139,14 @@ impl Backend {
135139
let needle = Cow::from(slice.byte_slice(1..offset - relative_offset));
136140
// remove the quotes
137141
let range = range.contract(1).map_unit(|unit| CharOffset(rope.byte_to_char(unit)));
138-
self.complete_xml_id(&needle, range, rope.clone(), None, &current_module, &mut items)
142+
self.complete_xml_id(&needle, range, rope.clone(), model_filter, &current_module, &mut items)
139143
.await?;
140144
return Ok(Some(CompletionResponse::List(CompletionList {
141145
is_incomplete: items.len() >= Self::LIMIT,
142146
items,
143147
})));
144148
}
145-
} else if capture.index == 3 {
149+
} else if capture.index == 5 {
146150
// @model
147151
let range = capture.node.byte_range();
148152
if range.contains(&offset) {
@@ -182,7 +186,7 @@ impl Backend {
182186
cursor.set_byte_range(range);
183187
'match_: for match_ in cursor.matches(query, ast.root_node(), &bytes[..]) {
184188
for capture in match_.captures {
185-
if capture.index == 2 {
189+
if capture.index == 4 {
186190
// @xml_id
187191
let range = capture.node.byte_range();
188192
if range.contains(&offset) {
@@ -195,7 +199,7 @@ impl Backend {
195199
return self
196200
.jump_def_inherit_id(&slice, &params.text_document_position_params.text_document.uri);
197201
}
198-
} else if capture.index == 3 {
202+
} else if capture.index == 5 {
199203
// @model
200204
let range = capture.node.byte_range();
201205
if range.contains(&offset) {

src/queries/py_completions.scm

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
((call
22
[(attribute (attribute (_) (identifier) @_env) (identifier) @_ref)
3-
(attribute (identifier) @_env (identifier) @_ref)]
3+
(attribute (identifier) @_env (identifier) @_ref)
4+
(attribute (identifier) @_request (identifier) @_render)]
45
(argument_list . (string) @xml_id))
56
(#eq? @_env "env")
6-
(#eq? @_ref "ref"))
7+
(#eq? @_ref "ref")
8+
(#eq? @_request "request")
9+
(#eq? @_render "render"))
710

811
((subscript
912
[(identifier) @_env

0 commit comments

Comments
 (0)