aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--oni-eshell.el5
-rw-r--r--oni-logview.el38
-rw-r--r--oni-php/oni-php.el92
-rw-r--r--oni-php/snippets/php-mode/namespace6
-rw-r--r--oni-sql.el43
5 files changed, 162 insertions, 22 deletions
diff --git a/oni-eshell.el b/oni-eshell.el
index 6e01ad1..dae024b 100644
--- a/oni-eshell.el
+++ b/oni-eshell.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2025.1222.160029
+;; Version: 2026.0407.092049
;; Package-Requires: (eshell-fringe-status esh-autosuggest xterm-color eshell-syntax-highlighting)
;; This program is free software; you can redistribute it and/or modify
@@ -132,7 +132,8 @@ DIRECTORY should be a directory that exists within CURRENT-PATH."
(zero-or-more any)))
(matches (directory-files current-path nil dir-rx)))
(when (= (length matches) 1)
- (throw 'result current-directory))))))
+ (throw 'result current-directory))))
+ directory))
(defun oni-eshell-shorten-directory (directory)
"Shorten DIRECTORY to the shortest unique names of each directory."
diff --git a/oni-logview.el b/oni-logview.el
new file mode 100644
index 0000000..bc2c526
--- /dev/null
+++ b/oni-logview.el
@@ -0,0 +1,38 @@
+;;; oni-logview.el --- LogView configuration -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2026 Tom Willemse
+
+;; Author: Tom Willemse <tom@ryuslash.org>
+;; Keywords: local
+;; Version: 2026.0402.162536
+;; Package-Requires: (logview)
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; My logview configuration.
+
+;;; Code:
+
+(require 'map)
+(require 'logview)
+
+(setf (map-elt logview-additional-submodes "Laravel")
+ '((format . "[TIMESTAMP] NAME.LEVEL:")
+ (levels . "RFC 5424")
+ (timestamp)))
+
+(provide 'oni-logview)
+;;; oni-logview.el ends here
diff --git a/oni-php/oni-php.el b/oni-php/oni-php.el
index 36bf76f..1415d2b 100644
--- a/oni-php/oni-php.el
+++ b/oni-php/oni-php.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2026.0331.120917
+;; Version: 2026.0407.170526
;; Package-Requires: (oni-yasnippet oni-flycheck oni-company oni-hydra oni-smartparens ggtags fic-mode company-php rainbow-delimiters rainbow-identifiers)
;; This program is free software; you can redistribute it and/or modify
@@ -103,14 +103,26 @@ nil for some reason."
(insert "use " class ";\n")
(pulse-momentary-highlight-region start (point)))))))
+(defun oni-php--syntax-in-string-p (syntax)
+ "Does SYNTAX indicate point is inside a string?"
+ (nth 3 syntax))
+
+(defun oni-php--syntax-in-comment-p (syntax)
+ "Does SYNTAX indicate point is inside a comment?"
+ (nth 4 syntax))
+
+(defun oni-php--in-string-or-comment-p ()
+ "Return whether or not point is within a string or comment."
+ (let ((syntax (syntax-ppss)))
+ (or (oni-php--syntax-in-string-p syntax)
+ (oni-php--syntax-in-comment-p syntax))))
+
(defun oni-php-insert-dot-dwim (N)
"Insert either a concatenation or access operator depending on context.
Do the insert N times."
(interactive "p")
- (if (or (let ((syntax (syntax-ppss)))
- (or (nth 3 syntax)
- (nth 4 syntax)))
+ (if (or (oni-php--in-string-or-comment-p)
(save-excursion
(skip-syntax-backward " ")
(nth 3 (syntax-ppss (1- (point)))))
@@ -118,7 +130,11 @@ Do the insert N times."
(skip-syntax-forward " ")
(nth 3 (syntax-ppss (1+ (point))))))
(self-insert-command N)
- (dotimes (_ N) (insert "->"))))
+ (let ((op (if (looking-back (rx (or "$" ")") (zero-or-more (any whitespace "\n" alnum "(" ")" "->")))
+ (save-excursion (backward-paragraph) (point)))
+ "->"
+ "::")))
+ (dotimes (_ N) (insert op)))))
(defun oni-php-doc-comment ()
"Insert a PHP documentation comment at point."
@@ -130,18 +146,52 @@ Do the insert N times."
(indent-region start (point))
(goto-char insert-marker))))
+(defun oni-php-doc-use-comment ()
+ "Insert a PHP documentation comment for a use statement."
+ (interactive)
+ (let ((start (point))
+ (class (save-excursion
+ (save-match-data
+ (search-forward-regexp (rx "use " (group (minimal-match (zero-or-more alnum))) ";"))
+ (match-string 1)))))
+ (insert "/**\n * @use " class)
+ (let ((insert-marker (point-marker)))
+ (insert "\n */")
+ (indent-region start (point))
+ (goto-char insert-marker))))
+
(defun oni-php-comment-dwim (func &rest args)
"See if a PHP documentation comment should be added and add it.
Otherwise call FUNC with ARGS. This is meant as advice around
‘comment-dwim’ to make it smarter for PHP code."
- (if (and (derived-mode-p 'php-mode)
- (not (region-active-p))
- (looking-back (rx (minimal-match (zero-or-more blank))) (line-beginning-position))
- (looking-at (rx (minimal-match (zero-or-more (any whitespace "\n")))
- (or (regexp php-beginning-of-defun-regexp)
- (regexp php--re-classlike-pattern)))))
- (oni-php-doc-comment)
- (apply func args)))
+ (cond ((looking-at (rx (minimal-match (zero-or-more (any whitespace "\n")))
+ "use "))
+ (oni-php-doc-use-comment))
+ ((and (derived-mode-p 'php-mode)
+ (not (region-active-p))
+ (looking-back (rx (minimal-match (zero-or-more blank))) (line-beginning-position))
+ (looking-at (rx (minimal-match (zero-or-more (any whitespace "\n")))
+ (or (regexp php-beginning-of-defun-regexp)
+ (regexp php--re-classlike-pattern)))))
+ (oni-php-doc-comment))
+ (t (apply func args))))
+
+(defun oni-php-generate-namespace ()
+ (string-join
+ (mapcar
+ (lambda (s)
+ (let ((case-fold-search nil))
+ (if (string-match-p (rx upper-case) s)
+ s
+ (capitalize s))))
+ (cdr (split-string
+ (directory-file-name
+ (file-name-directory
+ (file-relative-name
+ buffer-file-name
+ (project-root (project-current)))))
+ "/")))
+ "\\"))
(defhydra php-mode-hydra (:color blue)
("a" align-current "Align current selection"))
@@ -217,13 +267,25 @@ Otherwise call FUNC with ARGS. This is meant as advice around
(add-to-list 'grep-files-aliases '("php" . "*.php *.inc *.module")))
(with-eval-after-load 'autoinsert
- (setf (map-elt auto-insert-alist (rx "Test.php" eos))
+ (setf (map-elt auto-insert-alist (rx ".php" eos))
+ '(nil
+ "<?php\n"
+ "\n"
+ "declare(strict_types=1);\n"
+ "\n"
+ "namespace " (oni-php-generate-namespace) ";\n"
+ "\n"
+ "class " (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) "\n"
+ "{\n"
+ > _ "\n"
+ "}\n")
+ (map-elt auto-insert-alist (rx "Test.php" eos))
'(nil
"<?php\n"
"\n"
"declare(strict_types=1);\n"
"\n"
- "namespace " (string-join (mapcar #'capitalize (cdr (split-string (directory-file-name (file-name-directory (file-relative-name buffer-file-name (project-root (project-current))))) "/"))) "\\") ";\n"
+ "namespace " (oni-php-generate-namespace) ";\n"
"\n"
"use Illuminate\\Foundation\\Testing\\RefreshDatabase;\n"
"use Illuminate\\Foundation\\Testing\\WithFaker;\n"
diff --git a/oni-php/snippets/php-mode/namespace b/oni-php/snippets/php-mode/namespace
index 01abd02..7a5b5e1 100644
--- a/oni-php/snippets/php-mode/namespace
+++ b/oni-php/snippets/php-mode/namespace
@@ -2,8 +2,4 @@
# name: namespace
# key: ns
# --
-namespace ${1:`(string-join
- (mapcar
- (lambda (s) (let ((case-fold-search nil)) (if (string-match-p (rx upper-case) s) s (capitalize s))))
- (cdr (split-string (directory-file-name (file-name-directory (file-relative-name buffer-file-name (project-root (project-current))))) "/")))
- "\\")`}; \ No newline at end of file
+namespace ${1:`(oni-php-generate-namespace)`}; \ No newline at end of file
diff --git a/oni-sql.el b/oni-sql.el
new file mode 100644
index 0000000..c396019
--- /dev/null
+++ b/oni-sql.el
@@ -0,0 +1,43 @@
+;;; oni-sql.el --- Configuration for SQL-mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2026 Tom Willemse
+
+;; Author: Tom Willemse <tom@ryuslash.org>
+;; Keywords: local
+;; Version: 2026.0406.121459
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Configuration for ‘sql-mode’.
+
+;;; Code:
+
+(require 'sql)
+
+(define-key sql-mode-map (kbd "C-c C-b") 'sql-set-sqli-buffer)
+
+(defun oni-sql-send-input ()
+ (interactive nil sql-interactive-mode)
+ (outline-hide-body)
+ (comint-send-input))
+
+(add-hook 'sql-mode-hook 'outline-minor-mode)
+(add-hook 'sql-interactive-mode-hook 'outline-minor-mode)
+
+(define-key sql-interactive-mode-map (kbd "RET") 'oni-sql-send-input)
+
+(provide 'oni-sql)
+;;; oni-sql.el ends here