Emacs - 加载模块后绑定密钥

时间:2016-01-17 16:23:18

标签: node.js emacs

我想为emacs设置Node.js键绑定REPL。我查看了nodejs-repl,现在我可以打开一个REPL并使用nodejs-send-region命令来执行代码。

但是我无法弄清楚如何将C-c C-e绑定到此命令。我认为我必须使用comint-mode(?)。我试过了:

(require 'nodejs-repl)

;; bind shortcuts when in node mode-line
(eval-after-load 'nodejs-repl
  (lambda () (local-set-key (kbd "C-c C-e") #'nodejs-repl-send-region)))

1 个答案:

答案 0 :(得分:2)

在加载库之后,您正在绑定当前本地的keymap中的键。加载库最有可能打开您确实要将键绑定到其键盘映射的模式。至少这是典型的,它对应于GNU Emacs coding conventions,其中说:

  

简单地加载包不应该改变Emacs的编辑        行为。包含一个或多个命令以启用和禁用        功能,或调用它。

     

此约定对于包含自定义的任何文件都是必需的        定义。如果修复此类文件以遵循此约定        需要进行不兼容的更改,继续进行并使其不兼容        更改;不要推迟它。

您要做的是使用(require 'nodejs-repl) (define-key nodejs-repl-mode-map (kbd "C-c C-e") #'nodejs-repl-send-region) 将键绑定到正确的键盘映射中,并且您希望在模式挂钩中执行此操作。

<html>
<head>
<title></title>
<script>
function MyFunction(id) {
  var xhttp;
  if (window.XMLHttpRequest) {
      xhttp = new XMLHttpRequest();
      } else {
      // code for IE6, IE5
      xhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      if(xhttp.responseText.indexOf("UPDATE WENT OK")!=-1)
        document.getElementById(id).nextSibling.innerHTML = "This account is approved";
      }
      else {
        document.getElementById(id).nextSibling.innerHTML = "An error occured while approving this account";
      }
    }
  xhttp.open("GET", "ajax_file.php?id="+id, true);
  xhttp.send();
}

</script>
</head>
<body>

<?php

if(!($database = mysql_connect("localhost","root","")) || !(mysql_select_db("st_login",$database)))
   print("Could not connect");
else {
  $result = mysql_query($database,"SELECT * FROM `login` WHERE `admin` = 0  AND `approval`=0");
  if(!$result){
    print("Could not execute query");
    die (mysql_error());//ose error
  }
  else{
    if(mysql_num_rows($result) == 0) {//esht aprovuar llogaria
      //nese  esht aprovuar logini i st.
      echo "You are approved";
   }
    else {               //approval=0
      echo"YOU HAVE NEW REQUESTS WAITING FOR APPROVAL IN YOUR WEBSITE!!!<br/>";
      while($query_row=mysql_fetch_assoc($result)){
        $firstname=$query_row['firstname'];
        $lastname=$query_row['lastname'];
        $username=$query_row['username'];
        $password=$query_row['password'];
        $email=$query_row['email'];
        $cv=$query_row['cv'];
        echo $firstname.'   '.$lastname.'  has this cv:'.$cv.'<br /> Do you want to approve his account?';
        ?><div class="container"><button id="<?php echo $query_row['id'];?>" onclick="MyFunction(this.id)">Yes</button><button>No</button><br />
        <p class="demo"></p></div><?php
      }
    }
  }
}
mysql_close($database);
?>
</body>
</html>