mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-04-16 11:15:41 +02:00
79 lines
2.1 KiB
Java
79 lines
2.1 KiB
Java
/*
|
|
* Copyright 2022 The IdeaVim authors
|
|
*
|
|
* Use of this source code is governed by an MIT-style
|
|
* license that can be found in the LICENSE.txt file or at
|
|
* https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
package com.maddyhome.idea.vim.group;
|
|
|
|
import com.intellij.openapi.diagnostic.Logger;
|
|
import com.maddyhome.idea.vim.api.VimDigraphGroupBase;
|
|
import com.maddyhome.idea.vim.api.VimEditor;
|
|
import com.maddyhome.idea.vim.ex.ExOutputModel;
|
|
import com.maddyhome.idea.vim.helper.EditorHelper;
|
|
import com.maddyhome.idea.vim.newapi.IjVimEditor;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
public class DigraphGroup extends VimDigraphGroupBase {
|
|
|
|
public void showDigraphs(@NotNull VimEditor editor) {
|
|
int width = EditorHelper.getApproximateScreenWidth(((IjVimEditor) editor).getEditor());
|
|
if (width < 10) {
|
|
width = 80;
|
|
}
|
|
int colCount = width / 12;
|
|
int height = (int)Math.ceil((double) getDigraphs().size() / (double)colCount);
|
|
|
|
if (logger.isDebugEnabled()) {
|
|
logger.debug("width=" + width);
|
|
logger.debug("colCount=" + colCount);
|
|
logger.debug("height=" + height);
|
|
}
|
|
|
|
StringBuilder res = new StringBuilder();
|
|
int cnt = 0;
|
|
for (Character code : getKeys().keySet()) {
|
|
String key = getKeys().get(code);
|
|
|
|
res.append(key);
|
|
res.append(' ');
|
|
if (code < 32) {
|
|
res.append('^');
|
|
res.append((char)(code + '@'));
|
|
}
|
|
else if (code >= 128 && code <= 159) {
|
|
res.append('~');
|
|
res.append((char)(code - 128 + '@'));
|
|
}
|
|
else {
|
|
res.append(code);
|
|
res.append(' ');
|
|
}
|
|
res.append(' ');
|
|
if (code < 0x1000) {
|
|
res.append('0');
|
|
}
|
|
if (code < 0x100) {
|
|
res.append('0');
|
|
}
|
|
if (code < 0x10) {
|
|
res.append('0');
|
|
}
|
|
res.append(Integer.toHexString(code));
|
|
res.append(" ");
|
|
|
|
cnt++;
|
|
if (cnt == colCount) {
|
|
res.append('\n');
|
|
cnt = 0;
|
|
}
|
|
}
|
|
|
|
ExOutputModel.getInstance(((IjVimEditor) editor).getEditor()).output(res.toString());
|
|
}
|
|
|
|
private static final Logger logger = Logger.getInstance(DigraphGroup.class.getName());
|
|
}
|