Compare commits
1
Commits
vscode-v0.6.3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ccf108835 |
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
Extension versions are released as `vscode-v<version>` on the [Releases](https://git.harvmaster.com/Harvmaster/autocomplete-model/releases) page. Models are versioned by their name in [`models/manifest.json`](models/manifest.json).
|
Extension versions are released as `vscode-v<version>` on the [Releases](https://git.harvmaster.com/Harvmaster/autocomplete-model/releases) page. Models are versioned by their name in [`models/manifest.json`](models/manifest.json).
|
||||||
|
|
||||||
|
## vscode 0.6.4
|
||||||
|
|
||||||
|
- **Accepting a suggestion asks for the next edit immediately** (setting `nextEdit.afterAccept`, on by default). After
|
||||||
|
Tab on a completion or a next-edit, the follow-up is requested right away instead of after the typing pause, so
|
||||||
|
accepted next-edits chain (rename → next use → …).
|
||||||
|
|
||||||
## vscode 0.6.3
|
## vscode 0.6.3
|
||||||
|
|
||||||
- **Fix: model choice didn't stick in managed mode.** The daemon's saved state (last model used) overrode both the
|
- **Fix: model choice didn't stick in managed mode.** The daemon's saved state (last model used) overrode both the
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"displayName": "Local Autocomplete",
|
"displayName": "Local Autocomplete",
|
||||||
"description": "Inline code completion from a local fine-tuned model via the acd daemon",
|
"description": "Inline code completion from a local fine-tuned model via the acd daemon",
|
||||||
"publisher": "harvmaster",
|
"publisher": "harvmaster",
|
||||||
"version": "0.6.3",
|
"version": "0.6.4",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.90.0"
|
"vscode": "^1.90.0"
|
||||||
@@ -218,6 +218,11 @@
|
|||||||
"default": 700,
|
"default": 700,
|
||||||
"description": "Pause after typing before asking for a next-edit suggestion."
|
"description": "Pause after typing before asking for a next-edit suggestion."
|
||||||
},
|
},
|
||||||
|
"localAutocomplete.nextEdit.afterAccept": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "After you accept a completion or a next-edit suggestion, immediately ask for the next edit (without waiting for the typing pause). Accepted next-edits chain: a rename suggests the next use, and so on."
|
||||||
|
},
|
||||||
"localAutocomplete.triggerOnCursorMove": {
|
"localAutocomplete.triggerOnCursorMove": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false,
|
"default": false,
|
||||||
|
|||||||
@@ -259,6 +259,7 @@ const modelSupportsNextEdit = () => !!(daemonConfig && daemonConfig.models[daemo
|
|||||||
// ---------- next-edit prediction (models trained for it, e.g. Stage E)
|
// ---------- next-edit prediction (models trained for it, e.g. Stage E)
|
||||||
const nextEdit = new NextEditController(s => {
|
const nextEdit = new NextEditController(s => {
|
||||||
api('POST', '/v1/feedback', { event: 'next-edit-accepted', lines: s.newText.split('\n').length }).catch(() => {})
|
api('POST', '/v1/feedback', { event: 'next-edit-accepted', lines: s.newText.split('\n').length }).catch(() => {})
|
||||||
|
nextEditAfterAccept('accepted-next-edit')
|
||||||
})
|
})
|
||||||
let nextEditTimer: NodeJS.Timeout | null = null
|
let nextEditTimer: NodeJS.Timeout | null = null
|
||||||
let nextEditAbort: AbortController | null = null
|
let nextEditAbort: AbortController | null = null
|
||||||
@@ -281,6 +282,15 @@ async function requestNextEdit(editor: vscode.TextEditor, reason: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Accepting a suggestion (next-edit or completion) asks for the follow-up right away instead of after the typing pause. */
|
||||||
|
function nextEditAfterAccept(reason: string) {
|
||||||
|
const editor = vscode.window.activeTextEditor
|
||||||
|
if (!editor || !modelSupportsNextEdit() || !settings().get<boolean>('nextEdit.afterAccept', true)) return
|
||||||
|
if (nextEditTimer) clearTimeout(nextEditTimer)
|
||||||
|
// Next tick: the accepted text and the cursor move have been applied by then.
|
||||||
|
nextEditTimer = setTimeout(() => void requestNextEdit(editor, reason), 0)
|
||||||
|
}
|
||||||
|
|
||||||
function scheduleNextEdit(editor: vscode.TextEditor, reason: string, delay: number) {
|
function scheduleNextEdit(editor: vscode.TextEditor, reason: string, delay: number) {
|
||||||
if (nextEditTimer) clearTimeout(nextEditTimer)
|
if (nextEditTimer) clearTimeout(nextEditTimer)
|
||||||
nextEditTimer = setTimeout(() => void requestNextEdit(editor, reason), delay)
|
nextEditTimer = setTimeout(() => void requestNextEdit(editor, reason), delay)
|
||||||
@@ -535,6 +545,7 @@ export async function activate(ctx: vscode.ExtensionContext) {
|
|||||||
vscode.commands.registerCommand('localAutocomplete.showLog', () => log.show()),
|
vscode.commands.registerCommand('localAutocomplete.showLog', () => log.show()),
|
||||||
vscode.commands.registerCommand('localAutocomplete.accepted', (requestId: string, text: string) => {
|
vscode.commands.registerCommand('localAutocomplete.accepted', (requestId: string, text: string) => {
|
||||||
api('POST', '/v1/feedback', { requestId, event: 'accepted', chars: text.length }).catch(() => {})
|
api('POST', '/v1/feedback', { requestId, event: 'accepted', chars: text.length }).catch(() => {})
|
||||||
|
nextEditAfterAccept('accepted-completion')
|
||||||
}),
|
}),
|
||||||
vscode.workspace.onDidChangeConfiguration(e => {
|
vscode.workspace.onDidChangeConfiguration(e => {
|
||||||
if (!e.affectsConfiguration('localAutocomplete')) return
|
if (!e.affectsConfiguration('localAutocomplete')) return
|
||||||
|
|||||||
Reference in New Issue
Block a user