Skip to content

Commit

Permalink
Merge branch 'master' into impl/copilotIgnore
Browse files Browse the repository at this point in the history
  • Loading branch information
jfcherng committed Jun 22, 2024
2 parents 0cbb74d + 36d10e9 commit aeaa623
Show file tree
Hide file tree
Showing 9 changed files with 229 additions and 244 deletions.
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ indent_style = tab
[Makefile.*]
indent_style = tab

[*.jinja]
indent_size = 2

[*.md]
indent_size = 2
trim_trailing_whitespace = false
Expand Down
14 changes: 7 additions & 7 deletions language-server/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion language-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"private": true,
"dependencies": {
"copilot-node-server": "^1.36.0"
"copilot-node-server": "^1.37.0"
}
}
4 changes: 2 additions & 2 deletions plugin/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
REQ_SET_EDITOR_INFO,
)
from .log import log_warning
from .template import render_template
from .template import load_string_template
from .types import (
AccountStatus,
CopilotPayloadCompletions,
Expand Down Expand Up @@ -283,7 +283,7 @@ def update_status_bar_text(self, variables: dict[str, Any] | None = None) -> Non
rendered_text = ""
if template_text := str(session.config.settings.get("status_text") or ""):
try:
rendered_text = render_template(template_text, resolved_variables)
rendered_text = load_string_template(template_text).render(resolved_variables)
except Exception as e:
log_warning(f'Invalid "status_text" template: {e}')
session.set_config_status_async(rendered_text)
Expand Down
12 changes: 8 additions & 4 deletions plugin/template.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from __future__ import annotations

from functools import lru_cache
from typing import Any

import jinja2
import sublime

from .constants import PACKAGE_NAME

JINJA_TEMPLATE_ENV = jinja2.Environment(
extensions=[
Expand All @@ -14,9 +16,11 @@


@lru_cache
def create_template(template: str) -> jinja2.Template:
def load_string_template(template: str) -> jinja2.Template:
return JINJA_TEMPLATE_ENV.from_string(template)


def render_template(template: str, variables: dict[str, Any]) -> str:
return create_template(template).render(variables)
@lru_cache
def load_resource_template(resource_name: str) -> jinja2.Template:
content = sublime.load_resource(f"Packages/{PACKAGE_NAME}/plugin/templates/{resource_name}")
return load_string_template(content)
95 changes: 95 additions & 0 deletions plugin/templates/[email protected]
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<style>
html {
--copilot-accept-foreground: var(--foreground);
--copilot-accept-background: var(--background);
--copilot-accept-border: var(--greenish);
--copilot-reject-foreground: var(--foreground);
--copilot-reject-background: var(--background);
--copilot-reject-border: var(--yellowish);
}
.wrapper {
margin: 1rem 0.5rem 0 0.5rem;
}
.wrapper .header {
display: block;
margin-bottom: 1rem;
}
.wrapper a {
border-radius: 3px;
border-style: solid;
border-width: 1px;
display: inline;
padding: 5px;
text-decoration: none;
}
.wrapper a.accept {
background: var(--copilot-accept-background);
border-color: var(--copilot-accept-border);
color: var(--copilot-accept-foreground);
}
.wrapper a.accept i {
color: var(--copilot-accept-border);
}
.wrapper a.reject {
background: var(--copilot-reject-background);
border-color: var(--copilot-reject-border);
color: var(--copilot-reject-foreground);
}
.wrapper a.reject i {
color: var(--copilot-reject-border);
}
.wrapper a.prev {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-right-width: 0;
padding-left: 8px;
padding-right: 8px;
}
.wrapper a.next {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-left-width: 0;
padding-left: 8px;
padding-right: 8px;
}
.wrapper a.panel {
padding-left: 8px;
padding-right: 8px;
}
</style>

<div class="wrapper">

<div class="header">
<a class="accept" title="Accept Completion" href="subl:copilot_accept_completion"><i>✓</i> Accept</a>
<a class="reject" title="Reject Completion" href="subl:copilot_reject_completion"><i>×</i> Reject</a>
{% if count > 1 %}
<a
class="prev"
title="Previous Completion"
href="subl:copilot_previous_completion"
>◀</a><a
class="next"
title="Next Completion"
href="subl:copilot_next_completion"
>▶</a>
({{ index + 1 }} of {{ count }})
{% endif %}
<a class="panel" href="subl:copilot_get_panel_completions" title="Open Panel Completions">☰</a>
</div>

``````{{ lang }}
{{ code }}
``````

</div>
84 changes: 84 additions & 0 deletions plugin/templates/panel_completion.md.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<style>
html {
--copilot-close-foreground: var(--foreground);
--copilot-close-background: var(--background);
--copilot-close-border: var(--foreground);
--copilot-accept-foreground: var(--foreground);
--copilot-accept-background: var(--background);
--copilot-accept-border: var(--greenish);
}
.wrapper {
margin: 1rem 0.5rem 0 0.5rem;
}
.wrapper .navbar {
text-align: left;
}
.wrapper .synthesis-info {
display: inline-block;
text-size: 1.2em;
}
.wrapper .header {
display: block;
margin-bottom: 1rem;
}
.wrapper a {
border-radius: 3px;
border-style: solid;
border-width: 1px;
display: inline;
padding: 5px;
text-decoration: none;
}
.wrapper a.close {
background: var(--copilot-close-background);
border-color: var(--copilot-close-border);
color: var(--copilot-close-foreground);
}
.wrapper a.close i {
color: var(--copilot-close-border);
}
.wrapper a.accept {
background: var(--copilot-accept-background);
border-color: var(--copilot-accept-border);
color: var(--copilot-accept-foreground);
}
.wrapper a.accept i {
color: var(--copilot-accept-border);
}
</style>

<div class="wrapper">

<div class="navbar">
<a class="close" title="Close Completion Panel" href='{{ close_url }}'><i>×</i> Close</a>&nbsp;
<h4 class="synthesis-info">
{% if is_waiting %}
⌛ Synthesizing {{ sections|length }} unique solutions out of {{ total_solutions }}...
{% else %}
Synthesized {{ sections|length }} unique solutions out of {{ total_solutions }}. (Done)
{% endif %}
</h4>
</div>

{% for section in sections %}
<hr>
<div class="header">
<a class="accept" title="Accept Completion" href='{{ section.accept_url }}'><i>✓</i> Accept</a>
</div>

``````{{ section.lang }}
{{ section.code }}
``````

{% endfor %}

</div>
Loading

0 comments on commit aeaa623

Please sign in to comment.