5252 (setq index (1+ index)))
5353 is-empty))
5454
55+ (defun docstr-writers--function-name (search-string )
56+ " Analyze SEARCH-STRING to get function name."
57+ (let ((pos (docstr-util-last-regex-in-string " (" search-string)) fn-str)
58+ (when pos
59+ (setq fn-str (substring search-string 0 pos)
60+ fn-str (split-string fn-str " " t )
61+ fn-str (nth (1- (length fn-str)) fn-str)))
62+ (if (stringp fn-str) (string-trim fn-str) nil )))
63+
5564(defun docstr-writers--return-type (search-string )
5665 " Analyze SEARCH-STRING to get return type.
5766This is for c-like programming languages."
@@ -106,9 +115,11 @@ or with default value
106115 (param-type-str-lst '()) (param-var-str-lst '())
107116 param-types param-vars
108117 (result-datas '()))
109- (setq param-string (docstr-writers--analyze-param-string search-string))
118+ (setq param-string
119+ (ignore-errors (docstr-writers--analyze-param-string search-string)))
110120
111- (setq param-lst (split-string param-string " ," ))
121+ (when (stringp param-string)
122+ (setq param-lst (split-string param-string " ," )))
112123 (when (docstr-writers--param-empty-p param-lst)
113124 (setq param-lst '()))
114125
@@ -173,9 +184,11 @@ the last word only."
173184 (param-type-str-lst '()) (param-var-str-lst '())
174185 param-types param-vars
175186 (result-datas '()))
176- (setq param-string (docstr-writers--analyze-param-string search-string))
187+ (setq param-string
188+ (ignore-errors (docstr-writers--analyze-param-string search-string)))
177189
178- (setq param-lst (split-string param-string " ," ))
190+ (when (stringp param-string)
191+ (setq param-lst (split-string param-string " ," )))
179192 (when (docstr-writers--param-empty-p param-lst)
180193 (setq param-lst '()))
181194
@@ -232,7 +245,7 @@ Argument PREFIX is string infront of each document string."
232245Argument RETURN-TYPE-STR is a string contain return type name. Argument
233246IGNORE-LST is a list of string contain return type that we want to skip.
234247Argument PREFIX is string infront of each document string."
235- (when (and (not ( string-empty-p return-type-str) )
248+ (when (and (stringp return-type-str)
236249 (not (docstr-util-is-contain-list-string ignore-lst return-type-str)))
237250 (insert prefix)
238251 (insert (docstr-form-return return-type-str " " docstr-desc-return))))
@@ -256,6 +269,22 @@ Argument START is the starting point ot the insertion."
256269 (docstr-writers--insert-return return-type-str '(" void" ) prefix)
257270 (docstr-writers-after start)))
258271
272+ (defun docstr-writers-c (search-string )
273+ " Insert document string for C using SEARCH-STRING."
274+ (docstr-writers-c++ search-string))
275+
276+ (defun docstr-writers-c++ (search-string )
277+ " Insert document string for C++ using SEARCH-STRING."
278+ (let* ((start (point )) (prefix " \n * " )
279+ (paren-param-list (docstr-writers--paren-param-list search-string))
280+ (param-types (nth 0 paren-param-list))
281+ (param-vars (nth 1 paren-param-list))
282+ ; ; Get the return data type.
283+ (return-type-str (docstr-writers--return-type search-string)))
284+ (docstr-writers--insert-param param-types param-vars prefix)
285+ (docstr-writers--insert-return return-type-str nil prefix)
286+ (docstr-writers-after start)))
287+
259288(defun docstr-writers-java (search-string )
260289 " Insert document string for Java using SEARCH-STRING."
261290 (let* ((start (point )) (prefix " \n * " )
0 commit comments