There are three issues that I see with your commmit: Issue-1: face-at-point broken? =============================== M-x toggle-debug-on-error RET M-x find-function RET face-at-point RET C-x w h C-x w r Debugger entered--Lisp error: (error "Not a face: nil") signal(error ("Not a face: nil")) error("Not a face: %s" nil) check-face(nil) face-name(nil) hi-lock--regexps-at-point() byte-code("\203\305C\207\306 \203. <\203.\n\203.\307\310\215\207 \204!\311\312!\210\313 \314\f\204-\315\2022\316\317\f@\" \320\305\320\211\f&)C\207" [current-prefix-arg last-nonmenu-event use-dialog-box hi-lock-interactive-patterns defaults t display-popup-menus-p snafu (byte-code "\301\302\303\304\305\306\"BB\"\206.\307\310\311\"\207" [hi-lock-interactive-patterns x-popup-menu t keymap "Select Pattern to Unhighlight" mapcar #[(pattern) "@\301\302@\303A@A@A@!#\304\211B@F\207" [pattern format "%s (%s)" symbol-name nil] 6] throw snafu ("")] 7) error "No highlighting to remove" hi-lock--regexps-at-point completing-read "Regexp to unhighlight: " format "Regexp to unhighlight (default %s): " nil] 8) call-interactively(unhighlight-regexp nil nil) The reason is faceprop happens to be a string (get-char-property (point) 'face) : "hi-yellow" Issue-2: Various issues with unhighlighting ============================================ Once you fix Issue-1 you will run in to other issues with un-highlighting. Try highlighting and UN-highlighting in following 3 ways 1. Buffer with font-lock-mode ON 2. Buffer with font-lock-mode OFF 3. Unhighlight from the menu Caveat: Extra testing needed if /type/ of face names are changed ================================================================= hi-lock-face-defautls is currently a list of face names (stringp). If it is made a defcustom, it will be cast to a list of symbols (symbolp). In some places, face names are expected and in some other places face as a symbol is used. So you need to re-run the tests if move from string->symbols. Suggestion: In default faces, don't mix bold and foreground/background ======================================================================= I am OK with defcustom of faces. Something like (defcustom hi-lock-face-defaults '(hi-yellow hi-pink hi-green hi-blue hi-black-b hi-blue-b hi-red-b hi-green-b hi-black-hb) "Default faces for hi-lock interactive functions." :type '(repeat face) :group 'hi-lock-faces) Bonus points if the default settings of the faces that go in there is revised as part of this bug. I want to highlight variables in a buffer. So consistent policy of highlighting - a changed background of normal face - will require no additional work. Here is how my own faces look like. Note that the first 4 come from "blue" space and the later 4 or so come from "pink" space, all chosen using agave. ps: I will let you install a change for the above issues.