Emacs Web模式选项卡无法正常工作

时间:2014-10-22 03:24:02

标签: emacs

我正在使用emacs web-mode来编辑我的php文件,并注意到tab键不能按照我预期的方式在几种不同的情况下工作。例如,如果我有一个跨越多行这样的字符串......

<?php
return "
<nav>
<a href='index.php?page=skills'>My skills and background</a>
<a href='index.php?page=projects'>Some projects</a>
</nav>
";
?>

然后我用锚标记转到行的开头,按Tab键没有任何反应。我必须使用空格键以我想要的方式缩进行。

另一种情况发生在php块内部,例如

<?php 
error_reporting( E_ALL );
ini_set( "display_errors", 1);
$pageData = new stdClass();
$pageData->title = "Jordan: Portfolio site";
$pageData->content = include_once "views/navigation.php";
$navigationIsClicked = isset($_GET['page']);
if($navigationIsClicked) {
    $fileToLoad = $_GET['page'];
    $pageData->content .= "<p>Will soon load $fileToLoad.php</p>";
}
$page = include_once "templates/page.php";
echo $page;
?>

如果我转到其中一个变量赋值行并且推送选项卡没有任何反应,则空格可以正常工作,然后在if块内只允许1个选项卡。有没有办法改变此模式在.emacs文件中使用选项卡的方式。我目前在我的.emacs中有这个

(defun my-setup-php ()
  ;; enable web mode
  (web-mode)

  ;; make these variables local
  (make-local-variable 'web-mode-code-indent-offset)
  (make-local-variable 'web-mode-markup-indent-offset)
  (make-local-variable 'web-mode-css-indent-offset)

  ;; set indentation, can set different indentation level for different code type
  (setq web-mode-code-indent-offset 4)
  (setq web-mode-css-indent-offset 2)
  (setq web-mode-markup-indent-offset 2))


(add-to-list 'auto-mode-alist '("\\.php$" . my-setup-php))

2 个答案:

答案 0 :(得分:2)

事实证明我的问题与网络模式完全无关。默认情况下emacs绑定到tab键的函数称为indent-for-tab-command我正在查找的函数名为tab-to-tab-stop,默认情况下绑定到M-i。这个website详细解释了tab键如何在emacs中工作以及如何自定义它。

答案 1 :(得分:0)

您应该尝试(setq-default indent-tabs-mode t)