@ 261030.1

260419.4 · 14f3ad493cf3e039835fc1e23256f95c8e2b73df

Move away from uniseg to faster clipperhouse/displaywidth

Use an intern string cache to reduce allocations.

This has improved correctness, and substantial performance improvements.

reading declarations

Changes to internal/widthutil/. All files

internal/widthutil/widthutil.go

new file mode 100644@@ -0,0 +1,31 @@+// Copyright 2026 The TCell Authors+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+//    http://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package widthutil++import (+	"os"+	"strings"++	"github.com/clipperhouse/displaywidth"+)++// Options returns the display-width options derived from the user's+// environment. We preserve the historical RUNEWIDTH_EASTASIAN toggle.+func Options() displaywidth.Options {+	if rw := strings.ToLower(os.Getenv("RUNEWIDTH_EASTASIAN")); rw == "1" || rw == "true" || rw == "yes" {+		return displaywidth.Options{EastAsianWidth: true}+	}+	return displaywidth.Options{}+}