1

I have a buffer with name *fsharp info* which I want to change (programmatically) the mode from help-mode to my custom mode.

I created a simple major mode fsharp-info-mode to highlight fsharp documentation using markdown's font-lock.

(define-derived-mode fsharp-info-mode help-mode "fsharp-info-mode"
  "major mode for fsharp info."
  (setq font-lock-defaults '(markdown-mode-font-lock-keywords)))

With no success, I tried to enable it to the buffer with name *fsharp info* using

(add-to-list 'auto-mode-alist '("\\*fsharp info\\*" . fsharp-info-mode))

Looking in fsharp-mode, I discovered that the use with-help-window to create *fsharp info*. In the documentation, it says that help-mode is activate in the buffer (maybe that is why I can't change?)

EDIT:

I solved my problem temporarily advising fsharp-ac/show-info-window which is the function called by fsharp-mode to display the documentation.

(defadvice fsharp-ac/show-info-window (after fsharp-ac/show-info-window-after activate)
  (save-excursion
    (switch-to-buffer "*fsharp info*")
    (fsharp-info-mode)))

1 Answers1

1

You don't describe or provide a link to information about fsharp-mode. But if that mode (what buffer(s) is it used in?) creates a buffer *fsharp-info* and puts it in help-mode then presumably that's the mode it should be in, no?

You can add a function to help-mode-hook that changes the major mode, if you like. The function would check that the buffer name is, say, *fsharp-info*, and if so then it would invoke your fsharp-info-mode instead of help-mode.

I'm guessing that's not a great idea, and there is likely a good reason fsharp-mode puts the buffer in help-mode.

Another possibility is to define a minor mode, and have a help-mode-hook function turn that on in buffer *fsharp-info*. In that case the major mode would still be help-mode, but your fsharp-info-mode would be a minor mode, active at the same time.

Drew
  • 75,699
  • 9
  • 109
  • 225