请问有谁成功在eglot或者lsp-bridge上配置了tailwindcss-language-server?

我是通过 npm install -g @tailwindcss/language-server 安装的服务

试了几个lsp包,包括eglot,lsp-mode,lsp-bridge,只有lsp-mode可以成功补全tailwindcss的信息,但lsp-mode用的却又不是tailwindcss-language-server,而是自己下载的 tailwindcss/extension/dist/tailwindServer.js,这应该是vscode同款扩展

这是我的最小化配置

(setq package-archives
      '(("melpa"  . "https://melpa.org/packages/")
        ("org"    . "https://orgmode.org/elpa/")
        ("gnu"    . "https://elpa.gnu.org/packages/")
        ("nongnu" . "https://elpa.nongnu.org/nongnu/"))
      package-enable-at-startup nil)

(package-initialize)
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

(use-package evil
  :hook (prog-mode . evil-mode))

(use-package corfu
  :hook (prog-mode . corfu-mode)
  :custom
  (corfu-auto t)
  (corfu-auto-prefix 1)
  :config
  (use-package cape
    :demand
    :custom
    (completion-at-point-functions (list (cape-capf-super 'cape-file 'cape-dabbrev 'cape-abbrev 'cape-keyword)))))

(use-package web-mode
  :mode
  ("\\.\\(xml\\|html?\\)$" . web-mode))

(defvar maple-lsp 'lsp-bridge)

(pcase maple-lsp
  ('eglot
   (use-package eglot
     :hook (web-mode . eglot-ensure)
     :config

     (defun eglot-tailwindcss-options (server)
       `(:emmetCompletions
         t
         :experimental (:configFile ,(expand-file-name "tailwind.config.js" (project-root (eglot--project server))))))

     (add-to-list 'eglot-server-programs
                  '(web-mode . ("tailwindcss-language-server" "--stdio" :initializationOptions eglot-tailwindcss-options))))

   )
  ('lsp-mode
   (use-package lsp-mode
     :hook (web-mode . lsp-deferred)
     :custom
     (lsp-completion-provider :none))

   (use-package lsp-tailwindcss
     :hook (web-mode . (lambda () (require 'lsp-tailwindcss)))
     :custom
     (lsp-tailwindcss-add-on-mode t))
   )
  ('lsp-bridge
   (use-package lsp-bridge
     :load-path "site-lisp/lsp-bridge"
     :autoload (lsp-bridge-mode)
     :hook (web-mode . (lambda()
                          (when (bound-and-true-p corfu-mode) (corfu-mode -1))
                          (lsp-bridge-mode)))
     :custom
     (acm-enable-yas nil)
     (lsp-bridge-python-command (expand-file-name "versions/lsp-bridge/bin/python3" (getenv "PYENV_ROOT")))
     (lsp-bridge-multi-lang-server-mode-list
      '(((web-mode) . "html_tailwindcss"))))))

(provide 'init)
;;; init-test.el ends here

我也尝试把 tailwindcss-language-server --stdio 修改成 lsp-tailwindcss 的同款命令也还是不行

node /xxx/.emacs.d/.cahce/lsp/tailwindcss/extension/dist/tailwindServer.js --stdio

eglot 里的输出日志是

No matching project for document ....

lsp-bridge 里的输出日志是

Got completion candidates (0) from 'tailwindcss' for file index.html

有大佬知道这是什么情况以及怎么处理吗?

taiwindcss挑languageId, 这个不对,它就拒绝返回补全。

languageId根据项目不同而不同,你可以改改lsp-bridge关于tailwindcss的languageId

我试了一下,通过修改 lsp-bridge/langserver/tailwindcss.json 里的 languageId

或者添加配置

(setq lsp-bridge-get-language-id
      (lambda (project-path file-path server-name extension-name)
        (when (string-equal server-name "tailwindcss")
          (cond ((string-equal extension-name "html") "html")
                ((string-equal extension-name "vue") "typescript")
                (t ""))))
      )

最后结果还是不行

项目也是很简单的一个测试项目

test-tailwindcss
├── index.html
├── node_modules
├── package-lock.json
├── package.json
└── tailwind.config.js

package.json

{
  "devDependencies": {
    "tailwindcss": "^3.4.17"
  },
  "dependencies": {
    "@tailwindcss/cli": "^0.1.2"
  }
}

tailwind.config.js

/** @type {import('tailwindcss').Config} */
export default {
    content: [
        "./index.html",
    ],
    theme: {
        extend: {},
    },
    plugins: [
    ],
}

你改的啥?

npm install了吗?

项目是git项目吗?

我创建了一个测试仓库,大佬有时间能否帮忙看一下

提issue吧,旅游中,论坛容易忘记