タグ付けされた質問 「overlays」

2
オーバーレイとは何ですか?また、テキストプロパティとどのように違いますか?
手動の状態: プレゼンテーション機能のために、オーバーレイを使用して、画面上のバッファのテキストの外観を変更できます。 その名前から、既存のテキストの上に「レイヤー」を作成するために使用できることが示唆されていますが、上記の説明は、テキストの外観を変更することを示しているようです。 オーバーレイの具体的な使用とは何ですか?彼らは、テキストプロパティが提供しないことを何を提供しますか?ポップアップ、情報ボックスなど、バッファ内のテキストにテキストを上書きするために使用できますか?

2
フレームの下部に沿って単語のリストを表示しますか?
私は開いているすべてのemacsフレームの下部に沿って水平に別々の行に3つの単語のリストを表示したいと思います(上部も機能しますが)。私はこれを行う6つの方法を考えましたが、それらにはすべて問題があります: 最初に考えたのは、モード行に行を追加することでしたが、モード行で改行文字を使用することはできません。「^ J」に変換されるだけです。 私の2番目の考えは、画面の上部に行を持ち、ヘッダー行を使用することでしたが、改行文字もサポートしていません。 ウィンドウの最後の3行にオーバーレイを表示できましたが、これを堅牢にするのは難しいようです。ウィンドウの実際の端ではなく、ポイントがオーバーレイに達したときにスクロールをトリガーする必要があり、常に再配置する必要がありますオーバーレイはウィンドウスペースではなくテキストスペースにあるため、オーバーレイ。 フレームの下部に専用の窓を作ってみることができました。私はこれをコーディングしようとしましたが、あまり堅牢ではありません。フレームにすでに分割ウィンドウが含まれていて、Cx、1を無視するカスタムバージョンのdelete-other-windowsに再バインドする必要がある場合、正しく動作しないようです私の特別な窓と私は他のコーナーケースがあると確信しています。また、ヘルプウィンドウが開くと、水平方向の分割が既にあると考えられるため、垂直方向に開きます(技術的には存在しますが、1行のウィンドウのみを表示します)。 これに専用のフレームを用意することもできますが、その場合、設定はターミナルモードで動作しません。また、ウィンドウマネージャーのスクリプトを作成して、画面の下部に沿って保持し、選択不能にしてレイアウトに影響を与えないようにする必要があります。などなど 3行のテキストを直接ミニバッファーに挿入できます。これが部分的に機能するようになったので、ミニバッファーを増やして3行を収容し、表示できます。ただし、メッセージがエコーされるたびに、別のコマンドを発行して行が再表示されるまで、行は消えます。理想的には、3本の線とエコーエリアが重ならないので、両方を見ることができます。どのメッセージをエコーエリアに送信するかを確実にフィルタリングできれば、これは面倒ではありません-EmacsWikiで解決策を見つけましたが、emacs Cソースに由来するメッセージでは機能しないようです(具体的には、タイマーで頻繁に自動保存するため、メッセージを保存するファイルを取り除きます)。 コンテキストに関して、私の目標は、現在のバッファーで最も頻繁に使用される単語、現在のバッファーで最も近いポイント、および現在のバッファーで最近使用された単語を常に表示することです。私は音声コマンドを介してそれらをバッファに挿入できるようにするつもりです。したがって、「最近接2」と言って、ポイントに最も近い単語のリストから2番目の項目を選択して挿入することができます。私は、現在編集しているバッファが何であれ、単語リストが表示されることだけに関心があります。リストが常に表示される必要があるため、さまざまなコード補完モードで使用されるポップアップウィンドウを使用したくありません。

