⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 processmode.java

📁 A framework written in Java for implementing high-level and dynamic languages, compiling them into J
💻 JAVA
字号:
// Copyright (c) 2002  Per M.A. Bothner.// This is free software;  for terms and warranty disclaimer see ./COPYING.package gnu.jemacs.buffer;import gnu.mapping.*;import java.io.*;public class ProcessMode extends Mode{  protected Writer toInferior;  protected Marker processMark;  protected boolean lineMode = false;  static Procedure enterAction = new gnu.expr.PrimProcedure(gnu.bytecode.ClassType.make("gnu.jemacs.buffer.ProcessMode").getDeclaredMethod("enterAction", 0));  public static EKeymap modeMap = new EKeymap("process");  static  {    modeMap.defineKey("\n", enterAction);    modeMap.defineKey("\r", enterAction);    modeMap.defineKey("enter", enterAction);    modeMap.defineKey("return", enterAction);    Object insert = new ProcessInsertCommand();    //    modeMap.setDefaultBinding(insert);    modeMap.set(' ', 126, insert);    modeMap.set(128, 255, insert);  }  public Marker getProcessMark ()  {    return processMark;  }  public static void enterAction()  {    Buffer buffer = Buffer.getCurrent();    ProcessMode pmode = getProcessMode(buffer);    pmode.enter();  }  public void enter()  {    try      {	if (lineMode)	  {	    buffer.insert('\n', 1, null);	    int pos = buffer.getDot();	    int markPos = processMark.getOffset();	    buffer.writeTo(markPos, pos - markPos, toInferior);	    processMark.setDot(pos);	  }	else	  toInferior.write('\r');	toInferior.flush();      }    catch (Exception ex)      {        throw new WrappedException(ex);      }  }  public static ProcessMode getProcessMode(Buffer buffer)  {    for (Mode mode = buffer.modes;  ;  mode = mode.next)      {	if (mode == null)	  Signal.error("not in process mode");	if (mode instanceof ProcessMode)	  return (ProcessMode) mode;      }  }  public void writeToInferior(gnu.lists.CharSeq str)    throws java.io.IOException  {    str.writeTo(toInferior);    toInferior.flush();  }  public void selfInsert()  {    EWindow window = EWindow.getSelected();    insert((char) window.pendingKeys[window.pendingLength], 1);  }  public void insert(char ch, int count)  {    if (! lineMode)      {	try	  {	    while (--count >= 0)	      toInferior.write(ch);	    toInferior.flush();	  }	catch (Exception ex)	  {	    throw new WrappedException(ex);	  }      }    else      buffer.insert(ch, count);  }  /**   *    * @param doRun   */  public void invoke(Runnable doRun)   {    buffer.invoke(doRun);  }}class ProcessInsertCommand extends Procedure0{  public Object getProperty (Object key, Object defaultValue)  {    if (key == "emacs-interactive")      return "*";    return super.getProperty(key, defaultValue);  }  public Object apply0 ()  {    EWindow window = EWindow.getSelected();    Buffer buffer = window.buffer;    ProcessMode pmode = ProcessMode.getProcessMode(buffer);    pmode.insert((char) window.pendingKeys[window.pendingLength], 1);    return Values.empty;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -