Notepad++ : Custom Syntax Highlighting for .txt files

坚强是说给别人听的谎言 提交于 2019-12-10 14:13:29

问题


I keep code samples that I find useful as text files on my computer. I store them as txt files as opposed to the language in which they are written, so that they will open in Notepad++ instead of the editor (i.e. I don't want my c++ examples to open in an IDE, just Notepad).

Is there a way I can have Notepad++ apply appropriate syntax highlighting to the text file by reading a special code in the text file itself?

For example if I had some sql, the first line of the text file could read like this:

##Language=SQL 

... my sql code properly highlighted as sql ...

Thanks in advance. I realize I could just choose the language after opening the file (i.e. Language > SQL), but it would be much more convenient if it could do it automatically.


回答1:


No, it can't. You can choose it manually or use special file type extensions which you then associate with Notepad++ and tell it to highlight the files as the appropriate language.

For example, use .txtsql files for SQL, .txtcpp files for C++ and so on.




回答2:


I'd suggest giving them the proper file extensions, then import something like this into your registry:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\NotepadPlusPlus]

[HKEY_CLASSES_ROOT\*\shell\NotepadPlusPlus\command]
@="C:\\path\\to\\notepad++.exe \"%1\""

Then you can open your files in NP++ with a quick right-click, and NP++ will be able to auto-detect the right language based on the file extension.




回答3:


Manual selection is a much simpler way. Store all the files in .txt format (irrespective of java or C or C++). Open the file in Notepad++ and select the corresponding language in the Menu. e.g. Language --> Java.




回答4:


I ended up writing it myself:

  1. You need the Python plugin

  2. Add the code below to your startup.py file

  3. Switch your Python Initialization setting from "LAZY" to "ATSTARTUP"

  4. For a step by step solution, see my blog.


#if found determine the menu command and switch language in NPP
def switch_language_view(args):
    notepad.activateBufferID(args["bufferID"])
    lineone = editor.getLine(0)
    if '##' in lineone:
        lineone = lineone[lineone.rfind('##'):].replace('##', '')
        lineone = "MENUCOMMAND." + lineone.upper()
        try:
            notepad.menuCommand( eval(lineone) )
        except:
            pass

#command to link notification
notepad.callback(switch_language_view, [NOTIFICATION.FILEOPENED])




回答5:


You could try some npp scripting,

python

lua

and/or hacking macros. you could make the script start conditionally, check your special string and select the language for you.



来源:https://stackoverflow.com/questions/1877646/notepad-custom-syntax-highlighting-for-txt-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!