aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-11-14 00:01:20 +0200
committerTulir Asokan <tulir@maunium.net>2018-11-14 00:01:20 +0200
commit7651e84be949ecabac62d21b6e843b6776a2371e (patch)
tree15babd86e895b3f2cf0f74c8ebba66137fd2a791
parentba387764ca1590625d349e74eb8a8a64d1849b67 (diff)
parent61400188bb6c3c86c40a8be8242450d45e764415 (diff)
Merge branch 'master' into update
-rw-r--r--README.md34
-rw-r--r--ui/room-list.go22
-rw-r--r--ui/tag-room-list.go5
-rw-r--r--ui/view-main.go2
4 files changed, 51 insertions, 12 deletions
diff --git a/README.md b/README.md
index e39c33b..75d527a 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,20 @@ or compile from source:
1. Run `go get -u maunium.net/go/gomuks`
2. gomuks should now be in `$GOPATH/bin/gomuks`
+## Developing
+Running `go install` in `$GOPATH/src/maunium.net/go/gomuks` will recompile the project and dependencies into `$GOPATH/bin/gomuks`.
+
+For debugging, use `tail -f /tmp/gomuks-debug.log` and write to it using the methods in the `maunium.net/go/gomuks/debug` package:
+```go
+import (
+ "maunium.net/go/gomuks/debug"
+)
+...
+func Foo() {
+ debug.Print("WHY ISN'T IT WORKING?!?!?")
+}
+```
+
## Usage
- switch rooms - `Ctrl + ↑` `Ctrl + ↓` `Alt + ↑` `Alt + ↓`
- scroll chat (line) - `↑` `↓`
@@ -32,13 +46,13 @@ or compile from source:
- jump to room - `Alt + Enter`, then `Tab` and `Enter` to navigate and select room
### Commands
-* `help` - Is a known command
-* `me <text>` - Send an emote
-* `quit` - Close gomuks
-* `clearcache` - Clear room state and close gomuks
-* `leave` - Leave the current room
-* `join <room>` - Join the room with the given room ID or alias
-* `toggle <rooms/users/baremessages/images/typingnotif>` - Change user preferences
-* `logout` - Log out, clear caches and go back to the login view
-* `send <room id> <event type> <content>` - Send a custom event
-* `setstate <room id> <event type> <state key/`-`> <content>` - Change room state
+* `/help` - Is a known command
+* `/me <text>` - Send an emote
+* `/quit` - Close gomuks
+* `/clearcache` - Clear room state and close gomuks
+* `/leave` - Leave the current room
+* `/join <room>` - Join the room with the given room ID or alias
+* `/toggle <rooms/users/baremessages/images/typingnotif>` - Change user preferences
+* `/logout` - Log out, clear caches and go back to the login view
+* `/send <room id> <event type> <content>` - Send a custom event
+* `/setstate <room id> <event type> <state key/-> <content>` - Change room state
diff --git a/ui/room-list.go b/ui/room-list.go
index a7543a9..6b81e60 100644
--- a/ui/room-list.go
+++ b/ui/room-list.go
@@ -21,6 +21,7 @@ import (
"strings"
"math"
+
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/tcell"
@@ -313,6 +314,27 @@ func (list *RoomList) Next() (string, *rooms.Room) {
return list.Last()
}
+// NextWithActivity Returns next room with activity.
+//
+// Sorted by (in priority):
+//
+// - Highlights
+// - Messages
+// - Other traffic (joins, parts, etc)
+//
+// TODO: Sorting. Now just finds first room with new messages.
+func (list *RoomList) NextWithActivity() (string, *rooms.Room) {
+ for tag, trl := range list.items {
+ for _, room := range trl.All() {
+ if room.HasNewMessages() {
+ return tag, room.Room
+ }
+ }
+ }
+ // No room with activity found
+ return "", nil
+}
+
func (list *RoomList) index(tag string, room *rooms.Room) int {
tagIndex := list.IndexTag(tag)
if tagIndex == -1 {
diff --git a/ui/tag-room-list.go b/ui/tag-room-list.go
index 2705c49..60b4350 100644
--- a/ui/tag-room-list.go
+++ b/ui/tag-room-list.go
@@ -18,12 +18,13 @@ package ui
import (
"fmt"
+ "strconv"
+ "strings"
+
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/gomuks/ui/widget"
"maunium.net/go/tcell"
"maunium.net/go/tview"
- "strconv"
- "strings"
)
type OrderedRoom struct {
diff --git a/ui/view-main.go b/ui/view-main.go
index 5faa804..96daf1b 100644
--- a/ui/view-main.go
+++ b/ui/view-main.go
@@ -196,6 +196,8 @@ func (view *MainView) KeyEventHandler(roomView *RoomView, key *tcell.EventKey) *
searchModal := NewFuzzySearchModal(view, 42, 12)
view.parent.views.AddPage("fuzzy-search-modal", searchModal, true, true)
view.parent.app.SetFocus(searchModal)
+ case c == 'a':
+ view.SwitchRoom(view.roomList.NextWithActivity())
case c == 'l':
view.ShowBare(roomView)
default: