(defun kill-word-or-delete-horizontal-space (arg)
(interactive "p")
(let *1 (char-syntax (char-after (1+ pos))))
(if (and (not (eobp))
(= (char-syntax (char-after pos)) 32);;32=" "=whitespace class
(= (char-syntax (char-after (1+ pos))) 32))
(prog1 (delete-horizontal-space)
;; (unless (memq (char-after pos) '(?( ?) ?{ ?} ?[ ?]))
;; (insert " "))
)
(if (eolp)
;;(= (char-syntax (char-after pos)) 62);;62=">"=comment ender=\n
(kill-line)
(kill-word arg)))))
(defun backward-kill-word-or-delete-horizontal-space (arg)
(interactive "p")
(let *2
(= (char-syntax (char-after pos)) 32);;32=" "=whitespace class
(= (char-syntax (char-after (1- pos))) 32))
(prog1 (delete-horizontal-space)
;; (unless (memq (char-after pos) '(?( ?) ?{ ?} ?[ ?]))
;; (insert " "))
)
(if (bolp)
;;(= (char-syntax (char-after pos)) 62);;62=">"=comment ender=\n
(progn
(kill-line)
(backward-char))
(backward-kill-word arg)))))

(global-set-key (kbd "M-d") 'kill-word-or-delete-horizontal-space)
(global-set-key (kbd "M-h") 'backward-kill-word-or-delete-horizontal-space)

*1:pos (point))) ;;(message "%s:%s" (char-syntax (char-after pos

*2:pos (point))) ;;(message "%s:%s" (char-to-string (char-syntax (char-after pos))) (char-syntax (char-after (1+ pos)))) (if (and (not (bobp