5
控えめにテキストのレンダリングを変える方法は?
音声認識で使用するためのemacs拡張機能を作成しています。特定の機能に関するヘルプを探しています。音声認識エンジン(Dragon)が一貫して認識できない単語もあります。何回訓練してもかまいませんが、特定の単語を認識するのは簡単ではありません。通常、トピックについて書いているときやコーディングしているときは、同じ単語を何度も何度も使用します。 そのため、オーバーレイを使用して、バッファ内の単語のレンダリング方法を変更するモードを作成しました。単語にランダムな文字を使用し、ランダムな色で下線を引き、その上にランダムな発音区別符号(アクセント、ウムラウトなど)を付けます。以下にスクリーンショットを示します(おそらく、マーク/下線を表示するにはズームする必要があります)。 次に、「purple p hair」と言うと、「a」の下に紫色の下線が付いた単語が検索されます。そのため、上記のスクリーンショットでは、emacsが「regexp-quote」と入力してしまうと言っています。 これにより、認識機能が一貫して認識に優れている有限の単語セットを使用して、画面上にある既に使用した単語を参照できます。 たまに衝突が発生する場合を除き、非常にうまく機能します。それを行うために(random)、衝突を回避するようにアルゴリズムを変更する代わりに、またはアルゴリズムに変更を割り当てることで、単語のmd5ハッシュからのバイトを使用するのと同じ方法で一貫して単語を参照することを学ぶことができます。私は6つの簡単に区別できる色(下線が1文字幅で1ピクセルの太さだけでは難しい)と3つの簡単に区別できる発音区別記号(互いに区別しやすく、上記の下線と混同しにくい)だけを見つけました線または下線と重なる)、上のソースの上部に表示されます。 衝突の頻度を減らすために、レンダリングを変更する方法がもっと必要です。理想的には、レンダリングの変更は次のようになります。 テキストの残りの部分から不快にならないでください。これにより、たとえば、inverse-videoプロパティを却下することになりました。 他の変更と簡単に混同しないでください。上線は、前の行の下線と間違えやすい。フォントサイズが非現実的に大きくない限り、多くの発音区別符号は似ています。 他の変更がある場所の空間的に近くにあります。今、目がターゲティングキャラクターを見つけると、すべての情報、マーカー、下線、文字がそこにあります。 ダイアクリティカルマークを正しくレンダリングする固定幅フォント(コーディングに必要)でうまく動作します(マークを正しくレンダリングするには、ConsolasからDejaVu Sans Monoに切り替える必要がありました) ラテン系のアルファベット文字に取り組みます。たとえば、アラビア語の結合マークがありますが、ラテンアルファベット文字では結合しません。 文字の色は変更しないでください。これは既に構文の強調表示に使用されているためです。 実際、emacs lispを使用してemacsで実行可能になります;) レンダリングを制御する特殊なUnicode文字が悪用されて、新しい可能性が開かれる可能性がありますか?または、より多くの色を簡単に区別できるように下線を太くする方法はありますか?または、Unicode以外の文字の上にマークをレンダリングできる他のあいまいなemacs機能がありますか?


2
プロパティ化/オーバーレイするテキストがないウィンドウの場所に一時的なテキストがありますか?
Q:ウィンドウの画面の位置にテキストを表示せずに一時的にテキストを表示/オーバーレイするにはどうすればよいですか? 私はテキストプロパティとオーバーレイの背後にある基本的な考え方に精通しており(このスレッドも参照)、それらを何度か使用していますが、決してそれに慣れているわけではありません。私の限られた理解は、プロパティ化またはオーバーレイするにはテキストが必要であるということですが、テキストが含まれていないウィンドウのセクションをどのように使用するのか疑問に思っています。 次に例のスクリーンショットを示します。 スクリーンショットの赤いボックスの1つ(つまり、テキストの右側、またはバッファーの最後の行の下)に(一時的に)テキストを配置するにはどうすればよいでしょうか。

1
不透明なテーマの背景?またはテーマコールバック?
関連する2つの質問 emacsでテーマを設定しながら不透明度を使用することはできますか?たとえば、適用される要素の背景色に青色の25%を追加するテーマを定義することを意味します。または、フォントを30%軽量化します。 または、そうでない場合。 メインのカスタムテーマが変更されるたびに、一部のテーマプロパティを動的に再計算することは可能ですか? バックグラウンド このようなことは、さまざまな「マークの追加」モードに最適です。具体的に言うと、flycheck-error faceです。テキストに下線を引く代わりに背景にわずかに赤いアクセントを付けると、侵襲性が低下します。 しかし、私の主なケースはクロスヘアモード(現在の行と現在の列の強調表示を組み合わせたもの)です。デフォルトとは少し異なる背景を使用するように設定しました。これにより、カーソルの位置がわかりやすく表示されます。しかし、テーマを頻繁に切り替え始めると、適切な色は現在の背景に依存するため、迷惑であることがわかりました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.