From 535fd9754ebc5ad346128c6e9d3b948dbed9bea0 Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Tue, 27 Jan 2026 22:05:01 -0600 Subject: [PATCH 1/6] Also apply fixes for PHP autocompletion Uses the work from @siliconforks, and adds a fix for PHP editors. --- src/js/_enqueues/wp/code-editor.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 68365d7d1cd56..359b76387be21 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -320,7 +320,8 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { '/' === event.key && 'tag' === token.type || isAlphaKey && 'tag' === token.type || isAlphaKey && 'attribute' === token.type || - '=' === token.string && token.state.htmlState && token.state.htmlState.tagName; + '=' === event.key && + '=' === token.string && token.state.curState && token.state.curState.htmlState && token.state.curState.htmlState.tagName; } else if ( 'css' === innerMode ) { shouldAutocomplete = isAlphaKey || @@ -329,7 +330,7 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { } else if ( 'javascript' === innerMode ) { shouldAutocomplete = isAlphaKey || '.' === event.key; } else if ( 'clike' === innerMode && 'php' === codemirror.options.mode ) { - shouldAutocomplete = 'keyword' === token.type || 'variable' === token.type; + shouldAutocomplete = isAlphaKey && ( 'keyword' === token.type || 'variable' === token.type ); } if ( shouldAutocomplete ) { codemirror.showHint( { completeSingle: false } ); From 4447d46993c94d4fffc439b63850da9faad785ec Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 27 Jan 2026 21:10:01 -0800 Subject: [PATCH 2/6] Use optional chaining operator --- src/js/_enqueues/wp/code-editor.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 359b76387be21..6cad53e50c65f 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -2,6 +2,9 @@ * @output wp-admin/js/code-editor.js */ +/* jshint esversion: 11 */ +/* eslint-env es2020 */ + if ( 'undefined' === typeof window.wp ) { /** * @namespace wp @@ -320,8 +323,9 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { '/' === event.key && 'tag' === token.type || isAlphaKey && 'tag' === token.type || isAlphaKey && 'attribute' === token.type || - '=' === event.key && - '=' === token.string && token.state.curState && token.state.curState.htmlState && token.state.curState.htmlState.tagName; + '=' === event.key && + '=' === token.string && + token.state.curState?.htmlState?.tagName; } else if ( 'css' === innerMode ) { shouldAutocomplete = isAlphaKey || From 382a3f193940cfada4152595695b299cef8476d0 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 27 Jan 2026 21:20:12 -0800 Subject: [PATCH 3/6] Add parentheses to conditions for readability and avoiding logic errors --- src/js/_enqueues/wp/code-editor.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 6cad53e50c65f..813b23a644f5c 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -318,19 +318,18 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { innerMode = wp.CodeMirror.innerMode( codemirror.getMode(), token.state ).mode.name; lineBeforeCursor = codemirror.doc.getLine( codemirror.doc.getCursor().line ).substr( 0, codemirror.doc.getCursor().ch ); if ( 'html' === innerMode || 'xml' === innerMode ) { - shouldAutocomplete = + shouldAutocomplete = ( '<' === event.key || - '/' === event.key && 'tag' === token.type || - isAlphaKey && 'tag' === token.type || - isAlphaKey && 'attribute' === token.type || - '=' === event.key && - '=' === token.string && - token.state.curState?.htmlState?.tagName; + ( '/' === event.key && 'tag' === token.type ) || + ( isAlphaKey && 'tag' === token.type ) || + ( isAlphaKey && 'attribute' === token.type ) || + ( '=' === event.key && '=' === token.string && token.state.curState?.htmlState?.tagName ) + ); } else if ( 'css' === innerMode ) { shouldAutocomplete = isAlphaKey || ':' === event.key || - ' ' === event.key && /:\s+$/.test( lineBeforeCursor ); + ( ' ' === event.key && /:\s+$/.test( lineBeforeCursor ) ); } else if ( 'javascript' === innerMode ) { shouldAutocomplete = isAlphaKey || '.' === event.key; } else if ( 'clike' === innerMode && 'php' === codemirror.options.mode ) { From 1311d395cbeb51509a25cbfda400f90df07f34f6 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Wed, 28 Jan 2026 09:28:55 -0800 Subject: [PATCH 4/6] Remove obsolete jshint comment after Core-64562 (97b09c8) --- src/js/_enqueues/wp/code-editor.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 813b23a644f5c..ddb178b6c14c0 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -2,7 +2,6 @@ * @output wp-admin/js/code-editor.js */ -/* jshint esversion: 11 */ /* eslint-env es2020 */ if ( 'undefined' === typeof window.wp ) { From 8cd4589832554cb12141084e13473336f6944a16 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sun, 1 Feb 2026 16:44:38 -0800 Subject: [PATCH 5/6] Update tagName check Co-authored-by: siliconforks --- src/js/_enqueues/wp/code-editor.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index ddb178b6c14c0..3d57c62ea569b 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -322,7 +322,10 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { ( '/' === event.key && 'tag' === token.type ) || ( isAlphaKey && 'tag' === token.type ) || ( isAlphaKey && 'attribute' === token.type ) || - ( '=' === event.key && '=' === token.string && token.state.curState?.htmlState?.tagName ) + ( '=' === event.key && '=' === token.string && ( + token.state.htmlState?.tagName || + token.state.curState?.htmlState?.tagName + ) ) ); } else if ( 'css' === innerMode ) { shouldAutocomplete = From b5997a818330960068fa79428eb847eeb7485459 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Mon, 2 Feb 2026 11:26:26 -0800 Subject: [PATCH 6/6] Remove redundant check --- src/js/_enqueues/wp/code-editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 3d57c62ea569b..4266f392929a4 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -322,7 +322,7 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { ( '/' === event.key && 'tag' === token.type ) || ( isAlphaKey && 'tag' === token.type ) || ( isAlphaKey && 'attribute' === token.type ) || - ( '=' === event.key && '=' === token.string && ( + ( '=' === event.key && ( token.state.htmlState?.tagName || token.state.curState?.htmlState?.tagName ) )